diff options
Diffstat (limited to 'gnu')
455 files changed, 27521 insertions, 11995 deletions
diff --git a/gnu/bootloader/grub.scm b/gnu/bootloader/grub.scm index 190b717163..3f61b4a963 100644 --- a/gnu/bootloader/grub.scm +++ b/gnu/bootloader/grub.scm @@ -3,7 +3,7 @@ ;;; Copyright © 2016 Chris Marusich <cmmarusich@gmail.com> ;;; Copyright © 2017 Leo Famulari <leo@famulari.name> ;;; Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com> -;;; Copyright © 2019 Jan (janneke) Nieuwenhuizen <janneke@gnu.org> +;;; Copyright © 2019, 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org> ;;; Copyright © 2020 Maxim Cournoyer <maxim.cournoyer@gmail.com> ;;; ;;; This file is part of GNU Guix. @@ -54,6 +54,7 @@ grub-bootloader grub-efi-bootloader grub-mkrescue-bootloader + grub-minimal-bootloader grub-configuration)) @@ -457,6 +458,14 @@ fi~%")))) (configuration-file "/boot/grub/grub.cfg") (configuration-file-generator grub-configuration-file))) +(define grub-minimal-bootloader + (bootloader + (name 'grub) + (package grub-minimal) + (installer install-grub) + (configuration-file "/boot/grub/grub.cfg") + (configuration-file-generator grub-configuration-file))) + (define* grub-efi-bootloader (bootloader (inherit grub-bootloader) diff --git a/gnu/build/bootloader.scm b/gnu/build/bootloader.scm index 9570d6dd18..498022f6db 100644 --- a/gnu/build/bootloader.scm +++ b/gnu/build/bootloader.scm @@ -18,8 +18,12 @@ ;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>. (define-module (gnu build bootloader) + #:use-module (guix build utils) + #:use-module (guix utils) #:use-module (ice-9 binary-ports) - #:export (write-file-on-device)) + #:use-module (ice-9 format) + #:export (write-file-on-device + install-efi-loader)) ;;; @@ -36,3 +40,53 @@ (seek output offset SEEK_SET) (put-bytevector output bv)) #:binary #t))))) + + +;;; +;;; EFI bootloader. +;;; + +(define (install-efi grub grub-config esp) + "Write a self-contained GRUB EFI loader to the mounted ESP using GRUB-CONFIG." + (let* ((system %host-type) + ;; Hard code the output location to a well-known path recognized by + ;; compliant firmware. See "3.5.1.1 Removable Media Boot Behaviour": + ;; http://www.uefi.org/sites/default/files/resources/UEFI%20Spec%202_6.pdf + (grub-mkstandalone (string-append grub "/bin/grub-mkstandalone")) + (efi-directory (string-append esp "/EFI/BOOT")) + ;; Map grub target names to boot file names. + (efi-targets (cond ((string-prefix? "x86_64" system) + '("x86_64-efi" . "BOOTX64.EFI")) + ((string-prefix? "i686" system) + '("i386-efi" . "BOOTIA32.EFI")) + ((string-prefix? "armhf" system) + '("arm-efi" . "BOOTARM.EFI")) + ((string-prefix? "aarch64" system) + '("arm64-efi" . "BOOTAA64.EFI"))))) + ;; grub-mkstandalone requires a TMPDIR to prepare the firmware image. + (setenv "TMPDIR" esp) + + (mkdir-p efi-directory) + (invoke grub-mkstandalone "-O" (car efi-targets) + "-o" (string-append efi-directory "/" + (cdr efi-targets)) + ;; Graft the configuration file onto the image. + (string-append "boot/grub/grub.cfg=" grub-config)))) + +(define (install-efi-loader grub-efi esp) + "Install in ESP directory the given GRUB-EFI bootloader. Configure it to +load the Grub bootloader located in the 'Guix_image' root partition." + (let ((grub-config "grub.cfg")) + (call-with-output-file grub-config + (lambda (port) + ;; Create a tiny configuration file telling the embedded grub where to + ;; load the real thing. XXX This is quite fragile, and can prevent + ;; the image from booting when there's more than one volume with this + ;; label present. Reproducible almost-UUIDs could reduce the risk + ;; (not eliminate it). + (format port + "insmod part_msdos~@ + search --set=root --label Guix_image~@ + configfile /boot/grub/grub.cfg~%"))) + (install-efi grub-efi grub-config esp) + (delete-file grub-config))) diff --git a/gnu/build/cross-toolchain.scm b/gnu/build/cross-toolchain.scm index 6bdbdd5411..9746be3e50 100644 --- a/gnu/build/cross-toolchain.scm +++ b/gnu/build/cross-toolchain.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2013, 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2013, 2014, 2015, 2016, 2020 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2014, 2015, 2018 Mark H Weaver <mhw@netris.org> ;;; Copyright © 2016 Jan Nieuwenhuizen <janneke@gnu.org> ;;; Copyright © 2016 Manolis Fragkiskos Ragkousis <manolis837@gmail.com> @@ -38,8 +38,11 @@ (define %gcc-include-paths ;; Environment variables for header search paths. - ;; Note: See <http://bugs.gnu.org/30756> for why not 'C_INCLUDE_PATH' & co. - '("CPATH")) + ;; Note: See <http://bugs.gnu.org/22186> for why not 'CPATH'. + '("C_INCLUDE_PATH" + "CPLUS_INCLUDE_PATH" + "OBJC_INCLUDE_PATH" + "OBJCPLUS_INCLUDE_PATH")) (define %gcc-cross-include-paths ;; Search path for target headers when cross-compiling. diff --git a/gnu/build/file-systems.scm b/gnu/build/file-systems.scm index 902563b219..b920e8fc62 100644 --- a/gnu/build/file-systems.scm +++ b/gnu/build/file-systems.scm @@ -98,6 +98,47 @@ takes a bytevector and returns #t when it's a valid superblock." (define null-terminated-latin1->string (cut latin1->string <> zero?)) +(define (bytevector-utf16-length bv) + "Given a bytevector BV containing a NUL-terminated UTF16-encoded string, +determine where the NUL terminator is and return its index. If there's no +NUL terminator, return the size of the bytevector." + (let ((length (bytevector-length bv))) + (let loop ((index 0)) + (if (< index length) + (if (zero? (bytevector-u16-ref bv index 'little)) + index + (loop (+ index 2))) + length)))) + +(define* (bytevector->u16-list bv endianness #:optional (index 0)) + (if (< index (bytevector-length bv)) + (cons (bytevector-u16-ref bv index endianness) + (bytevector->u16-list bv endianness (+ index 2))) + '())) + +;; The initrd doesn't have iconv data, so do the conversion ourselves. +(define (utf16->string bv endianness) + (list->string + (map integer->char + (reverse + (let loop ((remainder (bytevector->u16-list bv endianness)) + (result '())) + (match remainder + (() result) + ((a) (cons a result)) + ((a b x ...) + (if (and (>= a #xD800) (< a #xDC00) ; high surrogate + (>= b #xDC00) (< b #xE000)) ; low surrogate + (loop x (cons (+ #x10000 + (* #x400 (- a #xD800)) + (- b #xDC00)) + result)) + (loop (cons b x) (cons a result)))))))))) + +(define (null-terminated-utf16->string bv endianness) + (utf16->string (sub-bytevector bv 0 (bytevector-utf16-length bv)) + endianness)) + ;;; ;;; Ext2 file systems. @@ -338,6 +379,60 @@ if DEVICE does not contain a JFS file system." ;;; +;;; F2FS (Flash-Friendly File System) +;;; + +;;; https://git.kernel.org/pub/scm/linux/kernel/git/jaegeuk/f2fs.git/tree/include/linux/f2fs_fs.h +;;; (but using xxd proved to be simpler) + +(define-syntax %f2fs-endianness + ;; Endianness of F2FS file systems + (identifier-syntax (endianness little))) + +;; F2FS actually stores two adjacent copies of the superblock. +;; should we read both? +(define (f2fs-superblock? sblock) + "Return #t when SBLOCK is an F2FS superblock." + (let ((magic (bytevector-u32-ref sblock 0 %f2fs-endianness))) + (= magic #xF2F52010))) + +(define (read-f2fs-superblock device) + "Return the raw contents of DEVICE's F2FS superblock as a bytevector, or #f +if DEVICE does not contain an F2FS file system." + (read-superblock device + ;; offset of magic in first copy + #x400 + ;; difference between magic of second + ;; and first copies + (- #x1400 #x400) + f2fs-superblock?)) + +(define (f2fs-superblock-uuid sblock) + "Return the UUID of F2FS superblock SBLOCK as a 16-byte bytevector." + (sub-bytevector sblock + (- (+ #x460 12) + ;; subtract superblock offset + #x400) + 16)) + +(define (f2fs-superblock-volume-name sblock) + "Return the volume name of SBLOCK as a string of at most 512 characters, or +#f if SBLOCK has no volume name." + (null-terminated-utf16->string + (sub-bytevector sblock (- (+ #x470 12) #x400) 512) + %f2fs-endianness)) + +(define (check-f2fs-file-system device) + "Return the health of a F2FS file system on DEVICE." + (match (status:exit-val + (system* "fsck.f2fs" "-p" device)) + ;; 0 and -1 are the only two possibilities + ;; (according to the manpage) + (0 'pass) + (_ 'fatal-error))) + + +;;; ;;; LUKS encrypted devices. ;;; @@ -472,7 +567,9 @@ partition field reader that returned a value." (partition-field-reader read-fat16-superblock fat16-superblock-volume-name) (partition-field-reader read-jfs-superblock - jfs-superblock-volume-name))) + jfs-superblock-volume-name) + (partition-field-reader read-f2fs-superblock + f2fs-superblock-volume-name))) (define %partition-uuid-readers (list (partition-field-reader read-iso9660-superblock @@ -486,7 +583,9 @@ partition field reader that returned a value." (partition-field-reader read-fat16-superblock fat16-superblock-uuid) (partition-field-reader read-jfs-superblock - jfs-superblock-uuid))) + jfs-superblock-uuid) + (partition-field-reader read-f2fs-superblock + f2fs-superblock-uuid))) (define read-partition-label (cut read-partition-field <> %partition-label-readers)) @@ -582,6 +681,7 @@ were found." ((string-prefix? "btrfs" type) check-btrfs-file-system) ((string-suffix? "fat" type) check-fat-file-system) ((string-prefix? "jfs" type) check-jfs-file-system) + ((string-prefix? "f2fs" type) check-f2fs-file-system) ((string-prefix? "nfs" type) (const 'pass)) (else #f))) diff --git a/gnu/build/image.scm b/gnu/build/image.scm new file mode 100644 index 0000000000..fe8e11aa1b --- /dev/null +++ b/gnu/build/image.scm @@ -0,0 +1,273 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2016 Christopher Allan Webber <cwebber@dustycloud.org> +;;; Copyright © 2016, 2017 Leo Famulari <leo@famulari.name> +;;; Copyright © 2017 Marius Bakke <mbakke@fastmail.com> +;;; Copyright © 2020 Tobias Geerinckx-Rice <me@tobias.gr> +;;; Copyright © 2020 Mathieu Othacehe <m.othacehe@gmail.com> +;;; +;;; This file is part of GNU Guix. +;;; +;;; GNU Guix is free software; you can redistribute it and/or modify it +;;; under the terms of the GNU General Public License as published by +;;; the Free Software Foundation; either version 3 of the License, or (at +;;; your option) any later version. +;;; +;;; GNU Guix is distributed in the hope that it will be useful, but +;;; WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;;; GNU General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>. + +(define-module (gnu build image) + #:use-module (guix build store-copy) + #:use-module (guix build syscalls) + #:use-module (guix build utils) + #:use-module (guix store database) + #:use-module (gnu build bootloader) + #:use-module (gnu build install) + #:use-module (gnu build linux-boot) + #:use-module (gnu image) + #:use-module (gnu system uuid) + #:use-module (ice-9 ftw) + #:use-module (ice-9 match) + #:use-module (srfi srfi-19) + #:use-module (srfi srfi-34) + #:use-module (srfi srfi-35) + #:export (make-partition-image + genimage + initialize-efi-partition + initialize-root-partition + + make-iso9660-image)) + +(define (sexp->partition sexp) + "Take SEXP, a tuple as returned by 'partition->gexp', and turn it into a +<partition> record." + (match sexp + ((size file-system label uuid) + (partition (size size) + (file-system file-system) + (label label) + (uuid uuid))))) + +(define (size-in-kib size) + "Convert SIZE expressed in bytes, to kilobytes and return it as a string." + (number->string + (inexact->exact (ceiling (/ size 1024))))) + +(define (estimate-partition-size root) + "Given the ROOT directory, evalute and return its size. As this doesn't +take the partition metadata size into account, take a 25% margin." + (* 1.25 (file-size root))) + +(define* (make-ext4-image partition target root + #:key + (owner-uid 0) + (owner-gid 0)) + "Handle the creation of EXT4 partition images. See 'make-partition-image'." + (let ((size (partition-size partition)) + (label (partition-label partition)) + (uuid (partition-uuid partition)) + (options "lazy_itable_init=1,lazy_journal_init=1")) + (invoke "mke2fs" "-t" "ext4" "-d" root + "-L" label "-U" (uuid->string uuid) + "-E" (format #f "root_owner=~a:~a,~a" + owner-uid owner-gid options) + target + (format #f "~ak" + (size-in-kib + (if (eq? size 'guess) + (estimate-partition-size root) + size)))))) + +(define* (make-vfat-image partition target root) + "Handle the creation of VFAT partition images. See 'make-partition-image'." + (let ((size (partition-size partition)) + (label (partition-label partition))) + (invoke "mkdosfs" "-n" label "-C" target "-F" "16" "-S" "1024" + (size-in-kib + (if (eq? size 'guess) + (estimate-partition-size root) + size))) + (for-each (lambda (file) + (unless (member file '("." "..")) + (invoke "mcopy" "-bsp" "-i" target + (string-append root "/" file) + (string-append "::" file)))) + (scandir root)))) + +(define* (make-partition-image partition-sexp target root) + "Create and return the image of PARTITION-SEXP as TARGET. Use the given +ROOT directory to populate the image." + (let* ((partition (sexp->partition partition-sexp)) + (type (partition-file-system partition))) + (cond + ((string=? type "ext4") + (make-ext4-image partition target root)) + ((string=? type "vfat") + (make-vfat-image partition target root)) + (else + (format (current-error-port) + "Unsupported partition type~%."))))) + +(define* (genimage config target) + "Use genimage to generate in TARGET directory, the image described in the +given CONFIG file." + ;; genimage needs a 'root' directory. + (mkdir "root") + (invoke "genimage" "--config" config + "--outputpath" target)) + +(define* (register-closure prefix closure + #:key + (deduplicate? #t) (reset-timestamps? #t) + (schema (sql-schema))) + "Register CLOSURE in PREFIX, where PREFIX is the directory name of the +target store and CLOSURE is the name of a file containing a reference graph as +produced by #:references-graphs.. As a side effect, if RESET-TIMESTAMPS? is +true, reset timestamps on store files and, if DEDUPLICATE? is true, +deduplicates files common to CLOSURE and the rest of PREFIX." + (let ((items (call-with-input-file closure read-reference-graph))) + (register-items items + #:prefix prefix + #:deduplicate? deduplicate? + #:reset-timestamps? reset-timestamps? + #:registration-time %epoch + #:schema schema))) + +(define* (initialize-efi-partition root + #:key + bootloader-package + #:allow-other-keys) + "Install in ROOT directory, an EFI loader using BOOTLOADER-PACKAGE." + (install-efi-loader bootloader-package root)) + +(define* (initialize-root-partition root + #:key + bootcfg + bootcfg-location + (deduplicate? #t) + references-graphs + (register-closures? #t) + system-directory + #:allow-other-keys) + "Initialize the given ROOT directory. Use BOOTCFG and BOOTCFG-LOCATION to +install the bootloader configuration. + +If REGISTER-CLOSURES? is true, register REFERENCES-GRAPHS in the store. If +DEDUPLICATE? is true, then also deduplicate files common to CLOSURES and the +rest of the store when registering the closures. SYSTEM-DIRECTORY is the name +of the directory of the 'system' derivation." + (populate-root-file-system system-directory root) + (populate-store references-graphs root) + + (when register-closures? + (for-each (lambda (closure) + (register-closure root + closure + #:reset-timestamps? #t + #:deduplicate? deduplicate?)) + references-graphs)) + + (when bootcfg + (install-boot-config bootcfg bootcfg-location root))) + +(define* (make-iso9660-image xorriso grub-mkrescue-environment + grub bootcfg system-directory root target + #:key (volume-id "Guix_image") (volume-uuid #f) + register-closures? (references-graphs '()) + (compression? #t)) + "Given a GRUB package, creates an iso image as TARGET, using BOOTCFG as +GRUB configuration and OS-DRV as the stuff in it." + (define grub-mkrescue + (string-append grub "/bin/grub-mkrescue")) + + (define grub-mkrescue-sed.sh + (string-append (getcwd) "/" "grub-mkrescue-sed.sh")) + + ;; Use a modified version of grub-mkrescue-sed.sh, see below. + (copy-file (string-append xorriso + "/bin/grub-mkrescue-sed.sh") + grub-mkrescue-sed.sh) + + ;; Force grub-mkrescue-sed.sh to use the build directory instead of /tmp + ;; that is read-only inside the build container. + (substitute* grub-mkrescue-sed.sh + (("/tmp/") (string-append (getcwd) "/")) + (("MKRESCUE_SED_XORRISO_ARGS \\$x") + (format #f "MKRESCUE_SED_XORRISO_ARGS $(echo $x | sed \"s|/tmp|~a|\")" + (getcwd)))) + + ;; 'grub-mkrescue' calls out to mtools programs to create 'efi.img', a FAT + ;; file system image, and mtools honors SOURCE_DATE_EPOCH for the mtime of + ;; those files. The epoch for FAT is Jan. 1st 1980, not 1970, so choose + ;; that. + (setenv "SOURCE_DATE_EPOCH" + (number->string + (time-second + (date->time-utc (make-date 0 0 0 0 1 1 1980 0))))) + + ;; Our patched 'grub-mkrescue' honors this environment variable and passes + ;; it to 'mformat', which makes it the serial number of 'efi.img'. This + ;; allows for deterministic builds. + (setenv "GRUB_FAT_SERIAL_NUMBER" + (number->string (if volume-uuid + + ;; On 32-bit systems the 2nd argument must be + ;; lower than 2^32. + (string-hash (iso9660-uuid->string volume-uuid) + (- (expt 2 32) 1)) + + #x77777777) + 16)) + + (setenv "MKRESCUE_SED_MODE" "original") + (setenv "MKRESCUE_SED_XORRISO" (string-append xorriso "/bin/xorriso")) + (setenv "MKRESCUE_SED_IN_EFI_NO_PT" "yes") + + (for-each (match-lambda + ((name . value) (setenv name value))) + grub-mkrescue-environment) + + (apply invoke grub-mkrescue + (string-append "--xorriso=" grub-mkrescue-sed.sh) + "-o" target + (string-append "boot/grub/grub.cfg=" bootcfg) + root + "--" + ;; Set all timestamps to 1. + "-volume_date" "all_file_dates" "=1" + + `(,@(if compression? + '(;; ‘zisofs’ compression reduces the total image size by + ;; ~60%. + "-zisofs" "level=9:block_size=128k" ; highest compression + ;; It's transparent to our Linux-Libre kernel but not to + ;; GRUB. Don't compress the kernel, initrd, and other + ;; files read by grub.cfg, as well as common + ;; already-compressed file names. + "-find" "/" "-type" "f" + ;; XXX Even after "--" above, and despite documentation + ;; claiming otherwise, "-or" is stolen by grub-mkrescue + ;; which then chokes on it (as ‘-o …’) and dies. Don't use + ;; "-or". + "-not" "-wholename" "/boot/*" + "-not" "-wholename" "/System/*" + "-not" "-name" "unicode.pf2" + "-not" "-name" "bzImage" + "-not" "-name" "*.gz" ; initrd & all man pages + "-not" "-name" "*.png" ; includes grub-image.png + "-exec" "set_filter" "--zisofs" + "--") + '()) + "-volid" ,(string-upcase volume-id) + ,@(if volume-uuid + `("-volume_date" "uuid" + ,(string-filter (lambda (value) + (not (char=? #\- value))) + (iso9660-uuid->string + volume-uuid))) + '())))) diff --git a/gnu/build/install.scm b/gnu/build/install.scm index c0d4d44091..87aa5d68da 100644 --- a/gnu/build/install.scm +++ b/gnu/build/install.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2013, 2014, 2015, 2016, 2017, 2018, 2019 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2016 Chris Marusich <cmmarusich@gmail.com> ;;; ;;; This file is part of GNU Guix. @@ -25,7 +25,6 @@ #:export (install-boot-config evaluate-populate-directive populate-root-file-system - register-closure install-database-and-gc-roots populate-single-profile-directory)) @@ -51,9 +50,14 @@ that the fonts, background images, etc. referred to by BOOTCFG are not GC'd." (copy-file bootcfg pivot) (rename-file pivot target))) -(define (evaluate-populate-directive directive target) +(define* (evaluate-populate-directive directive target + #:key + (default-gid 0) + (default-uid 0)) "Evaluate DIRECTIVE, an sexp describing a file or directory to create under -directory TARGET." +directory TARGET. DEFAULT-UID and DEFAULT-GID are the default UID and GID in +the context of the caller. If the directive matches those defaults then, +'chown' won't be run." (let loop ((directive directive)) (catch 'system-error (lambda () @@ -63,10 +67,22 @@ directory TARGET." (('directory name uid gid) (let ((dir (string-append target name))) (mkdir-p dir) - (chown dir uid gid))) + ;; If called from a context without "root" permissions, "chown" + ;; to root will fail. In that case, do not try to run "chown" + ;; and assume that the file will be chowned elsewhere (when + ;; interned in the store for instance). + (or (and (= uid default-uid) (= gid default-gid)) + (chown dir uid gid)))) (('directory name uid gid mode) (loop `(directory ,name ,uid ,gid)) (chmod (string-append target name) mode)) + (('file name) + (call-with-output-file (string-append target name) + (const #t))) + (('file name (? string? content)) + (call-with-output-file (string-append target name) + (lambda (port) + (display content port)))) ((new '-> old) (let try () (catch 'system-error @@ -91,9 +107,7 @@ directory TARGET." (define (directives store) "Return a list of directives to populate the root file system that will host STORE." - `(;; Note: the store's GID is fixed precisely so we can set it here rather - ;; than at activation time. - (directory ,store 0 30000 #o1775) + `((directory ,store 0 0 #o1775) (directory "/etc") (directory "/var/log") ; for shepherd @@ -119,11 +133,14 @@ STORE." (directory "/home" 0 0))) -(define (populate-root-file-system system target) +(define* (populate-root-file-system system target + #:key (extras '())) "Make the essential non-store files and directories on TARGET. This -includes /etc, /var, /run, /bin/sh, etc., and all the symlinks to SYSTEM." +includes /etc, /var, /run, /bin/sh, etc., and all the symlinks to SYSTEM. +EXTRAS is a list of directives appended to the built-in directives to populate +TARGET." (for-each (cut evaluate-populate-directive <> target) - (directives (%store-directory))) + (append (directives (%store-directory)) extras)) ;; Add system generation 1. (let ((generation-1 (string-append target diff --git a/gnu/build/linux-boot.scm b/gnu/build/linux-boot.scm index 4fb711b8f2..c6f9df5f29 100644 --- a/gnu/build/linux-boot.scm +++ b/gnu/build/linux-boot.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2013, 2014, 2015, 2016, 2017, 2018, 2019 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com> ;;; Copyright © 2019 Guillaume Le Vaillant <glv@posteo.net> ;;; @@ -40,6 +40,7 @@ find-long-option find-long-options make-essential-device-nodes + make-hurd-device-nodes make-static-device-nodes configure-qemu-networking @@ -223,7 +224,7 @@ one specific hardware device. These we have to create." (call-with-input-file devname-name read-static-device-nodes)))) -(define* (make-essential-device-nodes #:key (root "/")) +(define* (make-essential-device-nodes #:optional (root "/")) "Make essential device nodes under ROOT/dev." ;; The hand-made devtmpfs/udev! @@ -323,6 +324,36 @@ one specific hardware device. These we have to create." ;; File systems in user space (FUSE). (mknod (scope "dev/fuse") 'char-special #o666 (device-number 10 229))) +(define* (make-hurd-device-nodes #:optional (root "/")) + "Make some of the nodes needed on GNU/Hurd." + (define (scope dir) + (string-append root + (if (string-suffix? "/" root) + "" + "/") + dir)) + + (mkdir (scope "dev")) + (for-each (lambda (file) + (call-with-output-file (scope file) + (lambda (port) + (chmod port #o666)))) + '("dev/null" + "dev/zero" + "dev/full" + "dev/random" + "dev/urandom")) + ;; Don't create /dev/console, /dev/vcs, etc.: they are created by + ;; console-run on first boot. + + (mkdir (scope "servers")) + (mkdir (scope "servers/socket")) + ;; Don't create /servers/socket/1 & co: runsystem does that on first boot. + + ;; TODO: Set the 'gnu.translator' extended attribute for passive translator + ;; settings? + ) + (define %host-qemu-ipv4-address (inet-pton AF_INET "10.0.2.10")) @@ -534,10 +565,13 @@ upon error." ;; The "--root=SPEC" kernel command-line option always provides a ;; string, but the string can represent a device, a UUID, or a ;; label. So check for all three. - (let ((root (cond ((string-prefix? "/" root) root) - ((uuid root) => identity) - (else (file-system-label root))))) - (mount-root-file-system (canonicalize-device-spec root) + (let ((device-spec (cond ((string-prefix? "/" root) root) + ((uuid root) => identity) + ((string-contains root ":/") #f) ; nfs + (else (file-system-label root))))) + (mount-root-file-system (if device-spec + (canonicalize-device-spec device-spec) + root) root-fs-type #:volatile-root? volatile-root? #:flags root-fs-flags diff --git a/gnu/build/vm.scm b/gnu/build/vm.scm index 9caa110463..433b5a7e8d 100644 --- a/gnu/build/vm.scm +++ b/gnu/build/vm.scm @@ -27,12 +27,14 @@ #:use-module (guix build store-copy) #:use-module (guix build syscalls) #:use-module (guix store database) + #:use-module (gnu build bootloader) #:use-module (gnu build linux-boot) #:use-module (gnu build install) #:use-module (gnu system uuid) #:use-module (guix records) #:use-module ((guix combinators) #:select (fold2)) #:use-module (ice-9 format) + #:use-module (ice-9 ftw) #:use-module (ice-9 match) #:use-module (ice-9 regex) #:use-module (ice-9 popen) @@ -56,8 +58,7 @@ estimated-partition-size root-partition-initializer initialize-partition-table - initialize-hard-disk - make-iso9660-image)) + initialize-hard-disk)) ;;; Commentary: ;;; @@ -234,6 +235,8 @@ deduplicates files common to CLOSURE and the rest of PREFIX." (device partition-device (default #f)) (size partition-size) (file-system partition-file-system (default "ext4")) + (file-system-options partition-file-system-options ;passed to 'mkfs.FS' + (default '())) (label partition-label (default #f)) (uuid partition-uuid (default #f)) (flags partition-flags (default '())) @@ -308,7 +311,7 @@ actual /dev name based on DEVICE." (define MS_BIND 4096) ; <sys/mounts.h> again! (define* (create-ext-file-system partition type - #:key label uuid) + #:key label uuid (options '())) "Create an ext-family file system of TYPE on PARTITION. If LABEL is true, use that as the volume name. If UUID is true, use it as the partition UUID." (format #t "creating ~a partition... ~@[label: ~s~] ~@[uuid: ~s~]\n" @@ -320,26 +323,29 @@ use that as the volume name. If UUID is true, use it as the partition UUID." '()) ,@(if uuid `("-U" ,(uuid->string uuid)) - '())))) + '()) + ,@options))) (define* (create-fat-file-system partition - #:key label uuid) + #:key label uuid (options '())) "Create a FAT file system on PARTITION. The number of File Allocation Tables will be determined based on file system size. If LABEL is true, use that as the volume name." ;; FIXME: UUID is ignored! (format #t "creating FAT partition...\n") (apply invoke "mkfs.fat" partition - (if label `("-n" ,label) '()))) + (append (if label `("-n" ,label) '()) options))) (define* (format-partition partition type - #:key label uuid) + #:key label uuid (options '())) "Create a file system TYPE on PARTITION. If LABEL is true, use that as the -volume name." +volume name. Options is a list of command-line options passed to 'mkfs.FS'." (cond ((string-prefix? "ext" type) - (create-ext-file-system partition type #:label label #:uuid uuid)) + (create-ext-file-system partition type #:label label #:uuid uuid + #:options options)) ((or (string-prefix? "fat" type) (string= "vfat" type)) - (create-fat-file-system partition #:label label #:uuid uuid)) + (create-fat-file-system partition #:label label #:uuid uuid + #:options options)) (else (error "Unsupported file system.")))) (define (initialize-partition partition) @@ -349,7 +355,8 @@ it, run its initializer, and unmount it." (format-partition (partition-device partition) (partition-file-system partition) #:label (partition-label partition) - #:uuid (partition-uuid partition)) + #:uuid (partition-uuid partition) + #:options (partition-file-system-options partition)) (mkdir-p target) (mount (partition-device partition) target (partition-file-system partition)) @@ -363,14 +370,20 @@ it, run its initializer, and unmount it." copy-closures? (register-closures? #t) system-directory - (deduplicate? #t)) + (deduplicate? #t) + (make-device-nodes + make-essential-device-nodes) + (extra-directives '())) "Return a procedure to initialize a root partition. If REGISTER-CLOSURES? is true, register all of CLOSURES in the partition's store. If DEDUPLICATE? is true, then also deduplicate files common to CLOSURES and the rest of the store when registering the closures. If COPY-CLOSURES? is true, copy all of CLOSURES to the partition. -SYSTEM-DIRECTORY is the name of the directory of the 'system' derivation." +SYSTEM-DIRECTORY is the name of the directory of the 'system' derivation. + +EXTRA-DIRECTIVES is an optional list of directives to populate the root file +system that is passed to 'populate-root-file-system'." (lambda (target) (define target-store (string-append target (%store-directory))) @@ -381,7 +394,7 @@ SYSTEM-DIRECTORY is the name of the directory of the 'system' derivation." target)) ;; Populate /dev. - (make-essential-device-nodes #:root target) + (make-device-nodes target) ;; Optionally, register the inputs in the image's store. (when register-closures? @@ -403,12 +416,22 @@ SYSTEM-DIRECTORY is the name of the directory of the 'system' derivation." ;; Add the non-store directories and files. (display "populating...\n") - (populate-root-file-system system-directory target) + (populate-root-file-system system-directory target + #:extras extra-directives) ;; 'register-closure' resets timestamps and everything, so no need to do it ;; once more in that case. (unless register-closures? - (reset-timestamps target)))) + ;; 'reset-timestamps' also resets file permissions; do that everywhere + ;; except on /dev so that /dev/null remains writable, etc. + (for-each (lambda (directory) + (reset-timestamps (string-append target "/" directory))) + (scandir target + (match-lambda + ((or "." ".." "dev") #f) + (_ #t)))) + (reset-timestamps (string-append target "/dev") + #:preserve-permissions? #t)))) (define (register-bootcfg-root target bootcfg) "On file system TARGET, register BOOTCFG as a GC root." @@ -416,159 +439,6 @@ SYSTEM-DIRECTORY is the name of the directory of the 'system' derivation." (mkdir-p directory) (symlink bootcfg (string-append directory "/bootcfg")))) -(define (install-efi grub esp config-file) - "Write a self-contained GRUB EFI loader to the mounted ESP using CONFIG-FILE." - (let* ((system %host-type) - ;; Hard code the output location to a well-known path recognized by - ;; compliant firmware. See "3.5.1.1 Removable Media Boot Behaviour": - ;; http://www.uefi.org/sites/default/files/resources/UEFI%20Spec%202_6.pdf - (grub-mkstandalone (string-append grub "/bin/grub-mkstandalone")) - (efi-directory (string-append esp "/EFI/BOOT")) - ;; Map grub target names to boot file names. - (efi-targets (cond ((string-prefix? "x86_64" system) - '("x86_64-efi" . "BOOTX64.EFI")) - ((string-prefix? "i686" system) - '("i386-efi" . "BOOTIA32.EFI")) - ((string-prefix? "armhf" system) - '("arm-efi" . "BOOTARM.EFI")) - ((string-prefix? "aarch64" system) - '("arm64-efi" . "BOOTAA64.EFI"))))) - ;; grub-mkstandalone requires a TMPDIR to prepare the firmware image. - (setenv "TMPDIR" esp) - - (mkdir-p efi-directory) - (invoke grub-mkstandalone "-O" (car efi-targets) - "-o" (string-append efi-directory "/" - (cdr efi-targets)) - ;; Graft the configuration file onto the image. - (string-append "boot/grub/grub.cfg=" config-file)))) - -(define* (make-iso9660-image xorriso grub-mkrescue-environment - grub config-file os-drv target - #:key (volume-id "Guix_image") (volume-uuid #f) - register-closures? (closures '())) - "Given a GRUB package, creates an iso image as TARGET, using CONFIG-FILE as -GRUB configuration and OS-DRV as the stuff in it." - (define grub-mkrescue - (string-append grub "/bin/grub-mkrescue")) - - (define grub-mkrescue-sed.sh - (string-append xorriso "/bin/grub-mkrescue-sed.sh")) - - (define target-store - (string-append "/tmp/root" (%store-directory))) - - (define items - ;; The store items to add to the image. - (delete-duplicates - (append-map (lambda (closure) - (map store-info-item - (call-with-input-file (string-append "/xchg/" closure) - read-reference-graph))) - closures))) - - (populate-root-file-system os-drv "/tmp/root") - (mount (%store-directory) target-store "" MS_BIND) - - (when register-closures? - (display "registering closures...\n") - (for-each (lambda (closure) - (register-closure - "/tmp/root" - (string-append "/xchg/" closure) - - ;; TARGET-STORE is a read-only bind-mount so we shouldn't try - ;; to modify it. - #:deduplicate? #f - #:reset-timestamps? #f)) - closures) - (register-bootcfg-root "/tmp/root" config-file)) - - ;; 'grub-mkrescue' calls out to mtools programs to create 'efi.img', a FAT - ;; file system image, and mtools honors SOURCE_DATE_EPOCH for the mtime of - ;; those files. The epoch for FAT is Jan. 1st 1980, not 1970, so choose - ;; that. - (setenv "SOURCE_DATE_EPOCH" - (number->string - (time-second - (date->time-utc (make-date 0 0 0 0 1 1 1980 0))))) - - ;; Our patched 'grub-mkrescue' honors this environment variable and passes - ;; it to 'mformat', which makes it the serial number of 'efi.img'. This - ;; allows for deterministic builds. - (setenv "GRUB_FAT_SERIAL_NUMBER" - (number->string (if volume-uuid - - ;; On 32-bit systems the 2nd argument must be - ;; lower than 2^32. - (string-hash (iso9660-uuid->string volume-uuid) - (- (expt 2 32) 1)) - - #x77777777) - 16)) - - (setenv "MKRESCUE_SED_MODE" "original") - (setenv "MKRESCUE_SED_XORRISO" (string-append xorriso - "/bin/xorriso")) - (setenv "MKRESCUE_SED_IN_EFI_NO_PT" "yes") - (for-each (match-lambda - ((name . value) (setenv name value))) - grub-mkrescue-environment) - - (let ((pipe - (apply open-pipe* OPEN_WRITE - grub-mkrescue - (string-append "--xorriso=" grub-mkrescue-sed.sh) - "-o" target - (string-append "boot/grub/grub.cfg=" config-file) - "etc=/tmp/root/etc" - "var=/tmp/root/var" - "run=/tmp/root/run" - ;; /mnt is used as part of the installation - ;; process, as the mount point for the target - ;; file system, so create it. - "mnt=/tmp/root/mnt" - "-path-list" "-" - "--" - - ;; Set all timestamps to 1. - "-volume_date" "all_file_dates" "=1" - - ;; ‘zisofs’ compression reduces the total image size by ~60%. - "-zisofs" "level=9:block_size=128k" ; highest compression - ;; It's transparent to our Linux-Libre kernel but not to GRUB. - ;; Don't compress the kernel, initrd, and other files read by - ;; grub.cfg, as well as common already-compressed file names. - "-find" "/" "-type" "f" - ;; XXX Even after "--" above, and despite documentation claiming - ;; otherwise, "-or" is stolen by grub-mkrescue which then chokes - ;; on it (as ‘-o …’) and dies. Don't use "-or". - "-not" "-wholename" "/boot/*" - "-not" "-wholename" "/System/*" - "-not" "-name" "unicode.pf2" - "-not" "-name" "bzImage" - "-not" "-name" "*.gz" ; initrd & all man pages - "-not" "-name" "*.png" ; includes grub-image.png - "-exec" "set_filter" "--zisofs" - "--" - - "-volid" (string-upcase volume-id) - (if volume-uuid - `("-volume_date" "uuid" - ,(string-filter (lambda (value) - (not (char=? #\- value))) - (iso9660-uuid->string - volume-uuid))) - `())))) - ;; Pass lines like 'gnu/store/…-x=/gnu/store/…-x' corresponding to the - ;; '-path-list -' option. - (for-each (lambda (item) - (format pipe "~a=~a~%" - (string-drop item 1) item)) - items) - (unless (zero? (close-pipe pipe)) - (error "oh, my! grub-mkrescue failed" grub-mkrescue)))) - (define* (initialize-hard-disk device #:key bootloader-package @@ -610,30 +480,16 @@ passing it a directory name where it is mounted." (when esp ;; Mount the ESP somewhere and install GRUB UEFI image. - (let ((mount-point (string-append target "/boot/efi")) - (grub-config (string-append target "/tmp/grub-standalone.cfg"))) + (let ((mount-point (string-append target "/boot/efi"))) (display "mounting EFI system partition...\n") (mkdir-p mount-point) (mount (partition-device esp) mount-point (partition-file-system esp)) - ;; Create a tiny configuration file telling the embedded grub - ;; where to load the real thing. - ;; XXX This is quite fragile, and can prevent the image from booting - ;; when there's more than one volume with this label present. - ;; Reproducible almost-UUIDs could reduce the risk (not eliminate it). - (call-with-output-file grub-config - (lambda (port) - (format port - "insmod part_msdos~@ - search --set=root --label Guix_image~@ - configfile /boot/grub/grub.cfg~%"))) - (display "creating EFI firmware image...") - (install-efi grub-efi mount-point grub-config) + (install-efi-loader grub-efi mount-point) (display "done.\n") - (delete-file grub-config) (umount mount-point))) ;; Register BOOTCFG as a GC root. diff --git a/gnu/ci.scm b/gnu/ci.scm index fb2596c809..b61181be51 100644 --- a/gnu/ci.scm +++ b/gnu/ci.scm @@ -38,6 +38,7 @@ #:select (lookup-compressor self-contained-tarball)) #:use-module (gnu bootloader) #:use-module (gnu bootloader u-boot) + #:use-module (gnu image) #:use-module (gnu packages) #:use-module (gnu packages gcc) #:use-module (gnu packages base) @@ -49,6 +50,7 @@ #:use-module (gnu packages make-bootstrap) #:use-module (gnu packages package-management) #:use-module (gnu system) + #:use-module (gnu system image) #:use-module (gnu system vm) #:use-module (gnu system install) #:use-module (gnu tests) @@ -123,8 +125,12 @@ SYSTEM." %guile-bootstrap-tarball %bootstrap-tarballs)) -(define %packages-to-cross-build - %core-packages) +(define (packages-to-cross-build target) + "Return the list of packages to cross-build for TARGET." + ;; Don't cross-build the bootstrap tarballs for MinGW. + (if (string-contains target "mingw") + (drop-right %core-packages 6) + %core-packages)) (define %cross-targets '("mips64el-linux-gnu" @@ -175,7 +181,7 @@ SYSTEM." (map (lambda (package) (package-cross-job store (job-name package) package target system)) - %packages-to-cross-build)) + (packages-to-cross-build target))) (remove (either from-32-to-64? same? pointless?) %cross-targets))) @@ -209,32 +215,23 @@ system.") (expt 2 20)) (if (member system %guixsd-supported-systems) - (if (member system %u-boot-systems) - (list (->job 'flash-image - (run-with-store store - (mbegin %store-monad - (set-guile-for-build (default-guile)) - (system-disk-image - (operating-system (inherit installation-os) - (bootloader (bootloader-configuration - (bootloader u-boot-bootloader) - (target #f)))) - #:disk-image-size - (* 1500 MiB)))))) - (list (->job 'usb-image - (run-with-store store - (mbegin %store-monad - (set-guile-for-build (default-guile)) - (system-disk-image installation-os - #:disk-image-size - (* 1500 MiB))))) - (->job 'iso9660-image - (run-with-store store - (mbegin %store-monad - (set-guile-for-build (default-guile)) - (system-disk-image installation-os - #:file-system-type - "iso9660")))))) + (list (->job 'usb-image + (run-with-store store + (mbegin %store-monad + (set-guile-for-build (default-guile)) + (system-image + (image + (inherit efi-disk-image) + (size (* 1500 MiB)) + (operating-system installation-os)))))) + (->job 'iso9660-image + (run-with-store store + (mbegin %store-monad + (set-guile-for-build (default-guile)) + (system-image + (image + (inherit iso9660-image) + (operating-system installation-os))))))) '())) (define channel-build-system diff --git a/gnu/image.scm b/gnu/image.scm new file mode 100644 index 0000000000..b05fc69dc5 --- /dev/null +++ b/gnu/image.scm @@ -0,0 +1,76 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2020 Mathieu Othacehe <m.othacehe@gmail.com> +;;; +;;; This file is part of GNU Guix. +;;; +;;; GNU Guix is free software; you can redistribute it and/or modify it +;;; under the terms of the GNU General Public License as published by +;;; the Free Software Foundation; either version 3 of the License, or (at +;;; your option) any later version. +;;; +;;; GNU Guix is distributed in the hope that it will be useful, but +;;; WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;;; GNU General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>. + +(define-module (gnu image) + #:use-module (guix records) + #:export (partition + partition? + partition-device + partition-size + partition-file-system + partition-label + partition-uuid + partition-flags + partition-initializer + + image + image-name + image-format + image-size + image-operating-system + image-partitions + image-compression? + image-volatile-root? + image-substitutable?)) + + +;;; +;;; Partition record. +;;; + +(define-record-type* <partition> partition make-partition + partition? + (device partition-device (default #f)) + (size partition-size) + (file-system partition-file-system (default "ext4")) + (label partition-label (default #f)) + (uuid partition-uuid (default #f)) + (flags partition-flags (default '())) + (initializer partition-initializer (default #f))) + + +;;; +;;; Image record. +;;; + +(define-record-type* <image> + image make-image + image? + (format image-format) ;symbol + (size image-size ;size in bytes as integer + (default 'guess)) + (operating-system image-operating-system ;<operating-system> + (default #f)) + (partitions image-partitions ;list of <partition> + (default '())) + (compression? image-compression? ;boolean + (default #t)) + (volatile-root? image-volatile-root? ;boolean + (default #t)) + (substitutable? image-substitutable? ;boolean + (default #t))) diff --git a/gnu/installer.scm b/gnu/installer.scm index 0d55e0db56..79113cb0ef 100644 --- a/gnu/installer.scm +++ b/gnu/installer.scm @@ -313,18 +313,18 @@ selected keymap." (define set-installer-path ;; Add the specified binary to PATH for later use by the installer. #~(let* ((inputs - '#$(append (list bash ;start subshells - connman ;call connmanctl - cryptsetup - dosfstools ;mkfs.fat - e2fsprogs ;mkfs.ext4 - btrfs-progs ;mkfs.btrfs - jfsutils ;jfs_mkfs - kbd ;chvt - guix ;guix system init call - util-linux ;mkwap - shadow) - (map canonical-package (list coreutils))))) + '#$(list bash ;start subshells + connman ;call connmanctl + cryptsetup + dosfstools ;mkfs.fat + e2fsprogs ;mkfs.ext4 + btrfs-progs + jfsutils ;jfs_mkfs + kbd ;chvt + guix ;guix system init call + util-linux ;mkwap + shadow + coreutils))) (with-output-to-port (%make-void-port "w") (lambda () (set-path-environment-variable "PATH" '("bin" "sbin") inputs))))) diff --git a/gnu/local.mk b/gnu/local.mk index cdca7442f0..66f658fe43 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -2,7 +2,7 @@ # Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020 Ludovic Courtès <ludo@gnu.org> # Copyright © 2013, 2014, 2015, 2016, 2017, 2018, 2019 Andreas Enge <andreas@enge.fr> # Copyright © 2016 Mathieu Lirzin <mthl@gnu.org> -# Copyright © 2013, 2014, 2015, 2016, 2017, 2018, 2019 Mark H Weaver <mhw@netris.org> +# Copyright © 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020 Mark H Weaver <mhw@netris.org> # Copyright © 2016 Chris Marusich <cmmarusich@gmail.com> # Copyright © 2016, 2017, 2018 Kei Kebreau <kkebreau@posteo.net> # Copyright © 2016, 2017 Rene Saavedra <rennes@openmailbox.org> @@ -11,17 +11,17 @@ # Copyright © 2016 Ben Woodcroft <donttrustben@gmail.com> # Copyright © 2016, 2017, 2018, 2019 Alex Vong <alexvong1995@gmail.com> # Copyright © 2016, 2017, 2018, 2019, 2020 Efraim Flashner <efraim@flashner.co.il> -# Copyright © 2016, 2017, 2018, 2019 Jan (janneke) Nieuwenhuizen <janneke@gnu.org> +# Copyright © 2016, 2017, 2018, 2019, 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org> # Copyright © 2017, 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr> # Copyright © 2017, 2018 Clément Lassieur <clement@lassieur.org> -# Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com> +# Copyright © 2017, 2020 Mathieu Othacehe <m.othacehe@gmail.com> # Copyright © 2017, 2018, 2019 Gábor Boskovits <boskovits@gmail.com> # Copyright © 2018 Amirouche Boubekki <amirouche@hypermove.net> # Copyright © 2018, 2019, 2020 Oleg Pykhalov <go.wigust@gmail.com> # Copyright © 2018 Stefan Stefanović <stefanx2ovic@gmail.com> # Copyright © 2018 Maxim Cournoyer <maxim.cournoyer@gmail.com> # Copyright © 2019 Guillaume Le Vaillant <glv@posteo.net> -# Copyright © 2019 John Soo <jsoo1@asu.edu> +# Copyright © 2019, 2020 John Soo <jsoo1@asu.edu> # Copyright © 2019 Jonathan Brielmaier <jonathan.brielmaier@web.de> # Copyright © 2019 Evan Straw <evan.straw99@gmail.com> # Copyright © 2019 Brett Gilio <brettg@gnu.org> @@ -33,6 +33,8 @@ # Copyright © 2020 Michael Rohleder <mike@rohleder.de> # Copyright © 2020 Felix Gruber <felgru@posteo.net> # Copyright © 2020 Ryan Prior <rprior@protonmail.com> +# Copyright © 2020 Jan Wielkiewicz <tona_kosmicznego_smiecia@interia.pl> +# Copyright © 2020 Brice Waegeneire <brice@waegenei.re> # # This file is part of GNU Guix. # @@ -61,6 +63,7 @@ GNU_SYSTEM_MODULES = \ %D%/bootloader/u-boot.scm \ %D%/bootloader/depthcharge.scm \ %D%/ci.scm \ + %D%/image.scm \ %D%/packages.scm \ %D%/packages/abduco.scm \ %D%/packages/abiword.scm \ @@ -259,6 +262,7 @@ GNU_SYSTEM_MODULES = \ %D%/packages/haskell-crypto.scm \ %D%/packages/haskell-web.scm \ %D%/packages/haskell-xyz.scm \ + %D%/packages/heads.scm \ %D%/packages/hexedit.scm \ %D%/packages/hugs.scm \ %D%/packages/hurd.scm \ @@ -278,6 +282,7 @@ GNU_SYSTEM_MODULES = \ %D%/packages/ipfs.scm \ %D%/packages/irc.scm \ %D%/packages/iso-codes.scm \ + %D%/packages/jami.scm \ %D%/packages/java.scm \ %D%/packages/java-compression.scm \ %D%/packages/java-graphics.scm \ @@ -287,6 +292,7 @@ GNU_SYSTEM_MODULES = \ %D%/packages/jrnl.scm \ %D%/packages/jose.scm \ %D%/packages/julia.scm \ + %D%/packages/julia-xyz.scm \ %D%/packages/jupyter.scm \ %D%/packages/kawa.scm \ %D%/packages/kde.scm \ @@ -426,6 +432,7 @@ GNU_SYSTEM_MODULES = \ %D%/packages/pretty-print.scm \ %D%/packages/protobuf.scm \ %D%/packages/pure.scm \ + %D%/packages/purescript.scm \ %D%/packages/pv.scm \ %D%/packages/python.scm \ %D%/packages/python-check.scm \ @@ -469,6 +476,7 @@ GNU_SYSTEM_MODULES = \ %D%/packages/search.scm \ %D%/packages/security-token.scm \ %D%/packages/selinux.scm \ + %D%/packages/sequoia.scm \ %D%/packages/serialization.scm \ %D%/packages/serveez.scm \ %D%/packages/shells.scm \ @@ -602,6 +610,8 @@ GNU_SYSTEM_MODULES = \ %D%/system.scm \ %D%/system/accounts.scm \ %D%/system/file-systems.scm \ + %D%/system/hurd.scm \ + %D%/system/image.scm \ %D%/system/install.scm \ %D%/system/keyboard.scm \ %D%/system/linux-container.scm \ @@ -622,6 +632,7 @@ GNU_SYSTEM_MODULES = \ %D%/build/activation.scm \ %D%/build/bootloader.scm \ %D%/build/cross-toolchain.scm \ + %D%/build/image.scm \ %D%/build/file-systems.scm \ %D%/build/install.scm \ %D%/build/linux-boot.scm \ @@ -718,6 +729,7 @@ dist_patch_DATA = \ %D%/packages/patches/a2ps-CVE-2014-0466.patch \ %D%/packages/patches/a2ps-CVE-2015-8107.patch \ %D%/packages/patches/abcl-fix-build-xml.patch \ + %D%/packages/patches/ableton-link-system-libraries-debian.patch \ %D%/packages/patches/abiword-explictly-cast-bools.patch \ %D%/packages/patches/adb-add-libraries.patch \ %D%/packages/patches/aegis-constness-error.patch \ @@ -726,7 +738,8 @@ dist_patch_DATA = \ %D%/packages/patches/aegis-test-fixup-1.patch \ %D%/packages/patches/aegis-test-fixup-2.patch \ %D%/packages/patches/aegisub-icu59-include-unistr.patch \ - %D%/packages/patches/aegisub-boost68.patch \ + %D%/packages/patches/aegisub-boost68.patch \ + %D%/packages/patches/aegisub-make43.patch \ %D%/packages/patches/agg-am_c_prototype.patch \ %D%/packages/patches/akonadi-paths.patch \ %D%/packages/patches/akonadi-not-relocatable.patch \ @@ -739,7 +752,6 @@ dist_patch_DATA = \ %D%/packages/patches/antlr3-3_3-fix-java8-compilation.patch \ %D%/packages/patches/apr-skip-getservbyname-test.patch \ %D%/packages/patches/aspell-default-dict-dir.patch \ - %D%/packages/patches/aspell-gcc-compat.patch \ %D%/packages/patches/ath9k-htc-firmware-binutils.patch \ %D%/packages/patches/ath9k-htc-firmware-gcc.patch \ %D%/packages/patches/ath9k-htc-firmware-objcopy.patch \ @@ -758,7 +770,6 @@ dist_patch_DATA = \ %D%/packages/patches/audiofile-hurd.patch \ %D%/packages/patches/audiofile-signature-of-multiplyCheckOverflow.patch \ %D%/packages/patches/automake-skip-amhello-tests.patch \ - %D%/packages/patches/avahi-CVE-2018-1000845.patch \ %D%/packages/patches/avahi-localstatedir.patch \ %D%/packages/patches/avogadro-boost148.patch \ %D%/packages/patches/avogadro-eigen3-update.patch \ @@ -768,10 +779,13 @@ dist_patch_DATA = \ %D%/packages/patches/azr3.patch \ %D%/packages/patches/bash-reproducible-linux-pgrp-pipe.patch \ %D%/packages/patches/bash-completion-directories.patch \ + %D%/packages/patches/bash-linux-pgrp-pipe.patch \ %D%/packages/patches/bastet-change-source-of-unordered_set.patch \ %D%/packages/patches/bazaar-CVE-2017-14176.patch \ + %D%/packages/patches/bc-fix-cross-compilation.patch \ %D%/packages/patches/beancount-disable-googleapis-fonts.patch \ %D%/packages/patches/beets-werkzeug-compat.patch \ + %D%/packages/patches/behave-skip-a-couple-of-tests.patch \ %D%/packages/patches/beignet-correct-file-names.patch \ %D%/packages/patches/benchmark-unbundle-googletest.patch \ %D%/packages/patches/biber-fix-encoding-write.patch \ @@ -781,6 +795,7 @@ dist_patch_DATA = \ %D%/packages/patches/binutils-loongson-workaround.patch \ %D%/packages/patches/binutils-mingw-w64-timestamp.patch \ %D%/packages/patches/binutils-mingw-w64-deterministic.patch \ + %D%/packages/patches/bitcoin-core-python-compat.patch \ %D%/packages/patches/blender-2.79-newer-ffmpeg.patch \ %D%/packages/patches/blender-2.79-python-3.7-fix.patch \ %D%/packages/patches/byobu-writable-status.patch \ @@ -807,6 +822,9 @@ dist_patch_DATA = \ %D%/packages/patches/clang-10.0-libc-search-path.patch \ %D%/packages/patches/clang-runtime-asan-build-fixes.patch \ %D%/packages/patches/clang-runtime-esan-build-fixes.patch \ + %D%/packages/patches/clang-runtime-9-libsanitizer-mode-field.patch \ + %D%/packages/patches/clang-runtime-3.9-libsanitizer-mode-field.patch \ + %D%/packages/patches/clang-runtime-3.8-libsanitizer-mode-field.patch \ %D%/packages/patches/classpath-aarch64-support.patch \ %D%/packages/patches/clementine-fix-sqlite.patch \ %D%/packages/patches/clementine-remove-crypto++-dependency.patch \ @@ -815,22 +833,28 @@ dist_patch_DATA = \ %D%/packages/patches/clucene-pkgconfig.patch \ %D%/packages/patches/cmake-curl-certificates.patch \ %D%/packages/patches/coda-use-system-libs.patch \ + %D%/packages/patches/collectd-5.11.0-noinstallvar.patch \ %D%/packages/patches/combinatorial-blas-awpm.patch \ %D%/packages/patches/combinatorial-blas-io-fix.patch \ %D%/packages/patches/containerd-test-with-go1.13.patch \ + %D%/packages/patches/coreutils-ls.patch \ %D%/packages/patches/cpufrequtils-fix-aclocal.patch \ %D%/packages/patches/crawl-upgrade-saves.patch \ %D%/packages/patches/crda-optional-gcrypt.patch \ %D%/packages/patches/clucene-contribs-lib.patch \ %D%/packages/patches/cube-nocheck.patch \ + %D%/packages/patches/curl-use-ssl-cert-env.patch \ %D%/packages/patches/cursynth-wave-rand.patch \ %D%/packages/patches/cvs-CVE-2017-12836.patch \ + %D%/packages/patches/cyrus-sasl-ac-try-run-fix.patch \ %D%/packages/patches/date-output-pkg-config-files.patch \ %D%/packages/patches/darkice-workaround-fpermissive-error.patch \ + %D%/packages/patches/datefudge-gettimeofday.patch \ %D%/packages/patches/dbacl-include-locale.h.patch \ %D%/packages/patches/dbus-helper-search-path.patch \ %D%/packages/patches/dbus-c++-gcc-compat.patch \ %D%/packages/patches/dbus-c++-threading-mutex.patch \ + %D%/packages/patches/dconf-meson-0.52.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 \ @@ -845,6 +869,7 @@ dist_patch_DATA = \ %D%/packages/patches/docker-fix-tests.patch \ %D%/packages/patches/dovecot-trees-support-dovecot-2.3.patch \ %D%/packages/patches/doxygen-test.patch \ + %D%/packages/patches/doxygen-1.8.17-runtests.patch \ %D%/packages/patches/dstat-fix-crash-when-specifying-delay.patch \ %D%/packages/patches/dstat-skip-devices-without-io.patch \ %D%/packages/patches/dune-istl-2.7-fix-non-mpi-tests.patch \ @@ -876,6 +901,7 @@ dist_patch_DATA = \ %D%/packages/patches/evolution-data-server-libical-compat.patch \ %D%/packages/patches/exiv2-CVE-2017-14860.patch \ %D%/packages/patches/exiv2-CVE-2017-14859-14862-14864.patch \ + %D%/packages/patches/extempore-unbundle-external-dependencies.patch \ %D%/packages/patches/extundelete-e2fsprogs-1.44.patch \ %D%/packages/patches/fastcap-mulGlobal.patch \ %D%/packages/patches/fastcap-mulSetup.patch \ @@ -886,19 +912,17 @@ dist_patch_DATA = \ %D%/packages/patches/fasthenry-spFactor.patch \ %D%/packages/patches/fbreader-curl-7.62.patch \ %D%/packages/patches/ffmpeg-prefer-dav1d.patch \ + %D%/packages/patches/fifengine-swig-compat.patch \ %D%/packages/patches/fifo-map-fix-flags-for-gcc.patch \ %D%/packages/patches/fifo-map-remove-catch.hpp.patch \ - %D%/packages/patches/file-CVE-2018-10360.patch \ - %D%/packages/patches/findutils-gnulib-libio.patch \ %D%/packages/patches/findutils-localstatedir.patch \ - %D%/packages/patches/findutils-makedev.patch \ - %D%/packages/patches/findutils-test-xargs.patch \ + %D%/packages/patches/findutils-test-rwlock-threads.patch \ %D%/packages/patches/flann-cmake-3.11.patch \ %D%/packages/patches/flint-ldconfig.patch \ %D%/packages/patches/foobillard++-pkg-config.patch \ %D%/packages/patches/foomatic-filters-CVE-2015-8327.patch \ %D%/packages/patches/foomatic-filters-CVE-2015-8560.patch \ - %D%/packages/patches/fribidi-CVE-2019-18397.patch \ + %D%/packages/patches/fontconfig-hurd-path-max.patch \ %D%/packages/patches/freeimage-unbundle.patch \ %D%/packages/patches/fuse-overlapping-headers.patch \ %D%/packages/patches/gawk-shell.patch \ @@ -906,18 +930,22 @@ dist_patch_DATA = \ %D%/packages/patches/gcc-arm-link-spec-fix.patch \ %D%/packages/patches/gcc-asan-missing-include.patch \ %D%/packages/patches/gcc-boot-2.95.3.patch \ - %D%/packages/patches/gcc-boot-4.7.4.patch \ + %D%/packages/patches/gcc-boot-4.6.4.patch \ %D%/packages/patches/gcc-cross-environment-variables.patch \ %D%/packages/patches/gcc-fix-texi2pod.patch \ %D%/packages/patches/gcc-4.8-libsanitizer-fix.patch \ %D%/packages/patches/gcc-4.9-libsanitizer-fix.patch \ %D%/packages/patches/gcc-4.9-libsanitizer-ustat.patch \ %D%/packages/patches/gcc-libsanitizer-ustat.patch \ + %D%/packages/patches/gcc-4.9-libsanitizer-mode-size.patch \ + %D%/packages/patches/gcc-6-libsanitizer-mode-size.patch \ + %D%/packages/patches/gcc-7-libsanitizer-mode-size.patch \ %D%/packages/patches/gcc-libvtv-runpath.patch \ %D%/packages/patches/gcc-strmov-store-file-names.patch \ %D%/packages/patches/gcc-4-compile-with-gcc-5.patch \ %D%/packages/patches/gcc-4.6-gnu-inline.patch \ %D%/packages/patches/gcc-4.9.3-mingw-gthr-default.patch \ + %D%/packages/patches/gcc-5-hurd.patch \ %D%/packages/patches/gcc-5.0-libvtv-runpath.patch \ %D%/packages/patches/gcc-5-source-date-epoch-1.patch \ %D%/packages/patches/gcc-5-source-date-epoch-2.patch \ @@ -927,21 +955,18 @@ dist_patch_DATA = \ %D%/packages/patches/gcc-6-source-date-epoch-2.patch \ %D%/packages/patches/gcc-7-cross-mingw.patch \ %D%/packages/patches/gcc-7-cross-environment-variables.patch \ + %D%/packages/patches/gcc-7-cross-toolexeclibdir.patch \ %D%/packages/patches/gcc-8-cross-environment-variables.patch \ %D%/packages/patches/gcc-8-strmov-store-file-names.patch \ %D%/packages/patches/gcc-9-asan-fix-limits-include.patch \ %D%/packages/patches/gcc-9-strmov-store-file-names.patch \ - %D%/packages/patches/gd-CVE-2018-5711.patch \ - %D%/packages/patches/gd-CVE-2018-1000222.patch \ - %D%/packages/patches/gd-CVE-2019-6977.patch \ - %D%/packages/patches/gd-CVE-2019-6978.patch \ %D%/packages/patches/gd-fix-tests-on-i686.patch \ - %D%/packages/patches/gd-freetype-test-failure.patch \ + %D%/packages/patches/gd-brect-bounds.patch \ %D%/packages/patches/gdm-default-session.patch \ %D%/packages/patches/geoclue-config.patch \ - %D%/packages/patches/ghc-8.0-fall-back-to-madv_dontneed.patch \ - %D%/packages/patches/ghc-diff-swap-cover-args.patch \ - %D%/packages/patches/ghc-dont-pass-linker-flags-via-response-files.patch \ + %D%/packages/patches/ghc-8.0-fall-back-to-madv_dontneed.patch \ + %D%/packages/patches/ghc-testsuite-dlopen-pie.patch \ + %D%/packages/patches/ghc-diff-swap-cover-args.patch \ %D%/packages/patches/ghc-haddock-api-fix-haddock.patch \ %D%/packages/patches/ghc-hpack-fix-tests.patch \ %D%/packages/patches/ghc-microlens-aeson-fix-tests.patch \ @@ -951,7 +976,7 @@ dist_patch_DATA = \ %D%/packages/patches/ghostscript-no-header-id.patch \ %D%/packages/patches/ghostscript-no-header-uuid.patch \ %D%/packages/patches/ghostscript-no-header-creationdate.patch \ - %D%/packages/patches/giflib-make-reallocarray-private.patch \ + %D%/packages/patches/git-annex-S3v4.patch \ %D%/packages/patches/glib-tests-timer.patch \ %D%/packages/patches/glibc-CVE-2015-5180.patch \ %D%/packages/patches/glibc-CVE-2015-7547.patch \ @@ -965,13 +990,20 @@ dist_patch_DATA = \ %D%/packages/patches/glibc-CVE-2018-11237.patch \ %D%/packages/patches/glibc-CVE-2019-7309.patch \ %D%/packages/patches/glibc-CVE-2019-9169.patch \ + %D%/packages/patches/glibc-CVE-2019-19126.patch \ %D%/packages/patches/glibc-allow-kernel-2.6.32.patch \ %D%/packages/patches/glibc-boot-2.16.0.patch \ %D%/packages/patches/glibc-boot-2.2.5.patch \ + %D%/packages/patches/glibc-bootstrap-system-2.2.5.patch \ %D%/packages/patches/glibc-bootstrap-system-2.16.0.patch \ %D%/packages/patches/glibc-bootstrap-system.patch \ %D%/packages/patches/glibc-hidden-visibility-ldconfig.patch \ + %D%/packages/patches/glibc-hurd-clock_gettime_monotonic.patch \ + %D%/packages/patches/glibc-hurd-clock_t_centiseconds.patch \ + %D%/packages/patches/glibc-hurd-gettyent.patch \ + %D%/packages/patches/glibc-hurd-mach-print.patch \ %D%/packages/patches/glibc-hurd-magic-pid.patch \ + %D%/packages/patches/glibc-hurd-signal-sa-siginfo.patch \ %D%/packages/patches/glibc-ldd-x86_64.patch \ %D%/packages/patches/glibc-locales.patch \ %D%/packages/patches/glibc-locales-2.28.patch \ @@ -984,14 +1016,17 @@ dist_patch_DATA = \ %D%/packages/patches/glibc-2.29-git-updates.patch \ %D%/packages/patches/glibc-2.27-supported-locales.patch \ %D%/packages/patches/glibc-2.28-supported-locales.patch \ + %D%/packages/patches/glibc-2.29-supported-locales.patch \ %D%/packages/patches/glibc-supported-locales.patch \ - %D%/packages/patches/glm-restore-install-target.patch \ %D%/packages/patches/gmp-arm-asm-nothumb.patch \ %D%/packages/patches/gmp-faulty-test.patch \ %D%/packages/patches/gnome-shell-theme.patch \ + %D%/packages/patches/gnome-shell-disable-test.patch \ + %D%/packages/patches/gnome-todo-delete-esource-duplicate.patch \ %D%/packages/patches/gnome-tweaks-search-paths.patch \ %D%/packages/patches/gnupg-default-pinentry.patch \ %D%/packages/patches/gnutls-skip-trust-store-test.patch \ + %D%/packages/patches/gnutls-cross.patch \ %D%/packages/patches/gobject-introspection-absolute-shlib-path.patch \ %D%/packages/patches/gobject-introspection-cc.patch \ %D%/packages/patches/gobject-introspection-girepository.patch \ @@ -1001,20 +1036,25 @@ dist_patch_DATA = \ %D%/packages/patches/gpsbabel-qstring.patch \ %D%/packages/patches/grantlee-merge-theme-dirs.patch \ %D%/packages/patches/grep-timing-sensitive-test.patch \ + %D%/packages/patches/grocsvs-dont-use-admiral.patch \ + %D%/packages/patches/gromacs-tinyxml2.patch \ %D%/packages/patches/groovy-add-exceptionutilsgenerator.patch \ %D%/packages/patches/grub-efi-fat-serial-number.patch \ - %D%/packages/patches/gsl-test-i686.patch \ + %D%/packages/patches/grub-verifiers-Blocklist-fallout-cleanup.patch \ %D%/packages/patches/gspell-dash-test.patch \ %D%/packages/patches/guile-1.8-cpp-4.5.patch \ - %D%/packages/patches/guile-2.2-default-utf8.patch \ %D%/packages/patches/guile-2.2-skip-oom-test.patch \ %D%/packages/patches/guile-default-utf8.patch \ - %D%/packages/patches/guile-gdbm-ffi-support-gdbm-1.14.patch \ + %D%/packages/patches/guile-2.2-default-utf8.patch \ + %D%/packages/patches/guile-relocatable.patch \ + %D%/packages/patches/guile-3.0-relocatable.patch \ %D%/packages/patches/guile-linux-syscalls.patch \ + %D%/packages/patches/guile-3.0-linux-syscalls.patch \ + %D%/packages/patches/guile-gdbm-ffi-support-gdbm-1.14.patch \ %D%/packages/patches/guile-present-coding.patch \ - %D%/packages/patches/guile-relocatable.patch \ %D%/packages/patches/guile-rsvg-pkgconfig.patch \ %D%/packages/patches/guile-emacs-fix-configure.patch \ + %D%/packages/patches/guile-sqlite3-fix-cross-compilation.patch \ %D%/packages/patches/gtk2-respect-GUIX_GTK2_PATH.patch \ %D%/packages/patches/gtk2-respect-GUIX_GTK2_IM_MODULE_FILE.patch \ %D%/packages/patches/gtk2-theme-paths.patch \ @@ -1040,11 +1080,12 @@ dist_patch_DATA = \ %D%/packages/patches/hdf-eos5-fix-szip.patch \ %D%/packages/patches/hdf-eos5-fortrantests.patch \ %D%/packages/patches/hubbub-sort-entities.patch \ - %D%/packages/patches/hurd-fix-eth-multiplexer-dependency.patch \ + %D%/packages/patches/hurd-cross.patch \ %D%/packages/patches/hplip-remove-imageprocessor.patch \ %D%/packages/patches/hydra-disable-darcs-test.patch \ %D%/packages/patches/icecat-makeicecat.patch \ %D%/packages/patches/icecat-avoid-bundled-libraries.patch \ + %D%/packages/patches/icecat-use-older-reveal-hidden-html.patch \ %D%/packages/patches/icecat-use-system-graphite2+harfbuzz.patch \ %D%/packages/patches/icecat-use-system-media-libs.patch \ %D%/packages/patches/icedtea-6-hotspot-gcc-segfault-workaround.patch \ @@ -1053,7 +1094,8 @@ dist_patch_DATA = \ %D%/packages/patches/id3lib-CVE-2007-4460.patch \ %D%/packages/patches/id3lib-UTF16-writing-bug.patch \ %D%/packages/patches/ilmbase-fix-tests.patch \ - %D%/packages/patches/ilmbase-openexr-pkg-config.patch \ + %D%/packages/patches/ilmbase-fix-test-arm.patch \ + %D%/packages/patches/inetutils-hurd.patch \ %D%/packages/patches/inkscape-poppler-0.76.patch \ %D%/packages/patches/intltool-perl-compatibility.patch \ %D%/packages/patches/irrlicht-use-system-libs.patch \ @@ -1069,7 +1111,6 @@ dist_patch_DATA = \ %D%/packages/patches/java-xerces-bootclasspath.patch \ %D%/packages/patches/java-xerces-build_dont_unzip.patch \ %D%/packages/patches/java-xerces-xjavac_taskdef.patch \ - %D%/packages/patches/jbig2dec-ignore-testtest.patch \ %D%/packages/patches/jfsutils-add-sysmacros.patch \ %D%/packages/patches/jfsutils-include-systypes.patch \ %D%/packages/patches/jsoncpp-fix-inverted-case.patch \ @@ -1115,6 +1156,7 @@ dist_patch_DATA = \ %D%/packages/patches/ldc-bootstrap-disable-tests.patch \ %D%/packages/patches/ldc-disable-phobos-tests.patch \ %D%/packages/patches/leela-zero-gtest.patch \ + %D%/packages/patches/less-hurd-path-max.patch \ %D%/packages/patches/liba52-enable-pic.patch \ %D%/packages/patches/liba52-link-with-libm.patch \ %D%/packages/patches/liba52-set-soname.patch \ @@ -1132,9 +1174,6 @@ dist_patch_DATA = \ %D%/packages/patches/libgit2-mtime-0.patch \ %D%/packages/patches/libgnome-encoding.patch \ %D%/packages/patches/libgnomeui-utf8.patch \ - %D%/packages/patches/libgpg-error-gawk-compat.patch \ - %D%/packages/patches/libffi-3.2.1-complex-alpha.patch \ - %D%/packages/patches/libjpeg-turbo-CVE-2019-2201.patch \ %D%/packages/patches/libjxr-fix-function-signature.patch \ %D%/packages/patches/libjxr-fix-typos.patch \ %D%/packages/patches/libotr-test-auth-fix.patch \ @@ -1150,6 +1189,7 @@ dist_patch_DATA = \ %D%/packages/patches/libmygpo-qt-fix-qt-5.11.patch \ %D%/packages/patches/libmygpo-qt-missing-qt5-modules.patch \ %D%/packages/patches/libqalculate-3.8.0-libcurl-ssl-fix.patch \ + %D%/packages/patches/libreoffice-poppler-compat.patch \ %D%/packages/patches/libsndfile-armhf-type-checks.patch \ %D%/packages/patches/libsndfile-CVE-2017-8361-8363-8365.patch \ %D%/packages/patches/libsndfile-CVE-2017-8362.patch \ @@ -1158,6 +1198,8 @@ dist_patch_DATA = \ %D%/packages/patches/libtgvoip-disable-sse2.patch \ %D%/packages/patches/libtgvoip-disable-webrtc.patch \ %D%/packages/patches/libtheora-config-guess.patch \ + %D%/packages/patches/libtirpc-hurd.patch \ + %D%/packages/patches/libtirpc-hurd-client.patch \ %D%/packages/patches/libtommath-fix-linkage.patch \ %D%/packages/patches/libtool-skip-tests2.patch \ %D%/packages/patches/libusb-0.1-disable-tests.patch \ @@ -1176,12 +1218,12 @@ dist_patch_DATA = \ %D%/packages/patches/lierolibre-remove-arch-warning.patch \ %D%/packages/patches/lierolibre-try-building-other-arch.patch \ %D%/packages/patches/linkchecker-tests-require-network.patch \ + %D%/packages/patches/linphoneqt-tabbutton.patch \ %D%/packages/patches/linux-libre-support-for-Pinebook-Pro.patch \ %D%/packages/patches/linux-pam-no-setfsuid.patch \ %D%/packages/patches/lirc-localstatedir.patch \ %D%/packages/patches/lirc-reproducible-build.patch \ %D%/packages/patches/llvm-3.5-fix-clang-build-with-gcc5.patch \ - %D%/packages/patches/llvm-for-extempore.patch \ %D%/packages/patches/lm-sensors-hwmon-attrs.patch \ %D%/packages/patches/lrcalc-includes.patch \ %D%/packages/patches/lrzip-CVE-2017-8842.patch \ @@ -1195,7 +1237,6 @@ dist_patch_DATA = \ %D%/packages/patches/luminance-hdr-qt-printer.patch \ %D%/packages/patches/lvm2-static-link.patch \ %D%/packages/patches/lxsession-use-gapplication.patch \ - %D%/packages/patches/make-glibc-compat.patch \ %D%/packages/patches/make-impure-dirs.patch \ %D%/packages/patches/mariadb-client-test-32bit.patch \ %D%/packages/patches/mars-install.patch \ @@ -1218,6 +1259,8 @@ dist_patch_DATA = \ %D%/packages/patches/mingw-w64-reproducible-gendef.patch \ %D%/packages/patches/minisat-friend-declaration.patch \ %D%/packages/patches/minisat-install.patch \ + %D%/packages/patches/mit-krb5-hurd.patch \ + %D%/packages/patches/mit-krb5-qualify-short-hostnames.patch \ %D%/packages/patches/mpc123-initialize-ao.patch \ %D%/packages/patches/module-init-tools-moduledir.patch \ %D%/packages/patches/monero-use-system-miniupnpc.patch \ @@ -1237,6 +1280,7 @@ dist_patch_DATA = \ %D%/packages/patches/mumps-shared-pord.patch \ %D%/packages/patches/mupen64plus-ui-console-notice.patch \ %D%/packages/patches/mupen64plus-video-z64-glew-correct-path.patch \ + %D%/packages/patches/musl-cross-locale.patch \ %D%/packages/patches/mutt-store-references.patch \ %D%/packages/patches/m4-gnulib-libio.patch \ %D%/packages/patches/ncompress-fix-softlinks.patch \ @@ -1275,9 +1319,10 @@ dist_patch_DATA = \ %D%/packages/patches/opencv-rgbd-aarch64-test-fix.patch \ %D%/packages/patches/openfoam-4.1-cleanup.patch \ %D%/packages/patches/openjdk-10-idlj-reproducibility.patch \ - %D%/packages/patches/openldap-CVE-2020-12243.patch \ %D%/packages/patches/openmpi-mtl-priorities.patch \ %D%/packages/patches/openocd-nrf52.patch \ + %D%/packages/patches/openssh-hurd.patch \ + %D%/packages/patches/openresolv-restartcmd-guix.patch \ %D%/packages/patches/openssl-runpath.patch \ %D%/packages/patches/openssl-1.1-c-rehash-in.patch \ %D%/packages/patches/openssl-c-rehash-in.patch \ @@ -1292,6 +1337,8 @@ dist_patch_DATA = \ %D%/packages/patches/p7zip-remove-unused-code.patch \ %D%/packages/patches/pam-krb5-CVE-2020-10595.patch \ %D%/packages/patches/pam-mount-luks2-support.patch \ + %D%/packages/patches/pango-skip-libthai-test.patch \ + %D%/packages/patches/pciutils-hurd-configure.patch \ %D%/packages/patches/sdl-pango-api_additions.patch \ %D%/packages/patches/sdl-pango-blit_overflow.patch \ %D%/packages/patches/sdl-pango-fillrect_crash.patch \ @@ -1301,6 +1348,7 @@ dist_patch_DATA = \ %D%/packages/patches/patchutils-test-perms.patch \ %D%/packages/patches/patch-hurd-path-max.patch \ %D%/packages/patches/perl-autosplit-default-time.patch \ + %D%/packages/patches/perl-cross.patch \ %D%/packages/patches/perl-deterministic-ordering.patch \ %D%/packages/patches/perl-finance-quote-unuse-mozilla-ca.patch \ %D%/packages/patches/perl-io-socket-ssl-openssl-1.0.2f-fix.patch \ @@ -1331,7 +1379,6 @@ dist_patch_DATA = \ %D%/packages/patches/portaudio-audacity-compat.patch \ %D%/packages/patches/portmidi-modular-build.patch \ %D%/packages/patches/postgresql-disable-resolve_symlinks.patch \ - %D%/packages/patches/potrace-tests.patch \ %D%/packages/patches/procmail-ambiguous-getline-debian.patch \ %D%/packages/patches/procmail-CVE-2014-3618.patch \ %D%/packages/patches/procmail-CVE-2017-16844.patch \ @@ -1342,6 +1389,7 @@ dist_patch_DATA = \ %D%/packages/patches/psm-repro.patch \ %D%/packages/patches/pulseaudio-fix-mult-test.patch \ %D%/packages/patches/pulseaudio-longer-test-timeout.patch \ + %D%/packages/patches/purescript-relax-dependencies.patch \ %D%/packages/patches/pybugz-encode-error.patch \ %D%/packages/patches/pybugz-stty.patch \ %D%/packages/patches/pygpgme-disable-problematic-tests.patch \ @@ -1353,20 +1401,21 @@ dist_patch_DATA = \ %D%/packages/patches/python-2.7-search-paths.patch \ %D%/packages/patches/python-2.7-site-prefixes.patch \ %D%/packages/patches/python-2.7-source-date-epoch.patch \ + %D%/packages/patches/python-3-arm-alignment.patch \ %D%/packages/patches/python-3-deterministic-build-info.patch \ %D%/packages/patches/python-3-search-paths.patch \ %D%/packages/patches/python-3-fix-tests.patch \ - %D%/packages/patches/python-3.8-search-paths.patch \ %D%/packages/patches/python-3.8-fix-tests.patch \ %D%/packages/patches/python-CVE-2018-14647.patch \ %D%/packages/patches/python-aiohttp-3.6.2-no-warning-fail.patch \ %D%/packages/patches/python-alembic-exceptions-cause.patch \ %D%/packages/patches/python-axolotl-AES-fix.patch \ %D%/packages/patches/python-cairocffi-dlopen-path.patch \ - %D%/packages/patches/python-cffi-x87-stack-clean.patch \ + %D%/packages/patches/python-cross-compile.patch \ %D%/packages/patches/python2-larch-coverage-4.0a6-compatibility.patch \ %D%/packages/patches/python-configobj-setuptools.patch \ %D%/packages/patches/python-flask-restful-werkzeug-compat.patch \ + %D%/packages/patches/python-gst-fix-build-with-python-3.8.patch \ %D%/packages/patches/python-keras-integration-test.patch \ %D%/packages/patches/python-pep8-stdlib-tokenize-compat.patch \ %D%/packages/patches/python-pyfakefs-remove-bad-test.patch \ @@ -1379,6 +1428,7 @@ dist_patch_DATA = \ %D%/packages/patches/python2-parameterized-docstring-test.patch \ %D%/packages/patches/python-paste-remove-timing-test.patch \ %D%/packages/patches/python-pycrypto-CVE-2013-7459.patch \ + %D%/packages/patches/python-pycrypto-time-clock.patch \ %D%/packages/patches/python2-pygobject-2-gi-info-type-error-domain.patch \ %D%/packages/patches/python-pygpgme-fix-pinentry-tests.patch \ %D%/packages/patches/python-robotframework-honor-source-date-epoch.patch \ @@ -1388,13 +1438,9 @@ dist_patch_DATA = \ %D%/packages/patches/python-unittest2-remove-argparse.patch \ %D%/packages/patches/python-waitress-fix-tests.patch \ %D%/packages/patches/qemu-glibc-2.27.patch \ - %D%/packages/patches/qemu-CVE-2020-1711.patch \ - %D%/packages/patches/qemu-CVE-2020-7039.patch \ - %D%/packages/patches/qemu-CVE-2020-7211.patch \ - %D%/packages/patches/qemu-CVE-2020-8608.patch \ - %D%/packages/patches/qemu-fix-documentation-build-failure.patch \ %D%/packages/patches/qrcodegen-cpp-make-install.patch \ %D%/packages/patches/qt4-ldflags.patch \ + %D%/packages/patches/qtbase-moc-ignore-gcc-macro.patch \ %D%/packages/patches/qtbase-use-TZDIR.patch \ %D%/packages/patches/qtbase-QTBUG-81715.patch \ %D%/packages/patches/qtscript-disable-tests.patch \ @@ -1418,7 +1464,6 @@ dist_patch_DATA = \ %D%/packages/patches/rtags-separate-rct.patch \ %D%/packages/patches/racket-store-checksum-override.patch \ %D%/packages/patches/retroarch-disable-online-updater.patch \ - %D%/packages/patches/ruby-rubygems-276-for-ruby24.patch \ %D%/packages/patches/ruby-rack-ignore-failing-test.patch \ %D%/packages/patches/ruby-tzinfo-data-ignore-broken-test.patch\ %D%/packages/patches/runc-CVE-2019-5736.patch \ @@ -1426,6 +1471,8 @@ dist_patch_DATA = \ %D%/packages/patches/rust-1.25-accept-more-detailed-gdb-lines.patch \ %D%/packages/patches/rust-bootstrap-stage0-test.patch \ %D%/packages/patches/rust-coresimd-doctest.patch \ + %D%/packages/patches/rust-nettle-disable-vendor.patch \ + %D%/packages/patches/rust-nettle-sys-disable-vendor.patch \ %D%/packages/patches/rust-reproducible-builds.patch \ %D%/packages/patches/rust-openssl-sys-no-vendor.patch \ %D%/packages/patches/rxvt-unicode-escape-sequences.patch \ @@ -1434,10 +1481,12 @@ dist_patch_DATA = \ %D%/packages/patches/scheme48-tests.patch \ %D%/packages/patches/scotch-build-parallelism.patch \ %D%/packages/patches/scotch-integer-declarations.patch \ + %D%/packages/patches/screen-hurd-path-max.patch \ + %D%/packages/patches/scribus-1.5.5-poppler-0.86-build-fix.patch \ %D%/packages/patches/sdl-libx11-1.6.patch \ - %D%/packages/patches/seahorse-gkr-use-0-on-empty-flags.patch \ %D%/packages/patches/seq24-rename-mutex.patch \ %D%/packages/patches/sharutils-CVE-2018-1000097.patch \ + %D%/packages/patches/shadow-hurd-pctrl.patch \ %D%/packages/patches/shishi-fix-libgcrypt-detection.patch \ %D%/packages/patches/slim-session.patch \ %D%/packages/patches/slim-config.patch \ @@ -1453,7 +1502,6 @@ dist_patch_DATA = \ %D%/packages/patches/superlu-dist-awpm-grid.patch \ %D%/packages/patches/superlu-dist-scotchmetis.patch \ %D%/packages/patches/supertux-unbundle-squirrel.patch \ - %D%/packages/patches/swig-guile-gc.patch \ %D%/packages/patches/swish-e-search.patch \ %D%/packages/patches/swish-e-format-security.patch \ %D%/packages/patches/symmetrica-bruch.patch \ @@ -1468,13 +1516,14 @@ dist_patch_DATA = \ %D%/packages/patches/tar-skip-unreliable-tests.patch \ %D%/packages/patches/tcc-boot-0.9.27.patch \ %D%/packages/patches/tclxml-3.2-install.patch \ + %D%/packages/patches/tcl-fix-cross-compilation.patch \ %D%/packages/patches/tcsh-fix-autotest.patch \ - %D%/packages/patches/tcsh-fix-out-of-bounds-read.patch \ %D%/packages/patches/teensy-loader-cli-help.patch \ %D%/packages/patches/texinfo-5-perl-compat.patch \ - %D%/packages/patches/texlive-bin-CVE-2018-17407.patch \ - %D%/packages/patches/texlive-bin-luatex-poppler-compat.patch \ + %D%/packages/patches/texlive-bin-poppler-0.83.patch \ + %D%/packages/patches/texlive-bin-poppler-0.86.patch \ %D%/packages/patches/telegram-purple-adjust-test.patch \ + %D%/packages/patches/telepathy-glib-channel-memory-leak.patch \ %D%/packages/patches/texi2html-document-encoding.patch \ %D%/packages/patches/texi2html-i18n.patch \ %D%/packages/patches/thefuck-test-environ.patch \ @@ -1516,17 +1565,19 @@ dist_patch_DATA = \ %D%/packages/patches/vboot-utils-fix-format-load-address.patch \ %D%/packages/patches/vboot-utils-fix-tests-show-contents.patch \ %D%/packages/patches/vboot-utils-skip-test-workbuf.patch \ + %D%/packages/patches/vigra-python-compat.patch \ %D%/packages/patches/vinagre-newer-freerdp.patch \ %D%/packages/patches/vinagre-newer-rdp-parameters.patch \ %D%/packages/patches/virglrenderer-CVE-2017-6386.patch \ - %D%/packages/patches/vlc-fix-test_libvlc_slaves.patch \ %D%/packages/patches/vorbis-tools-CVE-2014-9638+CVE-2014-9639.patch \ %D%/packages/patches/vorbis-tools-CVE-2014-9640.patch \ %D%/packages/patches/vorbis-tools-CVE-2015-6749.patch \ %D%/packages/patches/vsearch-unbundle-cityhash.patch \ %D%/packages/patches/vte-CVE-2012-2738-pt1.patch \ %D%/packages/patches/vte-CVE-2012-2738-pt2.patch \ + %D%/packages/patches/warsow-qfusion-fix-bool-return-type.patch \ %D%/packages/patches/weasyprint-library-paths.patch \ + %D%/packages/patches/webkitgtk-share-store.patch \ %D%/packages/patches/websocketpp-fix-for-boost-1.70.patch \ %D%/packages/patches/wicd-bitrate-none-fix.patch \ %D%/packages/patches/wicd-get-selected-profile-fix.patch \ @@ -1563,5 +1614,4 @@ dist_patch_DATA = \ %D%/packages/patches/zziplib-CVE-2018-16548.patch MISC_DISTRO_FILES = \ - %D%/packages/ld-wrapper.in \ - %D%/packages/ld-wrapper-next.in + %D%/packages/ld-wrapper.in diff --git a/gnu/packages/abiword.scm b/gnu/packages/abiword.scm index 2b65a02242..9cfd12a1e6 100644 --- a/gnu/packages/abiword.scm +++ b/gnu/packages/abiword.scm @@ -95,7 +95,7 @@ ("libchamplain" ,libchamplain) ("libglade" ,libglade) ("libgsf" ,libgsf) - ("libjpeg" ,libjpeg) + ("libjpeg" ,libjpeg-turbo) ("libpng" ,libpng) ("librsvg" ,librsvg) ("libxml2" ,libxml2) diff --git a/gnu/packages/accessibility.scm b/gnu/packages/accessibility.scm index 431e5924c9..8d421a092a 100644 --- a/gnu/packages/accessibility.scm +++ b/gnu/packages/accessibility.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2017 ng0 <ng0@n0.is> +;;; Copyright © 2017 Nikita <nikita@n0.is> ;;; Copyright © 2017 Stefan Reichör <stefan@xsteve.at> ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2019 Andrew Miloradovsky <andrew@interpretmath.pw> diff --git a/gnu/packages/acl.scm b/gnu/packages/acl.scm index 0131adcac4..bcab125164 100644 --- a/gnu/packages/acl.scm +++ b/gnu/packages/acl.scm @@ -48,6 +48,7 @@ (arguments `(#:modules ((ice-9 ftw) ,@%gnu-build-system-modules) + #:configure-flags '("--disable-static") #:phases (modify-phases %standard-phases ;; XXX After repacking the sources the timestamps are reset to the diff --git a/gnu/packages/admin.scm b/gnu/packages/admin.scm index cb3de79713..6083691e19 100644 --- a/gnu/packages/admin.scm +++ b/gnu/packages/admin.scm @@ -12,7 +12,7 @@ ;;; Copyright © 2016, 2017, 2018, 2019 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2016 Peter Feigl <peter.feigl@nexoid.at> ;;; Copyright © 2016 John J. Foerch <jjfoerch@earthlink.net> -;;; Copyright © 2016, 2017 ng0 <ng0@n0.is> +;;; Copyright © 2016, 2017 Nikita <nikita@n0.is> ;;; Copyright © 2016, 2017, 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2016 John Darrington <jmd@gnu.org> ;;; Copyright © 2017 Ben Sturmfels <ben@sturm.com.au> @@ -29,8 +29,9 @@ ;;; Copyright © 2019 Hartmut Goebel <h.goebel@crazy-compilers.com> ;;; Copyright © 2019 Alex Griffin <a@ajgrf.com> ;;; Copyright © 2019 Guillaume Le Vaillant <glv@posteo.net> -;;; Copyright © 2019 Mathieu Othacehe <m.othacehe@gmail.com> +;;; Copyright © 2019, 2020 Mathieu Othacehe <m.othacehe@gmail.com> ;;; Copyright © 2020 Oleg Pykhalov <go.wigust@gmail.com> +;;; Copyright © 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org> ;;; Copyright © 2020 Michael Rohleder <mike@rohleder.de> ;;; Copyright © 2020 Vincent Legoll <vincent.legoll@gmail.com> ;;; @@ -91,6 +92,7 @@ #:use-module (gnu packages groff) #:use-module (gnu packages gtk) #:use-module (gnu packages guile) + #:use-module (gnu packages hurd) #:use-module (gnu packages image) #:use-module (gnu packages imagemagick) #:use-module (gnu packages inkscape) @@ -130,6 +132,7 @@ #:use-module (gnu packages xml) #:use-module (gnu packages xorg)) +;; This package uses su instead of sudo (because of SpaceFM). (define-public ktsuss (package (name "ktsuss") @@ -146,17 +149,13 @@ (file-name (git-file-name name version)))) (build-system glib-or-gtk-build-system) (arguments - `(#:configure-flags - (list "--enable-sudo=yes") - #:phases + `(#:phases (modify-phases %standard-phases (add-after 'unpack 'patch-file-names (lambda _ (substitute* "configure.ac" (("supath=`which su 2>/dev/null`") - "supath=/run/setuid-programs/su") - (("sudopath=`which sudo 2>/dev/null`") - "sudopath=/run/setuid-programs/sudo")) + "supath=/run/setuid-programs/su")) #t))))) (native-inputs `(("autoconf" ,autoconf) @@ -260,10 +259,10 @@ and provides a \"top-like\" mode (monitoring).") `(("pkg-config" ,pkg-config) ;; This is the Guile we use as a cross-compiler... - ("guile" ,guile-2.2.7))) + ("guile" ,guile-3.0))) (inputs ;; ... and this is the one that appears in shebangs when cross-compiling. - `(("guile" ,guile-2.2.7) ;for <https://bugs.gnu.org/37757> + `(("guile" ,guile-3.0) ;; The 'shepherd' command uses Readline when used interactively. It's ;; an unusual use case though, so we don't propagate it. @@ -277,15 +276,18 @@ interface and is based on GNU Guile.") (license license:gpl3+) (home-page "https://www.gnu.org/software/shepherd/"))) -(define-public guile3.0-shepherd +(define-public guile2.2-shepherd (package (inherit shepherd) - (name "guile3.0-shepherd") + (name "guile2.2-shepherd") (native-inputs `(("pkg-config" ,pkg-config) - ("guile" ,guile-next))) + ("guile" ,guile-2.2))) (inputs - `(("guile" ,guile-next))))) + `(("guile" ,guile-2.2))))) + +(define-public guile3.0-shepherd + (deprecated-package "guile3.0-shepherd" shepherd)) (define-public guile2.0-shepherd (package @@ -491,6 +493,7 @@ re-executing them as necessary.") (method url-fetch) (uri (string-append "mirror://gnu/inetutils/inetutils-" version ".tar.gz")) + (patches (search-patches "inetutils-hurd.patch")) (sha256 (base32 "05n65k4ixl85dc6rxc51b1b732gnmm8xnqi424dy9f1nz7ppb3xy")))) @@ -502,13 +505,27 @@ re-executing them as necessary.") ;; cross-compiling (by default it does not.) ,@(if (%current-target-system) '("--with-path-procnet-dev=/proc/net/dev") + '()) + ,@(if (hurd-target?) + '("--disable-rcp" + "--disable-rexec" + "--disable-rexecd" + "--disable-rlogin" + "--disable-rlogind" + "--disable-rsh" + "--disable-rshd" + "--disable-uucpd" + "--disable-whois") '())) ;; On some systems, 'libls.sh' may fail with an error such as: ;; "Failed to tell switch -a apart from -A". #:parallel-tests? #f)) (inputs `(("ncurses" ,ncurses) ("readline" ,readline))) ;for 'ftp' - (native-inputs `(("netstat" ,net-tools))) ;for tests + (native-inputs (if (member (%current-system) + (package-supported-systems net-tools)) + `(("netstat" ,net-tools)) ;for tests + '())) (home-page "https://www.gnu.org/software/inetutils/") (synopsis "Basic networking utilities") (description @@ -526,6 +543,7 @@ hostname.") (uri (string-append "https://github.com/shadow-maint/shadow/releases/" "download/" version "/shadow-" version ".tar.xz")) + (patches (search-patches "shadow-hurd-pctrl.patch")) (sha256 (base32 "0qmfq50sdhz6xilgxvinblll8j2iqfl7hwk45bq744y4plq4dbd3")))) @@ -559,11 +577,7 @@ hostname.") (for-each delete-file (find-files man "^groups\\.")) #t)))))) - (inputs (if (string-contains (or (%current-target-system) - (%current-system)) - "-linux") - `(("linux-pam" ,linux-pam)) - '())) + (inputs `(("linux-pam" ,linux-pam))) (home-page "https://github.com/shadow-maint/shadow") (synopsis "Authentication-related tools such as passwd, su, and login") (description @@ -590,13 +604,17 @@ login, passwd, su, groupadd, and useradd.") `(#:phases (modify-phases %standard-phases (replace 'configure - (lambda* (#:key inputs outputs #:allow-other-keys) + (lambda* (#:key inputs outputs target #:allow-other-keys) (let* ((out (assoc-ref outputs "out")) (man8 (string-append out "/share/man/man8")) (sbin (string-append out "/sbin")) (shadow (assoc-ref inputs "shadow")) (login (string-append shadow "/bin/login"))) (substitute* "Makefile" + ,@(if (%current-target-system) + '((("CC=.*$") + (string-append "CC=" target "-gcc\n"))) + '()) (("^SBINDIR.*") (string-append "SBINDIR = " out "/sbin\n")) @@ -947,8 +965,9 @@ connection alive.") ("file" ,file))) (inputs `(("inetutils" ,inetutils) - ("net-tools" ,net-tools) - ("iproute" ,iproute) + ,@(if (hurd-target?) '() + `(("net-tools" ,net-tools) + ("iproute" ,iproute))) ;; isc-dhcp bundles a copy of BIND, which has proved vulnerable ;; in the past. Use a BIND-VERSION of our choosing instead. @@ -1258,7 +1277,7 @@ system administrator.") (define-public sudo (package (name "sudo") - (version "1.8.31p1") + (version "1.9.0") (source (origin (method url-fetch) (uri @@ -1268,7 +1287,7 @@ system administrator.") version ".tar.gz"))) (sha256 (base32 - "1n0mdmgcs92af34xxsnsh1arrngymhdmwd9srjgjbk65q7xzsg67")) + "0p7r3cl16pjwbc48ff1gbhjw51lngrghvwblxz5lxpyzqlwi88xb")) (modules '((guix build utils))) (snippet '(begin @@ -1277,7 +1296,16 @@ system administrator.") (build-system gnu-build-system) (arguments `(#:configure-flags - (list "--with-logpath=/var/log/sudo.log" + (list (string-append "--docdir=" (assoc-ref %outputs "out") + "/share/doc/" ,name "-" ,version) + + ;; XXX: Disable Python support when cross-compiling because + ;; 'configure' tries to run 'python', which fails. + ,(if (%current-target-system) + "--disable-python" + "--enable-python") ; for plug-ins written in ~ + + "--with-logpath=/var/log/sudo.log" "--with-rundir=/var/run/sudo" ; must be cleaned up at boot time "--with-vardir=/var/db/sudo" "--with-iologdir=/var/log/sudo-io" @@ -1302,17 +1330,20 @@ system administrator.") ;; prematurely. (("@CONFIGURE_ARGS@") "\"\"")) (substitute* (find-files "." "Makefile\\.in") + ;; Allow installation as non-root. (("-o [[:graph:]]+ -g [[:graph:]]+") - ;; Allow installation as non-root. "") + ;; Don't try to create /etc/sudoers. (("^install: (.*)install-sudoers(.*)" _ before after) - ;; Don't try to create /etc/sudoers. (string-append "install: " before after "\n")) + ;; Don't try to create /run/sudo. (("\\$\\(DESTDIR\\)\\$\\(rundir\\)") - ;; Don't try to create /run/sudo. "$(TMPDIR)/dummy") + ;; Install example sudo{,_logsrvd}.conf to the right place. + (("\\$\\(DESTDIR\\)\\$\\(sysconfdir\\)") + "$(DESTDIR)/$(docdir)/examples") + ;; Don't try to create /var/db/sudo. (("\\$\\(DESTDIR\\)\\$\\(vardir\\)") - ;; Don't try to create /var/db/sudo. "$(TMPDIR)/dummy")) ;; ‘Checking existing [/etc/]sudoers file for syntax errors’ is @@ -1328,9 +1359,12 @@ system administrator.") (native-inputs `(("groff" ,groff))) (inputs - `(("linux-pam" ,linux-pam) - ("zlib" ,zlib) - ("coreutils" ,coreutils))) + `(("coreutils" ,coreutils) + ("linux-pam" ,linux-pam) + ,@(if (%current-target-system) + '() + `(("python" ,python))) + ("zlib" ,zlib))) (home-page "https://www.sudo.ws/") (synopsis "Run commands as root") (description @@ -1770,12 +1804,12 @@ characters can be replaced as well, as can UTF-8 characters.") (build-system gnu-build-system) (inputs `(("ntfs-3g" ,ntfs-3g) - ("util-linux" ,util-linux) + ("util-linux" ,util-linux "lib") ("openssl" ,openssl) ;; FIXME: add reiserfs. ("zlib" ,zlib) ("e2fsprogs" ,e2fsprogs) - ("libjpeg" ,libjpeg) + ("libjpeg" ,libjpeg-turbo) ("ncurses" ,ncurses))) (home-page "https://www.cgsecurity.org/wiki/TestDisk") (synopsis "Data recovery tool") @@ -2900,14 +2934,7 @@ buffers.") (base32 "1gpdjs5aj6vsnzwcjvw5bb120lgffvvshi4202phr0bzw3b92ky8")))) (build-system gnu-build-system) (arguments - `(#:tests? #f ; many of the tests try to load kernel modules - #:phases - (modify-phases %standard-phases - (replace 'bootstrap - (lambda _ - ;; Don't run configure in this phase. - (setenv "NOCONFIGURE" "1") - (invoke "sh" "autogen.sh")))))) + `(#:tests? #f)) ; many of the tests try to load kernel modules (inputs `(("cairo" ,cairo) ("elfutils" ,elfutils) ; libdw @@ -3646,6 +3673,7 @@ tcpdump and snoop.") ("lvm2" ,lvm2) ("openssl" ,openssl) ("pcre" ,pcre) + ("libmount" ,util-linux "lib") ("util-linux" ,util-linux))) (arguments `(#:configure-flags diff --git a/gnu/packages/adns.scm b/gnu/packages/adns.scm index 541612d41a..5d8c6fdc91 100644 --- a/gnu/packages/adns.scm +++ b/gnu/packages/adns.scm @@ -62,7 +62,7 @@ scripts.") (define-public c-ares (package (name "c-ares") - (version "1.15.0") + (version "1.16.0") (source (origin (method url-fetch) (uri (string-append @@ -70,7 +70,7 @@ scripts.") ".tar.gz")) (sha256 (base32 - "0lk8knip4xk6qzksdkn7085mmgm4ixfczdyyjw656c193y3rgnvc")))) + "129sm0wzij0mp8vdv68v18hnykcjb6ivi66wnqnnw598q7bql1fy")))) (build-system gnu-build-system) (native-inputs `(("pkg-config" ,pkg-config))) diff --git a/gnu/packages/algebra.scm b/gnu/packages/algebra.scm index 34fb9ee4fd..4df2e96ecd 100644 --- a/gnu/packages/algebra.scm +++ b/gnu/packages/algebra.scm @@ -8,8 +8,10 @@ ;;; Copyright © 2017, 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2017 Marius Bakke <mbakke@fastmail.com> ;;; Copyright © 2017, 2019 Eric Bavier <bavier@member.fsf.org> +;;; Copyright © 2019 Mathieu Othacehe <m.othacehe@gmail.com> ;;; Copyright © 2020 Björn Höfling <bjoern.hoefling@bjoernhoefling.de> ;;; Copyright © 2020 Jakub Kądziołka <kuba@kadziolka.net> +;;; Copyright © 2020 Vincent Legoll <vincent.legoll@gmail.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -406,7 +408,7 @@ precision.") ("gsl" ,gsl) ("lapack" ,lapack) ("libao" ,ao) - ("libjpeg" ,libjpeg) + ("libjpeg" ,libjpeg-turbo) ("libpng" ,libpng) ("libsamplerate" ,libsamplerate) ("libx11" ,libx11) @@ -689,15 +691,23 @@ binary.") (uri (string-append "mirror://gnu/bc/bc-" version ".tar.gz")) (sha256 (base32 - "0amh9ik44jfg66csyvf4zz1l878c4755kjndq9j0270akflgrbb2")))) + "0amh9ik44jfg66csyvf4zz1l878c4755kjndq9j0270akflgrbb2")) + (patches (search-patches "bc-fix-cross-compilation.patch")))) (build-system gnu-build-system) (native-inputs - `(("ed" ,ed) + `(("automake" ,automake) + ("autoconf" ,autoconf) + ("ed" ,ed) ("flex" ,flex) ("texinfo" ,texinfo))) (arguments '(#:configure-flags - (list "--with-readline"))) + (list "--with-readline") + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'autogen + (lambda _ + (invoke "autoreconf" "-vif")))))) (home-page "https://www.gnu.org/software/bc/") (synopsis "Arbitrary precision numeric processing language") (description @@ -913,6 +923,29 @@ Fourier Transform} (DFT), @dfn{Discrete Cosine Transform} (DCT), @dfn{Discrete Sine Transform} (DST) and @dfn{Discrete Hartley Transform} (DHT).") (license license:bsd-2))) +(define-public lmfit + (package + (name "lmfit") + (version "8.2.2") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://jugit.fz-juelich.de/mlz/lmfit.git") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "00bch77a6qgnw6vzsjn2a42n8n683ih3xm0wpr454jxa15hw78vf")))) + (build-system cmake-build-system) + (native-inputs + `(("perl" ,perl))) ; for pod2man + (home-page "https://jugit.fz-juelich.de/mlz/lmfit") + (synopsis "Levenberg-Marquardt minimization and least-squares fitting") + (description "lmfit is a C library for Levenberg-Marquardt least-squares +minimization and curve fitting. It is mature code, based on decades-old +algorithms from the FORTRAN library MINPACK.") + (license license:bsd-2))) + (define-public eigen (package (name "eigen") @@ -1216,15 +1249,6 @@ objects.") ("libtool" ,libtool))) (propagated-inputs `(("gmp" ,gmp))) ; gmp++.h includes gmpxx.h - (arguments - `(#:phases - (modify-phases %standard-phases - (add-before 'bootstrap 'setenv - ;; Prevent the autogen.sh script to carry out the configure - ;; script, which has not yet been patched to replace /bin/sh. - (lambda _ - (setenv "NOCONFIGURE" "yes") - #t))))) (synopsis "Algebraic computations with exact rings and fields") (description "Givaro is a C++ library implementing the basic arithmetic of various @@ -1263,15 +1287,7 @@ compound objects, such as vectors, matrices and univariate polynomials.") `(#:configure-flags (list (string-append "--with-blas-libs=" (assoc-ref %build-inputs "openblas") - "/lib/libopenblas.so")) - #:phases - (modify-phases %standard-phases - (add-before 'bootstrap 'setenv - ;; Prevent the autogen.sh script to carry out the configure - ;; script, which has not yet been patched to replace /bin/sh. - (lambda _ - (setenv "NOCONFIGURE" "yes") - #t))))) + "/lib/libopenblas.so")))) (synopsis "C++ library for linear algebra over finite fields") (description "FFLAS-FFPACK is a C++ template library for basic linear algebra @@ -1307,15 +1323,6 @@ algebra, such as the row echelon form.") ("pkg-config" ,pkg-config))) (inputs `(("fflas-ffpack" ,fflas-ffpack))) - (arguments - `(#:phases - (modify-phases %standard-phases - (add-before 'bootstrap 'setenv - ;; Prevent the autogen.sh script to carry out the configure - ;; script, which has not yet been patched to replace /bin/sh. - (lambda _ - (setenv "NOCONFIGURE" "yes") - #t))))) (synopsis "C++ library for linear algebra over exact rings") (description "LinBox is a C++ template library for exact linear algebra computation diff --git a/gnu/packages/android.scm b/gnu/packages/android.scm index 17f5f41fcb..9ee7d28687 100644 --- a/gnu/packages/android.scm +++ b/gnu/packages/android.scm @@ -1,7 +1,7 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2012 Stefan Handschuh <handschuh.stefan@googlemail.com> ;;; Copyright © 2015 Kai-Chung Yan <seamlikok@gmail.com> -;;; Copyright © 2016 Marius Bakke <mbakke@fastmail.com> +;;; Copyright © 2016, 2020 Marius Bakke <mbakke@fastmail.com> ;;; Copyright © 2017 Julien Lepiller <julien@lepiller.eu> ;;; Copyright © 2017 Hartmut Goebel <h.goebel@crazy-compilers.com> ;;; Copyright © 2017 Maxim Cournoyer <maxim.cournoyer@gmail.com> @@ -611,9 +611,20 @@ file system.") #:make-flags '("CXXFLAGS=-std=gnu++11 -Wno-error") #:phases (modify-phases %standard-phases + (add-after 'set-paths 'augment-CPLUS_INCLUDE_PATH + (lambda* (#:key inputs #:allow-other-keys) + ;; Hide the default GCC from CPLUS_INCLUDE_PATH to prevent it from + ;; shadowing the version of GCC provided in native-inputs. + (let ((gcc (assoc-ref inputs "gcc"))) + (setenv "CPLUS_INCLUDE_PATH" + (string-join + (delete (string-append gcc "/include/c++") + (string-split (getenv "CPLUS_INCLUDE_PATH") + #\:)) + ":")) + #t))) (add-after 'unpack 'enter-source (lambda _ (chdir "libutils") #t)) - (add-after 'install 'install-headers (lambda* (#:key inputs outputs #:allow-other-keys) (copy-recursively "../include/utils" (string-append (assoc-ref outputs "out") "/include/utils"))))))) @@ -623,7 +634,7 @@ file system.") (native-inputs `(("android-bionic-uapi" ,android-bionic-uapi) ("android-liblog" ,android-liblog) - ("gcc" ,gcc-5))) ; XXX: fails to build with GCC 7 + ("gcc@5" ,gcc-5))) ; XXX: fails to build with GCC 7 (home-page "https://developer.android.com/") (synopsis "Android utility library") (description "@code{android-libutils} provides utilities for Android NDK developers.") @@ -840,7 +851,7 @@ script that you can put anywhere in your path.") (install-file "abootimg" bin) #t)))))) (inputs - `(("libblkid" ,util-linux))) + `(("libblkid" ,util-linux "lib"))) (home-page "https://ac100.grandou.net/abootimg") (synopsis "Tool for manipulating Android Boot Images") (description "This package provides a tool for manipulating old Android diff --git a/gnu/packages/animation.scm b/gnu/packages/animation.scm index 08bf4eb1de..0357ac1190 100644 --- a/gnu/packages/animation.scm +++ b/gnu/packages/animation.scm @@ -112,7 +112,7 @@ C++ @dfn{Standard Template Library} (STL).") `(("boost" ,boost) ("ffmpeg" ,ffmpeg) ("libdv" ,libdv) - ("libjpeg" ,libjpeg) + ("libjpeg" ,libjpeg-turbo) ("libpng" ,libpng) ("libmng" ,libmng) ("zlib" ,zlib))) diff --git a/gnu/packages/arcan.scm b/gnu/packages/arcan.scm index db472efec5..e3f8b60aea 100644 --- a/gnu/packages/arcan.scm +++ b/gnu/packages/arcan.scm @@ -216,13 +216,7 @@ engine programmable using Lua.") (assoc-ref %build-inputs "xkbcomp") "/bin") ,(string-append "--with-xkb-output=" - "/tmp")) ; FIXME: Copied from xorg - #:phases - (modify-phases %standard-phases - (add-after 'unpack 'noconfigure - (lambda _ - (setenv "NOCONFIGURE" "true") - #t))))) + "/tmp")))) ; FIXME: Copied from xorg (native-inputs `(("pkg-config" ,pkg-config) ("autoconf" ,autoconf) diff --git a/gnu/packages/aspell.scm b/gnu/packages/aspell.scm index b11a2dbe6b..7550736c40 100644 --- a/gnu/packages/aspell.scm +++ b/gnu/packages/aspell.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2013, 2014, 2015, 2017, 2018 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2013, 2014, 2015, 2017, 2018, 2019 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2015, 2016 Alex Kost <alezost@gmail.com> ;;; Copyright © 2016 John Darrington <jmd@gnu.org> ;;; Copyright © 2016, 2017, 2019 Efraim Flashner <efraim@flashner.co.il> @@ -8,6 +8,7 @@ ;;; Copyright © 2016, 2017, 2019 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2019 Jens Mølgaard <jens@zete.tk> ;;; Copyright © 2020 Timotej Lazar <timotej.lazar@araneo.si> +;;; Copyright © 2020 Marcin Karpezo <sirmacik@wioo.waw.pl> ;;; ;;; This file is part of GNU Guix. ;;; @@ -39,7 +40,7 @@ (define-public aspell (package (name "aspell") - (version "0.60.6.1") + (version "0.60.8") (source (origin (method url-fetch) @@ -47,9 +48,8 @@ version ".tar.gz")) (sha256 (base32 - "1qgn5psfyhbrnap275xjfrzppf5a83fb67gpql0kfqv37al869gm")) - (patches (search-patches "aspell-default-dict-dir.patch" - "aspell-gcc-compat.patch")))) + "1wi60ankalmh8ds7nplz434jd7j94gdvbahdwsr539rlad8pxdzr")) + (patches (search-patches "aspell-default-dict-dir.patch")))) (build-system gnu-build-system) (arguments `(#:phases @@ -66,14 +66,6 @@ (("\"filter-path(.*)DICT_DIR" _ middle) (string-append "\"filter-path" middle "\"" libdir "\""))) - #t))) - (add-after 'install 'wrap-aspell - (lambda* (#:key outputs #:allow-other-keys) - (let ((bin/aspell (string-append (assoc-ref outputs "out") - "/bin/aspell"))) - (wrap-program bin/aspell - '("ASPELL_CONF" "" = - ("${ASPELL_CONF:-\"dict-dir ${GUIX_PROFILE:-$HOME/.guix-profile}/lib/aspell\"}"))) #t)))))) (inputs `(("perl" ,perl))) @@ -298,6 +290,13 @@ dictionaries, including personal ones.") (base32 "0w2k5l5rbqpliripgqwiqixz5ghnjf7i9ggbrc4ly4vy1ia10rmc"))) +(define-public aspell-dict-pl + (aspell-dictionary "pl" "Polish" + #:version "0.51-0" + #:sha256 + (base32 + "1a3ccji6k5gys7l3ilr2lh5pzxgzb7ipc5vb737svl6nqgdy8757"))) + (define-public aspell-dict-pt-br (aspell-dictionary "pt_BR" "Brazilian Portuguese" #:version "20131030-12-0" diff --git a/gnu/packages/astronomy.scm b/gnu/packages/astronomy.scm index 28c010ad6a..7261c62978 100644 --- a/gnu/packages/astronomy.scm +++ b/gnu/packages/astronomy.scm @@ -140,7 +140,7 @@ header.") (inputs `(("cfitsio" ,cfitsio) ("gsl" ,gsl) - ("libjpeg" ,libjpeg) + ("libjpeg" ,libjpeg-turbo) ("libtiff" ,libtiff) ("wcslib" ,wcslib) ("zlib" ,zlib))) @@ -226,7 +226,7 @@ objects.") `(("glu" ,glu) ("glew" ,glew) ("libtheora" ,libtheora) - ("libjpeg" ,libjpeg) + ("libjpeg" ,libjpeg-turbo) ("libpng" ,libpng) ;; maybe required? ("mesa" ,mesa) @@ -326,7 +326,7 @@ Mechanics, Astrometry and Astrodynamics library.") ("freetype" ,freetype) ("pango" ,pango) ("giflib" ,giflib) - ("libjpeg", libjpeg) + ("libjpeg", libjpeg-turbo) ("libpng" ,libpng) ("libtiff" ,libtiff) ("netpbm" ,netpbm) diff --git a/gnu/packages/audio.scm b/gnu/packages/audio.scm index e2e276723b..2eeda826b5 100644 --- a/gnu/packages/audio.scm +++ b/gnu/packages/audio.scm @@ -6,7 +6,7 @@ ;;; Copyright © 2015, 2016 Mark H Weaver <mhw@netris.org> ;;; Copyright © 2016, 2017, 2018, 2019 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2016, 2017 Alex Griffin <a@ajgrf.com> -;;; Copyright © 2016 ng0 <ng0@n0.is> +;;; Copyright © 2016 Nikita <nikita@n0.is> ;;; Copyright © 2016 Lukas Gradl <lgradl@openmailbox.org> ;;; Copyright © 2016, 2017, 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2018, 2020 Oleg Pykhalov <go.wigust@gmail.com> @@ -30,6 +30,8 @@ ;;; Copyright © 2019 Nicolas Goaziou <mail@nicolasgoaziou.fr> ;;; Copyright © 2020 Vincent Legoll <vincent.legoll@gmail.com> ;;; Copyright © 2020 Guillaume Le Vaillant <glv@posteo.net> +;;; Copyright © 2020 Jonathan Frederickson <jonathan@terracrypt.net> +;;; Copyright © 2020 Giacomo Leidi <goodoldpaul@autistici.org> ;;; ;;; This file is part of GNU Guix. ;;; @@ -86,6 +88,7 @@ #:use-module (gnu packages multiprecision) #:use-module (gnu packages music) #:use-module (gnu packages ncurses) + #:use-module (gnu packages networking) #:use-module (gnu packages onc-rpc) #:use-module (gnu packages perl) #:use-module (gnu packages pkg-config) @@ -1239,7 +1242,7 @@ follower.") (define-public fluidsynth (package (name "fluidsynth") - (version "2.1.1") + (version "2.1.2") (source (origin (method git-fetch) (uri (git-reference @@ -1248,7 +1251,7 @@ follower.") (file-name (git-file-name name version)) (sha256 (base32 - "09jq04hrasidf6b5gkk4aba13fq55z3bmn7bq35rdaikz26xiij4")))) + "0pf8hjn15isf772nz8qcqja700aay8nhdwmr24djkj42c7chf96j")))) (build-system cmake-build-system) (arguments '(#:tests? #f ; no check target @@ -1627,7 +1630,7 @@ especially for creating reverb effects. It supports impulse responses with 1, ;; uuid.h is included in the JACK type headers ;; db.h is included in the libjack metadata headers (propagated-inputs - `(("libuuid" ,util-linux) + `(("libuuid" ,util-linux "lib") ("bdb" ,bdb))) (native-inputs `(("pkg-config" ,pkg-config))) @@ -1855,6 +1858,31 @@ for headphone prolonged listening to disable superstereo fatigue without essential distortions.") (license license:expat))) +(define-public ladspa-bs2b + (package + (name "ladspa-bs2b") + (version "0.9.1") + (source (origin + (method url-fetch) + (uri (string-append + "mirror://sourceforge/bs2b/plugins/LADSPA%20plugin/" + version "/" name "-" version ".tar.gz")) + (sha256 + (base32 + "1b4aipbj1ba5k99gbc7gmgy14sywyrjd8rpyqj5l905j0mjv8jg2")))) + (build-system gnu-build-system) + (native-inputs `(("pkg-config" ,pkg-config))) + (inputs `(("ladspa" ,ladspa) + ("libbs2b" ,libbs2b))) + (home-page "https://sourceforge.net/projects/bs2b/") + (synopsis "Bauer stereophonic-to-binaural DSP - LADSPA plugin") + (description "The Bauer stereophonic-to-binaural DSP (bs2b) library and +plugins is designed to improve headphone listening of stereo audio records. +Recommended for headphone prolonged listening to disable superstereo fatigue +without essential distortions. This package contains a LADSPA plugin for use +with applications that support them (e.g. PulseAudio).") + (license license:gpl2+))) + (define-public liblo (package (name "liblo") @@ -2292,20 +2320,26 @@ background file post-processing.") (define-public supercollider (package (name "supercollider") - (version "3.10.4") + (version "3.11.0") (source (origin - (method url-fetch) - (uri (string-append - "https://github.com/supercollider/supercollider" - "/releases/download/Version-" version - "/SuperCollider-" version "-Source-linux.tar.bz2")) + (method git-fetch) + (uri (git-reference + (url "https://github.com/supercollider/supercollider.git") + (commit (string-append "Version-" version)) + ;; for nova-simd, nova-tt, hidapi, TLSF, oscpack + (recursive? #t))) + (file-name (git-file-name name version)) (sha256 (base32 - "0x11g3pfw11m6v18qfpfl5w99dbmf73g4z7wvwhrj1a4qv2dn084")))) + "02v911w2kdbg3kfl593lb2ig4sjbfxzv20a0vbcymhfzpvp1x6xp")))) (build-system cmake-build-system) + (outputs + '("out" ;core language + "ide")) ;qt ide (arguments `(#:configure-flags '("-DSYSTEM_BOOST=on" "-DSYSTEM_YAMLCPP=on" - "-DSC_QT=off" + "-DSC_QT=ON" "-DCMAKE_BUILD_TYPE=Release" + "-DFORTIFY=ON" "-DLIBSCSYNTH=ON" "-DSC_EL=off") ;scel is packaged individually as ;emacs-scel #:modules ((guix build utils) @@ -2326,6 +2360,9 @@ background file post-processing.") (lambda (x) (and (eq? (stat:type (stat x)) 'directory) (not (member (basename x) keep-dirs)))))))) + (substitute* "lang/CMakeLists.txt" + (("include\\(\\.\\./external_libraries/link/AbletonLinkConfig\\.cmake\\)") + "find_package(AbletonLink NAMES AbletonLink ableton-link link REQUIRED)")) #t)) ;; Some tests are broken (see: ;; https://github.com/supercollider/supercollider/issues/3555 and @@ -2337,15 +2374,36 @@ background file post-processing.") "") (("perf_counter_test.cpp") "")) - (delete-file "testsuite/server/supernova/server_test.cpp") - (delete-file "testsuite/server/supernova/perf_counter_test.cpp") (substitute* "testsuite/CMakeLists.txt" (("add_subdirectory\\(sclang\\)") "")) (delete-file "testsuite/sclang/CMakeLists.txt") - #t))))) + #t)) + (add-after 'disable-broken-tests 'patch-scclass-dir + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (scclass-dir + (string-append out + "/share/SuperCollider/SCClassLibrary"))) + (substitute* "lang/LangSource/SC_LanguageConfig.cpp" + (((string-append + "SC_Filesystem::instance\\(\\)\\.getDirectory" + "\\(DirName::Resource\\) / CLASS_LIB_DIR_NAME")) + (string-append "Path(\"" scclass-dir "\")"))) + #t))) + (add-before 'install 'install-ide + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (ide (assoc-ref outputs "ide")) + (scide "editors/sc-ide/scide")) + (install-file scide + (string-append ide "/bin")) + (delete-file scide) + #t)))))) (native-inputs - `(("pkg-config" ,pkg-config))) + `(("ableton-link" ,ableton-link) + ("pkg-config" ,pkg-config) + ("qttools" ,qttools))) (inputs `(("jack" ,jack-1) ("libsndfile" ,libsndfile) @@ -2358,7 +2416,14 @@ background file post-processing.") ("icu4c" ,icu4c) ("boost" ,boost) ("boost-sync" ,boost-sync) - ("yaml-cpp" ,yaml-cpp))) + ("yaml-cpp" ,yaml-cpp) + ("qtbase" ,qtbase) + ("qtdeclarative" ,qtdeclarative) + ("qtsvg" ,qtsvg) + ("qtwebchannel" ,qtwebchannel) + ("qtwebsockets" ,qtwebsockets))) + (propagated-inputs ;to get native-search-path + `(("qtwebengine" ,qtwebengine))) (home-page "https://github.com/supercollider/supercollider") (synopsis "Synthesis engine and programming language") (description "SuperCollider is a synthesis engine (@code{scsynth} or @@ -2490,13 +2555,6 @@ tempo and pitch of an audio recording independently of one another.") (base32 "1k962ljpnwyjw9jjiky2372khhri1wqvrj5qsalfpys31xqzw31p")))) (build-system gnu-build-system) - (arguments - `(#:phases - (modify-phases %standard-phases - (add-before 'bootstrap 'noconfigure - (lambda _ - (setenv "NOCONFIGURE" "yes") - #t))))) (inputs `(("jack" ,jack-1) ("alsa-lib" ,alsa-lib))) @@ -2715,14 +2773,14 @@ stretching and pitch scaling of audio. This package contains the library.") (define-public wavpack (package (name "wavpack") - (version "5.2.0") + (version "5.3.0") (source (origin (method url-fetch) (uri (string-append "http://www.wavpack.com/" "wavpack-" version ".tar.xz")) (sha256 (base32 - "1qvpvfx30kvrkw7y1g6r8xj109wszg1z0qmkfm17wf3flb7v3rbp")))) + "01r351ggha9pdfk7p601dlxac4ka1q89lgnb6zqk00zf1fd3fi5l")))) (build-system gnu-build-system) (arguments '(#:configure-flags '("--disable-static"))) @@ -4242,3 +4300,104 @@ between 700 and 3200 bit/s. The main application is low bandwidth HF/VHF digital radio.") (home-page "https://www.rowetel.com/?page_id=452") (license license:lgpl2.1))) + +(define-public ableton-link + (package + (name "ableton-link") + (version "3.0.2") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/Ableton/link.git") + (commit (string-append "Link-" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0262vm0v7hmqjhqx5xikh529p3c065p1yld6ymaiz74yq1dnnjir")) + (modules '((guix build utils))) + (patches + (search-patches "ableton-link-system-libraries-debian.patch")) + (snippet + '(begin + ;; Tests assume that CMake's "build" directory is a + ;; sub-directory of the source tree, so we fix it. + (substitute* "ci/run-tests.py" + (("root_dir,") "root_dir, os.pardir,")) + ;; Unbundle dependencies. + (delete-file-recursively "third_party") + (delete-file-recursively "modules") + #t)))) + (build-system cmake-build-system) + (native-inputs + `(("catch" ,catch-framework) + ("python" ,python) ;for running tests + ("portaudio" ,portaudio) ;for portaudio examples + ("qtbase" ,qtbase) ;for Qt examples + ("qtdeclarative" ,qtdeclarative) + ("qttools" ,qttools))) + (inputs + `(("jack" ,jack-1) ;for JACK examples + ("qtquickcontrols" ,qtquickcontrols))) ;for Qt examples + (propagated-inputs + ;; This is because include/ableton/platforms/asio/AsioWrapper.hpp + ;; contains '#include <asio.hpp>'. + `(("asio" ,asio))) + (arguments + `(#:configure-flags + '("-DLINK_BUILD_QT_EXAMPLES=ON" + "-DLINK_BUILD_JACK=ON") + #:phases + (modify-phases %standard-phases + (replace 'check + (lambda* (#:key inputs #:allow-other-keys) + (let* ((python (string-append (assoc-ref inputs "python") + "/bin/python3")) + (run-tests (string-append "../ableton-link-" + ,version + "-checkout/ci/run-tests.py"))) + (invoke python run-tests "--target" "LinkCoreTest") + (invoke python run-tests "--target" "LinkDiscoveryTest")))) + (add-before 'install 'patch-cmake + (lambda* (#:key inputs #:allow-other-keys) + (let* ((source (string-append "../ableton-link-" + ,version + "-checkout/"))) + (substitute* (string-append source + "cmake_include/AsioStandaloneConfig.cmake") + (((string-append "\\$\\{CMAKE_CURRENT_LIST_DIR\\}/\\.\\./" + "modules/asio-standalone/asio/include")) + (string-append (assoc-ref inputs "asio") + "/include"))) + (substitute* (string-append source "AbletonLinkConfig.cmake") + (("\\$\\{CMAKE_CURRENT_LIST_DIR\\}/include") + "${CMAKE_CURRENT_LIST_DIR}/../../../include") + (("\\$\\{CMAKE_CURRENT_LIST_DIR\\}/include/ableton/Link\\.hpp") + "${CMAKE_CURRENT_LIST_DIR}/../../../include/ableton/Link.hpp")) + #t))) + (replace 'install + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (bin (string-append out "/bin")) + (lib-cmake (string-append out "/lib/cmake/ableton-link")) + (source (string-append "../ableton-link-" ,version "-checkout"))) + (for-each (lambda (test-file) + (delete-file test-file)) + '("bin/LinkDiscoveryTest" "bin/LinkCoreTest")) + (copy-recursively "bin" bin) + (copy-recursively (string-append source "/include/ableton") + (string-append out "/include/ableton")) + (install-file (string-append source "/AbletonLinkConfig.cmake") + lib-cmake) + (install-file (string-append source + "/cmake_include/AsioStandaloneConfig.cmake") + (string-append lib-cmake "/cmake_include")) + #t)))))) + (home-page "https://github.com/Ableton/link") + (synopsis "Synchronize musical beat, tempo, and phase across multiple applications") + (description + "Ableton Link is a C++ library that synchronizes musical beat, tempo, and phase +across multiple applications running on one or more devices. Applications on devices +connected to a local network discover each other automatically and form a musical +session in which each participant can perform independently: anyone can start or stop +while still staying in time.") + (license license:gpl2+))) diff --git a/gnu/packages/autogen.scm b/gnu/packages/autogen.scm index 034db2ee96..968337ad8d 100644 --- a/gnu/packages/autogen.scm +++ b/gnu/packages/autogen.scm @@ -2,6 +2,7 @@ ;;; Copyright © 2013, 2014 Eric Bavier <bavier@member.fsf.org> ;;; Copyright © 2015, 2016 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr> +;;; Copyright © 2020 Marius Bakke <mbakke@fastmail.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -51,6 +52,10 @@ ;; “Something went wrong bootstrapping makefile fragments for ;; automatic dependency tracking. Try re-running configure with […]” (list "--disable-dependency-tracking") + + ;; XXX: Parallel tests may cause an indefinite hang with GNU Make 4.3. + #:parallel-tests? #f + #:phases (modify-phases %standard-phases (add-before 'patch-source-shebangs 'patch-test-scripts diff --git a/gnu/packages/autotools.scm b/gnu/packages/autotools.scm index f569b0e92a..775576ff5d 100644 --- a/gnu/packages/autotools.scm +++ b/gnu/packages/autotools.scm @@ -5,10 +5,12 @@ ;;; Copyright © 2014 Manolis Fragkiskos Ragkousis <manolis837@gmail.com> ;;; Copyright © 2015, 2017, 2018 Mark H Weaver <mhw@netris.org> ;;; Copyright © 2016 David Thompson <davet@gnu.org> -;;; Copyright © 2017 ng0 <ng0@n0.is> +;;; Copyright © 2017 Nikita <nikita@n0.is> ;;; Copyright © 2017, 2019 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2018 Ricardo Wurmus <rekado@elephly.net> +;;; Copyright © 2019 Pierre-Moana Levesque <pierre.moana.levesque@gmail.com> +;;; Copyright © 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org> ;;; ;;; This file is part of GNU Guix. ;;; @@ -54,12 +56,43 @@ (base32 "113nlmidxy9kjr45kg9x3ngar4951mvag1js2a3j8nxcz34wxsv4")))) (build-system gnu-build-system) + (inputs + ;; TODO: remove `if' in the next rebuild cycle. + (if (%current-target-system) + `(("bash" ,bash-minimal) + ("perl" ,perl) + ("m4" ,m4)) + '())) (native-inputs `(("perl" ,perl) ("m4" ,m4))) - ;; XXX: testsuite: 209 and 279 failed. The latter is an impurity. It - ;; should use our own "cpp" instead of "/lib/cpp". - (arguments `(#:tests? #f)) + (arguments + `(;; XXX: testsuite: 209 and 279 failed. The latter is an impurity. It + ;; should use our own "cpp" instead of "/lib/cpp". + #:tests? #f + ,@(if (%current-target-system) + `(#:phases + (modify-phases %standard-phases + (add-after 'install 'patch-non-shebang-references + (lambda* (#:key build inputs outputs #:allow-other-keys) + ;; `patch-shebangs' patches shebangs only, and the Perl + ;; scripts use a re-exec feature that references the + ;; build hosts' perl. Also, BASH and M4 store references + ;; hide in the scripts. + (let ((bash (assoc-ref inputs "bash")) + (m4 (assoc-ref inputs "m4")) + (perl (assoc-ref inputs "perl")) + (out (assoc-ref outputs "out")) + (store-directory (%store-directory))) + (substitute* (find-files (string-append out "/bin")) + (((string-append store-directory "/[^/]*-bash-[^/]*")) + bash) + (((string-append store-directory "/[^/]*-m4-[^/]*")) + m4) + (((string-append store-directory "/[^/]*-perl-[^/]*")) + perl)) + #t))))) + '()))) (home-page "https://www.gnu.org/software/autoconf/") (synopsis "Create source code configuration scripts") (description @@ -249,17 +282,24 @@ output is indexed in many ways to simplify browsing.") (define-public automake (package (name "automake") - (version "1.16.1") + (version "1.16.2") (source (origin (method url-fetch) (uri (string-append "mirror://gnu/automake/automake-" version ".tar.xz")) (sha256 (base32 - "08g979ficj18i1w6w5219bgmns7czr03iadf20mk3lrzl8wbn1ax")) + "1l7dkqbsmbf94ax29jj1jf6a0r6ikc8jybg1p5m0c3ki7pg5ki6c")) (patches (search-patches "automake-skip-amhello-tests.patch")))) (build-system gnu-build-system) + (inputs + ;; TODO: remove `if' in the next rebuild cycle. + (if (%current-target-system) + `(("autoconf" ,autoconf-wrapper) + ("bash" ,bash-minimal) + ("perl" ,perl)) + '())) (native-inputs `(("autoconf" ,autoconf-wrapper) ("perl" ,perl))) @@ -268,7 +308,7 @@ output is indexed in many ways to simplify browsing.") (variable "ACLOCAL_PATH") (files '("share/aclocal"))))) (arguments - '(#:modules ((guix build gnu-build-system) + `(#:modules ((guix build gnu-build-system) (guix build utils) (srfi srfi-1) (srfi srfi-26) @@ -288,6 +328,37 @@ output is indexed in many ways to simplify browsing.") (setenv "CONFIG_SHELL" sh) #t))) + (add-before 'check 'skip-test + (lambda _ + ;; This test requires 'etags' and fails if it's missing. + ;; Skip it. + (substitute* "t/tags-lisp-space.sh" + (("^required.*" all) + (string-append "exit 77\n" all "\n"))) + #t)) + + ,@(if (%current-target-system) + `((add-after 'install 'patch-non-shebang-references + (lambda* (#:key build inputs outputs #:allow-other-keys) + ;; `patch-shebangs' patches shebangs only, and the Perl + ;; scripts use a re-exec feature that references the + ;; build hosts' perl. Also, AUTOCONF and BASH store + ;; references hide in the scripts. + (let ((autoconf (assoc-ref inputs "autoconf")) + (bash (assoc-ref inputs "bash")) + (perl (assoc-ref inputs "perl")) + (out (assoc-ref outputs "out")) + (store-directory (%store-directory))) + (substitute* (find-files (string-append out "/bin")) + (((string-append store-directory "/[^/]*-autoconf-[^/]*")) + autoconf) + (((string-append store-directory "/[^/]*-bash-[^/]*")) + bash) + (((string-append store-directory "/[^/]*-perl-[^/]*")) + perl)) + #t)))) + '()) + ;; Files like `install-sh', `mdate.sh', etc. must use ;; #!/bin/sh, otherwise users could leak erroneous shebangs ;; in the wild. See <http://bugs.gnu.org/14201> for an @@ -324,32 +395,6 @@ intuitive format and then Automake works with Autoconf to produce a robust Makefile, simplifying the entire process for the developer.") (license gpl2+))) ; some files are under GPLv3+ -(define-public automake-1.16.2 - (package - (inherit automake) - (version "1.16.2") - (source (origin - (method url-fetch) - (uri (string-append "mirror://gnu/automake/automake-" - version ".tar.xz")) - (sha256 - (base32 - "1l7dkqbsmbf94ax29jj1jf6a0r6ikc8jybg1p5m0c3ki7pg5ki6c")) - (patches - (search-patches "automake-skip-amhello-tests.patch")))) - (arguments - (substitute-keyword-arguments (package-arguments automake) - ((#:phases phases '%standard-phases) - `(modify-phases ,phases - (add-before 'check 'skip-test - (lambda _ - ;; This test requires 'etags' and fails if it's missing. - ;; Skip it. - (substitute* "t/tags-lisp-space.sh" - (("^required.*" all) - (string-append "exit 77\n" all "\n"))) - #t)))))))) - (define-public libtool (package (name "libtool") @@ -379,21 +424,22 @@ Makefile, simplifying the entire process for the developer.") ;; XXX: There are test failures on mips64el-linux starting from 2.4.4: ;; <http://hydra.gnu.org/build/181662>. - #:tests? ,(not (string-prefix? "mips64" - (or (%current-target-system) + ;; Also, do not run tests when cross compiling + #:tests? ,(not (or (%current-target-system) + (string-prefix? "mips64" (%current-system)))) #:phases (modify-phases %standard-phases (add-before 'check 'pre-check - (lambda* (#:key inputs #:allow-other-keys) + (lambda* (#:key inputs native-inputs #:allow-other-keys) ;; Run the test suite in parallel, if possible. (setenv "TESTSUITEFLAGS" (string-append "-j" (number->string (parallel-job-count)))) ;; Patch references to /bin/sh. - (let ((bash (assoc-ref inputs "bash"))) + (let ((bash (assoc-ref (or native-inputs inputs) "bash"))) (substitute* "tests/testsuite" (("/bin/sh") (string-append bash "/bin/sh"))) diff --git a/gnu/packages/aux-files/pack-audit.c b/gnu/packages/aux-files/pack-audit.c new file mode 100644 index 0000000000..374787e8b9 --- /dev/null +++ b/gnu/packages/aux-files/pack-audit.c @@ -0,0 +1,85 @@ +/* GNU Guix --- Functional package management for GNU + Copyright (C) 2020 Ludovic Courtès <ludo@gnu.org> + + This file is part of GNU Guix. + + GNU Guix is free software; you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 3 of the License, or (at + your option) any later version. + + GNU Guix is distributed in the hope that it will be useful, but + WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with GNU Guix. If not, see <http://www.gnu.org/licenses/>. */ + +/* This file implements part of the GNU ld.so audit interface. It is used by + the "fakechroot" engine of the 'guix pack -RR' wrappers to make sure the + loader looks for shared objects under the "fake" root directory. */ + +#define _GNU_SOURCE 1 + +#include <link.h> + +#include <error.h> +#include <stdlib.h> +#include <string.h> +#include <assert.h> + +/* The pseudo root directory and store that we are relocating to. */ +static const char *root_directory; +static char *store; + +/* The original store, "/gnu/store" by default. */ +static const char original_store[] = "@STORE_DIRECTORY@"; + +/* Like 'malloc', but abort if 'malloc' returns NULL. */ +static void * +xmalloc (size_t size) +{ + void *result = malloc (size); + assert (result != NULL); + return result; +} + +unsigned int +la_version (unsigned int v) +{ + if (v != LAV_CURRENT) + error (1, 0, "cannot handle interface version %u", v); + + root_directory = getenv ("FAKECHROOT_BASE"); + if (root_directory == NULL) + error (1, 0, "'FAKECHROOT_BASE' is not set"); + + store = xmalloc (strlen (root_directory) + sizeof original_store); + strcpy (store, root_directory); + strcat (store, original_store); + + return v; +} + +/* Return NAME, a shared object file name, relocated under STORE. This + function is called by the loader whenever it looks for a shared object. */ +char * +la_objsearch (const char *name, uintptr_t *cookie, unsigned int flag) +{ + char *result; + + if (strncmp (name, original_store, + sizeof original_store - 1) == 0) + { + size_t len = strlen (name) - sizeof original_store + + strlen (store) + 1; + result = xmalloc (len); + strcpy (result, store); + strcat (result, name + sizeof original_store - 1); + } + else + result = strdup (name); + + return result; +} diff --git a/gnu/packages/aux-files/run-in-namespace.c b/gnu/packages/aux-files/run-in-namespace.c index 160f7da1c8..5a6b932b87 100644 --- a/gnu/packages/aux-files/run-in-namespace.c +++ b/gnu/packages/aux-files/run-in-namespace.c @@ -42,13 +42,30 @@ #include <dirent.h> #include <sys/syscall.h> +/* Whether we're building the ld.so/libfakechroot wrapper. */ +#define HAVE_EXEC_WITH_LOADER \ + (defined PROGRAM_INTERPRETER) && (defined LOADER_AUDIT_MODULE) \ + && (defined FAKECHROOT_LIBRARY) + +/* The original store, "/gnu/store" by default. */ +static const char original_store[] = "@STORE_DIRECTORY@"; + + +/* Like 'malloc', but abort if 'malloc' returns NULL. */ +static void * +xmalloc (size_t size) +{ + void *result = malloc (size); + assert (result != NULL); + return result; +} + /* Concatenate DIRECTORY, a slash, and FILE. Return the result, which the caller must eventually free. */ static char * concat (const char *directory, const char *file) { - char *result = malloc (strlen (directory) + 2 + strlen (file)); - assert (result != NULL); + char *result = xmalloc (strlen (directory) + 2 + strlen (file)); strcpy (result, directory); strcat (result, "/"); @@ -105,9 +122,42 @@ rm_rf (const char *directory) assert_perror (errno); } -/* Bind mount all the top-level entries in SOURCE to TARGET. */ +/* Make TARGET a bind-mount of SOURCE. Take into account ENTRY's type, which + corresponds to SOURCE. */ +static int +bind_mount (const char *source, const struct dirent *entry, + const char *target) +{ + if (entry->d_type == DT_DIR) + { + int err = mkdir (target, 0700); + if (err != 0) + return err; + } + else + close (open (target, O_WRONLY | O_CREAT)); + + return mount (source, target, "none", + MS_BIND | MS_REC | MS_RDONLY, NULL); +} + +#if HAVE_EXEC_WITH_LOADER + +/* Make TARGET a symlink to SOURCE. */ +static int +make_symlink (const char *source, const struct dirent *entry, + const char *target) +{ + return symlink (source, target); +} + +#endif + +/* Mirror with FIRMLINK all the top-level entries in SOURCE to TARGET. */ static void -bind_mount (const char *source, const char *target) +mirror_directory (const char *source, const char *target, + int (* firmlink) (const char *, const struct dirent *, + const char *)) { DIR *stream = opendir (source); @@ -142,17 +192,7 @@ bind_mount (const char *source, const char *target) else { /* Create the mount point. */ - if (entry->d_type == DT_DIR) - { - int err = mkdir (new_entry, 0700); - if (err != 0) - assert_perror (errno); - } - else - close (open (new_entry, O_WRONLY | O_CREAT)); - - int err = mount (abs_source, new_entry, "none", - MS_BIND | MS_REC | MS_RDONLY, NULL); + int err = firmlink (abs_source, entry, new_entry); /* It used to be that only directories could be bind-mounted. Thus, keep going if we fail to bind-mount a non-directory entry. @@ -211,6 +251,83 @@ disallow_setgroups (pid_t pid) close (fd); } +/* Run the wrapper program in a separate mount user namespace. Return only + upon failure. */ +static void +exec_in_user_namespace (const char *store, int argc, char *argv[]) +{ + /* Spawn @WRAPPED_PROGRAM@ in a separate namespace where STORE is + bind-mounted in the right place. */ + int err; + char *new_root = mkdtemp (strdup ("/tmp/guix-exec-XXXXXX")); + char *new_store = concat (new_root, original_store); + char *cwd = get_current_dir_name (); + + /* Create a child with separate namespaces and set up bind-mounts from + there. That way, bind-mounts automatically disappear when the child + exits, which simplifies cleanup for the parent. Note: clone is more + convenient than fork + unshare since the parent can directly write + the child uid_map/gid_map files. */ + pid_t child = syscall (SYS_clone, SIGCHLD | CLONE_NEWNS | CLONE_NEWUSER, + NULL, NULL, NULL); + switch (child) + { + case 0: + /* Note: Due to <https://bugzilla.kernel.org/show_bug.cgi?id=183461> + we cannot make NEW_ROOT a tmpfs (which would have saved the need + for 'rm_rf'.) */ + mirror_directory ("/", new_root, bind_mount); + mkdir_p (new_store); + err = mount (store, new_store, "none", MS_BIND | MS_REC | MS_RDONLY, + NULL); + if (err < 0) + assert_perror (errno); + + chdir (new_root); + err = chroot (new_root); + if (err < 0) + assert_perror (errno); + + /* Change back to where we were before chroot'ing. */ + chdir (cwd); + + int err = execv ("@WRAPPED_PROGRAM@", argv); + if (err < 0) + assert_perror (errno); + break; + + case -1: + /* Failure: user namespaces not supported. */ + fprintf (stderr, "%s: error: 'clone' failed: %m\n", argv[0]); + rm_rf (new_root); + break; + + default: + { + /* Map the current user/group ID in the child's namespace (the + default is to get the "overflow UID", i.e., the UID of + "nobody"). We must first disallow 'setgroups' for that + process. */ + disallow_setgroups (child); + write_id_map (child, "uid_map", getuid ()); + write_id_map (child, "gid_map", getgid ()); + + int status; + waitpid (child, &status, 0); + chdir ("/"); /* avoid EBUSY */ + rm_rf (new_root); + free (new_root); + + if (WIFEXITED (status)) + exit (WEXITSTATUS (status)); + else + /* Abnormal termination cannot really be reproduced, so exit + with 255. */ + exit (255); + } + } +} + #ifdef PROOT_PROGRAM @@ -221,12 +338,12 @@ exec_with_proot (const char *store, int argc, char *argv[]) { int proot_specific_argc = 4; int proot_argc = argc + proot_specific_argc; - char *proot_argv[proot_argc], *proot; - char bind_spec[strlen (store) + 1 + sizeof "@STORE_DIRECTORY@"]; + char *proot_argv[proot_argc + 1], *proot; + char bind_spec[strlen (store) + 1 + sizeof original_store]; strcpy (bind_spec, store); strcat (bind_spec, ":"); - strcat (bind_spec, "@STORE_DIRECTORY@"); + strcat (bind_spec, original_store); proot = concat (store, PROOT_PROGRAM); @@ -252,6 +369,173 @@ exec_with_proot (const char *store, int argc, char *argv[]) #endif +#if HAVE_EXEC_WITH_LOADER + +/* Execute the wrapped program by invoking the loader (ld.so) directly, + passing it the audit module and preloading libfakechroot.so. */ +static void +exec_with_loader (const char *store, int argc, char *argv[]) +{ + char *loader = concat (store, + PROGRAM_INTERPRETER + sizeof original_store); + size_t loader_specific_argc = 6; + size_t loader_argc = argc + loader_specific_argc; + char *loader_argv[loader_argc + 1]; + loader_argv[0] = argv[0]; + loader_argv[1] = "--audit"; + loader_argv[2] = concat (store, + LOADER_AUDIT_MODULE + sizeof original_store); + loader_argv[3] = "--preload"; + loader_argv[4] = concat (store, + FAKECHROOT_LIBRARY + sizeof original_store); + loader_argv[5] = concat (store, + "@WRAPPED_PROGRAM@" + sizeof original_store); + + for (size_t i = 0; i < argc; i++) + loader_argv[i + loader_specific_argc] = argv[i + 1]; + + loader_argv[loader_argc] = NULL; + + /* Set up the root directory. */ + int err; + char *new_root = mkdtemp (strdup ("/tmp/guix-exec-XXXXXX")); + mirror_directory ("/", new_root, make_symlink); + + char *new_store = concat (new_root, original_store); + char *new_store_parent = dirname (strdup (new_store)); + mkdir_p (new_store_parent); + symlink (store, new_store); + +#ifdef GCONV_DIRECTORY + /* Tell libc where to find its gconv modules. This is necessary because + gconv uses non-interposable 'open' calls. */ + char *gconv_path = concat (store, + GCONV_DIRECTORY + sizeof original_store); + setenv ("GCONV_PATH", gconv_path, 1); + free (gconv_path); +#endif + + setenv ("FAKECHROOT_BASE", new_root, 1); + + pid_t child = fork (); + switch (child) + { + case 0: + err = execv (loader, loader_argv); + if (err < 0) + assert_perror (errno); + exit (EXIT_FAILURE); + break; + + case -1: + assert_perror (errno); + exit (EXIT_FAILURE); + break; + + default: + { + int status; + waitpid (child, &status, 0); + chdir ("/"); /* avoid EBUSY */ + rm_rf (new_root); + free (new_root); + + close (2); /* flushing stderr should be silent */ + + if (WIFEXITED (status)) + exit (WEXITSTATUS (status)); + else + /* Abnormal termination cannot really be reproduced, so exit + with 255. */ + exit (255); + } + } +} + +#endif + + +/* Execution engines. */ + +struct engine +{ + const char *name; + void (* exec) (const char *, int, char **); +}; + +static void +buffer_stderr (void) +{ + static char stderr_buffer[4096]; + setvbuf (stderr, stderr_buffer, _IOFBF, sizeof stderr_buffer); +} + +/* The default engine: choose a robust method. */ +static void +exec_default (const char *store, int argc, char *argv[]) +{ + /* Buffer stderr so that nothing's displayed if 'exec_in_user_namespace' + fails but 'exec_with_proot' works. */ + buffer_stderr (); + + exec_in_user_namespace (store, argc, argv); +#ifdef PROOT_PROGRAM + exec_with_proot (store, argc, argv); +#endif +} + +/* The "performance" engine: choose performance over robustness. */ +static void +exec_performance (const char *store, int argc, char *argv[]) +{ + buffer_stderr (); + + exec_in_user_namespace (store, argc, argv); +#if HAVE_EXEC_WITH_LOADER + exec_with_loader (store, argc, argv); +#endif +} + +/* List of supported engines. */ +static const struct engine engines[] = + { + { "default", exec_default }, + { "performance", exec_performance }, + { "userns", exec_in_user_namespace }, +#ifdef PROOT_PROGRAM + { "proot", exec_with_proot }, +#endif +#if HAVE_EXEC_WITH_LOADER + { "fakechroot", exec_with_loader }, +#endif + { NULL, NULL } + }; + +/* Return the "execution engine" to use. */ +static const struct engine * +execution_engine (void) +{ + const char *str = getenv ("GUIX_EXECUTION_ENGINE"); + + if (str == NULL) + str = "default"; + + try: + for (const struct engine *engine = engines; + engine->name != NULL; + engine++) + { + if (strcmp (engine->name, str) == 0) + return engine; + } + + fprintf (stderr, "%s: unsupported Guix execution engine; ignoring\n", + str); + str = "default"; + goto try; +} + + int main (int argc, char *argv[]) { @@ -263,8 +547,7 @@ main (int argc, char *argv[]) /* SELF is something like "/home/ludo/.local/gnu/store/…-foo/bin/ls" and we want to extract "/home/ludo/.local/gnu/store". */ size_t index = strlen (self) - - strlen ("@WRAPPED_PROGRAM@") - + strlen ("@STORE_DIRECTORY@"); + - strlen ("@WRAPPED_PROGRAM@") + strlen (original_store); char *store = strdup (self); store[index] = '\0'; @@ -274,84 +557,21 @@ main (int argc, char *argv[]) @WRAPPED_PROGRAM@ right away. This is not just an optimization: it's needed when running one of these wrappers from within an unshare'd namespace, because 'unshare' fails with EPERM in that context. */ - if (strcmp (store, "@STORE_DIRECTORY@") != 0 + if (strcmp (store, original_store) != 0 && lstat ("@WRAPPED_PROGRAM@", &statbuf) != 0) { - /* Spawn @WRAPPED_PROGRAM@ in a separate namespace where STORE is - bind-mounted in the right place. */ - int err; - char *new_root = mkdtemp (strdup ("/tmp/guix-exec-XXXXXX")); - char *new_store = concat (new_root, "@STORE_DIRECTORY@"); - char *cwd = get_current_dir_name (); - - /* Create a child with separate namespaces and set up bind-mounts from - there. That way, bind-mounts automatically disappear when the child - exits, which simplifies cleanup for the parent. Note: clone is more - convenient than fork + unshare since the parent can directly write - the child uid_map/gid_map files. */ - pid_t child = syscall (SYS_clone, SIGCHLD | CLONE_NEWNS | CLONE_NEWUSER, - NULL, NULL, NULL); - switch (child) - { - case 0: - /* Note: Due to <https://bugzilla.kernel.org/show_bug.cgi?id=183461> - we cannot make NEW_ROOT a tmpfs (which would have saved the need - for 'rm_rf'.) */ - bind_mount ("/", new_root); - mkdir_p (new_store); - err = mount (store, new_store, "none", MS_BIND | MS_REC | MS_RDONLY, - NULL); - if (err < 0) - assert_perror (errno); + const struct engine *engine = execution_engine (); + engine->exec (store, argc, argv); - chdir (new_root); - err = chroot (new_root); - if (err < 0) - assert_perror (errno); - - /* Change back to where we were before chroot'ing. */ - chdir (cwd); - break; - - case -1: - rm_rf (new_root); -#ifdef PROOT_PROGRAM - exec_with_proot (store, argc, argv); -#else - fprintf (stderr, "%s: error: 'clone' failed: %m\n", argv[0]); - fprintf (stderr, "\ + /* If we reach this point, that's because ENGINE failed to do the + job. */ + fprintf (stderr, "\ This may be because \"user namespaces\" are not supported on this system.\n\ Consequently, we cannot run '@WRAPPED_PROGRAM@',\n\ unless you move it to the '@STORE_DIRECTORY@' directory.\n\ \n\ Please refer to the 'guix pack' documentation for more information.\n"); -#endif - return EXIT_FAILURE; - - default: - { - /* Map the current user/group ID in the child's namespace (the - default is to get the "overflow UID", i.e., the UID of - "nobody"). We must first disallow 'setgroups' for that - process. */ - disallow_setgroups (child); - write_id_map (child, "uid_map", getuid ()); - write_id_map (child, "gid_map", getgid ()); - - int status; - waitpid (child, &status, 0); - chdir ("/"); /* avoid EBUSY */ - rm_rf (new_root); - free (new_root); - - if (WIFEXITED (status)) - exit (WEXITSTATUS (status)); - else - /* Abnormal termination cannot really be reproduced, so exit - with 255. */ - exit (255); - } - } + return EXIT_FAILURE; } /* The executable is available under @STORE_DIRECTORY@, so we can now diff --git a/gnu/packages/avahi.scm b/gnu/packages/avahi.scm index ba609cf12e..602f9d7997 100644 --- a/gnu/packages/avahi.scm +++ b/gnu/packages/avahi.scm @@ -2,6 +2,7 @@ ;;; Copyright © 2013, 2014, 2015, 2017, 2018 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2014 Mark H Weaver <mhw@netris.org> ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr> +;;; Copyright © 2020 Marius Bakke <mbakke@fastmail.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -25,17 +26,18 @@ #:use-module (guix build-system gnu) #:use-module (gnu packages) #:use-module (gnu packages dbm) + #:use-module (gnu packages gettext) + #:use-module (gnu packages glib) #:use-module (gnu packages libdaemon) + #:use-module (gnu packages libevent) #:use-module (gnu packages linux) #:use-module (gnu packages pkg-config) - #:use-module (gnu packages glib) #:use-module (gnu packages xml)) (define-public avahi (package (name "avahi") - (version "0.7") - (replacement avahi/fixed) + (version "0.8") (home-page "https://avahi.org") (source (origin (method url-fetch) @@ -43,29 +45,40 @@ version ".tar.gz")) (sha256 (base32 - "0128n7jlshw4bpx0vg8lwj8qwdisjxi7mvniwfafgnkzzrfrpaap")) - (patches (search-patches "avahi-localstatedir.patch")))) + "1npdixwxxn3s9q1f365x9n9rc5xgfz39hxf23faqvlrklgbhj0q6")) + (patches (search-patches "avahi-localstatedir.patch")) + (modules '((guix build utils))) + (snippet + '(begin + ;; Fix version constraint in the avahi-libevent pkg-config file. + ;; This can be removed for Avahi versions > 0.8. + (substitute* "avahi-libevent.pc.in" + (("libevent-2\\.1\\.5") + "libevent >= 2.1.5")) + #t)))) (build-system gnu-build-system) (arguments '(#:configure-flags '("--with-distro=none" + "--disable-static" "--localstatedir=/var" ; for the DBus socket "--disable-python" "--disable-mono" "--disable-doxygen-doc" "--disable-xmltoman" "--enable-tests" - "--disable-qt3" "--disable-qt4" + "--disable-qt4" "--disable-qt5" "--disable-gtk" "--disable-gtk3" "--enable-compat-libdns_sd"))) (inputs - `(("expat" ,expat) - ("glib" ,glib) - ("dbus" ,dbus) + `(("dbus" ,dbus) + ("expat" ,expat) ("gdbm" ,gdbm) + ("glib" ,glib) ("libcap" ,libcap) ;to enable chroot support in avahi-daemon - ("libdaemon" ,libdaemon))) + ("libdaemon" ,libdaemon) + ("libevent" ,libevent))) (native-inputs - `(("intltool" ,intltool) + `(("gettext" ,gettext-minimal) ("glib" ,glib "bin") ("pkg-config" ,pkg-config))) (synopsis "Implementation of mDNS/DNS-SD protocols") @@ -75,17 +88,6 @@ network. It is an implementation of the mDNS (for \"Multicast DNS\") and DNS-SD (for \"DNS-Based Service Discovery\") protocols.") (license lgpl2.1+))) -(define avahi/fixed - (package - (inherit avahi) - (source (origin - (inherit (package-source avahi)) - (patches - (append (search-patches "avahi-CVE-2018-1000845.patch") - (origin-patches (package-source avahi)))))) - ;; Hide a duplicate of the CVE fixed above. - (properties `((lint-hidden-cve . ("CVE-2017-6519")))))) - (define-public nss-mdns (package (name "nss-mdns") diff --git a/gnu/packages/avr.scm b/gnu/packages/avr.scm index 608e487b93..f8884bb6cb 100644 --- a/gnu/packages/avr.scm +++ b/gnu/packages/avr.scm @@ -4,6 +4,7 @@ ;;; Copyright © 2016 David Thompson <davet@gnu.org> ;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr> +;;; Copyright © 2020 Marius Bakke <mbakke@fastmail.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -49,6 +50,21 @@ (substitute-keyword-arguments (package-arguments xgcc) ((#:phases phases) `(modify-phases ,phases + (add-after 'set-paths 'augment-CPLUS_INCLUDE_PATH + (lambda* (#:key inputs #:allow-other-keys) + (let ((gcc (assoc-ref inputs "gcc"))) + ;; Remove the default compiler from CPLUS_INCLUDE_PATH to + ;; prevent header conflict with the GCC from native-inputs. + (setenv "CPLUS_INCLUDE_PATH" + (string-join + (delete (string-append gcc "/include/c++") + (string-split (getenv "CPLUS_INCLUDE_PATH") + #\:)) + ":")) + (format #t + "environment variable `CPLUS_INCLUDE_PATH' changed to ~a~%" + (getenv "CPLUS_INCLUDE_PATH")) + #t))) ;; Without a working multilib build, the resulting GCC lacks ;; support for nearly every AVR chip. (add-after 'unpack 'fix-genmultilib @@ -78,7 +94,7 @@ (variable "CROSS_LIBRARY_PATH") (files '("avr/lib"))))) (native-inputs - `(("gcc" ,gcc-5) + `(("gcc@5" ,gcc-5) ,@(package-native-inputs xgcc)))))) (define-public avr-gcc-5 diff --git a/gnu/packages/backup.scm b/gnu/packages/backup.scm index d80359f8f1..6a5080bcf8 100644 --- a/gnu/packages/backup.scm +++ b/gnu/packages/backup.scm @@ -11,9 +11,11 @@ ;;; Copyright © 2017 Rutger Helling <rhelling@mykolab.com> ;;; Copyright © 2018 Mark H Weaver <mhw@netris.org> ;;; Copyright © 2018 Oleg Pykhalov <go.wigust@gmail.com> -;;; Copyright © 2018, 2019 Ricardo Wurmus <rekado@elephly.net> +;;; Copyright © 2018, 2019, 2020 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2019 Alex Vong <alexvong1995@gmail.com> ;;; Copyright © 2019 Marius Bakke <mbakke@fastmail.com> +;;; Copyright © 2019 Mathieu Othacehe <m.othacehe@gmail.com> +;;; Copyright © 2020 Nicolas Goaziou <mail@nicolasgoaziou.fr> ;;; ;;; This file is part of GNU Guix. ;;; @@ -36,6 +38,7 @@ #:use-module (guix git-download) #:use-module (guix download) #:use-module (guix utils) + #:use-module (guix build-system cmake) #:use-module (guix build-system gnu) #:use-module (guix build-system go) #:use-module (guix build-system python) @@ -63,6 +66,7 @@ #:use-module (gnu packages pcre) #:use-module (gnu packages perl) #:use-module (gnu packages pkg-config) + #:use-module (gnu packages protobuf) #:use-module (gnu packages python) #:use-module (gnu packages python-crypto) #:use-module (gnu packages python-web) @@ -200,18 +204,18 @@ backups (called chunks) to allow easy burning to CD/DVD.") (define-public libarchive (package (name "libarchive") - (version "3.4.0") + (version "3.4.2") (source (origin (method url-fetch) (uri (list (string-append "https://libarchive.org/downloads/libarchive-" - version ".tar.gz") + version ".tar.xz") (string-append "https://github.com/libarchive/libarchive" "/releases/download/v" version "/libarchive-" - version ".tar.gz"))) + version ".tar.xz"))) (sha256 (base32 - "0pl25mmz1b1cnwf35kxmygyy9g7z7hslxbx329a9yx8csh7dahw6")))) + "18dd01ahs2hv74xm7axjc3yhq839p0x0s4vssvlmm8fknja09qfq")))) (build-system gnu-build-system) (inputs `(("bzip2" ,bzip2) @@ -231,24 +235,34 @@ backups (called chunks) to allow easy burning to CD/DVD.") (("/bin/pwd") (which "pwd"))) #t)) (replace 'check - (lambda _ - ;; XXX: The test_owner_parse, test_read_disk, and - ;; test_write_disk_lookup tests expect user 'root' to exist, but - ;; the chroot's /etc/passwd doesn't have it. Turn off those tests. - ;; - ;; XXX: Adjust test that fails with zstd 1.4.1 because the default - ;; options compresses two bytes better than this test expects. - ;; https://github.com/libarchive/libarchive/issues/1226 - (substitute* "libarchive/test/test_write_filter_zstd.c" - (("compression-level\", \"6\"") - "compression-level\", \"7\"")) - - ;; The tests allow one to disable tests matching a globbing pattern. - (invoke "make" "libarchive_test" "bsdcpio_test" "bsdtar_test") - ;; XXX: This glob disables too much. - (invoke "./libarchive_test" "^test_*_disk*") - (invoke "./bsdcpio_test" "^test_owner_parse") - (invoke "./bsdtar_test"))) + (lambda* (#:key (tests? #t) #:allow-other-keys) + (if tests? + ;; XXX: The test_owner_parse, test_read_disk, and + ;; test_write_disk_lookup tests expect user 'root' to + ;; exist, but the chroot's /etc/passwd doesn't have + ;; it. Turn off those tests. + ;; + ;; XXX: Adjust test that fails with zstd 1.4.1 + ;; because the default options compresses two bytes + ;; better than this test expects. + ;; https://github.com/libarchive/libarchive/issues/1226 + (begin + (substitute* "libarchive/test/test_write_filter_zstd.c" + (("compression-level\", \"6\"") + "compression-level\", \"7\"")) + + ;; The tests allow one to disable tests matching a globbing pattern. + (invoke "make" + "libarchive_test" + "bsdcpio_test" + "bsdtar_test") + + ;; XXX: This glob disables too much. + (invoke "./libarchive_test" "^test_*_disk*") + (invoke "./bsdcpio_test" "^test_owner_parse") + (invoke "./bsdtar_test")) + ;; Tests may be disabled if cross-compiling. + (format #t "Test suite not run.~%")))) (add-after 'install 'add--L-in-libarchive-pc (lambda* (#:key inputs outputs #:allow-other-keys) (let* ((out (assoc-ref outputs "out")) @@ -976,6 +990,42 @@ precious backup space. @end itemize") (license license:bsd-2))) +(define-public zbackup + (package + (name "zbackup") + (version "1.4.4") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/zbackup/zbackup.git") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 "14l1kyxg7pccpax3d6qcpmdycb70kn3fxp1a59w64hqy2493hngl")))) + (build-system cmake-build-system) + (arguments + `(#:tests? #f)) ;no test + (inputs + `(("lzo" ,lzo) + ("libressl" ,libressl) + ("protobuf" ,protobuf) + ("xz" ,xz) + ("zlib" ,zlib))) + (home-page "http://zbackup.org") + (synopsis "Versatile deduplicating backup tool") + (description + "ZBackup is a globally-deduplicating backup tool, based on the +ideas found in Rsync. Feed a large @file{.tar} into it, and it will +store duplicate regions of it only once, then compress and optionally +encrypt the result. Feed another @file{.tar} file, and it will also +re-use any data found in any previous backups. This way only new +changes are stored, and as long as the files are not very different, +the amount of storage required is very low. Any of the backup files +stored previously can be read back in full at any time. The program +is format-agnostic, so you can feed virtually any files to it.") + (license license:gpl2+))) + (define-public burp (package (name "burp") diff --git a/gnu/packages/base.scm b/gnu/packages/base.scm index 715c4547ad..c66ea5a187 100644 --- a/gnu/packages/base.scm +++ b/gnu/packages/base.scm @@ -1,16 +1,16 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2014, 2019 Andreas Enge <andreas@enge.fr> ;;; Copyright © 2012 Nikita Karetnikov <nikita@karetnikov.org> ;;; Copyright © 2014, 2015, 2016, 2018 Mark H Weaver <mhw@netris.org> ;;; Copyright © 2014 Alex Kost <alezost@gmail.com> ;;; Copyright © 2014, 2015 Manolis Fragkiskos Ragkousis <manolis837@gmail.com> -;;; Copyright © 2016, 2017, 2019 Efraim Flashner <efraim@flashner.co.il> -;;; Copyright © 2016 Jan Nieuwenhuizen <janneke@gnu.org> +;;; Copyright © 2016, 2017, 2019, 2020 Efraim Flashner <efraim@flashner.co.il> +;;; Copyright © 2016, 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org> ;;; Copyright © 2016, 2018 Alex Vong <alexvong1995@gmail.com> ;;; Copyright © 2017 Rene Saavedra <rennes@openmailbox.org> -;;; Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com> -;;; Copyright © 2017, 2018 Marius Bakke <mbakke@fastmail.com> +;;; Copyright © 2017, 2020 Mathieu Othacehe <m.othacehe@gmail.com> +;;; Copyright © 2017, 2018, 2020 Marius Bakke <mbakke@fastmail.com> ;;; Copyright © 2017 Eric Bavier <bavier@member.fsf.org> ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2018, 2019 Ricardo Wurmus <rekado@elephly.net> @@ -93,14 +93,14 @@ command-line arguments, multiple languages, and so on.") (define-public grep (package (name "grep") - (version "3.3") + (version "3.4") (source (origin (method url-fetch) (uri (string-append "mirror://gnu/grep/grep-" version ".tar.xz")) (sha256 (base32 - "055mqp6vrd0brkygmygb2673qwz409a7kyp1mzbfy6cn94f58q5r")) + "1yy33kiwrxrwj2nxa4fg15bvmwyghqbs8qwkdvy5phm784f7brjq")) (patches (search-patches "grep-timing-sensitive-test.patch")))) (build-system gnu-build-system) (native-inputs `(("perl" ,perl))) ;some of the tests require it @@ -134,14 +134,14 @@ including, for example, recursive directory searching.") (define-public sed (package (name "sed") - (version "4.7") + (version "4.8") (source (origin (method url-fetch) (uri (string-append "mirror://gnu/sed/sed-" version - ".tar.xz")) + ".tar.gz")) (sha256 (base32 - "0smxcx66vx29djzb542nxcynl7qnzxqa5032ibazi7x2s267d198")))) + "0alqagh0nliymz23kfjg6g9w3cr086k0sfni56gi8fhzqwa3xksk")))) (build-system gnu-build-system) (synopsis "Stream editor") (native-inputs @@ -171,7 +171,22 @@ implementation offers several extensions over the standard utility.") (build-system gnu-build-system) ;; Note: test suite requires ~1GiB of disk space. (arguments - `(#:phases (modify-phases %standard-phases + `(,@(if (hurd-target?) + '(#:make-flags + (list (string-append + "TESTSUITEFLAGS= -k '" + "!sparse" + ",!renamed dirs in incrementals" + ",!--exclude-tag option in incremental pass" + ",!incremental dumps with -C" + ",!incremental dumps of nested directories" + ",!incremental restores with -C" + ",!concatenated incremental archives (renames)" + ",!renamed directory containing subdirectories" + ",!renamed subdirectories" + "'"))) + '()) + #:phases (modify-phases %standard-phases (add-before 'build 'set-shell-file-name (lambda* (#:key inputs #:allow-other-keys) ;; Do not use "/bin/sh" to run programs. @@ -254,40 +269,29 @@ interactive means to merge two files.") (define-public findutils (package (name "findutils") - (version "4.6.0") + (version "4.7.0") (source (origin (method url-fetch) (uri (string-append "mirror://gnu/findutils/findutils-" - version ".tar.gz")) + version ".tar.xz")) (sha256 (base32 - "178nn4dl7wbcw499czikirnkniwnx36argdnqgz4ik9i6zvwkm6y")) - (patches (search-patches - "findutils-gnulib-libio.patch" - "findutils-localstatedir.patch" - "findutils-makedev.patch" - "findutils-test-xargs.patch")) - (modules '((guix build utils))) - (snippet - '(begin - ;; The gnulib test-lock test is prone to writer starvation - ;; with our glibc@2.25, which prefers readers, so disable it. - ;; The gnulib commit b20e8afb0b2 should fix this once - ;; incorporated here. - (substitute* "tests/Makefile.in" - (("test-lock\\$\\(EXEEXT\\) ") "")) - #t)))) + "16kqz9yz98dasmj70jwf5py7jk558w96w0vgp3zf9xsqk3gzpzn5")) + (patches (search-patches "findutils-localstatedir.patch" + "findutils-test-rwlock-threads.patch")))) (build-system gnu-build-system) (arguments `(#:configure-flags (list ;; Tell 'updatedb' to write to /var. - "--localstatedir=/var" - - ;; Work around cross-compilation failure. See - ;; <http://savannah.gnu.org/bugs/?27299#comment1>. - ,@(if (%current-target-system) - '("gl_cv_func_wcwidth_works=yes") - '())))) + "--localstatedir=/var") + #:phases (modify-phases %standard-phases + (add-before 'check 'adjust-test-shebangs + (lambda _ + (substitute* '("tests/xargs/verbose-quote.sh" + "tests/find/exec-plus-last-file.sh") + (("#!/bin/sh") + (string-append "#!" (which "sh")))) + #t))))) (synopsis "Operating on files matching given criteria") (description "Findutils supplies the basic file directory searching utilities of the @@ -302,23 +306,26 @@ used to apply commands with arbitrarily long arguments.") (define-public coreutils (package (name "coreutils") - (version "8.31") + (version "8.32") (source (origin (method url-fetch) (uri (string-append "mirror://gnu/coreutils/coreutils-" version ".tar.xz")) (sha256 (base32 - "1zg9m79x1i2nifj4kb0waf9x3i5h6ydkypkjnbsb9rnwis8rqypz")))) + "1yjcrh5hw70c0yn8zw55pd6j51dj90anpq8mmg649ps9g3gdhn24")) + (patches (search-patches "coreutils-ls.patch")))) (build-system gnu-build-system) (inputs `(("acl" ,acl) ; TODO: add SELinux ("gmp" ,gmp) ;bignums in 'expr', yay! - ;; Drop the dependency on libcap when cross-compiling since it's - ;; not quite cross-compilable. - ,@(if (%current-target-system) - '() - `(("libcap" ,libcap))))) ;capability support is 'ls', etc. + ;; Do not use libcap when cross-compiling since it's not quite + ;; cross-compilable; and use it only for supported systems. + ,@(if (and (not (%current-target-system)) + (member (%current-system) + (package-supported-systems libcap))) + `(("libcap" ,libcap)) ;capability support in 'ls', etc. + '()))) (native-inputs ;; Perl is needed to run tests in native builds, and to run the bundled ;; copy of help2man. However, don't pass it when cross-compiling since @@ -330,6 +337,23 @@ used to apply commands with arbitrarily long arguments.") (outputs '("out" "debug")) (arguments `(#:parallel-build? #f ; help2man may be called too early + ,@(if (hurd-target?) + '(#:make-flags ; these tests fail deterministically + (list (string-append "XFAIL_TESTS=tests/misc/env-S.pl" + " tests/misc/kill.sh" + " tests/misc/nice.sh" + " tests/misc/shred-passes.sh" + " tests/split/fail.sh" + " tests/split/l-chunk.sh" + " tests/dd/stats.sh" + " test-fdutimensat" + " test-futimens" + " test-linkat" + " test-renameat" + " test-renameatu" + " test-tls" + " test-utimensat"))) + '()) #:phases (modify-phases %standard-phases (add-before 'build 'patch-shell-references (lambda _ @@ -341,16 +365,6 @@ used to apply commands with arbitrarily long arguments.") (("/bin/sh") (which "sh"))) (substitute* (find-files "tests" "\\.sh$") (("#!/bin/sh") (string-append "#!" (which "sh")))) - #t)) - (add-before 'check 'disable-broken-test - (lambda _ - ;; This test hits the 127 character shebang limit in the build - ;; environment due to the way "env -S" splits arguments into - ;; shebangs. Note that "env-S-script.sh" works around this - ;; specific issue, but "env-S.pl" is not adjusted for build - ;; environments with long prefixes (/tmp/guix-build-...). - (substitute* "Makefile" - (("^.*tests/misc/env-S.pl.*$") "")) #t))))) (synopsis "Core GNU utilities (file, text, shell)") (description @@ -370,34 +384,62 @@ standard.") (outputs '("out")) (inputs '()))) +(define-public coreutils-8.30 + ;; XXX: This version is kept just so we can run PRoot tests. + (hidden-package + (package + (inherit coreutils-minimal) + (version "8.30") + (source (origin + (method url-fetch) + (uri (string-append "mirror://gnu/coreutils/coreutils-" + version ".tar.xz")) + (sha256 + (base32 + "0mxhw43d4wpqmvg0l4znk1vm10fy92biyh90lzdnqjcic2lb6cg8")))) + (arguments + (substitute-keyword-arguments (package-arguments coreutils-minimal) + ((#:phases phases '%standard-phases) + `(modify-phases ,phases + (add-before 'check 'disable-broken-test + (lambda _ + ;; This test hits the 127 character shebang limit in the build + ;; environment due to the way "env -S" splits arguments into + ;; shebangs. Note that "env-S-script.sh" works around this + ;; specific issue, but "env-S.pl" is not adjusted for build + ;; environments with long prefixes (/tmp/guix-build-...). + (substitute* "Makefile" + (("^.*tests/misc/env-S.pl.*$") "")) + #t))))))))) + (define-public gnu-make (package (name "make") - (version "4.2.1") + (version "4.3") (source (origin (method url-fetch) (uri (string-append "mirror://gnu/make/make-" version - ".tar.bz2")) + ".tar.gz")) (sha256 (base32 - "12f5zzyq2w56g95nni65hc0g5p7154033y2f3qmjvd016szn5qnn")) - (patches (search-patches "make-impure-dirs.patch" - "make-glibc-compat.patch")))) + "06cfqzpqsvdnsxbysl5p2fgdgxgl9y4p7scpnrfa8z2zgkjdspz0")) + (patches (search-patches "make-impure-dirs.patch")))) (build-system gnu-build-system) (native-inputs `(("pkg-config" ,pkg-config))) ; to detect Guile - (inputs `(("guile" ,guile-2.0))) + (inputs `(("guile" ,guile-3.0))) (outputs '("out" "debug")) (arguments - '(;; Work around faulty glob detection with glibc 2.27. See - ;; <https://lists.nongnu.org/archive/html/bug-make/2017-11/msg00027.html>. - #:configure-flags '("make_cv_sys_gnu_glob=yes") + `(,@(if (hurd-target?) + '(#:configure-flags '("CFLAGS=-D__alloca=alloca" + "ac_cv_func_posix_spawn=no")) + '()) #:phases (modify-phases %standard-phases (add-before 'build 'set-default-shell (lambda* (#:key inputs #:allow-other-keys) ;; Change the default shell from /bin/sh. (let ((bash (assoc-ref inputs "bash"))) - (substitute* "job.c" + (substitute* "src/job.c" (("default_shell =.*$") (format #f "default_shell = \"~a/bin/sh\";\n" bash))) @@ -413,17 +455,42 @@ change. GNU make offers many powerful extensions over the standard utility.") (license gpl3+) (home-page "https://www.gnu.org/software/make/"))) +(define-public gnu-make-4.2 + (package + (inherit gnu-make) + (version "4.2.1") + (source (origin + (method url-fetch) + (uri (string-append "mirror://gnu/make/make-" version + ".tar.bz2")) + (sha256 + (base32 + "12f5zzyq2w56g95nni65hc0g5p7154033y2f3qmjvd016szn5qnn")))) + (arguments + `(#:configure-flags '("CFLAGS=-D__alloca=alloca") + #:phases + (modify-phases %standard-phases + (add-before 'build 'set-default-shell + (lambda* (#:key inputs #:allow-other-keys) + ;; Change the default shell from /bin/sh. + (let ((bash (assoc-ref inputs "bash"))) + (substitute* "job.c" + (("default_shell =.*$") + (format #f "default_shell = \"~a/bin/sh\";\n" + bash))) + #t)))))))) + (define-public binutils (package (name "binutils") - (version "2.32") + (version "2.34") (source (origin (method url-fetch) (uri (string-append "mirror://gnu/binutils/binutils-" version ".tar.bz2")) (sha256 (base32 - "0b8767nyal1bc4cyzg5h9iis8kpkln1i3wkamig75cifj1fb2f6y")) + "1rin1f5c7wm4n3piky6xilcrpf2s0n3dd5vqq8irrxkcic3i1w49")) (patches (search-patches "binutils-loongson-workaround.patch")))) (build-system gnu-build-system) @@ -448,7 +515,17 @@ change. GNU make offers many powerful extensions over the standard utility.") ;; Make sure 'ar' and 'ranlib' produce archives in a ;; deterministic fashion. - "--enable-deterministic-archives"))) + "--enable-deterministic-archives") + + ;; XXX: binutils 2.34 was mistakenly released without generated manuals: + ;; <https://sourceware.org/bugzilla/show_bug.cgi?id=25491>. To avoid a + ;; circular dependency on texinfo, prevent the build system from creating + ;; the manuals by calling "true" instead of "makeinfo"... + #:make-flags '("MAKEINFO=true"))) + + ;; ...and "hide" this package so that users who install binutils get the + ;; version with documentation defined below. + (properties '((hidden? . #t))) (synopsis "Binary utilities: bfd gas gprof ld") (description @@ -461,6 +538,37 @@ included.") (license gpl3+) (home-page "https://www.gnu.org/software/binutils/"))) +;; Work around a problem with binutils 2.34 whereby manuals are missing from +;; the release tarball. Remove this and the related code above when updating. +(define-public binutils+documentation + (package/inherit + binutils + (native-inputs + `(("texinfo" ,texinfo))) + (arguments + (substitute-keyword-arguments (package-arguments binutils) + ((#:make-flags _ ''()) ''()))) + (properties '()))) + +;; FIXME: ath9k-firmware-htc-binutils.patch do not apply on 2.34 because of a +;; big refactoring of xtensa-modules.c (commit 567607c11fbf7105 upstream). +;; Keep this version around until the patch is updated. +(define-public binutils-2.33 + (package/inherit + binutils + (version "2.33.1") + (source (origin + (inherit (package-source binutils)) + (uri (string-append "mirror://gnu/binutils/binutils-" + version ".tar.bz2")) + (sha256 + (base32 + "1cmd0riv37bqy9mwbg6n3523qgr8b3bbm5kwj19sjrasl4yq9d0c")))) + (arguments + (substitute-keyword-arguments (package-arguments binutils) + ((#:make-flags _ ''()) ''()))) + (properties '()))) + (define-public binutils-gold (package (inherit binutils) @@ -491,7 +599,7 @@ included.") (define* (make-ld-wrapper name #:key (target (const #f)) binutils - (guile (canonical-package guile-2.2)) + (guile (canonical-package guile-3.0)) (bash (canonical-package bash)) (guile-for-build guile)) "Return a package called NAME that contains a wrapper for the 'ld' program @@ -529,7 +637,9 @@ wrapper for the cross-linker for that target, called 'TARGET-ld'." '(string-append bin "/ld"))) (go (string-append ld ".go"))) - (setvbuf (current-output-port) _IOLBF) + (setvbuf (current-output-port) + (cond-expand (guile-2.0 _IOLBF) + (else 'line))) (format #t "building ~s/bin/ld wrapper in ~s~%" (assoc-ref %build-inputs "binutils") out) @@ -569,13 +679,13 @@ the store.") ;; version 2.28, GNU/Hurd used a different glibc branch. (package (name "glibc") - (version "2.29") + (version "2.31") (source (origin (method url-fetch) (uri (string-append "mirror://gnu/glibc/glibc-" version ".tar.xz")) (sha256 (base32 - "0jzh58728flfh939a8k9pi1zdyalfzlxmwra7k0rzji5gvavivpk")) + "05zxkyz9bv3j9h0xyid1rhvh3klhsmrpkf3bcs6frvlgyr2gwilj")) (snippet ;; Disable 'ldconfig' and /etc/ld.so.cache. The latter is ;; required on LFS distros to avoid loading the distro's libc.so @@ -587,14 +697,14 @@ the store.") #t)) (modules '((guix build utils))) (patches (search-patches "glibc-ldd-x86_64.patch" - "glibc-CVE-2019-7309.patch" - "glibc-CVE-2019-9169.patch" - "glibc-2.29-git-updates.patch" "glibc-hidden-visibility-ldconfig.patch" "glibc-versioned-locpath.patch" "glibc-allow-kernel-2.6.32.patch" "glibc-reinstate-prlimit64-fallback.patch" - "glibc-supported-locales.patch")))) + "glibc-supported-locales.patch" + "glibc-hurd-clock_t_centiseconds.patch" + "glibc-hurd-clock_gettime_monotonic.patch" + "glibc-hurd-signal-sa-siginfo.patch")))) (build-system gnu-build-system) ;; Glibc's <limits.h> refers to <linux/limit.h>, for instance, so glibc @@ -821,6 +931,44 @@ with the Linux kernel.") ;; Below are old libc versions, which we use mostly to build locale data in ;; the old format (which the new libc cannot cope with.) +(define-public glibc-2.30 + (package + (inherit glibc) + (version "2.30") + (source (origin + (inherit (package-source glibc)) + (uri (string-append "mirror://gnu/glibc/glibc-" version ".tar.xz")) + (sha256 + (base32 + "1bxqpg91d02qnaz837a5kamm0f43pr1il4r9pknygywsar713i72")) + (patches (search-patches "glibc-ldd-x86_64.patch" + "glibc-CVE-2019-19126.patch" + "glibc-hidden-visibility-ldconfig.patch" + "glibc-versioned-locpath.patch" + "glibc-allow-kernel-2.6.32.patch" + "glibc-reinstate-prlimit64-fallback.patch" + "glibc-2.29-supported-locales.patch")))))) + +(define-public glibc-2.29 + (package + (inherit glibc) + (version "2.29") + (source (origin + (inherit (package-source glibc)) + (uri (string-append "mirror://gnu/glibc/glibc-" version ".tar.xz")) + (sha256 + (base32 + "0jzh58728flfh939a8k9pi1zdyalfzlxmwra7k0rzji5gvavivpk")) + (patches (search-patches "glibc-ldd-x86_64.patch" + "glibc-CVE-2019-7309.patch" + "glibc-CVE-2019-9169.patch" + "glibc-2.29-git-updates.patch" + "glibc-hidden-visibility-ldconfig.patch" + "glibc-versioned-locpath.patch" + "glibc-allow-kernel-2.6.32.patch" + "glibc-reinstate-prlimit64-fallback.patch" + "glibc-2.29-supported-locales.patch")))))) + (define-public glibc-2.28 (package (inherit glibc) @@ -980,21 +1128,8 @@ with the Linux kernel.") (package-name libc) "-" (package-version libc))) (arguments - (substitute-keyword-arguments - (ensure-keyword-arguments (package-arguments base-gcc) - '(#:implicit-inputs? #f)) - ((#:phases phases) - `(modify-phases ,phases - (add-before 'configure 'treat-glibc-as-system-header - (lambda _ - (let ((libc (assoc-ref %build-inputs "libc"))) - ;; GCCs build processes requires that the libc - ;; we're building against is on the system header - ;; search path. - (for-each (lambda (var) - (setenv var (string-append libc "/include"))) - '("C_INCLUDE_PATH" "CPLUS_INCLUDE_PATH")) - #t))))))) + (ensure-keyword-arguments (package-arguments base-gcc) + '(#:implicit-inputs? #f))) (native-inputs `(,@(package-native-inputs base-gcc) ,@(append (fold alist-delete (%final-inputs) '("libc" "libc:static"))) @@ -1134,18 +1269,12 @@ test environments.") (make-glibc-utf8-locales glibc)) ;; Packages provided to ease use of binaries linked against the previous libc. -(define-public glibc-locales-2.28 - (package (inherit (make-glibc-locales glibc-2.28)) - (name "glibc-locales-2.28"))) -(define-public glibc-utf8-locales-2.28 - (package (inherit (make-glibc-utf8-locales glibc-2.28)) - (name "glibc-utf8-locales-2.28"))) - -;; These should no longer be needed. -(define-public glibc-utf8-locales-2.27 - (deprecated-package "glibc-utf8-locales-2.27" glibc-utf8-locales-2.28)) -(define-public glibc-locales-2.27 - (deprecated-package "glibc-locales-2.27" glibc-locales-2.28)) +(define-public glibc-locales-2.29 + (package (inherit (make-glibc-locales glibc-2.29)) + (name "glibc-locales-2.29"))) +(define-public glibc-utf8-locales-2.29 + (package (inherit (make-glibc-utf8-locales glibc-2.29)) + (name "glibc-utf8-locales-2.29"))) (define-public which (package @@ -1173,6 +1302,15 @@ command.") (outputs '("out")) (propagated-inputs `(("gnumach-headers" ,gnumach-headers) ("hurd-headers" ,hurd-headers))) + (native-inputs + `(("mig" ,(if (%current-target-system) + ;; XXX: When targeting i586-pc-gnu, we need a 32-bit MiG, + ;; hence this hack. + (package + (inherit mig) + (arguments `(#:system "i686-linux"))) + mig)) + ,@(package-native-inputs glibc))) (arguments (substitute-keyword-arguments (package-arguments glibc) ;; We just pass the flags really needed to build the headers. @@ -1275,7 +1413,7 @@ and daylight-saving rules.") (hidden-package (package (inherit tzdata) - (version "2019b") + (version "2019c") (source (origin (method url-fetch) (uri (string-append @@ -1283,7 +1421,7 @@ and daylight-saving rules.") version ".tar.gz")) (sha256 (base32 - "0r0clnlslwm15m1c61dinf1fi9ffgl6aipng7i7yryfwj0n0kn85")))) + "0z7w1yv37cfk8yhix2cillam091vgp1j4g8fv84261q9mdnq1ivr")))) (inputs `(("tzcode" ,(origin (method url-fetch) @@ -1292,7 +1430,7 @@ and daylight-saving rules.") version ".tar.gz")) (sha256 (base32 - "0vbmswvv3li25s31shyllq5v24449lxnrki9hr043nipjd09sirf"))))))))) + "1m3y2rnf1nggxxhxplab5zdd5whvar3ijyrv7lifvm82irkd7szn"))))))))) (define-public libiconv (package diff --git a/gnu/packages/bash.scm b/gnu/packages/bash.scm index 3256a356d4..1b342827c5 100644 --- a/gnu/packages/bash.scm +++ b/gnu/packages/bash.scm @@ -69,7 +69,16 @@ (4 "021gqqvgydixkrmqss64b6srfdlkvnx88lyfzpxfrn5d6bc7li0l") (5 "0xl2kyzm84nlyklrqzkn73ixabhzfhn9x91lzcmis89cppclvxav") (6 "0844749ixk1z60437nkznzms1f0nzh9an62kj7sny6r0zyk2k1fn") - (7 "16xg37gp1b8zlj5969w8mcrparwqlcbj9695vn3qhgb7wdz1xd0p"))) + (7 "16xg37gp1b8zlj5969w8mcrparwqlcbj9695vn3qhgb7wdz1xd0p") + (8 "1qyp19krjh8zxvb0jgwmyjz40djslwcf4xi7kc1ab0iaca44bipf") + (9 "00yrjjqd95s81b21qq3ba1y7h879q8jaajlkjggc6grhcwbs4g7d") + (10 "04ca5bjv456v538mkspzvn4xb2zdphh31r4fpvfm9p5my0jw7yyn") + (11 "1sklyixvsv8993kxzs0jigacpdchjrq7jv5xpdx7kbqyp4rf6k9c") + (12 "0cz21qg2gbr40lfgza7g02bqi2qknwqgxnq459pjj640d0cywhr9") + (13 "16h9nwz3yzwj7fnxvlidjymdc4yr30h818433gh9j1x3in6igmzm") + (14 "12gm5bvv2pd3m72z2ilj26pa08c61az253dsgfl24vpf2ijywvjx") + (15 "0pm0px758w4i23s55wajcv6lqfiym7zgxvq0pxf6vclkv8nxy5x5") + (16 "0vdha332km2iwx8g2ld15jy7d24cbplzgr1531dpzylr9ajxglgz"))) (define (download-patches store count) "Download COUNT Bash patches into store. Return a list of @@ -116,7 +125,8 @@ number/base32-hash tuples, directly usable in the 'patch-series' form." (base32 "0kgvfwqdcd90waczf4gx39xnrxzijhjrzyzv7s8v4w31qqm0za5l")) (patch-flags '("-p0")) - (patches %patch-series-5.0))) + (patches (cons (search-patch "bash-linux-pgrp-pipe.patch") + %patch-series-5.0)))) (version (string-append version "." (number->string (length %patch-series-5.0)))) (build-system gnu-build-system) diff --git a/gnu/packages/bdw-gc.scm b/gnu/packages/bdw-gc.scm index 73b0c073d9..50e4951dc1 100644 --- a/gnu/packages/bdw-gc.scm +++ b/gnu/packages/bdw-gc.scm @@ -3,7 +3,7 @@ ;;; Copyright © 2014 Mark H Weaver <mhw@netris.org> ;;; Copyright © 2016, 2018 Leo Famulari <leo@famulari.name> ;;; Copyright © 2017 Rene Saavedra <rennes@openmailbox.org> -;;; Copyright © 2019 Marius Bakke <mbakke@fastmail.com> +;;; Copyright © 2019, 2020 Marius Bakke <mbakke@fastmail.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -24,6 +24,7 @@ #:use-module (guix licenses) #:use-module (guix packages) #:use-module (guix download) + #:use-module (guix utils) #:use-module (guix build-system gnu) #:use-module (gnu packages pkg-config) #:use-module (gnu packages hurd)) @@ -31,14 +32,14 @@ (define-public libgc (package (name "libgc") - (version "7.6.12") + (version "8.0.4") (source (origin (method url-fetch) (uri (string-append "https://github.com/ivmai/bdwgc/releases" "/download/v" version "/gc-" version ".tar.gz")) (sha256 (base32 - "10jhhi79d5brwlsyhwgpnrmc8nhlf7aan2lk9xhgihk5jc6srbvc")))) + "1798rp3mcfkgs38ynkbg2p47bq59pisrc6mn0l20pb5iczf0ssj3")))) (build-system gnu-build-system) (arguments `(#:configure-flags @@ -54,21 +55,14 @@ ,@(if (hurd-triplet? (or (%current-system) (%current-target-system))) '("--disable-gcj-support") - '())) - #:phases (modify-phases %standard-phases - (add-after 'unpack 'adjust-pc-file - (lambda* (#:key inputs #:allow-other-keys) - (let ((libatomic-ops (assoc-ref inputs "libatomic-ops"))) - ;; GC 7.6.10 and later includes -latomic_ops in the - ;; pkg-config file. To avoid propagation, insert an - ;; absolute reference so dependent programs can find it. - (substitute* "bdw-gc.pc.in" - (("@ATOMIC_OPS_LIBS@" match) - (string-append "-L" libatomic-ops "/lib " - match))) - #t)))))) + '())))) (native-inputs `(("pkg-config" ,pkg-config))) - (inputs `(("libatomic-ops" ,libatomic-ops))) + (propagated-inputs + (if (%current-target-system) + ;; The build system refuses to check for compiler intrinsics when + ;; cross-compiling, and demands using libatomic-ops instead. + `(("libatomic-ops" ,libatomic-ops)) + '())) (outputs '("out" "debug")) (synopsis "The Boehm-Demers-Weiser conservative garbage collector for C and C++") @@ -91,17 +85,27 @@ C or C++ programs, though that is not its primary goal.") (license (x11-style (string-append home-page "license.txt"))))) -(define-public libgc-8.0 +;; TODO: Add a static output in libgc in the next rebuild cycle. +(define-public libgc/static-libs + (package/inherit + libgc + (arguments (substitute-keyword-arguments (package-arguments libgc) + ((#:configure-flags flags ''()) + `(cons "--enable-static" ,flags)))) + (properties '((hidden? . #t))))) + +(define-public libgc-7 (package (inherit libgc) - (version "8.0.4") + (version "7.6.12") (source (origin (method url-fetch) (uri (string-append "https://github.com/ivmai/bdwgc/releases" "/download/v" version "/gc-" version ".tar.gz")) (sha256 (base32 - "1798rp3mcfkgs38ynkbg2p47bq59pisrc6mn0l20pb5iczf0ssj3")))))) + "10jhhi79d5brwlsyhwgpnrmc8nhlf7aan2lk9xhgihk5jc6srbvc")))) + (propagated-inputs `(("libatomic-ops" ,libatomic-ops))))) (define-public libgc/back-pointers (package/inherit diff --git a/gnu/packages/bioinformatics.scm b/gnu/packages/bioinformatics.scm index f90a0bf90c..32b795948b 100644 --- a/gnu/packages/bioinformatics.scm +++ b/gnu/packages/bioinformatics.scm @@ -79,6 +79,7 @@ #:use-module (gnu packages golang) #:use-module (gnu packages glib) #:use-module (gnu packages graph) + #:use-module (gnu packages graphviz) #:use-module (gnu packages groff) #:use-module (gnu packages gtk) #:use-module (gnu packages guile) @@ -4942,14 +4943,24 @@ files and writing bioinformatics applications.") "1agfz6zqa8nc6cw47yh0s3y14gkpa9wqazwcj7mwwj3ffnw39p3j")))) (build-system python-build-system) (arguments - `(#:python ,python-2)) ; requires Python 2.7 + `(#:python ,python-2 ; requires Python 2.7 + #:tests? #f ; test data are not included + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'use-weave + (lambda _ + (substitute* "warpedlmm/util/linalg.py" + (("from scipy import linalg, weave") + "from scipy import linalg\nimport weave")) + #t))))) (propagated-inputs `(("python-scipy" ,python2-scipy) ("python-numpy" ,python2-numpy) ("python-matplotlib" ,python2-matplotlib) ("python-fastlmm" ,python2-fastlmm) ("python-pandas" ,python2-pandas) - ("python-pysnptools" ,python2-pysnptools))) + ("python-pysnptools" ,python2-pysnptools) + ("python-weave" ,python2-weave))) (native-inputs `(("python-mock" ,python2-mock) ("python-nose" ,python2-nose) @@ -11984,7 +11995,8 @@ dependency like SeqAn.") ;; Ensure that Eigen headers can be found (setenv "CPLUS_INCLUDE_PATH" (string-append (assoc-ref inputs "eigen") - "/include/eigen3")) + "/include/eigen3:" + (or (getenv "CPLUS_INCLUDE_PATH") ""))) #t))))) (inputs `(("boost" ,boost) @@ -12162,8 +12174,8 @@ The following file formats are supported: (("lib/libdivsufsort.a") "/lib/libdivsufsort.so")) ;; Ensure that all headers can be found - (setenv "CPATH" - (string-append (getenv "CPATH") + (setenv "CPLUS_INCLUDE_PATH" + (string-append (or (getenv "CPLUS_INCLUDE_PATH") "") ":" (assoc-ref inputs "eigen") "/include/eigen3")) @@ -13302,6 +13314,42 @@ cases include: @end enumerate\n") (license license:expat))) +(define-public miniasm + (package + (name "miniasm") + (version "0.3") + (source (origin + (method url-fetch) + (uri (string-append + "https://github.com/lh3/miniasm/archive/v" + version ".tar.gz")) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "0g89pa98dvh34idv7w1zv12bsbyr3a11c4qb1cdcz68gyda88s4v")))) + (build-system gnu-build-system) + (inputs + `(("zlib" ,zlib))) + (arguments + `(#:tests? #f ; There are no tests. + #:phases + (modify-phases %standard-phases + (delete 'configure) + (replace 'install + (lambda* (#:key inputs outputs #:allow-other-keys) + (let ((bin (string-append (assoc-ref outputs "out") "/bin"))) + (install-file "miniasm" bin) + (install-file "minidot" bin))))))) + (home-page "https://github.com/lh3/miniasm") + (synopsis "Ultrafast de novo assembly for long noisy reads") + (description "Miniasm is a very fast OLC-based de novo assembler for noisy +long reads. It takes all-vs-all read self-mappings (typically by minimap) as +input and outputs an assembly graph in the GFA format. Different from +mainstream assemblers, miniasm does not have a consensus step. It simply +concatenates pieces of read sequences to generate the final unitig sequences. +Thus the per-base error rate is similar to the raw input reads.") + (license license:expat))) + (define-public r-circus (package (name "r-circus") @@ -15807,3 +15855,44 @@ biological processes. SBML is useful for models of metabolism, cell signaling, and more. It continues to be evolved and expanded by an international community.") (license license:lgpl2.1+))) + +(define-public grocsvs + ;; The last release is out of date and new features have been added. + (let ((commit "ecd956a65093a0b2c41849050e4512d46fecea5d") + (revision "1")) + (package + (name "grocsvs") + (version (git-version "0.2.6.1" revision commit)) + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/grocsvs/grocsvs") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 "14505725gr7qxc17cxxf0k6lzcwmgi64pija4mwf29aw70qn35cc")) + (patches (search-patches "grocsvs-dont-use-admiral.patch")))) + (build-system python-build-system) + (arguments + `(#:tests? #f ; No test suite. + #:python ,python-2)) ; Only python-2 supported. + (inputs + `(("python2-h5py" ,python2-h5py) + ("python2-ipython-cluster-helper" ,python2-ipython-cluster-helper) + ("python2-networkx" ,python2-networkx) + ("python2-psutil" ,python2-psutil) + ("python2-pandas" ,python2-pandas) + ("python2-pybedtools" ,python2-pybedtools) + ("python2-pyfaidx" ,python2-pyfaidx) + ("python2-pygraphviz" ,python2-pygraphviz) + ("python2-pysam" ,python2-pysam) + ("python2-scipy" ,python2-scipy))) + (home-page "https://github.com/grocsvs/grocsvs") + (synopsis "Genome-wide reconstruction of complex structural variants") + (description + "@dfn{Genome-wide Reconstruction of Complex Structural Variants} +(GROC-SVs) is a software pipeline for identifying large-scale structural +variants, performing sequence assembly at the breakpoints, and reconstructing +the complex structural variants using the long-fragment information from the +10x Genomics platform.") + (license license:expat)))) diff --git a/gnu/packages/bison.scm b/gnu/packages/bison.scm index 12f19b785e..ae8d1a141b 100644 --- a/gnu/packages/bison.scm +++ b/gnu/packages/bison.scm @@ -31,7 +31,7 @@ (define-public bison (package (name "bison") - (version "3.4.1") + (version "3.5.3") (source (origin (method url-fetch) @@ -39,7 +39,7 @@ version ".tar.xz")) (sha256 (base32 - "03c2pmq3bs0drdislnz6gm1rwz3n4pb2rz9navyxydppxg2rl597")))) + "1i57hbczvr8674z73775jxdd3y59qggs5lmfd60gmwm5i1gmpy1b")))) (build-system gnu-build-system) (arguments '(;; Building in parallel on many-core systems may cause an error such as diff --git a/gnu/packages/bittorrent.scm b/gnu/packages/bittorrent.scm index 03c7fe4515..14f3815b52 100644 --- a/gnu/packages/bittorrent.scm +++ b/gnu/packages/bittorrent.scm @@ -407,7 +407,7 @@ and will take advantage of multiple processor cores where possible.") (assoc-ref %outputs "out") "/lib")))) (inputs `(("boost" ,boost) ("openssl" ,openssl))) - (native-inputs `(("python" ,python-2) + (native-inputs `(("python" ,python-wrapper) ("pkg-config" ,pkg-config))) (home-page "https://www.libtorrent.org/") (synopsis "Feature complete BitTorrent implementation") diff --git a/gnu/packages/boost.scm b/gnu/packages/boost.scm index 8bf2002adb..2f2ca289ab 100644 --- a/gnu/packages/boost.scm +++ b/gnu/packages/boost.scm @@ -10,7 +10,9 @@ ;;; Copyright © 2018, 2019 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2018 Maxim Cournoyer <maxim.cournoyer@gmail.com> ;;; Copyright © 2018, 2020 Efraim Flashner <efraim@flashner.co.il> -;;; Copyright © 2019 Giacomo Leidi <goodoldpaul@autistici.org> +;;; Copyright © 2019 Mathieu Othacehe <m.othacehe@gmail.com> +;;; Copyright © 2019, 2020 Giacomo Leidi <goodoldpaul@autistici.org> +;;; Copyright © 2020 Marius Bakke <mbakke@fastmail.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -40,66 +42,113 @@ #:use-module (gnu packages icu4c) #:use-module (gnu packages perl) #:use-module (gnu packages python) - #:use-module (gnu packages shells)) + #:use-module (gnu packages shells) + #:use-module (srfi srfi-1)) + +(define (version-with-underscores version) + (string-map (lambda (x) (if (eq? x #\.) #\_ x)) version)) + +(define (boost-patch name version hash) + (origin + (method url-fetch) + (uri (string-append "https://www.boost.org/patches/" + (version-with-underscores version) "/" name)) + (file-name (string-append "boost-" name)) + (sha256 (base32 hash)))) (define-public boost (package (name "boost") - (version "1.70.0") + (version "1.72.0") (source (origin (method url-fetch) - (uri (let ((version-with-underscores - (string-map (lambda (x) (if (eq? x #\.) #\_ x)) version))) - (list (string-append "mirror://sourceforge/boost/boost/" version - "/boost_" version-with-underscores ".tar.bz2") - (string-append "https://dl.bintray.com/boostorg/release/" - version "/source/boost_" - version-with-underscores ".tar.bz2")))) + (uri (string-append "https://dl.bintray.com/boostorg/release/" + version "/source/boost_" + (version-with-underscores version) ".tar.bz2")) + (patches + (list (boost-patch + ;; 1.72.0 was released with a faulty coroutine submodule: + ;; <https://github.com/boostorg/coroutine/issues/46>. + "0001-revert-cease-dependence-on-range.patch" version + "1zcqxzh56m1s635wqwk15j3zcs2gmjvjy2f0hid7i78s4pgm0yfs"))) (sha256 (base32 - "0y47nc7w0arwgj4x1phadxbvl7wyfcgknbz5kv8lzpl98wsyh2j3")))) + "08h7cv61fd0lzb4z50xanfqn0pdgvizjrpd1kcdgj725pisb5jar")))) (build-system gnu-build-system) (inputs `(("icu4c" ,icu4c) ("zlib" ,zlib))) (native-inputs `(("perl" ,perl) - ("python" ,python-2) + ,@(if (%current-target-system) + '() + `(("python" ,python-wrapper))) ("tcsh" ,tcsh))) (arguments - `(#:tests? #f + `(#:imported-modules ((guix build python-build-system) + ,@%gnu-build-system-modules) + #:modules (((guix build python-build-system) #:select (python-version)) + ,@%gnu-build-system-modules) + #:tests? #f #:make-flags (list "threading=multi" "link=shared" - ;; XXX: Disable installation of Boosts modular CMake config scripts - ;; which conflicts in 1.70.0 with the ones provided by CMake. - ;; See <https://bugs.gnu.org/36721>. - "--no-cmake-config" - ;; Set the RUNPATH to $libdir so that the libs find each other. (string-append "linkflags=-Wl,-rpath=" - (assoc-ref %outputs "out") "/lib")) + (assoc-ref %outputs "out") "/lib") + ,@(if (%current-target-system) + `("--user-config=user-config.jam" + ;; Python is not supported when cross-compiling. + "--without-python" + "binary-format=elf" + "target-os=linux" + ,@(cond + ((string-prefix? "arm" (%current-target-system)) + '("abi=aapcs" + "address-model=32" + "architecture=arm")) + ((string-prefix? "aarch64" (%current-target-system)) + '("abi=aapcs" + "address-model=64" + "architecture=arm")) + (else '()))) + '())) #:phases (modify-phases %standard-phases (delete 'bootstrap) (replace 'configure (lambda* (#:key inputs outputs #:allow-other-keys) (let ((icu (assoc-ref inputs "icu4c")) + (python (assoc-ref inputs "python")) (out (assoc-ref outputs "out"))) (substitute* '("libs/config/configure" "libs/spirit/classic/phoenix/test/runtest.sh" - "tools/build/src/engine/execunix.c" - "tools/build/src/engine/Jambase" - "tools/build/src/engine/jambase.c") + "tools/build/src/engine/execunix.cpp" + "tools/build/src/engine/Jambase") (("/bin/sh") (which "sh"))) (setenv "SHELL" (which "sh")) (setenv "CONFIG_SHELL" (which "sh")) + ,@(if (%current-target-system) + `((call-with-output-file "user-config.jam" + (lambda (port) + (format port + "using gcc : cross : ~a-c++ ;" + ,(%current-target-system))))) + '()) + (invoke "./bootstrap.sh" (string-append "--prefix=" out) ;; Auto-detection looks for ICU only in traditional ;; install locations. (string-append "--with-icu=" icu) + ;; Ditto for Python. + ,@(if (%current-target-system) + '() + `((string-append "--with-python-root=" python) + (string-append "--with-python=" python "/bin/python") + (string-append "--with-python-version=" + (python-version python)))) "--with-toolset=gcc")))) (replace 'build (lambda* (#:key make-flags #:allow-other-keys) @@ -109,17 +158,27 @@ (replace 'install (lambda* (#:key make-flags #:allow-other-keys) (apply invoke "./b2" "install" make-flags))) - (add-after 'install 'provide-libboost_python - (lambda* (#:key outputs #:allow-other-keys) - (let ((out (assoc-ref outputs "out"))) - ;; Boost can build support for both Python 2 and Python 3 since - ;; version 1.67.0, and suffixes each library with the Python - ;; version. Many consumers only check for libboost_python - ;; however, so we provide it here as suggested in - ;; <https://github.com/boostorg/python/issues/203>. - (with-directory-excursion (string-append out "/lib") - (symlink "libboost_python27.so" "libboost_python.so")) - #t)))))) + ,@(if (%current-target-system) + '() + '((add-after 'install 'provide-libboost_python + (lambda* (#:key inputs outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (python-version (python-version + (assoc-ref inputs "python"))) + (libboost_pythonNN.so + (string-append "libboost_python" + (string-join (string-split + python-version #\.) + "") + ".so"))) + (with-directory-excursion (string-append out "/lib") + (symlink libboost_pythonNN.so "libboost_python.so") + ;; Some packages only look for the major version. + (symlink libboost_pythonNN.so + (string-append "libboost_python" + (string-take python-version 1) + ".so"))) + #t)))))))) (home-page "https://www.boost.org") (synopsis "Peer-reviewed portable C++ source libraries") @@ -129,54 +188,16 @@ across a broad spectrum of applications.") (license (license:x11-style "https://www.boost.org/LICENSE_1_0.txt" "Some components have other similar licences.")))) -;; TODO: Merge with 'Boost' in the next rebuild cycle. -(define-public boost-with-python3 +(define-public boost-with-python2 (package (inherit boost) - (name "boost-python3") + (name "boost-python2") (native-inputs - `(("perl" ,perl) - ("python" ,python) - ("tcsh" ,tcsh))) - (arguments (substitute-keyword-arguments (package-arguments boost) - ((#:phases phases) - `(modify-phases ,phases - (replace 'configure - (lambda* (#:key inputs outputs #:allow-other-keys) - (let ((icu (assoc-ref inputs "icu4c")) - (python (assoc-ref inputs "python")) - (out (assoc-ref outputs "out"))) - (substitute* '("libs/config/configure" - "libs/spirit/classic/phoenix/test/runtest.sh" - "tools/build/src/engine/execunix.c" - "tools/build/src/engine/Jambase" - "tools/build/src/engine/jambase.c") - (("/bin/sh") (which "sh"))) - - (setenv "SHELL" (which "sh")) - (setenv "CONFIG_SHELL" (which "sh")) + `(("python" ,python-2) + ,@(alist-delete "python" (package-native-inputs boost)))))) - (substitute* "tools/build/src/tools/python.jam" - (("include/python\\$\\(version\\)") - "include/python$(version)m")) - - (invoke "./bootstrap.sh" - (string-append "--prefix=" out) - ;; Auto-detection looks for dependencies only - ;; in traditional install locations. - (string-append "--with-icu=" icu) - (string-append "--with-python=" python "/bin/python3") - (string-append "--with-python-root=" python) - "--with-python-version=3.7" - "--with-toolset=gcc")))) - (replace 'provide-libboost_python - (lambda* (#:key outputs #:allow-other-keys) - (let ((out (assoc-ref outputs "out"))) - (with-directory-excursion (string-append out "/lib") - (symlink "libboost_python37.so" "libboost_python.so") - ;; Some packages also look for libboost_python3.so - (symlink "libboost_python37.so" "libboost_python3.so")) - #t))))))))) +(define-public boost-with-python3 + (deprecated-package "boost-with-python3" boost)) (define-public boost-static (package @@ -189,35 +210,20 @@ across a broad spectrum of applications.") ((#:phases phases) `(modify-phases ,phases (replace 'provide-libboost_python - (lambda* (#:key outputs #:allow-other-keys) - (let ((out (assoc-ref outputs "out"))) + (lambda* (#:key inputs outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (python-version (python-version + (assoc-ref inputs "python"))) + (libboost_pythonNN.a + (string-append "libboost_python" + (string-join (string-split + python-version #\.) + "") + ".a"))) (with-directory-excursion (string-append out "/lib") - (symlink "libboost_python27.a" "libboost_python.a")) + (symlink libboost_pythonNN.a "libboost_python.a")) #t))))))))) -(define-public boost-1.69 - (package - (inherit boost) - (name "boost") - (version "1.69.0") - (source (origin - (method url-fetch) - (uri (let ((version-with-underscores - (string-map (lambda (x) (if (eq? x #\.) #\_ x)) version))) - (list (string-append "mirror://sourceforge/boost/boost/" version - "/boost_" version-with-underscores ".tar.bz2") - (string-append "https://dl.bintray.com/boostorg/release/" - version "/source/boost_" - version-with-underscores ".tar.bz2")))) - (sha256 - (base32 - "01j4n142dz20lcgqji8d8hspp04p1nv7m8i6dz8w5lchfdhx8clg")))) - (arguments - (substitute-keyword-arguments (package-arguments boost) - ((#:make-flags flags) - `(cons* "cxxflags=-std=c++14" ,flags)))) - (properties '((hidden? . #t))))) - (define-public boost-for-mysql ;; Older version for MySQL 5.7.23. (package diff --git a/gnu/packages/bootloaders.scm b/gnu/packages/bootloaders.scm index 666562762f..0f0d3b4b62 100644 --- a/gnu/packages/bootloaders.scm +++ b/gnu/packages/bootloaders.scm @@ -11,6 +11,7 @@ ;;; Copyright © 2019 nee <nee@cock.li> ;;; Copyright © 2019 Mathieu Othacehe <m.othacehe@gmail.com> ;;; Copyright © 2020 Björn Höfling <bjoern.hoefling@bjoernhoefling.de> +;;; Copyright © 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org> ;;; Copyright © 2018, 2019, 2020 Vagrant Cascadian <vagrant@debian.org> ;;; Copyright © 2020 Pierre Langlois <pierre.langlois@gmx.com> ;;; @@ -93,7 +94,9 @@ (sha256 (base32 "0zgp5m3hmc9jh8wpjx6czzkh5id2y8n1k823x2mjvm2sk6b28ag5")) - (patches (search-patches "grub-efi-fat-serial-number.patch")))) + (patches (search-patches + "grub-efi-fat-serial-number.patch" + "grub-verifiers-Blocklist-fallout-cleanup.patch")))) (build-system gnu-build-system) (arguments `(#:configure-flags @@ -154,11 +157,19 @@ ;; Depend on LVM2 for libdevmapper, used by 'grub-probe' and ;; 'grub-install' to recognize mapped devices (LUKS, etc.) - ("lvm2" ,lvm2) + ,@(if (member (or (%current-target-system) + (%current-system)) + (package-supported-systems lvm2)) + `(("lvm2" ,lvm2)) + '()) ;; Depend on mdadm, which is invoked by 'grub-probe' and 'grub-install' ;; to determine whether the root file system is RAID. - ("mdadm" ,mdadm) + ,@(if (member (or (%current-target-system) + (%current-system)) + (package-supported-systems mdadm)) + `(("mdadm" ,mdadm)) + '()) ;; Console-setup's ckbcomp is invoked by grub-kbdcomp. It is required ;; for generating alternative keyboard layouts. @@ -166,7 +177,11 @@ ;; Needed for ‘grub-mount’, the only reliable way to tell whether a given ;; file system will be readable by GRUB without rebooting. - ("fuse" ,fuse) + ,@(if (member (or (%current-target-system) + (%current-system)) + (package-supported-systems fuse)) + `(("fuse" ,fuse)) + '()) ("freetype" ,freetype) ;; ("libusb" ,libusb) @@ -198,7 +213,9 @@ ;; Dependencies for the test suite. The "real" QEMU is needed here, ;; because several targets are used. ("parted" ,parted) - ("qemu" ,qemu-minimal) + ,@(if (member (%current-system) (package-supported-systems qemu-minimal)) + `(("qemu" ,qemu-minimal)) + '()) ("xorriso" ,xorriso))) (home-page "https://www.gnu.org/software/grub/") (synopsis "GRand Unified Boot loader") @@ -212,6 +229,33 @@ menu to select one of the installed operating systems.") (license license:gpl3+) (properties '((cpe-name . "grub2"))))) +(define-public grub-minimal + (package + (inherit grub) + (name "grub-minimal") + (inputs + (fold alist-delete (package-inputs grub) + '("lvm2" "mdadm" "fuse" "console-setup"))) + (native-inputs + (fold alist-delete (package-native-inputs grub) + '("help2man" "texinfo" "parted" "qemu" "xorriso"))) + (arguments + `(#:configure-flags (list "PYTHON=true") + #:phases (modify-phases %standard-phases + (add-after 'unpack 'patch-stuff + (lambda* (#:key native-inputs inputs #:allow-other-keys) + (substitute* "grub-core/Makefile.in" + (("/bin/sh") (which "sh"))) + + ;; Make the font visible. + (copy-file (assoc-ref (or native-inputs inputs) + "unifont") + "unifont.bdf.gz") + (system* "gunzip" "unifont.bdf.gz") + + #t))) + #:tests? #f)))) + (define-public grub-efi (package (inherit grub) @@ -305,7 +349,7 @@ menu to select one of the installed operating systems.") ("perl" ,perl) ("python-2" ,python-2))) (inputs - `(("libuuid" ,util-linux) + `(("libuuid" ,util-linux "lib") ("mtools" ,mtools))) (arguments `(#:parallel-build? #f @@ -943,7 +987,7 @@ to Novena upstream, does not load u-boot.img from the first partition.") ("libyaml" ,libyaml) ("openssl" ,openssl) ("openssl:static" ,openssl "static") - ("util-linux" ,util-linux))) + ("util-linux" ,util-linux "lib"))) (home-page "https://dev.chromium.org/chromium-os/chromiumos-design-docs/verified-boot") (synopsis "ChromiumOS verified boot utilities") diff --git a/gnu/packages/bootstrap.scm b/gnu/packages/bootstrap.scm index d6995f104c..f58ce2de93 100644 --- a/gnu/packages/bootstrap.scm +++ b/gnu/packages/bootstrap.scm @@ -1,8 +1,8 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2014, 2015, 2018, 2019 Mark H Weaver <mhw@netris.org> -;;; Copyright © 2017 Efraim Flashner <efraim@flashner.co.il> -;;; Copyright © 2018 Jan (janneke) Nieuwenhuizen <janneke@gnu.org> +;;; Copyright © 2017, 2020 Efraim Flashner <efraim@flashner.co.il> +;;; Copyright © 2018, 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org> ;;; Copyright © 2019 Carl Dong <contact@carldong.me> ;;; ;;; This file is part of GNU Guix. @@ -104,6 +104,15 @@ ,(base32 "07830bx29ad5i0l1ykj0g0b1jayjdblf01sr3ww9wbnwdbzinqms")) ("xz" ,(base32 "0i9kxdi17bm5gxfi2xzm0y73p3ii0cqxli1sbljm6rh2fjgyn90k"))) + ("i586-gnu" + ("bash" + ,(base32 "1as8649aqaibahhhrvkj10ci8shpi4hq5n7gnik8rhhy0dc1jarg")) + ("mkdir" + ,(base32 "1snqgpfrl00hfn82lm29jqylzjsfb9jd6ha74dp12phwb8fpbmb9")) + ("tar" + ,(base32 "0nq2c1zb3wv5bf7kd83sziaashydazrn7xgq6kijlk0zj2syzc2m")) + ("xz" + ,(base32 "033rhpk6zrpxpd6ffjyg5y2zwq9x9cnq0zljb7k8jlncbalsayq5"))) ("mips64el-linux" ("bash" ,(base32 "1aw046dhda240k9pb9iaj5aqkm23gkvxa9j82n4k7fk87nbrixw6")) @@ -114,12 +123,17 @@ ("xz" ,(base32 "09j1d69qr0hhhx4k4ih8wp00dfc9y4rp01hfg3vc15yxd0jxabh5"))))) -(define (bootstrap-executable-url program system) - "Return the URL where PROGRAM can be found for SYSTEM." - (string-append - "https://git.savannah.gnu.org/cgit/guix.git/plain/gnu/packages/bootstrap/" - system "/" program - "?id=44f07d1dc6806e97c4e9ee3e6be883cc59dc666e")) +(define %bootstrap-executable-base-urls + ;; This is where the bootstrap executables come from. + '("https://git.savannah.gnu.org/cgit/guix.git/plain/gnu/packages/bootstrap/" + "http://lilypond.org/janneke/guix/")) + +(define (bootstrap-executable-file-name system program) + "Return the FILE-NAME part of url where PROGRAM can be found for SYSTEM." + (match system + ("i586-gnu" (string-append system "/20200326/" program)) + (_ (string-append system "/" program + "?id=44f07d1dc6806e97c4e9ee3e6be883cc59dc666e")))) (define bootstrap-executable (mlambda (program system) @@ -140,7 +154,9 @@ for system '~a'") ((sha256) (origin (method url-fetch/executable) - (uri (bootstrap-executable-url program system)) + (uri (map (cute string-append <> + (bootstrap-executable-file-name system program)) + %bootstrap-executable-base-urls)) (file-name program) (sha256 sha256))))))) @@ -301,7 +317,8 @@ or false to signal an error." "http://alpha.gnu.org/gnu/guix/bootstrap" "ftp://alpha.gnu.org/gnu/guix/bootstrap" "http://www.fdn.fr/~lcourtes/software/guix/packages" - "http://flashner.co.il/guix/bootstrap")) + "http://flashner.co.il/guix/bootstrap" + "http://lilypond.org/janneke/guix/")) (define (bootstrap-guile-url-path system) "Return the URI for FILE." @@ -311,6 +328,8 @@ or false to signal an error." "/20170217/guile-2.0.14.tar.xz") ("armhf-linux" "/20150101/guile-2.0.11.tar.xz") + ("i586-gnu" + "/20200326/guile-static-stripped-2.0.14-i586-pc-gnu.tar.xz") (_ "/20131110/guile-2.0.9.tar.xz")))) @@ -326,7 +345,9 @@ or false to signal an error." ("armhf-linux" (base32 "1mi3brl7l58aww34rawhvja84xc7l1b4hmwdmc36fp9q9mfx0lg5")) ("aarch64-linux" - (base32 "1giy2aprjmn5fp9c4s9r125fljw4wv6ixy5739i5bffw4jgr0f9r")))) + (base32 "1giy2aprjmn5fp9c4s9r125fljw4wv6ixy5739i5bffw4jgr0f9r")) + ("i586-gnu" + (base32 "0wgqpsmvg25rnqn49ap7kwd2qxccd8dr4lllzp7i3rjvgav27vac")))) (define (bootstrap-guile-origin system) "Return an <origin> object for the Guile tarball of SYSTEM." @@ -456,6 +477,8 @@ $out/bin/guile --version~%" "/20150101/static-binaries.tar.xz") ("aarch64-linux" "/20170217/static-binaries.tar.xz") + ("i586-gnu" + "/20200326/static-binaries-0-i586-pc-gnu.tar.xz") (_ "/20131110/static-binaries.tar.xz"))) %bootstrap-base-urls)) @@ -473,6 +496,9 @@ $out/bin/guile --version~%" ("aarch64-linux" (base32 "18dfiq6c6xhsdpbidigw6480wh0vdgsxqq3xindq4lpdgqlccpfh")) + ("i586-gnu" + (base32 + "17kllqnf3fg79gzy9ansgi801c46yh9c23h4d923plvb0nfm1cfn")) ("mips64el-linux" (base32 "072y4wyfsj1bs80r6vbybbafy8ya4vfy7qj25dklwk97m6g71753")))))) @@ -519,6 +545,8 @@ $out/bin/guile --version~%" "/20150101/binutils-2.25.tar.xz") ("aarch64-linux" "/20170217/binutils-2.27.tar.xz") + ("i586-gnu" + "/20200326/binutils-static-stripped-2.34-i586-pc-gnu.tar.xz") (_ "/20131110/binutils-2.23.2.tar.xz"))) %bootstrap-base-urls)) @@ -536,6 +564,9 @@ $out/bin/guile --version~%" ("aarch64-linux" (base32 "111s7ilfiby033rczc71797xrmaa3qlv179wdvsaq132pd51xv3n")) + ("i586-gnu" + (base32 + "11kykv1kmqc5wln57rs4klaqa13hm952smkc57qcsyss21kfjprs")) ("mips64el-linux" (base32 "1x8kkhcxmfyzg1ddpz2pxs6fbdl6412r7x0nzbmi5n7mj8zw2gy7")))))) @@ -589,6 +620,8 @@ $out/bin/guile --version~%" "/20150101/glibc-2.20.tar.xz") ("aarch64-linux" "/20170217/glibc-2.25.tar.xz") + ("i586-gnu" + "/20200326/glibc-stripped-2.31-i586-pc-gnu.tar.xz") (_ "/20131110/glibc-2.18.tar.xz"))) %bootstrap-base-urls)) @@ -606,6 +639,9 @@ $out/bin/guile --version~%" ("aarch64-linux" (base32 "07nx3x8598i2924rjnlrncg6rm61c9bmcczbbcpbx0fb742nvv5c")) + ("i586-gnu" + (base32 + "14ddm10lpbas8bankmn5bcrlqvz1v5dnn1qjzxb19r57vd2w5952")) ("mips64el-linux" (base32 "0k97a3whzx3apsi9n2cbsrr79ad6lh00klxph9hw4fqyp1abkdsg"))))))))) @@ -675,6 +711,8 @@ exec ~a/bin/.gcc-wrapped -B~a/lib \ "/20150101/gcc-4.8.4.tar.xz") ("aarch64-linux" "/20170217/gcc-5.4.0.tar.xz") + ("i586-gnu" + "/20200326/gcc-stripped-5.5.0-i586-pc-gnu.tar.xz") (_ "/20131110/gcc-4.8.2.tar.xz"))) %bootstrap-base-urls)) @@ -692,6 +730,9 @@ exec ~a/bin/.gcc-wrapped -B~a/lib \ ("aarch64-linux" (base32 "1ar3vdzyqbfm0z36kmvazvfswxhcihlacl2dzdjgiq25cqnq9ih1")) + ("i586-gnu" + (base32 + "1j2zc58wzil71a34h7c70sd68dmqvcscrw3rmn2whq79vd70zvv5")) ("mips64el-linux" (base32 "1m5miqkyng45l745n0sfafdpjkqv9225xf44jqkygwsipj2cv9ks"))))))))) @@ -808,19 +849,18 @@ exec ~a/bin/.gcc-wrapped -B~a/lib \ (define (%bootstrap-inputs) ;; The initial, pre-built inputs. From now on, we can start building our ;; own packages. - `(,@(match (%current-system) - ((or "i686-linux" "x86_64-linux") - `(("linux-libre-headers" ,%bootstrap-linux-libre-headers) - ("bootstrap-mescc-tools" ,%bootstrap-mescc-tools) - ("mes" ,%bootstrap-mes))) - (_ - `(("libc" ,%bootstrap-glibc) - ("gcc" ,%bootstrap-gcc) - ("binutils" ,%bootstrap-binutils)))) - ("coreutils&co" ,%bootstrap-coreutils&co) - - ;; In gnu-build-system.scm, we rely on the availability of Bash. - ("bash" ,%bootstrap-coreutils&co))) + (match (%current-system) + ((or "i686-linux" "x86_64-linux") + `(("linux-libre-headers" ,%bootstrap-linux-libre-headers) + ("bootstrap-mescc-tools" ,%bootstrap-mescc-tools) + ("mes" ,%bootstrap-mes))) + (_ + `(("libc" ,%bootstrap-glibc) + ("gcc" ,%bootstrap-gcc) + ("binutils" ,%bootstrap-binutils) + ("coreutils&co" ,%bootstrap-coreutils&co) + ;; In gnu-build-system.scm, we rely on the availability of Bash. + ("bash" ,%bootstrap-coreutils&co))))) (define %bootstrap-inputs-for-tests ;; These are bootstrap inputs that are cheap to produce (no compilation diff --git a/gnu/packages/build-tools.scm b/gnu/packages/build-tools.scm index d27c951d43..a8ffa56bc6 100644 --- a/gnu/packages/build-tools.scm +++ b/gnu/packages/build-tools.scm @@ -171,7 +171,7 @@ files and generates build instructions for the Ninja build system.") (define-public meson (package (name "meson") - (version "0.50.1") + (version "0.53.2") (source (origin (method url-fetch) (uri (string-append "https://github.com/mesonbuild/meson/" @@ -179,7 +179,7 @@ files and generates build instructions for the Ninja build system.") version ".tar.gz")) (sha256 (base32 - "1k2fw5qk4mqjcb4j5dhp8xfn0caqphb11yh8zkw7v9w01kb5d3zn")))) + "07y2hh9dfn1m9g4bsy49nbn3vdmd0b2iwr8bxg19fhqq6c7q73ry")))) (build-system python-build-system) (arguments `(;; FIXME: Tests require many additional inputs, a fix for the RUNPATH diff --git a/gnu/packages/c.scm b/gnu/packages/c.scm index 160f456f79..5718ec66ac 100644 --- a/gnu/packages/c.scm +++ b/gnu/packages/c.scm @@ -6,6 +6,7 @@ ;;; Copyright © 2019 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2019 Guillaume Le Vaillant <glv@posteo.net> ;;; Copyright © 2019 Andreas Enge <andreas@enge.fr> +;;; Copyright © 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org> ;;; ;;; This file is part of GNU Guix. ;;; @@ -252,3 +253,38 @@ structures and functions commonly needed, such as maps, deques, linked lists, string formatting and autoresizing, option and config file parsing, type checking casts and more.") (license license:lgpl2.1+))) + +(define-public sparse + (package + (name "sparse") + (version "0.6.1") + (source (origin + (method url-fetch) + (uri + (string-append "mirror://kernel.org/software/devel/sparse/dist/" + "sparse-" version ".tar.xz")) + (sha256 + (base32 + "0qavyryxmhd1rf11akgn1nq3r15k11bqa3qajaq36a56r225rc7x")))) + (build-system gnu-build-system) + (inputs `(("perl" ,perl))) + (arguments + '(#:make-flags `(,(string-append "PREFIX=" (assoc-ref %outputs "out"))) + #:phases (modify-phases %standard-phases + (delete 'configure) + (add-after 'unpack 'patch-cgcc + (lambda _ + (substitute* "cgcc" + (("'cc'") (string-append "'" (which "gcc") "'"))) + #t))))) + (synopsis "Semantic C parser for Linux development") + (description + "Sparse is a semantic parser for C and is required for Linux development. +It provides a compiler frontend capable of parsing most of ANSI C as well as +many GCC extensions, and a collection of sample compiler backends, including a +static analyzer also called @file{sparse}. Sparse provides a set of +annotations designed to convey semantic information about types, such as what +address space pointers point to, or what locks a function acquires or +releases.") + (home-page "https://sparse.wiki.kernel.org/index.php/Main_Page") + (license license:expat))) diff --git a/gnu/packages/calendar.scm b/gnu/packages/calendar.scm index 81b2b436c1..104d61148a 100644 --- a/gnu/packages/calendar.scm +++ b/gnu/packages/calendar.scm @@ -38,6 +38,7 @@ #:use-module (gnu packages dav) #:use-module (gnu packages freedesktop) #:use-module (gnu packages glib) + #:use-module (gnu packages gnome) #:use-module (gnu packages gtk) #:use-module (gnu packages icu4c) #:use-module (gnu packages perl) @@ -136,7 +137,10 @@ the <tz.h> library for handling time zones and leap seconds.") (build-system cmake-build-system) (arguments '(#:tests? #f ; test suite appears broken - #:configure-flags '("-DSHARED_ONLY=true") + #:configure-flags '("-DSHARED_ONLY=true" + ;; required by evolution-data-server + "-DGOBJECT_INTROSPECTION=true" + "-DICAL_GLIB_VAPI=true") #:phases (modify-phases %standard-phases (add-before 'configure 'patch-paths @@ -153,9 +157,11 @@ the <tz.h> library for handling time zones and leap seconds.") (("\\\"/usr/share/lib/zoneinfo\\\"") ""))) #t))))) (native-inputs - `(("gtk-doc" ,gtk-doc) + `(("gobject-introspection" ,gobject-introspection) + ("gtk-doc" ,gtk-doc) ("perl" ,perl) - ("pkg-config" ,pkg-config))) + ("pkg-config" ,pkg-config) + ("vala" ,vala))) (inputs `(("glib" ,glib) ("libxml2" ,libxml2) diff --git a/gnu/packages/cdrom.scm b/gnu/packages/cdrom.scm index a2f1121b1a..bd44ae8e80 100644 --- a/gnu/packages/cdrom.scm +++ b/gnu/packages/cdrom.scm @@ -9,7 +9,7 @@ ;;; Copyright © 2017 John Darrington <jmd@gnu.org> ;;; Copyright © 2017 Thomas Danckaert <post@thomasdanckaert.be> ;;; Copyright © 2017, 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr> -;;; Copyright © 2017 ng0 <ng0@n0.is> +;;; Copyright © 2017 Nikita <nikita@n0.is> ;;; Copyright © 2018 Oleg Pykhalov <go.wigust@gmail.com> ;;; Copyright © 2018, 2019 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2019 Eric Bavier <bavier@member.fsf.org> @@ -477,7 +477,7 @@ capacity is user-selectable.") ("eudev" ,eudev) ("fontconfig" ,fontconfig) ("libexif" ,libexif) - ("libjpeg" ,libjpeg) + ("libjpeg" ,libjpeg-turbo) ("ffmpeg" ,ffmpeg-3.4))) (native-inputs `(("pkg-config" ,pkg-config) diff --git a/gnu/packages/check.scm b/gnu/packages/check.scm index 5f3073d556..e8547a5096 100644 --- a/gnu/packages/check.scm +++ b/gnu/packages/check.scm @@ -23,7 +23,7 @@ ;;; Copyright © 2017 Frederick M. Muriithi <fredmanglis@gmail.com> ;;; Copyright © 2017, 2019 Mathieu Othacehe <m.othacehe@gmail.com> ;;; Copyright © 2017, 2019 Kei Kebreau <kkebreau@posteo.net> -;;; Copyright © 2017 ng0 <ng0@n0.is> +;;; Copyright © 2017 Nikita <nikita@n0.is> ;;; Copyright © 2015, 2017, 2018 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2016, 2017, 2018, 2019, 2020 Marius Bakke <mbakke@fastmail.com> ;;; Copyright © 2017, 2018, 2020 Ludovic Courtès <ludo@gnu.org> @@ -31,6 +31,8 @@ ;;; Copyright © 2019 Pierre Langlois <pierre.langlois@gmx.com> ;;; Copyright © 2019 Chris Marusich <cmmarusich@gmail.com> ;;; Copyright © 2020 Lars-Dominik Braun <ldb@leibniz-psychology.org> +;;; Copyright © 2020 Brice Waegeneire <brice@waegenei.re> +;;; Copyright © 2020 Josh Marshall <joshua.r.marshall.1991@gmail.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -65,6 +67,7 @@ #:use-module (gnu packages python-web) #:use-module (gnu packages python-xyz) #:use-module (gnu packages time) + #:use-module (gnu packages xml) #:use-module (guix utils) #:use-module ((guix licenses) #:prefix license:) #:use-module (guix packages) @@ -643,26 +646,20 @@ doctest.") (define-public python-mock (package (name "python-mock") - (version "2.0.0") + (version "3.0.5") (source (origin (method url-fetch) (uri (pypi-uri "mock" version)) (sha256 (base32 - "1flbpksir5sqrvq2z0dp8sl4bzbadg21sj4d42w3klpdfvgvcn5i")))) + "1hrp6j0yrx2xzylfv02qa8kph661m6yq4p0mc8fnimch9j4psrc3")))) (propagated-inputs - `(("python-pbr" ,python-pbr-minimal) - ("python-six" ,python-six))) + `(("python-six" ,python-six))) (build-system python-build-system) - (native-inputs - `(("python-unittest2" ,python-unittest2))) (arguments - `(#:phases - (modify-phases %standard-phases - (replace 'check - (lambda _ - (zero? (system* "unit2"))))))) + ;; FIXME: Tests require "pytest", which depends on this package. + '(#:tests? #f)) (home-page "https://github.com/testing-cabal/mock") (synopsis "Python mocking and patching library for testing") (description @@ -770,35 +767,40 @@ standard library.") (define-public python-pytest (package (name "python-pytest") - (version "4.4.2") + (version "5.3.5") (source (origin (method url-fetch) (uri (pypi-uri "pytest" version)) (sha256 (base32 - "18w38kjnffdcrlbw6ny6dksgxai6x9bxpjs2m6klqmb8hfzjkcb2")))) + "139i9cjhrv5aici3skq8iihvfb3lq0d8xb5j7qycr2hlk8cfjpqd")))) (build-system python-build-system) (arguments `(#:phases (modify-phases %standard-phases (replace 'check - (lambda _ - (invoke "pytest" "-vv" "-k" - (string-append - ;; These tests involve the /usr directory, and fails. - "not test_remove_dir_prefix" - " and not test_argcomplete" - ;; This test tries to override PYTHONPATH, and - ;; subsequently fails to locate the test libraries. - " and not test_collection"))))))) + (lambda* (#:key (tests? #t) #:allow-other-keys) + (if tests? + (invoke "pytest" "-vv" "-k" + (string-append + ;; These tests involve the /usr directory, and fails. + "not test_remove_dir_prefix" + " and not test_argcomplete" + ;; This test tries to override PYTHONPATH, and + ;; subsequently fails to locate the test libraries. + " and not test_collection")) + (format #t "test suite not run~%")) + #t))))) (propagated-inputs `(("python-atomicwrites" ,python-atomicwrites) ("python-attrs" ,python-attrs-bootstrap) ("python-more-itertools" ,python-more-itertools) + ("python-packaging" ,python-packaging-bootstrap) ("python-pluggy" ,python-pluggy) ("python-py" ,python-py) - ("python-six" ,python-six-bootstrap))) + ("python-six" ,python-six-bootstrap) + ("python-wcwidth" ,python-wcwidth))) (native-inputs `(;; Tests need the "regular" bash since 'bash-final' lacks `compgen`. ("bash" ,bash) @@ -806,7 +808,8 @@ standard library.") ("python-nose" ,python-nose) ("python-mock" ,python-mock) ("python-pytest" ,python-pytest-bootstrap) - ("python-setuptools-scm" ,python-setuptools-scm))) + ("python-setuptools-scm" ,python-setuptools-scm) + ("python-xmlschema" ,python-xmlschema))) (home-page "https://docs.pytest.org/en/latest/") (synopsis "Python testing library") (description @@ -816,15 +819,41 @@ and many external plugins.") (license license:expat) (properties `((python2-variant . ,(delay python2-pytest)))))) +;; Pytest 4.x are the last versions that support Python 2. (define-public python2-pytest - (let ((pytest (package-with-python2 - (strip-python2-variant python-pytest)))) - (package - (inherit pytest) - (propagated-inputs - `(("python2-funcsigs" ,python2-funcsigs) - ("python2-pathlib2" ,python2-pathlib2) - ,@(package-propagated-inputs pytest)))))) + (package + (inherit (strip-python2-variant python-pytest)) + (name "python2-pytest") + (version "4.6.9") + (source (origin + (method url-fetch) + (uri (pypi-uri "pytest" version)) + (sha256 + (base32 + "0fgkmpc31nzy97fxfrkqbzycigdwxwwmninx3qhkzp81migggs0r")))) + (build-system python-build-system) + (arguments + `(#:python ,python-2 + ,@(package-arguments python-pytest))) + (propagated-inputs + `(("python-atomicwrites" ,python2-atomicwrites) + ("python-attrs" ,python2-attrs-bootstrap) + ("python-funcsigs" ,python2-funcsigs) + ("python-importlib-metadata" ,python2-importlib-metadata-bootstrap) + ("python-more-itertools" ,python2-more-itertools) + ("python-packaging" ,python2-packaging-bootstrap) + ("python-pathlib2" ,python2-pathlib2) + ("python-pluggy" ,python2-pluggy) + ("python-py" ,python2-py) + ("python-six" ,python2-six-bootstrap) + ("python-wcwidth" ,python2-wcwidth))) + (native-inputs + `(("bash" ,bash) ;tests require 'compgen' + ("python-hypothesis" ,python2-hypothesis) + ("python-nose" ,python2-nose) + ("python-mock" ,python2-mock) + ("python-pytest" ,python2-pytest-bootstrap) + ("python-setuptools-scm" ,python2-setuptools-scm))))) (define-public python-pytest-bootstrap (package @@ -835,24 +864,37 @@ and many external plugins.") (properties `((python2-variant . ,(delay python2-pytest-bootstrap)))))) (define-public python2-pytest-bootstrap - (let ((pytest (package-with-python2 - (strip-python2-variant python-pytest-bootstrap)))) - (package (inherit pytest) - (propagated-inputs - `(("python2-funcsigs" ,python2-funcsigs-bootstrap) - ("python2-pathlib2" ,python2-pathlib2-bootstrap) - ,@(package-propagated-inputs pytest)))))) + (hidden-package + (package/inherit + python2-pytest + (name "python2-pytest-bootstrap") + (arguments + (substitute-keyword-arguments (package-arguments python2-pytest) + ((#:tests? _ #f) #f))) + (native-inputs + `(("python-setuptools-scm" ,python2-setuptools-scm))) + (propagated-inputs + `(("python-atomicwrites" ,python2-atomicwrites) + ("python-attrs" ,python2-attrs-bootstrap) + ("python-funcsigs" ,python2-funcsigs-bootstrap) + ("python-importlib-metadata" ,python2-importlib-metadata-bootstrap) + ("python-more-itertools" ,python2-more-itertools) + ("python-packaging" ,python2-packaging-bootstrap) + ("python-pathlib2" ,python2-pathlib2-bootstrap) + ("python-pluggy" ,python2-pluggy-bootstrap) + ("python-py" ,python2-py) + ("python-wcwidth" ,python2-wcwidth)))))) (define-public python-pytest-cov (package (name "python-pytest-cov") - (version "2.6.1") + (version "2.8.1") (source (origin (method url-fetch) (uri (pypi-uri "pytest-cov" version)) (sha256 - (base32 "0cyxbbghx2l4p60w10k00j1j74q1ngfiffr0pxn73ababjr69dha")))) + (base32 "0avzlk9p4nc44k7lpx9109dybq71xqnggxb9f4hp0l64pbc44ryc")))) (build-system python-build-system) (arguments `(#:phases @@ -881,18 +923,28 @@ supports coverage of subprocesses.") (define-public python-pytest-runner (package (name "python-pytest-runner") - (version "4.4") + (version "5.2") (source (origin (method url-fetch) (uri (pypi-uri "pytest-runner" version)) (sha256 (base32 - "1x0d9n40lsiphblbs61rdc0d5r31f6vh0vcahqdv0mffakbnrb80")))) + "0awll1bva5zy8cspsxcpv7pjcrdf5c6pf56nqn4f74vvmlzfgiwn")))) (build-system python-build-system) + (arguments + '(;; FIXME: The test suite requires 'python-flake8' and 'python-black', + ;; but that introduces a circular dependency. + #:tests? #f + #:phases (modify-phases %standard-phases + (replace 'check + (lambda* (#:key tests? #:allow-other-keys) + (if tests? + (invoke "pytest" "-vv") + (format #t "test suite not run~%")) + #t))))) (native-inputs - `(("python-pytest" ,python-pytest-bootstrap) - ("python-setuptools-scm" ,python-setuptools-scm))) + `(("python-setuptools-scm" ,python-setuptools-scm))) (home-page "https://github.com/pytest-dev/pytest-runner") (synopsis "Invoke py.test as a distutils command") (description @@ -1383,14 +1435,14 @@ have failed since the last commit or what tests are currently failing."))) (define-public python-coverage (package (name "python-coverage") - (version "4.5.3") + (version "5.0.3") (source (origin (method url-fetch) (uri (pypi-uri "coverage" version)) (sha256 (base32 - "02f6m073qdispn96rc616hg0rnmw1pgqzw3bgxwiwza4zf9hirlx")))) + "1vrg8panqw79pswg52ygbrff3wdnxarrd9qz6c64ah0c4h2cmbvp")))) (build-system python-build-system) (arguments ;; FIXME: 95 tests failed, 539 passed, 6 skipped, 2 errors. @@ -1407,6 +1459,30 @@ executed.") (define-public python2-coverage (package-with-python2 python-coverage)) +(define-public python-pytest-asyncio + (package + (name "python-pytest-asyncio") + (version "0.10.0") + (source + (origin + (method url-fetch) + (uri (pypi-uri "pytest-asyncio" version)) + (sha256 + (base32 "1bysy4nii13bm7h345wxf8fxcjhab7l374pqdv7vwv3izl053b4z")))) + (build-system python-build-system) + (native-inputs + `(("python-coverage" ,python-coverage) + ("python-async-generator" ,python-async-generator) + ("python-hypothesis" ,python-hypothesis) + ("python-pytest" ,python-pytest))) + (home-page "https://github.com/pytest-dev/pytest-asyncio") + (synopsis "Pytest support for asyncio") + (description "Python asyncio code is usually written in the form of +coroutines, which makes it slightly more difficult to test using normal +testing tools. @code{pytest-asyncio} provides useful fixtures and markers +to make testing async code easier.") + (license license:asl2.0))) + (define-public python-cov-core (package (name "python-cov-core") @@ -1651,20 +1727,20 @@ instantly.") (define-public python-hypothesis (package (name "python-hypothesis") - (version "4.18.3") + (version "5.4.1") (source (origin (method url-fetch) (uri (pypi-uri "hypothesis" version)) (sha256 (base32 - "0a35nwqyjnm4cphi43xracqpkws0ip61mndvqb1iqq7gkva83lb1")))) + "0zn09bn6hadk4vxl6jy8bkjr5fz8mrhin3z46w7pq5qgbaycr89p")))) (build-system python-build-system) - (native-inputs - `(("python-flake8" ,python-flake8) - ("python-pytest" ,python-pytest-bootstrap))) + (arguments + ;; XXX: Tests are not distributed with the PyPI archive. + '(#:tests? #f)) (propagated-inputs `(("python-attrs" ,python-attrs-bootstrap) - ("python-coverage" ,python-coverage))) + ("python-sortedcontainers" ,python-sortedcontainers))) (synopsis "Library for property based testing") (description "Hypothesis is a library for testing your Python code against a much larger range of examples than you would ever want to write by hand. It’s @@ -1674,10 +1750,18 @@ seamlessly into your existing Python unit testing work flow.") (license license:mpl2.0) (properties `((python2-variant . ,(delay python2-hypothesis)))))) +;; This is the last version of Hypothesis that supports Python 2. (define-public python2-hypothesis (let ((hypothesis (package-with-python2 (strip-python2-variant python-hypothesis)))) (package (inherit hypothesis) + (version "4.57.1") + (source (origin + (method url-fetch) + (uri (pypi-uri "hypothesis" version)) + (sha256 + (base32 + "183gpxbfcdhdqzlahkji5a71n6lmvgqsbkcb0ihqad51n2j6jhrw")))) (propagated-inputs `(("python2-enum34" ,python2-enum34) ,@(package-propagated-inputs hypothesis)))))) @@ -2049,7 +2133,9 @@ backported from Python 2.7 for Python 2.4+.") (uri (pypi-uri "behave" version)) (sha256 (base32 - "11hsz365qglvpp1m1w16239c3kiw15lw7adha49lqaakm8kj6rmr")))) + "11hsz365qglvpp1m1w16239c3kiw15lw7adha49lqaakm8kj6rmr")) + (patches (search-patches + "behave-skip-a-couple-of-tests.patch")))) (build-system python-build-system) (native-inputs `(("python-mock" ,python-mock) @@ -2230,13 +2316,13 @@ create data based on random numbers and yet remain repeatable.") (define-public python-freezegun (package (name "python-freezegun") - (version "0.3.12") + (version "0.3.14") (source (origin (method url-fetch) (uri (pypi-uri "freezegun" version)) (sha256 - (base32 "1rx57v8ryjncjimg8hys9kx1r3rknvwcl4y340g20jn0sf69qk9a")))) + (base32 "0al75mk829j1izxi760b7yjnknjihyfhp2mvi5qiyrxb9cpxwqk2")))) (build-system python-build-system) (native-inputs `(("python-mock" ,python-mock) @@ -2403,11 +2489,21 @@ portable to just about any platform.") (let ((out (assoc-ref outputs "out"))) (setenv "CC" "gcc") (setenv "PREFIX" out) + + ;; XXX: Without this flag, the CLOCK_REALTIME test hangs + ;; indefinitely. See README.packagers for more information. + ;; Try removing this for future versions of libfaketime. + (setenv "FAKETIME_COMPILE_CFLAGS" "-DFORCE_MONOTONIC_FIX") + #t))) (add-before 'check 'pre-check (lambda _ (substitute* "test/functests/test_exclude_mono.sh" (("/bin/bash") (which "bash"))) + + ;; Do not fail due to use of 'ftime', which was deprecated in + ;; glibc 2.31. Remove this for later versions of libfaketime. + (setenv "FAKETIME_COMPILE_CFLAGS" "-Wno-deprecated-declarations") #t))) #:test-target "test")) (native-inputs @@ -2436,11 +2532,10 @@ provides a simple way to achieve this.") (arguments `(#:phases (modify-phases %standard-phases - (add-after 'unpack 'skip-broken-test + (add-after 'unpack 'fix-test (lambda _ (substitute* "tests/test-umockdev.c" - (("/\\* sys/ in other dir") - (string-append "return; // "))) + (("/run") "/tmp")) #t))))) (native-inputs `(("vala" ,vala) @@ -2453,8 +2548,7 @@ provides a simple way to achieve this.") (inputs `(("glib" ,glib) ("eudev" ,eudev) - ("libgudev" ,libgudev) - ("gobject-introspection" ,gobject-introspection))) + ("libgudev" ,libgudev))) (home-page "https://github.com/martinpitt/umockdev/") (synopsis "Mock hardware devices for creating unit tests") (description "umockdev mocks hardware devices for creating integration @@ -2545,6 +2639,19 @@ system. The code under test requires no modification to work with pyfakefs.") (define-public python2-pyfakefs (package-with-python2 python-pyfakefs)) +;; This minimal variant is used to avoid a circular dependency between +;; python2-importlib-metadata, which requires pyfakefs for its tests, and +;; python2-pytest, which requires python2-importlib-metadata. +(define-public python2-pyfakefs-bootstrap + (hidden-package + (package + (inherit python2-pyfakefs) + (name "python2-pyfakefs-bootstrap") + (native-inputs '()) + (arguments + `(#:python ,python-2 + #:tests? #f))))) + (define-public python-aiounittest (package (name "python-aiounittest") diff --git a/gnu/packages/chemistry.scm b/gnu/packages/chemistry.scm index 855ae2df22..0540dfceb6 100644 --- a/gnu/packages/chemistry.scm +++ b/gnu/packages/chemistry.scm @@ -4,6 +4,7 @@ ;;; Copyright © 2018 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2020 Björn Höfling <bjoern.hoefling@bjoernhoefling.de> +;;; Copyright © 2020 Vincent Legoll <vincent.legoll@gmail.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -29,15 +30,20 @@ #:use-module (gnu packages) #:use-module (gnu packages algebra) #:use-module (gnu packages boost) + #:use-module (gnu packages check) #:use-module (gnu packages compression) #:use-module (gnu packages documentation) #:use-module (gnu packages gl) + #:use-module (gnu packages graphviz) #:use-module (gnu packages gv) #:use-module (gnu packages maths) + #:use-module (gnu packages mpi) + #:use-module (gnu packages perl) #:use-module (gnu packages pkg-config) #:use-module (gnu packages python) #:use-module (gnu packages python-xyz) #:use-module (gnu packages qt) + #:use-module (gnu packages sphinx) #:use-module (gnu packages xml) #:use-module (guix build-system cmake) #:use-module (guix build-system gnu) @@ -300,6 +306,126 @@ is currently not actively maintained and works only with Python 2 and NumPy < 1.9.") (license license:cecill))) +(define-public tng + (package + (name "tng") + (version "1.8.2") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/gromacs/tng.git") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1apf2n8nb34z09xarj7k4jgriq283l769sakjmj5aalpbilvai4q")))) + (build-system cmake-build-system) + (inputs + `(("zlib" ,zlib))) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-after 'unpack 'remove-bundled-zlib + (lambda _ + (delete-file-recursively "external") + #t)) + (replace 'check + (lambda _ + (invoke "../build/bin/tests/tng_testing") + #t))))) + (home-page "https://github.com/gromacs/tng") + (synopsis "Trajectory Next Generation binary format manipulation library") + (description "TRAJNG (Trajectory next generation) is a program library for +handling molecular dynamics (MD) trajectories. It can store coordinates, and +optionally velocities and the H-matrix. Coordinates and velocities are +stored with user-specified precision.") + (license license:bsd-3))) + +(define-public gromacs + (package + (name "gromacs") + (version "2020.2") + (source (origin + (method url-fetch) + (uri (string-append "http://ftp.gromacs.org/pub/gromacs/gromacs-" + version ".tar.gz")) + (sha256 + (base32 + "1wyjgcdl30wy4hy6jvi9lkq53bqs9fgfq6fri52dhnb3c76y8rbl")) + ;; Our version of tinyxml2 is far newer than the bundled one and + ;; require fixing `testutils' code. See patch header for more info + (patches (search-patches "gromacs-tinyxml2.patch")))) + (build-system cmake-build-system) + (arguments + `(#:configure-flags + (list "-DGMX_DEVELOPER_BUILD=on" ; Needed to run tests + ;; Unbundling + "-DGMX_USE_LMFIT=EXTERNAL" + "-DGMX_BUILD_OWN_FFTW=off" + "-DGMX_EXTERNAL_BLAS=on" + "-DGMX_EXTERNAL_LAPACK=on" + "-DGMX_EXTERNAL_TNG=on" + "-DGMX_EXTERNAL_ZLIB=on" + "-DGMX_EXTERNAL_TINYXML2=on" + (string-append "-DTinyXML2_DIR=" + (assoc-ref %build-inputs "tinyxml2")) + ;; Workaround for cmake/FindSphinx.cmake version parsing that does + ;; not understand the guix-wrapped `sphinx-build --version' answer + (string-append "-DSPHINX_EXECUTABLE_VERSION=" + ,(package-version python-sphinx))) + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'fixes + (lambda* (#:key inputs #:allow-other-keys) + ;; Still bundled: part of gromacs, source behind registration + ;; but free software anyways + ;;(delete-file-recursively "src/external/vmd_molfile") + ;; Still bundled: threads-based OpenMPI-compatible fallback + ;; designed to be bundled like that + ;;(delete-file-recursively "src/external/thread_mpi") + ;; Unbundling + (delete-file-recursively "src/external/lmfit") + (delete-file-recursively "src/external/clFFT") + (delete-file-recursively "src/external/fftpack") + (delete-file-recursively "src/external/build-fftw") + (delete-file-recursively "src/external/tng_io") + (delete-file-recursively "src/external/tinyxml2") + (delete-file-recursively "src/external/googletest") + (copy-recursively (assoc-ref inputs "googletest-source") + "src/external/googletest") + ;; This test warns about the build host hardware, disable + (substitute* "src/gromacs/hardware/tests/hardwaretopology.cpp" + (("TEST\\(HardwareTopologyTest, HwlocExecute\\)") + "void __guix_disabled()")) + #t))))) + (native-inputs + `(("doxygen" ,doxygen) + ("googletest-source" ,(package-source googletest)) + ("graphviz" ,graphviz) + ("pkg-config" ,pkg-config) + ("python" ,python) + ("python-pygments" ,python-pygments) + ("python-sphinx" ,python-sphinx))) + (inputs + `(("fftwf" ,fftwf) + ("hwloc" ,hwloc-2 "lib") + ("lmfit" ,lmfit) + ("openblas" ,openblas) + ("perl" ,perl) + ("tinyxml2" ,tinyxml2) + ("tng" ,tng))) + (home-page "http://www.gromacs.org/") + (synopsis "Molecular dynamics software package") + (description "GROMACS is a versatile package to perform molecular dynamics, +i.e. simulate the Newtonian equations of motion for systems with hundreds to +millions of particles. It is primarily designed for biochemical molecules like +proteins, lipids and nucleic acids that have a lot of complicated bonded +interactions, but since GROMACS is extremely fast at calculating the nonbonded +interactions (that usually dominate simulations) many groups are also using it +for research on non-biological systems, e.g. polymers. GROMACS supports all the +usual algorithms you expect from a modern molecular dynamics implementation.") + (license license:lgpl2.1+))) + (define-public openbabel (package (name "openbabel") diff --git a/gnu/packages/chez.scm b/gnu/packages/chez.scm index 3330f91dfc..d08363a8dc 100644 --- a/gnu/packages/chez.scm +++ b/gnu/packages/chez.scm @@ -77,7 +77,7 @@ (build-system gnu-build-system) (inputs `(("ncurses" ,ncurses) - ("libuuid" ,util-linux) + ("libuuid" ,util-linux "lib") ("libx11" ,libx11) ("xorg-rgb" ,xorg-rgb) ("nanopass" ,nanopass) diff --git a/gnu/packages/chromium.scm b/gnu/packages/chromium.scm index 131943710a..9ab7ca1f91 100644 --- a/gnu/packages/chromium.scm +++ b/gnu/packages/chromium.scm @@ -248,7 +248,7 @@ from forcing GEXP-PROMISE." #:system system #:guile-for-build guile))) -(define %chromium-version "81.0.4044.129") +(define %chromium-version "81.0.4044.138") (define %ungoogled-revision "c2a89fb6b5b559c826796c811741fa8ed3e11de8") (define %debian-revision "debian/81.0.4044.92-1") (define package-revision "0") @@ -264,7 +264,7 @@ from forcing GEXP-PROMISE." %chromium-version ".tar.xz")) (sha256 (base32 - "1ls663s1f74p912x42qp3zcvm17kmjiv1ij6yy1c14gdhcpmjx7z")))) + "19kpzmqmld0m0nflx13w9flxfal19msnxhzl3lip1jqih65z4y7l")))) (define %ungoogled-origin (origin @@ -427,18 +427,6 @@ from forcing GEXP-PROMISE." `(cons "--enable-custom-modes" ,flags)))))) -;; Add a custom ld wrapper that supports quoted strings in response files. -;; To be merged with 'ld-wrapper' in a future rebuild cycle. -(define-public ld-wrapper-next - (let ((orig (car (assoc-ref (%final-inputs) "ld-wrapper")))) - (package - (inherit orig) - (name "ld-wrapper-next") - (inputs - `(("wrapper" ,(search-path %load-path - "gnu/packages/ld-wrapper-next.in")) - ,@(alist-delete "wrapper" (package-inputs orig))))))) - (define-public ungoogled-chromium (package (name "ungoogled-chromium") @@ -539,6 +527,12 @@ from forcing GEXP-PROMISE." (modify-phases %standard-phases (add-after 'unpack 'patch-stuff (lambda _ + ;; Fix build with newer re2. Taken from: + ;; https://chromium-review.googlesource.com/c/chromium/src/+/2145261 + (substitute* "components/autofill/core/browser/address_rewriter.cc" + (("options\\.set_utf8\\(true\\)") + "options.set_encoding(RE2::Options::EncodingUTF8)")) + (substitute* '("base/process/launch_posix.cc" "base/third_party/dynamic_annotations/dynamic_annotations.c" @@ -770,7 +764,6 @@ from forcing GEXP-PROMISE." ("clang" ,clang-9) ("gn" ,gn) ("gperf" ,gperf) - ("ld-wrapper" ,ld-wrapper-next) ("ninja" ,ninja) ("node" ,node) ("pkg-config" ,pkg-config) @@ -799,7 +792,7 @@ from forcing GEXP-PROMISE." ("glib" ,glib) ("gtk+" ,gtk+) ("harfbuzz" ,harfbuzz) - ("icu4c" ,icu4c-66.1) + ("icu4c" ,icu4c) ("jsoncpp" ,jsoncpp) ("lcms" ,lcms) ("libevent" ,libevent) diff --git a/gnu/packages/ci.scm b/gnu/packages/ci.scm index 817c8a96db..ec05523e0d 100644 --- a/gnu/packages/ci.scm +++ b/gnu/packages/ci.scm @@ -47,8 +47,8 @@ #:use-module (guix build-system gnu)) (define-public cuirass - (let ((commit "27af1d34646f4e3fca09283cb52caa8b89cbb2b1") - (revision "29")) + (let ((commit "9559fd18d4b89bf797216fbe187f2b26b0a2d165") + (revision "30")) (package (name "cuirass") (version (git-version "0.0.1" revision commit)) @@ -60,7 +60,7 @@ (file-name (git-file-name name version)) (sha256 (base32 - "199fzv4d18qslcggl7lj42ib600nckp0c40x7ahnb4rgnjw8ppyi")))) + "026cpcws8mb483mywwx2znpy9i7lw5n3lyqa9k6d87kxmw59060c")))) (build-system gnu-build-system) (arguments '(#:modules ((guix build utils) @@ -120,7 +120,7 @@ `("GUILE_LOAD_COMPILED_PATH" ":" prefix (,objs))) #t)))))) (inputs - `(("guile" ,guile-2.2) + `(("guile" ,guile-3.0) ("guile-fibers" ,guile-fibers) ("guile-gcrypt" ,guile-gcrypt) ("guile-json" ,guile-json-3) diff --git a/gnu/packages/cinnamon.scm b/gnu/packages/cinnamon.scm index a8850391aa..e1c9d7b614 100644 --- a/gnu/packages/cinnamon.scm +++ b/gnu/packages/cinnamon.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2017 ng0 <ng0@n0.is> +;;; Copyright © 2017 Nikita <nikita@n0.is> ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2019 Efraim Flashner <efraim@flashner.co.il> ;;; @@ -51,13 +51,6 @@ (base32 "18mjy80ly9361npjhxpm3n0pkmrwviaqr2kixjb7hyxa6kzzh5xw")))) (build-system gnu-build-system) - (arguments - `(#:phases - (modify-phases %standard-phases - (add-before 'bootstrap 'skip-premature-configure - (lambda _ - (setenv "NOCONFIGURE" "set") - #t))))) ;; TODO: package 'libgsystem'. (inputs `(("accountsservice" ,accountsservice) diff --git a/gnu/packages/cmake.scm b/gnu/packages/cmake.scm index 2d2827ffee..cf3bc406bc 100644 --- a/gnu/packages/cmake.scm +++ b/gnu/packages/cmake.scm @@ -5,10 +5,12 @@ ;;; Copyright © 2014 Ian Denhardt <ian@zenhack.net> ;;; Copyright © 2015 Sou Bunnbu <iyzsong@gmail.com> ;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il> -;;; Copyright © 2017, 2018 Marius Bakke <mbakke@fastmail.com> +;;; Copyright © 2017, 2018, 2020 Marius Bakke <mbakke@fastmail.com> ;;; Copyright © 2018 Arun Isaac <arunisaac@systemreboot.net> ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2019 Maxim Cournoyer <maxim.cournoyer@gmail.com> +;;; Copyright © 2019 Pierre-Moana Levesque <pierre.moana.levesque@gmail.com> +;;; Copyright © 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org> ;;; ;;; This file is part of GNU Guix. ;;; @@ -32,6 +34,7 @@ #:use-module (guix utils) #:use-module (guix deprecation) #:use-module (guix build-system gnu) + #:use-module (guix build-system cmake) #:use-module (guix build-system emacs) #:use-module (gnu packages) #:use-module (gnu packages backup) @@ -39,19 +42,63 @@ #:use-module (gnu packages crypto) #:use-module (gnu packages curl) #:use-module (gnu packages file) + #:use-module (gnu packages hurd) #:use-module (gnu packages libevent) #:use-module (gnu packages ncurses) + #:use-module (gnu packages serialization) #:use-module (gnu packages sphinx) #:use-module (gnu packages texinfo) #:use-module (gnu packages xml) + #:use-module (ice-9 match) #:use-module (srfi srfi-1)) -;;; This minimal variant of CMake does not include the documentation. It is -;;; used by the cmake-build-system. -(define-public cmake-minimal +;;; Build phases shared between 'cmake-bootstrap' and the later variants +;;; that use cmake-build-system. +(define %common-build-phases + `((add-after 'unpack 'split-package + ;; Remove files that have been packaged in other package recipes. + (lambda _ + (delete-file "Auxiliary/cmake-mode.el") + (substitute* "Auxiliary/CMakeLists.txt" + ((".*cmake-mode.el.*") "")) + #t)) + (add-before 'configure 'patch-bin-sh + (lambda _ + ;; Replace "/bin/sh" by the right path in... a lot of + ;; files. + (substitute* + '("Modules/CompilerId/Xcode-3.pbxproj.in" + "Modules/Internal/CPack/CPack.RuntimeScript.in" + "Source/cmGlobalXCodeGenerator.cxx" + "Source/cmLocalUnixMakefileGenerator3.cxx" + "Source/cmExecProgramCommand.cxx" + "Utilities/Release/release_cmake.cmake" + "Tests/CMakeLists.txt" + "Tests/RunCMake/File_Generate/RunCMakeTest.cmake") + (("/bin/sh") (which "sh"))) + #t)))) + +(define %common-disabled-tests + '(;; This test copies libgcc_s.so.1 from GCC and tries to modify its RPATH, + ;; but does not cope with the file being read-only. + "BundleUtilities" + ;; This test requires network access. + "CTestTestUpload" + ;; This test requires 'ldconfig' which is not available in Guix. + "RunCMake.install")) + +(define %preserved-third-party-files + '(;; 'Source/cm_getdate.c' includes archive_getdate.c wholesale, so it must + ;; be available along with the required headers. + "Utilities/cmlibarchive/libarchive/archive_getdate.c" + "Utilities/cmlibarchive/libarchive/archive_getdate.h")) + +;;; The "bootstrap" CMake. It is used to build 'cmake-minimal' below, as well +;;; as any dependencies that need cmake-build-system. +(define-public cmake-bootstrap (package - (name "cmake-minimal") - (version "3.15.1") + (name "cmake-bootstrap") + (version "3.16.5") (source (origin (method url-fetch) (uri (string-append "https://www.cmake.org/files/v" @@ -59,23 +106,50 @@ "/cmake-" version ".tar.gz")) (sha256 (base32 - "1xyprly3sf4wi0n1x79k4n22yxm6pb7fv70gqr9lvc7qv14cbphq")) - (modules '((guix build utils))) + "1z4bb8z6b4dvq5hrvajrf1hyybqay3xybyimf71w1jgcp180nxjz")) + (modules '((guix build utils) + (ice-9 ftw))) (snippet - '(begin - ;; Drop bundled software. - (with-directory-excursion "Utilities" - (for-each delete-file-recursively - '("cmbzip2" - ;; "cmcompress" - "cmcurl" - "cmexpat" - ;; "cmjsoncpp" - ;; "cmlibarchive" - "cmliblzma" - ;; "cmlibuv" - "cmzlib")) - #t))))) + `(begin + ;; CMake bundles its dependencies in the "Utilities" directory. + ;; Delete those to ensure the system libraries are used. + (define preserved-files + '(,@%preserved-third-party-files + ;; Use the bundled JsonCpp during bootstrap to work around + ;; a circular dependency. TODO: JsonCpp can be built with + ;; Meson instead of CMake, but meson-build-system currently + ;; does not support cross-compilation. + "Utilities/cmjsoncpp" + ;; LibUV is required to bootstrap the initial build system. + "Utilities/cmlibuv")) + + (file-system-fold (lambda (dir stat result) ;enter? + (or (string=? "Utilities" dir) ;init + ;; The bundled dependencies are + ;; distinguished by having a "cm" + ;; prefix to their upstream names. + (and (string-prefix? "Utilities/cm" dir) + (not (member dir preserved-files))))) + (lambda (file stat result) ;leaf + (unless (or (member file preserved-files) + ;; Preserve top-level files. + (string=? "Utilities" + (dirname file))) + (delete-file file))) + (const #t) ;down + (lambda (dir stat result) ;up + (when (equal? (scandir dir) '("." "..")) + (rmdir dir))) + (const #t) ;skip + (lambda (file stat errno result) + (format (current-error-port) + "warning: failed to delete ~a: ~a~%" + file (strerror errno))) + #t + "Utilities" + lstat) + #t)) + (patches (search-patches "cmake-curl-certificates.patch")))) (build-system gnu-build-system) (arguments `(#:test-target "test" @@ -86,7 +160,7 @@ (string-append "--parallel=" parallel-job-count) (string-append "--prefix=" out) "--system-libs" - "--no-system-jsoncpp" ; FIXME: Circular dependency. + "--no-system-jsoncpp" ;; By default, the man pages and other docs land ;; in PREFIX/man and PREFIX/doc, but we want them ;; in share/{man,doc}. Note that unlike @@ -95,14 +169,18 @@ ;; to --mandir and --docdir. "--mandir=share/man" ,(string-append "--docdir=share/doc/cmake-" - (version-major+minor version)))) + (version-major+minor version)) + + ;; By default CMake is built without any optimizations. Use + ;; the recommended Release target for a ~2.5x speedup. + "--" "-DCMAKE_BUILD_TYPE=Release")) #:make-flags (let ((skipped-tests - (list "BundleUtilities" ; This test fails on Guix. + (list ,@%common-disabled-tests "CTestTestSubdir" ; This test fails to build 2 of the 3 tests. - ;; These tests requires network access. - "CTestCoverageCollectGCOV" - "CTestTestUpload"))) + ;; This test fails when ARGS (below) is in use, see + ;; <https://gitlab.kitware.com/cmake/cmake/issues/17165>. + "CTestCoverageCollectGCOV"))) (list (string-append ;; These arguments apply for the tests only. @@ -111,29 +189,7 @@ " --exclude-regex ^\\(" (string-join skipped-tests "\\|") "\\)$"))) #:phases (modify-phases %standard-phases - (add-after 'unpack 'split-package - ;; Remove files that have been packaged in other package recipes. - (lambda _ - (delete-file "Auxiliary/cmake-mode.el") - (substitute* "Auxiliary/CMakeLists.txt" - ((".*cmake-mode.el.*") "")) - #t)) - (add-before 'configure 'patch-bin-sh - (lambda _ - ;; Replace "/bin/sh" by the right path in... a lot of - ;; files. - (substitute* - '("Modules/CompilerId/Xcode-3.pbxproj.in" - "Modules/CPack.RuntimeScript.in" - "Source/cmGlobalXCodeGenerator.cxx" - "Source/cmLocalUnixMakefileGenerator3.cxx" - "Source/cmExecProgramCommand.cxx" - "Utilities/Release/release_cmake.cmake" - "Utilities/cmlibarchive/libarchive/archive_write_set_format_shar.c" - "Tests/CMakeLists.txt" - "Tests/RunCMake/File_Generate/RunCMakeTest.cmake") - (("/bin/sh") (which "sh"))) - #t)) + ,@%common-build-phases (add-before 'configure 'set-paths (lambda _ ;; Help cmake's bootstrap process to find system libraries @@ -148,18 +204,31 @@ (apply invoke "./configure" configure-flags)))))) (inputs `(("bzip2" ,bzip2) - ("curl" ,curl) + ("curl" ,curl-minimal) ("expat" ,expat) ("file" ,file) ("libarchive" ,libarchive) - ("libuv" ,libuv) - ("ncurses" ,ncurses) ; required for ccmake + ,@(if (hurd-target?) + '() + `(("libuv" ,libuv))) ;not supported on the Hurd + ("ncurses" ,ncurses) ;required for ccmake ("rhash" ,rhash) ("zlib" ,zlib))) (native-search-paths (list (search-path-specification (variable "CMAKE_PREFIX_PATH") - (files '(""))))) + (files '(""))) + ;; "cmake-curl-certificates.patch" changes CMake to honor 'SSL_CERT_DIR' + ;; and 'SSL_CERT_FILE', hence these search path entries. + (search-path-specification + (variable "SSL_CERT_DIR") + (separator #f) ;single entry + (files '("etc/ssl/certs"))) + (search-path-specification + (variable "SSL_CERT_FILE") + (file-type 'regular) + (separator #f) ;single entry + (files '("etc/ssl/certs/ca-certificates.crt"))))) (home-page "https://cmake.org/") (synopsis "Cross-platform build system") (description @@ -169,23 +238,84 @@ and compiler independent configuration files. CMake generates native makefiles and workspaces that can be used in the compiler environment of your choice.") (properties '((hidden? . #t))) (license (list license:bsd-3 ; cmake - license:bsd-4 ; cmcompress - license:bsd-2 ; cmlibarchive license:expat ; cmjsoncpp is dual MIT/public domain license:public-domain)))) ; cmlibarchive/archive_getdate.c +;;; This minimal variant of CMake does not include the documentation. It is +;;; used by the cmake-build-system. +(define-public cmake-minimal + (package + (inherit cmake-bootstrap) + (name "cmake-minimal") + (source (origin + (inherit (package-source cmake-bootstrap)) + (snippet + (match (origin-snippet (package-source cmake-bootstrap)) + ((_ _ exp ...) + ;; Now we can delete the remaining software bundles. + (append `(begin + (define preserved-files ',%preserved-third-party-files)) + exp)))))) + (inputs + `(("curl" ,curl) + ("jsoncpp" ,jsoncpp) + ,@(alist-delete "curl" (package-inputs cmake-bootstrap)))) + (build-system cmake-build-system) + (arguments + `(#:configure-flags + (list "-DCMAKE_USE_SYSTEM_LIBRARIES=ON" + (string-append "-DCMAKE_DOC_DIR=share/doc/cmake-" + ,(version-major+minor (package-version + cmake-bootstrap)))) + + ;; This is the CMake used in cmake-build-system. Ensure compiler + ;; optimizations are enabled to save size and CPU cycles. + #:build-type "Release" + #:phases + (modify-phases %standard-phases + ,@%common-build-phases + (replace 'check + (lambda* (#:key tests? parallel-tests? #:allow-other-keys) + (let ((skipped-tests (list ,@%common-disabled-tests + ;; This test requires the bundled libuv. + "BootstrapTest"))) + (if tests? + (begin + (invoke "ctest" "-j" (if parallel-tests? + (number->string (parallel-job-count)) + "1") + "--exclude-regex" + (string-append "^(" (string-join skipped-tests "|") ")$"))) + (format #t "test suite not run~%")) + #t)))) + ,@(if (%current-target-system) + '() + `(#:cmake ,cmake-bootstrap)))))) + +;;; The "user-facing" CMake, now with manuals and HTML documentation. (define-public cmake (package (inherit cmake-minimal) (name "cmake") (arguments (substitute-keyword-arguments (package-arguments cmake-minimal) - ((#:configure-flags configure-flags ''()) - `(append ,configure-flags - ;; Extra configure flags used to generate the documentation. - '("--sphinx-info" - "--sphinx-man" - "--sphinx-html"))) + ;; Use cmake-minimal this time. + ((#:cmake _ #f) + (if (%current-target-system) + cmake-minimal-cross + cmake-minimal)) + + ;; Enable debugging information for convenience. + ((#:build-type _ #f) "RelWithDebInfo") + + ((#:configure-flags flags ''()) + `(append (list "-DSPHINX_INFO=ON" "-DSPHINX_MAN=ON" "-DSPHINX_HTML=ON" + (string-append "-DCMAKE_DOC_DIR=share/doc/cmake-" + ,(version-major+minor (package-version + cmake-minimal))) + "-DCMAKE_INFO_DIR=share/info" + "-DCMAKE_MAN_DIR=share/man") + ,flags)) ((#:phases phases) `(modify-phases ,phases (add-after 'install 'move-html-doc @@ -208,45 +338,13 @@ and workspaces that can be used in the compiler environment of your choice.") (outputs '("out" "doc")) (properties (alist-delete 'hidden? (package-properties cmake-minimal))))) -(define-public cmake-3.15.5 - ;; CMake 3.15.5 fixes some issues, but declare another version to - ;; avoid triggering the rebuild of all CMake-based packages. - ;; See <https://issues.guix.gnu.org/issue/38060>. - ;; - ;; Furthermore, this variant fixes X.509 certificate lookup: - ;; <https://issues.guix.gnu.org/issue/37371>. +(define-public cmake-minimal-cross (package - (inherit cmake) - (version "3.15.5") - (source (origin - (inherit (package-source cmake)) - (uri (string-append "https://www.cmake.org/files/v" - (version-major+minor version) - "/cmake-" version ".tar.gz")) - (sha256 - (base32 - "1d5y8d92axcc6rfqlsxamayfs3fc1vdby91hn5mx1kn02ppprpgv")) - (patches - (append (search-patches "cmake-curl-certificates.patch") - (origin-patches (package-source cmake)))))) - - (native-search-paths - ;; "cmake-curl-certificates.patch" changes CMake to honor 'SSL_CERT_DIR' - ;; and 'SSL_CERT_FILE', hence these search path entries. - (append (list (search-path-specification - (variable "SSL_CERT_DIR") - (separator #f) ;single entry - (files '("etc/ssl/certs"))) - (search-path-specification - (variable "SSL_CERT_FILE") - (file-type 'regular) - (separator #f) ;single entry - (files '("etc/ssl/certs/ca-certificates.crt")))) - (package-native-search-paths cmake))))) - -;; This was cmake@3.15.1 plus "cmake-curl-certificates.patch". -(define-deprecated cmake/fixed cmake-3.15.5) -(export cmake/fixed) + (inherit cmake-minimal) + (name "cmake-minimal-cross") + (native-search-paths '()) + (search-paths + (package-native-search-paths cmake-minimal)))) (define-public emacs-cmake-mode (package diff --git a/gnu/packages/code.scm b/gnu/packages/code.scm index ff30fbd86f..ee47582ec8 100644 --- a/gnu/packages/code.scm +++ b/gnu/packages/code.scm @@ -12,6 +12,7 @@ ;;; Copyright © 2013 Andreas Enge <andreas@enge.fr> ;;; Copyright © 2014 Mark H Weaver <mhw@netris.org> ;;; Copyright © 2019 Hartmut Goebel <h.goebel@goebel-consult.de> +;;; Copyright © 2020 Maxim Cournoyer <maxim.cournoyer@gmail.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -30,6 +31,7 @@ (define-module (gnu packages code) #:use-module (guix packages) + #:use-module (guix utils) #:use-module (guix download) #:use-module (guix git-download) #:use-module ((guix licenses) #:prefix license:) @@ -48,6 +50,7 @@ #:use-module (gnu packages graphviz) #:use-module (gnu packages pcre) #:use-module (gnu packages perl) + #:use-module (gnu packages perl-compression) #:use-module (gnu packages pkg-config) #:use-module (gnu packages python) #:use-module (gnu packages sqlite) @@ -374,36 +377,60 @@ stack traces.") (license license:gpl3+))) (define-public lcov - (package - (name "lcov") - (version "1.14") - (source (origin - (method url-fetch) - (uri (string-append "mirror://sourceforge/ltp/Coverage%20Analysis" - "/LCOV-" version "/lcov-" version ".tar.gz")) - (sha256 - (base32 - "06h7ixyznf6vz1qvksjgy5f3q2nw9akf6zx59npf0h3l32cmd68l")))) - (build-system gnu-build-system) - (arguments - '(#:make-flags - (let ((out (assoc-ref %outputs "out"))) - (list (string-append "PREFIX=" out))) - #:phases - (modify-phases %standard-phases - (delete 'configure)) ; no configure script - #:tests? #f)) ; no 'check' target - (inputs `(("perl" ,perl))) - (home-page "http://ltp.sourceforge.net/coverage/lcov.php") - (synopsis "Code coverage tool that enhances GNU gcov") - (description - "LCOV is an extension of @command{gcov}, a tool part of the + ;; Use a recent commit from upstream since the latest official release + ;; (1.14) doesn't support GCC 9 (see: + ;; https://github.com/linux-test-project/lcov/issues/58). + (let* ((commit "40580cd65909bc8324ae09b36bca2e178652ff3f") + (revision "0") + (version (git-version "1.14" revision commit))) + (package + (name "lcov") + (version "1.14") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/linux-test-project/lcov.git") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0shgmh6fzhnj1qfdl90jgjmlbb1ih1qh879dca8hc58yggy3hqgb")))) + (build-system gnu-build-system) + (arguments + '(#:test-target "test" + #:make-flags (list (string-append "PREFIX=" + (assoc-ref %outputs "out"))) + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'patch-pwd + ;; Lift the requirement of having a shell in PATH. + (lambda _ + (substitute* "bin/geninfo" + (("qw/abs_path/") + "qw/abs_path getcwd/")) + (substitute* '("bin/lcov" "bin/geninfo") + (("`pwd`") + "getcwd()")) + #t)) + (delete 'configure) ;no configure script + (add-after 'install 'wrap + (lambda* (#:key outputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out"))) + (wrap-program (string-append out "/bin/geninfo") + `("PERL5LIB" ":" prefix (,(getenv "PERL5LIB"))))) + #t))))) + (inputs `(("perl" ,perl) + ("perl-json" ,perl-json) + ("perl-perlio-gzip" ,perl-perlio-gzip))) + (home-page "http://ltp.sourceforge.net/coverage/lcov.php") + (synopsis "Code coverage tool that enhances GNU gcov") + (description "LCOV is an extension of @command{gcov}, a tool part of the GNU@tie{}Binutils, which provides information about what parts of a program are actually executed (i.e., \"covered\") while running a particular test case. The extension consists of a set of Perl scripts which build on the textual @command{gcov} output to implement the following enhanced functionality such as HTML output.") - (license license:gpl2+))) + (license license:gpl2+)))) (define-public rtags (package @@ -660,9 +687,24 @@ the C, C++, C++/CLI, Objective‑C, C#, and Java programming languages.") ;; overrides this to be in PREFIX/doc. Fix this. (substitute* "doc/Makefile.in" (("^docdir = .*$") "docdir = @docdir@\n")) + #t)) + (add-after 'unpack 'fix-configure + (lambda* (#:key inputs native-inputs #:allow-other-keys) + ;; Replace outdated config.sub and config.guess: + (with-directory-excursion "config" + (for-each (lambda (file) + (install-file + (string-append (assoc-ref + (or native-inputs inputs) "automake") + "/share/automake-" + ,(version-major+minor + (package-version automake)) + "/" file) ".")) + '("config.sub" "config.guess"))) #t))))) (native-inputs - `(("texinfo" ,texinfo))) + `(("texinfo" ,texinfo) + ("automake" ,automake))) ; For up to date 'config.guess' and 'config.sub'. (synopsis "Code reformatter") (description "Indent is a program that makes source code easier to read by diff --git a/gnu/packages/commencement.scm b/gnu/packages/commencement.scm index 9da0f77879..59ef5d078b 100644 --- a/gnu/packages/commencement.scm +++ b/gnu/packages/commencement.scm @@ -5,8 +5,9 @@ ;;; Copyright © 2014, 2015, 2017 Mark H Weaver <mhw@netris.org> ;;; Copyright © 2017, 2018, 2019 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr> -;;; Copyright © 2018 Jan (janneke) Nieuwenhuizen <janneke@gnu.org> -;;; Copyright © 2019 Marius Bakke <mbakke@fastmail.com> +;;; Copyright © 2018, 2019, 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org> +;;; Copyright © 2019, 2020 Marius Bakke <mbakke@fastmail.com> +;;; Copyright © 2020 Timothy Sample <samplet@ngyro.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -31,7 +32,6 @@ #:use-module (gnu packages c) #:use-module (gnu packages gcc) #:use-module (gnu packages m4) - #:use-module (gnu packages file) #:use-module (gnu packages gawk) #:use-module (gnu packages bison) #:use-module (gnu packages flex) @@ -44,13 +44,16 @@ #:use-module (gnu packages python) #:use-module (gnu packages linux) #:use-module (gnu packages hurd) + #:use-module (gnu packages shells) #:use-module (gnu packages texinfo) #:use-module (gnu packages pkg-config) + #:use-module (gnu packages rsync) #:use-module (gnu packages xml) #:use-module (guix packages) #:use-module (guix download) #:use-module (guix build-system gnu) #:use-module (guix build-system trivial) + #:use-module ((guix licenses) #:prefix license:) #:use-module (guix memoization) #:use-module (guix utils) #:use-module (srfi srfi-1) @@ -80,81 +83,369 @@ ;;; ;;; Code: +(define bootar + (package + (name "bootar") + (version "1a") + (source (origin + (method url-fetch) + (uri (list (string-append + "mirror://gnu/guix/mirror/bootar-" version ".ses") + (string-append + "https://files.ngyro.com/bootar/bootar-" + version ".ses"))) + (sha256 + (base32 + "0mvp6vgx0q316fvy3z2lddlc5xgq5np3bm1fypgvj6dnayibg9np")))) + (build-system gnu-build-system) + (arguments + `(#:implicit-inputs? #f + #:tests? #f + #:guile ,%bootstrap-guile + #:imported-modules ((guix build gnu-bootstrap) + ,@%gnu-build-system-modules) + #:phases + (begin + (use-modules (guix build gnu-bootstrap)) + (modify-phases %standard-phases + (replace 'unpack + (lambda* (#:key inputs #:allow-other-keys) + (let* ((source (assoc-ref inputs "source")) + (guile-dir (assoc-ref inputs "guile")) + (guile (string-append guile-dir "/bin/guile"))) + (invoke guile "--no-auto-compile" source) + (chdir "bootar") + #t))) + (replace 'configure (bootstrap-configure ,version "." "scripts")) + (replace 'build (bootstrap-build ".")) + (replace 'install (bootstrap-install "." "scripts")))))) + (inputs `(("guile" ,%bootstrap-guile))) + (home-page "https://git.ngyro.com/bootar") + (synopsis "Tar decompression and extraction in Guile Scheme") + (description "Bootar is a simple Tar extractor written in Guile +Scheme. It supports running 'tar xvf' on uncompressed tarballs or +tarballs that are compressed with BZip2, GZip, or XZ. It also provides +standalone scripts for 'bzip2', 'gzip', and 'xz' that each support +decompression to standard output. + +What makes this special is that Bootar is distributed as a +self-extracting Scheme (SES) program. That is, a little script that +outputs the source code of Bootar. This makes it possible to go from +pure Scheme to Tar and decompression in one easy step.") + (license license:gpl3+))) + +(define gash-boot + (package + (inherit gash) + (name "gash-boot") + (source (origin + (inherit (package-source gash)) + (modules '()))) + (arguments + `(#:implicit-inputs? #f + #:tests? #f + #:guile ,%bootstrap-guile + #:imported-modules ((guix build gnu-bootstrap) + ,@%gnu-build-system-modules) + #:phases + (begin + (use-modules (guix build gnu-bootstrap)) + (modify-phases %standard-phases + (replace 'configure + (bootstrap-configure ,(package-version gash) "gash" "scripts")) + (replace 'build (bootstrap-build "gash")) + (replace 'install (bootstrap-install "gash" "scripts")) + (add-after 'install 'install-symlinks + (lambda* (#:key outputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out"))) + (symlink (string-append out "/bin/gash") + (string-append out "/bin/sh")) + (symlink (string-append out "/bin/gash") + (string-append out "/bin/bash")) + #t))))))) + (inputs `(("guile" ,%bootstrap-guile))) + (native-inputs `(("bootar" ,bootar))))) + +(define gash-utils-boot + (package + (inherit gash-utils) + (name "gash-utils-boot") + (arguments + `(#:implicit-inputs? #f + #:tests? #f + #:guile ,%bootstrap-guile + #:imported-modules ((guix build gnu-bootstrap) + ,@%gnu-build-system-modules) + #:phases + (begin + (use-modules (guix build gnu-bootstrap)) + (modify-phases %standard-phases + (add-after 'unpack 'set-load-path + (lambda* (#:key inputs #:allow-other-keys) + (let ((gash (assoc-ref inputs "gash"))) + (add-to-load-path (string-append gash "/share/guile/site/" + (effective-version)))) + #t)) + (add-before 'configure 'pre-configure + (lambda _ + (format #t "Creating gash/commands/testb.scm~%") + (copy-file "gash/commands/test.scm" + "gash/commands/testb.scm") + (substitute* "gash/commands/testb.scm" + (("gash commands test") "gash commands testb") + (("apply test [(]cdr") "apply test/bracket (cdr")) + (for-each (lambda (script) + (let ((target (string-append "scripts/" + script ".in"))) + (format #t "Creating scripts/~a~%" target) + (copy-file "scripts/template.in" target) + (substitute* target + (("@UTILITY@") script)))) + '("awk" "basename" "cat" "chmod" "cmp" "command" + "compress" "cp" "cut" "diff" "dirname" "expr" + "false" "find" "grep" "head" "ln" "ls" "mkdir" + "mv" "printf" "pwd" "reboot" "rm" "rmdir" + "sed" "sleep" "sort" "tar" "test" "touch" "tr" + "true" "uname" "uniq" "wc" "which")) + (format #t "Creating scripts/[.in~%") + (copy-file "scripts/template.in" "scripts/[.in") + (substitute* "scripts/[.in" + (("@UTILITY@") "testb")) + (delete-file "scripts/template.in") + #t)) + (replace 'configure + (bootstrap-configure ,(package-version gash-utils) + "gash" "scripts")) + (replace 'build (bootstrap-build "gash")) + (replace 'install (bootstrap-install "gash" "scripts")) + ;; XXX: The scripts should add Gash to their load paths and + ;; this phase should not exist. + (add-after 'install 'copy-gash + (lambda* (#:key inputs outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (moddir (string-append out "/share/guile/site/" + (effective-version))) + (godir (string-append out "/lib/guile/" + (effective-version) + "/site-ccache")) + (gash (assoc-ref inputs "gash")) + (gash-moddir (string-append gash "/share/guile/site/" + (effective-version))) + (gash-godir (string-append gash "/lib/guile/" + (effective-version) + "/site-ccache"))) + (copy-file (string-append gash-moddir "/gash/compat.scm") + (string-append moddir "/gash/compat.scm")) + (copy-recursively (string-append gash-moddir "/gash/compat") + (string-append moddir "/gash/compat")) + (copy-file (string-append gash-godir "/gash/compat.go") + (string-append godir "/gash/compat.go")) + (copy-recursively (string-append gash-godir "/gash/compat") + (string-append godir "/gash/compat")) + #t))))))) + (inputs `(("gash" ,gash-boot) + ("guile" ,%bootstrap-guile))) + (native-inputs `(("bootar" ,bootar))))) + +(define (%boot-gash-inputs) + `(("bash" , gash-boot) ; gnu-build-system wants "bash" + ("coreutils" , gash-utils-boot) + ("bootar" ,bootar) + ("guile" ,%bootstrap-guile))) + +(define %bootstrap-mes-rewired + (package + (inherit mes) + (name "bootstrap-mes-rewired") + (version "0.19") + (source #f) + (native-inputs `(("mes" ,%bootstrap-mes) + ("gash" ,gash-boot))) + (inputs '()) + (propagated-inputs '()) + (outputs '("out")) + (build-system trivial-build-system) + (arguments + `(#:guile ,%bootstrap-guile + #:modules ((guix build utils)) + + #:builder (begin + (use-modules (guix build utils) + (srfi srfi-26)) + + (let* ((mes (assoc-ref %build-inputs "mes")) + (gash (assoc-ref %build-inputs "gash")) + (mes-bin (string-append mes "/bin")) + (guile (string-append mes-bin "/mes")) + (mes-module (string-append mes "/share/mes/module")) + (out (assoc-ref %outputs "out")) + (bin (string-append out "/bin")) + (mescc (string-append bin "/mescc")) + (module (string-append out "/share/mes/module"))) + (define (rewire file) + (substitute* file + ((mes) out) + (("/gnu/store[^ ]+mes-minimal-[^/)}\"]*") out) + (("/gnu/store[^ ]+guile-[^/]*/bin/guile") guile) + (("/gnu/store[^ ]+bash-[^/)}\"]*") gash))) + + (mkdir-p bin) + (for-each (lambda (file) (install-file file bin)) + (find-files mes-bin)) + (mkdir-p module) + (copy-recursively (string-append mes-module "/mes") + (string-append module "/mes")) + (copy-recursively (string-append mes-module "/srfi") + (string-append module "/srfi")) + (for-each rewire + ;; Cannot easily rewire "mes" because it + ;; contains NUL characters; would require + ;; remove-store-references alike trick + (filter (negate (cut string-suffix? "/mes" <>)) + (find-files bin))) + (rewire (string-append module "/mes/boot-0.scm")) + + (delete-file mescc) + (with-output-to-file mescc + (lambda _ + (display (string-append + "\ +#! " gash "/bin/sh +LANG=C +LC_ALL=C +export LANG LC_ALL + +MES_PREFIX=${MES_REWIRED_PREFIX-" out "/share/mes} +MES=" bin "/mes +export MES MES_PREFIX + +MES_ARENA=${MES_REWIRED_ARENA-10000000} +MES_MAX_ARENA=${MES_REWIRED_ARENA-10000000} +MES_STACK=${MES_REWIRED_STACK-1000000} +export MES_ARENA MES_MAX_ARENA MES_STACK + +$MES -e '(mescc)' module/mescc.scm -- \"$@\" +")))) + (chmod mescc #o555) + + (with-directory-excursion module + (chmod "mes/base.mes" #o644) + (copy-file "mes/base.mes" "mes/base.mes.orig") + (let ((base.mes (open-file "mes/base.mes" "a"))) + (display " +;; A fixed map, from Mes 0.21, required to bootstrap Mes 0.21 +(define (map f h . t) + (if (or (null? h) + (and (pair? t) (null? (car t))) + (and (pair? t) (pair? (cdr t)) (null? (cadr t)))) '() + (if (null? t) (cons (f (car h)) (map f (cdr h))) + (if (null? (cdr t)) + (cons (f (car h) (caar t)) (map f (cdr h) (cdar t))) + (if (null? (cddr t)) + (cons (f (car h) (caar t) (caadr t)) (map f (cdr h) (cdar t) (cdadr t))) + (error 'unsupported (cons* 'map-4: f h t))b ))))) +" base.mes) + (close base.mes)) + + (chmod "mes/guile.mes" #o644) + (copy-file "mes/guile.mes" "mes/guile.mes.orig") + (let ((guile.mes (open-file "mes/guile.mes" "a"))) + (display " +;; After booting guile.scm; use Mes 0.21; especially: MesCC 0.21 +(let* ((self (car (command-line))) + (prefix (dirname (dirname self)))) + (set! %moduledir (string-append prefix \"/mes/module/\")) + (setenv \"%numbered_arch\" \"true\")) + +" guile.mes) + (close guile.mes))) + #t)))))) + (define mes-boot (package (inherit mes) (name "mes-boot") - (version "0.19") + (version "0.22") (source (origin (method url-fetch) (uri (string-append "mirror://gnu/mes/" "mes-" version ".tar.gz")) (sha256 (base32 - "15h4yhaywdc0djpjlin2jz1kzahpqxfki0r0aav1qm9nxxmnp1l0")))) + "0p1jsrrmcbc0zrvbvnjbb6iyxr0in71km293q8qj6gnar6bw09av")))) (inputs '()) (propagated-inputs '()) (native-inputs - `(("mescc-tools" ,%bootstrap-mescc-tools) - ("nyacc-source" ,(bootstrap-origin - (package-source nyacc-0.86))) - - ("coreutils" , %bootstrap-coreutils&co) - ("bootstrap-mes" ,%bootstrap-mes))) + `(("nyacc-source" ,(origin (inherit (package-source nyacc)) + (snippet #f))) + ("mes" ,%bootstrap-mes-rewired) + ("mescc-tools" ,%bootstrap-mescc-tools) + ,@(%boot-gash-inputs))) (arguments `(#:implicit-inputs? #f + #:tests? #f #:guile ,%bootstrap-guile #:strip-binaries? #f ; binutil's strip b0rkes MesCC/M1/hex2 binaries #:phases (modify-phases %standard-phases (add-after 'unpack 'unpack-seeds (lambda _ - (let ((nyacc-source (assoc-ref %build-inputs "nyacc-source")) - (bootstrap-mes (assoc-ref %build-inputs "bootstrap-mes"))) + (let ((nyacc-source (assoc-ref %build-inputs "nyacc-source"))) (with-directory-excursion ".." - (mkdir-p "nyacc-source") - (invoke "tar" "--strip=1" "-C" "nyacc-source" "-xvf" nyacc-source) - (symlink (string-append bootstrap-mes "/share/mes/lib") "mes-seed")) - #t))) + (invoke "tar" "-xvf" nyacc-source))))) (replace 'configure (lambda* (#:key outputs #:allow-other-keys) - (let ((out (assoc-ref %outputs "out"))) - (setenv "GUILE" "mes") - (setenv "GUILE_EFFECTIVE_VERSION" "2.2") - (setenv "GUILE_LOAD_PATH" "nyacc") - (symlink (string-append "../nyacc-source/module") "nyacc") - (invoke "bash" "configure.sh" - (string-append "--prefix=" out))))) + (let ((out (assoc-ref %outputs "out")) + (gash (assoc-ref %build-inputs "bash")) + (mes (assoc-ref %build-inputs "mes")) + (dir (with-directory-excursion ".." (getcwd)))) + (setenv "AR" (string-append "gash " (getcwd) "/scripts/mesar")) + (setenv "BASH" (string-append gash "/bin/bash")) + (setenv "CC" (string-append mes "/bin/mescc")) + (setenv "GUILE_LOAD_PATH" + (string-append + mes "/share/mes/module" + ":" dir "/nyacc-0.99.0/module")) + (invoke "gash" "configure.sh" + (string-append "--prefix=" out) + (string-append "--host=i686-linux-gnu"))))) (replace 'build (lambda _ - (let ((mes (assoc-ref %build-inputs "bootstrap-mes"))) - (setenv "MES_PREFIX" (string-append mes "/share/mes")) - (setenv "MES_ARENA" "100000000") - (setenv "MES_MAX_ARENA" "100000000") - (setenv "MES_STACK" "10000000") - (invoke "sh" "bootstrap.sh")))) - (replace 'check - (lambda _ - (setenv "DIFF" "sh scripts/diff.scm") - ;; fail fast tests - ;; (invoke "sh" "-x" "build-aux/test.sh" "scaffold/tests/t") - ;; (invoke "sh" "-x" "build-aux/test.sh" "scaffold/tests/63-struct-cell") - (invoke "sh" "check.sh"))) + (invoke "sh" "bootstrap.sh"))) + (delete 'check) (replace 'install (lambda _ - (invoke "sh" "install.sh")))))) + (substitute* "install.sh" ; show some progress + ((" -xf") " -xvf") + (("^( *)((cp|mkdir|tar) [^']*[^\\])\n" all space cmd) + (string-append space "echo '" cmd "'\n" + space cmd "\n"))) + (invoke "sh" "install.sh") + ;; Keep ASCII output, for friendlier comparison and bisection + (let* ((out (assoc-ref %outputs "out")) + (cache (string-append out "/lib/cache"))) + (define (objects-in-dir dir) + (find-files dir + (lambda (name stat) + (and (equal? (dirname name) dir) + (or (string-suffix? ".o" name) + (string-suffix? ".s" name)))))) + (for-each (lambda (x) (install-file x cache)) + (append (objects-in-dir ".") + (objects-in-dir "mescc-lib")))) + #t))))) (native-search-paths - ;; Use the language-specific variables rather than 'CPATH' because they - ;; are equivalent to '-isystem' whereas 'CPATH' is equivalent to '-I'. - ;; The intent is to allow headers that are in the search path to be - ;; treated as "system headers" (headers exempt from warnings) just like - ;; the typical /usr/include headers on an FHS system. (list (search-path-specification (variable "C_INCLUDE_PATH") - (files '("share/mes/include"))) + (files '("include"))) (search-path-specification (variable "LIBRARY_PATH") - (files '("share/mes/lib"))))))) + (files '("lib"))) + (search-path-specification + (variable "MES_PREFIX") + (separator #f) + (files '(""))))))) + (define tcc-boot0 ;; Pristine tcc cannot be built by MesCC, we are keeping a delta of 11 @@ -163,266 +454,467 @@ ;; bootstrappable effort; we will try again later. These patches have been ;; ported to 0.9.27, alas the resulting tcc is buggy. Once MesCC is more ;; mature, this package should use the 0.9.27 sources (or later). - (let ((version "0.9.26") - (revision "6") - (commit "c004e9a34fb026bb44d211ab98bb768e79900eef")) - (package - (inherit tcc) - (name "tcc-boot0") - (version (string-append version "-" revision "." (string-take commit 7))) - (source (origin - (method url-fetch) - (uri (list (string-append "mirror://gnu/guix/mirror" - "/tinycc-" commit ".tar.gz") - (string-append "https://gitlab.com/janneke/tinycc" - "/-/archive/" commit - "/tinycc-" commit ".tar.gz"))) - (sha256 - (base32 - "1hmzn1pq0x22ppd80hyrn5qzqq94mxd0ychzj6vrr2vnj2frjv5b")))) - (build-system gnu-build-system) - (supported-systems '("i686-linux" "x86_64-linux")) - (inputs '()) - (propagated-inputs '()) - (native-inputs - `(("mes" ,mes-boot) - ("mescc-tools" ,%bootstrap-mescc-tools) - ("nyacc-source" ,(bootstrap-origin - (package-source nyacc-0.86))) - - ("coreutils" , %bootstrap-coreutils&co) - ("bootstrap-mes" ,%bootstrap-mes))) - (arguments - `(#:implicit-inputs? #f - #:guile ,%bootstrap-guile - #:strip-binaries? #f ; binutil's strip b0rkes MesCC/M1/hex2 binaries - #:phases - (modify-phases %standard-phases - (add-after 'unpack 'unpack-seeds - (lambda* (#:key outputs #:allow-other-keys) - (let* ((coreutils (assoc-ref %build-inputs "coreutils")) - (nyacc-source (assoc-ref %build-inputs "nyacc-source")) - (bootstrap-mes (assoc-ref %build-inputs "bootstrap-mes"))) - (setenv "PATH" (string-append - coreutils "/bin")) - (format (current-error-port) "PATH=~s\n" (getenv "PATH")) - (with-directory-excursion ".." - (mkdir-p "nyacc-source") - (invoke "tar" "--strip=1" "-C" "nyacc-source" - "-xvf" nyacc-source) - (symlink (string-append bootstrap-mes "/share/mes/lib") "mes-seed")) - #t))) - (replace 'configure - (lambda* (#:key outputs #:allow-other-keys) - (let* ((out (assoc-ref %outputs "out")) - (dir (with-directory-excursion ".." (getcwd))) - (coreutils (assoc-ref %build-inputs "coreutils")) - (mes (assoc-ref %build-inputs "mes")) - (mescc-tools (assoc-ref %build-inputs "mescc-tools")) - (libc (assoc-ref %build-inputs "libc")) - (interpreter (if libc - ;; also for x86_64-linux, we are still on i686-linux - (string-append libc ,(glibc-dynamic-linker "i686-linux")) - (string-append mes "/lib/mes-loader")))) - (setenv "PATH" (string-append - coreutils "/bin" - ":" mes "/bin" - ":" mescc-tools "/bin")) - (format (current-error-port) "PATH=~s\n" (getenv "PATH")) - - (setenv "PREFIX" out) - (symlink (string-append mes "/share/mes") "mes") - (symlink (string-append "../nyacc-source/module") "nyacc") - (setenv "MES_PREFIX" "mes") - (setenv "MES_ARENA" "100000000") - (setenv "MES_MAX_ARENA" "100000000") - (setenv "MES_STACK" "10000000") - (setenv "MES" "mes") - (setenv "GUILE_LOAD_PATH" "nyacc") - (invoke "sh" "configure" - "--prefix=$PREFIX" - (string-append "--elfinterp=" interpreter) - "--crtprefix=." - "--tccdir=.")))) - (replace 'build - (lambda _ - (substitute* "bootstrap.sh" - (("^ cmp") "# cmp")) - (invoke "sh" "bootstrap.sh"))) - (replace 'check - (lambda _ - (setenv "DIFF" "diff.scm") - (setenv "OBJDUMP" "true") - ;; fail fast tests - ;; (invoke "sh" "test.sh" "mes/scaffold/tests/30-strlen") - ;; (invoke "sh" "-x" "test.sh" "mes/scaffold/tinycc/00_assignment") - (setenv "TCC" "./tcc") - (invoke "sh" "check.sh"))) - (replace 'install - (lambda _ - (invoke "sh" "install.sh")))))) - (native-search-paths - ;; Use the language-specific variables rather than 'CPATH' because they - ;; are equivalent to '-isystem' whereas 'CPATH' is equivalent to '-I'. - ;; The intent is to allow headers that are in the search path to be - ;; treated as "system headers" (headers exempt from warnings) just like - ;; the typical /usr/include headers on an FHS system. - (list (search-path-specification - (variable "C_INCLUDE_PATH") - (files '("include"))) - (search-path-specification - (variable "LIBRARY_PATH") - (files '("lib")))))))) - -(define tcc-boot (package - (inherit tcc-boot0) - (name "tcc-boot") - (version "0.9.27") - (source (bootstrap-origin - (origin - (inherit (package-source tcc)) - (patches (search-patches "tcc-boot-0.9.27.patch"))))) + (inherit tcc) + (name "tcc-boot0") + (version "0.9.26-1103-g6e62e0e") + (source (origin + (method url-fetch) + (uri (string-append + "http://lilypond.org/janneke/mes/20191117/" + "/tcc-" version ".tar.gz")) + (sha256 + (base32 + "1qbybw7mxbgkv3sazvz1v7c8byq998vk8f1h25ik8w3d2l63lxng")))) (build-system gnu-build-system) + (supported-systems '("i686-linux" "x86_64-linux")) (inputs '()) (propagated-inputs '()) (native-inputs `(("mes" ,mes-boot) - ("tcc" ,tcc-boot0) - - ("coreutils" , %bootstrap-coreutils&co))) + ("nyacc-source" ,(origin (inherit (package-source nyacc)) + (snippet #f))) + ("mescc-tools" ,%bootstrap-mescc-tools) + ,@(%boot-gash-inputs))) (arguments `(#:implicit-inputs? #f #:guile ,%bootstrap-guile - - ;; Binutils' 'strip' b0rkes MesCC/M1/hex2 binaries, tcc-boot also comes - ;; with MesCC/M1/hex2-built binaries. - #:strip-binaries? #f - + #:validate-runpath? #f ; no dynamic executables + #:strip-binaries? #f ; no strip yet #:phases (modify-phases %standard-phases + (add-after 'unpack 'unpack-seeds + (lambda* (#:key outputs #:allow-other-keys) + (let ((nyacc-source (assoc-ref %build-inputs "nyacc-source"))) + (with-directory-excursion ".." + (invoke "tar" "-xvf" nyacc-source))))) (replace 'configure (lambda* (#:key outputs #:allow-other-keys) (let* ((out (assoc-ref %outputs "out")) - (coreutils (assoc-ref %build-inputs "coreutils")) - (mes (assoc-ref %build-inputs "mes")) - (tcc (assoc-ref %build-inputs "tcc")) - (libc (assoc-ref %build-inputs "libc")) - (interpreter (if libc - ;; also for x86_64-linux, we are still on i686-linux - (string-append libc ,(glibc-dynamic-linker "i686-linux")) - (string-append mes "/lib/mes-loader")))) - ;; unpack - (setenv "PATH" (string-append - coreutils "/bin" - ":" tcc "/bin")) - (format (current-error-port) "PATH=~s\n" (getenv "PATH")) + (dir (with-directory-excursion ".." (getcwd))) + (interpreter "/lib/mes-loader")) + + (setenv "prefix" out) + (setenv "GUILE_LOAD_PATH" + (string-append dir "/nyacc-0.99.0/module")) + + (substitute* "conftest.c" + (("volatile") "")) + (invoke "sh" "configure" - (string-append "--cc=tcc") - (string-append "--cpu=i386") + "--cc=mescc" (string-append "--prefix=" out) (string-append "--elfinterp=" interpreter) - (string-append "--crtprefix=" tcc "/lib") - (string-append "--sysincludepaths=" tcc "/include") - (string-append "--libpaths=" tcc "/lib"))))) + "--crtprefix=." + "--tccdir=.")))) (replace 'build - (lambda* (#:key outputs #:allow-other-keys) - (let* ((out (assoc-ref %outputs "out")) - (mes (assoc-ref %build-inputs "mes")) - (tcc (assoc-ref %build-inputs "tcc")) - (libc (assoc-ref %build-inputs "libc")) - (interpreter (if libc - ;; also for x86_64-linux, we are still on i686-linux - (string-append libc ,(glibc-dynamic-linker "i686-linux")) - (string-append mes "/lib/mes-loader")))) - (invoke "tcc" - "-vvv" - "-D" "BOOTSTRAP=1" - "-D" "ONE_SOURCE=1" - "-D" "TCC_TARGET_I386=1" - "-D" "CONFIG_TCC_STATIC=1" - "-D" "CONFIG_USE_LIBGCC=1" - "-D" (string-append "CONFIG_TCCDIR=\"" out "/lib/tcc\"") - "-D" (string-append "CONFIG_TCC_CRTPREFIX=\"" out "/lib:{B}/lib:.\"") - "-D" (string-append "CONFIG_TCC_CRTPREFIX=\"" out - "/lib:{B}/lib:.\"") - "-D" (string-append "CONFIG_TCC_ELFINTERP=\"" interpreter "\"") - "-D" (string-append "CONFIG_TCC_LIBPATHS=\"" tcc "/lib:{B}/lib:.\"") - "-D" (string-append "CONFIG_TCC_SYSINCLUDEPATHS=\"" tcc "/include" ":/include:{B}/include\"") - "-D" (string-append "TCC_LIBGCC=\"" tcc "/lib/libc.a\"") - "-o" "tcc" - "tcc.c")))) + (lambda _ + (substitute* "bootstrap.sh" ; Show some progress + (("^( *)((cp|ls|mkdir|rm|[.]/tcc|[.]/[$][{PROGRAM_PREFIX[}]tcc) [^\"]*[^\\])\n" all space cmd) + (string-append space "echo \"" cmd "\"\n" + space cmd "\n"))) + (invoke "sh" "bootstrap.sh"))) (replace 'check (lambda _ - ;; FIXME: add sensible check target (without depending on make) - ;; ./check.sh ? - (= 1 (status:exit-val (system* "./tcc" "--help"))))) + ;; fail fast tests + (system* "./tcc" "--help") ; --help exits 1 + ;; (invoke "sh" "test.sh" "mes/scaffold/tests/30-strlen") + ;; (invoke "sh" "-x" "test.sh" "mes/scaffold/tinycc/00_assignment") + ;; TODO: add sensible check target (without depending on make) + ;; (invoke "sh" "check.sh") + #t)) (replace 'install - (lambda* (#:key outputs #:allow-other-keys) - (let ((out (assoc-ref %outputs "out")) - (tcc (assoc-ref %build-inputs "tcc"))) - (mkdir-p (string-append out "/bin")) - (copy-file "tcc" (string-append out "/bin/tcc")) - (mkdir-p (string-append out "/lib/tcc")) - (copy-recursively (string-append tcc "/include") - (string-append out "/include")) - (copy-recursively (string-append tcc "/lib") - (string-append out "/lib")) - (invoke "tcc" "-D" "TCC_TARGET_I386=1" "-c" "-o" "libtcc1.o" "lib/libtcc1.c") - (invoke "tcc" "-ar" "rc" "libtcc1.a" "libtcc1.o") - (copy-file "libtcc1.a" (string-append out "/lib/libtcc1.a")) - (delete-file (string-append out "/lib/tcc/libtcc1.a")) - (copy-file "libtcc1.a" (string-append out "/lib/tcc/libtcc1.a")) - #t)))))))) + (lambda _ + (substitute* "install.sh" ; Show some progress + (("^( *)((cp|ls|mkdir|rm|tar|./[$][{PROGRAM_PREFIX[}]tcc) [^\"]*[^\\])\n" all space cmd) + (string-append space "echo \"" cmd "\"\n" + space cmd "\n"))) -(define make-mesboot0 + (invoke "sh" "install.sh")))))) + (native-search-paths + (list (search-path-specification + (variable "C_INCLUDE_PATH") + (files '("include"))) + (search-path-specification + (variable "LIBRARY_PATH") + (files '("lib"))))))) + +(define gzip-mesboot + ;; The initial gzip. We keep this scripted gzip build before building make + ;; to soften the dependency on Gash Core Utils gzip. + (package + (inherit gzip) + (version "1.2.4") + (name "gzip-mesboot") + (source (origin + (method url-fetch) + (uri (string-append "mirror://gnu/gzip/gzip-" version ".tar")) + (sha256 + (base32 + "1rhgk2vvmdvnn6vygf0dja92ryyng00knl0kz5srb77k2kryjb2d")))) + (supported-systems '("i686-linux" "x86_64-linux")) + (inputs '()) + (propagated-inputs '()) + (native-inputs `(("tcc" ,tcc-boot0) + ,@(%boot-gash-inputs))) + (arguments + `(#:implicit-inputs? #f + #:guile ,%bootstrap-guile + #:strip-binaries? #f ; no strip yet + #:phases + (modify-phases %standard-phases + (delete 'configure) + (add-after 'unpack 'scripted-patch + (lambda _ + (substitute* "util.c" + (("^char [*]strlwr" all) (string-append all "_tcc_cannot_handle_dupe"))) + #t)) + (replace 'build + (lambda _ + (let ((files '("bits" "crypt" "deflate" "getopt" "gzip" + "inflate" "lzw" "trees" "unlzh" "unlzw" + "unpack" "unzip" "util" "zip"))) + (define (compile x) + (invoke "tcc" "-c" "-D NO_UTIME=1" "-D HAVE_UNISTD_H=1" + (string-append x ".c"))) + (for-each compile files) + (apply invoke + (cons* "tcc" "-o" "gzip" + (map (lambda (x) (string-append x ".o")) files))) + (link "gzip" "gunzip")))) + (replace 'install + (lambda _ + (let* ((out (assoc-ref %outputs "out")) + (bin (string-append out "/bin"))) + (install-file "gzip" bin) + (install-file "gunzip" bin)))) + (replace 'check + (lambda _ + (invoke "./gzip" "--version"))) + ;; no gzip yet + (delete 'compress-documentation)))))) + +(define gnu-make-mesboot0 + ;; The initial make (package (inherit gnu-make) (name "make-mesboot0") (version "3.80") (source (origin (method url-fetch) - (uri (string-append "mirror://gnu/make/make-" - version ".tar.gz")) + (uri (string-append "mirror://gnu/make/make-" version ".tar.gz")) (sha256 (base32 "1pb7fb7fqf9wz9najm85qdma1xhxzf1rhj5gwrlzdsz2zm0hpcv4")))) (supported-systems '("i686-linux" "x86_64-linux")) (inputs '()) (propagated-inputs '()) - (native-inputs `(("tcc" ,tcc-boot) - - ("bash" ,%bootstrap-coreutils&co) - ("coreutils" ,%bootstrap-coreutils&co))) + (native-inputs `(("tcc" ,tcc-boot0) + ,@(%boot-gash-inputs))) (arguments `(#:implicit-inputs? #f - #:tests? #f ; check depends on perl #:guile ,%bootstrap-guile - #:configure-flags `("CC=tcc -DO_RDONLY=0" + #:configure-flags '("CC=tcc" + "CPP=tcc -E" "LD=tcc" + "--build=i686-unknown-linux-gnu" + "--host=i686-unknown-linux-gnu" "--disable-nls") + #:modules ((guix build gnu-build-system) + (guix build utils) + (srfi srfi-1)) + #:strip-binaries? #f ; no strip yet #:phases (modify-phases %standard-phases + (add-after 'unpack 'scripted-patch + (lambda _ + (substitute* "build.sh.in" + (("@LIBOBJS@") "getloadavg.o") + (("@REMOTE@") "stub")) + #t)) (add-after 'configure 'configure-fixup (lambda _ - (substitute* "build.sh" - (("^REMOTE=.*") "REMOTE=stub\n") - (("^extras=.*") "extras=getloadavg.c\n")) (substitute* "make.h" (("^extern long int lseek.*" all) (string-append "// " all))) #t)) - (delete 'patch-generated-file-shebangs) ; no perl (replace 'build (lambda _ (invoke "sh" "./build.sh"))) + (replace 'check ; proper check needs awk + (lambda _ + (invoke "./make" "--version"))) (replace 'install - (lambda* (#:key outputs #:allow-other-keys) - (let* ((out (assoc-ref outputs "out")) + (lambda _ + (let* ((out (assoc-ref %outputs "out")) (bin (string-append out "/bin"))) - (install-file "make" bin) + (install-file "make" bin))))))))) + +(define (%boot-tcc0-inputs) + `(("make" ,gnu-make-mesboot0) + ("tcc" ,tcc-boot0) + ,@(%boot-gash-inputs))) + +(define bzip2-mesboot + ;; The initial bzip2 + (package + (inherit bzip2) + (name "bzip2-mesboot") + (version (package-version bzip2)) + (source (bootstrap-origin (package-source bzip2))) + (supported-systems '("i686-linux" "x86_64-linux")) + (inputs '()) + (propagated-inputs '()) + (native-inputs (%boot-tcc0-inputs)) + (outputs '("out")) + (arguments + `(#:implicit-inputs? #f + #:guile ,%bootstrap-guile + #:parallel-build? #f + #:tests? #f ; check is naive, also checks non-built PROGRAMS + #:strip-binaries? #f ; no strip yet + #:make-flags (list "CC=tcc -I ." "AR=tcc -ar" "bzip2" + (string-append "PREFIX=" + (assoc-ref %outputs "out"))) + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'scripted-patch + (lambda _ + (substitute* "Makefile" + (("\tln " all) + (string-append "\t#" all))) + (substitute* "bzip2.c" + (("struct utimbuf uTimBuf;" all) + (string-append "// " all)) + (("uTimBuf[.]" all) + (string-append "// " all)) + (("retVal = utime [(] dstName, &uTimBuf [)];" all) + (string-append "retVal = 0; // " all))) + #t)) + (replace 'configure + (lambda _ + (with-output-to-file "utime.h" + (lambda _ (display " +#define fchown(filedes, owner, group) 0 +#define fchmod(filedes, mode) 0 +"))) + #t)) + (replace 'check + (lambda _ + (invoke "./bzip2" "--help"))) + ;; FIXME: no compressing gzip yet + (delete 'compress-documentation)))))) + +(define bash-mesboot0 + ;; The initial Bash + (package + (inherit static-bash) + (name "bash-mesboot0") + (version "2.05b") + (source (origin + (method url-fetch) + (uri (string-append "mirror://gnu/bash/bash-" + version ".tar.gz")) + (sha256 + (base32 + "1r1z2qdw3rz668nxrzwa14vk2zcn00hw7mpjn384picck49d80xs")))) + (inputs '()) + (propagated-inputs '()) + (native-inputs (%boot-tcc0-inputs)) + (outputs '("out")) + (arguments + `(#:implicit-inputs? #f + #:guile ,%bootstrap-guile + #:parallel-build? #f + #:strip-binaries? #f ; no strip yet + #:configure-flags + (list "--build=i686-unknown-linux-gnu" + "--host=i686-unknown-linux-gnu" + + "--without-bash-malloc" + "--disable-readline" + "--disable-history" + "--disable-help-builtin" + "--disable-progcomp" + "--disable-net-redirections" + "--disable-nls" + + ;; Pretend 'dlopen' is missing so we don't build loadable + ;; modules and related code. + "ac_cv_func_dlopen=no") + #:make-flags '("bash") + #:phases + (modify-phases %standard-phases + (add-before 'configure 'setenv + (lambda _ + (let* ((gash (assoc-ref %build-inputs "bash")) + (shell (string-append gash "/bin/gash"))) + (setenv "CONFIG_SHELL" shell) + (setenv "SHELL" shell) + (setenv "CC" "tcc") + (setenv "LD" "tcc") + (setenv "AR" "tcc -ar") + (setenv "CFLAGS" "-D _POSIX_VERSION=1") + #t))) + (add-after 'unpack 'scripted-patch + (lambda _ + (substitute* "Makefile.in" + (("mksyntax\\.c\n") "mksyntax.c -lgetopt\n") + (("buildversion[.]o\n") "buildversion.o -lgetopt\n") + ;; No size in Gash + (("\tsize ") "#\tsize")) + (substitute* "lib/sh/oslib.c" + (("int name, namelen;") "char *name; int namelen;")) + (substitute* "lib/sh/snprintf.c" + (("^#if (defined [(]HAVE_LOCALE_H[)])" all define) (string-append "#if 0 //" define))) + (substitute* "configure" + ((" egrep") " grep")) + #t)) + (replace 'configure + (lambda* (#:key configure-flags #:allow-other-keys) + (let ((configure-flags (filter (lambda (x) + (and (not (string-prefix? "CONFIG_SHELL=" x)) + (not (string-prefix? "SHELL=" x)))) + configure-flags))) + (format (current-error-port) + "running ./configure ~a\n" (string-join configure-flags))) + (apply invoke (cons "./configure" configure-flags)))) + (add-after 'configure 'configure-fixups + (lambda _ + (substitute* "config.h" + (("#define GETCWD_BROKEN 1") "#undef GETCWD_BROKEN")) + (let ((config.h (open-file "config.h" "a"))) + (display (string-append " +// tcc: error: undefined symbol 'enable_hostname_completion' +#define enable_hostname_completion(on_or_off) 0 + +// /gnu/store/cq0cmv35s9dhilx14zaghlc08gpc0hwr-tcc-boot0-0.9.26-6.c004e9a/lib/libc.a: error: 'sigprocmask' defined twice +#define HAVE_POSIX_SIGNALS 1 +#define endpwent(x) 0 +") + config.h) + (close config.h)) + #t)) + (replace 'check + (lambda _ + (invoke "./bash" "--version"))) + (replace 'install + (lambda _ + (let* ((out (assoc-ref %outputs "out")) + (bin (string-append out "/bin"))) + (mkdir-p bin) + (copy-file "bash" (string-append bin "/bash")) + (copy-file "bash" (string-append bin "/sh")) #t)))))))) +(define tcc-boot + ;; The final tcc. + (package + (inherit tcc-boot0) + (name "tcc-boot") + (version "0.9.27") + (source (origin + (inherit (package-source tcc)) + ;; `patches' needs XZ + ;; (patches (search-patches "tcc-boot-0.9.27.patch")) + )) + (build-system gnu-build-system) + (inputs '()) + (propagated-inputs '()) + (native-inputs `(;;("boot-patch" ,(search-patch "tcc-boot-0.9.27.patch")) + ("bzip2" ,bzip2-mesboot) + ,@(%boot-tcc0-inputs))) + (arguments + `(#:implicit-inputs? #f + #:guile ,%bootstrap-guile + #:validate-runpath? #f ; no dynamic executables + #:strip-binaries? #f ; no strip yet + #:phases + (modify-phases %standard-phases + ;; tar xvf ..bz2 gives + ;; bzip2: PANIC -- internal consistency error + (replace 'unpack + (lambda* (#:key source #:allow-other-keys) + (copy-file source "tarball.tar.bz2") + (invoke "bzip2" "-d" "tarball.tar.bz2") + (invoke "tar" "xvf" "tarball.tar") + (chdir (string-append "tcc-" ,version)) + #t)) + ;; no patch yet + ;; (add-after 'unpack 'apply-boot-patch + ;; (lambda* (#:key inputs #:allow-other-keys) + ;; (let ((patch-file (assoc-ref inputs "boot-patch"))) + ;; (invoke "patch" "-p1" "-i" patch-file)))) + (add-after 'unpack 'scripted-patch + (lambda* (#:key inputs #:allow-other-keys) + (substitute* "libtcc.c" + (("s->alacarte_link = 1;" all) + (string-append all " + s->static_link = 1;"))) + #t)) + (replace 'configure + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref %outputs "out")) + (tcc (assoc-ref %build-inputs "tcc")) + (libc (assoc-ref %build-inputs "libc")) + (interpreter "/mes/loader")) + (invoke "sh" "configure" + (string-append "--cc=tcc") + (string-append "--cpu=i386") + (string-append "--prefix=" out) + (string-append "--elfinterp=" interpreter) + (string-append "--crtprefix=" tcc "/lib") + (string-append "--sysincludepaths=" tcc "/include") + (string-append "--libpaths=" tcc "/lib"))))) + (replace 'build + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref %outputs "out")) + (tcc (assoc-ref %build-inputs "tcc")) + (libc (assoc-ref %build-inputs "libc")) + (interpreter "/mes/loader")) + (invoke + "tcc" + "-vvv" + "-D" "BOOTSTRAP=1" + "-D" "ONE_SOURCE=1" + "-D" "TCC_TARGET_I386=1" + "-D" "CONFIG_TCC_STATIC=1" + "-D" "CONFIG_USE_LIBGCC=1" + "-D" (string-append "CONFIG_TCCDIR=\"" out "/lib/tcc\"") + "-D" (string-append "CONFIG_TCC_CRTPREFIX=\"" out "/lib:{B}/lib:.\"") + "-D" (string-append "CONFIG_TCC_CRTPREFIX=\"" out "/lib:{B}/lib:.\"") + "-D" (string-append "CONFIG_TCC_ELFINTERP=\"" interpreter "\"") + "-D" (string-append "CONFIG_TCC_LIBPATHS=\"" tcc "/lib:{B}/lib:.\"") + "-D" (string-append "CONFIG_TCC_SYSINCLUDEPATHS=\"" + tcc "/include" ":/include:{B}/include\"") + "-D" (string-append "TCC_LIBGCC=\"" tcc "/lib/libc.a\"") + "-o" "tcc" + "tcc.c")))) + (replace 'check + (lambda _ + ;; FIXME: add sensible check target (without depending on make) + ;; ./check.sh ? + (= 1 (status:exit-val (system* "./tcc" "--help"))))) + (replace 'install + (lambda* (#:key outputs #:allow-other-keys) + (let ((out (assoc-ref %outputs "out")) + (tcc (assoc-ref %build-inputs "tcc"))) + (and + (mkdir-p (string-append out "/bin")) + (copy-file "tcc" (string-append out "/bin/tcc")) + (mkdir-p (string-append out "/lib/tcc")) + (copy-recursively (string-append tcc "/include") + (string-append out "/include")) + (copy-recursively (string-append tcc "/lib") + (string-append out "/lib")) + (invoke "tcc" "-D" "TCC_TARGET_I386=1" "-c" "-o" "libtcc1.o" "lib/libtcc1.c") + (invoke "tcc" "-ar" "rc" "libtcc1.a" "libtcc1.o") + (copy-file "libtcc1.a" (string-append out "/lib/libtcc1.a")) + (delete-file (string-append out "/lib/tcc/libtcc1.a")) + (copy-file "libtcc1.a" (string-append out "/lib/tcc/libtcc1.a")) + #t))))))))) + (define diffutils-mesboot + ;; The initial diffutils. (package (inherit diffutils) (name "diffutils-mesboot") @@ -437,12 +929,7 @@ (supported-systems '("i686-linux" "x86_64-linux")) (inputs '()) (propagated-inputs '()) - (native-inputs `(("mes" ,mes-boot) - ("tcc" ,tcc-boot) - - ("bash" ,%bootstrap-coreutils&co) - ("coreutils" ,%bootstrap-coreutils&co) - ("make" ,make-mesboot0))) + (native-inputs (%boot-tcc0-inputs)) (arguments `(#:implicit-inputs? #f #:guile ,%bootstrap-guile @@ -451,97 +938,207 @@ #:strip-binaries? #f ; no strip yet #:phases (modify-phases %standard-phases - ;; diffutils-2.7 needs more traditional configure - (replace 'configure - (lambda* (#:key outputs #:allow-other-keys) - (let ((out (assoc-ref outputs "out")) - (bash (assoc-ref %build-inputs "bash"))) - (setenv "CONFIG_SHELL" (string-append bash "/bin/sh")) - (setenv "CC" "tcc") - (setenv "LD" "tcc") - (invoke "./configure" (string-append "--prefix=" out))))) (add-before 'configure 'remove-diff3-sdiff (lambda* (#:key outputs #:allow-other-keys) (substitute* "Makefile.in" - (("PROGRAMS = .*" all) "PROGRAMS = cmp diff")) - #t))))))) + (("PROGRAMS = .*" all) "PROGRAMS = cmp diff")))) + (replace 'configure ; needs classic invocation of configure + (lambda* (#:key configure-flags #:allow-other-keys) + (let* ((out (assoc-ref %outputs "out")) + (bash (assoc-ref %build-inputs "bash")) + (shell (string-append bash "/bin/bash"))) + (setenv "CONFIG_SHELL" shell) + (setenv "CC" "tcc") + (setenv "LD" "tcc") + (format (current-error-port) + "running ./configure ~a\n" (string-join configure-flags)) + (apply invoke (cons "./configure" configure-flags))))) + (replace 'install + (lambda _ + (let* ((out (assoc-ref %outputs "out")) + (bin (string-append out "/bin"))) + (mkdir-p bin) + (install-file "cmp" bin) + (install-file "diff" bin) + #t)))))))) + +(define patch-mesboot + ;; The initial patch. + (package + (inherit patch) + (name "patch-mesboot") + (version "2.5.9") + (source (origin + (method url-fetch) + (uri (string-append "mirror://gnu/patch/patch-" + version ".tar.gz")) + (sha256 + (base32 + "12nv7jx3gxfp50y11nxzlnmqqrpicjggw6pcsq0wyavkkm3cddgc")))) + (supported-systems '("i686-linux" "x86_64-linux")) + (inputs '()) + (propagated-inputs '()) + (native-inputs (%boot-tcc0-inputs)) + (arguments + `(#:implicit-inputs? #f + #:guile ,%bootstrap-guile + #:parallel-build? #f + #:tests? #f ; check is naive, also checks non-built PROGRAMS + #:strip-binaries? #f ; no strip yet + #:configure-flags '("AR=tcc -ar" "CC=tcc" "LD-tcc") + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'scripted-patch + (lambda _ + ;; avoid another segfault + (substitute* "pch.c" + (("while [(]p_end >= 0[)]" all) + "p_end = -1;\nwhile (0)")) + #t)) + ;; FIXME: no compressing gzip yet + (delete 'compress-documentation)))))) + +(define sed-mesboot0 + ;; The initial sed. + (package + (inherit sed) + (name "sed-mesboot0") + (version "1.18") + (source (origin + (method url-fetch) + (uri (string-append "mirror://gnu/sed/sed-" + version ".tar.gz")) + (sha256 + (base32 + "1hyv7i82jd0q18xcql51ylc8jwadp3gb3irgcqlis3v61p35jsv2")))) + (supported-systems '("i686-linux" "x86_64-linux")) + (inputs '()) + (propagated-inputs '()) + (native-inputs (%boot-tcc0-inputs)) + (arguments + `(#:implicit-inputs? #f + #:guile ,%bootstrap-guile + #:parallel-build? #f + #:configure-flags '("CC=tcc") + #:make-flags '("CC=tcc" "extra_objs=" "DEFS=-D HAVE_BCOPY") + #:strip-binaries? #f ; no strip yet + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'scripted-patch + (lambda _ + (let* ((out (assoc-ref %outputs "out")) + (bash (assoc-ref %build-inputs "bash")) + (shell (string-append bash "/bin/bash"))) + (substitute* "configure" + (("/bin/sh") shell)) + #t))) + (replace 'check + (lambda _ + (invoke "./sed" "--version"))) + (replace 'install + (lambda _ + (let* ((out (assoc-ref %outputs "out")) + (bin (string-append out "/bin"))) + (install-file "sed" bin) + #t)))))))) + +(define (%boot-tcc-inputs) + `(("bash" ,bash-mesboot0) + ("bzip2" ,bzip2-mesboot) + ("diffutils" ,diffutils-mesboot) + ("gzip" ,gzip-mesboot) + ("patch" ,patch-mesboot) + ("sed" ,sed-mesboot0) + ("tcc" ,tcc-boot) + ,@(alist-delete "tcc" (%boot-tcc0-inputs)))) (define binutils-mesboot0 + ;; The initial Binutils (package (inherit binutils) (name "binutils-mesboot0") - (version "2.20.1a") - (source (bootstrap-origin - (origin - (method url-fetch) - (uri (string-append "mirror://gnu/binutils/binutils-" - version ".tar.bz2")) - (patches (search-patches "binutils-boot-2.20.1a.patch")) - (sha256 - (base32 - "0r7dr0brfpchh5ic0z9r4yxqn4ybzmlh25sbp30cacqk8nb7rlvi"))))) + (version "2.14") + (source (origin + (method url-fetch) + (uri (string-append "mirror://gnu/binutils/binutils-" + version ".tar.gz")) + (sha256 + (base32 + "1w8xp7k44bkijr974x9918i4p1sw4g2fcd5mxvspkjpg38m214ds")))) (inputs '()) (propagated-inputs '()) - (native-inputs `(("tcc" ,tcc-boot) - - ("bash" ,%bootstrap-coreutils&co) - ("coreutils" ,%bootstrap-coreutils&co) - ("diffutils" ,diffutils-mesboot) - ("make" ,make-mesboot0))) + (native-inputs (%boot-tcc-inputs)) (supported-systems '("i686-linux" "x86_64-linux")) (arguments `(#:implicit-inputs? #f #:guile ,%bootstrap-guile - #:tests? #f ; runtest: command not found + #:tests? #f ; runtest: command not found #:parallel-build? #f - #:strip-binaries? #f ; no strip yet + #:strip-binaries? #f ; no strip yet #:configure-flags - (let ((cppflags (string-append " -D __GLIBC_MINOR__=6" - " -D MES_BOOTSTRAP=1")) - (bash (assoc-ref %build-inputs "bash"))) - `(,(string-append "CONFIG_SHELL=" bash "/bin/sh") - ,(string-append "CPPFLAGS=" cppflags) - "AR=tcc -ar" - "CXX=false" - "RANLIB=true" - ,(string-append "CC=tcc" cppflags) - "--disable-nls" + (let ((out (assoc-ref %outputs "out"))) + `("--disable-nls" "--disable-shared" "--disable-werror" - "--build=i686-unknown-linux-gnu" - "--host=i686-unknown-linux-gnu" - "--with-sysroot=/")))))) + "--build=i386-unknown-linux" + "--host=i386-unknown-linux" + "--target=i386-unknown-linux" + "--with-sysroot=/" + ,(string-append "--prefix=" out))) + #:phases + (modify-phases %standard-phases + (add-before 'configure 'setenv + (lambda _ + (let* ((out (assoc-ref %outputs "out")) + (bash (assoc-ref %build-inputs "bash")) + (shell (string-append bash "/bin/bash"))) + (setenv "CONFIG_SHELL" shell) + (setenv "SHELL" shell) + (setenv "AR" "tcc -ar") + (setenv "RANLIB" "true") + (setenv "CC" "tcc -D __GLIBC_MINOR__=6") + #t))) + (add-after 'unpack 'scripted-patch + (lambda* (#:key inputs #:allow-other-keys) + (substitute* "bfd/configure" + (("^sed -e '/SRC-POTFILES.*" all) + "echo -e 'all:\\n\\ttrue\\n\\ninstall:\\n\\ttrue\\n' > po/Makefile\n")) + #t)) + (replace 'configure ; needs classic invocation of configure + (lambda* (#:key configure-flags #:allow-other-keys) + (format (current-error-port) + "running ./configure ~a\n" (string-join configure-flags)) + (apply system* "./configure" configure-flags) + (substitute* "config.status" + (("[.]//dev/null") "/dev/null")) + (invoke "sh" "./config.status")))))))) -(define gcc-core-mesboot +(define gcc-core-mesboot0 ;; Gcc-2.95.3 is the most recent GCC that is supported by what the Mes C ;; Library v0.16 offers. Gcc-3.x (and 4.x) place higher demands on a C ;; library, such as dir.h/struct DIR/readdir, locales, signals... Also, - ;; with gcc-2.95.3, binutils-boot-2.20.1a and glibc-2.2.5 we found a GNU - ;; toolchain triplet "that works". + ;; with gcc-2.95.3, binutils (2.14.0, 2.20.1a) and glibc-2.2.5 we found a + ;; GNU toolchain triplet "that works". (package (inherit gcc) - (name "gcc-core-mesboot") + (name "gcc-core-mesboot0") (version "2.95.3") - (source (bootstrap-origin - (origin - (method url-fetch) - (uri (string-append "mirror://gnu/gcc/gcc-2.95.3/gcc-core-" - version - ".tar.gz")) - (patches (search-patches "gcc-boot-2.95.3.patch")) - (sha256 - (base32 - "1xvfy4pqhrd5v2cv8lzf63iqg92k09g6z9n2ah6ndd4h17k1x0an"))))) + (source (origin + (method url-fetch) + (uri (string-append "mirror://gnu/gcc/gcc-2.95.3/gcc-core-" + version + ".tar.gz")) + ;; `patches' needs XZ + ;; (patches (search-patches "gcc-boot-2.95.3.patch")) + (sha256 + (base32 + "1xvfy4pqhrd5v2cv8lzf63iqg92k09g6z9n2ah6ndd4h17k1x0an")))) (supported-systems '("i686-linux" "x86_64-linux")) (inputs '()) (propagated-inputs '()) - (native-inputs `(("binutils" ,binutils-mesboot0) - ("tcc" ,tcc-boot) - - ("bash" ,%bootstrap-coreutils&co) - ("coreutils" ,%bootstrap-coreutils&co) - ("diffutils" ,diffutils-mesboot) - ("make" ,make-mesboot0))) + (native-inputs `(("boot-patch" ,(search-patch "gcc-boot-2.95.3.patch")) + ("binutils" ,binutils-mesboot0) + ,@(%boot-tcc-inputs))) (outputs '("out")) (arguments `(#:implicit-inputs? #f @@ -557,32 +1154,37 @@ "--build=i686-unknown-linux-gnu" "--host=i686-unknown-linux-gnu" ,(string-append "--prefix=" out))) - #:make-flags (list - "CC=tcc -static -D __GLIBC_MINOR__=6" - "OLDCC=tcc -static -D __GLIBC_MINOR__=6" - "CC_FOR_BUILD=tcc -static -D __GLIBC_MINOR__=6" - "AR=ar" - "RANLIB=ranlib" - (string-append "LIBGCC2_INCLUDES=-I " - (assoc-ref %build-inputs "tcc") - "/include") - "LANGUAGES=c" - (string-append "BOOT_LDFLAGS=" - " -B" (assoc-ref %build-inputs "tcc") - "/lib/")) + #:make-flags + `("CC=tcc -static -D __GLIBC_MINOR__=6" + "OLDCC=tcc -static -D __GLIBC_MINOR__=6" + "CC_FOR_BUILD=tcc -static -D __GLIBC_MINOR__=6" + "AR=ar" + "RANLIB=ranlib" + ,(string-append "LIBGCC2_INCLUDES=-I " + (assoc-ref %build-inputs "tcc") + "/include") + "LANGUAGES=c" + ,(string-append "BOOT_LDFLAGS=" + " -B" (assoc-ref %build-inputs "tcc") + "/lib/")) #:modules ((guix build gnu-build-system) (guix build utils) (srfi srfi-1)) #:phases (modify-phases %standard-phases - ;; gcc-2.95.3 needs more traditional configure + (add-after 'unpack 'apply-boot-patch + (lambda* (#:key inputs #:allow-other-keys) + (let ((patch-file (assoc-ref inputs "boot-patch"))) + (system* "patch" "--force" "-p1" "-i" patch-file) + #t))) (add-before 'configure 'setenv (lambda* (#:key outputs #:allow-other-keys) - (let ((out (assoc-ref outputs "out")) - (bash (assoc-ref %build-inputs "bash")) - (tcc (assoc-ref %build-inputs "tcc")) - (cppflags " -D __GLIBC_MINOR__=6")) - (setenv "CONFIG_SHELL" (string-append bash "/bin/sh")) + (let* ((out (assoc-ref outputs "out")) + (bash (assoc-ref %build-inputs "bash")) + (shell (string-append bash "/bin/bash")) + (tcc (assoc-ref %build-inputs "tcc")) + (cppflags " -D __GLIBC_MINOR__=6")) + (setenv "CONFIG_SHELL" shell) (setenv "CPPFLAGS" cppflags) (setenv "CC" (string-append "tcc" cppflags)) (setenv "CC_FOR_BUILD" (string-append "tcc" cppflags)) @@ -591,9 +1193,9 @@ (lambda _ (display " ac_cv_c_float_format='IEEE (little-endian)' -"))) - #t))) - (replace 'configure +")))))) + ;; gcc-2.95.3 + (replace 'configure ; needs classic invocation of configure (lambda* (#:key configure-flags #:allow-other-keys) (format (current-error-port) "running ./configure ~a\n" (string-join configure-flags)) @@ -611,34 +1213,36 @@ ac_cv_c_float_format='IEEE (little-endian)' (gcc-dir (string-append out "/lib/gcc-lib/i686-unknown-linux-gnu/2.95.3"))) (mkdir-p "tmp") - (zero? (system (string-append "set -x; cd tmp && ar x ../gcc/libgcc2.a"))) - (zero? (system (string-append "set -x; cd tmp && ar r " gcc-dir "/libgcc.a *.o"))) + (with-directory-excursion "tmp" + (invoke "ar" "x" (string-append "../gcc/libgcc2.a")) + (invoke "ar" "x" (string-append tcc "/lib/libtcc1.a")) + (apply invoke "ar" "r" (string-append gcc-dir "/libgcc.a") + (find-files "." "\\.o"))) (copy-file "gcc/libgcc2.a" (string-append out "/lib/libgcc2.a")) (copy-file (string-append tcc "/lib/libtcc1.a") (string-append out "/lib/libtcc1.a")) + (invoke "ar" "x" (string-append tcc "/lib/libtcc1.a")) + (invoke "ar" "x" (string-append tcc "/lib/libc.a")) (invoke "ar" "r" (string-append gcc-dir "/libc.a") - (string-append tcc-lib "/libc+gnu.o") - (string-append tcc-lib "/libtcc1.o")) - (invoke "ar" "r" (string-append out "/lib/libc.a") - (string-append tcc-lib "/libc+gnu.o") - (string-append tcc-lib "/libtcc1.o")) - (invoke "ls" "-ltrF" gcc-dir) - (copy-recursively (string-append tcc "/include") - (string-append out "/include")) + "libc.o" "libtcc1.o") #t)))))) (native-search-paths - ;; Use the language-specific variables rather than 'CPATH' because they - ;; are equivalent to '-isystem' whereas 'CPATH' is equivalent to '-I'. - ;; The intent is to allow headers that are in the search path to be - ;; treated as "system headers" (headers exempt from warnings) just like - ;; the typical /usr/include headers on an FHS system. (list (search-path-specification (variable "C_INCLUDE_PATH") - (files '("include" "/lib/gcc-lib/i686-unknown-linux-gnu/2.95.3/include"))) + (files '("include" + + ;; Needed to get things like GCC's <stddef.h>. + "lib/gcc-lib/i686-unknown-linux-gnu/2.95.3/include"))) (search-path-specification (variable "LIBRARY_PATH") (files '("lib"))))))) +(define (%boot-mesboot-core-inputs) + `(("binutils" ,binutils-mesboot0) + ("gawk" ,gawk-mesboot0) + ("gcc" ,gcc-core-mesboot0) + ,@(alist-delete "tcc" (%boot-tcc-inputs)))) + (define mesboot-headers (package (inherit mes-boot) @@ -646,8 +1250,8 @@ ac_cv_c_float_format='IEEE (little-endian)' (supported-systems '("i686-linux" "x86_64-linux")) (inputs '()) (propagated-inputs '()) - (native-inputs `(("coreutils" ,%bootstrap-coreutils&co) - ("headers" ,%bootstrap-linux-libre-headers))) + (native-inputs `(("kernel-headers" ,%bootstrap-linux-libre-headers) + ,@(%boot-tcc-inputs))) (arguments `(#:implicit-inputs? #f #:guile ,%bootstrap-guile @@ -661,20 +1265,79 @@ ac_cv_c_float_format='IEEE (little-endian)' (lambda* (#:key outputs #:allow-other-keys) (let* ((out (assoc-ref outputs "out")) (include (string-append out "/include")) - (headers (assoc-ref %build-inputs "headers" ))) + (headers (assoc-ref %build-inputs "kernel-headers"))) (mkdir-p include) (copy-recursively "include" out) (copy-recursively headers out) - #t)))))) - (native-search-paths - ;; Use the language-specific variables rather than 'CPATH' because they - ;; are equivalent to '-isystem' whereas 'CPATH' is equivalent to '-I'. - ;; The intent is to allow headers that are in the search path to be - ;; treated as "system headers" (headers exempt from warnings) just like - ;; the typical /usr/include headers on an FHS system. - (list (search-path-specification - (variable "C_INCLUDE_PATH") - (files '("include"))))))) + #t)))))))) + +(define gawk-mesboot0 + ;; The initial Gawk. + (package + (inherit gawk) + (name "gawk-mesboot0") + (version "3.0.0") + (source (origin + (method url-fetch) + (uri (string-append "mirror://gnu/gawk/gawk-" + version ".tar.gz")) + (sha256 + (base32 + "087s7vpc8zawn3l7bwv9f44bf59rc398hvaiid63klw6fkbvabr3")))) + (supported-systems '("i686-linux" "x86_64-linux")) + (inputs '()) + (propagated-inputs '()) + (native-inputs (%boot-tcc-inputs)) + (arguments + `(#:implicit-inputs? #f + #:guile ,%bootstrap-guile + #:configure-flags '("--build=i686-unknown-linux-gnu" + "--host=i686-unknown-linux-gnu" + "--disable-nls") + #:make-flags '("gawk") + #:parallel-build? #f + #:parallel-tests? #f + #:strip-binaries? #f ; no strip yet + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'scripted-patch + (lambda _ + (substitute* "Makefile.in" + (("date ") "echo today ") + ((" autoheader") "true") + ((" -lm ") " ")) + (substitute* "test/Makefile.in" + (("^bigtest:.*") "bigtest: basic\n") + (("( |\t)(childin|convfmt|fflush|longwrds|math|negexp)" all sep) sep)))) + (add-before 'configure 'setenv + (lambda _ + (let* ((out (assoc-ref %outputs "out")) + (bash (assoc-ref %build-inputs "bash")) + (shell (string-append bash "/bin/bash"))) + (setenv "CONFIG_SHELL" shell) + (setenv "SHELL" shell) + (setenv "CC" "tcc") + (setenv "CPP" "tcc -E") + (setenv "LD" "tcc") + (setenv "ac_cv_func_getpgrp_void" "yes") + (setenv "ac_cv_func_tzset" "yes")) + #t)) + (replace 'configure ; needs classic invocation of configure + (lambda* (#:key configure-flags #:allow-other-keys) + (let* ((out (assoc-ref %outputs "out")) + (configure-flags + `(,@configure-flags + ,(string-append "--prefix=" out)))) + (format (current-error-port) "running ./configure ~a\n" (string-join configure-flags)) + (system* "touch" "configure") ; aclocal.m4 is newer than configure + (apply invoke (cons "./configure" configure-flags))))) + (replace 'install + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (bin (string-append out "/bin"))) + (install-file "gawk" bin) + (symlink "gawk" (string-append bin "/awk")) + #t)))))))) (define glibc-mesboot0 ;; GNU C Library 2.2.5 is the most recent glibc that we managed to build @@ -684,33 +1347,30 @@ ac_cv_c_float_format='IEEE (little-endian)' (inherit glibc) (name "glibc-mesboot0") (version "2.2.5") - (source (bootstrap-origin - (origin - (method url-fetch) - (uri (string-append "mirror://gnu/glibc/glibc-" - version - ".tar.gz")) - (patches (search-patches "glibc-boot-2.2.5.patch")) - (sha256 - (base32 - "1vl48i16gx6h68whjyhgnn1s57vqq32f9ygfa2fls7pdkbsqvp2q"))))) + (source (origin + (method url-fetch) + (uri (string-append "mirror://gnu/glibc/glibc-" + version + ".tar.gz")) + ;; Patch needs XZ + ;; (patches (search-patches "glibc-boot-2.2.5.patch")) + (sha256 + (base32 + "1vl48i16gx6h68whjyhgnn1s57vqq32f9ygfa2fls7pdkbsqvp2q")))) (supported-systems '("i686-linux" "x86_64-linux")) (inputs '()) (propagated-inputs '()) - (native-inputs `(("binutils" ,binutils-mesboot0) - ("gcc" ,gcc-core-mesboot) - - ("bash" ,%bootstrap-coreutils&co) - ("coreutils" ,%bootstrap-coreutils&co) - ("diffutils" ,diffutils-mesboot) + (native-inputs `(("boot-patch" ,(search-patch "glibc-boot-2.2.5.patch")) + ("system-patch" ,(search-patch "glibc-bootstrap-system-2.2.5.patch")) ("headers" ,mesboot-headers) - ("make" ,make-mesboot0))) + ,@(%boot-mesboot-core-inputs))) (outputs '("out")) (arguments `(#:implicit-inputs? #f #:guile ,%bootstrap-guile #:tests? #f #:strip-binaries? #f + #:validate-runpath? #f ; no dynamic executables #:parallel-build? #f ; gcc-2.95.3 ICEs on massively parallel builds #:make-flags (list (string-append "SHELL=" @@ -719,25 +1379,31 @@ ac_cv_c_float_format='IEEE (little-endian)' #:configure-flags (let ((out (assoc-ref %outputs "out")) (headers (assoc-ref %build-inputs "headers"))) - (list - "--disable-shared" - "--enable-static" - "--disable-sanity-checks" - "--build=i686-unknown-linux-gnu" - "--host=i686-unknown-linux-gnu" - (string-append "--with-headers=" headers "/include") - "--enable-static-nss" - "--without-__thread" - "--without-cvs" - "--without-gd" - "--without-tls" - (string-append "--prefix=" out))) + `("--disable-shared" + "--enable-static" + "--disable-sanity-checks" + "--build=i686-unknown-linux-gnu" + "--host=i686-unknown-linux-gnu" + ,(string-append "--with-headers=" headers "/include") + "--enable-static-nss" + "--without-__thread" + "--without-cvs" + "--without-gd" + "--without-tls" + ,(string-append "--prefix=" out))) #:phases (modify-phases %standard-phases + (add-after 'unpack 'apply-boot-patch + (lambda* (#:key inputs #:allow-other-keys) + (and (let ((patch (assoc-ref inputs "boot-patch"))) + (invoke "patch" "--force" "-p1" "-i" patch)) + (let ((patch (assoc-ref inputs "system-patch"))) + (invoke "patch" "--force" "-p1" "-i" patch))))) (add-before 'configure 'setenv (lambda* (#:key outputs #:allow-other-keys) (let* ((out (assoc-ref outputs "out")) (bash (assoc-ref %build-inputs "bash")) + (shell (string-append bash "/bin/bash")) (gcc (assoc-ref %build-inputs "gcc")) (headers (assoc-ref %build-inputs "headers")) (cppflags (string-append @@ -745,88 +1411,63 @@ ac_cv_c_float_format='IEEE (little-endian)' " -D MES_BOOTSTRAP=1" " -D BOOTSTRAP_GLIBC=1")) (cflags (string-append " -L " (getcwd)))) - (setenv "CONFIG_SHELL" (string-append bash "/bin/sh")) - (setenv "SHELL" (getenv "CONFIG_SHELL")) + (setenv "CONFIG_SHELL" shell) + (setenv "SHELL" shell) (setenv "CPP" (string-append gcc "/bin/gcc -E " cppflags)) (setenv "CC" (string-append gcc "/bin/gcc " cppflags cflags)) #t))) - ;; glibc-2.2.5 needs a more classic invocation of configure - ;; configure: warning: CONFIG_SHELL=/gnu/store/…-bash-minimal-4.4.12/bin/bash: invalid host type - (replace 'configure + (replace 'configure ; needs classic invocation of configure (lambda* (#:key configure-flags #:allow-other-keys) (format (current-error-port) "running ./configure ~a\n" (string-join configure-flags)) - (apply invoke "./configure" configure-flags)))))) - (native-search-paths - ;; Use the language-specific variables rather than 'CPATH' because they - ;; are equivalent to '-isystem' whereas 'CPATH' is equivalent to '-I'. - ;; The intent is to allow headers that are in the search path to be - ;; treated as "system headers" (headers exempt from warnings) just like - ;; the typical /usr/include headers on an FHS system. - (list (search-path-specification - (variable "C_INCLUDE_PATH") - (files '("include"))) - (search-path-specification - (variable "CPLUS_INCLUDE_PATH") - (files '("include"))) - (search-path-specification - (variable "LIBRARY_PATH") - (files '("lib"))))))) + (apply invoke "./configure" configure-flags))) + (add-after 'configure 'fixup-configure + (lambda _ + (let* ((out (assoc-ref %outputs "out")) + (bash (assoc-ref %build-inputs "bash")) + (shell (string-append bash "/bin/bash"))) + (substitute* "config.make" + (("INSTALL = scripts/") "INSTALL = $(..)./scripts/")) + (substitute* "config.make" + (("INSTALL = scripts/") "INSTALL = $(..)./scripts/") + (("BASH = ") (string-append + "SHELL = " shell " + BASH = "))) + #t)))))))) (define gcc-mesboot0 (package - (inherit gcc-core-mesboot) + (inherit gcc-core-mesboot0) (name "gcc-mesboot0") - (native-inputs `(("binutils" ,binutils-mesboot0) - ("gcc" ,gcc-core-mesboot) + (native-inputs `(("boot-patch" ,(search-patch "gcc-boot-2.95.3.patch")) + ;; Packages are given in an order that's relevant for + ;; #include_next purposes. ("libc" ,glibc-mesboot0) - - ("bash" ,%bootstrap-coreutils&co) - ("coreutils" ,%bootstrap-coreutils&co) - ("diffutils" ,diffutils-mesboot) ("kernel-headers" ,%bootstrap-linux-libre-headers) - ("make" ,make-mesboot0))) + ,@(%boot-mesboot-core-inputs))) (arguments - (substitute-keyword-arguments (package-arguments gcc-core-mesboot) + (substitute-keyword-arguments (package-arguments gcc-core-mesboot0) ((#:phases phases) `(modify-phases ,phases (replace 'setenv - (lambda* (#:key outputs #:allow-other-keys) - (let ((out (assoc-ref outputs "out")) - (bash (assoc-ref %build-inputs "bash")) - (gcc (assoc-ref %build-inputs "gcc")) - (glibc (assoc-ref %build-inputs "libc")) - (kernel-headers (assoc-ref %build-inputs "kernel-headers"))) - (setenv "CONFIG_SHELL" (string-append bash "/bin/sh")) - (format (current-error-port) "C_INCLUDE_PATH=~a\n" (getenv "C_INCLUDE_PATH")) - (setenv "C_INCLUDE_PATH" (string-append - gcc "/lib/gcc-lib/i686-unknown-linux-gnu/2.95.3/include" - ":" kernel-headers "/include" - ":" glibc "/include")) - (format (current-error-port) "C_INCLUDE_PATH=~a\n" (getenv "C_INCLUDE_PATH")) - (format (current-error-port) "LIBRARY_PATH=~a\n" (getenv "LIBRARY_PATH")) - ;; FIXME: add glibc dirs to paths manually - (setenv "LIBRARY_PATH" (string-join - (list (string-append glibc "/lib") - (getenv "LIBRARY_PATH")) - ":")) - (format (current-error-port) "LIBRARY_PATH=~a\n" (getenv "LIBRARY_PATH")) - (with-output-to-file "config.cache" - (lambda _ - (display " + (lambda _ + (setenv "CONFIG_SHELL" (which "sh")) + (with-output-to-file "config.cache" + (lambda _ + (display " ac_cv_c_float_format='IEEE (little-endian)' "))) - #t))) + #t)) (replace 'install2 (lambda* (#:key outputs #:allow-other-keys) (let* ((out (assoc-ref outputs "out")) (gcc-dir (string-append out "/lib/gcc-lib/i686-unknown-linux-gnu/2.95.3"))) - (mkdir-p "tmp") - (zero? (system (string-append "set -x; cd tmp && ar x ../gcc/libgcc2.a"))) - (zero? (system (string-append "set -x; cd tmp && ar r " gcc-dir "/libgcc.a *.o"))) - (copy-file "gcc/libgcc2.a" (string-append out "/lib/libgcc2.a")) - #t))))) + (and + (mkdir-p "tmp") + (zero? (system (string-append "set -x; cd tmp && ar x ../gcc/libgcc2.a"))) + (zero? (system (string-append "set -x; cd tmp && ar r " gcc-dir "/libgcc.a *.o"))) + (copy-file "gcc/libgcc2.a" (string-append out "/lib/libgcc2.a")))))))) ((#:configure-flags configure-flags) `(let ((out (assoc-ref %outputs "out"))) `("--disable-shared" @@ -840,32 +1481,166 @@ ac_cv_c_float_format='IEEE (little-endian)' ,(string-append "LIBGCC2_INCLUDES=-I " gcc "/include") "LANGUAGES=c"))))))) -(define binutils-mesboot +(define (%boot-mesboot0-inputs) + `(("gcc" ,gcc-mesboot0) + ("kernel-headers" ,%bootstrap-linux-libre-headers) + ("libc" ,glibc-mesboot0) + ,@(alist-delete "gcc" (%boot-mesboot-core-inputs)))) + +(define tar-mesboot + ;; Initial tar with support for xz compression. (package - (inherit binutils-mesboot0) - (name "binutils-mesboot") - (native-inputs `(("binutils" ,binutils-mesboot0) - ("libc" ,glibc-mesboot0) - ("gcc" ,gcc-mesboot0) + (inherit tar) + (name "tar-mesboot") + (version "1.22") + (source (origin + (method url-fetch) + (uri (string-append "mirror://gnu/tar/tar-" + version ".tar.gz")) + (sha256 + (base32 + "19nvix64y95n5v6rr5g9g3fn08zz85cb5anzd7csfv4a4sz9lw4y")))) + (supported-systems '("i686-linux" "x86_64-linux")) + (inputs '()) + (propagated-inputs '()) + (native-inputs (%boot-mesboot0-inputs)) + (arguments + `(#:implicit-inputs? #f + #:guile ,%bootstrap-guile + #:parallel-build? #f + #:tests? #f ; check is naive, also checks non-built PROGRAMS + #:strip-binaries? #f ; no strip yet + #:configure-flags '("--build=i686-unknown-linux-gnu" + "--host=i686-unknown-linux-gnu" + "--disable-nls") + #:phases + (modify-phases %standard-phases + (replace 'configure + (lambda* (#:key configure-flags #:allow-other-keys) + (let* ((out (assoc-ref %outputs "out")) + (bash (assoc-ref %build-inputs "bash")) + (shell (string-append bash "/bin/bash"))) + (setenv "CONFIG_SHELL" shell) + (setenv "SHELL" shell) + (setenv "LIBS" "-lc -lnss_files -lnss_dns -lresolv") + (setenv "gl_cv_func_rename_dest_works" "yes") + (format (current-error-port) + "running ./configure ~a\n" (string-join configure-flags)) + (apply invoke (cons "./configure" configure-flags))))) + (add-after 'unpack 'scripted-patch + (lambda _ + (let* ((bash (assoc-ref %build-inputs "bash")) + (shell (string-append bash "/bin/bash"))) + (substitute* "configure" + ((" /bin/sh") shell))) + (substitute* "Makefile.in" + (("^SUBDIRS = doc") "SUBDIRS =")) + #t)) + (replace 'install + (lambda _ + (let* ((out (assoc-ref %outputs "out")) + (bin (string-append out "/bin"))) + (install-file "src/tar" bin) + #t)))))))) - ("bash" ,%bootstrap-coreutils&co) - ("coreutils" ,%bootstrap-coreutils&co) - ("diffutils" ,diffutils-mesboot) - ("kernel-headers" ,%bootstrap-linux-libre-headers) - ("make" ,make-mesboot0))) +(define grep-mesboot + ;; The initial grep. + (package + (inherit grep) + (name "grep-mesboot") + (version "2.0") + (source (origin + (method url-fetch) + (uri (string-append "mirror://gnu/grep/grep-" + version ".tar.gz")) + (sha256 + (base32 + "1w862l80lgc5mxvpiy4cfwk761d6xxavn0m3xd2l7xs2kmzvp6lq")))) + (supported-systems '("i686-linux" "x86_64-linux")) + (inputs '()) + (propagated-inputs '()) + (native-inputs (%boot-mesboot0-inputs)) + (arguments + `(#:implicit-inputs? #f + #:guile ,%bootstrap-guile + #:parallel-build? #f + #:phases + (modify-phases %standard-phases + (add-before 'configure 'patch-configure + (lambda _ + (let* ((bash (assoc-ref %build-inputs "bash")) + (shell (string-append bash "/bin/bash"))) + (substitute* "configure" + ((" [|][|] ./config.status") " || sh ./config.status"))))) + (replace 'install + (lambda _ + (let* ((out (assoc-ref %outputs "out")) + (bin (string-append out "/bin"))) + (install-file "grep" bin) + (symlink "grep" (string-append bin "/egrep")) + (symlink "grep" (string-append bin "/fgrep")) + #t)))))))) + +(define binutils-mesboot1 + (package + (inherit binutils-mesboot0) + (name "binutils-mesboot1") + (native-inputs (%boot-mesboot0-inputs)) (arguments (substitute-keyword-arguments (package-arguments binutils-mesboot0) ((#:configure-flags configure-flags) - '(list "--disable-nls" - "--disable-shared" - "--disable-werror" - "--build=i686-unknown-linux-gnu" - "--host=i686-unknown-linux-gnu" - "--with-sysroot=/")))))) + '(let ((out (assoc-ref %outputs "out"))) + `("--disable-nls" + "--disable-shared" + "--disable-werror" + "--build=i686-unknown-linux-gnu" + "--host=i686-unknown-linux-gnu" + "--with-sysroot=/" + ,(string-append "--prefix=" out)))) + ((#:phases phases) + `(modify-phases ,phases + (replace 'setenv + (lambda _ + (let* ((out (assoc-ref %outputs "out")) + (bash (assoc-ref %build-inputs "bash")) + (shell (string-append bash "/bin/bash"))) + (setenv "CONFIG_SHELL" shell) + #t))))))))) + +(define coreutils-mesboot0 + (package + (inherit coreutils) + (name "coreutils-mesboot0") + ;; The latest .gz release of Coreutils is 8.13; which does not build with gcc-2.95.3: + ;; randperm.c: In function `sparse_swap': + ;; randperm.c:117: invalid lvalue in unary `&' + (version "5.0") ; 2003-04 + (source (origin + (method url-fetch) + (uri (string-append "mirror://gnu/coreutils/coreutils-" + version ".tar.gz")) + (sha256 + (base32 + "10wq6k66i8adr4k08p0xmg87ff4ypiazvwzlmi7myib27xgffz62")))) + (native-inputs (%boot-mesboot0-inputs)) + (supported-systems '("i686-linux" "x86_64-linux")) + (inputs '()) + (propagated-inputs '()) + (arguments + `(#:implicit-inputs? #f + #:tests? #f ; WARNING: `perl' is needed, ... + #:parallel-build? #f + #:strip-binaries? #f ; strip: unrecognized option `--only-keep-debug' + #:guile ,%bootstrap-guile + #:configure-flags + '("--disable-doc" + "LIBS=-lc -lnss_files -lnss_dns -lresolv" + "ac_cv_func_gethostbyname=no" + "gl_cv_func_rename_dest_works=yes"))))) -(define make-mesboot +(define gnu-make-mesboot (package - (inherit make-mesboot0) + (inherit gnu-make) (name "make-mesboot") (version "3.82") (source (origin @@ -875,27 +1650,178 @@ ac_cv_c_float_format='IEEE (little-endian)' (sha256 (base32 "1rs2f9hmvy3q6zkl15jnlmnpgffm0bhw5ax0h5c7q604wqrip69x")))) - (native-inputs `(("binutils" ,binutils-mesboot0) - ("libc" ,glibc-mesboot0) - ("gcc" ,gcc-mesboot0) - ("make" ,make-mesboot0) + (native-inputs (%boot-mesboot0-inputs)) + (supported-systems '("i686-linux" "x86_64-linux")) + (inputs '()) + (propagated-inputs '()) + (arguments + `(#:implicit-inputs? #f + #:parallel-build? #f + #:guile ,%bootstrap-guile + #:configure-flags '("LIBS=-lc -lnss_files -lnss_dns -lresolv") + #:phases + (modify-phases %standard-phases + (replace 'check + (lambda _ + (invoke "./make" "--version"))) + (replace 'install + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (bin (string-append out "/bin"))) + (install-file "make" bin) + #t)))))))) - ("bash" ,%bootstrap-coreutils&co) - ("coreutils" ,%bootstrap-coreutils&co) - ("kernel-headers" ,%bootstrap-linux-libre-headers))) +(define gawk-mesboot + (package + (inherit gawk) + (name "gawk-mesboot") + (version "3.1.8") + (source (origin + (method url-fetch) + (uri (string-append "mirror://gnu/gawk/gawk-" + version ".tar.gz")) + (sha256 + (base32 + "03d5y7jabq7p2s7ys9alay9446mm7i5g2wvy8nlicardgb6b6ii1")))) + (native-inputs `(,@(%boot-mesboot0-inputs) + ("mesboot-headers" ,mesboot-headers))) + (supported-systems '("i686-linux" "x86_64-linux")) + (inputs '()) + (propagated-inputs '()) (arguments - (substitute-keyword-arguments (package-arguments make-mesboot0) - ((#:configure-flags configure-flags) - `(let ((out (assoc-ref %outputs "out"))) - `(,(string-append "--prefix=" out)))) - ((#:phases phases) - `(modify-phases ,phases - (delete 'configure-fixup) - (add-before 'configure 'setenv - (lambda _ - (setenv "LIBS" "-lc -lnss_files -lnss_dns -lresolv") + `(#:implicit-inputs? #f + #:parallel-build? #f + #:guile ,%bootstrap-guile + #:configure-flags '("ac_cv_func_connect=no") + #:make-flags '("gawk") + #:phases + (modify-phases %standard-phases + (replace 'check + (lambda _ + (invoke "./gawk" "--version"))) + (replace 'install + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (bin (string-append out "/bin"))) + (install-file "gawk" bin) + (symlink "gawk" (string-append bin "/awk")) #t)))))))) +(define sed-mesboot + (package + (inherit sed) + (name "sed-mesboot") + (version "4.0.6") ; 2003-04 + (source (origin + (method url-fetch) + (uri (string-append "mirror://gnu/sed/sed-" + version ".tar.gz")) + (sha256 + (base32 + "0861ij94cqc4vaaki6r2wlapwcmhpx4ggp4r70f46mb21a8fkvf1")))) + (native-inputs (%boot-mesboot0-inputs)) + (supported-systems '("i686-linux" "x86_64-linux")) + (inputs '()) + (propagated-inputs '()) + (arguments + `(#:implicit-inputs? #f + #:parallel-build? #f + #:guile ,%bootstrap-guile + #:tests? #f ; 8to7 fails + #:phases + (modify-phases %standard-phases + (add-after 'unpack '/bin/sh + (lambda _ + (let* ((bash (assoc-ref %build-inputs "bash")) + (shell (string-append bash "/bin/bash"))) + (substitute* "testsuite/Makefile.tests" + (("^SHELL = /bin/sh") + (string-append "SHELL = " shell))) + #t)))))))) + +(define bash-mesboot + (package + (inherit bash-mesboot0) + (version "4.4") + (name "bash-mesboot") + (source (origin + (method url-fetch) + (uri (string-append "mirror://gnu/bash/bash-" + version ".tar.gz")) + (sha256 + (base32 + "1jyz6snd63xjn6skk7za6psgidsd53k05cr3lksqybi0q6936syq")))) + (inputs '()) + (propagated-inputs '()) + (native-inputs (%boot-mesboot0-inputs)) + (outputs '("out")) + (arguments + `(#:implicit-inputs? #f + #:guile ,%bootstrap-guile + #:parallel-build? #f + #:configure-flags + '("--build=i686-unknown-linux-gnu" + "--host=i686-unknown-linux-gnu" + + "--without-bash-malloc" + "--disable-readline" + "--disable-history" + "--disable-help-builtin" + "--disable-progcomp" + "--disable-net-redirections" + "--disable-nls" + + ;; Pretend 'dlopen' is missing so we don't build loadable + ;; modules and related code. + "ac_cv_func_dlopen=no") + #:make-flags '("bash") + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'scripted-patch + (lambda _ + (substitute* "shell.c" + ((";;") ";")) + #t)) + (add-before 'configure 'setenv + (lambda _ + (setenv "AWK" "gawk") + (setenv "LIBS" "-lc -lnss_files -lnss_dns -lresolv") + (setenv "gl_cv_func_rename_dest_works" "yes") + #t)) + (add-after 'configure 'configure-fixups + (lambda _ + (let ((config.h (open-file "config.h" "a"))) + (display (string-append " +#define enable_hostname_completion(on_or_off) 0 +") + config.h) + (close config.h)) + #t)) + (replace 'check + (lambda _ + (invoke "./bash" "--version"))) + (replace 'install + (lambda _ + (let* ((out (assoc-ref %outputs "out")) + (bin (string-append out "/bin"))) + (mkdir-p bin) + (copy-file "bash" (string-append bin "/bash")) + (copy-file "bash" (string-append bin "/sh")) + #t)))))))) + +(define (%boot-mesboot1-inputs) + `(("bash" ,bash-mesboot) + ("binutils" ,binutils-mesboot1) + ("coreutils" ,coreutils-mesboot0) + ("gawk" ,gawk-mesboot) + ("grep" ,grep-mesboot) + ("make" ,gnu-make-mesboot) + ("sed" ,sed-mesboot) + ("tar" ,tar-mesboot) + ,@(fold alist-delete (%boot-mesboot0-inputs) + '("bash" "binutils" "bootar" "coreutils" "gash" + "gawk" "grep" "guile" "make" "sed" "tar")))) + (define gmp-boot (package (inherit gmp) @@ -930,180 +1856,320 @@ ac_cv_c_float_format='IEEE (little-endian)' (base32 "1hzci2zrrd7v3g1jk35qindq05hbl0bhjcyyisq9z209xb3fqzb1")))))) -(define gcc-mesboot1 +(define gcc-core-mesboot1 + ;; GCC 4.6.4 is the latest modular distribution. This package is not + ;; stricly needed, but very helpful for development because it builds + ;; relatively fast. If this configures and builds then gcc-mesboot1 also + ;; builds. (package (inherit gcc-mesboot0) - (name "gcc-mesboot1") - (version "4.7.4") - (source (bootstrap-origin - (origin (inherit (package-source gcc-4.7)) - (patches (search-patches "gcc-boot-4.7.4.patch"))))) + (name "gcc-core-mesboot1") + (version "4.6.4") + (source (origin + (method url-fetch) + (uri (string-append "mirror://gnu/gcc/gcc-" + version "/gcc-core-" version ".tar.gz")) + (sha256 + (base32 + "173kdb188qg79pcz073cj9967rs2vzanyjdjyxy9v0xb0p5sad75")) + ;; Patch needs XZ + ;; (patches (search-patches "gcc-boot-4.6.4.patch")) + )) (inputs `(("gmp-source" ,(package-source gmp-boot)) ("mpfr-source" ,(package-source mpfr-boot)) ("mpc-source" ,(package-source mpc-boot)))) - (native-inputs `(("binutils" ,binutils-mesboot) - ("gcc" ,gcc-mesboot0) - ("libc" ,glibc-mesboot0) + (native-inputs `(("boot-patch" ,(search-patch "gcc-boot-4.6.4.patch")) + ,@(%boot-mesboot1-inputs))) + (arguments + `(#:implicit-inputs? #f + #:guile ,%bootstrap-guile + #:tests? #f + #:modules ((guix build gnu-build-system) + (guix build utils) + (srfi srfi-1)) + #:parallel-build? #f ; for debugging + #:make-flags + (let* ((libc (assoc-ref %build-inputs "libc")) + (ldflags (string-append + "-B" libc "/lib " + "-Wl,-dynamic-linker " + "-Wl," libc + ,(glibc-dynamic-linker "i686-linux")))) + (list (string-append "LDFLAGS=" ldflags) + (string-append "LDFLAGS_FOR_TARGET=" ldflags))) + #:configure-flags + (let ((out (assoc-ref %outputs "out")) + (glibc (assoc-ref %build-inputs "libc"))) + (list (string-append "--prefix=" out) + "--build=i686-unknown-linux-gnu" + "--host=i686-unknown-linux-gnu" + (string-append "--with-native-system-header-dir=" glibc "/include") + (string-append "--with-build-sysroot=" glibc "/include") + "--disable-bootstrap" + "--disable-decimal-float" + "--disable-libatomic" + "--disable-libcilkrts" + "--disable-libgomp" + "--disable-libitm" + "--disable-libmudflap" + "--disable-libquadmath" + "--disable-libsanitizer" + "--disable-libssp" + "--disable-libvtv" + "--disable-lto" + "--disable-lto-plugin" + "--disable-multilib" + "--disable-plugin" + "--disable-threads" + "--enable-languages=c" + "--enable-static" + "--disable-shared" + "--enable-threads=single" + "--disable-libstdcxx-pch" + "--disable-build-with-cxx")) + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'apply-boot-patch + (lambda* (#:key inputs #:allow-other-keys) + (let ((patch-file (assoc-ref inputs "boot-patch"))) + (format (current-error-port) "patch file=~s\n" patch-file) + (system* "patch" "--force" "-p1" "-i" patch-file)) + #t)) + ;; c&p from commencement.scm:gcc-boot0 + (add-after 'unpack 'unpack-gmp&co + (lambda* (#:key inputs #:allow-other-keys) + (let ((gmp (assoc-ref %build-inputs "gmp-source")) + (mpfr (assoc-ref %build-inputs "mpfr-source")) + (mpc (assoc-ref %build-inputs "mpc-source"))) + + ;; To reduce the set of pre-built bootstrap inputs, build + ;; GMP & co. from GCC. + (for-each (lambda (source) + (or (invoke "tar" "xvf" source) + (error "failed to unpack tarball" + source))) + (list gmp mpfr mpc)) + + ;; Create symlinks like `gmp' -> `gmp-x.y.z'. + ,@(map (lambda (lib) + ;; Drop trailing letters, as gmp-6.0.0a unpacks + ;; into gmp-6.0.0. + `(symlink ,(string-trim-right + (package-full-name lib "-") + char-set:letter) + ,(package-name lib))) + (list gmp-boot mpfr-boot mpc-boot)) + #t))) + (add-before 'configure 'setenv + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (binutils (assoc-ref %build-inputs "binutils")) + (bash (assoc-ref %build-inputs "bash")) + (gcc (assoc-ref %build-inputs "gcc")) + (glibc (assoc-ref %build-inputs "libc")) + (kernel-headers (assoc-ref %build-inputs "kernel-headers"))) + (setenv "CONFIG_SHELL" (string-append bash "/bin/sh")) + (setenv "C_INCLUDE_PATH" (string-append + gcc "/lib/gcc-lib/i686-unknown-linux-gnu/2.95.3/include" + ":" kernel-headers "/include" + ":" glibc "/include" + ":" (getcwd) "/mpfr/src")) + (setenv "LIBRARY_PATH" (string-append glibc "/lib" + ":" gcc "/lib")) + (format (current-error-port) "C_INCLUDE_PATH=~a\n" (getenv "C_INCLUDE_PATH")) + (format (current-error-port) "LIBRARY_PATH=~a\n" (getenv "LIBRARY_PATH")) + #t)))))))) - ("bash" ,%bootstrap-coreutils&co) - ("coreutils" ,%bootstrap-coreutils&co) - ("diffutils" ,diffutils-mesboot) - ("kernel-headers" ,%bootstrap-linux-libre-headers) - ("make" ,make-mesboot))) +(define gcc-mesboot1 + (package + (inherit gcc-core-mesboot1) + (name "gcc-mesboot1") + (version "4.6.4") + (native-inputs + `(("gcc-g++" + ,(origin + (method url-fetch) + (uri (string-append "mirror://gnu/gcc/gcc-" + version "/gcc-g++-" version ".tar.gz")) + (sha256 + (base32 + "1fqqk5zkmdg4vmqzdmip9i42q6b82i3f6yc0n86n9021cr7ms2k9")))) + ,@(package-native-inputs gcc-core-mesboot1))) (arguments - (substitute-keyword-arguments (package-arguments gcc-core-mesboot) - ((#:make-flags make-flags) - `(let* ((libc (assoc-ref %build-inputs "libc")) - (ldflags (string-append - "-B" libc "/lib " - "-Wl,-dynamic-linker " - "-Wl," libc - ,(glibc-dynamic-linker "i686-linux")))) - (list (string-append "LDFLAGS=" ldflags) - (string-append "LDFLAGS_FOR_TARGET=" ldflags)))) + (substitute-keyword-arguments (package-arguments gcc-core-mesboot1) + ((#:configure-flags configure-flags) + `(let ((out (assoc-ref %outputs "out"))) + `("--enable-languages=c,c++" + ,@(filter + (negate (lambda (x) (string-prefix? "--enable-languages=" x))) + ,configure-flags)))) ((#:phases phases) `(modify-phases ,phases - ;; c&p from commencement.scm:gcc-boot0 - (add-after 'unpack 'unpack-gmp&co - (lambda* (#:key inputs #:allow-other-keys) - (let ((gmp (assoc-ref %build-inputs "gmp-source")) - (mpfr (assoc-ref %build-inputs "mpfr-source")) - (mpc (assoc-ref %build-inputs "mpc-source"))) - - ;; To reduce the set of pre-built bootstrap inputs, build - ;; GMP & co. from GCC. - (for-each (lambda (source) - (or (invoke "tar" "xvf" source) - (error "failed to unpack tarball" - source))) - (list gmp mpfr mpc)) - - ;; Create symlinks like `gmp' -> `gmp-x.y.z'. - ,@(map (lambda (lib) - ;; Drop trailing letters, as gmp-6.0.0a unpacks - ;; into gmp-6.0.0. - `(symlink ,(string-trim-right - (package-full-name lib "-") - char-set:letter) - ,(package-name lib))) - (list gmp-boot mpfr-boot mpc-boot)) - #t))) - (delete 'remove-info) + (add-before 'unpack 'unpack-g++ + (lambda _ + (let ((source-g++ (assoc-ref %build-inputs "gcc-g++"))) + (invoke "tar" "xvf" source-g++)) + #t)) (replace 'setenv - (lambda* (#:key outputs #:allow-other-keys) - (let* ((out (assoc-ref outputs "out")) - (binutils (assoc-ref %build-inputs "binutils")) - (bash (assoc-ref %build-inputs "bash")) - (gcc (assoc-ref %build-inputs "gcc")) - (glibc (assoc-ref %build-inputs "libc")) - (kernel-headers (assoc-ref %build-inputs "kernel-headers"))) - (setenv "CONFIG_SHELL" (string-append bash "/bin/sh")) - (setenv "C_INCLUDE_PATH" (string-append - gcc "/lib/gcc-lib/i686-unknown-linux-gnu/2.95.3/include" - ":" kernel-headers "/include" - ":" glibc "/include" - ":" (getcwd) "/mpfr/src")) - (setenv "LIBRARY_PATH" (string-append glibc "/lib" - ":" gcc "/lib")) - (format (current-error-port) "C_INCLUDE_PATH=~a\n" (getenv "C_INCLUDE_PATH")) - (format (current-error-port) "LIBRARY_PATH=~a\n" (getenv "LIBRARY_PATH")) - #t))) - (delete 'install2))) - ((#:configure-flags configure-flags) - `(let ((out (assoc-ref %outputs "out")) - (glibc (assoc-ref %build-inputs "libc"))) - (list (string-append "--prefix=" out) - "--build=i686-unknown-linux-gnu" - "--host=i686-unknown-linux-gnu" - - (string-append "--with-native-system-header-dir=" glibc "/include") - (string-append "--with-build-sysroot=" glibc "/include") - - "--disable-bootstrap" - "--disable-decimal-float" - "--disable-libatomic" - "--disable-libcilkrts" - "--disable-libgomp" - "--disable-libitm" - "--disable-libmudflap" - "--disable-libquadmath" - "--disable-libsanitizer" - "--disable-libssp" - "--disable-libvtv" - "--disable-lto" - "--disable-lto-plugin" - "--disable-multilib" - "--disable-plugin" - "--disable-threads" - "--enable-languages=c,c++" - - "--enable-static" - ;; libstdc++.so: error: depends on 'libgcc_s.so.1', which cannot be found in RUNPATH () - "--disable-shared" - "--enable-threads=single" - - ;; No pre-compiled libstdc++ headers, to save space. - "--disable-libstdcxx-pch" - - ;; for libcpp ... - "--disable-build-with-cxx"))))))) + (lambda _ + (setenv "CONFIG_SHELL" (which "sh")) -(define gcc-mesboot1-wrapper - ;; We need this so gcc-mesboot1 can be used to create shared binaries that - ;; have the correct interpreter, otherwise configuring gcc-mesboot using - ;; --enable-shared will fail. + ;; Allow MPFR headers to be found. + (setenv "C_INCLUDE_PATH" + (string-append (getcwd) "/mpfr/src:" + (getenv "C_INCLUDE_PATH"))) + + ;; Set the C++ search path so that C headers can be found as + ;; libstdc++ is being compiled. + (setenv "CPLUS_INCLUDE_PATH" (getenv "C_INCLUDE_PATH")) + #t)))))))) + +(define (%boot-mesboot2-inputs) + `(("gcc" ,gcc-mesboot1) + ,@(alist-delete "gcc" (%boot-mesboot1-inputs)))) + +(define xz-mesboot + ;; Finally, we can build xz. (package - (inherit gcc-mesboot1) - (name "gcc-mesboot1-wrapper") - (source #f) + (inherit xz) + (name "xz-mesboot") + (version "5.0.0") + (source (bootstrap-origin + (origin + (method url-fetch) + (uri (list (string-append "http://tukaani.org/xz/xz-" version + ".tar.gz") + (string-append "http://multiprecision.org/guix/xz-" + version ".tar.gz"))) + (sha256 + (base32 + "0kf40ggbs1vaaj5s9k4csycahzqcf65n20pa6lngqhm6j0cj3agb"))))) + (supported-systems '("i686-linux" "x86_64-linux")) (inputs '()) - (native-inputs `(("bash" ,%bootstrap-coreutils&co) - ("libc" ,glibc-mesboot) - ("gcc" ,gcc-mesboot1))) + (outputs '("out")) + (propagated-inputs '()) + (native-inputs (%boot-mesboot2-inputs)) (arguments `(#:implicit-inputs? #f #:guile ,%bootstrap-guile + #:parallel-build? #f + #:configure-flags + `("--disable-assembler" + "--disable-shared" + "--enable-small" + "--disable-threads" + "--disable-xzdec" + "--disable-lzmadec" + "--disable-lzmainfo" + "--disable-lzma-links" + "--disable-scripts" + "--disable-doc" + "--disable-nls" + "--disable-symbol-versions" + ;; configure disqualifies BASH, CPP, GCC and GREP + ;; all of which seem fine for the build + "ac_cv_prog_cc_c99=-std=gnu9x" + "ac_cv_path_GREP=grep" + "gl_cv_posix_shell=bash" + "ac_cv_have_decl_optreset=no" + "CPPFLAGS=-D__GNUC__=1"))))) + +(define hello-mesboot + ;; Check for Scheme-only bootstrap. + (package + (inherit hello) + (name "hello-mesboot") + (supported-systems '("i686-linux" "x86_64-linux")) + (inputs '()) + (propagated-inputs '()) + (native-inputs (%boot-mesboot2-inputs)) + (arguments + `(#:implicit-inputs? #f + #:guile ,%bootstrap-guile + #:parallel-build? #f + ;; checking for grep that handles long lines and -e... + ;; configure: error: no acceptable grep could be found + #:configure-flags '("ac_cv_path_GREP=grep") #:phases (modify-phases %standard-phases - (delete 'unpack) - (delete 'configure) - (delete 'install) - (replace 'build - (lambda* (#:key outputs #:allow-other-keys) - (let* ((out (assoc-ref outputs "out")) - (bash (assoc-ref %build-inputs "bash")) - (libc (assoc-ref %build-inputs "libc")) - (gcc (assoc-ref %build-inputs "gcc")) - (bin (string-append out "/bin"))) - (mkdir-p bin) - (for-each - (lambda (program) - (let ((wrapper (string-append bin "/" program))) - (with-output-to-file wrapper - (lambda _ - (display (string-append "#! " bash "/bin/bash -exec " gcc "/bin/" program -" -Wl,--dynamic-linker" -;; also for x86_64-linux, we are still on i686-linux -" -Wl," libc ,(glibc-dynamic-linker "i686-linux") -" -Wl,--rpath" -" -Wl," libc "/lib" -" \"$@\" -")) - (chmod wrapper #o555))))) - '( - "gcc" - "g++" - "i686-unknown-linux-gnu-gcc" - "i686-unknown-linux-gnu-g++" - )) - #t))) (replace 'check - (lambda* (#:key outputs #:allow-other-keys) - (let* ((out (assoc-ref outputs "out")) - (bin (string-append out "/bin")) - (program (string-append bin "/gcc"))) - (invoke program "--help"))))))))) + (lambda _ + (invoke "./hello")))))))) + +(define binutils-mesboot + (package + (inherit binutils) + (name "binutils-mesboot") + (version "2.20.1a") + (source (bootstrap-origin + (origin + (method url-fetch) + (uri (string-append "mirror://gnu/binutils/binutils-" + version ".tar.bz2")) + (patches (search-patches "binutils-boot-2.20.1a.patch")) + (sha256 + (base32 + "0r7dr0brfpchh5ic0z9r4yxqn4ybzmlh25sbp30cacqk8nb7rlvi"))))) + (inputs '()) + (propagated-inputs '()) + (native-inputs `(("xz" ,xz-mesboot) + ,@(%boot-mesboot2-inputs))) + (supported-systems '("i686-linux" "x86_64-linux")) + (arguments + `(#:implicit-inputs? #f + #:guile ,%bootstrap-guile + #:tests? #f ; runtest: command not found + #:parallel-build? #f + #:strip-binaries? #f ; no strip yet + #:configure-flags + `("CC=gcc" + "CXX=false" + "RANLIB=true" + "--disable-doc" + "--disable-nls" + "--disable-shared" + "--disable-werror" + "--build=i686-unknown-linux-gnu" + "--host=i686-unknown-linux-gnu" + "--with-sysroot=/" + ;; checking for grep that handles long lines and -e + "ac_cv_path_GREP=grep") + ;; FIXME: ac_cv_path_GREP=grep doesn't seem to be forwarded to + ;; cascading configure's? + #:make-flags '("ac_cv_path_GREP=grep") + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'scripted-patch + (lambda _ + ;; sed-mesboot0 cannot build these + (copy-file "binutils/Makefile.in" "binutils/Makefile.in.orig") + (substitute* "binutils/Makefile.in" + ;; binutils/binutils uses an amazingly complex install + ;; command, using FOR, SED, READ, IF, ECHO, SED, SED, AWK, + ;; READ, and then LIBTOOL (to do something like + ;; `mkdir $DESTDIR$bindir; cp readline $DESTDIR$bindir ...') + + ;; Some tool [debugme!] cannot handle two escaped newlines + ;; (bash?), and the install stops after $(am__EXEEXT_11) + ;; ("objcopy"), so $(am__EXEEXT_13) ("readelf") and others do + ;; not get installed. Remove the stray newline: + (("^\t@BUILD_NLMCONV@ @BUILD_SRCONV@ @BUILD_DLLTOOL@ @BUILD_WINDRES@ .*") "")) + (substitute* "opcodes/Makefile.in" + (("^SUBDIRS = [.] po") "SUBDIRS = .")) + (substitute* "binutils/Makefile.in" + (("^SUBDIRS = doc po") "SUBDIRS =")) + (substitute* "gas/Makefile.in" + (("^SUBDIRS = doc po") "SUBDIRS =")) + (substitute* "gprof/Makefile.in" + (("^SUBDIRS = po") "SUBDIRS =")) + (substitute* "ld/Makefile.in" + (("^SUBDIRS = po") "SUBDIRS =")) + #t))))))) + +(define (%boot-mesboot3-inputs) + `(("binutils" ,binutils-mesboot) + ("xz" ,xz-mesboot) + ,@(alist-delete "binutils" (%boot-mesboot2-inputs)))) (define glibc-headers-mesboot (package @@ -1121,17 +2187,8 @@ exec " gcc "/bin/" program (sha256 (base32 "0vlz4x6cgz7h54qq4528q526qlhnsjzbsvgc4iizn76cb0bfanx7"))))) - (native-inputs `(("binutils" ,binutils-mesboot) - ("libc" ,glibc-mesboot0) - ("gcc" ,gcc-mesboot1) - ("headers" ,mesboot-headers) - - ("bash" ,%bootstrap-coreutils&co) - ("coreutils" ,%bootstrap-coreutils&co) - ("diffutils" ,diffutils-mesboot) - ("kernel-headers" ,%bootstrap-linux-libre-headers) - ("make" ,make-mesboot))) - + (native-inputs `(("headers" ,mesboot-headers) + ,@(%boot-mesboot3-inputs))) (arguments (substitute-keyword-arguments (package-arguments glibc-mesboot0) ((#:configure-flags configure-flags) @@ -1146,49 +2203,51 @@ exec " gcc "/bin/" program "--with-pthread" "--without-cvs" "--without-gd" - "--enable-add-ons=nptl"))) + "--enable-add-ons=nptl" + ;; avoid: configure: error: confusing output from nm -u + "libc_cv_predef_stack_protector=no"))) ((#:make-flags make-flags) - `(let ((bash (assoc-ref %build-inputs "bash"))) - (list (string-append "SHELL=" bash "/bin/sh") - "install-bootstrap-headers=yes" "install-headers"))) + '(list "install-bootstrap-headers=yes" "install-headers")) ((#:phases phases) `(modify-phases ,phases + (delete 'apply-boot-patch) + (delete 'fixup-configure) + (delete 'set-path) + (replace 'unpack + (lambda* (#:key source #:allow-other-keys) + (invoke "tar" "xvf" source) + (chdir (string-append "glibc-" ,version)) + #t)) (replace 'setenv - (lambda* (#:key outputs #:allow-other-keys) - (let* ((out (assoc-ref outputs "out")) - (headers (assoc-ref %build-inputs "headers")) - (bash (assoc-ref %build-inputs "bash")) - (coreutils (assoc-ref %build-inputs "coreutils")) - (libc (assoc-ref %build-inputs "libc")) - (gcc (assoc-ref %build-inputs "gcc")) + (lambda* (#:key inputs #:allow-other-keys) + (let* ((headers (assoc-ref inputs "headers")) + (libc (assoc-ref inputs "libc")) + (gcc (assoc-ref inputs "gcc")) (cppflags (string-append " -I " (getcwd) "/nptl/sysdeps/pthread/bits" " -D BOOTSTRAP_GLIBC=1")) (cflags (string-append " -L " (getcwd) " -L " libc "/lib"))) (setenv "libc_cv_friendly_stddef" "yes") - (setenv "CONFIG_SHELL" (string-append bash "/bin/sh")) - (setenv "SHELL" (getenv "CONFIG_SHELL")) - (format (current-error-port) "CONFIG_SHELL=~s\n" (getenv "CONFIG_SHELL")) + (setenv "CONFIG_SHELL" (which "sh")) + (setenv "SHELL" (which "sh")) (setenv "CPP" (string-append gcc "/bin/gcc -E " cppflags)) (setenv "CC" (string-append gcc "/bin/gcc " cppflags cflags)) + (setenv "LD" "gcc") ;; avoid -fstack-protector (setenv "libc_cv_ssp" "false") (substitute* "configure" - (("/bin/pwd") (string-append coreutils "/bin/pwd"))) - (setenv "C_INCLUDE_PATH" (string-append libc "/include" - headers "/include")) - (setenv "LIBRARY_PATH" (string-append libc "/lib")) + (("/bin/pwd") "pwd")) #t))) (replace 'install (lambda* (#:key outputs make-flags #:allow-other-keys) (let ((kernel-headers (assoc-ref %build-inputs "kernel-headers")) (out (assoc-ref outputs "out"))) - (apply invoke "make" make-flags) - (copy-recursively kernel-headers out) - #t))) + (and (apply invoke "make" make-flags) + (copy-recursively kernel-headers out) + #t)))) (replace 'configure (lambda* (#:key configure-flags #:allow-other-keys) (format (current-error-port) "running ../configure ~a\n" (string-join configure-flags)) @@ -1197,36 +2256,37 @@ exec " gcc "/bin/" program (apply invoke "../configure" configure-flags))) (add-after 'configure 'remove-sunrpc (lambda _ - (invoke "make" (string-append (getcwd) "/sysd-sorted" ) - (string-append "SHELL=" (getenv "CONFIG_SHELL"))) - (substitute* "sysd-sorted" - ((" sunrpc") " ") - ((" nis") " ")) - ;; 'rpcgen' needs native libc headers to be built. - (substitute* "../Makefile" - (("^SHELL := /bin/sh") (string-append "SHELL := " (getenv "CONFIG_SHELL")))) - (substitute* "../Makeconfig" - (("^SHELL := /bin/sh") (string-append "SHELL := " (getenv "CONFIG_SHELL")))) - (substitute* "../elf/Makefile" - (("^SHELL := /bin/sh") (string-append "SHELL := " (getenv "CONFIG_SHELL")))))))))))) + (let* ((out (assoc-ref %outputs "out")) + (bash (assoc-ref %build-inputs "bash")) + (shell (string-append bash "/bin/bash"))) + + (let ((Makefile (open-file "Makefile" "a"))) + (display (string-append " + +SHELL := " shell " +") + Makefile) + (close Makefile)) + (substitute* "../Makefile" + (("^SHELL := /bin/sh") (string-append "SHELL := " shell))) + (substitute* "../Makeconfig" + (("^SHELL := /bin/sh") (string-append "SHELL := " shell))) + (substitute* "../elf/Makefile" + (("^SHELL := /bin/sh") (string-append "SHELL := " shell))) + (invoke "make" (string-append (getcwd) "/sysd-sorted" )) + (substitute* "sysd-sorted" + ((" sunrpc") " ") + ((" nis") " ")) + #t))))))))) (define glibc-mesboot (package (inherit glibc-headers-mesboot) (name "glibc-mesboot") - (native-inputs `(("binutils" ,binutils-mesboot) - ("libc" ,glibc-mesboot0) - ("headers" ,glibc-headers-mesboot) - ("gcc" ,gcc-mesboot1) - - ("bash" ,%bootstrap-coreutils&co) - ("coreutils" ,%bootstrap-coreutils&co) - ("diffutils" ,diffutils-mesboot) - ("kernel-headers" ,%bootstrap-linux-libre-headers) - ("make" ,make-mesboot))) - + (native-inputs `(("headers" ,glibc-headers-mesboot) + ,@(%boot-mesboot3-inputs))) (arguments - `(#:validate-runpath? #f ; fails when using --enable-shared + `(#:validate-runpath? #f ; fails when using --enable-shared ,@(substitute-keyword-arguments (package-arguments glibc-headers-mesboot) ((#:make-flags make-flags) `(let ((bash (assoc-ref %build-inputs "bash"))) @@ -1238,41 +2298,82 @@ exec " gcc "/bin/" program (let* ((kernel-headers (assoc-ref %build-inputs "kernel-headers")) (out (assoc-ref outputs "out")) (install-flags (cons "install" make-flags))) - (apply invoke "make" install-flags) - (copy-recursively kernel-headers out) - #t)))))))) - (native-search-paths ;; FIXME: move to glibc-mesboot0 - ;; Use the language-specific variables rather than 'CPATH' because they - ;; are equivalent to '-isystem' whereas 'CPATH' is equivalent to '-I'. - ;; The intent is to allow headers that are in the search path to be - ;; treated as "system headers" (headers exempt from warnings) just like - ;; the typical /usr/include headers on an FHS system. - (list (search-path-specification - (variable "C_INCLUDE_PATH") - (files '("include"))) - (search-path-specification - (variable "CPLUS_INCLUDE_PATH") - (files '("include"))) - (search-path-specification - (variable "LIBRARY_PATH") - (files '("lib"))))))) + (and (apply invoke "make" install-flags) + (copy-recursively kernel-headers out) + #t))))))))))) + +(define (%boot-mesboot4-inputs) + `(("libc" ,glibc-mesboot) + ,@(alist-delete "libc" (%boot-mesboot3-inputs)))) + +(define gcc-mesboot1-wrapper + ;; We need this so gcc-mesboot1 can be used to create shared binaries that + ;; have the correct interpreter, otherwise configuring gcc-mesboot using + ;; --enable-shared will fail. + (package + (inherit gcc-mesboot1) + (name "gcc-mesboot1-wrapper") + (source #f) + (inputs '()) + (native-inputs `(("bash" ,bash-mesboot) + ("coreutils" ,coreutils-mesboot0) + ("libc" ,glibc-mesboot) + ("gcc" ,gcc-mesboot1))) + (arguments + `(#:implicit-inputs? #f + #:guile ,%bootstrap-guile + #:phases + (modify-phases %standard-phases + (delete 'unpack) + (delete 'configure) + (delete 'install) + (replace 'build + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (bash (assoc-ref %build-inputs "bash")) + (libc (assoc-ref %build-inputs "libc")) + (gcc (assoc-ref %build-inputs "gcc")) + (bin (string-append out "/bin"))) + (mkdir-p bin) + (for-each + (lambda (program) + (let ((wrapper (string-append bin "/" program))) + (with-output-to-file wrapper + (lambda _ + (display (string-append "#! " bash "/bin/bash +exec " gcc "/bin/" program +" -Wl,--dynamic-linker" +;; also for x86_64-linux, we are still on i686-linux +" -Wl," libc ,(glibc-dynamic-linker "i686-linux") +" -Wl,--rpath" +" -Wl," libc "/lib" +" \"$@\" +")) + (chmod wrapper #o555))))) + '("cpp" + "gcc" + "g++" + "i686-unknown-linux-gnu-cpp" + "i686-unknown-linux-gnu-gcc" + "i686-unknown-linux-gnu-g++")) + #t))) + (replace 'check + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (bin (string-append out "/bin")) + (program (string-append bin "/gcc"))) + (invoke program "--help"))))))))) (define gcc-mesboot (package (inherit gcc-mesboot1) (name "gcc-mesboot") - (version "4.9.4") + (version (package-version gcc-4.9)) (source (bootstrap-origin (package-source gcc-4.9))) - (native-inputs `(("binutils" ,binutils-mesboot) - ("gcc-wrapper" ,gcc-mesboot1-wrapper) + (native-inputs `(("gcc-wrapper" ,gcc-mesboot1-wrapper) ("gcc" ,gcc-mesboot1) - ("libc" ,glibc-mesboot) - - ("bash" ,%bootstrap-coreutils&co) - ("coreutils" ,%bootstrap-coreutils&co) - ("diffutils" ,diffutils-mesboot) - ("kernel-headers" ,%bootstrap-linux-libre-headers) - ("make" ,make-mesboot))) + ("headers" ,glibc-headers-mesboot) + ,@(%boot-mesboot4-inputs))) (arguments `(#:validate-runpath? #f ,@(substitute-keyword-arguments (package-arguments gcc-mesboot1) @@ -1317,6 +2418,9 @@ exec " gcc "/bin/" program "--disable-build-with-cxx"))) ((#:phases phases) `(modify-phases ,phases + (delete 'apply-boot-patch) + (delete 'unpack-g++) ; sadly, gcc-4.9.4 does not provide + ; modular core/language downloads (replace 'setenv (lambda* (#:key outputs #:allow-other-keys) (let* ((out (assoc-ref outputs "out")) @@ -1327,12 +2431,12 @@ exec " gcc "/bin/" program (kernel-headers (assoc-ref %build-inputs "kernel-headers"))) (setenv "CONFIG_SHELL" (string-append bash "/bin/sh")) (setenv "C_INCLUDE_PATH" (string-append - gcc "/lib/gcc-lib/i686-unknown-linux-gnu/4.7.4/include" + gcc "/lib/gcc-lib/i686-unknown-linux-gnu/4.6.4/include" ":" kernel-headers "/include" ":" glibc "/include" ":" (getcwd) "/mpfr/src")) (setenv "CPLUS_INCLUDE_PATH" (string-append - gcc "/lib/gcc-lib/i686-unknown-linux-gnu/4.7.4/include" + gcc "/lib/gcc-lib/i686-unknown-linux-gnu/4.6.4/include" ":" kernel-headers "/include" ":" glibc "/include" ":" (getcwd) "/mpfr/src")) @@ -1352,49 +2456,41 @@ exec " gcc "/bin/" program (version (package-version gcc-mesboot)) (source #f) (inputs '()) - (native-inputs `(("bash" ,%bootstrap-coreutils&co) + (native-inputs `(("bash" ,bash-mesboot) + ("coreutils" ,coreutils-mesboot0) ("libc" ,glibc-mesboot) ("gcc" ,gcc-mesboot))))) -(define m4-mesboot +(define (%boot-mesboot5-inputs) + `(("gcc-wrapper" ,gcc-mesboot-wrapper) + ("gcc" ,gcc-mesboot) + ,@(fold alist-delete (%boot-mesboot4-inputs) '("gcc" "gcc-wrapper")))) + +(define coreutils-mesboot (package - (inherit m4) - (name "m4-mesboot") - (version "1.4") - (source (origin - (method url-fetch) - (uri (string-append "mirror://gnu/m4/m4-" - version ".tar.gz")) - (sha256 - (base32 - "1f9bxj176kf3pvs350w2dfs8jgwhminywri5pyn01b11yc4yhsjw")))) + (inherit coreutils) + (name "coreutils-mesboot") + (source (bootstrap-origin (package-source coreutils))) + (native-inputs (%boot-mesboot5-inputs)) (supported-systems '("i686-linux" "x86_64-linux")) - (native-inputs `(("mes" ,mes-boot) - ("tcc" ,tcc-boot))) + (inputs '()) + (propagated-inputs '()) (arguments - `(#:phases - (modify-phases %standard-phases - (replace 'configure - (lambda* (#:key outputs #:allow-other-keys) - (let ((out (assoc-ref outputs "out"))) - (setenv "CONFIG_SHELL" (string-append - (assoc-ref %build-inputs "bash") - "/bin/sh")) - (setenv "CC" "tcc -static") - (setenv "CPP" "tcc -E") - (invoke "./configure" (string-append "--prefix=" out)))))))))) + `(#:implicit-inputs? #f + #:guile ,%bootstrap-guile + #:tests? #f)))) + +(define (%boot-mesboot6-inputs) + `(("coreutils" ,coreutils-mesboot) + ,@(fold alist-delete (%boot-mesboot5-inputs) + '("coreutils" "kernel-headers")))) (define (%bootstrap-inputs+toolchain) - ;; The traditional bootstrap-inputs. For the i686-linux Reduced Binary Seed - ;; the actual reduced set with bootstrapped toolchain. + ;; The traditional bootstrap-inputs. For the i686-linux, x86_64-linux + ;; Scheme-only bootstrap the actual reduced set with bootstrapped toolchain. (match (%current-system) ((or "i686-linux" "x86_64-linux") - `(("libc" ,glibc-mesboot) - ("binutils" ,binutils-mesboot) - ("gcc-wrapper" ,gcc-mesboot-wrapper) - ("gcc" ,gcc-mesboot) - ,@(fold alist-delete (%bootstrap-inputs) - '("bootstrap-mescc-tools" "mes")))) + (%boot-mesboot6-inputs)) (_ (%bootstrap-inputs)))) @@ -1408,6 +2504,11 @@ exec " gcc "/bin/" program #:implicit-inputs? #f #:tests? #f ; cannot run "make check" ,@(substitute-keyword-arguments (package-arguments gnu-make) + ((#:configure-flags flags ''()) + ;; The generated config.status has some problems due to the + ;; bootstrap environment. Disable dependency tracking to work + ;; around it. + `(cons "--disable-dependency-tracking" ,flags)) ((#:phases phases) `(modify-phases ,phases (replace 'build @@ -1422,6 +2523,35 @@ exec " gcc "/bin/" program (native-inputs '()) ; no need for 'pkg-config' (inputs (%bootstrap-inputs+toolchain)))) +(define bzip2-boot0 + (package + (inherit bzip2) + (name "bzip2-boot0") + (native-inputs `()) + (inputs + `(("diffutils" ,diffutils-boot0) + ("make" ,gnu-make-boot0) + ,@(%bootstrap-inputs+toolchain))) + (arguments + `(#:guile ,%bootstrap-guile + #:implicit-inputs? #f + ,@(package-arguments bzip2))))) + +(define coreutils-boot0 + (package + (inherit coreutils) + (source (bootstrap-origin (package-source coreutils))) + (name "coreutils-boot0") + (native-inputs `()) + (inputs + `(("make" ,gnu-make-boot0) + ,@(%bootstrap-inputs+toolchain))) + (arguments + `(#:tests? #f + #:implicit-inputs? #f + #:guile ,%bootstrap-guile + ,@(package-arguments coreutils))))) + (define diffutils-boot0 (package (inherit diffutils) @@ -1434,7 +2564,15 @@ exec " gcc "/bin/" program `(#:tests? #f ; the test suite needs diffutils #:guile ,%bootstrap-guile #:implicit-inputs? #f - ,@(package-arguments diffutils))))) + ,@(match (%current-system) + ((or "arm-linux" "aarch64-linux") + (substitute-keyword-arguments (package-arguments diffutils) + ((#:configure-flags flags ''()) + ;; The generated config.status has some problems due to the + ;; bootstrap environment. Disable dependency tracking to work + ;; around it. + `(cons "--disable-dependency-tracking" ,flags)))) + (_ '())))))) (define findutils-boot0 (package @@ -1448,7 +2586,31 @@ exec " gcc "/bin/" program (arguments `(#:implicit-inputs? #f #:guile ,%bootstrap-guile - ,@(package-arguments findutils))))) + + ;; The build system assumes we have done a mistake when time_t is 32-bit + ;; on a 64-bit system. Ignore that for our bootstrap toolchain. + ,@(substitute-keyword-arguments (package-arguments findutils) + ((#:configure-flags flags ''()) + `(append + ,(if (target-64bit?) + ''("TIME_T_32_BIT_OK=yes") + ''()) + ,(match (%current-system) + ((or "arm-linux" "aarch64-linux") + ''("--disable-dependency-tracking")) + (_ ''())) + ,flags))))))) + +(define file + (package + (inherit (@ (gnu packages file) file)) + (arguments + `(#:configure-flags + `("--disable-bzlib" + ,,@(match (%current-system) + ((or "arm-linux" "aarch64-linux") + '("--disable-dependency-tracking")) + (_ '()))))))) (define file-boot0 (package @@ -1459,13 +2621,87 @@ exec " gcc "/bin/" program `(("make" ,gnu-make-boot0) ,@(%bootstrap-inputs+toolchain))) (arguments - `(#:implicit-inputs? #f + `(#:tests? #f ; merge test fails + #:implicit-inputs? #f + #:guile ,%bootstrap-guile + #:configure-flags '("--disable-bzlib") + #:strip-binaries? #f + #:validate-runpath? #f + ,@(package-arguments file))))) + +(define gawk-boot0 + (package + (inherit patch) + (source (bootstrap-origin (package-source gawk))) + (name "gawk-boot0") + (native-inputs '()) + (inputs + `(("make" ,gnu-make-boot0) + ,@(%bootstrap-inputs+toolchain))) + (arguments + `(#:tests? #f + #:implicit-inputs? #f + #:guile ,%bootstrap-guile + #:strip-binaries? #f + #:validate-runpath? #f)))) + +(define patch-boot0 + (package + (inherit patch) + (source (bootstrap-origin (package-source patch))) + (name "patch-boot0") + (native-inputs '()) + (inputs + `(("make" ,gnu-make-boot0) + ,@(%bootstrap-inputs+toolchain))) + (arguments + `(#:tests? #f ; merge test fails + #:implicit-inputs? #f #:guile ,%bootstrap-guile #:strip-binaries? #f #:validate-runpath? #f)))) +(define sed-boot0 + (package + (inherit sed) + (name "sed-boot0") + (source (bootstrap-origin (package-source sed))) + (native-inputs '()) + (inputs + `(("make" ,gnu-make-boot0) + ,@(%bootstrap-inputs+toolchain))) + (arguments + `(#:implicit-inputs? #f + #:tests? #f + #:guile ,%bootstrap-guile + ,@(package-arguments sed))))) + +(define tar-boot0 + (package + (inherit tar) + (name "tar-boot0") + (source (bootstrap-origin (package-source tar))) + (native-inputs '()) + (inputs + `(("make" ,gnu-make-boot0) + ,@(%bootstrap-inputs+toolchain))) + (arguments + `(#:implicit-inputs? #f + #:tests? #f + #:guile ,%bootstrap-guile + ,@(package-arguments tar))))) + (define (%boot0-inputs) - `(("make" ,gnu-make-boot0) + `(,@(match (%current-system) + ((or "i686-linux" "x86_64-linux") + `(("bzip2" ,bzip2-boot0) + ("coreutils" ,coreutils-boot0) + ("gawk" ,gawk-boot0) + ("patch" ,patch-boot0) + ("sed" ,sed-boot0) + ("tar" ,tar-boot0))) + (_ '())) + ("make" ,gnu-make-boot0) ("diffutils" ,diffutils-boot0) ("findutils" ,findutils-boot0) ("file" ,file-boot0) @@ -1714,20 +2950,13 @@ exec " gcc "/bin/" program #:implicit-inputs? #f ,@(package-arguments m4))))) -(define m4-boot0* - (package - ;; TODO: On the next rebuild cycle, use M4-BOOT0 as is. - (inherit m4-boot0) - (name "m4"))) - (define bison-boot0 ;; This Bison is needed to build MiG so we need it early in the process. ;; Recent versions of Linux-Libre headers also depend on this. (package (inherit bison) - ;; TODO: On the next build cycle, do: - ;;(name "bison-boot0") - (propagated-inputs `(("m4" ,m4-boot0*))) + (name "bison-boot0") + (propagated-inputs `(("m4" ,m4-boot0))) (native-inputs `(("perl" ,perl-boot0))) (inputs (%boot0-inputs)) ;remove Flex... (arguments @@ -1735,17 +2964,6 @@ exec " gcc "/bin/" program #:implicit-inputs? #f #:guile ,%bootstrap-guile - ;; XXX: These flags should be unconditional, but for now - ;; we just add them on x86 to avoid a full rebuild. - ;; TODO: On the next core-updates, use - ;; 'substitute-keyword-arguments' to inherit them from - ;; BISON. - ,@(if (member (%current-system) - '("x86_64-linux" "i686-linux")) - '(#:parallel-build? #f - #:parallel-tests? #f) - '()) - ;; Zero timestamps in liby.a; this must be done ;; explicitly here because the bootstrap Binutils don't ;; do that (default is "cru".) @@ -1756,53 +2974,90 @@ exec " gcc "/bin/" program "RANLIB=ranlib") (_ "RANLIB=ranlib -D")) - "V=1"))))) + "V=1") + + ,@(package-arguments bison))))) (define flex-boot0 ;; This Flex is needed to build MiG as well as Linux-Libre headers. - (let ((m4-boot0* (package (inherit m4-boot0*)))) - (package - (inherit flex) - (native-inputs `(("bison" ,bison-boot0))) - (propagated-inputs - ;; XXX: Here we use an 'm4-boot0' package that's not eq? so that it - ;; appears twice in '%build-inputs', like when we were using - ;; 'package-with-explicit-inputs'. - ;; TODO: Remove this hack on the next rebuild cycle. - `(("m4" ,m4-boot0*))) - (inputs (%boot0-inputs)) - (arguments - `(#:implicit-inputs? #f - #:guile ,%bootstrap-guile - #:tests? #f))))) - -(define linux-libre-headers-boot0 - (mlambda () - "Return Linux-Libre header files for the bootstrap environment." - ;; Note: this is wrapped in a thunk to nicely handle circular dependencies - ;; between (gnu packages linux) and this module. Additionally, memoize - ;; the result to play well with further memoization and code that relies - ;; on pointer identity; see <https://bugs.gnu.org/30155>. - (package - (inherit linux-libre-headers) - (arguments - `(#:guile ,%bootstrap-guile - #:implicit-inputs? #f - ,@(package-arguments linux-libre-headers))) - (native-inputs - `(("perl" ,perl-boot0) + (package + (inherit flex) + (native-inputs `(("bison" ,bison-boot0))) + (propagated-inputs `(("m4" ,m4-boot0))) + (inputs (%boot0-inputs)) + (arguments + `(#:implicit-inputs? #f + #:guile ,%bootstrap-guile + #:tests? #f)))) - ;; Flex and Bison are required since version 4.16. - ("flex" ,flex-boot0) - ("bison" ,bison-boot0) - ,@(%boot0-inputs)))))) +(define rsync-boot0 + (package + (inherit rsync) + (native-inputs `(("perl" ,perl-boot0))) + (inputs (%boot0-inputs)) + (arguments + `(#:implicit-inputs? #f + #:guile ,%bootstrap-guile)))) + +(define-syntax define/system-dependent + (lambda (s) + "Bind IDENTIFIER to EXP, where the value of EXP is known to depend on +'%current-system'. The definition ensures that (1) EXP is \"thunked\" so that +it sees the right value of '%current-system', and (2) that its result is +memoized as a function of '%current-system'." + (syntax-case s () + ((_ identifier exp) + (with-syntax ((memoized (datum->syntax #'identifier + (symbol-append + (syntax->datum #'identifier) + '/memoized)))) + #'(begin + (define memoized + (mlambda (system) exp)) + (define-syntax identifier + (identifier-syntax (memoized (%current-system)))))))))) + +(define/system-dependent linux-libre-headers-boot0 + ;; Note: this is wrapped in a thunk to nicely handle circular dependencies + ;; between (gnu packages linux) and this module. Additionally, memoize + ;; the result to play well with further memoization and code that relies + ;; on pointer identity; see <https://bugs.gnu.org/30155>. + (package + (inherit linux-libre-headers) + (arguments + `(#:guile ,%bootstrap-guile + #:implicit-inputs? #f + ,@(package-arguments linux-libre-headers))) + (native-inputs + `(("perl" ,perl-boot0) + + ;; Flex and Bison are required since version 4.16. + ("flex" ,flex-boot0) + ("bison" ,bison-boot0) + + ;; Rsync is required since version 5.3. + ("rsync" ,rsync-boot0) + ,@(%boot0-inputs))))) (define with-boot0 (package-with-explicit-inputs %boot0-inputs %bootstrap-guile)) (define gnumach-headers-boot0 - (with-boot0 (package-with-bootstrap-guile gnumach-headers))) + (with-boot0 + (package-with-bootstrap-guile + (package + (inherit gnumach-headers) + (version "1.8-116-g28b53508") + (source (bootstrap-origin + (origin + (method url-fetch) + (uri (string-append "https://lilypond.org/janneke/hurd/" + "gnumach-" version ".tar.gz")) + (sha256 + (base32 + "006i0zgwy81vxarpfm12vip4q6i5mgmi5mmy5ldvxp5hx9h3l0zg"))))) + (native-inputs '()))))) (define mig-boot0 (let* ((mig (package @@ -1816,35 +3071,50 @@ exec " gcc "/bin/" program (assoc-ref %build-inputs "flex") "/lib/"))))))) (with-boot0 mig))) +(define hurd-version-boot0 "0.9-229-ga1efcee8") +(define hurd-source-boot0 + (let ((version hurd-version-boot0)) + (bootstrap-origin + (origin + (method url-fetch) + (uri (string-append "https://lilypond.org/janneke/hurd/" + "hurd-v" version ".tar.gz")) + (sha256 + (base32 + "0bq2q2jisxcy0kgcm6rz0z2fddwxxm7azsama7li28a2m08kdpzy")))))) + (define hurd-headers-boot0 (let ((hurd-headers (package (inherit hurd-headers) - (native-inputs `(("mig" ,mig-boot0))) - (inputs '())))) + (version hurd-version-boot0) + (source hurd-source-boot0) + (native-inputs `(("mig" ,mig-boot0))) + (inputs '())))) (with-boot0 (package-with-bootstrap-guile hurd-headers)))) (define hurd-minimal-boot0 (let ((hurd-minimal (package (inherit hurd-minimal) - (native-inputs `(("mig" ,mig-boot0))) - (inputs '())))) + (version hurd-version-boot0) + (source hurd-source-boot0) + (native-inputs `(("mig" ,mig-boot0))) + (inputs '())))) (with-boot0 (package-with-bootstrap-guile hurd-minimal)))) -(define hurd-core-headers-boot0 - (mlambda () - "Return the Hurd and Mach headers as well as initial Hurd libraries for -the bootstrap environment." - (package (inherit (package-with-bootstrap-guile hurd-core-headers)) - (arguments `(#:guile ,%bootstrap-guile - ,@(package-arguments hurd-core-headers))) - (inputs - `(("gnumach-headers" ,gnumach-headers-boot0) - ("hurd-headers" ,hurd-headers-boot0) - ("hurd-minimal" ,hurd-minimal-boot0) - ,@(%boot0-inputs)))))) +(define/system-dependent hurd-core-headers-boot0 + ;; Return the Hurd and Mach headers as well as initial Hurd libraries for + ;; the bootstrap environment. + (package (inherit (package-with-bootstrap-guile hurd-core-headers)) + (arguments `(#:guile ,%bootstrap-guile + ,@(package-arguments hurd-core-headers))) + (inputs + `(("gnumach-headers" ,gnumach-headers-boot0) + ("hurd-headers" ,hurd-headers-boot0) + ("hurd-minimal" ,hurd-minimal-boot0) + ,@(%boot0-inputs))))) (define* (kernel-headers-boot0 #:optional (system (%current-system))) (match system - ("i586-gnu" (hurd-core-headers-boot0)) - (_ (linux-libre-headers-boot0)))) + ("i586-gnu" hurd-core-headers-boot0) + (_ linux-libre-headers-boot0))) (define texinfo-boot0 ;; Texinfo used to build libc's manual. @@ -1892,16 +3162,24 @@ the bootstrap environment." ;; pthreads, which is missing on non-x86 platforms at this stage. ;; Python 3.6 technically supports being built without threading ;; support, but requires additional patches. - (version "3.5.7") + (version "3.5.9") (source (bootstrap-origin (origin - (inherit (package-source python)) + (method url-fetch) (uri (string-append "https://www.python.org/ftp/python/" version "/Python-" version ".tar.xz")) - (patches '()) (sha256 (base32 - "1p67pnp2ca5przx2s45r8m55dcn6f5hsm0l4s1zp7mglkf4r4n18"))))) + "0jdh9pvx6m6lfz2liwvvhn7vks7qrysqgwn517fkpxb77b33fjn2")) + (modules '((guix build utils))) + (snippet + '(begin + ;; Delete the bundled copy of libexpat. + (delete-file-recursively "Modules/expat") + (substitute* "Modules/Setup.dist" + ;; Link Expat instead of embedding the bundled one. + (("^#pyexpat.*") "pyexpat pyexpat.c -lexpat\n")) + #t))))) (inputs `(,@(%boot0-inputs) ("expat" ,expat-sans-tests))) ;remove OpenSSL, zlib, etc. @@ -1919,7 +3197,17 @@ the bootstrap environment." ;; Python package won't interfere with this one. ((#:make-flags _ ''()) ''()) ((#:phases phases) - `(modify-phases ,phases + ;; Remove the 'apply-alignment-patch' phase if present to avoid + ;; rebuilding this package. TODO: for the next rebuild cycle, + ;; consider inlining all the arguments instead of inheriting to + ;; make it easier to patch Python without risking a full rebuild. + ;; Or better yet, change to 'python-on-guile'. + `(modify-phases ,@(list (match phases + (('modify-phases original-phases + changes ... + ('add-after unpack apply-alignment-patch _)) + `(modify-phases ,original-phases ,@changes)) + (_ phases))) (add-before 'configure 'disable-modules (lambda _ (substitute* "setup.py" @@ -1929,24 +3217,34 @@ the bootstrap environment." ;; built, since it requires Linux headers. (("'linux', ") "")) #t)) - (delete 'set-TZDIR))) + (delete 'set-TZDIR) + ,@(if (hurd-system?) + `((add-before 'build 'fix-regen + (lambda* (#:key inputs #:allow-other-keys) + (let ((libc (assoc-ref inputs "libc"))) + (substitute* "Lib/plat-generic/regen" + (("/usr/include/") (string-append libc "/include/"))) + #t)))) + '()))) ((#:tests? _ #f) #f)))))) -(define ld-wrapper-boot0 - (mlambda () - ;; We need this so binaries on Hurd will have libmachuser and libhurduser - ;; in their RUNPATH, otherwise validate-runpath will fail. - (make-ld-wrapper "ld-wrapper-boot0" - #:target boot-triplet - #:binutils binutils-boot0 - #:guile %bootstrap-guile - #:bash (car (assoc-ref (%boot0-inputs) "bash")) - #:guile-for-build %bootstrap-guile))) +(define/system-dependent ld-wrapper-boot0 + ;; The first 'ld' wrapper, defined with 'define/system-dependent' because + ;; its calls '%boot0-inputs', whose result depends on (%current-system) + ;; + ;; We need this so binaries on Hurd will have libmachuser and libhurduser + ;; in their RUNPATH, otherwise validate-runpath will fail. + (make-ld-wrapper "ld-wrapper-boot0" + #:target boot-triplet + #:binutils binutils-boot0 + #:guile %bootstrap-guile + #:bash (car (assoc-ref (%boot0-inputs) "bash")) + #:guile-for-build %bootstrap-guile)) (define (%boot1-inputs) ;; 2nd stage inputs. `(("gcc" ,gcc-boot0) - ("ld-wrapper-cross" ,(ld-wrapper-boot0)) + ("ld-wrapper-cross" ,ld-wrapper-boot0) ("binutils-cross" ,binutils-boot0) ,@(alist-delete "binutils" (%boot0-inputs)))) @@ -1967,7 +3265,9 @@ the bootstrap environment." ((#:configure-flags flags) `(append (list ,(string-append "--host=" (boot-triplet)) ,(string-append "--build=" - (nix-system->gnu-triplet))) + (nix-system->gnu-triplet)) + ,(if (hurd-system?) "--disable-werror" + "")) ,flags)) ((#:phases phases) `(modify-phases ,phases @@ -1978,13 +3278,14 @@ the bootstrap environment." (unsetenv "CPATH") ;; Tell 'libpthread' where to find 'libihash' on Hurd systems. - ,@(if (hurd-triplet? (%current-system)) - `((substitute* "libpthread/Makefile" - (("LDLIBS-pthread.so =.*") - (string-append "LDLIBS-pthread.so = " - (assoc-ref %build-inputs "kernel-headers") - "/lib/libihash.a\n")))) - '()) + ,@(if (hurd-system?) + '((substitute* '("sysdeps/mach/Makefile" + "sysdeps/mach/hurd/Makefile") + (("LDLIBS-pthread.so =.*") + (string-append "LDLIBS-pthread.so = " + (assoc-ref %build-inputs "kernel-headers") + "/lib/libihash.a\n")))) + '()) ;; 'rpcgen' needs native libc headers to be built. (substitute* "sunrpc/Makefile" @@ -2005,7 +3306,7 @@ the bootstrap environment." ,@(%boot1-inputs) ;; A native MiG is needed to build Glibc on Hurd. - ,@(if (hurd-triplet? (%current-system)) + ,@(if (hurd-system?) `(("mig" ,mig-boot0)) '()) @@ -2069,20 +3370,19 @@ exec ~a/bin/~a-~a -B~a/lib -Wl,-dynamic-linker -Wl,~a/~a \"$@\"~%" ("bash" ,bash))) (inputs '()))) -(define gcc-boot0-intermediate-wrapped - (mlambda () - ;; Make the cross-tools GCC-BOOT0 and BINUTILS-BOOT0 available under the - ;; non-cross names. - (cross-gcc-wrapper gcc-boot0 binutils-boot0 - glibc-final-with-bootstrap-bash - (car (assoc-ref (%boot1-inputs) "bash"))))) +(define/system-dependent gcc-boot0-intermediate-wrapped + ;; Make the cross-tools GCC-BOOT0 and BINUTILS-BOOT0 available under the + ;; non-cross names. + (cross-gcc-wrapper gcc-boot0 binutils-boot0 + glibc-final-with-bootstrap-bash + (car (assoc-ref (%boot1-inputs) "bash")))) (define static-bash-for-glibc ;; A statically-linked Bash to be used by GLIBC-FINAL in system(3) & co. (package (inherit static-bash) (source (bootstrap-origin (package-source static-bash))) - (inputs `(("gcc" ,(gcc-boot0-intermediate-wrapped)) + (inputs `(("gcc" ,gcc-boot0-intermediate-wrapped) ("libc" ,glibc-final-with-bootstrap-bash) ("libc:static" ,glibc-final-with-bootstrap-bash "static") ,@(fold alist-delete (%boot1-inputs) @@ -2160,24 +3460,27 @@ exec ~a/bin/~a-~a -B~a/lib -Wl,-dynamic-linker -Wl,~a/~a \"$@\"~%" ;; if 'allowed-references' were per-output. (arguments `(#:allowed-references - ,(cons* `(,gcc-boot0 "lib") (kernel-headers-boot0) - static-bash-for-glibc - (package-outputs glibc-final-with-bootstrap-bash)) - + ((,gcc-boot0 "lib") + ,(kernel-headers-boot0) + ,static-bash-for-glibc + ,@(if (hurd-system?) + `(,gnumach-headers-boot0 + ,hurd-headers-boot0) + '()) + ,@(package-outputs glibc-final-with-bootstrap-bash)) ,@(package-arguments glibc-final-with-bootstrap-bash))))) -(define gcc-boot0-wrapped - (mlambda () - ;; Make the cross-tools GCC-BOOT0 and BINUTILS-BOOT0 available under the - ;; non-cross names. - (cross-gcc-wrapper gcc-boot0 binutils-boot0 glibc-final - (car (assoc-ref (%boot1-inputs) "bash"))))) +(define/system-dependent gcc-boot0-wrapped + ;; Make the cross-tools GCC-BOOT0 and BINUTILS-BOOT0 available under the + ;; non-cross names. + (cross-gcc-wrapper gcc-boot0 binutils-boot0 glibc-final + (car (assoc-ref (%boot1-inputs) "bash")))) (define (%boot2-inputs) ;; 3rd stage inputs. `(("libc" ,glibc-final) ("libc:static" ,glibc-final "static") - ("gcc" ,(gcc-boot0-wrapped)) + ("gcc" ,gcc-boot0-wrapped) ,@(fold alist-delete (%boot1-inputs) '("libc" "gcc" "linux-libre-headers")))) (define binutils-final @@ -2231,14 +3534,13 @@ exec ~a/bin/~a-~a -B~a/lib -Wl,-dynamic-linker -Wl,~a/~a \"$@\"~%" ,@(package-arguments zlib))) (inputs (%boot2-inputs)))) -(define ld-wrapper-boot3 - (mlambda () - ;; A linker wrapper that uses the bootstrap Guile. - (make-ld-wrapper "ld-wrapper-boot3" - #:binutils binutils-final - #:guile %bootstrap-guile - #:bash (car (assoc-ref (%boot2-inputs) "bash")) - #:guile-for-build %bootstrap-guile))) +(define/system-dependent ld-wrapper-boot3 + ;; A linker wrapper that uses the bootstrap Guile. + (make-ld-wrapper "ld-wrapper-boot3" + #:binutils binutils-final + #:guile %bootstrap-guile + #:bash (car (assoc-ref (%boot2-inputs) "bash")) + #:guile-for-build %bootstrap-guile)) (define gcc-final ;; The final GCC. @@ -2300,15 +3602,6 @@ exec ~a/bin/~a-~a -B~a/lib -Wl,-dynamic-linker -Wl,~a/~a \"$@\"~%" char-set:letter) ,(package-name lib))) (list gmp-6.0 mpfr mpc)) - #t))) - (add-before 'configure 'treat-glibc-as-system-header - (lambda* (#:key inputs #:allow-other-keys) - (let ((libc (assoc-ref inputs "libc"))) - ;; Make sure Glibc is treated as a "system header" so - ;; #include_next does the right thing. - (for-each (lambda (var) - (setenv var (string-append libc "/include"))) - '("C_INCLUDE_PATH" "CPLUS_INCLUDE_PATH")) #t)))))))) ;; This time we want Texinfo, so we get the manual. Add @@ -2323,7 +3616,7 @@ exec ~a/bin/~a-~a -B~a/lib -Wl,-dynamic-linker -Wl,~a/~a \"$@\"~%" (inputs `(("gmp-source" ,(bootstrap-origin (package-source gmp-6.0))) ("mpfr-source" ,(package-source mpfr)) ("mpc-source" ,(package-source mpc)) - ("ld-wrapper" ,(ld-wrapper-boot3)) + ("ld-wrapper" ,ld-wrapper-boot3) ("binutils" ,binutils-final) ("libstdc++" ,libstdc++) ("zlib" ,zlib-final) @@ -2332,7 +3625,7 @@ exec ~a/bin/~a-~a -B~a/lib -Wl,-dynamic-linker -Wl,~a/~a \"$@\"~%" (define (%boot3-inputs) ;; 4th stage inputs. `(("gcc" ,gcc-final) - ("ld-wrapper" ,(ld-wrapper-boot3)) + ("ld-wrapper" ,ld-wrapper-boot3) ,@(alist-delete "gcc" (%boot2-inputs)))) (define bash-final @@ -2364,7 +3657,7 @@ exec ~a/bin/~a-~a -B~a/lib -Wl,-dynamic-linker -Wl,~a/~a \"$@\"~%" ;; This package must be public because other modules refer to it. However, ;; mark it as hidden so that 'fold-packages' ignores it. (with-boot4 (hidden-package - (package-with-bootstrap-guile guile-2.2/fixed)))) + (package-with-bootstrap-guile guile-3.0/fixed)))) (define glibc-utf8-locales-final ;; Now that we have GUILE-FINAL, build the UTF-8 locales. They are needed @@ -2397,9 +3690,6 @@ exec ~a/bin/~a-~a -B~a/lib -Wl,-dynamic-linker -Wl,~a/~a \"$@\"~%" (define gnu-make-final ;; The final GNU Make, which uses the final Guile. - ;; FIXME: This is a mistake: we shouldn't be propagating GUILE-FINAL to - ;; PKG-CONFIG. - ;; TODO: Fix that on the next rebuild cycle. (let ((pkg-config (package (inherit %pkg-config) ;the native pkg-config (inputs `(("guile" ,guile-final) @@ -2420,7 +3710,10 @@ exec ~a/bin/~a-~a -B~a/lib -Wl,-dynamic-linker -Wl,~a/~a \"$@\"~%" (define coreutils-final ;; The final Coreutils. Treat them specially because some packages, such as ;; Findutils, keep a reference to the Coreutils they were built with. - (with-boot5 (package-with-bootstrap-guile coreutils) + (with-boot5 (package-with-bootstrap-guile + (package + (inherit coreutils-minimal) + (name "coreutils"))) ;; Use the final Guile, linked against the ;; final libc with working iconv, so that ;; 'substitute*' works well when touching @@ -2598,6 +3891,9 @@ binaries, plus debugging symbols in the @code{debug} output), and Binutils.") (define-public gcc-toolchain-9 (make-gcc-toolchain gcc-9)) +(define-public gcc-toolchain-10 + (make-gcc-toolchain gcc-10)) + ;; Provide the Fortran toolchain package only for the version of gfortran that ;; is used by Guix internally to build Fortran libraries, because combining ;; code compiled with different versions can cause problems. diff --git a/gnu/packages/compression.scm b/gnu/packages/compression.scm index 85f802a069..d21d79962a 100644 --- a/gnu/packages/compression.scm +++ b/gnu/packages/compression.scm @@ -12,9 +12,9 @@ ;;; Copyright © 2016 Danny Milosavljevic <dannym@scratchpost.org> ;;; Copyright © 2016, 2017, 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2016 David Craven <david@craven.ch> -;;; Copyright © 2016, 2019 Kei Kebreau <kkebreau@posteo.net> +;;; Copyright © 2016, 2019, 2020 Kei Kebreau <kkebreau@posteo.net> ;;; Copyright © 2016, 2018, 2019, 2020 Marius Bakke <mbakke@fastmail.com> -;;; Copyright © 2017 ng0 <ng0@n0.is> +;;; Copyright © 2017 Nikita <nikita@n0.is> ;;; Copyright © 2017 Manolis Fragkiskos Ragkousis <manolis837@gmail.com> ;;; Copyright © 2017 Theodoros Foradis <theodoros@foradis.org> ;;; Copyright © 2017 Stefan Reichör <stefan@xsteve.at> @@ -270,16 +270,14 @@ file; as a result, it is often used in conjunction with \"tar\", resulting in (define-public bzip2 (package (name "bzip2") - (version "1.0.6") + (version "1.0.8") (source (origin (method url-fetch) - ;; XXX The bzip.org domain was allowed to expire. - (uri (string-append "https://web.archive.org/web/20180624184806/" - "http://www.bzip.org/" - version "/bzip2-" version ".tar.gz")) + (uri (string-append "https://sourceware.org/pub/bzip2/bzip2-" + version ".tar.gz")) (sha256 (base32 - "1kfrc7f0ja9fdn6j1y6yir6li818npy6217hvr3wzmnmzhs8z152")))) + "0s92986cv0p692icqlw1j42y9nld8zd83qwhzbqd61p1dqbh6nmb")))) (build-system gnu-build-system) (arguments `(#:modules ((guix build gnu-build-system) @@ -288,6 +286,22 @@ file; as a result, it is often used in conjunction with \"tar\", resulting in (srfi srfi-1)) #:phases (modify-phases %standard-phases + (add-after 'set-paths 'hide-input-bzip2 + (lambda* (#:key inputs #:allow-other-keys) + (let ((bzip2 (assoc-ref inputs "bzip2"))) + (if bzip2 + ;; Prevent the build system from retaining a reference to + ;; BZIP2 from INPUTS. + (begin + (setenv "LIBRARY_PATH" + (string-join (delete (string-append bzip2 "/lib") + (string-split (getenv "LIBRARY_PATH") + #\:)) + ":")) + (format #t "environment variable `LIBRARY_PATH' set to `~a'~%" + (getenv "LIBRARY_PATH"))) + (format #t "no bzip2 found, nothing done~%")) + #t))) (replace 'configure (lambda* (#:key target #:allow-other-keys) (when ,(%current-target-system) @@ -1345,18 +1359,18 @@ or junctions, and always follows hard links.") (define-public zstd (package (name "zstd") - (version "1.4.2") + (version "1.4.4") (source (origin (method url-fetch) (uri (string-append "https://github.com/facebook/zstd/releases/download/" "v" version "/zstd-" version ".tar.gz")) (sha256 - (base32 "1ja3nrjynmiwwdjrf6crraizkbagp7y414bqqq2ady91nn1hjwqj")))) + (base32 "05ckxap00qvc0j51d3ci38150cxsw82w7s9zgd5fgzspnzmp1vsr")))) (build-system gnu-build-system) - (outputs '("out" ;1.1MiB executables and documentation - "lib" ;1MiB shared library and headers - "static")) ;1MiB static library + (outputs '("out" ;1.2MiB executables and documentation + "lib" ;1.2MiB shared library and headers + "static")) ;1.2MiB static library (arguments `(#:phases (modify-phases %standard-phases @@ -1376,12 +1390,10 @@ or junctions, and always follows hard links.") (delete-file ar)) (find-files shared-libs "\\.a$")) - ;; While here, remove prefix= from the pkg-config file because it - ;; is unused, and because it contains a needless reference to $out. - ;; XXX: It would be great if #:disallow-references worked between - ;; outputs. + ;; Make sure the pkg-config file refers to the right output. (substitute* (string-append shared-libs "/pkgconfig/libzstd.pc") - (("^prefix=.*") "")) + (("^prefix=.*") + (string-append "prefix=" lib "\n"))) #t)))) #:make-flags @@ -1558,13 +1570,13 @@ recreates the stored directory structure by default.") (package (name "zziplib") (version "0.13.69") - (replacement zziplib/fixed) (home-page "https://github.com/gdraheim/zziplib") (source (origin (method git-fetch) (uri (git-reference (url home-page) (commit (string-append "v" version)))) (file-name (git-file-name name version)) + (patches (search-patches "zziplib-CVE-2018-16548.patch")) (sha256 (base32 "0fbk9k7ryas2wh2ykwkvm1pbi40i88rfvc3dydh9xyd7w2jcki92")))) @@ -1596,13 +1608,6 @@ recreates the stored directory structure by default.") ;; files carry the Zlib license; see "docs/copying.html" for details. (license (list license:lgpl2.0+ license:mpl1.1)))) -(define zziplib/fixed - (package - (inherit zziplib) - (source (origin - (inherit (package-source zziplib)) - (patches (search-patches "zziplib-CVE-2018-16548.patch")))))) - (define-public libzip (package (name "libzip") @@ -1791,17 +1796,7 @@ single-member files which can't be decompressed in parallel.") (build-system cmake-build-system) (arguments `(#:tests? #f - #:phases (modify-phases %standard-phases - (add-before 'configure 'glibc-is-already-a-system-library - (lambda _ - ;; Prevent the build system from passing the glibc - ;; header files to GCC as "system headers", because - ;; it conflicts with the system headers already known - ;; to GCC, causing #include_next failures. - (substitute* "CMakeLists.txt" - (("include_directories\\(SYSTEM \\$\\{iconv") - "include_directories(${iconv")) - #t))))) + #:configure-flags '("-DBoost_NO_BOOST_CMAKE=ON"))) (inputs `(("boost" ,boost) ("libiconv" ,libiconv) ("xz" ,xz))) @@ -1947,7 +1942,7 @@ download times, and other distribution and storage costs.") (define-public quazip (package (name "quazip") - (version "0.8.1") + (version "0.9") (source (origin (method git-fetch) (uri (git-reference @@ -1956,7 +1951,7 @@ download times, and other distribution and storage costs.") (file-name (git-file-name name version)) (sha256 (base32 - "1g473gnsbkvxpsv8lbsmhspn7jnq86b05zzgqh11r581v8ndvz5s")))) + "0psvf3d9akyyx3bckc9325nmbp97xiagf8la4vhca5xn2f430fbn")))) (build-system cmake-build-system) (arguments `(#:tests? #f)) ;no test @@ -2194,3 +2189,39 @@ computations.") ;; Blosc itself is released under BSD-3 but it incorporates code under ;; other non-copyleft licenses. (license license:bsd-3))) + +(define-public ecm + (package + (name "ecm") + (version "1.0.3") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/alucryd/ecm-tools") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1rvyx5gcy8lfklgj80szlz3312x45wzx0d9jsgwyvy8f6m4nnb0c")))) + (build-system gnu-build-system) + (arguments + `(#:tests? #f ; no check target + #:make-flags + (let ((target ,(%current-target-system))) + (list (string-append "CC=" (if target + (string-append target "-gcc") + "gcc")) + (string-append "DESTDIR=" (assoc-ref %outputs "out")))) + #:phases + (modify-phases %standard-phases + (replace 'configure + (lambda _ + (substitute* "Makefile" + (("\\$\\(DESTDIR\\)/usr") "$(DESTDIR)")) + #t))))) + (home-page "https://github.com/alucryd/ecm-tools") + (synopsis "Error code modeler") + (description "ECM is a utility that converts ECM files, i.e., CD data files +with their error correction data losslessly rearranged for better compression, +to their original, binary CD format.") + (license license:gpl3+))) diff --git a/gnu/packages/cpp.scm b/gnu/packages/cpp.scm index 2248ebfc4b..7227b8d516 100644 --- a/gnu/packages/cpp.scm +++ b/gnu/packages/cpp.scm @@ -3,12 +3,13 @@ ;;; Copyright © 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2018 Fis Trivial <ybbs.daans@hotmail.com> ;;; Copyright © 2018 Ludovic Courtès <ludo@gnu.org> -;;; Copyright © 2019 Mathieu Othacehe <m.othacehe@gmail.com> +;;; Copyright © 2019, 2020 Mathieu Othacehe <m.othacehe@gmail.com> ;;; Copyright © 2019 Pierre Neidhardt <mail@ambrevar.xyz> ;;; Copyright © 2019 Jan Wielkiewicz <tona_kosmicznego_smiecia@interia.pl> ;;; Copyright © 2020 Nicolò Balzarotti <nicolo@nixo.xyz> ;;; Copyright © 2020 Roel Janssen <roel@gnu.org> ;;; Copyright © 2020 Ricardo Wurmus <rekado@elephly.net> +;;; Copyright © 2020 Brice Waegeneire <brice@waegenei.re> ;;; ;;; This file is part of GNU Guix. ;;; @@ -362,7 +363,7 @@ tools: (define-public cpplint (package (name "cpplint") - (version "1.4.4") + (version "1.4.5") (source (origin (method git-fetch) @@ -372,9 +373,21 @@ tools: (url "https://github.com/cpplint/cpplint") (commit version))) (sha256 - (base32 "1ns9wbizr10w7rpyp106d7ip68s5nyskr54vw9bij11sci9z0v3j")) + (base32 "1yzcxqx0186sh80p0ydl9z0ld51fn2cdpz9hmhrp15j53g9ira7c")) (file-name (git-file-name name version)))) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-before 'check 'use-later-pytest + (lambda _ + (substitute* "test-requirements" + (("pytest.*") "pytest\n")) + #t))))) (build-system python-build-system) + (native-inputs + `(("python-pytest" ,python-pytest) + ("python-pytest-cov" ,python-pytest-cov) + ("python-pytest-runner" ,python-pytest-runner))) (home-page "https://github.com/cpplint/cpplint") (synopsis "Static code checker for C++") (description "@code{cpplint} is a command-line tool to check C/C++ files @@ -485,3 +498,24 @@ point and then, after each tween step, plugging back the result.") augment the C++ standard library. The Abseil library code is collected from Google's C++ code base.") (license license:asl2.0))) + +(define-public pegtl + (package + (name "pegtl") + (version "2.8.3") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/taocpp/PEGTL.git") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "17crgjfdx55imi2dqnz6xpvsxq07390yfgkz5nd2g77ydkvq9db3")))) + (build-system cmake-build-system) + (home-page "https://github.com/taocpp/PEGTL") + (synopsis "Parsing Expression Grammar template library") + (description "The Parsing Expression Grammar Template Library (PEGTL) is +a zero-dependency C++ header-only parser combinator library for creating +parsers according to a Parsing Expression Grammar (PEG).") + (license license:expat))) diff --git a/gnu/packages/cran.scm b/gnu/packages/cran.scm index baf1e0c18a..fff71790b6 100644 --- a/gnu/packages/cran.scm +++ b/gnu/packages/cran.scm @@ -179,13 +179,13 @@ respecting the grammar of its graphics paradigm.") (define-public r-scales (package (name "r-scales") - (version "1.1.0") + (version "1.1.1") (source (origin (method url-fetch) (uri (cran-uri "scales" version)) (sha256 - (base32 "00rdbfj5mwc3kr8pskidn3n2zkp4ms6cx36xazz54pxw3pysdr0y")))) + (base32 "019ps0njjc0rzrjygqiyn8b9vp0c3c0jd56h1yi19wzi49jvdcj0")))) (build-system r-build-system) (propagated-inputs `(("r-farver" ,r-farver) @@ -596,14 +596,14 @@ the embedded @code{RapidXML} C++ library.") (define-public r-modelr (package (name "r-modelr") - (version "0.1.6") + (version "0.1.7") (source (origin (method url-fetch) (uri (cran-uri "modelr" version)) (sha256 (base32 - "1x2m34m4qirb401krmgc5wg3g7ndbcglfab2l0655rmky3fz7rfp")))) + "1nln33ajad0c917hmal4v6fbw8rncsch9xz5sifqfw6wgqjx9yy6")))) (build-system r-build-system) (propagated-inputs `(("r-broom" ,r-broom) @@ -1480,7 +1480,7 @@ applications. That is, compute distances and related measures for angular (base32 "1a8mi70x79a691r40yiw684jkg1mr9n8agkxlcksxcnrdybs9c0x")))) (build-system r-build-system) - (inputs `(("libjpeg" ,libjpeg))) + (inputs `(("libjpeg" ,libjpeg-turbo))) (home-page "https://www.rforge.net/jpeg/") (synopsis "Read and write JPEG images with R") (description "This package provides a way to read, write and display @@ -1753,13 +1753,13 @@ print, summary, plot, update, etc. (define-public r-ps (package (name "r-ps") - (version "1.3.2") + (version "1.3.3") (source (origin (method url-fetch) (uri (cran-uri "ps" version)) (sha256 - (base32 "0127q6pw9iw8hhcfp231gmdh29nahh2n5jzc38avrzy7yrm4bwl9")))) + (base32 "1x10zgvq75gnkmzqhbqn6jyvp9h1y4qxgnbdds0bwmc8ad8md903")))) (build-system r-build-system) (home-page "https://ps.r-lib.org") (synopsis "List, query, and manipulate system processes") @@ -1771,13 +1771,13 @@ processes. Most of its code is based on the @code{psutil} Python package.") (define-public r-pkgbuild (package (name "r-pkgbuild") - (version "1.0.6") + (version "1.0.8") (source (origin (method url-fetch) (uri (cran-uri "pkgbuild" version)) (sha256 - (base32 "0xnlz6ivhkbmncg9hfw5p69lm4rjy3wn5lyxmygxyf4rrfnnqwxx")))) + (base32 "188r2ba7y5j80mnfqdf210af40yd28jjgx7rbya4iwcfx7rzqjdi")))) (build-system r-build-system) (propagated-inputs `(("r-callr" ,r-callr) @@ -1974,19 +1974,21 @@ validation and filtering on the values, making options invisible or private.") (define-public r-circlize (package (name "r-circlize") - (version "0.4.8") + (version "0.4.9") (source (origin (method url-fetch) (uri (cran-uri "circlize" version)) (sha256 (base32 - "0jvr9hmxyhg0zx101iiqkrg8wfaj86kp62xpv42n2j9fkn5r1mi2")))) + "14944vn0n5d095mpjyag4fz8vy04m6wxb6mmyygi8q813akikm3h")))) (build-system r-build-system) (propagated-inputs `(("r-colorspace" ,r-colorspace) ("r-globaloptions" ,r-globaloptions) ("r-shape" ,r-shape))) + (native-inputs + `(("r-knitr" ,r-knitr))) (home-page "https://github.com/jokergoo/circlize") (synopsis "Circular visualization") (description @@ -2272,14 +2274,14 @@ plot networks.") (define-public r-proxy (package (name "r-proxy") - (version "0.4-23") + (version "0.4-24") (source (origin (method url-fetch) (uri (cran-uri "proxy" version)) (sha256 (base32 - "17b6qfllqrhzrxqgx7dccffgybnkcria5a68ap5ly3plg04ypm4x")))) + "0z4wdnpv5x135nssxnmkkba7fivd5xgbpaabqjkl2na76vq9pzwc")))) (build-system r-build-system) (home-page "https://cran.r-project.org/web/packages/proxy") (synopsis "Distance and similarity measures") @@ -2410,14 +2412,14 @@ SpatialVx.") (define-public r-extremes (package (name "r-extremes") - (version "2.0-11") + (version "2.0-12") (source (origin (method url-fetch) (uri (cran-uri "extRemes" version)) (sha256 (base32 - "0hmgynxhzswqnhwb2sxrkczgam8c17s3vpxqc5bcz0bwczpxxyvm")))) + "0wldzvj1h93jksq31dw9zgnr1wrqwmfr9qwmg7qk7nznsn2yy1h2")))) (properties `((upstream-name . "extRemes"))) (build-system r-build-system) (propagated-inputs @@ -3259,14 +3261,14 @@ provides a one-row summary of model-level statistics.") (define-public r-recipes (package (name "r-recipes") - (version "0.1.10") + (version "0.1.12") (source (origin (method url-fetch) (uri (cran-uri "recipes" version)) (sha256 (base32 - "11f96aanrzi2v6cn49fhvf9y4cmhra63wcy6nvpv6hcfaqqmwd2g")))) + "0hbnrqgzazg401nk5fhljif7wnspicki179qf215r34y9wm8g3xj")))) (build-system r-build-system) (propagated-inputs `(("r-dplyr" ,r-dplyr) @@ -4229,14 +4231,14 @@ to variables on the left-hand side of the assignment.") (define-public r-vctrs (package (name "r-vctrs") - (version "0.2.4") + (version "0.3.0") (source (origin (method url-fetch) (uri (cran-uri "vctrs" version)) (sha256 (base32 - "15sgzs6afvmhssk6jcg41rn3bvmzmbm4sgca6f6x8lfrsazvdj6w")))) + "0ay1fk05mk6cnpfbzqwx6pjxmjk3ipx5xx6k0sbh81r5bqj17vpn")))) (build-system r-build-system) (propagated-inputs `(("r-digest" ,r-digest) @@ -4268,14 +4270,14 @@ to variables on the left-hand side of the assignment.") (define-public r-pillar (package (name "r-pillar") - (version "1.4.3") + (version "1.4.4") (source (origin (method url-fetch) (uri (cran-uri "pillar" version)) (sha256 (base32 - "02sn7zw80wq33jgxk2i6m5jb83sk7y72dfhgyy0apfinv05w92ss")))) + "0viymfp1rkr7ig3m1b016r75hk8qbr9cqsjc6c20ks9pm5svmsp1")))) (build-system r-build-system) (propagated-inputs `(("r-cli" ,r-cli) @@ -5357,14 +5359,14 @@ specific S3-method.") (define-public r-vim (package (name "r-vim") - (version "5.1.1") + (version "6.0.0") (source (origin (method url-fetch) (uri (cran-uri "VIM" version)) (sha256 (base32 - "0w22ir0gvym7gqd6nw2j7w5ivlb3az1dkfxv33imimkb7c83056a")))) + "0ddhca4v912q82rjpf1qld6i6g2c381g0v5b4hbnygr3lm6a7wiv")))) (properties `((upstream-name . "VIM"))) (build-system r-build-system) (propagated-inputs @@ -5381,6 +5383,8 @@ specific S3-method.") ("r-robustbase" ,r-robustbase) ("r-sp" ,r-sp) ("r-vcd" ,r-vcd))) + (native-inputs + `(("r-knitr" ,r-knitr))) (home-page "https://github.com/alexkowa/VIM") (synopsis "Visualization and imputation of missing values") (description @@ -5632,19 +5636,21 @@ additional external tools on any platform.") (define-public r-openxlsx (package (name "r-openxlsx") - (version "4.1.4") + (version "4.1.5") (source (origin (method url-fetch) (uri (cran-uri "openxlsx" version)) (sha256 (base32 - "1mwxldw9i9nfksx1i6h1kfs7vmsz9fgyllbsipar4vnfyqhqp8q7")))) + "0wkpa3wsd8rs0pib7cp67iv0s6jn99frcrw7clypqxmvvdwyb9kq")))) (build-system r-build-system) (propagated-inputs `(("r-rcpp" ,r-rcpp) ("r-stringi" ,r-stringi) ("r-zip" ,r-zip))) + (native-inputs + `(("r-knitr" ,r-knitr))) (home-page "https://github.com/awalker89/openxlsx") (synopsis "Read, write and edit XLSX files") (description @@ -5837,16 +5843,18 @@ Python's @url{https://github.com/ActiveState/appdirs,Appdirs} to R.") (define-public r-renv (package (name "r-renv") - (version "0.9.3") + (version "0.10.0") (source (origin (method url-fetch) (uri (cran-uri "renv" version)) (sha256 (base32 - "02ayfgbpw4b58148dcxz31anaxncwczmxs1zzkskwj0rzhb2x60r")))) + "0yy24kq60dh9n68my132xhhkbnbs7q91z55b1yd6ymr7rxj32mif")))) (properties `((upstream-name . "renv"))) (build-system r-build-system) + (native-inputs + `(("r-knitr" ,r-knitr))) (home-page "https://rstudio.github.io/renv") (synopsis "Project environments") (description @@ -6049,17 +6057,53 @@ single layer that takes the groups for comparison and the test as arguments and adds the annotation to the plot.") (license license:gpl3))) +(define-public r-rstatix + (package + (name "r-rstatix") + (version "0.5.0") + (source + (origin + (method url-fetch) + (uri (cran-uri "rstatix" version)) + (sha256 + (base32 + "0ikbjmr58ah39rlwyiix50kl3yk9j7jngsvl6hh973392qdvmch6")))) + (properties `((upstream-name . "rstatix"))) + (build-system r-build-system) + (propagated-inputs + `(("r-broom" ,r-broom) + ("r-car" ,r-car) + ("r-corrplot" ,r-corrplot) + ("r-dplyr" ,r-dplyr) + ("r-magrittr" ,r-magrittr) + ("r-purrr" ,r-purrr) + ("r-rlang" ,r-rlang) + ("r-tibble" ,r-tibble) + ("r-tidyr" ,r-tidyr) + ("r-tidyselect" ,r-tidyselect))) + (home-page "https://rpkgs.datanovia.com/rstatix/") + (synopsis "Pipe-friendly framework for basic statistical tests") + (description + "This package provides a simple and intuitive pipe-friendly framework, +coherent with the @code{tidyverse} design philosophy, for performing basic +statistical tests, including t-test, Wilcoxon test, ANOVA, Kruskal-Wallis and +correlation analyses. The output of each test is automatically transformed +into a tidy data frame to facilitate visualization. Additional functions are +available for reshaping, reordering, manipulating and visualizing correlation +matrix.") + (license license:gpl2))) + (define-public r-ggpubr (package (name "r-ggpubr") - (version "0.2.5") + (version "0.3.0") (source (origin (method url-fetch) (uri (cran-uri "ggpubr" version)) (sha256 (base32 - "0kb3hpmnhj4mkbx1kx0kv5y22himr8dijqx7ra0h8hi0pf2l2ha7")))) + "1dly74cnn8iq7vsgmcz0czszdsmg5cgzm4w3s0v30k4psmmzqbxq")))) (build-system r-build-system) (propagated-inputs `(("r-cowplot" ,r-cowplot) @@ -6075,6 +6119,8 @@ and adds the annotation to the plot.") ("r-purrr" ,r-purrr) ("r-rlang" ,r-rlang) ("r-scales" ,r-scales) + ("r-rstatix" ,r-rstatix) + ("r-tibble" ,r-tibble) ("r-tidyr" ,r-tidyr))) (home-page "http://www.sthda.com/english/rpkgs/ggpubr") (synopsis "ggplot2-based publication-ready plots") @@ -6391,14 +6437,14 @@ references and Rd files.") (define-public r-officer (package (name "r-officer") - (version "0.3.8") + (version "0.3.9") (source (origin (method url-fetch) (uri (cran-uri "officer" version)) (sha256 (base32 - "0xhx5n6qksyh2s9hvwhnc8y0hn362asc5y94ld06snad786hz0rw")))) + "0kp8rmab917zimnyc0rz37czf5f044z9naiyq0yxw68i990ikxf7")))) (build-system r-build-system) (propagated-inputs `(("r-magrittr" ,r-magrittr) @@ -6603,18 +6649,19 @@ information are missing.") (define-public r-sjlabelled (package (name "r-sjlabelled") - (version "1.1.3") + (version "1.1.4") (source (origin (method url-fetch) (uri (cran-uri "sjlabelled" version)) (sha256 (base32 - "1amq7i9sxf0pkxhskqc53xq5wvc9rdxm7cxyb4b6xh6qsskjnlsj")))) + "00dnrvwf7zbaq07hkh4rx24pvi5bwkl4npf6ycg101s63633dq5m")))) (build-system r-build-system) (propagated-inputs - `(("r-haven" ,r-haven) - ("r-insight" ,r-insight))) + `(("r-insight" ,r-insight))) + (native-inputs + `(("r-knitr" ,r-knitr))) (home-page "https://github.com/strengejacke/sjlabelled") (synopsis "Labelled data utility functions") (description @@ -6740,14 +6787,14 @@ documents.") (define-public r-writexl (package (name "r-writexl") - (version "1.2") + (version "1.3") (source (origin (method url-fetch) (uri (cran-uri "writexl" version)) (sha256 (base32 - "09fhdip6igcg97fjx4c7727cx2lb49l4d74l4i8rg2bag2s5lrj3")))) + "0lah0r2pd996s0vdbi614j3h52dbxmifha6f19v53p2b7fr32wjd")))) (build-system r-build-system) (inputs `(("zlib" ,zlib))) (home-page "https://github.com/ropensci/writexl") @@ -7084,14 +7131,14 @@ bootstrap. Confidence intervals can be computed for (p)AUC or ROC curves.") (define-public r-rootsolve (package (name "r-rootsolve") - (version "1.8.2") + (version "1.8.2.1") (source (origin (method url-fetch) (uri (cran-uri "rootSolve" version)) (sha256 (base32 - "0rj7c4zcrzgz7sb0vgvh7swpfafnw4040cxp7ypas3s8fnihn54l")))) + "0c9hhgq1pgqdg80a6n2ssfbj5nyaf97y4iiya7j7l6b34qc53128")))) (properties `((upstream-name . "rootSolve"))) (build-system r-build-system) (native-inputs `(("gfortran" ,gfortran))) @@ -8603,13 +8650,13 @@ detection, parallelism through BLAS and parallel user templates.") (define-public r-sjstats (package (name "r-sjstats") - (version "0.17.9") + (version "0.18.0") (source (origin (method url-fetch) (uri (cran-uri "sjstats" version)) (sha256 - (base32 "0938ac6ixvkif07azd2msa8g3qnn9rabj6jg17almbysl83kg4nm")))) + (base32 "17b1fcrhgjw66qa8zk2jj1bvz3vp5bnjn3p4y1wsg5ng5nxq8jz0")))) (build-system r-build-system) (propagated-inputs `(("r-bayestestr" ,r-bayestestr) @@ -8705,14 +8752,14 @@ ROPE percentage and pd).") (define-public r-performance (package (name "r-performance") - (version "0.4.5") + (version "0.4.6") (source (origin (method url-fetch) (uri (cran-uri "performance" version)) (sha256 (base32 - "0j6wmnwhfdd3v1a17qmg491q50579knjzscmyr4yk3xr0jbsbg8x")))) + "08i9ngvga06abs2k50gvkh6iwl4r77bkmmchsqjibsy09wdvd8xj")))) (build-system r-build-system) (propagated-inputs `(("r-bayestestr" ,r-bayestestr) @@ -8920,14 +8967,14 @@ terminals that do not support Unicode.") (define-public r-usethis (package (name "r-usethis") - (version "1.6.0") + (version "1.6.1") (source (origin (method url-fetch) (uri (cran-uri "usethis" version)) (sha256 (base32 - "12iyimqyza752anj29wpfisl8nz5r25kfcqbssybg24nb4wyy146")))) + "0vwxsnq615mwc706a4a71gyy0hmvnllbh249gzm7vl3ym5cr0cv0")))) (build-system r-build-system) (propagated-inputs `(("r-cli" ,r-cli) @@ -9141,14 +9188,14 @@ users.") (define-public r-lsei (package (name "r-lsei") - (version "1.2-0") + (version "1.2-0.1") (source (origin (method url-fetch) (uri (cran-uri "lsei" version)) (sha256 (base32 - "1xl06fb3is744pxlh42wx5hn1h0ab1k31wnmsmh0524kxzcyp0a7")))) + "1rvzdb33x9ykl5qfwxkps1iylxqzlf1qla3l88420nbq7pxp7m87")))) (build-system r-build-system) (native-inputs `(("gfortran" ,gfortran))) @@ -9164,14 +9211,14 @@ problems into least squares ones first.") (define-public r-npsurv (package (name "r-npsurv") - (version "0.4-0") + (version "0.4-0.1") (source (origin (method url-fetch) (uri (cran-uri "npsurv" version)) (sha256 (base32 - "1wq4c9yfha5azjhrn40iiqkshmvh611sa90jp3lh82n4bl9zfk20")))) + "09nxibp93bp9v8qcx0gnazk7fkvyh0fq9vlgxl639m6ndr7fwp88")))) (build-system r-build-system) (propagated-inputs `(("r-lsei" ,r-lsei))) @@ -9447,14 +9494,14 @@ package provides a minimal R interface by relying on the Rcpp package.") (define-public r-rcppparallel (package (name "r-rcppparallel") - (version "5.0.0") + (version "5.0.1") (source (origin (method url-fetch) (uri (cran-uri "RcppParallel" version)) (sha256 (base32 - "1mhd6vp47xmfw533h0pkvydv96m57fspvd85g8m7iqb5rcxvhhdb")))) + "029yyjnixggqmddazwxh1wqid1h7xpwpi4sgixyhbb4kmvqlwfkd")))) (properties `((upstream-name . "RcppParallel"))) (build-system r-build-system) (home-page "https://rcppcore.github.io/RcppParallel/") @@ -9655,14 +9702,14 @@ features (e.g. local modes).") (define-public r-arm (package (name "r-arm") - (version "1.10-1") + (version "1.11-1") (source (origin (method url-fetch) (uri (cran-uri "arm" version)) (sha256 (base32 - "0vvp90jygajd6ydky57z66wqjq9msfbl88irj5jbsray574mh4bg")))) + "0i2lnm09bqy1qw0ms5pw0rzw196xmnk5dxha3g8lc58lqpldp0kv")))) (build-system r-build-system) (propagated-inputs `(("r-abind" ,r-abind) @@ -9900,7 +9947,7 @@ redundant complex conjugate when the input is real data.") (build-system r-build-system) (inputs `(("libtiff" ,libtiff) - ("libjpeg" ,libjpeg) + ("libjpeg" ,libjpeg-turbo) ("zlib" ,zlib))) (home-page "https://www.rforge.net/tiff/") (synopsis "Read and write TIFF images") @@ -10801,14 +10848,14 @@ and manipulating sets of ontological terms.") (define-public r-gargle (package (name "r-gargle") - (version "0.4.0") + (version "0.5.0") (source (origin (method url-fetch) (uri (cran-uri "gargle" version)) (sha256 (base32 - "08zhfk2sl342w35i5n2c93ayypg3z0kbl0020l3y9adqka1vazgx")))) + "1fykmiv3x8c9ai31r9wr7qcca51h6kqn9cgwbxvxfj15fhwskh4n")))) (build-system r-build-system) (propagated-inputs `(("r-fs" ,r-fs) @@ -10817,6 +10864,8 @@ and manipulating sets of ontological terms.") ("r-jsonlite" ,r-jsonlite) ("r-rlang" ,r-rlang) ("r-withr" ,r-withr))) + (native-inputs + `(("r-knitr" ,r-knitr))) (home-page "https://gargle.r-lib.org") (synopsis "Utilities for working with Google APIs") (description @@ -10828,14 +10877,14 @@ preparing, executing, and processing HTTP requests.") (define-public r-bigrquery (package (name "r-bigrquery") - (version "1.2.0") + (version "1.3.0") (source (origin (method url-fetch) (uri (cran-uri "bigrquery" version)) (sha256 (base32 - "1ggh2gngr5x0g6y7d55y6kvn94anf7qi1bkc28cjmw61hxjq38fb")))) + "0j8asipnb4fg4kk3apy37ywqq78ncmqh9wq015xpww2zb9shnbvf")))) (build-system r-build-system) (propagated-inputs `(("r-assertthat" ,r-assertthat) @@ -11599,14 +11648,14 @@ library.") (define-public r-protviz (package (name "r-protviz") - (version "0.6.4") + (version "0.6.8") (source (origin (method url-fetch) (uri (cran-uri "protViz" version)) (sha256 (base32 - "1qq9bf4485x8cviry9fmhnv4hw9aw657w134003myzcv42c4pml6")))) + "0rn8fjg7791a4j2k1kk1jwx40xz20bfaavvflmhyzpl398vmmy3a")))) (properties `((upstream-name . "protViz"))) (build-system r-build-system) (propagated-inputs `(("r-rcpp" ,r-rcpp))) @@ -12849,14 +12898,14 @@ plotting functions are available for analyzing clustering results.") (define-public r-valr (package (name "r-valr") - (version "0.5.0") + (version "0.6.1") (source (origin (method url-fetch) (uri (cran-uri "valr" version)) (sha256 (base32 - "14jhrwkiwmha3vlmm7b50n2xxyizj6ddmy89gb20mpzq7qhz1ika")))) + "1qxw6h63i2vfb2w6q453zzwk0ypma3xdwwpj15i06669vzgyy3bb")))) (build-system r-build-system) (propagated-inputs `(("r-broom" ,r-broom) @@ -12867,6 +12916,8 @@ plotting functions are available for analyzing clustering results.") ("r-rlang" ,r-rlang) ("r-stringr" ,r-stringr) ("r-tibble" ,r-tibble))) + (native-inputs + `(("r-knitr" ,r-knitr))) (home-page "http://github.com/rnabioco/valr") (synopsis "Genome interval arithmetic in R") (description @@ -12878,14 +12929,14 @@ R, enabling interactive analysis and visualization of genome-scale data.") (define-public r-rematch2 (package (name "r-rematch2") - (version "2.1.1") + (version "2.1.2") (source (origin (method url-fetch) (uri (cran-uri "rematch2" version)) (sha256 (base32 - "13siaa8s2ji9q6hykhb2r34ag76335ypmbqr90xaqilbir0klhnh")))) + "1fzpz8vhghw8ygwg6rsvfy3783pqk7ch029i5851lwypkplvz77y")))) (build-system r-build-system) (propagated-inputs `(("r-tibble" ,r-tibble))) @@ -13355,14 +13406,14 @@ tessellation.") (define-public r-sf (package (name "r-sf") - (version "0.9-2") + (version "0.9-3") (source (origin (method url-fetch) (uri (cran-uri "sf" version)) (sha256 (base32 - "01xplgy5nlwy3ajfch4h1ssa1xhm7q0jzscpz04dmvgqfzwhhdfh")))) + "0qh9jxj88rhkwcd95g0l57cdrz5qqjw1b9yysz1hp9cp99485hcx")))) (build-system r-build-system) (inputs `(("gdal" ,gdal) @@ -13426,14 +13477,14 @@ spanning tree.") (define-public r-adegenet (package (name "r-adegenet") - (version "2.1.2") + (version "2.1.3") (source (origin (method url-fetch) (uri (cran-uri "adegenet" version)) (sha256 (base32 - "01fgrgbiddz2q4l3mx637hhwbs7r0c43yw7vpwl8p8pwbm3nykz0")))) + "1ipnawi0qfd4rfwj37igvh36x1a9d8x4n7xynn1jcr12rd713407")))) (build-system r-build-system) (propagated-inputs `(("r-ade4" ,r-ade4) @@ -13572,13 +13623,13 @@ either PDF/EPS files.") (define-public r-polspline (package (name "r-polspline") - (version "1.1.17") + (version "1.1.18") (source (origin (method url-fetch) (uri (cran-uri "polspline" version)) (sha256 - (base32 "0c7fnxpqpy3hibiim4yib6l6bq363s97wwvllxp4lp8h06fjcyyn")))) + (base32 "00h1xg89wncfj2nk68zv7vphfcc68s7k0l5s9511bzxz8khhw9fz")))) (build-system r-build-system) (native-inputs `(("gfortran" ,gfortran))) (home-page "https://cran.r-project.org/web/packages/polspline/") @@ -15435,14 +15486,14 @@ classification and regression models.") (define-public r-dalex (package (name "r-dalex") - (version "1.2.0") + (version "1.2.1") (source (origin (method url-fetch) (uri (cran-uri "DALEX" version)) (sha256 (base32 - "0mfcci54622gnk8al9fl2jhs9i2vfly7lam04y5rdacbyiam49j6")))) + "0lx8nasm1zgh1ckz8nw3ysp6xjv3dsj39hzhr6k3xhh6i8pm9rxk")))) (properties `((upstream-name . "DALEX"))) (build-system r-build-system) (propagated-inputs @@ -15510,14 +15561,14 @@ includes data sets from oceanography.") (define-public r-ggfortify (package (name "r-ggfortify") - (version "0.4.9") + (version "0.4.10") (source (origin (method url-fetch) (uri (cran-uri "ggfortify" version)) (sha256 (base32 - "1p6knrbyaynaqwd939w09hpf1zz1gn95cb46sfgppl8l98krb2h5")))) + "0wmcwp63h90v3f00ixszvis4z28im621jickvc0wgi6qvjvnayq0")))) (build-system r-build-system) (propagated-inputs `(("r-dplyr" ,r-dplyr) @@ -16026,14 +16077,14 @@ both R code and compiled C/C++/FORTRAN code.") (define-public r-systemfonts (package (name "r-systemfonts") - (version "0.2.0") + (version "0.2.1") (source (origin (method url-fetch) (uri (cran-uri "systemfonts" version)) (sha256 (base32 - "1aba07djvxqdmnsdbwvzcsbm2fddnhrssa54xyrlviiwsv2c1qsd")))) + "0dna00xai0pw76b4830yy4r5j1hq7f7kla67v0iz39cjm4rq4ygq")))) (properties `((upstream-name . "systemfonts"))) (build-system r-build-system) (inputs @@ -16055,14 +16106,14 @@ be used further by e.g. graphic devices.") (define-public r-graphlayouts (package (name "r-graphlayouts") - (version "0.6.0") + (version "0.7.0") (source (origin (method url-fetch) (uri (cran-uri "graphlayouts" version)) (sha256 (base32 - "1la016m37kp79zk8p1yx9kaha8y6d4w52w39h0mzv1mfsi6d75w0")))) + "17lc75k8i3c696hfj44zj7j1a5sb0nap8spc5r98v7vd6xh4nii0")))) (properties `((upstream-name . "graphlayouts"))) (build-system r-build-system) (propagated-inputs @@ -16082,14 +16133,14 @@ emphasize hidden group structures in networks or focus on specific nodes.") (define-public r-tidygraph (package (name "r-tidygraph") - (version "1.1.2") + (version "1.2.0") (source (origin (method url-fetch) (uri (cran-uri "tidygraph" version)) (sha256 (base32 - "1zpsarm74afbc7p5dlyb0whc09670qdcddw1ckb25cfc9hfh0hjn")))) + "17qjns33zcj82jcsl7bn7i4zxcm7ric50zyf7agi0i01zi16qz85")))) (properties `((upstream-name . "tidygraph"))) (build-system r-build-system) (propagated-inputs @@ -16818,14 +16869,14 @@ server-side.") (define-public r-sysfonts (package (name "r-sysfonts") - (version "0.8") + (version "0.8.1") (source (origin (method url-fetch) (uri (cran-uri "sysfonts" version)) (sha256 (base32 - "0wng902plryf2d8fc7k7m3jx11acz51kb2d91cqbyhq7xpk06z43")))) + "1xp40hchjfif80a6jj210ghrjcvjjf66vqcssdy7a1j53nl1n994")))) (properties `((upstream-name . "sysfonts"))) (build-system r-build-system) (inputs @@ -16866,14 +16917,14 @@ package.") (define-public r-showtext (package (name "r-showtext") - (version "0.7-1") + (version "0.8") (source (origin (method url-fetch) (uri (cran-uri "showtext" version)) (sha256 (base32 - "0a5gg72bfrc7wm0phj1aflj1wc08kfi81ac32na6ya9s2ivyimw5")))) + "15v90s061iz9i655xin7kqb6ahnski55pgz3329wcz60bnbjb82x")))) (properties `((upstream-name . "showtext"))) (build-system r-build-system) (inputs @@ -16883,7 +16934,9 @@ package.") (propagated-inputs `(("r-showtextdb" ,r-showtextdb) ("r-sysfonts" ,r-sysfonts))) - (native-inputs `(("pkg-config" ,pkg-config))) + (native-inputs + `(("pkg-config" ,pkg-config) + ("r-knitr" ,r-knitr))) (home-page "https://github.com/yixuan/showtext") (synopsis "Using fonts more easily in R graphs") (description @@ -17171,14 +17224,14 @@ data.") (define-public r-mda (package (name "r-mda") - (version "0.4-10") + (version "0.5") (source (origin (method url-fetch) (uri (cran-uri "mda" version)) (sha256 (base32 - "19g6kn6g0shidrjfffklbmzc5w7mcimrxhagx4nmpslg59ibqdkh")))) + "01pjrz9xv1rx78ndy0x9dc32ws8brcvwyb500m1f0dqd42375vmx")))) (properties `((upstream-name . "mda"))) (build-system r-build-system) (propagated-inputs `(("r-class" ,r-class))) @@ -18630,7 +18683,7 @@ currently limited to 8 bit greyscale images and 24, 32 bit (A)RGB images.") (properties `((upstream-name . "readbitmap"))) (build-system r-build-system) (inputs - `(("libjpeg" ,libjpeg) + `(("libjpeg" ,libjpeg-turbo) ("libpng" ,libpng))) (propagated-inputs `(("r-bmp" ,r-bmp) @@ -18648,14 +18701,14 @@ number embedded in the file rather than the file extension.") (define-public r-imager (package (name "r-imager") - (version "0.42.1") + (version "0.42.3") (source (origin (method url-fetch) (uri (cran-uri "imager" version)) (sha256 (base32 - "1d7a49lcna77wyfjf5q1b89jck3p3vnysnkgz4drb0qkpy6hz76b")))) + "1wxvbv803222gjrf1ys6a349xlnmmdw3kqgi93piq9gq7lahihvg")))) (properties `((upstream-name . "imager"))) (build-system r-build-system) (inputs @@ -18673,7 +18726,9 @@ number embedded in the file rather than the file extension.") ("r-rcpp" ,r-rcpp) ("r-readbitmap" ,r-readbitmap) ("r-stringr" ,r-stringr))) - (native-inputs `(("pkg-config" ,pkg-config))) + (native-inputs + `(("pkg-config" ,pkg-config) + ("r-knitr" ,r-knitr))) (home-page "https://dahtah.github.io/imager/") (synopsis "Image processing library") (description @@ -18795,14 +18850,14 @@ functions.") (define-public r-univoutl (package (name "r-univoutl") - (version "0.1-5") + (version "0.2") (source (origin (method url-fetch) (uri (cran-uri "univOutl" version)) (sha256 (base32 - "193wrpkvgmlrx43nag8w3ivrlqm37nm6g86wcvd3bgw3hchs70gi")))) + "0rlc3w7cx2hfxacpjs9kmjzv5p8v9wxnlpxi3rh276wiy5zdr91v")))) (properties `((upstream-name . "univOutl"))) (build-system r-build-system) (propagated-inputs @@ -19309,14 +19364,14 @@ automatically show a loader when the output is (re)calculating.") (define-public r-rsvg (package (name "r-rsvg") - (version "1.3") + (version "2.0") (source (origin (method url-fetch) (uri (cran-uri "rsvg" version)) (sha256 (base32 - "11mccgf6hfskg45wqc114sx3qy2r494y6axdf73z6xwhs1wpm97g")))) + "0r066lvyfvhsjjpiad259f1m3qk5w7hxhbyjzhlryzf3fy0hvh29")))) (properties `((upstream-name . "rsvg"))) (build-system r-build-system) (inputs @@ -20159,14 +20214,14 @@ and analyze Stan models.") (define-public r-rpf (package (name "r-rpf") - (version "1.0.3") + (version "1.0.4") (source (origin (method url-fetch) (uri (cran-uri "rpf" version)) (sha256 (base32 - "1i2kqd7nx55nn35qnw89xmnqk23x9c8xhkh736c2xg7k2ai84ybl")))) + "17crcgsbcsh0c00n7bgdqfnd7n1vzz7drfxjs7d18253yl5x44pl")))) (properties `((upstream-name . "rpf"))) (build-system r-build-system) (propagated-inputs @@ -20174,6 +20229,8 @@ and analyze Stan models.") ("r-mvtnorm" ,r-mvtnorm) ("r-rcpp" ,r-rcpp) ("r-rcppeigen" ,r-rcppeigen))) + (native-inputs + `(("r-knitr" ,r-knitr))) (home-page "https://github.com/jpritikin/rpf") (synopsis "Response probability functions") (description @@ -20219,19 +20276,18 @@ estimate parameters given observed data.") (define-public r-kutils (package (name "r-kutils") - (version "1.69") + (version "1.70") (source (origin (method url-fetch) (uri (cran-uri "kutils" version)) (sha256 (base32 - "12pg26a85h0jxlfcyai68dbh4bq1gnq8v1ngi8k9qvafbrpc6gx8")))) + "06jk66wbq3jmdf2jdhqns6r3yk36l2x7c907x977zv80sqxa1l37")))) (properties `((upstream-name . "kutils"))) (build-system r-build-system) (propagated-inputs `(("r-foreign" ,r-foreign) - ("r-lavaan" ,r-lavaan) ("r-openxlsx" ,r-openxlsx) ("r-plyr" ,r-plyr) ("r-runit" ,r-runit) @@ -20469,14 +20525,14 @@ well as Ravand and Robitzsch (2015).") (define-public r-tam (package (name "r-tam") - (version "3.4-26") + (version "3.5-19") (source (origin (method url-fetch) (uri (cran-uri "TAM" version)) (sha256 (base32 - "111d7qkxhwh1lfvldyh9d61pdb5vb6x8lr8n9h95ssvw07vjqvk9")))) + "1x1pdy0hrk4c3x5l4gcslpvyb0sv2zgly4n3a7y8j6yrzajx0sg7")))) (properties `((upstream-name . "TAM"))) (build-system r-build-system) (propagated-inputs @@ -21633,3 +21689,40 @@ infinite-precision rational arithmetic.") Archive Toolkit. Rxnat uses the XNAT REST API to perform data queries and download images.") (license license:gpl2))) + +(define-public r-rserve + (package + (name "r-rserve") + (version "1.8-6") + (source + (origin + (method url-fetch) + (uri (string-append "http://www.rforge.net/Rserve/snapshot/Rserve_" + version ".tar.gz")) + (sha256 + (base32 + "017kkzv9lxlz9qhg3gprrf1wcyflxrif6wjk27x9b4bdzylw6bsx")))) + (build-system r-build-system) + (propagated-inputs + `(("r-checkmate" ,r-checkmate) + ("r-mime" ,r-mime) + ("r-jsonlite" ,r-jsonlite) + ("r-knitr" ,r-knitr) + ("r-r6" ,r-r6) + ("r-rcpp" ,r-rcpp) + ("r-uuid" ,r-uuid))) + (inputs + `(("openssl" ,openssl) + ("zlib" ,zlib))) + (home-page "https://github.com/s-u/Rserve") + (synopsis + "Server providing access to R from many languages and systems") + (description + "Rserve acts as a socket server (TCP/IP or local sockets) which allows +binary requests to be sent to R. Every connection has a separate workspace +and working directory. Client-side implementations are available for popular +languages such as C/C++ and Java, allowing any application to use facilities +of R without the need of linking to R code. Rserve supports remote +connection, user authentication and file transfer. A simple R client is +included in this package as well.") + (license license:gpl2))) diff --git a/gnu/packages/crates-io.scm b/gnu/packages/crates-io.scm index d318a05d71..9237a282b7 100644 --- a/gnu/packages/crates-io.scm +++ b/gnu/packages/crates-io.scm @@ -5,6 +5,7 @@ ;;; Copyright © 2019 Giacomo Leidi <goodoldpaul@autistici.org> ;;; Copyright © 2019 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2019, 2020 John Soo <jsoo1@asu.edu> +;;; Copyright © 2019, 2020 Hartmut Goebel <h.goebel@crazy-compilers.com> ;;; Copyright © 2020 Jakub Kądziołka <kuba@kadziolka.net> ;;; Copyright © 2020 Leo Famulari <leo@famulari.name> ;;; @@ -29,6 +30,7 @@ #:use-module ((guix licenses) #:prefix license:) #:use-module (guix packages) #:use-module (gnu packages) + #:use-module (gnu packages base) #:use-module (gnu packages compression) #:use-module (gnu packages fontutils) #:use-module (gnu packages freedesktop) @@ -36,9 +38,13 @@ #:use-module (gnu packages gtk) #:use-module (gnu packages jemalloc) #:use-module (gnu packages llvm) + #:use-module (gnu packages multiprecision) + #:use-module (gnu packages nettle) #:use-module (gnu packages pcre) #:use-module (gnu packages pkg-config) #:use-module (gnu packages python) + #:use-module (gnu packages serialization) + #:use-module (gnu packages sqlite) #:use-module (gnu packages ssh) #:use-module (gnu packages tls) #:use-module (gnu packages video) @@ -847,6 +853,59 @@ standard library.") ("rust-serde" ,rust-serde-1.0) ("rust-serde-test" ,rust-serde-test-1.0)))))) +(define-public rust-ascii-canvas-2 + (package + (name "rust-ascii-canvas") + (version "2.0.0") + (source + (origin + (method url-fetch) + (uri (crate-uri "ascii-canvas" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "0a9s8vrbc5jr6ry5ygjyfqmbs9gyya1v6dsxzsczpai8z4nvg3pz")))) + (build-system cargo-build-system) + (arguments + `(#:skip-build? #t ;; TODO: failes due to an unresolved import + #:cargo-inputs + (("rust-term" ,rust-term-0.5)))) + (home-page "https://github.com/nikomatsakis/ascii-canvas") + (synopsis "Simple canvas for drawing lines and styled text and emitting to +the terminal") + (description "@code{ASCII} canvas is a simple Rust library that allows you +to draw lines and colored text and then write them to the terminal. It uses +the term library to handle the ANSI nonsense and hence it works on Windows, +Mac, and Unix.") + (license (list license:asl2.0 license:expat)))) + +(define-public rust-assert-cli-0.6 + (package + (name "rust-assert-cli") + (version "0.6.3") + (source + (origin + (method url-fetch) + (uri (crate-uri "assert-cli" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "0jc1bh3cvnl66bl7s5gr1xnm0hl8d2l3gmil0pmhp5v2xp0bg6m2")))) + (build-system cargo-build-system) + (arguments + `(#:tests? #f ;; requires `printenv`, but installing coreutils doesn't help + #:cargo-inputs + (("rust-colored" ,rust-colored-1.9) + ("rust-difference" ,rust-difference-2.0) + ("rust-environment" ,rust-environment-0.1) + ("rust-failure" ,rust-failure-0.1) + ("rust-failure-derive" ,rust-failure-derive-0.1) + ("rust-serde-json" ,rust-serde-json-1.0)) + #:cargo-development-inputs + (("rust-docmatic" ,rust-docmatic-0.1)))) + (home-page "https://github.com/assert-rs/assert_cli") + (synopsis "Test CLI Applications") + (description "This package helps testing CLI Applications.") + (license (list license:expat license:asl2.0)))) + (define-public rust-assert-matches-1.3 (package (name "rust-assert-matches") @@ -1098,6 +1157,25 @@ trace (backtrace) at runtime in a Rust program.") (("rust-criterion" ,rust-criterion-0.2) ("rust-rand" ,rust-rand-0.4)))))) +(define-public rust-base64-0.9 + (package + (inherit rust-base64-0.11) + (name "rust-base64") + (version "0.9.3") + (source + (origin + (method url-fetch) + (uri (crate-uri "base64" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "0hs62r35bgxslawyrn1vp9rmvrkkm76fqv0vqcwd048vs876r7a8")))) + (arguments + `(#:cargo-inputs + (("rust-byteorder" ,rust-byteorder-1.3) + ("rust-safemem" ,rust-safemem-0.3)) + #:cargo-development-inputs + (("rust-rand" ,rust-rand-0.4)))))) + (define-public rust-base-x-0.2 (package (name "rust-base-x") @@ -1386,6 +1464,40 @@ that uses Serde for transforming structs into bytes and vice versa!") ("rust-diff" ,rust-diff-0.1) ("rust-shlex" ,rust-shlex-0.1)))))) +(define-public rust-bindgen-0.49 + (package/inherit rust-bindgen-0.50 + (name "rust-bindgen") + (version "0.49.4") + (source + (origin + (method url-fetch) + (uri (crate-uri "bindgen" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "0vjacbvashvds5rbrlqvq5fy55wmp50iia3mnczvycap7mzhh1sc")))) + (build-system cargo-build-system) + (arguments + `(#:cargo-inputs + (("rust-bitflags" ,rust-bitflags-1) + ("rust-cexpr" ,rust-cexpr-0.3) + ("rust-cfg-if" ,rust-cfg-if-0.1) + ("rust-clang-sys" ,rust-clang-sys-0.28) + ("rust-clap" ,rust-clap-2) + ("rust-env-logger" ,rust-env-logger-0.6) + ("rust-fxhash" ,rust-fxhash-0.2) + ("rust-lazy-static" ,rust-lazy-static-1) + ("rust-log" ,rust-log-0.4) + ("rust-peeking-take-while" ,rust-peeking-take-while-0.1) + ("rust-proc-macro2" ,rust-proc-macro2-0.4) + ("rust-quote" ,rust-quote-0.6) + ("rust-regex" ,rust-regex-1.1) + ("rust-shlex" ,rust-shlex-0.1) + ("rust-which" ,rust-which-2.0)) + #:cargo-development-inputs + (("rust-clap" ,rust-clap-2) + ("rust-diff" ,rust-diff-0.1) + ("rust-shlex" ,rust-shlex-0.1)))))) + (define-public rust-bindgen-0.33 (package (inherit rust-bindgen-0.50) @@ -1521,6 +1633,19 @@ behave like a set of bitflags.") (base32 "0v8hh6wdkpk9my8z8442g4hqrqf05h0qj53dsay6mv18lqvqklda")))))) +(define-public rust-bitflags-0.5 + (package + (inherit rust-bitflags-1) + (name "rust-bitflags") + (version "0.5.0") + (source + (origin + (method url-fetch) + (uri (crate-uri "bitflags" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "08qdq5w1nd3hzwsrxk0dxzqv4g8wbwj6v2193njskwzdd09r6rsg")))))) + (define-public rust-bitstream-io-0.8 (package (name "rust-bitstream-io") @@ -1994,9 +2119,33 @@ little-endian.") (("rust-quickcheck" ,rust-quickcheck-0.2) ("rust-rand" ,rust-rand-0.3)))))) -(define-public rust-bytes-0.4 +(define-public rust-bytes-0.5 (package (name "rust-bytes") + (version "0.5.4") + (source + (origin + (method url-fetch) + (uri (crate-uri "bytes" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "1q9r7si1l8vndg4n2ny2nv833ghp5vyqzk5indb9rmhd5ibaq2hk")))) + (build-system cargo-build-system) + (arguments + `(#:skip-build? #t ;; FIXME requires Raus >= 1.39 + #:cargo-inputs + (("rust-serde" ,rust-serde-1.0)) + #:cargo-development-inputs + (("rust-loom" ,rust-loom-0.2) + ("rust-serde-test" ,rust-serde-test-1.0)))) + (home-page "https://github.com/tokio-rs/bytes") + (synopsis "Types and traits for working with bytes") + (description "Types and traits for working with bytes.") + (license license:expat))) + +(define-public rust-bytes-0.4 + (package/inherit rust-bytes-0.5 + (name "rust-bytes") (version "0.4.12") (source (origin @@ -2016,13 +2165,7 @@ little-endian.") ("rust-iovec" ,rust-iovec-0.1) ("rust-serde" ,rust-serde-1.0)) #:cargo-development-inputs - (("rust-serde-test" ,rust-serde-test-1.0)))) - (home-page "https://github.com/tokio-rs/bytes") - (synopsis - "Types and traits for working with bytes") - (description - "Types and traits for working with bytes.") - (license license:expat))) + (("rust-serde-test" ,rust-serde-test-1.0)))))) (define-public rust-bytes-0.3 (package @@ -2262,6 +2405,101 @@ exposed as Reader/Writer streams.") "This package provides a callback-based event loop") (license license:expat))) +(define-public rust-capnp-0.10 + (package + (name "rust-capnp") + (version "0.10.3") + (source + (origin + (method url-fetch) + (uri (crate-uri "capnp" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "17hsnmlcrzksjjpwpz51y8g36xzq8042i2cwns0lsg7rixfw2rxq")))) + (build-system cargo-build-system) + (arguments + `(#:cargo-inputs + (("rust-futures" ,rust-futures-0.1) + ("rust-quickcheck" ,rust-quickcheck-0.2)) + #:cargo-development-inputs + (("rust-quickcheck" ,rust-quickcheck-0.2)))) + (home-page "https://github.com/capnproto/capnproto-rust") + (synopsis "Runtime library for Cap'n Proto data encoding") + (description "This package provides a runtime library for Cap'n Proto data +encoding.") + (license license:expat))) + +(define-public rust-capnp-futures-0.10 + (package + (name "rust-capnp-futures") + (version "0.10.1") + (source + (origin + (method url-fetch) + (uri (crate-uri "capnp-futures" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "0qdiqkp9mh4acpa0dqhpzv2gwf949rj3m85mgwl1rih6gvgbh1zs")))) + (build-system cargo-build-system) + (arguments + `(#:cargo-inputs + (("rust-capnp" ,rust-capnp-0.10) + ("rust-futures" ,rust-futures-0.1)) + #:cargo-development-inputs + (("rust-capnp" ,rust-capnp-0.10) + ("rust-quickcheck" ,rust-quickcheck-0.2)))) + (home-page "https://github.com/capnproto/capnproto-rust") + (synopsis "Async serialization for Cap'n Proto messages") + (description "This package provides async serialization for Cap'n Proto +messages.") + (license license:expat))) + +(define-public rust-capnp-rpc-0.10 + (package + (name "rust-capnp-rpc") + (version "0.10.0") + (source + (origin + (method url-fetch) + (uri (crate-uri "capnp-rpc" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "1j6xg7yays1hlm1045wviyn1642yvvi2p4kba26yk07a0kafr3jn")))) + (build-system cargo-build-system) + (native-inputs + `(("capnproto" ,capnproto))) + (arguments + `(#:cargo-inputs + (("rust-capnp" ,rust-capnp-0.10) + ("rust-capnp-futures" ,rust-capnp-futures-0.10) + ("rust-futures" ,rust-futures-0.1)) + #:cargo-development-inputs + (("rust-capnpc" ,rust-capnpc-0.10)))) + (home-page "https://github.com/capnproto/capnproto-rust") + (synopsis "Cap'n Proto remote procedure call protocol implementation") + (description "This package provides an implementation of the Cap'n Proto +remote procedure call protocol") + (license license:expat))) + +(define-public rust-capnpc-0.10 + (package + (name "rust-capnpc") + (version "0.10.2") + (source + (origin + (method url-fetch) + (uri (crate-uri "capnpc" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "1zxbmdkr0xfzkfq9p8zn7pp9jjq275qhr8fh9a0cc0ab37yfvbyj")))) + (build-system cargo-build-system) + (arguments + `(#:cargo-inputs (("rust-capnp" ,rust-capnp-0.10)))) + (home-page "https://github.com/capnproto/capnproto-rust") + (synopsis "Cap'n Proto code generation") + (description "Cap'n Proto code generation") + (license license:expat))) + (define-public rust-caps-0.3 (package (name "rust-caps") @@ -3118,6 +3356,19 @@ CMAKE environmental variable is set.") "The most simple way to add colors in your terminal.") (license license:mpl2.0))) +(define-public rust-colored-1.9.1 + (package/inherit rust-colored-1.9 + (name "rust-colored") + (version "1.9.1") + (source + (origin + (method url-fetch) + (uri (crate-uri "colored" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "0fildacm47g86acmx44yvxx6cka8fdym5qkgfm8x8gh2hsrghc7r")))) + (build-system cargo-build-system))) + ;; This package requires features which are unavailable ;; on the stable releases of Rust. (define-public rust-compiler-builtins-0.1 @@ -4070,6 +4321,52 @@ intrinsics.") #:cargo-development-inputs (("rust-rand" ,rust-rand-0.4)))))) +(define-public rust-crossterm-0.13 + (package + (name "rust-crossterm") + (version "0.13.3") + (source + (origin + (method url-fetch) + (uri (crate-uri "crossterm" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "1jw9s85mnhpkk38lihr4ildip4jhfhc3h86npncd92i4mdb257vm")))) + (build-system cargo-build-system) + (arguments + `(#:cargo-inputs + (("rust-crossterm-winapi" ,rust-crossterm-winapi-0.4) + ("rust-lazy-static" ,rust-lazy-static-1) + ("rust-libc" ,rust-libc-0.2) + ("rust-mio" ,rust-mio-0.6) + ("rust-serde" ,rust-serde-1.0) + ("rust-winapi" ,rust-winapi-0.3)))) + (home-page "https://github.com/crossterm-rs/crossterm") + (synopsis "Crossplatform terminal library for manipulating terminals") + (description "This package provides a crossplatform terminal library for +manipulating terminals.") + (license license:expat))) + +(define-public rust-crossterm-winapi-0.4 + (package + (name "rust-crossterm-winapi") + (version "0.4.0") + (source + (origin + (method url-fetch) + (uri (crate-uri "crossterm-winapi" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "1j3av8bba3f5y4n4w1vgn0iz28vdajxrli6lqxnvpddbphskmph2")))) + (build-system cargo-build-system) + (arguments + `(#:cargo-inputs (("rust-winapi" ,rust-winapi-0.3)))) + (home-page "https://github.com/crossterm-rs/crossterm-winapi") + (synopsis "Basic simple abstractions around common WinAPI calls") + (description "WinAPI wrapper that provides some basic simple abstractions +around common WinAPI calls.") + (license license:expat))) + (define-public rust-crypto-mac-0.7 (package (name "rust-crypto-mac") @@ -4239,6 +4536,27 @@ Code} (MAC) algorithms.") "Bare bones CSV parsing with no_std support.") (license (list license:unlicense license:expat)))) +(define-public rust-ct-logs-0.3 + (package + (name "rust-ct-logs") + (version "0.3.0") + (source + (origin + (method url-fetch) + (uri (crate-uri "ct-logs" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "1f0885ws3p49xh6dfgnhh7zjw9h4rhs9ljs8i9cnkhifzz98784f")))) + (build-system cargo-build-system) + (arguments + `(#:cargo-inputs + (("rust-sct" ,rust-sct-0.3)))) + (home-page "https://github.com/ctz/ct-logs") + (synopsis "Google's list of Certificate Transparency logs") + (description "This package contains Google's list of Certificate +Transparency logs for use with sct crate.") + (license (list license:asl2.0 license:isc license:expat)))) + (define-public rust-ctor-0.1 (package (name "rust-ctor") @@ -4607,6 +4925,85 @@ and arithmetic.") (description "Demo of proc-macro-hack.") (license (list license:expat license:asl2.0)))) +(define-public rust-derive-builder-0.5 + (package + (name "rust-derive-builder") + (version "0.5.1") + (source + (origin + (method url-fetch) + (uri (crate-uri "derive_builder" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "0fgl8dsigr7h70clxjq8xmsfc021w5ag262wfgcqv0ian1m8x6cc")))) + (build-system cargo-build-system) + (arguments + `(#:cargo-inputs + (("rust-compiletest-rs" ,rust-compiletest-rs-0.3) + ("rust-derive-builder-core" ,rust-derive-builder-core-0.2) + ("rust-env-logger" ,rust-env-logger-0.4) + ("rust-log" ,rust-log-0.3) + ("rust-quote" ,rust-quote-0.3) + ("rust-skeptic" ,rust-skeptic-0.9) + ("rust-syn" ,rust-syn-0.11)) + #:cargo-development-inputs + (("rust-env-logger" ,rust-env-logger-0.4) + ("rust-log" ,rust-log-0.3) + ("rust-pretty-assertions" ,rust-pretty-assertions-0.2) + ("rust-skeptic" ,rust-skeptic-0.9)))) + (home-page "https://github.com/colin-kiegel/rust-derive-builder") + (synopsis "Builder pattern for arbitrary structs") + (description "Rust macro to automatically implement the builder pattern +for arbitrary structs.") + (license (list license:expat license:asl2.0))) ) + +(define-public rust-derive-builder-core-0.2 + (package + (name "rust-derive-builder-core") + (version "0.2.0") + (source + (origin + (method url-fetch) + (uri (crate-uri "derive-builder-core" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "0mxpl1ja3l60w1v5vr3733hr5mcpds2hfl6shrmy3a2zkvp28pkk")))) + (build-system cargo-build-system) + (arguments + `(#:cargo-inputs + (("rust-log" ,rust-log-0.3) + ("rust-quote" ,rust-quote-0.3) + ("rust-syn" ,rust-syn-0.11)) + #:cargo-development-inputs + (("rust-pretty-assertions" ,rust-pretty-assertions-0.2)))) + (home-page "https://github.com/colin-kiegel/rust-derive-builder") + (synopsis "Internal helper library for the derive_builder crate") + (description "Internal helper library for the derive_builder crate.") + (license (list license:expat license:asl2.0)))) + +(define-public rust-derive-new-0.5 + (package + (name "rust-derive-new") + (version "0.5.8") + (source + (origin + (method url-fetch) + (uri (crate-uri "derive-new" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "1ncibp4jhpkym7namg3viqyw8hljd32n6abg64af8qjwrn91iwvi")))) + (build-system cargo-build-system) + (arguments + `(#:cargo-inputs + (("rust-proc-macro2" ,rust-proc-macro2-1.0) + ("rust-quote" ,rust-quote-1.0) + ("rust-syn" ,rust-syn-1.0)))) + (home-page "https://github.com/nrc/derive-new") + (synopsis "Simple constructor functions for structs and enums") + (description "`#[derive(new)]` implements simple constructor functions for +structs and enums.") + (license license:expat))) + (define-public rust-diff-0.1 (package (name "rust-diff") @@ -4660,6 +5057,24 @@ and arithmetic.") "This package provides a Rust text diffing and assertion library.") (license license:expat))) +(define-public rust-difference-1 + (package/inherit rust-difference-2.0 + (name "rust-difference") + (version "1.0.0") + (source + (origin + (method url-fetch) + (uri (crate-uri "difference" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "1a5v0b73z7vywbclll32wjsfkdgh6wn9prnq91z0d3lag4clsc5k")))) + (build-system cargo-build-system) + (arguments + `(#:cargo-inputs + (("rust-getopts" ,rust-getopts-0.2)) + #:cargo-development-inputs + (("rust-term" ,rust-term-0.2)))))) + (define-public rust-digest-0.8 (package (name "rust-digest") @@ -4870,6 +5285,26 @@ system libraries.") from macros.") (license license:expat))) +(define-public rust-docmatic-0.1 + (package + (name "rust-docmatic") + (version "0.1.2") + (source + (origin + (method url-fetch) + (uri (crate-uri "docmatic" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "1hx85n266lxswqxrbbinqlhi1qcnjgd4cc7v42abg72kmz7fnn4d")))) + (build-system cargo-build-system) + (arguments + `(#:cargo-inputs + (("rust-which" ,rust-which-2.0)))) + (home-page "https://github.com/assert-rs/docmatic") + (synopsis "Test Rust examples in your documentation") + (description "Test Rust examples in your documentation.") + (license license:expat))) + (define-public rust-docopt-1.1 (package (name "rust-docopt") @@ -4895,6 +5330,25 @@ from macros.") (description "Command line argument parsing.") (license (list license:expat license:unlicense)))) +(define-public rust-docopt-0.8 + (package/inherit rust-docopt-1.1 + (name "rust-docopt") + (version "0.8.3") + (source + (origin + (method url-fetch) + (uri (crate-uri "docopt" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "0jha611mffc2qnxvdl3pmglz07akl99lk1vihhb3nl1cd69x7b6q")))) + (arguments + `(#:cargo-inputs + (("rust-lazy-static" ,rust-lazy-static-1) + ("rust-regex" ,rust-regex-0.2) + ("rust-serde" ,rust-serde-1.0) + ("rust-serde-derive" ,rust-serde-derive-1.0) + ("rust-strsim" ,rust-strsim-0.6)))))) + (define-public rust-docopt-0.7 (package (inherit rust-docopt-1.1) @@ -4958,6 +5412,31 @@ from macros.") parameters, associated types, and type constraints.") (license (list license:expat license:asl2.0)))) +(define-public rust-dogged-0.2 + (package + (name "rust-dogged") + (version "0.2.0") + (source + (origin + (method url-fetch) + (uri (crate-uri "dogged" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "0yk5l6qqidl5y935x15gi9kkd6niim1wb64r1l7kdzl9jw8dyf16")))) + (build-system cargo-build-system) + (arguments + `(#:skip-build? #t + #:cargo-development-inputs + (("rust-rand" ,rust-rand-0.3)))) + (home-page "https://github.com/nikomatsakis/dogged") + (synopsis "Persistent vector, similar to Clojure") + (description "This package experimental persistent collections in Rust. +Based on a digit-indexed trie, as in Clojure. Supports @code{push()}, +@code{get()}, and @code{get_mut()} as its primitive operations for now. All +O(1)-in-practice, if not in theory, but obviously not as fast as a +non-persistent vector.") + (license (list license:asl2.0 license:expat)))) + (define-public rust-draw-state-0.8 (package (name "rust-draw-state") @@ -5175,6 +5654,30 @@ floating-point primitives to an @code{io::Write}.") inclusion of Windows resources in the most resilient fashion imaginable.") (license license:expat))) +(define-public rust-ena-0.13 + (package + (name "rust-ena") + (version "0.13.1") + (source + (origin + (method url-fetch) + (uri (crate-uri "ena" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "0dkggq0qwv140y2kjfd4spp77zi3v7vnpm4bfy7s7r4cla7xqi49")))) + (build-system cargo-build-system) + (arguments + `(#:cargo-inputs + (("rust-dogged" ,rust-dogged-0.2) + ("rust-log" ,rust-log-0.4) + ("rust-petgraph" ,rust-petgraph-0.4)))) + (home-page "https://github.com/rust-lang/ena") + (synopsis "Union-find, congruence closure, and other unification code") + (description "This package provides an implementation of union-find / +congruence-closure in Rust. It was extracted from rustc for independent +experimentation.") + (license (list license:expat license:asl2.0)))) + (define-public rust-encode-unicode-0.3 (package (name "rust-encode-unicode") @@ -5552,6 +6055,26 @@ is configured via an environment variable.") (("rust-regex" ,rust-regex-0.1) ("rust-log" ,rust-log-0.3)))))) +(define-public rust-environment-0.1 + (package + (name "rust-environment") + (version "0.1.1") + (source + (origin + (method url-fetch) + (uri (crate-uri "environment" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "1vh32mcxf3z8xaibwv751zj14d08nh7iwk1vqdj90rkq17i18jqz")))) + (build-system cargo-build-system) + (arguments + `(#:tests? #f)) ;; 3/6 tests fail due to missing file + (home-page "https://github.com/Freyskeyd/environment") + (synopsis "Helper to deal with environment variables") + (description "This package provides helper to deal with environment +variables.") + (license (list license:expat license:asl2.0)))) + (define-public rust-envmnt-0.6 (package (name "rust-envmnt") @@ -5804,6 +6327,27 @@ is configured via an environment variable.") (description "XML parser library written in C") (license license:expat))) +(define-public rust-expectest-0.9 + (package + (name "rust-expectest") + (version "0.9.2") + (source + (origin + (method url-fetch) + (uri (crate-uri "expectest" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "0f24q2a53x7sfmmrqjbwbk7pahzwkpd829fcr023kb7q5xnd6z4g")))) + (build-system cargo-build-system) + (arguments + `(#:cargo-inputs + (("rust-num-traits" ,rust-num-traits-0.1)))) + (home-page "https://github.com/zummenix/expectest") + (synopsis "Matchers and matcher functions for unit testing") + (description "This crate provides matchers and matcher functions for unit +testing.") + (license (list license:expat license:asl2.0)))) + (define-public rust-fake-simd-0.1 (package (name "rust-fake-simd") @@ -5900,6 +6444,23 @@ provides implementations for @code{HashMap} and @code{HashSet}.") (license (list license:asl2.0 license:expat)))) +(define-public rust-fallible-streaming-iterator-0.1 + (package + (name "rust-fallible-streaming-iterator") + (version "0.1.9") + (source + (origin + (method url-fetch) + (uri (crate-uri "fallible-streaming-iterator" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "0nj6j26p71bjy8h42x6jahx1hn0ng6mc2miwpgwnp8vnwqf4jq3k")))) + (build-system cargo-build-system) + (home-page "https://github.com/sfackler/fallible-streaming-iterator") + (synopsis "Fallible streaming iteration") + (description "Fallible streaming iteration") + (license (list license:expat license:asl2.0)))) + (define-public rust-fern-0.5 (package (name "rust-fern") @@ -6465,6 +7026,31 @@ values to other threads.") "This package provides low level binding for FreeType font library.") (license license:expat))) +(define-public rust-fs2-0.4 + (package + (name "rust-fs2") + (version "0.4.3") + (source + (origin + (method url-fetch) + (uri (crate-uri "fs2" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "04v2hwk7035c088f19mfl5b1lz84gnvv2hv6m935n0hmirszqr4m")))) + (build-system cargo-build-system) + (arguments + `(#:tests? #f ;; "#![feature] may not be used on stable release channel" + #:cargo-inputs + (("rust-libc" ,rust-libc-0.2) + ("rust-winapi" ,rust-winapi-0.3)) + #:cargo-development-inputs + (("rust-tempdir" ,rust-tempdir-0.3)))) + (home-page "https://github.com/danburkert/fs2-rs") + (synopsis "Cross-platform file locks and file duplication") + (description "This package provides cross-platform file locks and file +duplication.") + (license (list license:expat license:asl2.0)))) + (define-public rust-fs-extra-1.1 (package (name "rust-fs-extra") @@ -7099,6 +7685,25 @@ futures-rs library.") (description "Tools for working with tasks.") (license (list license:expat license:asl2.0)))) +(define-public rust-futures-timer-0.1 + (package + (name "rust-futures-timer") + (version "0.1.1") + (source + (origin + (method url-fetch) + (uri (crate-uri "futures-timer" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "0hw0nlyrq5an6l6y8md1rg6r380zrddvmh9cg0h64xfwnvlxzkm5")))) + (build-system cargo-build-system) + (arguments + `(#:cargo-inputs (("rust-futures" ,rust-futures-0.1)))) + (home-page "https://github.com/async-rs/futures-timer") + (synopsis "Timeouts for futures") + (description "Timeouts for futures.") + (license (list license:expat license:asl2.0)))) + (define-public rust-futures-util-0.3 (package (name "rust-futures-util") @@ -8716,6 +9321,49 @@ standard printing of search results, similar to grep itself.") of gzip files based on the gzip header implementation in the @code{flate2} crate.") (license (list license:expat license:asl2.0)))) +(define-public rust-h2-0.1 + (package + (name "rust-h2") + (version "0.1.26") + (source + (origin + (method url-fetch) + (uri (crate-uri "h2" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "0qn457y8xh03p7c7cpk76r22gqpyqxc58g5022j3iya7d0j4rcx5")))) + (build-system cargo-build-system) + (arguments + `(#:skip-build? #t ;; TODO missing indirect dependency + #:cargo-inputs + (("rust-byteorder" ,rust-byteorder-1.3) + ("rust-bytes" ,rust-bytes-0.4) + ("rust-fnv" ,rust-fnv-1.0) + ("rust-futures" ,rust-futures-0.1) + ("rust-http" ,rust-http-0.1) + ("rust-indexmap" ,rust-indexmap-1.0) + ("rust-log" ,rust-log-0.4) + ("rust-slab" ,rust-slab-0.4) + ("rust-string" ,rust-string-0.2) + ("rust-tokio-io" ,rust-tokio-io-0.1)) + #:cargo-development-inputs + (("rust-env-logger" ,rust-env-logger-0.5) + ("rust-hex" ,rust-hex-0.2) + ("rust-quickcheck" ,rust-quickcheck-0.4) + ("rust-rand" ,rust-rand-0.3) + ;;("rust-rustls" ,rust-rustls-0.12) requires 0.5 + ("rust-serde" ,rust-serde-1.0) + ("rust-serde-json" ,rust-serde-json-1.0) + ("rust-tokio" ,rust-tokio-0.1) + ("rust-tokio-rustls" ,rust-tokio-rustls-0.12) + ("rust-walkdir" ,rust-walkdir-1.0) + ("rust-webpki" ,rust-webpki-0.21) + ("rust-webpki-roots" ,rust-webpki-roots-0.17)))) + (home-page "https://github.com/hyperium/h2") + (synopsis "HTTP/2.0 client and server") + (description "This packages provides a HTTP/2.0 client and server.") + (license license:expat))) + (define-public rust-half-1.3 (package (name "rust-half") @@ -8966,6 +9614,19 @@ hexadecimal representation.") (base32 "0xsdcjiik5j750j67zk42qdnmm4ahirk3gmkmcqgq7qls2jjcl40")))))) +(define-public rust-hex-0.2 + (package + (inherit rust-hex-0.4) + (name "rust-hex") + (version "0.2.0") + (source + (origin + (method url-fetch) + (uri (crate-uri "hex" version)) + (file-name (string-append name "-" version ".crate")) + (sha256 + (base32 "1ajkw40qzn2ygnqjj9w584f6l31wi318258n84pn2hax8la2i8nn")))))) + (define-public rust-hex-literal-0.2 (package (name "rust-hex-literal") @@ -9109,9 +9770,41 @@ compile time.") "High-performance browser-grade HTML5 parser.") (license (list license:asl2.0 license:expat)))) -(define-public rust-http-0.1 +(define-public rust-http-0.2 (package (name "rust-http") + (version "0.2.1") + (source + (origin + (method url-fetch) + (uri (crate-uri "http" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "1y827q7j0gvs8z2x12biaik9db6nb902lpqv889cbcj84sbnkm98")))) + (build-system cargo-build-system) + (arguments + `(#:skip-build? #t ;; FIXME requires Rust >= 1.39 for building + #:cargo-inputs + (("rust-bytes" ,rust-bytes-0.5) + ("rust-fnv" ,rust-fnv-1.0) + ("rust-itoa" ,rust-itoa-0.4)) + #:cargo-development-inputs + (("rust-doc-comment" ,rust-doc-comment-0.3) + ("rust-indexmap" ,rust-indexmap-1.0) + ("rust-quickcheck" ,rust-quickcheck-0.9) + ("rust-rand" ,rust-rand-0.7) + ("rust-seahash" ,rust-seahash-3.0) + ("rust-serde" ,rust-serde-1.0) + ("rust-serde-json" ,rust-serde-json-1.0)))) + (home-page "https://github.com/hyperium/http") + (synopsis "Set of types for representing HTTP requests and responses") + (description "This package provides a set of types for representing HTTP +requests and responses.") + (license (list license:asl2.0 license:expat)))) + +(define-public rust-http-0.1 + (package/inherit rust-http-0.2 + (name "rust-http") (version "0.1.17") (source (origin @@ -9122,7 +9815,6 @@ compile time.") (sha256 (base32 "06icxvrd26r6s7dzjavja7r47hgjb9851wblqh8frxnsy3q29lzf")))) - (build-system cargo-build-system) (arguments `(#:skip-build? #t #:cargo-inputs @@ -9135,13 +9827,49 @@ compile time.") ("rust-rand" ,rust-rand-0.4) ("rust-seahash" ,rust-seahash-3.0) ("rust-serde" ,rust-serde-1.0) - ("rust-serde-json" ,rust-serde-json-1.0)))) - (home-page "https://github.com/hyperium/http") - (synopsis "Set of types for representing HTTP requests and responses") - (description - "This package provides a set of types for representing HTTP -requests and responses.") - (license (list license:asl2.0 license:expat)))) + ("rust-serde-json" ,rust-serde-json-1.0)))))) + +(define-public rust-http-body-0.3 + (package + (name "rust-http-body") + (version "0.3.1") + (source + (origin + (method url-fetch) + (uri (crate-uri "http-body" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "06qi0ni45lb92w3ml260c0bxbq5zd4snjmz0a9k69xq6021zzm8k")))) + (build-system cargo-build-system) + (arguments + `(#:skip-build? #t ;; FIXME requires Rust >= 1.39 for building + #:cargo-inputs + (("rust-bytes" ,rust-bytes-0.5) + ("rust-http" ,rust-http-0.2)))) + (home-page "https://github.com/hyperium/http-body") + (synopsis "Asynchronous, streaming, HTTP request or response body") + (description "Trait representing an asynchronous, streaming, HTTP request +or response body.") + (license license:expat))) + +(define-public rust-http-body-0.1 + (package/inherit rust-http-body-0.3 + (name "rust-http-body") + (version "0.1.0") + (source + (origin + (method url-fetch) + (uri (crate-uri "http-body" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "0b99404k4mw6a92hvyr0qwzkqv4f866ykg0x7913limjq5cwhhb7")))) + (build-system cargo-build-system) + (arguments + `(#:cargo-inputs + (("rust-bytes" ,rust-bytes-0.4) + ("rust-futures" ,rust-futures-0.1) + ("rust-http" ,rust-http-0.1) + ("rust-tokio-buf" ,rust-tokio-buf-0.1)))))) (define-public rust-http-req-0.5 (package @@ -9239,6 +9967,89 @@ SystemTime}}.") (base32 "057ilhy6vc9iqhhby5ymh45m051pgxwq2z437gwkbnqhw7rfb9rw")))))) +(define-public rust-hyper-0.12 + (package + (name "rust-hyper") + (version "0.12.35") + (source + (origin + (method url-fetch) + (uri (crate-uri "hyper" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "1xnm8zi4bdjqhlnx3238kx8yjf29jjd1ww54apcql7wf8g8nxglx")))) + (build-system cargo-build-system) + (arguments + `(#:skip-build? #t ;; fails due to some missing example file + #:cargo-inputs + (("rust-bytes" ,rust-bytes-0.4) + ("rust-futures" ,rust-futures-0.1) + ("rust-futures-cpupool" ,rust-futures-cpupool-0.1) + ("rust-h2" ,rust-h2-0.1) + ("rust-http" ,rust-http-0.1) + ("rust-http-body" ,rust-http-body-0.1) + ("rust-httparse" ,rust-httparse-1.3) + ("rust-iovec" ,rust-iovec-0.1) + ("rust-itoa" ,rust-itoa-0.4) + ("rust-log" ,rust-log-0.4) + ("rust-net2" ,rust-net2-0.2) + ("rust-time" ,rust-time-0.1) + ("rust-tokio" ,rust-tokio-0.1) + ("rust-tokio-buf" ,rust-tokio-buf-0.1) + ("rust-tokio-executor" ,rust-tokio-executor-0.1) + ("rust-tokio-io" ,rust-tokio-io-0.1) + ("rust-tokio-reactor" ,rust-tokio-reactor-0.1) + ("rust-tokio-tcp" ,rust-tokio-tcp-0.1) + ("rust-tokio-threadpool" ,rust-tokio-threadpool-0.1) + ("rust-tokio-timer" ,rust-tokio-timer-0.2) + ("rust-want" ,rust-want-0.2)) + #:cargo-development-inputs + (("rust-futures-timer" ,rust-futures-timer-0.1) + ("rust-num-cpus" ,rust-num-cpus-1.10) + ("rust-rustc-version" ,rust-rustc-version-0.2) + ("rust-pretty-env-logger" ,rust-pretty-env-logger-0.3) + ("rust-serde" ,rust-serde-1.0) + ("rust-serde-derive" ,rust-serde-derive-1.0) + ("rust-serde-json" ,rust-serde-json-1.0) + ("rust-spmc" ,rust-spmc-0.3) + ("rust-tokio-fs" ,rust-tokio-fs-0.1) + ("rust-tokio-mockstream" ,rust-tokio-mockstream-1) + ("rust-url" ,rust-url-1.7)))) + (home-page "https://hyper.rs") + (synopsis "Fast and correct HTTP library") + (description "This package provides a fast and correct HTTP library.") + (license license:expat)) ) + +(define-public rust-hyper-tls-0.3 + (package + (name "rust-hyper-tls") + (version "0.3.2") + (source + (origin + (method url-fetch) + (uri (crate-uri "hyper-tls" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "0kqp4sz8613j6nv375wfj3gh95ff4nb6a3rb1f2vbx0almm0v01s")))) + (build-system cargo-build-system) + (native-inputs + `(("pkg-config" ,pkg-config))) + (inputs + `(("openssl" ,openssl))) + (arguments + `(#:cargo-inputs + (("rust-bytes" ,rust-bytes-0.4) + ("rust-futures" ,rust-futures-0.1) + ("rust-hyper" ,rust-hyper-0.12) + ("rust-native-tls" ,rust-native-tls-0.2) + ("rust-tokio-io" ,rust-tokio-io-0.1)) + #:cargo-development-inputs + (("rust-tokio" ,rust-tokio-0.1)))) + (home-page "https://hyper.rs") + (synopsis "Default TLS implementation for use with hyper") + (description "Default TLS implementation for use with hyper") + (license (list license:expat license:asl2.0)))) + (define-public rust-idna-0.2 (package (name "rust-idna") @@ -10201,6 +11012,67 @@ currently supports parsing (fully conformant parser), formatting and comparing language tags.") (license license:expat))) +(define-public rust-lalrpop-0.17 + (package + (name "rust-lalrpop") + (version "0.17.2") + (source + (origin + (method url-fetch) + (uri (crate-uri "lalrpop" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "1nv7ma8cgw3r1fcma7gy06fwwlpl4fkz91mxv5kjhiaxwyc3dp34")))) + (build-system cargo-build-system) + (arguments + `(#:cargo-inputs + (("rust-ascii-canvas" ,rust-ascii-canvas-2) + ("rust-atty" ,rust-atty-0.2) + ("rust-bit-set" ,rust-bit-set-0.5) + ("rust-diff" ,rust-diff-0.1) + ("rust-docopt" ,rust-docopt-1.1) + ("rust-ena" ,rust-ena-0.13) + ("rust-itertools" ,rust-itertools-0.8) + ("rust-lalrpop-util" ,rust-lalrpop-util-0.17) + ("rust-petgraph" ,rust-petgraph-0.4) + ("rust-regex" ,rust-regex-1.3) + ("rust-regex-syntax" ,rust-regex-syntax-0.6) + ("rust-serde" ,rust-serde-1.0) + ("rust-serde-derive" ,rust-serde-derive-1.0) + ("rust-sha2" ,rust-sha2-0.8) + ("rust-string-cache" ,rust-string-cache-0.7) + ("rust-term" ,rust-term-0.5) + ("rust-unicode-xid" ,rust-unicode-xid-0.2)) + #:cargo-development-inputs + (("rust-rand" ,rust-rand-0.6)))) + (home-page "https://github.com/lalrpop/lalrpop") + (synopsis "Convenient LR(1) parser generator for Rust") + (description "LALRPOP is a Rust parser generator framework with usability +as its primary goal. You should be able to write compact, DRY, readable +grammars.") + (license (list license:asl2.0 license:expat)))) + +(define-public rust-lalrpop-util-0.17 + (package + (name "rust-lalrpop-util") + (version "0.17.2") + (source + (origin + (method url-fetch) + (uri (crate-uri "lalrpop-util" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "0z4bjn3g9232n1im5p6mn9mwlvw5aj5iac6hbjmljqxkhf3d2xy2")))) + (build-system cargo-build-system) + (arguments + `(#:cargo-inputs + (("rust-regex" ,rust-regex-1.3)))) + (home-page "https://github.com/lalrpop/lalrpop") + (synopsis "Runtime library for parsers generated by LALRPOP") + (description "THis package provides the runtime library for parsers +generated by LALRPOP.") + (license (list license:asl2.0 license:expat)))) + (define-public rust-lazy-static-1.4 (package (name "rust-lazy-static") @@ -10372,6 +11244,26 @@ values of all the exported APIs match the platform that libc is compiled for.") (license (list license:expat license:asl2.0)))) +(define-public rust-libc-print-0.1 + (package + (name "rust-libc-print") + (version "0.1.11") + (source + (origin + (method url-fetch) + (uri (crate-uri "libc-print" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "1sh4l815w7zxg8w17fvwj63y421sjqxxrdamzwyvg90n6mr70phv")))) + (build-system cargo-build-system) + (arguments + `(#:cargo-inputs (("rust-libc" ,rust-libc-0.2)))) + (home-page "https://github.com/mmastrac/rust-libc-print") + (synopsis "Println! and eprintln! without stdlib") + (description "This package provices @code{println!} and @code{eprintln!} +macros on libc without stdlib.") + (license (list license:asl2.0 license:expat)))) + (define-public rust-libgit2-sys-0.10 (package (name "rust-libgit2-sys") @@ -10561,6 +11453,32 @@ functions and static variables these libraries contain.") (license (list license:asl2.0 license:expat)))) +(define-public rust-libsqlite3-sys-0.15 + (package + (name "rust-libsqlite3-sys") + (version "0.15.0") + (source + (origin + (method url-fetch) + (uri (crate-uri "libsqlite3-sys" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "104n0s4f46zprppjq6y82y0wjh1r2cgwzw26w914yj30rizy1cbj")))) + (build-system cargo-build-system) + (inputs + `(("sqlite" ,sqlite))) + (arguments + `(#:cargo-inputs + ;; build dependencies + (("rust-bindgen" ,rust-bindgen-0.49) + ("rust-cc" ,rust-cc-1.0) + ("rust-pkg-config" ,rust-pkg-config-0.3) + ("rust-vcpkg" ,rust-vcpkg-0.2)))) + (home-page "https://github.com/rusqlite/rusqlite") + (synopsis "Native bindings to the libsqlite3 library") + (description "Native bindings to the libsqlite3 library") + (license license:expat))) + (define-public rust-libz-sys-1.0 (package (name "rust-libz-sys") @@ -10917,9 +11835,57 @@ by inspecting the system for user preference.") `(#:cargo-inputs (("rust-log" ,rust-log-0.4)))))) -(define-public rust-loom-0.1 +(define-public rust-loom-0.3 (package (name "rust-loom") + (version "0.3.2") + (source + (origin + (method url-fetch) + (uri (crate-uri "loom" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "10z738ig6vgvwc2kxjhjdr5b29p3ribk5f6gg6ak0xjxhjb4cnkc")))) + (build-system cargo-build-system) + (arguments + `(#:skip-build? #t ;; TODO fails due to unresolved import + #:cargo-inputs + (("rust-cfg-if" ,rust-cfg-if-0.1) + ("rust-futures-util" ,rust-futures-util-0.3) + ("rust-generator" ,rust-generator-0.6) + ("rust-scoped-tls" ,rust-scoped-tls-0.1) + ("rust-serde" ,rust-serde-1.0) + ("rust-serde-json" ,rust-serde-json-1.0)))) + (home-page "https://github.com/tokio-rs/loom") + (synopsis "Permutation testing for concurrent code") + (description "Permutation testing for concurrent code") + (license license:expat))) + +(define-public rust-loom-0.2 + (package/inherit rust-loom-0.3 + (name "rust-loom") + (version "0.2.13") + (source + (origin + (method url-fetch) + (uri (crate-uri "loom" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "0qwvwbpnxff5m6647v9rc9i6ak8ral4jy0br5xx1s9a5zcd3xddh")))) + (build-system cargo-build-system) + (arguments + `(#:cargo-inputs + (("rust-cfg-if" ,rust-cfg-if-0.1) + ("rust-futures-util" ,rust-futures-util-0.3) + ("rust-generator" ,rust-generator-0.6) + ("rust-scoped-tls" ,rust-scoped-tls-0.1) + ("rust-serde" ,rust-serde-1.0) + ("rust-serde-test" ,rust-serde-test-1.0) + ("rust-serde-json" ,rust-serde-json-1.0)))))) + +(define-public rust-loom-0.1 + (package/inherit rust-loom-0.3 + (name "rust-loom") (version "0.1.1") (source (origin @@ -10930,7 +11896,6 @@ by inspecting the system for user preference.") (sha256 (base32 "1jmp5mffwwyqgp914cwz92ij2s6vk1hsnkvgndvzw74xrcfraibj")))) - (build-system cargo-build-system) (arguments `(#:cargo-inputs (("rust-cfg-if" ,rust-cfg-if-0.1) @@ -10939,11 +11904,29 @@ by inspecting the system for user preference.") ("rust-scoped-tls" ,rust-scoped-tls-0.1) ("rust-serde" ,rust-serde-1.0) ("rust-serde-derive" ,rust-serde-derive-1.0) - ("rust-serde-json" ,rust-serde-json-1.0)))) - (home-page "https://github.com/tokio-rs/loom") - (synopsis "Model checker for concurrent code") - (description "Model checker for concurrent code.") - (license license:expat))) + ("rust-serde-json" ,rust-serde-json-1.0)))))) + +(define-public rust-lru-cache-0.1 + (package + (name "rust-lru-cache") + (version "0.1.2") + (source + (origin + (method url-fetch) + (uri (crate-uri "lru-cache" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "071viv6g2p3akwqmfb3c8vsycs5n7kr17b70l7la071jv0d4zqii")))) + (build-system cargo-build-system) + (arguments + `(#:cargo-inputs + (("rust-heapsize" ,rust-heapsize-0.4) + ("rust-linked-hash-map" ,rust-linked-hash-map-0.5)))) + (home-page "https://github.com/contain-rs/lru-cache") + (synopsis "Cache that holds a limited number of key-value pairs") + (description "This package provides a cache that holds a limited number of +key-value pairs.") + (license (list license:expat license:asl2.0)))) (define-public rust-lscolors-0.6 (package @@ -11095,6 +12078,24 @@ implementation of LZMA and xz stream encoding/decoding.") "This package provides a collection of great and ubiqutitous macros.") (license (list license:asl2.0 license:expat)))) +(define-public rust-mach-o-sys-0.1 + (package + (name "rust-mach-o-sys") + (version "0.1.1") + (source + (origin + (method url-fetch) + (uri (crate-uri "mach-o-sys" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "09l8p7nmzq37450x2h6nb7dzg1sk6dk36a5rkcrcy81zm21lb19y")))) + (build-system cargo-build-system) + (home-page "https://github.com/fitzgen/mach_o_sys") + (synopsis "Bindings to the OSX mach-o system library") + (description "This package provides bindings to the OSX mach-o system +library") + (license (list license:asl2.0 license:expat)))) + (define-public rust-make-cmd-0.1 (package (name "rust-make-cmd") @@ -11518,6 +12519,30 @@ for Rust structs.") "1cvm2z7dy138s302ii7wlzcxbka5a8yfl5pl5di7lbdnw9hw578g")))) (arguments `(#:skip-build? #t)))) +(define-public rust-memsec-0.5 + (package + (name "rust-memsec") + (version "0.5.7") + (source + (origin + (method url-fetch) + (uri (crate-uri "memsec" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "13ir50j549gdz94pds1i7ljnk14d66q5x91s11hncm1pih7jif8c")))) + (build-system cargo-build-system) + (arguments + `(#:cargo-inputs + (("rust-getrandom" ,rust-getrandom-0.1) + ("rust-libc" ,rust-libc-0.2) + ("rust-mach-o-sys" ,rust-mach-o-sys-0.1) + ("rust-winapi" ,rust-winapi-0.3)))) + (home-page "https://github.com/quininer/memsec") + (synopsis "Rust implementation of libsodium/utils") + (description "This package provides a Rust implementation of +@code{libsodium/utils}.") + (license license:expat))) + (define-public rust-metadeps-1.1 (package (name "rust-metadeps") @@ -12161,6 +13186,79 @@ types as proposed in RFC 1158.") (license (list license:asl2.0 license:expat)))) +(define-public rust-nettle-7 + (package + (name "rust-nettle") + (version "7.0.0") + (source + (origin + (method url-fetch) + (uri (crate-uri "nettle" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "1n6dwy9zba8853bmxzhwaashd3np0wxpx0pj43brm0hb8n2sxbxi")) + (patches (search-patches "rust-nettle-disable-vendor.patch")))) + (build-system cargo-build-system) + (native-inputs + `(("pkg-config" ,pkg-config))) + (inputs + `(("clang" ,clang) + ("gmp" ,gmp) + ("nettle" ,nettle))) + (arguments + `(#:skip-build? #t ;; provides nothing, has no tests + #:cargo-inputs + (("rust-getrandom" ,rust-getrandom-0.1) + ("rust-libc" ,rust-libc-0.2) + ("rust-nettle-sys" ,rust-nettle-sys-2) + ("rust-thiserror" ,rust-thiserror-1.0)) + #:cargo-development-inputs + (("rust-bindgen" ,rust-bindgen-0.51) + ("rust-pkg-config" ,rust-pkg-config-0.3)) + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'set-missing-env-vars + (lambda* (#:key inputs #:allow-other-keys) + ;; FIXME: why do we need to set this? + (setenv "LIBCLANG_PATH" + (string-append (assoc-ref inputs "clang") "/lib")) + #t))))) + (home-page "https://gitlab.com/sequoia-pgp/nettle-rs") + (synopsis "Rust bindings for the Nettle cryptographic library") + (description "This package provides Rust bindings for the Nettle +cryptographic library.") + (license (list license:lgpl3 license:gpl2 license:gpl3)))) + +(define-public rust-nettle-sys-2 + (package + (name "rust-nettle-sys") + (version "2.0.4") + (source + (origin + (method url-fetch) + (uri (crate-uri "nettle-sys" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "1yq1w6dlcmg89x529i7s20j29afdhgim7qnsa7978fszzwrr6qmq")) + (patches (search-patches "rust-nettle-sys-disable-vendor.patch")))) + (build-system cargo-build-system) + (native-inputs + `(("clang" ,clang) + ("pkg-config" ,pkg-config))) + (inputs + `(("nettle", nettle))) + (arguments + `(#:skip-build? #t + #:cargo-development-inputs + (("rust-bindgen" ,rust-bindgen-0.51) + ("rust-pkg-config" ,rust-pkg-config-0.3)))) + (home-page "https://gitlab.com/sequoia-pgp/nettle-sys") + (synopsis "Low-level Rust bindings for the Nettle cryptographic library") + (description "This package provides low-level Rust bindings for the Nettle +cryptographic library.") + (license ;; licensed under either of these, at your option + (list license:lgpl3 license:gpl2 license:gpl3)))) + (define-public rust-new-debug-unreachable-1.0 (package (name "rust-new-debug-unreachable") @@ -13876,6 +14974,36 @@ normally prevent moving a type that has been borrowed from.") (description "This package provides FFI bindings to libgtk-3.") (license license:expat))) +(define-public rust-parity-tokio-ipc-0.4 + (package + (name "rust-parity-tokio-ipc") + (version "0.4.0") + (source + (origin + (method url-fetch) + (uri (crate-uri "parity-tokio-ipc" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "1gzifrrpiw78p6dq9ax64vhffc4h6mwg6jazpfgkz8zy0jjzwmqy")))) + (build-system cargo-build-system) + (arguments + `(#:cargo-inputs + (("rust-bytes" ,rust-bytes-0.4) + ("rust-futures" ,rust-futures-0.1) + ("rust-libc" ,rust-libc-0.2) + ("rust-log" ,rust-log-0.4) + ("rust-mio-named-pipes" ,rust-mio-named-pipes-0.1) + ("rust-miow" ,rust-miow-0.3) + ("rust-rand" ,rust-rand-0.7) + ("rust-tokio" ,rust-tokio-0.1) + ("rust-tokio-named-pipes" ,rust-tokio-named-pipes-0.1) + ("rust-tokio-uds" ,rust-tokio-uds-0.2) + ("rust-winapi" ,rust-winapi-0.3)))) + (home-page "https://github.com/nikvolf/parity-tokio-ipc") + (synopsis "Interprocess communication library for tokio") + (description "Interprocess communication library for tokio.") + (license (list license:expat license:asl2.0)))) + (define-public rust-parity-wasm-0.41 (package (name "rust-parity-wasm") @@ -15134,6 +16262,29 @@ interactive applications.") "This package provides a library for window abstraction.") (license license:expat))) +(define-public rust-pin-project-lite-0.1 + (package + (name "rust-pin-project-lite") + (version "0.1.4") + (source + (origin + (method url-fetch) + (uri (crate-uri "pin-project-lite" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "1bljczwz9yyb6jskjhbkilcbdg7v1mhfwzp2mxknzf7v1isl8y13")))) + (build-system cargo-build-system) + (arguments + `(#:cargo-development-inputs + (("rust-rustversion" ,rust-rustversion-1.0) + ("rust-trybuild" ,rust-trybuild-1.0)))) + (home-page "https://github.com/taiki-e/pin-project-lite") + (synopsis "Lightweight version of pin-project written with declarative +macros") + (description "This package provides a lightweight version of pin-project +written with declarative macros.") + (license (list license:asl2.0 license:expat)))) + (define-public rust-pkg-config-0.3 (package (name "rust-pkg-config") @@ -15498,6 +16649,27 @@ dependency to expose a precomputed hash.") replacements, adding colorful diffs.") (license (list license:expat license:asl2.0)))) +(define-public rust-pretty-assertions-0.2 + (package + (name "rust-pretty-assertions") + (version "0.2.1") + (source + (origin + (method url-fetch) + (uri (crate-uri "pretty-assertions" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "1b3nv70i16737w3qkk1q5vqswwnb19znz8r9v2kcg1qyhh3h0l8x")))) + (build-system cargo-build-system) + (arguments + `(#:cargo-inputs + (("rust-difference" ,rust-difference-1)))) + (home-page "https://github.com/colin-kiegel/rust-pretty-assertions") + (synopsis "Colorful diffs for `assert_eq!` and `assert_ne!`") + (description "Overwrite `assert_eq!` and `assert_ne!` with drop-in +replacements, adding colorful diffs.") + (license (list license:expat license:asl2.0)))) + (define-public rust-pretty-env-logger-0.3 (package (name "rust-pretty-env-logger") @@ -15523,6 +16695,32 @@ replacements, adding colorful diffs.") (description "This package provides a visually pretty env_logger.") (license (list license:expat license:asl2.0)))) +(define-public rust-prettytable-rs-0.8 + (package + (name "rust-prettytable-rs") + (version "0.8.0") + (source + (origin + (method url-fetch) + (uri (crate-uri "prettytable-rs" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "0bmcsxkcy94hi0jz5db0fz137w5aaf17z2j1ryn2vyh400blpl0g")))) + (build-system cargo-build-system) + (arguments + `(#:cargo-inputs + (("rust-atty" ,rust-atty-0.2) + ("rust-csv" ,rust-csv-1.1) + ("rust-encode-unicode" ,rust-encode-unicode-0.3) + ("rust-lazy-static" ,rust-lazy-static-1) + ("rust-term" ,rust-term-0.5) + ("rust-unicode-width" ,rust-unicode-width-0.1)))) + (home-page "https://github.com/phsym/prettytable-rs") + (synopsis "Library for printing pretty formatted tables in terminal") + (description "This package provides a library for printing pretty +formatted tables in terminal.") + (license license:bsd-3))) + (define-public rust-proc-macro-error-0.4 (package (name "rust-proc-macro-error") @@ -15916,6 +17114,23 @@ stack pointer and inspect the properties of the stack.") "This package provides a pull parser for CommonMark.") (license license:expat))) +(define-public rust-pulldown-cmark-0.0.8 + (package/inherit rust-pulldown-cmark-0.4 + (name "rust-pulldown-cmark") + (version "0.0.8") + (source + (origin + (method url-fetch) + (uri (crate-uri "pulldown-cmark" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "0hbg68h1w48cp72n95hjmbm70jrb5khc9vipcmjng83wjaxxfn0h")))) + (build-system cargo-build-system) + (arguments + `(#:cargo-inputs + (("rust-bitflags" ,rust-bitflags-0.5) + ("rust-getopts" ,rust-getopts-0.2)))))) + (define-public rust-quantiles-0.7 (package (name "rust-quantiles") @@ -17025,6 +18240,28 @@ accessors.") ("rust-serde" ,rust-serde-1.0) ("rust-serde-derive" ,rust-serde-derive-1.0)))))) +(define-public rust-rayon-0.8 + (package/inherit rust-rayon-1.3 + (name "rust-rayon") + (version "0.8.2") + (source + (origin + (method url-fetch) + (uri (crate-uri "rayon" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "1j2l9x98ma63qkh9w8zik0vcpwqf9cvc2ynh66ibjp36nq4gw55n")))) + (arguments + `(#:skip-build? #t + #:cargo-inputs + (("rust-rayon-core" ,rust-rayon-core-1.7)) + #:cargo-development-inputs + (("rust-compiletest-rs" ,rust-compiletest-rs-0.2) + ("rust-docopt" ,rust-docopt-0.7) + ("rust-futures" ,rust-futures-0.1) + ("rust-rand" ,rust-rand-0.3) + ("rust-rustc-serialize" ,rust-rustc-serialize-0.3)))))) + (define-public rust-rayon-core-1.7 (package (name "rust-rayon-core") @@ -17620,6 +18857,56 @@ uses finite automata and guarantees linear time matching on all inputs.") (license (list license:asl2.0 license:expat)))) +(define-public rust-ring-0.16 + (package + (name "rust-ring") + (version "0.16.12") + (source + (origin + (method url-fetch) + (uri (crate-uri "ring" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "033sb54dlmiqdivc8v9ykkq3v08lzy0syjf5k1nag2gfcknai98v")))) + (build-system cargo-build-system) + (arguments + `(#:cargo-inputs + (("rust-lazy-static" ,rust-lazy-static-1.3) + ("rust-libc" ,rust-libc-0.2) + ("rust-spin" ,rust-spin-0.5) + ("rust-untrusted" ,rust-untrusted-0.7) + ("rust-web-sys" ,rust-web-sys-0.3) + ("rust-winapi" ,rust-winapi-0.3) + ;; build dependencies + ("rust-cc" ,rust-cc-1.0)) + #:cargo-development-inputs + (("rust-libc" ,rust-libc-0.2) + ("rust-wasm-bindgen-test" ,rust-wasm-bindgen-test-0.2)))) + (home-page "https://github.com/briansmith/ring") + (synopsis "Safe, fast, small crypto using Rust") + (description "This package provided safe, fast, small crypto using Rust.") + (license (list license:isc license:openssl)))) + +(define-public rust-ring-0.13 + (package/inherit rust-ring-0.16 + (name "rust-ring") + (version "0.13.5") + (source + (origin + (method url-fetch) + (uri (crate-uri "ring" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "12j580by6a438i5mw3136cj3lxylywymdr5p8rqlkwrm5s5bck9c")))) + (build-system cargo-build-system) + (arguments + `(#:cargo-inputs + (("rust-lazy-static" ,rust-lazy-static-1) + ("rust-libc" ,rust-libc-0.2) + ("rust-untrusted" ,rust-untrusted-0.6) + ;; build dependencies + ("rust-cc" ,rust-cc-1.0)))))) + (define-public rust-ron-0.4 (package (name "rust-ron") @@ -17649,6 +18936,98 @@ uses finite automata and guarantees linear time matching on all inputs.") (license (list license:asl2.0 license:expat)))) +(define-public rust-rspec-1 + (package + (name "rust-rspec") + (version "1.0.0-beta.4") + (source + (origin + (method url-fetch) + (uri (crate-uri "rspec" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "1abfzwkbxlwahb243k8d3fp6i135lx1aqmbfl79w9zlpng182ndk")))) + (build-system cargo-build-system) + (arguments + `(#:skip-build? #t ;; TODO unpackaged dev-dependencies + #:cargo-inputs + (("rust-colored" ,rust-colored-1.9) + ("rust-derive-new" ,rust-derive-new-0.5) + ("rust-derive-builder" ,rust-derive-builder-0.5) + ("rust-expectest" ,rust-expectest-0.9) + ("rust-rayon" ,rust-rayon-0.8)) + #:cargo-development-inputs + (("rust-clippy" ,rust-clippy-0.0)))) ;; requires 0.0.153 + (home-page "https://github.com/rust-rspec/rspec") + (synopsis "Write Rspec-like tests with stable rust") + (description "This package helps writing Rspec-like tests with stable +rust.") + (license license:mpl2.0))) + +(define-public rust-rpassword-4 + (package + (name "rust-rpassword") + (version "4.0.3") + (source + (origin + (method url-fetch) + (uri (crate-uri "rpassword" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "0jnl8wzmdazkpzqs0vsw0n0vm0v4b8chqifd6s84nl9w2ybhx7ym")))) + (build-system cargo-build-system) + (arguments + `(#:cargo-inputs + (("rust-libc" ,rust-libc-0.2) + ("rust-winapi" ,rust-winapi-0.3)))) + (home-page "https://github.com/conradkleinespel/rpassword") + (synopsis "Read passwords in Rust console applications") + (description "This package provides a crate for reading passwords in +console applications.") + (license license:asl2.0))) + +(define-public rust-rusqlite-0.19 + (package + (name "rust-rusqlite") + (version "0.19.0") + (source + (origin + (method url-fetch) + (uri (crate-uri "rusqlite" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "19xq7s0kzhlljm3hqx0vidr91ia8hl49r4m5gwdj9dyywgks5g3f")))) + (build-system cargo-build-system) + (inputs + `(("sqlite" ,sqlite))) + (arguments + `(#:cargo-inputs + (("rust-bitflags" ,rust-bitflags-1) + ("rust-byteorder" ,rust-byteorder-1.3) + ("rust-chrono" ,rust-chrono-0.4) + ("rust-csv" ,rust-csv-1.1) + ("rust-fallible-iterator" ,rust-fallible-iterator-0.2) + ("rust-fallible-streaming-iterator" + ,rust-fallible-streaming-iterator-0.1) + ("rust-lazy-static" ,rust-lazy-static-1) + ("rust-libsqlite3-sys" ,rust-libsqlite3-sys-0.15) + ("rust-lru-cache" ,rust-lru-cache-0.1) + ("rust-memchr" ,rust-memchr-2.2) + ("rust-serde-json" ,rust-serde-json-1.0) + ("rust-time" ,rust-time-0.1) + ("rust-url" ,rust-url-1.7) + ("rust-uuid" ,rust-uuid-0.7)) + #:cargo-development-inputs + (("rust-lazy-static" ,rust-lazy-static-1) + ("rust-regex" ,rust-regex-1.1) + ("rust-tempdir" ,rust-tempdir-0.3) + ("rust-unicase" ,rust-unicase-2.4) + ("rust-uuid" ,rust-uuid-0.7)))) + (home-page "https://github.com/rusqlite/rusqlite") + (synopsis "Wrapper for SQLite") + (description "This prackage provides a wrapper for SQLite.") + (license license:expat))) + (define-public rust-rust-argon2-0.7 (package (name "rust-rust-argon2") @@ -18107,6 +19486,69 @@ rustc compiler.") "Automatically apply the suggestions made by rustc.") (license (list license:expat license:asl2.0)))) +(define-public rust-rustls-0.16 + (package + (name "rust-rustls") + (version "0.16.0") + (source + (origin + (method url-fetch) + (uri (crate-uri "rustls" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "17n0fx3fpkg4fhpdplrdhkissnl003kj90vzbqag11vkpyqihnmj")))) + (build-system cargo-build-system) + (arguments + `(#:tests? #f ;; 1/114 tests fail (test file not found) + #:cargo-inputs + (("rust-base64" ,rust-base64-0.10) + ("rust-log" ,rust-log-0.4) + ("rust-ring" ,rust-ring-0.16) + ("rust-sct" ,rust-sct-0.6) + ("rust-webpki" ,rust-webpki-0.21)) + #:cargo-development-inputs + (("rust-criterion" ,rust-criterion-0.2) + ("rust-env-logger" ,rust-env-logger-0.6) + ("rust-log" ,rust-log-0.4) + ("rust-tempfile" ,rust-tempfile-3.0) + ("rust-webpki-roots" ,rust-webpki-roots-0.17)))) + (home-page "https://github.com/ctz/rustls") + (synopsis "Modern TLS library written in Rust") + (description "This package provides a modern TLS library written in Rust.") + (license (list license:asl2.0 license:isc license:expat)))) + +(define-public rust-rustls-0.12 + (package/inherit rust-rustls-0.16 + (name "rust-rustls") + (version "0.12.0") + (source + (origin + (method url-fetch) + (uri (crate-uri "rustls" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "1k8b8cc0pjkv5cxdgs43jif7nslzsxair9b2sifgvjag7a4f8wmb")))) + (build-system cargo-build-system) + (arguments + `(#:tests? #f ;; 1/45 tests fails due to some missing file + #:cargo-inputs + (("rust-base64" ,rust-base64-0.9) + ("rust-log" ,rust-log-0.4) + ("rust-ring" ,rust-ring-0.13) + ("rust-sct" ,rust-sct-0.3) + ("rust-untrusted" ,rust-untrusted-0.6) + ("rust-webpki" ,rust-webpki-0.18)) + #:cargo-development-inputs + (("rust-ct-logs" ,rust-ct-logs-0.3) + ("rust-docopt" ,rust-docopt-0.8) + ("rust-env-logger" ,rust-env-logger-0.4) + ("rust-log" ,rust-log-0.4) + ("rust-mio" ,rust-mio-0.6) + ("rust-regex" ,rust-regex-0.2) + ("rust-serde" ,rust-serde-1.0) + ("rust-serde-derive" ,rust-serde-derive-1.0) + ("rust-webpki-roots" ,rust-webpki-roots-0.14)))))) + (define-public rust-rusttype-0.8 (package (name "rust-rusttype") @@ -18606,6 +20048,49 @@ Pwrite traits from the scroll crate.") Pwrite traits from the scroll crate.") (license license:expat))) +(define-public rust-sct-0.6 + (package + (name "rust-sct") + (version "0.6.0") + (source + (origin + (method url-fetch) + (uri (crate-uri "sct" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "0g4dz7las43kcpi9vqv9c6l1afjkdv3g3w3s7d2w7a7w77wjl173")))) + (build-system cargo-build-system) + (arguments + `(#:cargo-inputs + (("rust-ring" ,rust-ring-0.16) + ("rust-untrusted" ,rust-untrusted-0.7)) + #:cargo-development-inputs + (("rust-cc" ,rust-cc-1.0)))) + (home-page "https://github.com/ctz/sct.rs") + (synopsis "Certificate transparency SCT verification library") + (description "Certificate transparency SCT verification library") + (license (list license:asl2.0 license:isc license:expat)))) + +(define-public rust-sct-0.3 + (package/inherit rust-sct-0.6 + (name "rust-sct") + (version "0.3.0") + (source + (origin + (method url-fetch) + (uri (crate-uri "sct" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "0z090j3lvy0lqbhmpswm4vb2n4i8dqswy0l93abdx9biipnhlm5l")))) + (build-system cargo-build-system) + (arguments + `(#:cargo-inputs + (("rust-ring" ,rust-ring-0.13) + ("rust-untrusted" ,rust-untrusted-0.6)) + #:cargo-development-inputs + (("rust-cc" ,rust-cc-1.0)))))) + + (define-public rust-seahash-3.0 (package (name "rust-seahash") @@ -19479,6 +20964,56 @@ for the serde framework.") "Assembly implementation of SHA-1 compression function.") (license license:expat))) +(define-public rust-sha2-0.8 + (package + (name "rust-sha2") + (version "0.8.1") + (source + (origin + (method url-fetch) + (uri (crate-uri "sha2" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "1827pplynq0ahxid1xq281kiv56kj2afp7gm97v7gw71sbgll117")))) + (build-system cargo-build-system) + (arguments + `(#:cargo-inputs + (("rust-block-buffer" ,rust-block-buffer-0.7) + ("rust-digest" ,rust-digest-0.8) + ("rust-fake-simd" ,rust-fake-simd-0.1) + ("rust-libc" ,rust-libc-0.2) + ("rust-opaque-debug" ,rust-opaque-debug-0.2) + ("rust-sha2-asm" ,rust-sha2-asm-0.5)) + #:cargo-development-inputs + (("rust-cc" ,rust-cc-1.0) ;; FIXME for rust-sha2-asm, why again? + ("rust-digest" ,rust-digest-0.8) + ("rust-hex-literal" ,rust-hex-literal-0.1)))) + (home-page "https://github.com/RustCrypto/hashes") + (synopsis "SHA-2 hash functions") + (description "SHA-2 hash functions") + (license (list license:expat license:asl2.0)))) + +(define-public rust-sha2-asm-0.5 + (package + (name "rust-sha2-asm") + (version "0.5.3") + (source + (origin + (method url-fetch) + (uri (crate-uri "sha2-asm" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "0k3qwv2yl8fyi2i6cprfb8d874ii5kmcmckgnjkwnz2ac9fayyl1")))) + (build-system cargo-build-system) + (arguments + `(#:cargo-inputs + (("rust-cc" ,rust-cc-1.0)))) ;; build dependency + (home-page "https://github.com/RustCrypto/asm-hashes") + (synopsis "Assembly implementation of SHA-2") + (description "This package provides an assembly implementations of hash +functions core functionality.") + (license license:expat))) + (define-public rust-shader-version-0.6 (package (name "rust-shader-version") @@ -19794,6 +21329,27 @@ variants in pure Rust.") "SipHash functions from rust-core < 1.13.") (license (list license:asl2.0 license:expat)))) +(define-public rust-skeptic-0.9 + (package + (name "rust-skeptic") + (version "0.9.0") + (source + (origin + (method url-fetch) + (uri (crate-uri "skeptic" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "0savk91xy74izw9z6vn6ialkaqrp81w7dayha801b52h670qszfx")))) + (build-system cargo-build-system) + (arguments + `(#:cargo-inputs + (("rust-pulldown-cmark" ,rust-pulldown-cmark-0.0.8) + ("rust-tempdir" ,rust-tempdir-0.3)))) + (home-page "https://github.com/budziq/rust-skeptic") + (synopsis "Test your Rust markdown documentation via Cargo") + (description "Test your Rust markdown documentation via Cargo") + (license (list license:expat license:asl2.0)))) + (define-public rust-skeptic-0.13 (package (name "rust-skeptic") @@ -20184,6 +21740,27 @@ initializers are available.") "07ywqn1vrpi3c43fmvsx7pawk9h3rb77yyqbnhap2micl454kb6f")))) (arguments '(#:skip-build? #t)))) +(define-public rust-spmc-0.3 + (package + (name "rust-spmc") + (version "0.3.0") + (source + (origin + (method url-fetch) + (uri (crate-uri "spmc" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "1rgcqgj6b3d0cshi7277akr2xk0cx11rkmviaahy7a3pla6l5a02")))) + (build-system cargo-build-system) + (arguments + `(#:tests? #f ;; tests hang + #:cargo-development-inputs + (("rust-loom" ,rust-loom-0.2)))) + (home-page "https://github.com/seanmonstar/spmc") + (synopsis "Simple SPMC channel") + (description "Simple SPMC channel") + (license (list license:expat license:asl2.0)))) + (define-public rust-spsc-buffer-0.1 (package (name "rust-spsc-buffer") @@ -20525,6 +22102,26 @@ crate.") (license (list license:unlicense license:expat)))) +(define-public rust-string-0.2 + (package + (name "rust-string") + (version "0.2.1") + (source + (origin + (method url-fetch) + (uri (crate-uri "string" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "0vaxz85ja52fn66akgvggb29wqa5bpj3y38syykpr1pbrjzi8hfj")))) + (build-system cargo-build-system) + (arguments + `(#:cargo-inputs (("rust-bytes" ,rust-bytes-0.4)))) + (home-page "https://github.com/carllerche/string") + (synopsis "UTF-8 encoded string with configurable byte storage") + (description "This package provides a UTF-8 encoded string with +configurable byte storage.") + (license license:expat))) + (define-public rust-string-cache-0.7 (package (name "rust-string-cache") @@ -21592,6 +23189,22 @@ directories.") (("rust-kernel32-sys" ,rust-kernel32-sys-0.2) ("rust-winapi" ,rust-winapi-0.2)))))) +(define-public rust-term-0.2 + (package/inherit rust-term-0.4 + (name "rust-term") + (version "0.2.14") + (source + (origin + (method url-fetch) + (uri (crate-uri "term" version)) + (file-name (string-append name "-" version ".crate")) + (sha256 + (base32 "109jmzddq1kz6wm2ndgddy7yrlqcw2i36ygxl0fcymc0sda7w1zj")))) + (arguments + `(#:cargo-inputs + (("rust-kernel32-sys" ,rust-kernel32-sys-0.2) + ("rust-winapi" ,rust-winapi-0.2)))))) + (define-public rust-term-grid-0.1 (package (name "rust-term-grid") @@ -22131,6 +23744,51 @@ in Rust.") "Simple, lightweight template engine.") (license (list license:asl2.0 license:expat)))) +(define-public rust-tokio-0.2 + (package + (name "rust-tokio") + (version "0.2.18") + (source + (origin + (method url-fetch) + (uri (crate-uri "tokio" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "04v7rfkrlr8cx30ygy0n45skf6pdbif0zisn9a5xrdnjfb81dvrl")))) + (build-system cargo-build-system) + (arguments + `(#:skip-build? #t + #:cargo-inputs + (("rust-bytes" ,rust-bytes-0.5) + ("rust-fnv" ,rust-fnv-1.0) + ("rust-futures-core" ,rust-futures-core-0.3) + ("rust-iovec" ,rust-iovec-0.1) + ("rust-lazy-static" ,rust-lazy-static-1) + ("rust-libc" ,rust-libc-0.2) + ("rust-memchr" ,rust-memchr-2.2) + ("rust-mio" ,rust-mio-0.6) + ("rust-mio-named-pipes" ,rust-mio-named-pipes-0.1) + ("rust-mio-uds" ,rust-mio-uds-0.6) + ("rust-num-cpus" ,rust-num-cpus-1.10) + ("rust-parking-lot" ,rust-parking-lot-0.10) + ("rust-pin-project-lite" ,rust-pin-project-lite-0.1) + ("rust-signal-hook-registry" ,rust-signal-hook-registry-1.2) + ("rust-slab" ,rust-slab-0.4) + ("rust-tokio-macros" ,rust-tokio-macros-0.2) + ("rust-winapi" ,rust-winapi-0.3)) + #:cargo-development-inputs + (("rust-futures" ,rust-futures-0.3) + ("rust-loom" ,rust-loom-0.3) + ("rust-proptest" ,rust-proptest-0.9) + ("rust-tempfile" ,rust-tempfile-3.1) + ("rust-tokio-test" ,rust-tokio-test-0.2)))) + (home-page "https://tokio.rs") + (synopsis "Event-driven, non-blocking I/O platform") + (description + "An event-driven, non-blocking I/O platform for writing asynchronous I/O +backed applications.") + (license license:expat))) + (define-public rust-tokio-0.1 (package (name "rust-tokio") @@ -22185,6 +23843,30 @@ in Rust.") backed applications.") (license license:expat))) +(define-public rust-tokio-buf-0.1 + (package + (name "rust-tokio-buf") + (version "0.1.1") + (source + (origin + (method url-fetch) + (uri (crate-uri "tokio-buf" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "0inwrkh8knqy44mr9h2i305zyy4pxhfy90y0gr5rm1akdks21clg")))) + (build-system cargo-build-system) + (arguments + `(#:cargo-inputs + (("rust-bytes" ,rust-bytes-0.4) + ("rust-either" ,rust-either-1.5) + ("rust-futures" ,rust-futures-0.1)) + #:cargo-development-inputs + (("rust-tokio-mock-task" ,rust-tokio-mock-task-0.1)))) + (home-page "https://tokio.rs") + (synopsis "Asynchronous stream of byte buffers") + (description "Asynchronous stream of byte buffers") + (license license:expat))) + ;; Cyclic dependency with tokio-io (define-public rust-tokio-codec-0.1 (package @@ -22407,6 +24089,31 @@ the current thread.") futures efficiently") (license (list license:asl2.0 license:expat)))) +(define-public rust-tokio-macros-0.2 + (package + (name "rust-tokio-macros") + (version "0.2.5") + (source + (origin + (method url-fetch) + (uri (crate-uri "tokio-macros" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "1283aq0l7rnh79zzqk4r34dgimvwcymrzmg1yah9ai2nmb3arhzh")))) + (build-system cargo-build-system) + (arguments + `(#:tests? #f ;; FIXME tests use bytes-0.5, require Rust >= 1.39 + #:cargo-inputs + (("rust-proc-macro2" ,rust-proc-macro2-1.0) + ("rust-quote" ,rust-quote-1.0) + ("rust-syn" ,rust-syn-1.0)) + #:cargo-development-inputs + (("rust-tokio" ,rust-tokio-0.2)))) + (home-page "https://tokio.rs") + (synopsis "Tokio's proc macros") + (description "This package provides Tokio's proc macros.") + (license license:expat))) + (define-public rust-tokio-mock-task-0.1 (package (name "rust-tokio-mock-task") @@ -22428,6 +24135,56 @@ futures efficiently") (description "Mock a Tokio task.") (license license:expat))) +(define-public rust-tokio-mockstream-1 + (package + (name "rust-tokio-mockstream") + (version "1.1.0") + (source + (origin + (method url-fetch) + (uri (crate-uri "tokio-mockstream" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "0mg1i39cl8x32wxwbn74hlirks8a6f3g0gfzkb0n0zwbxwvc9gs1")))) + (build-system cargo-build-system) + (arguments + `(#:cargo-inputs + (("rust-futures" ,rust-futures-0.1) + ("rust-tokio-io" ,rust-tokio-io-0.1)) + #:cargo-development-inputs + (("rust-bytes" ,rust-bytes-0.4)))) + (home-page "https://github.com/aatxe/tokio-mockstream") + (synopsis "Fake stream for testing network applications backed by +buffers") + (description "This package provides a fake stream for testing network +applications backed by buffers.") + (license (list license:expat license:asl2.0)))) + +(define-public rust-tokio-named-pipes-0.1 + (package + (name "rust-tokio-named-pipes") + (version "0.1.0") + (source + (origin + (method url-fetch) + (uri (crate-uri "tokio-named-pipes" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "1bjy59wdl2anl22w6qyzkff1afv7ynayfpms10iqna2j6142sa4x")))) + (build-system cargo-build-system) + (arguments + `(#:cargo-inputs + (("rust-bytes" ,rust-bytes-0.4) + ("rust-futures" ,rust-futures-0.1) + ("rust-mio" ,rust-mio-0.6) + ("rust-mio-named-pipes" ,rust-mio-named-pipes-0.1) + ("rust-tokio" ,rust-tokio-0.1)))) + (home-page "https://github.com/nikvolf/tokio-named-pipes") + (synopsis "Windows named pipe bindings for tokio") + (description "This package provides bindings for Windows named pipe for +Tokio.") + (license (list license:expat license:asl2.0)))) + (define-public rust-tokio-process-0.2 (package (name "rust-tokio-process") @@ -22507,6 +24264,37 @@ futures.") "Event loop that drives Tokio I/O resources.") (license license:expat))) +(define-public rust-tokio-rustls-0.12 + (package + (name "rust-tokio-rustls") + (version "0.12.2") + (source + (origin + (method url-fetch) + (uri (crate-uri "tokio-rustls" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "1k6rpw4nmgsamh8vbf8xqrf4rr5sqs18i93561bydflajz0gw6hl")))) + (build-system cargo-build-system) + (arguments + `(#:skip-build? #t ;; FIXME requires Rust >= 1.39 for building + #:cargo-inputs + (("rust-bytes" ,rust-bytes-0.5) + ("rust-futures-core" ,rust-futures-core-0.3) + ("rust-rustls" ,rust-rustls-0.16) + ("rust-tokio" ,rust-tokio-0.2) + ("rust-webpki" ,rust-webpki-0.21)) + #:cargo-development-inputs + (("rust-futures-util" ,rust-futures-util-0.3) + ("rust-lazy-static" ,rust-lazy-static-1) + ("rust-tokio" ,rust-tokio-0.2) + ("rust-webpki-roots" ,rust-webpki-roots-0.18)))) + (home-page "https://github.com/quininer/tokio-rustls") + (synopsis "Asynchronous TLS/SSL streams for Tokio using Rustls") + (description "This package provides asynchronous TLS/SSL streams for Tokio +using Rustls.") + (license (list license:expat license:asl2.0)))) + (define-public rust-tokio-signal-0.2 (package (name "rust-tokio-signal") @@ -22572,6 +24360,32 @@ futures.") (description "Synchronization utilities.") (license license:expat))) +(define-public rust-tokio-test-0.2 + (package + (name "rust-tokio-test") + (version "0.2.1") + (source + (origin + (method url-fetch) + (uri (crate-uri "tokio-test" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "0v81p2n853b1kzyla3dbfmnazirn6s3n8p3z8k20bmdn370lj07d")))) + (build-system cargo-build-system) + (arguments + `(#:skip-build? #t ;; FIXME requires Rust >= 1.39 for building + #:cargo-inputs + (("rust-bytes" ,rust-bytes-0.5) + ("rust-futures-core" ,rust-futures-core-0.3) + ("rust-tokio" ,rust-tokio-0.2)) + #:cargo-development-inputs + (("rust-futures-util" ,rust-futures-util-0.3) + ("rust-tokio" ,rust-tokio-0.2)))) + (home-page "https://tokio.rs") + (synopsis "Testing utilities for Tokio- and futures-based code") + (description "Testing utilities for Tokio- and futures-based code") + (license license:expat))) + (define-public rust-tokio-tcp-0.1 (package (name "rust-tokio-tcp") @@ -23202,7 +25016,7 @@ with the Unicode character database.") (define-public rust-unicode-normalization-0.1 (package (name "rust-unicode-normalization") - (version "0.1.8") + (version "0.1.9") (source (origin (method url-fetch) @@ -23210,8 +25024,7 @@ with the Unicode character database.") (file-name (string-append name "-" version ".tar.gz")) (sha256 - (base32 - "09i49va90rvia1agvgni4gicnqv50y5zy1naw8mr8bcqifh3j4ql")))) + (base32 "1kviyqg3bmds4p5hgwf9qgihw8xxvq7ljgyrrk7ygxa2k450gj09")))) (build-system cargo-build-system) (arguments `(#:skip-build? #t @@ -23447,6 +25260,18 @@ whitespace from a string.") untrusted inputs in Rust.") (license license:isc))) +(define-public rust-untrusted-0.6 + (package/inherit rust-untrusted-0.7 + (name "rust-untrusted") + (version "0.6.2") + (source + (origin + (method url-fetch) + (uri (crate-uri "untrusted" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "0byf88b7ca1kb5aap8f6npp6xncvg95dnma8ipmnmd4n9r5izkam")))))) + (define-public rust-url-2.1 (package (name "rust-url") @@ -24115,6 +25940,29 @@ specified across Unix and Windows platforms.") ("rust-rand" ,rust-rand-0.3) ("rust-rustc-serialize" ,rust-rustc-serialize-0.3)))))) +(define-public rust-want-0.2 + (package + (name "rust-want") + (version "0.2.0") + (source + (origin + (method url-fetch) + (uri (crate-uri "want" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "0c52g7b4hhj033jc56sx9z3krivyciz0hlblixq2gc448zx5wfdn")))) + (build-system cargo-build-system) + (arguments + `(#:tests? #f ;; 2/5 tests fail + #:cargo-inputs + (("rust-futures" ,rust-futures-0.1) + ("rust-log" ,rust-log-0.4) + ("rust-try-lock" ,rust-try-lock-0.2)))) + (home-page "https://github.com/seanmonstar/want") + (synopsis "Detect when another Future wants a result") + (description "Detect when another Future wants a result.") + (license license:expat))) + (define-public rust-wasi-0.9 (package (name "rust-wasi") @@ -24261,7 +26109,7 @@ in Rust.") (package (inherit rust-wasm-bindgen-futures-0.4) (name "rust-wasm-bindgen-futures") - (version "0.3.24") + (version "0.3.27") (source (origin (method url-fetch) @@ -24269,8 +26117,7 @@ in Rust.") (file-name (string-append name "-" version ".tar.gz")) (sha256 - (base32 - "0bf9x6qfjczspc4zs605z1n4j15cdd8kk2z7rah0yggw8b6zl5nc")))) + (base32 "073p71skp91d9v2wczl6k7z9p0w25vn43br2v2g1ncbc6hvhnhl3")))) (arguments `(#:skip-build? #t #:cargo-inputs @@ -24397,7 +26244,7 @@ attribute that is not in the shared backend crate.") (package (inherit rust-wasm-bindgen-test-0.3) (name "rust-wasm-bindgen-test") - (version "0.2.48") + (version "0.2.50") (source (origin (method url-fetch) @@ -24405,8 +26252,7 @@ attribute that is not in the shared backend crate.") (file-name (string-append name "-" version ".tar.gz")) (sha256 - (base32 - "0gwslc2sfkghzzb3r0gvd8i5rig2nlqgpl1rn43y2w4mr1ci494k")))) + (base32 "1h96phc1dmwwqn46k05j2y1mc3ljazh8f1gqqy0x8hm7ccxnknd2")))) (arguments `(#:skip-build? #t #:cargo-inputs @@ -24872,6 +26718,97 @@ protocol extensions. Look at the crate wayland-client for usable bindings.") "Bindings for all Web APIs, a procedurally generated crate from WebIDL.") (license (list license:expat license:asl2.0)))) +(define-public rust-webpki-0.21 + (package + (name "rust-webpki") + (version "0.21.2") + (source + (origin + (method url-fetch) + (uri (crate-uri "webpki" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "1vv3x2alvczfy6jhx79c9h00d1nliqf7s5jlvcd6npc6f8chxxgi")))) + (build-system cargo-build-system) + (arguments + `(#:tests? #f ;; tests fail to build "missing file tests/ed25519/ee.der" + #:cargo-inputs + (("rust-ring" ,rust-ring-0.16) + ("rust-untrusted" ,rust-untrusted-0.7)) + #:cargo-development-inputs + (("rust-base64" ,rust-base64-0.9)))) + (home-page "https://github.com/briansmith/webpki") + (synopsis "Web PKI X.509 Certificate Verification") + (description "This packge provides Web PKI X.509 Certificate +Verification.") + (license license:isc))) + +(define-public rust-webpki-0.18 + (package/inherit rust-webpki-0.21 + (name "rust-webpki") + (version "0.18.1") + (source + (origin + (method url-fetch) + (uri (crate-uri "webpki" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "0zx1v8afa4ig97dyqfrnlj5i7pib6dnfw88qn2iiqhfq2rrrdmqp")))) + (build-system cargo-build-system) + (arguments + `(#:cargo-inputs + (("rust-ring" ,rust-ring-0.13) + ("rust-untrusted" ,rust-untrusted-0.6)) + #:cargo-development-inputs + (("rust-base64" ,rust-base64-0.9)))))) + +(define-public rust-webpki-roots-0.18 + (package + (name "rust-webpki-roots") + (version "0.18.0") + (source + (origin + (method url-fetch) + (uri (crate-uri "webpki-roots" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "1d4ss607rgi9pj01zzqa13c1p3m35z314yh6lmjaj4kzvwv5gkci")))) + (build-system cargo-build-system) + (arguments + `(#:cargo-inputs (("rust-webpki" ,rust-webpki-0.21)))) + (home-page "https://github.com/ctz/webpki-roots") + (synopsis "Mozilla's CA root certificates for use with webpki") + (description "Mozilla's CA root certificates for use with webpki") + (license license:mpl2.0))) + +(define-public rust-webpki-roots-0.17 + (package/inherit rust-webpki-roots-0.18 + (name "rust-webpki-roots") + (version "0.17.0") + (source + (origin + (method url-fetch) + (uri (crate-uri "webpki-roots" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "12vi8dh0yik0h4f0b9dnlw5i3gxyky7iblbksh6zcq4xvlvswqm2")))))) + +(define-public rust-webpki-roots-0.14 + (package/inherit rust-webpki-roots-0.18 + (name "rust-webpki-roots") + (version "0.14.0") + (source + (origin + (method url-fetch) + (uri (crate-uri "webpki-roots" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "05zw919077i3jadbvdsvl69wv2siijg2pjbykl6fyi7hmgb7bggd")))) + (arguments + `(#:cargo-inputs + (("rust-untrusted" ,rust-untrusted-0.6) + ("rust-webpki" ,rust-webpki-0.18)))))) + (define-public rust-weedle-0.10 (package (name "rust-weedle") @@ -25581,6 +27518,29 @@ to XDG Base Directory specification") (("rust-clippy" ,rust-clippy-0.0) ("rust-linked-hash-map" ,rust-linked-hash-map-0.3)))))) +(define-public rust-zbase32-0.1 + (package + (name "rust-zbase32") + (version "0.1.2") + (source + (origin + (method url-fetch) + (uri (crate-uri "zbase32" version)) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 "0gz3nmiaidscb5c85rh3qxi8i584gz5xm3amlxqminl8jq27k40g")))) + (build-system cargo-build-system) + (arguments + `(#:skip-build? #t ;; dependency cypthon not yet availalbe + #:cargo-development-inputs + (;; ("rust-cpython" ,rust-cpython-0.2) TODO + ("rust-quickcheck" ,rust-quickcheck-0.7) + ("rust-rand" ,rust-rand-0.6)))) + (home-page "https://gitlab.com/pgerber/zbase32-rust") + (synopsis "Implementation of zbase32") + (description "This package provides an implementation of zbase32.") + (license license:lgpl3+))) + (define-public rust-zip-0.5 (package (name "rust-zip") diff --git a/gnu/packages/cross-base.scm b/gnu/packages/cross-base.scm index b07014da6c..9b4aa103da 100644 --- a/gnu/packages/cross-base.scm +++ b/gnu/packages/cross-base.scm @@ -4,8 +4,9 @@ ;;; Copyright © 2016, 2019 Jan (janneke) Nieuwenhuizen <janneke@gnu.org> ;;; Copyright © 2016 Manolis Fragkiskos Ragkousis <manolis837@gmail.com> ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr> -;;; Copyright © 2019 Marius Bakke <mbakke@fastmail.com> +;;; Copyright © 2019, 2020 Marius Bakke <mbakke@fastmail.com> ;;; Copyright © 2019 Carl Dong <contact@carldong.me> +;;; Copyright © 2020 Mathieu Othacehe <m.othacehe@gmail.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -54,8 +55,11 @@ (define %gcc-include-paths ;; Environment variables for header search paths. - ;; Note: See <http://bugs.gnu.org/30756> for why not 'C_INCLUDE_PATH' & co. - '("CPATH")) + ;; Note: See <http://bugs.gnu.org/22186> for why not 'CPATH'. + '("C_INCLUDE_PATH" + "CPLUS_INCLUDE_PATH" + "OBJC_INCLUDE_PATH" + "OBJCPLUS_INCLUDE_PATH")) (define %gcc-cross-include-paths ;; Search path for target headers when cross-compiling. @@ -70,8 +74,8 @@ `(cons ,(string-append "--target=" target) ,flags)))))) -(define (cross-binutils target) - "Return a cross-Binutils for TARGET." +(define* (cross-binutils target #:optional (binutils binutils)) + "Return a cross-Binutils for TARGET using BINUTILS." (let ((binutils (package (inherit binutils) (arguments (substitute-keyword-arguments (package-arguments @@ -158,6 +162,13 @@ base compiler and using LIBC (which may be either a libc package or #f.)" "--disable-libsanitizer" )) + ;; Install cross-built libraries such as libgcc_s.so in + ;; the "lib" output. + ,@(if libc + `((string-append "--with-toolexeclibdir=" + (assoc-ref %outputs "lib") + "/" ,target "/lib")) + '()) ;; For a newlib (non-glibc) target ,@(if (cross-newlib? target) '("--with-newlib") @@ -176,19 +187,7 @@ base compiler and using LIBC (which may be either a libc package or #f.)" ,flags)) flags)) ((#:phases phases) - `(cross-gcc-build-phases - ,target - (modify-phases ,phases - (add-before 'configure 'treat-glibc-as-system-header - (lambda* (#:key inputs #:allow-other-keys) - (let ((libc (assoc-ref inputs "libc"))) - (when libc - ;; For GCC6 and later, make sure Glibc is treated as a "system - ;; header" such that #include_next does the right thing. - (for-each (lambda (var) - (setenv var (string-append libc "/include"))) - '("CROSS_C_INCLUDE_PATH" "CROSS_CPLUS_INCLUDE_PATH"))) - #t)))))))))) + `(cross-gcc-build-phases ,target ,phases)))))) (define (cross-gcc-patches xgcc target) "Return GCC patches needed for XGCC and TARGET." @@ -204,12 +203,19 @@ base compiler and using LIBC (which may be either a libc package or #f.)" (define (cross-gcc-snippet target) "Return GCC snippet needed for TARGET." - (cond ((target-mingw? target) - '(begin - (copy-recursively "libstdc++-v3/config/os/mingw32-w64" - "libstdc++-v3/config/os/newlib") - #t)) - (else #f))) + `(begin + ,@(if (target-mingw? target) + '((copy-recursively "libstdc++-v3/config/os/mingw32-w64" + "libstdc++-v3/config/os/newlib")) + '()) + ;; TOOLDIR_BASE_PREFIX is erroneous when using a separate "lib" + ;; output. Specify it correctly, otherwise GCC won't find its shared + ;; libraries installed in the "lib" output. See: + ;; https://lists.gnu.org/archive/html/bug-guix/2020-03/msg00196.html. + (substitute* "gcc/Makefile.in" + (("-DTOOLDIR_BASE_PREFIX=[^ ]*") + "-DTOOLDIR_BASE_PREFIX=\\\"../../../../\\\"")) + #t)) (define* (cross-gcc target #:key @@ -224,22 +230,26 @@ target that libc." (name (string-append "gcc-cross-" (if libc "" "sans-libc-") target)) - (source (origin (inherit (package-source xgcc)) - (patches - (append - (origin-patches (package-source xgcc)) - (cons (cond - ((version>=? (package-version xgcc) "8.0") (search-patch "gcc-8-cross-environment-variables.patch")) - ((version>=? (package-version xgcc) "6.0") (search-patch "gcc-6-cross-environment-variables.patch")) - (else (search-patch "gcc-cross-environment-variables.patch"))) - (cross-gcc-patches xgcc target)))) - (modules '((guix build utils))) - (snippet - (cross-gcc-snippet target)))) - - ;; For simplicity, use a single output. Otherwise libgcc_s & co. are not - ;; found by default, etc. - (outputs '("out")) + (source + (origin + (inherit (package-source xgcc)) + (patches + (append + (origin-patches (package-source xgcc)) + (append (cond + ((version>=? (package-version xgcc) "8.0") + (search-patches "gcc-8-cross-environment-variables.patch")) + ((version>=? (package-version xgcc) "6.0") + (search-patches "gcc-7-cross-toolexeclibdir.patch" + "gcc-6-cross-environment-variables.patch")) + (else + (search-patches "gcc-cross-environment-variables.patch"))) + (cross-gcc-patches xgcc target)))) + (modules '((guix build utils))) + (snippet + (cross-gcc-snippet target)))) + + (outputs '("out" "lib")) (arguments `(#:implicit-inputs? #f @@ -261,27 +271,31 @@ target that libc." #:binutils xbinutils)) ("binutils-cross" ,xbinutils) - ;; Call it differently so that the builder can check whether the "libc" - ;; input is #f. - ("libc-native" ,@(assoc-ref (%final-inputs) "libc")) - - ;; Remaining inputs. ,@(let ((inputs (append (package-inputs xgcc) - (alist-delete "libc" (%final-inputs))))) + (fold alist-delete (%final-inputs) + '("libc" "libc:static")) + + ;; Call it differently so that the builder can + ;; check whether the "libc" input is #f. + `(("libc-native" + ,@(assoc-ref (%final-inputs) "libc")) + ("libc-native:static" + ,@(assoc-ref (%final-inputs) + "libc:static")))))) (cond ((target-mingw? target) (if libc - `(("libc" ,libc) - ,@inputs) - `(("mingw-source" ,(package-source mingw-w64)) - ,@inputs))) + `(,@inputs + ("libc" ,libc)) + `(,@inputs + ("mingw-source" ,(package-source mingw-w64))))) (libc - `(("libc" ,libc) + `(,@inputs + ("libc" ,libc) ("libc:static" ,libc "static") ("xkernel-headers" ;the target headers ,@(assoc-ref (package-propagated-inputs libc) - "kernel-headers")) - ,@inputs)) + "kernel-headers")))) (else inputs))))) (inputs '()) @@ -293,7 +307,15 @@ target that libc." (map (lambda (variable) (search-path-specification (variable variable) - (files '("include")))) + + ;; Add 'include/c++' here so that <cstdlib>'s + ;; "#include_next <stdlib.h>" finds GCC's + ;; <stdlib.h>, not libc's. + (files (match variable + ("CROSS_CPLUS_INCLUDE_PATH" + '("include/c++" "include")) + (_ + '("include")))))) %gcc-cross-include-paths))) (native-search-paths '()))) @@ -499,7 +521,16 @@ and the cross tool chain." (("/[^ ]+/lib/libc.so.0.3") (string-append out "/lib/libc.so.0.3" " libmachuser.so libhurduser.so")))) - #t))) + #t)) + ;; TODO: move to glibc in the next rebuild cycle + (add-after 'unpack 'patch-libc/hurd + (lambda* (#:key inputs #:allow-other-keys) + (for-each + (lambda (name) + (let ((patch (assoc-ref inputs name))) + (invoke "patch" "-p1" "--force" "-i" patch))) + '("hurd-mach-print.patch" + "hurd-gettyent.patch"))))) '()))))) ;; Shadow the native "kernel-headers" because glibc's recipe expects the @@ -515,7 +546,12 @@ and the cross tool chain." ,@(if (hurd-triplet? target) `(("cross-mig" ,@(assoc-ref (package-native-inputs xheaders) - "cross-mig"))) + "cross-mig")) + ;; TODO: move to glibc in the next rebuild cycle + ("hurd-mach-print.patch" + ,@(search-patches "glibc-hurd-mach-print.patch")) + ("hurd-gettyent.patch" + ,@(search-patches "glibc-hurd-gettyent.patch"))) '()) ,@(package-inputs libc) ;FIXME: static-bash ,@(package-native-inputs libc)))))) diff --git a/gnu/packages/crypto.scm b/gnu/packages/crypto.scm index f48ab50ca9..ccf1c2875f 100644 --- a/gnu/packages/crypto.scm +++ b/gnu/packages/crypto.scm @@ -4,7 +4,7 @@ ;;; Copyright © 2016, 2017, 2018, 2019 Leo Famulari <leo@famulari.name> ;;; Copyright © 2016 Lukas Gradl <lgradl@openmailbox> ;;; Copyright © 2016, 2017, 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr> -;;; Copyright © 2016, 2017 ng0 <ng0@n0.is> +;;; Copyright © 2016, 2017 Nikita <nikita@n0.is> ;;; Copyright © 2016, 2017, 2019 Eric Bavier <bavier@member.fsf.org> ;;; Copyright © 2017 Pierre Langlois <pierre.langlois@gmx.com> ;;; Copyright © 2018 Efraim Flashner <efraim@flashner.co.il> @@ -14,6 +14,7 @@ ;;; Copyright © 2018 Tim Gesthuizen <tim.gesthuizen@yahoo.de> ;;; Copyright © 2019 Pierre Neidhardt <mail@ambrevar.xyz> ;;; Copyright © 2019 Tanguy Le Carrour <tanguy@bioneland.org> +;;; Copyright © 2020 Marius Bakke <mbakke@fastmail.com> ;;; Copyright © 2020 Jakub Kądziołka <kuba@kadziolka.net> ;;; ;;; This file is part of GNU Guix. @@ -715,19 +716,28 @@ BLAKE.") (define-public rhash (package (name "rhash") - (version "1.3.8") + (version "1.3.9") (source (origin (method url-fetch) - (uri (string-append "https://github.com/rhash/RHash/archive/v" - version ".tar.gz")) - (file-name (string-append name "-" version ".tar.gz")) + (uri (string-append "mirror://sourceforge/rhash/rhash/" version + "/rhash-" version "-src.tar.gz")) + (file-name (string-append "rhash-" version ".tar.gz")) (sha256 (base32 - "0k60ywyhwqwqxa2q2l85vwgf884hcgy31nxir3dqgz7ymib6llxy")))) + "1xn9fqa6rlnhsbgami45g82dlw9i1skg2sri3ydiinwak5ph1ca2")))) (build-system gnu-build-system) (arguments - `(#:make-flags + `(#:configure-flags + (list (string-append "--prefix=" (assoc-ref %outputs "out")) + ,@(let ((target (%current-target-system))) + (if target + `((string-append "--target=" ,target) + (string-append "--cc=" + (assoc-ref %build-inputs "cross-gcc") + "/bin/" ,target "-gcc")) + '()))) + #:make-flags ;; The binaries in /bin need some help finding librhash.so.0. (list (string-append "LDFLAGS=-Wl,-rpath=" %output "/lib")) #:test-target "test" ; ‘make check’ just checks the sources @@ -736,9 +746,13 @@ BLAKE.") (replace 'configure ;; ./configure is not GNU autotools' and doesn't gracefully handle ;; unrecognized options, so we must call it manually. - (lambda* (#:key outputs #:allow-other-keys) - (invoke "./configure" - (string-append "--prefix=" (assoc-ref outputs "out"))))) + (lambda* (#:key configure-flags #:allow-other-keys) + (apply invoke "./configure" configure-flags))) + (add-before 'check 'patch-/bin/sh + (lambda _ + (substitute* "Makefile" + (("/bin/sh") (which "sh"))) + #t)) (add-after 'install 'install-library-extras (lambda* (#:key make-flags #:allow-other-keys) (apply invoke diff --git a/gnu/packages/cryptsetup.scm b/gnu/packages/cryptsetup.scm index 2a824d416e..d4c039ac04 100644 --- a/gnu/packages/cryptsetup.scm +++ b/gnu/packages/cryptsetup.scm @@ -62,7 +62,7 @@ ("libgcrypt" ,libgcrypt) ("lvm2" ,lvm2) ; device-mapper ("popt" ,popt) - ("util-linux" ,util-linux))) ; libuuid + ("util-linux" ,util-linux "lib"))) ;libuuid (synopsis "Hard disk encryption tool") (description "LUKS (Linux Unified Key Setup)/Cryptsetup provides a standard on-disk @@ -142,6 +142,6 @@ files). This assumes LIBRARY uses Libtool." ("libgcrypt" ,libgcrypt-static) ("lvm2" ,lvm2-static) ("util-linux" ,util-linux "static") - ("util-linux" ,util-linux) + ("util-linux" ,util-linux "lib") ("popt" ,popt)))) (synopsis "Hard disk encryption tool (statically linked)"))) diff --git a/gnu/packages/cups.scm b/gnu/packages/cups.scm index 1db2f101f1..b253d0604e 100644 --- a/gnu/packages/cups.scm +++ b/gnu/packages/cups.scm @@ -6,6 +6,7 @@ ;;; Copyright © 2017 Leo Famulari <leo@famulari.name> ;;; Copyright © 2017 Mark H Weaver <mhw@netris.org> ;;; Copyright © 2017, 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr> +;;; Copyright © 2020 Marius Bakke <mbakke@fastmail.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -158,7 +159,7 @@ ("ijs" ,ijs) ("dbus" ,dbus) ("lcms" ,lcms) - ("libjpeg" ,libjpeg) + ("libjpeg" ,libjpeg-turbo) ("libpng" ,libpng) ("libtiff" ,libtiff) ("glib" ,glib) @@ -536,7 +537,20 @@ should only be used as part of the Guix cups-pk-helper service.") (string-append "rulessystemdir = " out "/lib/systemd/system")) (("/etc/sane.d") - (string-append out "/etc/sane.d")))))) + (string-append out "/etc/sane.d"))) + #t))) + (add-before 'configure 'fix-build-with-python-3.8 + (lambda* (#:key inputs #:allow-other-keys) + (let ((python (assoc-ref inputs "python"))) + ;; XXX: The configure script of looks for Python headers in the + ;; wrong places as of version 3.20.3. Help it by adding the + ;; include directory on C_INCLUDE_PATH. + (when python + (setenv "C_INCLUDE_PATH" + (string-append python "/include/python" + (python:python-version python) + ":" (getenv "C_INCLUDE_PATH")))) + #t))) (add-after 'install 'install-models-dat (lambda* (#:key outputs #:allow-other-keys) (let* ((out (assoc-ref outputs "out")) @@ -585,7 +599,7 @@ should only be used as part of the Guix cups-pk-helper service.") (inputs `(("cups-minimal" ,cups-minimal) ("dbus" ,dbus) - ("libjpeg" ,libjpeg) + ("libjpeg" ,libjpeg-turbo) ("libusb" ,libusb) ("python" ,python) ("python-dbus" ,python-dbus) @@ -673,14 +687,14 @@ printer/driver specific, but spooler-independent PPD file.") (define-public foo2zjs (package (name "foo2zjs") - (version "20200207") + (version "20200426") (source (origin (method url-fetch) ;; XXX: This is an unversioned URL! (uri "http://foo2zjs.rkkda.com/foo2zjs.tar.gz") (sha256 (base32 - "0pf1sm29gnrhhpyvq95jskvr874h5r4kls9w10gc24z23fjmr5zx")))) + "0wwh29ddd59q18r1jpi3166lgnwr8zn9lry82vahc2g96l97isp7")))) (build-system gnu-build-system) (arguments '(#:phases (modify-phases %standard-phases diff --git a/gnu/packages/curl.scm b/gnu/packages/curl.scm index aa5d24c401..48d7dd40bd 100644 --- a/gnu/packages/curl.scm +++ b/gnu/packages/curl.scm @@ -4,11 +4,12 @@ ;;; Copyright © 2015 Tomáš Čech <sleep_walker@suse.cz> ;;; Copyright © 2015 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2016, 2017, 2019 Leo Famulari <leo@famulari.name> -;;; Copyright © 2017, 2019 Marius Bakke <mbakke@fastmail.com> +;;; Copyright © 2017, 2019, 2020 Marius Bakke <mbakke@fastmail.com> ;;; Copyright © 2017 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2018 Roel Janssen <roel@gnu.org> ;;; Copyright © 2019 Ricardo Wurmus <rekado@elephly.net> +;;; Copyright © 2020 Jakub Kądziołka <kuba@kadziolka.net> ;;; ;;; This file is part of GNU Guix. ;;; @@ -36,7 +37,6 @@ #:use-module (gnu packages) #:use-module (gnu packages compression) #:use-module (gnu packages golang) - #:use-module (gnu packages groff) #:use-module (gnu packages guile) #:use-module (gnu packages kerberos) #:use-module (gnu packages libidn) @@ -45,20 +45,21 @@ #:use-module (gnu packages pkg-config) #:use-module (gnu packages python) #:use-module (gnu packages tls) - #:use-module (gnu packages web)) + #:use-module (gnu packages web) + #:use-module (srfi srfi-1)) (define-public curl (package (name "curl") - (version "7.65.3") - (replacement curl-7.66.0) + (version "7.69.1") (source (origin (method url-fetch) (uri (string-append "https://curl.haxx.se/download/curl-" version ".tar.xz")) (sha256 (base32 - "1sjz4fq7jg96mpmpqq82nd61njna6jp3c4m9yrbx2j1rh5a8ingj")))) + "0kwxh76iq9fblk7iyv4f75bmcmasarp2bcm1mm07wyvzd7kdbiq3")) + (patches (search-patches "curl-use-ssl-cert-env.patch")))) (build-system gnu-build-system) (outputs '("out" "doc")) ;1.2 MiB of man3 pages @@ -70,27 +71,42 @@ ("zlib" ,zlib))) (native-inputs `(("perl" ,perl) - ;; to enable the --manual option and make test 1026 pass - ("groff" ,groff) ("pkg-config" ,pkg-config) ("python" ,python-wrapper))) (native-search-paths - ;; Note: This search path is respected by the `curl` command-line tool only. - ;; Ideally we would bake this into libcurl itself so other users can benefit, - ;; but it's not supported upstream due to thread safety concerns. + ;; These variables are introduced by curl-use-ssl-cert-env.patch. (list (search-path-specification + (variable "SSL_CERT_DIR") + (separator #f) ;single entry + (files '("etc/ssl/certs"))) + (search-path-specification + (variable "SSL_CERT_FILE") + (file-type 'regular) + (separator #f) ;single entry + (files '("etc/ssl/certs/ca-certificates.crt"))) + ;; Note: This search path is respected by the `curl` command-line + ;; tool only. Patching libcurl to read it too would bring no + ;; advantages and require maintaining a more complex patch. + (search-path-specification (variable "CURL_CA_BUNDLE") (file-type 'regular) (separator #f) ;single entry (files '("etc/ssl/certs/ca-certificates.crt"))))) (arguments - `(#:configure-flags (list "--with-gnutls" + `(#:disallowed-references ("doc") + #:configure-flags (list "--with-gnutls" (string-append "--with-gssapi=" (assoc-ref %build-inputs "mit-krb5")) "--disable-static") - ;; Add a phase to patch '/bin/sh' occurances in tests/runtests.pl #:phases (modify-phases %standard-phases + (add-after 'unpack 'do-not-record-configure-flags + (lambda _ + ;; Do not save the configure options to avoid unnecessary references. + (substitute* "curl-config.in" + (("@CONFIGURE_OPTIONS@") + "\"not available\"")) + #t)) (add-after 'install 'move-man3-pages (lambda* (#:key outputs #:allow-other-keys) @@ -143,17 +159,14 @@ tunneling, and so on.") "See COPYING in the distribution.")) (home-page "https://curl.haxx.se/"))) -(define curl-7.66.0 - (package - (inherit curl) - (version "7.66.0") - (source (origin - (method url-fetch) - (uri (string-append "https://curl.haxx.se/download/curl-" - version ".tar.xz")) - (sha256 - (base32 - "1hcqxpibhknhjy56wcxz5vd6m9ggx3ykwp3wp5wx05ih36481d6v")))))) +;; This package exists mainly to bootstrap CMake. It must not depend on +;; anything that uses cmake-build-system. +(define-public curl-minimal + (hidden-package + (package/inherit + curl + (name "curl-minimal") + (inputs (alist-delete "openldap" (package-inputs curl)))))) (define-public kurly (package diff --git a/gnu/packages/cyrus-sasl.scm b/gnu/packages/cyrus-sasl.scm index f84136e631..3e65a1faf6 100644 --- a/gnu/packages/cyrus-sasl.scm +++ b/gnu/packages/cyrus-sasl.scm @@ -2,6 +2,7 @@ ;;; Copyright © 2013, 2014, 2015, 2017 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2013 Andreas Enge <andreas@enge.fr> ;;; Copyright © 2016 Leo Famulari <leo@famulari.name> +;;; Copyright © 2019 Mathieu Othacehe <m.othacehe@gmail.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -20,6 +21,7 @@ (define-module (gnu packages cyrus-sasl) #:use-module (gnu packages) + #:use-module (gnu packages autotools) #:use-module (gnu packages dbm) #:use-module (gnu packages kerberos) #:use-module (gnu packages tls) @@ -41,8 +43,13 @@ "ftp://ftp.cyrusimap.org/cyrus-sasl/cyrus-sasl-" version ".tar.gz"))) (sha256 (base32 - "1m85zcpgfdhm43cavpdkhb1s2zq1b31472hq1w1gs3xh94anp1i6")))) + "1m85zcpgfdhm43cavpdkhb1s2zq1b31472hq1w1gs3xh94anp1i6")) + (patches (search-patches "cyrus-sasl-ac-try-run-fix.patch")))) (build-system gnu-build-system) + (native-inputs + `(("autoconf" ,autoconf) + ("automake" ,automake) + ("libtool" ,libtool))) (inputs `(("gdbm" ,gdbm) ("openssl" ,openssl))) (propagated-inputs @@ -57,7 +64,13 @@ ;; 'plugin_common.c'. When building the shared libraries there, libtool ;; ends up doing "ln -s plugin_common.lo plugin_common.o", which can ;; fail with EEXIST when building things in parallel. - #:parallel-build? #f)) + #:parallel-build? #f + + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'autogen + (lambda _ + (invoke "autoreconf" "-vif")))))) (synopsis "Simple Authentication Security Layer implementation") (description "SASL (Simple Authentication Security Layer) is an Internet diff --git a/gnu/packages/databases.scm b/gnu/packages/databases.scm index 606594e005..f563ae8b5d 100644 --- a/gnu/packages/databases.scm +++ b/gnu/packages/databases.scm @@ -11,7 +11,7 @@ ;;; Copyright © 2016 Hartmut Goebel <h.goebel@crazy-compilers.com> ;;; Copyright © 2016 Christopher Allan Webber <cwebber@dustycloud.org> ;;; Copyright © 2015, 2016, 2017, 2018, 2019, 2020 Efraim Flashner <efraim@flashner.co.il> -;;; Copyright © 2016, 2017 ng0 <ng0@n0.is> +;;; Copyright © 2016, 2017 Nikita <nikita@n0.is> ;;; Copyright © 2016, 2017, 2018 Roel Janssen <roel@gnu.org> ;;; Copyright © 2016 David Craven <david@craven.ch> ;;; Copyright © 2016 Jan Nieuwenhuizen <janneke@gnu.org> @@ -168,7 +168,7 @@ ("avahi" ,avahi) ("cyrus-sasl" ,cyrus-sasl) ("openssl" ,openssl) - ("util-linux" ,util-linux))) + ("util-linux" ,util-linux "lib"))) ;; http://www.4store.org has been down for a while now. (home-page "https://github.com/4store/4store") (synopsis "Clustered RDF storage and query engine") @@ -761,6 +761,20 @@ Language.") "-DINSTALL_SHAREDIR=share") #:phases (modify-phases %standard-phases + ,@(if (string-prefix? "arm" (%current-system)) + ;; XXX: Because of the GCC 5 input, we need to hide GCC 7 from + ;; CPLUS_INCLUDE_PATH so that its headers do not shadow GCC 5. + '((add-after 'set-paths 'hide-default-gcc + (lambda* (#:key inputs #:allow-other-keys) + (let ((gcc (assoc-ref inputs "gcc"))) + (setenv "CPLUS_INCLUDE_PATH" + (string-join + (delete (string-append gcc "/include/c++") + (string-split (getenv "CPLUS_INCLUDE_PATH") + #\:)) + ":")) + #t)))) + '()) (add-after 'unpack 'fix-pcre-detection (lambda _ ;; The bundled PCRE in MariaDB has a patch that was upstreamed @@ -893,7 +907,7 @@ Language.") `(("bison" ,bison) ;; XXX: On armhf, use GCC 5 to work around <https://bugs.gnu.org/37605>. ,@(if (string-prefix? "armhf" (%current-system)) - `(("gcc", gcc-5)) + `(("gcc@5", gcc-5)) '()) ("perl" ,perl))) (inputs @@ -974,7 +988,7 @@ developed in C/C++ to MariaDB and MySQL databases.") (invoke "make" "-C" "contrib" "install")))))) (inputs `(("readline" ,readline) - ("libuuid" ,util-linux) + ("libuuid" ,util-linux "lib") ("openssl" ,openssl) ("zlib" ,zlib))) (home-page "https://www.postgresql.org/") @@ -1129,7 +1143,7 @@ including field and record folding."))) (define-public rocksdb (package (name "rocksdb") - (version "6.7.3") + (version "6.8.1") (source (origin (method git-fetch) (uri (git-reference @@ -1138,7 +1152,7 @@ including field and record folding."))) (file-name (git-file-name name version)) (sha256 (base32 - "19nacd7fb98i97ir07jjsk3l1vf7zzq04c4nqywizq8wakcx99s9")) + "0i6qglyrcqwxnrvq67zm7ln79a4sj8mzgij9h0nz5zkxax8v1zg1")) (modules '((guix build utils))) (snippet '(begin @@ -2197,24 +2211,24 @@ can autogenerate peewee models using @code{pwiz}, a model generator.") (define-public python-tortoise-orm (package (name "python-tortoise-orm") - (version "0.16.3") + (version "0.16.7") (source (origin (method url-fetch) (uri (pypi-uri "tortoise-orm" version)) (sha256 (base32 - "01hbvfyxs2qd1mjc96aipwsdxxhydw8ww686r4gsf87bl6f98dvz")))) + "0wr7p4v0b16ypm9fcpwpl99kf491m6w3jkd13xcsgq13fy73fbqc")))) (build-system python-build-system) ;; Disable tests for now. They pull in a lot of dependencies. (arguments `(#:tests? #f)) (native-inputs - `(("python-ciso8601" ,python-ciso8601) - ("python-asynctest" ,python-asynctest) + `(("python-asynctest" ,python-asynctest) ("python-nose2" ,python-nose2))) (propagated-inputs `(("python-aiosqlite" ,python-aiosqlite) ("python-pypika" ,python-pypika) + ("python-ciso8601" ,python-ciso8601) ("python-typing-extensions" ,python-typing-extensions))) (home-page @@ -2698,7 +2712,7 @@ PickleShare.") (define-public python-apsw (package (name "python-apsw") - (version "3.28.0-r1") + (version "3.31.1-r1") (source (origin (method url-fetch) @@ -2706,7 +2720,7 @@ PickleShare.") "/download/" version "/apsw-" version ".zip")) (sha256 (base32 - "0x62534l5hcgwrc4k2gxpdzc1sxlhm6m4nwlay74rnmr77qh8wly")))) + "1gap5lr6c7bp134nzvfwr693i6d0fqyaysg3ms2cayjldv616yfx")))) (build-system python-build-system) (native-inputs `(("unzip" ,unzip))) @@ -2743,14 +2757,14 @@ translate the complete SQLite API into Python.") (define-public python-aiosqlite (package (name "python-aiosqlite") - (version "0.11.0") + (version "0.12.0") (source (origin (method url-fetch) (uri (pypi-uri "aiosqlite" version)) (sha256 (base32 - "1f3zdldp9zgrw6qz5fsp3wa5zw73cjf139pj4vf24ryv895320jg")))) + "1w8248yz85xyzvvh4jaxnc59fqil45aka6h82kn1rcih4rjxbnn1")))) (build-system python-build-system) (native-inputs `(("python-aiounittest" ,python-aiounittest))) @@ -3074,14 +3088,16 @@ transforms idiomatic python function calls to well-formed SQL queries.") (define-public python-pypika (package (name "python-pypika") - (version "0.36.0") + (version "0.37.2") (source - (origin - (method url-fetch) - (uri (pypi-uri "PyPika" version)) - (sha256 - (base32 - "0qzn5vygirg52dlizm6ayzdc5llq8p2krrx0kymr236lrz89wqp8")))) + (origin (method git-fetch) + (uri (git-reference + (url "https://github.com/kayak/pypika.git") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "089z1c778q1fwhzsc88ws8j5gm2hgxknibabn4wpax8rz2bfs3ck")))) (build-system python-build-system) (native-inputs `(("python-parameterized" ,python-parameterized))) @@ -3456,7 +3472,8 @@ The drivers officially supported by @code{libdbi} are: ("sqlite" ,sqlite) ("odbc" ,unixodbc) ("boost" ,boost) - ("mysql" ,mysql))) + ("mariadb:dev" ,mariadb "dev") + ("mariadb:lib" ,mariadb "lib"))) (arguments `(#:tests? #f ; Tests may require running database management systems. #:phases @@ -3464,7 +3481,8 @@ The drivers officially supported by @code{libdbi} are: (add-after 'unpack 'fix-lib-path (lambda _ (substitute* "CMakeLists.txt" - (("set\\(SOCI_LIBDIR \"lib64\"\\)") ""))))))) + (("set\\(SOCI_LIBDIR \"lib64\"\\)") "")) + #t))))) (synopsis "C++ Database Access Library") (description "SOCI is an abstraction layer for several database backends, including diff --git a/gnu/packages/dav.scm b/gnu/packages/dav.scm index 5362d3505f..1b837dfe40 100644 --- a/gnu/packages/dav.scm +++ b/gnu/packages/dav.scm @@ -80,6 +80,11 @@ clients.") (if tests? (invoke "make" "test") #t))) + (add-after 'unpack 'patch-version-call + (lambda _ + (substitute* "docs/conf.py" + (("^release.*") (string-append "release = '" ,version "'\n"))) + #t)) (add-after 'install 'manpage (lambda* (#:key inputs outputs #:allow-other-keys) (invoke "make" "--directory=docs/" "man") diff --git a/gnu/packages/dbm.scm b/gnu/packages/dbm.scm index 5191c475c2..ea812c9715 100644 --- a/gnu/packages/dbm.scm +++ b/gnu/packages/dbm.scm @@ -55,7 +55,7 @@ #:phases (modify-phases %standard-phases (replace 'configure - (lambda* (#:key outputs #:allow-other-keys) + (lambda* (#:key target outputs #:allow-other-keys) (let ((out (assoc-ref outputs "out")) (doc (assoc-ref outputs "doc"))) ;; '--docdir' is not honored, so we need to patch. @@ -74,6 +74,10 @@ '("--build=aarch64-unknown-linux-gnu") '()) + ,@(if (%current-target-system) ; cross building + '((string-append "--host=" target)) + '()) + ;; Remove 7 MiB of .a files. "--disable-static" @@ -134,7 +138,8 @@ SQL, Key/Value, XML/XQuery or Java Object storage for their data model.") (sha256 (base32 "1p4ibds6z3ccy65lkmd6lm7js0kwifvl53r0fd759fjxgr917rl6")))) - (arguments `(#:configure-flags '("--enable-libgdbm-compat"))) + (arguments `(#:configure-flags '("--enable-libgdbm-compat" + "--disable-static"))) (build-system gnu-build-system) (home-page "http://www.gnu.org.ua/software/gdbm") (synopsis diff --git a/gnu/packages/debian.scm b/gnu/packages/debian.scm index ff4cccb03d..a3bbd2b907 100644 --- a/gnu/packages/debian.scm +++ b/gnu/packages/debian.scm @@ -27,6 +27,7 @@ #:use-module (gnu packages base) #:use-module (gnu packages compression) #:use-module (gnu packages gnupg) + #:use-module (gnu packages wget) #:use-module (gnu packages perl)) (define-public debian-archive-keyring @@ -190,3 +191,40 @@ scratch, without requiring the availability of @code{dpkg} or @code{apt}. It does this by downloading .deb files from a mirror site, and carefully unpacking them into a directory which can eventually be chrooted into.") (license license:gpl2))) + + +(define-public apt-mirror + (let ((commit "e664486a5d8947c2579e16dd793d762ea3de4202") + (revision "1")) + (package + (name "apt-mirror") + (version (git-version "0.5.4" revision commit)) + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/apt-mirror/apt-mirror/") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0qj6b7gldwcqyfs2kp6amya3ja7s4vrljs08y4zadryfzxf35nqq")))) + (build-system gnu-build-system) + (outputs '("out")) + (arguments + `(#:tests? #f + ;; sysconfdir is not PREFIXed in the makefile but DESTDIR is + ;; honored correctly; we therefore use DESTDIR for our + ;; needs. A more correct fix would involve patching. + #:make-flags (list (string-append "DESTDIR=" (assoc-ref %outputs "out")) + "PREFIX=/") + #:phases (modify-phases %standard-phases (delete 'configure)))) + (inputs + `(("wget" ,wget) + ("perl" ,perl))) + (home-page "http://apt-mirror.github.io/") + (synopsis "Script for mirroring a Debian repository") + (description + "apt-mirror is a small tool that provides the ability to +selectively mirror Debian and Ubuntu GNU/Linux distributions or any +other apt sources typically provided by open source developers.") + (license license:gpl2)))) diff --git a/gnu/packages/diffoscope.scm b/gnu/packages/diffoscope.scm index 71c0039dfb..1df8552a30 100644 --- a/gnu/packages/diffoscope.scm +++ b/gnu/packages/diffoscope.scm @@ -57,6 +57,7 @@ #:use-module (gnu packages ssh) #:use-module (gnu packages statistics) #:use-module (gnu packages textutils) + #:use-module (gnu packages tls) #:use-module (gnu packages video) #:use-module (gnu packages vim) #:use-module (gnu packages web) @@ -69,7 +70,7 @@ #:use-module (ice-9 match)) (define-public diffoscope - (let ((version "141")) + (let ((version "143")) (package (name "diffoscope") (version version) @@ -81,7 +82,7 @@ (file-name (git-file-name name version)) (sha256 (base32 - "0pls2jryx394ysaz0g8h959lhrsdqak9bkxjd5r6sdckgiikplkj")))) + "0j58dqdk8ln8y0bcnfy37ljs37nkl56lzxqns396300ysln0qiwm")))) (build-system python-build-system) (arguments `(#:phases (modify-phases %standard-phases @@ -96,8 +97,8 @@ (add-after 'unpack 'add-known-tools (lambda _ (substitute* "diffoscope/external_tools.py" - (("'debian': 'hdf5-tools'") - "'debian': 'hdf5-tools', 'guix': 'hdf5'")))) + (("'debian': 'openssl'") + "'debian': 'openssl', 'guix': 'openssl'")))) ;; This test is broken because our `file` package has a ;; bug in berkeley-db file type detection. (add-after 'unpack 'remove-berkeley-test @@ -161,6 +162,7 @@ (native-inputs `(("python-pytest" ,python-pytest) ("python-chardet" ,python-chardet) ("python-binwalk" ,python-binwalk) + ("python-h5py" ,python-h5py) ("python-pypdf2" ,python-pypdf2) ("python-progressbar33" ,python-progressbar33) ;; test suite skips tests when tool is missing @@ -205,6 +207,7 @@ ("ocaml" ,ocaml) ("odt2txt" ,odt2txt) ("openssh" ,openssh) + ("openssl" ,openssl) ("pgpdump" ,pgpdump) ("poppler" ,poppler) ("python-jsbeautifier" ,python-jsbeautifier) diff --git a/gnu/packages/disk.scm b/gnu/packages/disk.scm index b7d3b9d954..6b86f6ff76 100644 --- a/gnu/packages/disk.scm +++ b/gnu/packages/disk.scm @@ -48,6 +48,7 @@ #:use-module (gnu packages documentation) #:use-module (gnu packages elf) #:use-module (gnu packages file-systems) + #:use-module (gnu packages file) #:use-module (gnu packages fontutils) #:use-module (gnu packages gettext) #:use-module (gnu packages glib) @@ -103,16 +104,34 @@ (build-system gnu-build-system) (arguments `(#:configure-flags - (list "--disable-systemd" - (string-append "--sysconfdir=" - (assoc-ref %outputs "out") - "/etc")) + (list + "--disable-systemd" + (string-append "--sysconfdir=" + (assoc-ref %outputs "out") + "/etc") + ;; udevil expects these programs to be run with uid set as root. + ;; user has to manually add these programs to setuid-programs. + ;; mount and umount are default setuid-programs in guix system. + "--with-mount-prog=/run/setuid-programs/mount" + "--with-umount-prog=/run/setuid-programs/umount" + "--with-losetup-prog=/run/setuid-programs/losetup" + "--with-setfacl-prog=/run/setuid-programs/setfacl") #:phases (modify-phases %standard-phases (add-after 'unpack 'remove-root-reference (lambda _ (substitute* "src/Makefile.in" (("-o root -g root") "")) + #t)) + (add-after 'unpack 'patch-udevil-reference + ;; udevil expects itself to be run with uid set as root. + ;; devmon also expects udevil to be run with uid set as root. + ;; user has to manually add udevil to setuid-programs. + (lambda _ + (substitute* "src/udevil.c" + (("/usr/bin/udevil") "/run/setuid-programs/udevil")) + (substitute* "src/devmon" + (("`which udevil 2>/dev/null`") "/run/setuid-programs/udevil")) #t))))) (native-inputs `(("intltool" ,intltool) @@ -157,13 +176,15 @@ tmpfs/ramfs filesystems.") (inputs `(("lvm2" ,lvm2) ("readline" ,readline) - ("util-linux" ,util-linux))) + ("util-linux" ,util-linux "lib"))) (native-inputs `(("gettext" ,gettext-minimal) + ;; For the tests. ("e2fsprogs" ,e2fsprogs) ("perl" ,perl) - ("python" ,python-2))) + ("python" ,python-2) + ("util-linux" ,util-linux))) (home-page "https://www.gnu.org/software/parted/") (synopsis "Disk partition editor") (description @@ -187,7 +208,7 @@ tables. It includes a library and command-line utility.") (inputs `(("gettext" ,gettext-minimal) ("guile" ,guile-1.8) - ("util-linux" ,util-linux) + ("util-linux" ,util-linux "lib") ("parted" ,parted))) ;; The build neglects to look for its own headers in its own tree. A next ;; release should fix this, but may never come: GNU fdisk looks abandoned. @@ -227,7 +248,7 @@ tables, and it understands a variety of different formats.") `(("gettext" ,gettext-minimal) ("ncurses" ,ncurses) ("popt" ,popt) - ("util-linux" ,util-linux))) ; libuuid + ("util-linux" ,util-linux "lib"))) ;libuuid (arguments `(#:test-target "test" #:phases @@ -417,7 +438,7 @@ and can dramatically shorten the lifespan of the drive if left unchecked.") ;; as '/dev/disk/by-id' `(#:tests? #f)) (inputs - `(("util-linux" ,util-linux) + `(("util-linux" ,util-linux "lib") ("parted" ,parted) ("glib" ,glib) ("gtkmm" ,gtkmm) @@ -645,7 +666,7 @@ automatically finding out which program to use for what file type.") (inputs `(("cryptsetup" ,cryptsetup) ("nss" ,nss) - ("libblkid" ,util-linux) + ("libblkid" ,util-linux "lib") ("lvm2" ,lvm2) ; for "-ldevmapper" ("glib" ,glib) ("gpgme" ,gpgme))) @@ -698,7 +719,7 @@ passphrases.") ("json-c" ,json-c) ("keyutils" ,keyutils) ("kmod" ,kmod) - ("util-linux" ,util-linux))) + ("util-linux" ,util-linux "lib"))) (arguments `(#:configure-flags (list "--disable-asciidoctor" ; use docbook-xsl instead @@ -781,8 +802,17 @@ to create devices with respective mappings for the ATARAID sets discovered.") (base32 "15c7g2gbkahmy8c6677pvbvblan5h8jxcqqmn6nlvqwqynq2mkjm")))) (build-system gnu-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-after 'unpack 'patch-configuration-directory + (lambda* (#:key outputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out"))) + (substitute* "src/lib/blockdev.c" + (("/etc/libblockdev/conf.d/" path) (string-append out path))))))))) (native-inputs - `(("pkg-config" ,pkg-config) + `(("gobject-introspection" ,gobject-introspection) + ("pkg-config" ,pkg-config) ("python" ,python-wrapper) ("util-linux" ,util-linux))) (inputs @@ -792,7 +822,6 @@ to create devices with respective mappings for the ATARAID sets discovered.") ("dmraid" ,dmraid) ("eudev" ,eudev) ("glib" ,glib) - ("gobject-introspection" ,gobject-introspection) ("kmod" ,kmod) ("libbytesize" ,libbytesize) ("libyaml" ,libyaml) @@ -867,7 +896,7 @@ LVM D-Bus API).") ("libelf" ,libelf) ("elfutils" ,elfutils) ("json-glib" ,json-glib) - ("libblkid" ,util-linux))) + ("libblkid" ,util-linux "lib"))) (home-page "https://rmlint.rtfd.org") (synopsis "Remove duplicates and other lint from the file system") (description "@command{rmlint} finds space waste and other broken things @@ -917,39 +946,60 @@ since they are better handled by external tools.") (origin (method url-fetch) (uri - (string-append "https://sourceforge.net/projects/xfe/files/xfe/" - version - "/xfe-" version ".tar.gz")) + (string-append "mirror://sourceforge/xfe/xfe/" version "/" + "xfe-" version ".tar.gz")) (sha256 (base32 "1fl51k5jm2vrfc2g66agbikzirmp0yb0lqhmsssixfb4mky3hpzs")))) (build-system gnu-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-after 'unpack 'patch-bin-dirs + (lambda* (#:key inputs #:allow-other-keys) + (let* ((bash (assoc-ref inputs "bash")) + (coreutils (assoc-ref inputs "coreutils")) + (findutils (assoc-ref inputs "findutils")) + (file-prog (assoc-ref inputs "file"))) + (with-directory-excursion "src" + (substitute* '("FilePanel.cpp" "help.h" "SearchPanel.cpp" + "startupnotification.cpp" "xfeutils.cpp" + "../st/config.h") + (("/bin/sh" file) (string-append bash file)) + (("/bin/ls" file) (string-append coreutils file)) + (("/usr(/bin/du)" _ file) (string-append coreutils file)) + (("/usr(/bin/sort)" _ file) (string-append coreutils file)) + (("/usr(/bin/cut)" _ file) (string-append coreutils file)) + (("/usr(/bin/xargs)" _ file) (string-append findutils file)) + (("/usr(/bin/file)" _ file) (string-append file-prog file)))) + #t))) + (add-after 'unpack 'patch-share-dirs + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (share (string-append out "/share")) + (xfe (string-append share "/xfe"))) + (with-directory-excursion "src" + (substitute* '("foxhacks.cpp" "help.h" "xfedefs.h" + "XFileExplorer.cpp") + (("/(usr|opt)(/local)?/share") share) + (("~/.config/xfe") xfe))) + #t)))))) (native-inputs `(("intltool" ,intltool) ("pkg-config" ,pkg-config))) (inputs - `(("fox" ,fox) + `(("bash" ,bash) + ("coreutils" ,coreutils) + ("file" ,file) + ("findutils" ,findutils) + ("fox" ,fox) ("freetype" ,freetype) ("x11" ,libx11) ("xcb" ,libxcb) ("xcb-util" ,xcb-util) ("xft" ,libxft) ("xrandr" ,libxrandr))) - (arguments - `(#:phases - (modify-phases %standard-phases - (add-after 'unpack 'patch-xferc-path - (lambda* (#:key outputs #:allow-other-keys) - (let* ((out (assoc-ref outputs "out")) - (xferc (string-append out "/share/xfe/xferc"))) - (substitute* "src/XFileExplorer.cpp" - (("/usr/share/xfe/xferc") xferc)) - #t)))) - #:make-flags - (let ((out (assoc-ref %outputs "out"))) - (list (string-append "BASH_COMPLETION_DIR=" out - "/share/bash-completion/completions"))))) (synopsis "File Manager for X-Based Graphical Systems") - (description"XFE (X File Explorer) is a file manager for X. It is based on + (description "XFE (X File Explorer) is a file manager for X. It is based on the popular but discontinued, X Win Commander. It aims to be the file manager of choice for all light thinking Unix addicts!") (home-page "http://roland65.free.fr/xfe/") diff --git a/gnu/packages/display-managers.scm b/gnu/packages/display-managers.scm index 51605e09aa..c96b693dc3 100644 --- a/gnu/packages/display-managers.scm +++ b/gnu/packages/display-managers.scm @@ -6,6 +6,7 @@ ;;; Copyright © 2017 Sou Bunnbu <iyzsong@gmail.com> ;;; Copyright © 2017 Marius Bakke <mbakke@fastmail.com> ;;; Copyright © 2017, 2020 Tobias Geerinckx-Rice <me@tobias.gr> +;;; Copyright © 2020 L p R n d n <guix@lprndn.info> ;;; ;;; This file is part of GNU Guix. ;;; @@ -125,16 +126,15 @@ create smooth, animated user interfaces.") (define-public lightdm (package (name "lightdm") - (version "1.24.0") + (version "1.30.0") (source (origin (method url-fetch) - (uri (string-append "https://launchpad.net/lightdm/" - (version-major+minor version) "/" - version "/+download/lightdm-" - version ".tar.xz")) + (uri (string-append + "https://github.com/CanonicalLtd/lightdm/releases/download/" + version "/lightdm-" version ".tar.xz")) (sha256 (base32 - "18j33bm54i8k7ncxcs69zqi4105s62n58jrydqn3ikrb71s9nl6d")))) + "158zb2d0v1309a8v19hh32y4yj3v6yg4yg6m0l7v59d3a2b7f651")))) (build-system gnu-build-system) (arguments '(#:parallel-tests? #f ; fails when run in parallel @@ -153,12 +153,6 @@ create smooth, animated user interfaces.") (substitute* "src/seat.c" (("/bin/sh") (which "sh"))) #t)) - (add-after 'unpack 'disable-broken-tests - (lambda _ - (substitute* "tests/Makefile.in" - (("test-sessions-gobject ") "") - ((" test-sessions-python ") " ")) - #t)) (add-before 'check 'pre-check ;; Run test-suite under a dbus session. (lambda* (#:key inputs #:allow-other-keys) @@ -181,6 +175,7 @@ create smooth, animated user interfaces.") ("pkg-config" ,pkg-config) ("itstool" ,itstool) ("intltool" ,intltool) + ("vala" ,vala) ;for Vala bindings ;; For tests ("dbus" ,dbus) ("python" ,python-2) @@ -210,12 +205,44 @@ display manager which supports different greeters.") (base32 "1g7wc3d3vqfa7mrdhx1w9ywydgjbffla6rbrxq9k3sc62br97qms")))) (build-system gnu-build-system) + (arguments + `(#:configure-flags + (list (string-append "--enable-at-spi-command=" + (assoc-ref %build-inputs "at-spi2-core") + "/libexec/at-spi-bus-launcher")) + #:phases + (modify-phases %standard-phases + (add-after 'install 'fix-.desktop-file + (lambda* (#:key outputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out"))) + (substitute* (string-append + out "/share/xgreeters/lightdm-gtk-greeter.desktop") + (("Exec=lightdm-gtk-greeter") + (string-append "Exec=" out "/sbin/lightdm-gtk-greeter"))) + #t))) + (add-after 'fix-.desktop-file 'wrap-program + ;; Mimic glib-or-gtk build system + ;; which doesn't wrap files in /sbin + (lambda* (#:key outputs inputs #:allow-other-keys) + (let ((gtk (assoc-ref inputs "gtk+"))) + (wrap-program (string-append (assoc-ref outputs "out") + "/sbin/lightdm-gtk-greeter") + `("XDG_DATA_DIRS" ":" prefix + ,(cons "/run/current-system/profile/share" + (map (lambda (pkg) + (string-append (assoc-ref inputs pkg) "/share")) + '("gtk+" "shared-mime-info" "glib")))) + `("GTK_PATH" ":" prefix (,gtk)) + `("GIO_EXTRA_MODULES" ":" prefix (,gtk)))) + #t))))) (native-inputs `(("exo" ,exo) ("intltool" ,intltool) ("pkg-config" ,pkg-config))) (inputs `(("lightdm" ,lightdm) + ("shared-mime-info" ,shared-mime-info) + ("at-spi2-core" ,at-spi2-core) ("gtk+" ,gtk+))) (synopsis "GTK+ greeter for LightDM") (home-page "https://launchpad.net/lightdm-gtk-greeter") @@ -244,7 +271,7 @@ GTK+, lets you select a desktop session and log in to it.") (build-system cmake-build-system) (inputs `(("linux-pam" ,linux-pam) ("libpng" ,libpng) - ("libjpeg" ,libjpeg) + ("libjpeg" ,libjpeg-turbo) ("freeglut" ,freeglut) ("libxrandr" ,libxrandr) ("libxrender" ,libxrender) diff --git a/gnu/packages/django.scm b/gnu/packages/django.scm index 8e72139a07..0cf414ad41 100644 --- a/gnu/packages/django.scm +++ b/gnu/packages/django.scm @@ -1,7 +1,7 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2016 Hartmut Goebel <h.goebel@crazy-compilers.com> ;;; Copyright © 2016, 2019 Efraim Flashner <efraim@flashner.co.il> -;;; Copyright © 2017 ng0 <ng0@n0.is> +;;; Copyright © 2017 Nikita <nikita@n0.is> ;;; Copyright © 2017, 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2017 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2018 Vijayalakshmi Vedantham <vijimay12@gmail.com> diff --git a/gnu/packages/dns.scm b/gnu/packages/dns.scm index 86569b5493..469ef7605d 100644 --- a/gnu/packages/dns.scm +++ b/gnu/packages/dns.scm @@ -4,9 +4,9 @@ ;;; Copyright © 2016 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2016, 2017 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2016 John Darrington <jmd@gnu.org> -;;; Copyright © 2016 ng0 <ng0@n0.is> +;;; Copyright © 2016 Nikita <nikita@n0.is> ;;; Copyright © 2016, 2017, 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr> -;;; Copyright © 2016 Marius Bakke <mbakke@fastmail.com> +;;; Copyright © 2016, 2020 Marius Bakke <mbakke@fastmail.com> ;;; Copyright © 2017 Vasile Dumitrascu <va511e@yahoo.com> ;;; Copyright © 2017 Gregor Giesen <giesen@zaehlwerk.net> ;;; Copyright © 2018 Oleg Pykhalov <go.wigust@gmail.com> @@ -15,6 +15,8 @@ ;;; Copyright © 2019 Rutger Helling <rhelling@mykolab.com> ;;; Copyright © 2020 Pierre Langlois <pierre.langlois@gmx.com> ;;; Copyright © 2020 Arun Isaac <arunisaac@systemreboot.net> +;;; Copyright © 2020 Leo Famulari <leo@famulari.name> +;;; Copyright © 2020 Brice Waegeneire <brice@waegenei.re> ;;; ;;; This file is part of GNU Guix. ;;; @@ -878,22 +880,16 @@ System (HNS) peer-to-peer network.") (define-public libmicrodns (package (name "libmicrodns") - (version "0.0.10") + (version "0.1.2") (source (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/videolabs/libmicrodns") - (commit version))) - (file-name (git-file-name name version)) + (method url-fetch) + (uri (string-append "https://github.com/videolabs/libmicrodns/" + "releases/download/" version "/microdns-" + version ".tar.xz")) (sha256 (base32 - "1xvl9k49ng35wbsqmnjnyqvkyjf8dcq2ywsq3jp3wh0rgmxhq2fh")))) - (build-system gnu-build-system) - (native-inputs - `(("pkg-config" ,pkg-config) - ("autoconf" ,autoconf) - ("automake" ,automake) - ("libtool" ,libtool))) + "0p4va18zxgmzcdwhlbg2mmjwswlbgqy4ay5vaxrw7cxmhsflnv36")))) + (build-system meson-build-system) (home-page "https://github.com/videolabs/libmicrodns") (synopsis "Minimal mDNS resolver library") (description "@code{libmicrodns} provides a minimal implementation of a @@ -1006,3 +1002,34 @@ known public suffixes.") consists of a UDP-only authoritative DNS server for hosting domains, and a UDP and TCP-capable recursive DNS server for finding domains on the internet.") (license license:bsd-2))) + +(define-public openresolv + (package + (name "openresolv") + (version "3.10.0") + (source (origin + (method url-fetch) + (uri (string-append "https://roy.marples.name/downloads/openresolv/" + "openresolv-" version ".tar.xz")) + (sha256 + (base32 + "01ms6c087la4hk0f0w6n2vpsb7dg4kklah2rqyhz88p0vr9bqy20")) + (patches + (search-patches "openresolv-restartcmd-guix.patch")))) + (build-system gnu-build-system) + (arguments + `(#:tests? #f ; No test suite + #:configure-flags + (list (string-append "--sysconfdir=/etc")) + #:make-flags + (list (string-append "SYSCONFDIR=/" (assoc-ref %outputs "out") "/etc")))) + (home-page "https://roy.marples.name/projects/openresolv/") + (synopsis "Resolvconf POSIX compliant implementation, a middleman for resolv.conf") + (description "openresolv is an implementation of @command{resolvconf}, the +middleman between the network configuration services and +@file{/etc/resolv.conf}. @command{resolvconf} itself is just a script that +stores, removes and lists a full @file{resolv.conf} generated for the +interface. It then calls all the helper scripts it knows about so it can +configure the real @file{/etc/resolv.conf} and optionally any local +nameservers other than libc.") + (license license:bsd-2))) diff --git a/gnu/packages/docbook.scm b/gnu/packages/docbook.scm index 098c2b4dfb..7221dd8fd9 100644 --- a/gnu/packages/docbook.scm +++ b/gnu/packages/docbook.scm @@ -183,7 +183,7 @@ by no means limited to these applications.) This package provides XML DTDs.") (define-public dblatex (package (name "dblatex") - (version "0.3.10") + (version "0.3.11") (source (origin (method url-fetch) (uri (string-append "mirror://sourceforge/dblatex/dblatex/" @@ -191,7 +191,7 @@ by no means limited to these applications.) This package provides XML DTDs.") version ".tar.bz2")) (sha256 (base32 - "1yicd861rqz78i2khl35j7nvc0ccv4jx4hzqrbhll17082vrdmkg")))) + "0rp1bc2lgisigscq1i7zxfd2qdaxxxld6khbcxss4pq7fpi9fzkv")))) (build-system python-build-system) ;; TODO: Add xfig/transfig for fig2dev utility (inputs diff --git a/gnu/packages/documentation.scm b/gnu/packages/documentation.scm index 50e0f25cfb..dcacdb456f 100644 --- a/gnu/packages/documentation.scm +++ b/gnu/packages/documentation.scm @@ -7,6 +7,7 @@ ;;; Copyright © 2017 Kei Kebreau <kkebreau@posteo.net> ;;; Copyright © 2017 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr> +;;; Copyright © 2019 Mathieu Othacehe <m.othacehe@gmail.com> ;;; Copyright © 2020 Ricardo Wurmus <rekado@elephly.net> ;;; ;;; This file is part of GNU Guix. @@ -33,6 +34,7 @@ #:use-module (guix build-system cmake) #:use-module (gnu packages) #:use-module (gnu packages autotools) + #:use-module (gnu packages base) #:use-module (gnu packages bash) #:use-module (gnu packages python) #:use-module (gnu packages bison) @@ -148,7 +150,7 @@ markup) can be customized and extended by the user.") (define-public doxygen (package (name "doxygen") - (version "1.8.15") + (version "1.8.17") (home-page "http://www.doxygen.nl/") (source (origin (method url-fetch) @@ -159,8 +161,9 @@ markup) can be customized and extended by the user.") ".src.tar.gz"))) (sha256 (base32 - "0p94b4yb6bk2dxzs5kyl82xxgq2qakgbx5yy3ssbbadncb20x75x")) - (patches (search-patches "doxygen-test.patch")))) + "16dmv0gm1x8rvbm82fmjvi213q8fxqxinm75pcf595flya59ific")) + (patches (search-patches "doxygen-test.patch" + "doxygen-1.8.17-runtests.patch")))) (build-system cmake-build-system) (native-inputs `(("bison" ,bison) @@ -170,7 +173,15 @@ markup) can be customized and extended by the user.") (inputs `(("bash" ,bash-minimal))) (arguments - `(#:test-target "tests" + ;; Force cmake to use iconv header from cross-libc instead of the one + ;; from native libc. + `(,@(if (%current-target-system) + '(#:configure-flags + (list (string-append "-DICONV_INCLUDE_DIR=" + (assoc-ref %build-inputs "cross-libc") + "/include"))) + '()) + #:test-target "tests" #:phases (modify-phases %standard-phases (add-before 'configure 'patch-sh (lambda* (#:key inputs #:allow-other-keys) diff --git a/gnu/packages/ebook.scm b/gnu/packages/ebook.scm index 37be173949..4243c71673 100644 --- a/gnu/packages/ebook.scm +++ b/gnu/packages/ebook.scm @@ -5,6 +5,7 @@ ;;; Copyright © 2017, 2019 Brendan Tildesley <mail@brendan.scot> ;;; Copyright © 2017 Roel Janssen <roel@gnu.org> ;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr> +;;; Copyright © 2020 Marius Bakke <mbakke@fastmail.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -291,13 +292,13 @@ designed to be used in a generic text renderer.") ("fribidi" ,fribidi) ("glib" ,glib) ("gtk+-2" ,gtk+-2) - ("libjpeg" ,libjpeg) + ("libjpeg" ,libjpeg-turbo) ("liblinebreak" ,liblinebreak) ("libxft" ,libxft) ("sqlite" ,sqlite) ("zlib" ,zlib))) (native-inputs - `(("gcc" ,gcc-5) + `(("gcc@5" ,gcc-5) ("pkg-config" ,pkg-config))) (arguments `(#:tests? #f ; No tests exist. @@ -309,6 +310,18 @@ designed to be used in a generic text renderer.") (assoc-ref %outputs "out") "/lib")) #:phases (modify-phases %standard-phases + (add-after 'set-paths 'augment-CPLUS_INCLUDE_PATH + (lambda* (#:key inputs #:allow-other-keys) + ;; Hide the default GCC from CPLUS_INCLUDE_PATH to prevent a header + ;; conflict with the GCC provided in native-inputs. + (let ((gcc (assoc-ref inputs "gcc"))) + (setenv "CPLUS_INCLUDE_PATH" + (string-join + (delete (string-append gcc "/include/c++") + (string-split (getenv "CPLUS_INCLUDE_PATH") + #\:)) + ":")) + #t))) (delete 'configure) (add-after 'unpack 'fix-install-locations (lambda* (#:key outputs #:allow-other-keys) diff --git a/gnu/packages/ed.scm b/gnu/packages/ed.scm index c2198763ef..da4c3ddf04 100644 --- a/gnu/packages/ed.scm +++ b/gnu/packages/ed.scm @@ -28,14 +28,14 @@ (define-public ed (package (name "ed") - (version "1.15") + (version "1.16") (source (origin (method url-fetch) (uri (string-append "mirror://gnu/ed/ed-" version ".tar.lz")) (sha256 (base32 - "0x6ivy5k0d7dy5z9g8q8nipr89m4qbk2ink2898qq43smp08ji5d")))) + "0b4b1lwizvng9bvpcjnmpj2i80xz9xw2w8nfff27b2h4mca7mh6g")))) (build-system gnu-build-system) (native-inputs `(("lzip" ,lzip))) (arguments diff --git a/gnu/packages/education.scm b/gnu/packages/education.scm index a1fee29c4e..d6c2cd02c3 100644 --- a/gnu/packages/education.scm +++ b/gnu/packages/education.scm @@ -606,14 +606,14 @@ Portuguese, Spanish and Italian.") (define-public fet (package (name "fet") - (version "5.44.0") + (version "5.44.4") (source (origin (method url-fetch) (uri (string-append "https://www.lalescu.ro/liviu/fet/download/" "fet-" version ".tar.bz2")) (sha256 - (base32 "13q3b0g1zz885g15gir8fbalvix8sy42v1p429h0751490wq5c3h")))) + (base32 "1bji4910v6adhngdh5ajz5bxam9z3yqnh8d1h1xajy6npm6qq3nx")))) (build-system gnu-build-system) (arguments `(#:phases @@ -632,14 +632,14 @@ Portuguese, Spanish and Italian.") `(("qtbase" ,qtbase))) (home-page "https://www.lalescu.ro/liviu/fet/") (synopsis "Timetabling software") - (description "FET is a program for automatically scheduling the -timetable of a school, high-school or university. It uses a fast and -efficient timetabling algorithm. + (description + "FET is a program for automatically scheduling the timetable of a school, +high-school or university. It uses a fast and efficient timetabling +algorithm. -Usually, FET is able to solve a complicated timetable in maximum 5-20 -minutes. For simpler timetables, it may take a shorter time, under -5 minutes (in some cases, a matter of seconds). For extremely -difficult timetables, it may take a longer time, a matter of hours.") +Usually, FET is able to solve a complicated timetable in maximum 5-20 minutes. +For extremely difficult timetables, it may take a longer time, a matter of +hours.") (license license:agpl3+))) (define-public klavaro diff --git a/gnu/packages/efi.scm b/gnu/packages/efi.scm index 13c33adbd3..d986913243 100644 --- a/gnu/packages/efi.scm +++ b/gnu/packages/efi.scm @@ -112,6 +112,7 @@ environment presented by Intel's EFI.") ("util-linux" ,util-linux))) ; getopt (inputs `(("gnu-efi" ,gnu-efi) + ("libuuid" ,util-linux "lib") ("openssl" ,openssl))) (synopsis "EFI signing tools") (description "This package provides tools for signing EFI binaries.") diff --git a/gnu/packages/elixir.scm b/gnu/packages/elixir.scm index 6f744af2f1..0613acff27 100644 --- a/gnu/packages/elixir.scm +++ b/gnu/packages/elixir.scm @@ -4,7 +4,7 @@ ;;; Copyright © 2016 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2017 nee <nee.git@cock.li> ;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr> -;;; Copyright © 2018 ng0 <ng0@n0.is> +;;; Copyright © 2018 Nikita <nikita@n0.is> ;;; ;;; This file is part of GNU Guix. ;;; diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm index 2c61c4189d..015bb06e4a 100644 --- a/gnu/packages/emacs-xyz.scm +++ b/gnu/packages/emacs-xyz.scm @@ -1,10 +1,10 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2014 Taylan Ulrich Bayirli/Kammer <taylanbayirli@gmail.com> -;;; Copyright © 2013, 2014, 2015, 2016, 2017, 2018, 2019 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2014, 2015, 2016, 2017, 2018 Mark H Weaver <mhw@netris.org> ;;; Copyright © 2014, 2015, 2016, 2017, 2018, 2019 Alex Kost <alezost@gmail.com> ;;; Copyright © 2015 Federico Beffa <beffa@fbengineering.ch> -;;; Copyright © 2015, 2016, 2017, 2018, 2019 Ricardo Wurmus <rekado@elephly.net> +;;; Copyright © 2015, 2016, 2017, 2018, 2019, 2020 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2016, 2017, 2018, 2019 Chris Marusich <cmmarusich@gmail.com> ;;; Copyright © 2015, 2016, 2018 Christopher Lemmer Webber <cwebber@dustycloud.org> ;;; Copyright © 2016 Adriano Peluso <catonano@gmail.com> @@ -12,7 +12,7 @@ ;;; Copyright © 2016 David Thompson <davet@gnu.org> ;;; Copyright © 2016 Matthew Jordan <matthewjordandevops@yandex.com> ;;; Copyright © 2016, 2017 Roel Janssen <roel@gnu.org> -;;; Copyright © 2016, 2017 ng0 <ng0@n0.is> +;;; Copyright © 2016, 2017 Nikita <nikita@n0.is> ;;; Copyright © 2016, 2019 Alex Griffin <a@ajgrf.com> ;;; Copyright © 2016, 2017, 2018, 2019, 2020 Nicolas Goaziou <mail@nicolasgoaziou.fr> ;;; Copyright © 2016, 2017, 2018 Alex Vong <alexvong1995@gmail.com> @@ -68,6 +68,8 @@ ;;; Copyright © 2020 John Soo <jsoo1@asu.edu> ;;; Copyright © 2020 Jérémy Korwin-Zmijowski <jeremy@korwin-zmijowski.fr> ;;; Copyright © 2020 Alberto Eleuterio Flores Guerrero <barbanegra+guix@posteo.mx> +;;; Copyright © 2020 Marius Bakke <mbakke@fastmail.com> +;;; Copyright © 2020 pinoaffe <pinoaffe@airmail.cc> ;;; ;;; This file is part of GNU Guix. ;;; @@ -1001,13 +1003,13 @@ in certain cases. It also enables recursion for anonymous functions.") (define-public emacs-xr (package (name "emacs-xr") - (version "1.18") + (version "1.19") (source (origin (method url-fetch) (uri (string-append "https://elpa.gnu.org/packages/xr-" version ".tar")) (sha256 - (base32 "1nq9pj47sxgpkw97c2xrkhgcwh3zsfd2a22qiqbl4i9zf2l9yy91")))) + (base32 "1aa3iqh0r635jw8k89zh8y4am9d4hfrqpk9mrdh2b51invjn8llq")))) (build-system emacs-build-system) (home-page "https://elpa.gnu.org/packages/xr.html") (synopsis "Convert string regexp to rx notation") @@ -1105,14 +1107,14 @@ optional minor mode which can apply this command automatically on save.") (define-public emacs-relint (package (name "emacs-relint") - (version "1.15") + (version "1.17") (source (origin (method url-fetch) (uri (string-append "https://elpa.gnu.org/packages/relint-" version ".tar")) (sha256 - (base32 "0sxmdsacj8my942k8j76m2y68nzab7190acv7cwgflc5n4f07yxa")))) + (base32 "1nv13dqdhf72c1jgk1ml4k6jqb8wsyphcx2vhsyhig5198lg4kd7")))) (build-system emacs-build-system) (propagated-inputs `(("emacs-xr" ,emacs-xr))) (home-page "https://github.com/mattiase/relint") @@ -1321,33 +1323,32 @@ incrementally confined in Isearch manner.") (define-public emacs-emms (package (name "emacs-emms") - (version "5.3") - (source (origin - (method url-fetch) - (uri (string-append "mirror://gnu/emms/emms-" - version ".tar.gz")) - (sha256 - (base32 - "00hnv7jjgb2simgrf7gf2y1cyg2syk7kj1hkbac146hlgxk8ngj1")) - (modules '((guix build utils))) - (snippet - '(begin - (substitute* "Makefile" - (("/usr/bin/install-info") - ;; No need to use 'install-info' since it would create a - ;; useless 'dir' file. - "true") - (("^INFODIR=.*") - ;; Install Info files to $out/share/info, not $out/info. - "INFODIR := $(PREFIX)/share/info\n") - (("/site-lisp/emms") - ;; Install directly in share/emacs/site-lisp, not in a - ;; sub-directory. - "/site-lisp") - (("^all: (.*)\n" _ rest) - ;; Build 'emms-print-metadata'. - (string-append "all: " rest " emms-print-metadata\n"))) - #t)))) + (version "5.4") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://gnu/emms/emms-" version ".tar.gz")) + (sha256 + (base32 "1nd7sb6pva7qb1ki6w0zhd6zvqzd7742kaqi0f3v4as5jh09l6nr")) + (modules '((guix build utils))) + (snippet + '(begin + (substitute* "Makefile" + (("/usr/bin/install-info") + ;; No need to use 'install-info' since it would create a + ;; useless 'dir' file. + "true") + (("^INFODIR=.*") + ;; Install Info files to $out/share/info, not $out/info. + "INFODIR := $(PREFIX)/share/info\n") + (("/site-lisp/emms") + ;; Install directly in share/emacs/site-lisp, not in a + ;; sub-directory. + "/site-lisp") + (("^all: (.*)\n" _ rest) + ;; Build 'emms-print-metadata'. + (string-append "all: " rest " emms-print-metadata\n"))) + #t)))) (build-system gnu-build-system) (arguments `(#:modules ((guix build gnu-build-system) @@ -1516,6 +1517,29 @@ This package turns this into an O(1) operation. It does so by assigning a letter to each link using avy.") (license license:gpl3+))) +(define-public emacs-auto-sudoedit + (package + (name "emacs-auto-sudoedit") + (version "1.0.0") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/ncaq/auto-sudoedit.git") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "10p0hc95j382km8655pqld9wxg10j1f36czzppkdd6a55cxarv9f")))) + (propagated-inputs + `(("emacs-f" ,emacs-f))) + (build-system emacs-build-system) + (home-page "https://github.com/ncaq/auto-sudoedit") + (synopsis "Automatically re-open read-only files with sudo") + (description + "This package automatically reopens a file or directory with +@command{sudo} if it cannot write to it.") + (license license:expat))) + (define-public emacs-bbdb (package (name "emacs-bbdb") @@ -2179,7 +2203,7 @@ window).") `(("autoconf" ,autoconf) ("automake" ,automake) ("emacs" ,emacs-minimal) - ("texinfo" ,texinfo))) + ("texinfo" ,texinfo-5))) ;fails to build with Texinfo 6.7 (home-page "https://github.com/purcell/mmm-mode") (synopsis "Allow multiple major modes in an Emacs buffer") (description @@ -2250,6 +2274,30 @@ programs @command{djvused}, @command{djview}, @command{ddjvu}, and @command{djvm} installed.") (license license:gpl3+))) +(define-public emacs-pabbrev + (package + (name "emacs-pabbrev") + (version "4.2.1") + (source + (origin + (method url-fetch) + (uri (string-append "https://elpa.gnu.org/packages/" + "pabbrev-" version ".el")) + (sha256 + (base32 "19v5adk61y8fpigw7k6wz6dj79jwr450hnbi7fj0jvb21cvjmfxh")))) + (build-system emacs-build-system) + (home-page "http://elpa.gnu.org/packages/pabbrev.html") + (synopsis "Predictive abbreviation expansion") + (description + "The code provides a abbreviation expansion for Emacs. It is +fairly similar to Dabbrev expansion, which works based on the contents +of the current buffer (or other buffers). + +Predictive abbreviation expansion works based on the previously +written text. Unlike dynamic abbreviation, the text is analysed +during idle time, while Emacs is doing nothing else.") + (license license:gpl3+))) + (define-public emacs-pdf-tools (package (name "emacs-pdf-tools") @@ -2380,13 +2428,21 @@ type, for example: packages, buffers, files, etc.") "releases/emacs-guix-" version ".tar.gz")) (sha256 (base32 - "0yz64c0z4ygi2k4af18k4r1ncgys18jb8icywkp2g5pgmpn5l7ps")))) + "0yz64c0z4ygi2k4af18k4r1ncgys18jb8icywkp2g5pgmpn5l7ps")) + (modules '((guix build utils))) + (snippet + '(begin + ;; Add support for Guile 3.0. Remove for versions > 0.5.2. + (substitute* "configure" + (("\"2\\.2 2\\.0\"") + "\"3.0 2.2 2.0\"")) + #t)))) (build-system gnu-build-system) (native-inputs `(("pkg-config" ,pkg-config) ("emacs" ,emacs-minimal))) (inputs - `(("guile" ,guile-2.2) + `(("guile" ,guile-3.0) ("guix" ,guix))) (propagated-inputs `(("geiser" ,emacs-geiser) @@ -2455,7 +2511,7 @@ work with Emacs 24 and 25.") (define-public emacs-extempore-mode ;; Use the latest commit at time of packaging. There are no releases or tags. - (let ((commit "848ad0084f27b92d1cf98dabffbad29f959a642d") + (let ((commit "09518ae6650d7be33a4633a4c0f31b7130d04c6e") (revision "1")) (package (name "emacs-extempore-mode") @@ -2468,7 +2524,7 @@ work with Emacs 24 and 25.") (commit commit))) (file-name (git-file-name name version)) (sha256 - (base32 "00wr025php7nl33x541s9rjm99hj0jbdcmnw9ljx5hqpm04aqm7c")))) + (base32 "0hfza9lzdsz94gxhmzyp9fwviscv19rmnjgd0q613faayn11sjsp")))) (build-system emacs-build-system) (home-page "https://github.com/extemporelang/extempore-emacs-mode") (synopsis "Emacs major mode for Extempore source files") @@ -2478,6 +2534,37 @@ create an Extempore REPL, connect the current @code{extempore-mode} buffer to a running Extempore process, and more.") (license license:bsd-2)))) +(define-public emacs-kakoune + ;; Package has no release. Version is extracted from "Version:" keyword in + ;; main file. + (let ((commit "d73d14e69ea38076af50cc69f846808383ff539d") + (revision "0")) + (package + (name "emacs-kakoune") + (version (git-version "0.1" revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/jmorag/kakoune.el.git") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0nk6jdy1y5mc3ryd0smiqghrk6iv34d5grc7f7migmshlbq0np92")))) + (build-system emacs-build-system) + (propagated-inputs + `(("emacs-expand-region" ,emacs-expand-region) + ("emacs-multiple-cursors" ,emacs-multiple-cursors) + ("emacs-ryo-modal" ,emacs-ryo-modal))) + (home-page "https://github.com/jmorag/kakoune.el") + (synopsis "Emacs simple simulation, but not emulation, of Kakoune") + (description "This package provides many, but not all of the editing +primitives in the Kakoune editor. Unlike Evil mode for Vim, this is a very +shallow emulation, which seeks to do as little work as possible, leveraging +Emacs native editing commmands and the work of other packages wherever +possible.") + (license license:expat)))) + (define-public emacs-keyfreq (package (name "emacs-keyfreq") @@ -2628,10 +2715,34 @@ Stack Overflow, Super User, and other StackExchange sites.") (home-page "https://github.com/dryman/toml-mode.el") (synopsis "Emacs major mode for editing TOML files") (description - "This package provides a major mode for editing files in @acronym{TOML, -Tom's Obvious, Minimal Language} data format.") + ;; XXX: Ideally we'd use @acronym for "TOML", but Guile's Texinfo + ;; parser does not currently support @comma{}, making it impossible + ;; to use commas in the @acronym arguments. + "This package provides a major mode for editing files in @dfn{TOML} +(Tom's Obvious, Minimal Language) data format.") (license license:gpl3+)))) +(define-public emacs-twittering-mode + (package + (name "emacs-twittering-mode") + (version "3.1.0") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://sourceforge/twmode" + "/twittering-mode-" version + "/twittering-mode-" version ".tar.xz")) + (sha256 + (base32 "02imis1gxz90lah0b5n37j2hlsaw5igss11d85vpsm5d1bgw8j28")))) + (build-system emacs-build-system) + (home-page "http://twmode.sourceforge.net") + (synopsis "Emacs major mode for Twitter") + (description + "Twittering mode is an Emacs major mode for Twitter. +You can check timelines, tweet, mark posts as favorites and so on with +Emacs.") + (license license:gpl2+))) + (define-public emacs-f (package (name "emacs-f") @@ -4295,6 +4406,28 @@ completion backends according to mode, and integrates with @code{use-package}.") (license license:gpl3+)))) +(define-public emacs-icomplete-vertical + (package + (name "emacs-icomplete-vertical") + (version "0.1") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/oantolin/icomplete-vertical.git") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1bqnlvv1gvrjriazvzd3bq98r8ii6fqax0zznhvkl1ij5pf55a90")))) + (build-system emacs-build-system) + (home-page "https://github.com/oantolin/icomplete-vertical") + (synopsis "Display icomplete candidates vertically") + (description + "This package defines a global minor mode to display Icomplete +completion candidates vertically.") + (license license:gpl3+))) + (define-public emacs-handle (let ((commit "51c050bc1c6e5caf0eb47ecd985daea1db7241ab") (revision "2")) @@ -7291,6 +7424,30 @@ of its name.") names, e.g. #0000ff is displayed in white with a blue background.") (license license:gpl3+))) +(define-public emacs-ryo-modal + ;; Package has no release. Version is extracted from "Version:" keyword in + ;; main file. + (let ((commit "3a54312eea7023a86ca3f8eb3c03c872554bff2f") + (revision "0")) + (package + (name "emacs-ryo-modal") + (version (git-version "0.4" revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/Kungsgeten/ryo-modal.git") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1cyvp3bi6yhckbdnq98xvghmhdzghya5y9wd7hxjawibs75rza95")))) + (build-system emacs-build-system) + (home-page "http://github.com/Kungsgeten/ryo-modal") + (synopsis "Emacs minor mode for defining modal editing environments") + (description "RYO modal provides a convenient way of defining modal +keybindings in Emacs, and does not come with any predefined bindings.") + (license license:expat)))) + (define-public emacs-visual-fill-column (package (name "emacs-visual-fill-column") @@ -7436,24 +7593,47 @@ special variables. An interface to GitLab’s CI file linter is also provided via @code{gitlab-ci-lint}.") (license license:gpl3+))) -(define-public emacs-web-mode +(define-public emacs-gitlab-snip-helm (package - (name "emacs-web-mode") - (version "16") + (name "emacs-gitlab-snip-helm") + (version "0.0.2") (source (origin (method git-fetch) (uri (git-reference - (url "https://github.com/fxbois/web-mode.git") - (commit (string-append "v" version)))) + (url "https://gitlab.com/sasanidas/gitlab-snip-helm.git") + (commit version))) (file-name (git-file-name name version)) (sha256 (base32 - "17dw6a8d0p304f2sa4f9zwd8r48w2wbkc3fvbmxwlg4w12h7cwf0")))) + "1c5js19zyb1z61hapvbfcl5jhrjqij46cxldgqij6al0scw44dga")))) + (build-system emacs-build-system) + (propagated-inputs + `(("emacs-dash" ,emacs-dash) + ("emacs-helm" ,emacs-helm))) + (home-page "https://gitlab.com/sasanidas/gitlab-snip-helm/") + (synopsis "GitLab snippet API interaction for Emacs") + (description "This package provides GitLab snippet API interaction for +Emacs.") + (license license:gpl3+))) + +(define-public emacs-web-mode + (package + (name "emacs-web-mode") + (version "17") + (source + (origin + (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 "0jr5a1nzp8nbdng0k2fcaymiiv9ngrbknbrqaswgqn3akvx793jk")))) (build-system emacs-build-system) (synopsis "Major mode for editing web templates") - (description "Web-mode is an Emacs major mode for editing web templates + (description "Web mode is an Emacs major mode for editing web templates aka HTML files embedding parts (CSS/JavaScript) and blocks (pre rendered by -client/server side engines). Web-mode is compatible with many template +client/server side engines). Web mode is compatible with many template engines: PHP, JSP, ASP, Django, Twig, Jinja, Mustache, ERB, FreeMarker, Velocity, Cheetah, Smarty, CTemplate, Mustache, Blade, ErlyDTL, Go Template, Dust.js, React/JSX, Angularjs, ejs, etc.") @@ -8092,8 +8272,8 @@ extensions.") (license license:gpl3+))) (define-public emacs-evil-collection - (let ((commit "a478a95a8a3665e40bdae3bab2a0519db6c1f29c") - (revision "13")) + (let ((commit "d062cc206d671fb5aefb1e0e679a9cb1d6c73e33") + (revision "14")) (package (name "emacs-evil-collection") (version (git-version "0.0.3" revision commit)) @@ -8105,7 +8285,7 @@ extensions.") (file-name (git-file-name name version)) (sha256 (base32 - "15ii5lw6hs4yyl22yyzfwzagdma2sman4rm5gq4m9773g4ava515")))) + "1zizfqmfrxx3shgggwa74rg2qqbrs8704wf94ajx0k11dbm1dbrp")))) (build-system emacs-build-system) (propagated-inputs `(("emacs-evil" ,emacs-evil) @@ -10185,15 +10365,12 @@ It should enable you to implement low-level X11 applications.") ;; Add a .desktop file to xsessions (mkdir-p xsessions) (mkdir-p bin) - (with-output-to-file - (string-append xsessions "/exwm.desktop") - (lambda _ - (format #t "[Desktop Entry]~@ - Name=~a~@ - Comment=~a~@ - Exec=~a~@ - TryExec=~:*~a~@ - Type=Application~%" ,name ,synopsis exwm-executable))) + (make-desktop-entry-file + (string-append xsessions "/exwm.desktop") + #:name ,name + #:comment ,synopsis + #:exec exwm-executable + #:try-exec exwm-executable) ;; Add a shell wrapper to bin (with-output-to-file exwm-executable (lambda _ @@ -10520,6 +10697,29 @@ as bold, underscore or italic.") Emacs.") (license license:gpl3+))) +(define-public emacs-eglot + (package + (name "emacs-eglot") + (version "1.6") + (source + (origin + (method url-fetch) + (uri (string-append "https://elpa.gnu.org/packages/" + "eglot-" version ".tar")) + (sha256 + (base32 "15hd6sx7qrpvlvhwwkcgdiki8pswwf4mm7hkm0xvznskfcp44spx")))) + (build-system emacs-build-system) + (propagated-inputs + `(("emacs-jsonrpc" ,emacs-jsonrpc))) + (home-page "https://github.com/joaotavora/eglot") + (synopsis "Client for Language Server Protocol (LSP) servers") + (description + "Emacs Polyglot, or Eglot, is an Emacs @acronym{Language Server Protocol, +LSP} client that stays out of the way. It guesses the LSP program to start +for the current file, using the major mode as a hint. It prompts you to enter +one if it fails.") + (license license:gpl3+))) + ;; Tests for ert-runner have a circular dependency with ecukes, and therefore ;; cannot be run (define-public emacs-ert-runner @@ -10704,10 +10904,31 @@ a @url{http://json.org/, JSON} file.") highlighting.") (license license:gpl3+))) +(define-public emacs-jsonrpc + (package + (name "emacs-jsonrpc") + (version "1.0.11") + (source + (origin + (method url-fetch) + (uri (string-append "https://elpa.gnu.org/packages/" + "jsonrpc-" version ".el")) + (sha256 + (base32 "04cy1mqd6y8k5lcpg076szjk9av9345mmsnzzh6vgbcw3dcgbr23")))) + (build-system emacs-build-system) + (home-page "http://elpa.gnu.org/packages/jsonrpc.html") + (synopsis "JSON-RPC library") + (description + "This library implements the JSONRPC 2.0 specification as +described in @url{http://www.jsonrpc.org/}. As the name suggests, +JSONRPC is a generic Remote Procedure Call protocol designed around +JSON objects.") + (license license:gpl3+))) + (define-public emacs-restclient (let ((commit "422ee8d8b077dffe65706a0f027ed700b84746bc") (version "0") - (revision "2")) ;Guix package revision, + (revision "2")) ;Guix package revision, ;upstream doesn't have official releases (package (name "emacs-restclient") @@ -13176,7 +13397,7 @@ files to be expanded upon opening them.") (define-public emacs-parsebib (package (name "emacs-parsebib") - (version "2.3.1") + (version "2.3.3") (source (origin (method git-fetch) @@ -13185,45 +13406,43 @@ files to be expanded upon opening them.") (commit version))) (file-name (git-file-name name version)) (sha256 - (base32 "1bnqnxkb9dnl0fjrrjx0xn9jsqki2h8ygw3d5dm4bl79smah3qkh")))) + (base32 "0mpgyy9qfb5x4fvlmb274hgayjbwf0bgk65dxyx31zikjwpcd56p")))) (build-system emacs-build-system) (home-page "https://github.com/joostkremers/parsebib") - (synopsis "Library for parsing bib files") + (synopsis "Library for parsing @file{.bib} files") (description - "This package provides an Emacs library for parsing bib files.") + "This package provides an Emacs library for parsing @file{.bib} files.") (license license:gpl3+))) (define-public emacs-ebib - (let ((commit "99bd909f47f71e024ce324981109b73a50e82fba")) - (package - (name "emacs-ebib") - (version "2.21") - (source - (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/joostkremers/ebib.git") - (commit commit))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "131vgl4d1j9s4055x88409w19q52x2m0x08b961hylp7yb5ljzgh")))) - (build-system emacs-build-system) - (propagated-inputs - `(("emacs-parsebib" ,emacs-parsebib))) - (home-page "https://joostkremers.github.io/ebib/") - (synopsis "BibTeX database manager for Emacs") - (description - "Ebib is a BibTeX database manager that runs in GNU Emacs. -With Ebib you can create, sort and manage your .bib database files, -all within Emacs. It supports searching, multi-line field values and -@@String and @@Preamble definitions. Ebib integrates with (La)TeX -mode, Org mode and other Emacs editing modes.") - ;; The Ebib source files are released under a BSD license with - ;; the exception of org-ebib.el, which is released under the GNU - ;; GPL. - (license (list license:bsd-3 - license:gpl3+))))) + (package + (name "emacs-ebib") + (version "2.22.1") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/joostkremers/ebib.git") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0spiz5r2y4pdpyc4d3f9w228giq0j9rm8f5h5akzn5rwiq9pfkwz")))) + (build-system emacs-build-system) + (propagated-inputs + `(("emacs-parsebib" ,emacs-parsebib))) + (home-page "https://joostkremers.github.io/ebib/") + (synopsis "BibTeX database manager for Emacs") + (description + "Ebib is a BibTeX database manager that runs in GNU Emacs. +With Ebib you can create, sort and manage your @file{.bib} database files, all +within Emacs. It supports searching, multi-line field values and +@samp{@@String} and @samp{@@Preamble} definitions. Ebib integrates +with (La)TeX mode, Org mode and other Emacs editing modes.") + ;; The Ebib source files are released under a BSD license with + ;; the exception of org-ebib.el, which is released under the GNU + ;; GPL. + (license (list license:bsd-3 + license:gpl3+)))) (define-public emacs-biblio (package @@ -14370,7 +14589,7 @@ powerful Org contents.") (define-public emacs-org-re-reveal (package (name "emacs-org-re-reveal") - (version "2.5.1") + (version "2.12.2") (source (origin (method git-fetch) (uri (git-reference @@ -14379,7 +14598,7 @@ powerful Org contents.") (file-name (git-file-name name version)) (sha256 (base32 - "1zbz6hbddxbb264ibmhc04cmnpk17kb50jpn5l8878q4hxw5wwy2")))) + "19nz77f2r49hqavz50ri222prhrd5890vhvc7jfazbascbcdjbqv")))) (build-system emacs-build-system) (propagated-inputs `(("emacs-htmlize" ,emacs-htmlize) @@ -18164,7 +18383,7 @@ stored playlists.") (define-public emacs-vterm (let ((version "0") (revision "1") - (commit "7d7381fa8104b55b70148cf147523d9ab7f01fcd")) + (commit "e63bd65eece7c5de3a534b7e2fdbe58256ec2da0")) (package (name "emacs-vterm") (version (git-version version revision commit)) @@ -18176,7 +18395,7 @@ stored playlists.") (file-name (git-file-name name version)) (sha256 (base32 - "04a2jlhmr20ipgzpnba3yryw3ly7qdxjgaw10dwn9wxy1yqmapz1")))) + "0iq857w54qmazxh23fipz85fb9i6dav3f63g0ghpmi6mybfp6i5v")))) (build-system emacs-build-system) (arguments `(#:modules ((guix build emacs-build-system) @@ -18187,14 +18406,11 @@ stored playlists.") (guix build cmake-build-system)) #:phases (modify-phases %standard-phases - (add-before 'add-source-to-load-path 'remove-vterm-module-make + (add-before 'add-source-to-load-path 'substitute-vterm-module-path (lambda* (#:key outputs #:allow-other-keys) - ;; Remove the Emacs Lisp file. - (delete-file "vterm-module-make.el") - ;; Remove references to the removed file. - (make-file-writable "vterm.el") + (chmod "vterm.el" #o644) (emacs-substitute-sexps "vterm.el" - ("(or (require 'vterm-module nil t)" + ("(require 'vterm-module nil t)" `(module-load ,(string-append (assoc-ref outputs "out") "/lib/vterm-module.so")))) @@ -18618,7 +18834,7 @@ the standard @code{Dockerfile} file format.") (define-public emacs-lsp-mode (package (name "emacs-lsp-mode") - (version "6.2.1") + (version "6.3.1") (source (origin (method git-fetch) (uri (git-reference @@ -18627,7 +18843,7 @@ the standard @code{Dockerfile} file format.") (file-name (git-file-name name version)) (sha256 (base32 - "0f9d0zhblcjzrpggqclww2g7fyjky5rzpp7zj424005ahv0zd3xf")))) + "125rpmhlyd6wmq7p71j54x3rzmk07vn1hdcvvdjjip5481raxcwx")))) (build-system emacs-build-system) (propagated-inputs `(("emacs-dash" ,emacs-dash) @@ -19446,9 +19662,9 @@ be used in @code{dired-mode}.") (license license:gpl3+)))) (define-public emacs-exwm-edit - (let ((commit "961c0f3ea45766b888c73d7353da13d329538034") + (let ((commit "bc25ba094b383be3c650ca0b7e1534efe2bb154f") (version "0.0.1") - (revision "1")) + (revision "2")) (package (name "emacs-exwm-edit") (version (git-version version revision commit)) @@ -19461,7 +19677,7 @@ be used in @code{dired-mode}.") (file-name (git-file-name name version)) (sha256 (base32 - "087pk5ckx753qrn6xpka9khhlp7iqlz76w7861x90av2f5cgy6fw")))) + "1z1ya9xgknka3dy3b3x8zzfkxdx5jqsi8q5aqkvxjxa6n7mmqdwv")))) (build-system emacs-build-system) (propagated-inputs `(("emacs-exwm" ,emacs-exwm))) @@ -20005,6 +20221,43 @@ well as an option for visually flashing evaluated s-expressions.") SSH servers.") (license license:gpl3+))) +(define-public emacs-tramp + (package + (name "emacs-tramp") + (version "2.4.3.4") + (source + (origin + (method url-fetch) + (uri (string-append "https://elpa.gnu.org/packages/" + "tramp-" version ".tar")) + (sha256 + (base32 "01il42xb6s38qnb7bhn9d7gscc5p5y4da5a4dp1i1cyi823sfp8f")))) + (build-system emacs-build-system) + (arguments + `(#:emacs ,emacs ;need D-Bus + #:phases + (modify-phases %standard-phases + ;; All but one "/bin/" directory refer to remote + ;; environments, which may not be Guix. Do not patch them + ;; blindly. However, local encoding shell has to be patched. + (replace 'patch-el-files + (lambda* (#:key inputs #:allow-other-keys) + (let ((sh (assoc-ref inputs "bash")) + (file "tramp.el")) + (emacs-substitute-variables file + ("tramp-encoding-shell" (string-append sh "/bin/sh")))) + #t))))) + (inputs + `(("bash" ,bash))) + (home-page "https://savannah.gnu.org/projects/tramp") + (synopsis "Remote file editing package for Emacs") + (description + "Tramp stands for ``Transparent Remote (file) Access, Multiple +Protocol''. This package provides remote file editing, using +a combination of @command{rsh} and @command{rcp} or other work-alike +programs, such as @command{ssh} and @command{scp}.") + (license license:gpl3+))) + (define-public emacs-tramp-auto-auth (let ((commit "f15a12dfab651aff60f4a9d70f868030a12344ac")) (package @@ -21039,14 +21292,14 @@ Emacs that integrate with major modes like Org-mode.") (define-public emacs-modus-operandi-theme (package (name "emacs-modus-operandi-theme") - (version "0.7.0") + (version "0.8.1") (source (origin (method url-fetch) (uri (string-append "https://elpa.gnu.org/packages/" "modus-operandi-theme-" version ".el")) (sha256 - (base32 "17zvcqplbl3rk39k61v43ganzv06j49rlyickanwll5m1a3iibw2")))) + (base32 "0i8s6blkhx53m1jk1bblqs7fwlbn57xkxxhsp9famcj5m0xyfimb")))) (build-system emacs-build-system) (home-page "https://gitlab.com/protesilaos/modus-themes") (synopsis "Accessible light theme (WCAG AAA)") @@ -21060,14 +21313,14 @@ standard. This is the highest standard of its kind.") (define-public emacs-modus-vivendi-theme (package (name "emacs-modus-vivendi-theme") - (version "0.7.0") + (version "0.8.1") (source (origin (method url-fetch) (uri (string-append "https://elpa.gnu.org/packages/" "modus-vivendi-theme-" version ".el")) (sha256 - (base32 "1w4vrg39dghghkvll3h4kmzykc3zpp6pbychb39gcc13z2b06v8g")))) + (base32 "121nlr5w58j4q47rh9xjjf9wzb97yl2m1n2l6g58ck4vnarwndl1")))) (build-system emacs-build-system) (home-page "https://gitlab.com/protesilaos/modus-themes") (synopsis "Accessible dark theme (WCAG AAA)") @@ -21337,7 +21590,7 @@ Google guidelines.") (define-public emacs-helm-fish-completion (package (name "emacs-helm-fish-completion") - (version "0.2") + (version "0.3") (home-page "https://github.com/emacs-helm/helm-fish-completion") (source (origin @@ -21347,7 +21600,7 @@ Google guidelines.") (commit version))) (file-name (git-file-name name version)) (sha256 - (base32 "089gp2k22xwn33z8brpyb7r18vpyralq2cwxj1xsc8b2sj9s4896")))) + (base32 "1iv0hwr74hzgrvrr31nlnswvi87lvpg24rd1rhkr5kjicr2295fq")))) (build-system emacs-build-system) (propagated-inputs `(("helm" ,emacs-helm) @@ -21676,6 +21929,32 @@ interface.") (home-page "https://github.com/akirak/ivy-omni-org") (license license:gpl3+)))) +(define-public emacs-ivy-posframe + (let ((commit "ae9bafe94fe6b77b6fe45766ae6172646f6a5d50")) + (package + (name "emacs-ivy-posframe") + (version (git-version "0.1.0" "1" commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/tumashu/ivy-posframe.git") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1j6yns5d7lh2v1nfcznrirl7qicdli9csciqvfgj4gkh72a97pw1")))) + (build-system emacs-build-system) + (propagated-inputs + `(("emacs-posframe" ,emacs-posframe) + ("emacs-ivy" ,emacs-ivy))) + (home-page "https://github.com/tumashu/ivy-posframe") + (synopsis "Pop a posframe (a child frame) to show Ivy candidates") + (description + "This package provides an Emacs Ivy extension, which let Ivy use +posframe to show its candidate menu.") + (license license:gpl3+)))) + (define-public emacs-shackle (let ((commit "7ccbe513852a1d1700b698547efca14b8940319d") (revision "1")) diff --git a/gnu/packages/emacs.scm b/gnu/packages/emacs.scm index ab7cc20d10..8fe5750791 100644 --- a/gnu/packages/emacs.scm +++ b/gnu/packages/emacs.scm @@ -7,7 +7,7 @@ ;;; Copyright © 2016, 2018 Arun Isaac <arunisaac@systemreboot.net> ;;; Copyright © 2016 Federico Beffa <beffa@fbengineering.ch> ;;; Copyright © 2016 David Thompson <dthompson2@worcester.edu> -;;; Copyright © 2016 ng0 <ng0@n0.is> +;;; Copyright © 2016 Nikita <nikita@n0.is> ;;; Copyright © 2017 Marius Bakke <mbakke@fastmail.com> ;;; Copyright © 2017, 2019, 2020 Maxim Cournoyer <maxim.cournoyer@gmail.com> ;;; Copyright © 2017 Alex Vong <alexvong1995@gmail.com> @@ -20,6 +20,7 @@ ;;; Copyright © 2019 Valentin Ignatev <valentignatev@gmail.com> ;;; Copyright © 2019 Leo Prikler <leo.prikler@student.tugraz.at> ;;; Copyright © 2019 Amin Bandali <bandali@gnu.org> +;;; Copyright © 2020 Jack Hill <jackhill@jackhill.us> ;;; ;;; This file is part of GNU Guix. ;;; @@ -139,7 +140,7 @@ "lisp/textmodes/artist.el" "lisp/progmodes/sh-script.el") (("\"/bin/sh\"") - (format "~s" (which "sh")))) + (format #f "~s" (which "sh")))) #t)) (add-before 'configure 'fix-/bin/pwd (lambda _ @@ -163,7 +164,7 @@ (byte-recompile-directory (file-name-as-directory ,dir) 0 1)))) (invoke emacs "--quick" "--batch" - (format "--eval=~s" expr)))) + (format #f "--eval=~s" expr)))) (copy-file (assoc-ref inputs "guix-emacs.el") (string-append lisp-dir "/guix-emacs.el")) @@ -193,7 +194,7 @@ ("libxft" ,libxft) ("libtiff" ,libtiff) ("giflib" ,giflib) - ("libjpeg" ,libjpeg) + ("libjpeg" ,libjpeg-turbo) ("imagemagick" ,imagemagick) ("acl" ,acl) @@ -242,9 +243,9 @@ languages.") (license license:gpl3+))) (define-public emacs-next - (let ((commit "36abf6864604b3061c2e070f8997491fa2bce44c") + (let ((commit "c36c5a3dedbb2e0349be1b6c3b7567ea7b594f1c") (revision "0") - (emacs-version "27.0.50")) + (emacs-version "27.0.91")) (package (inherit emacs) (name "emacs-next") @@ -256,7 +257,7 @@ languages.") (url "https://git.savannah.gnu.org/git/emacs.git") (commit commit))) (sha256 - (base32 "1ckn607p0clz0dhhlizvv7l03p4nminy48h53xrpz55w4rcrcm2l")) + (base32 "0mlrg2npy1r79laahkgzhxd1qassfcdz8qk1cpw7mqgf6y5x505h")) (file-name (git-file-name name version)) (patches (search-patches "emacs27-exec-path.patch" "emacs-fix-scheme-indent-function.patch" @@ -321,7 +322,9 @@ languages.") (inputs `(("jansson" ,jansson) ("harfbuzz" ,harfbuzz) - ,@(package-inputs emacs))) + ;; Emacs no longer uses ImageMagick by default + ;; https://git.savannah.gnu.org/cgit/emacs.git/tree/etc/NEWS?h=emacs-27.0.91&id=c36c5a3dedbb2e0349be1b6c3b7567ea7b594f1c#n102 + ,@(alist-delete "imagemagick" (package-inputs emacs)))) (native-inputs `(("autoconf" ,autoconf) ; needed when building from trunk ,@(package-native-inputs emacs))) diff --git a/gnu/packages/embedded.scm b/gnu/packages/embedded.scm index 131a928d80..6ac1a2d7f3 100644 --- a/gnu/packages/embedded.scm +++ b/gnu/packages/embedded.scm @@ -5,6 +5,8 @@ ;;; Copyright © 2017, 2020 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2018, 2019 Clément Lassieur <clement@lassieur.org> +;;; Copyright © 2020 Marius Bakke <mbakke@fastmail.com> +;;; Copyright © 2020 Björn Höfling <bjoern.hoefling@bjoernhoefling.de> ;;; ;;; This file is part of GNU Guix. ;;; @@ -87,12 +89,27 @@ (origin-patches (package-source xgcc)))))) (native-inputs `(("flex" ,flex) - ("gcc" ,gcc-5) + ("gcc@5" ,gcc-5) ,@(package-native-inputs xgcc))) (arguments (substitute-keyword-arguments (package-arguments xgcc) ((#:phases phases) `(modify-phases ,phases + (add-after 'set-paths 'augment-CPLUS_INCLUDE_PATH + (lambda* (#:key inputs #:allow-other-keys) + (let ((gcc (assoc-ref inputs "gcc"))) + ;; Remove the default compiler from CPLUS_INCLUDE_PATH to + ;; prevent header conflict with the GCC from native-inputs. + (setenv "CPLUS_INCLUDE_PATH" + (string-join + (delete (string-append gcc "/include/c++") + (string-split (getenv "CPLUS_INCLUDE_PATH") + #\:)) + ":")) + (format #t + "environment variable `CPLUS_INCLUDE_PATH' changed to ~a~%" + (getenv "CPLUS_INCLUDE_PATH")) + #t))) (add-after 'unpack 'fix-genmultilib (lambda _ (substitute* "gcc/genmultilib" @@ -234,7 +251,7 @@ usable on embedded products.") (origin-patches (package-source gcc-7)) (search-patches "gcc-7-cross-environment-variables.patch"))))) (native-inputs - `(("gcc" ,gcc-5) + `(("gcc@5" ,gcc-5) ("flex" ,flex) ("isl" ,isl-0.18) ,@(alist-delete "isl" (package-native-inputs xgcc)))) @@ -253,7 +270,22 @@ usable on embedded products.") (lambda _ (substitute* "gcc/genmultilib" (("#!/bin/sh") (string-append "#!" (which "sh")))) - #t)))) + #t)) + (add-after 'set-paths 'augment-CPLUS_INCLUDE_PATH + (lambda* (#:key inputs #:allow-other-keys) + (let ((gcc (assoc-ref inputs "gcc"))) + ;; Remove the default compiler from CPLUS_INCLUDE_PATH to + ;; prevent header conflict with the GCC from native-inputs. + (setenv "CPLUS_INCLUDE_PATH" + (string-join + (delete (string-append gcc "/include/c++") + (string-split (getenv "CPLUS_INCLUDE_PATH") + #\:)) + ":")) + (format #t + "environment variable `CPLUS_INCLUDE_PATH' changed to ~a~%" + (getenv "CPLUS_INCLUDE_PATH")) + #t))))) ((#:configure-flags flags) ;; The configure flags are largely identical to the flags used by the ;; "GCC ARM embedded" project. diff --git a/gnu/packages/emulators.scm b/gnu/packages/emulators.scm index 58d6c73ee2..85e2016e49 100644 --- a/gnu/packages/emulators.scm +++ b/gnu/packages/emulators.scm @@ -1204,14 +1204,14 @@ multi-system game/emulator system.") (define-public scummvm (package (name "scummvm") - (version "2.1.1") + (version "2.1.2") (source (origin (method url-fetch) (uri (string-append "http://www.scummvm.org/frs/scummvm/" version "/scummvm-" version ".tar.xz")) (sha256 - (base32 "1a6waf1ybp91nwva8g650cljlfb1di4l0jv13vg6yfgkas9pclsp")))) + (base32 "1c4fz1nfg0nqnqx9iipayhzcsiqdmfxm2i95nw9dbhshhsdnrhf4")))) (build-system gnu-build-system) (arguments `(#:tests? #f ;require "git" diff --git a/gnu/packages/engineering.scm b/gnu/packages/engineering.scm index ac50efb923..172f8481eb 100644 --- a/gnu/packages/engineering.scm +++ b/gnu/packages/engineering.scm @@ -16,6 +16,7 @@ ;;; Copyright © 2019 John Soo <jsoo1@asu.edu> ;;; Copyright © 2020 Brice Waegeneire <brice@waegenei.re> ;;; Copyright © 2020 Vincent Legoll <vincent.legoll@gmail.com> +;;; Copyright © 2020 Marius Bakke <mbakke@fastmail.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -770,7 +771,8 @@ fonts to gEDA.") (lambda* (#:key inputs #:allow-other-keys) (setenv "CPLUS_INCLUDE_PATH" (string-append (assoc-ref inputs "catch") - "/include/catch")) + "/include/catch:" + (or (getenv "CPLUS_INCLUDE_PATH") ""))) #t))))) (native-inputs `(("pkg-config" ,pkg-config))) @@ -1690,7 +1692,19 @@ parallel computing platforms. It also supports serial execution.") version ".tar.gz")) (sha256 (base32 - "117dqs0d4pcgbzvr3jn5ppra7n7x2m6c161ywh6laa934pw7h2bz")))) + "117dqs0d4pcgbzvr3jn5ppra7n7x2m6c161ywh6laa934pw7h2bz")) + (patches + (list (origin + ;; Fix build with GCC 7. Patch taken from Arch Linux: + ;; https://git.archlinux.org/svntogit/community.git/tree/trunk?h=packages/freehdl + (method url-fetch) + (uri "https://git.archlinux.org/svntogit/community.git\ +/plain/trunk/build-fix.patch?h=packages/freehdl\ +&id=3bb90d64dfe6883e26083cd1fa96226d0d59175a") + (file-name "freehdl-c++-namespace.patch") + (sha256 + (base32 + "09df3c70rx81rnhlhry1wpdhji274nx9jb74rfprk06l4739zm08"))))))) (build-system gnu-build-system) (arguments `(#:phases @@ -1766,7 +1780,6 @@ parallel computing platforms. It also supports serial execution.") ("libtool" ,libtool))) (native-inputs `(("pkg-config-native" ,pkg-config) - ("gcc" ,gcc-5) ("libtool-native" ,libtool))) (home-page "http://www.freehdl.seul.org/") (synopsis "VHDL simulator") @@ -2216,7 +2229,7 @@ engineers for reverse engineers.") (native-inputs `(("googletest-source" ,(package-source googletest)))) (inputs - `(("libuuid" ,util-linux))) + `(("libuuid" ,util-linux "lib"))) (arguments `(#:phases (modify-phases %standard-phases @@ -2311,6 +2324,15 @@ full programmatic control over your models.") (uri (git-reference (url "https://github.com/FreeCAD/FreeCAD.git") (commit version))) + (modules '((guix build utils))) + (snippet + '(begin + ;; Fix build with Python 3.8, see + ;; <https://tracker.freecadweb.org/view.php?id=4143>. + (substitute* "src/Base/swigpyrun.inl" + (("PyObject \\*modules = interp->modules;") + "PyObject *modules = PyEval_GetBuiltins();")) + #t)) (file-name (git-file-name name version)) (sha256 (base32 diff --git a/gnu/packages/enlightenment.scm b/gnu/packages/enlightenment.scm index 4a65c55af9..32d8ea9c0d 100644 --- a/gnu/packages/enlightenment.scm +++ b/gnu/packages/enlightenment.scm @@ -2,7 +2,7 @@ ;;; Copyright © 2015 Tomáš Čech <sleep_walker@suse.cz> ;;; Copyright © 2015 Daniel Pimentel <d4n1@member.fsf.org> ;;; Copyright © 2015, 2016, 2017, 2018, 2019 Efraim Flashner <efraim@flashner.co.il> -;;; Copyright © 2017 ng0 <ng0@n0.is> +;;; Copyright © 2017 Nikita <nikita@n0.is> ;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2018 Timo Eisenmann <eisenmann@fn.de> ;;; @@ -124,7 +124,7 @@ ("harfbuzz" ,harfbuzz) ("luajit" ,luajit) ("libinput" ,libinput-minimal) - ("libjpeg" ,libjpeg) + ("libjpeg" ,libjpeg-turbo) ("libpng" ,libpng) ("libsndfile" ,libsndfile) ("libtiff" ,libtiff) @@ -134,7 +134,7 @@ ("lz4" ,lz4) ("openssl" ,openssl) ("pulseaudio" ,pulseaudio) - ("util-linux" ,util-linux) + ("util-linux" ,util-linux "lib") ("wayland" ,wayland) ("zlib" ,zlib))) (arguments @@ -194,7 +194,7 @@ removable devices or support for multimedia.") (define-public terminology (package (name "terminology") - (version "1.6.0") + (version "1.7.0") (source (origin (method url-fetch) (uri @@ -202,7 +202,7 @@ removable devices or support for multimedia.") "terminology/terminology-" version ".tar.xz")) (sha256 (base32 - "0xxx4xyhis6fy3frgb34ip0aj0kc4zashf60gzbxmq5gadbb0p5r")) + "11qan2k6w94cglysh95yxkbv6hw9x15ri927hkiy3k0hbmpbrxc8")) (modules '((guix build utils))) ;; Remove the bundled fonts. (snippet @@ -336,8 +336,8 @@ Libraries with some extra bells and whistles.") (substitute* "src/modules/everything/evry_plug_calc.c" (("bc -l") (string-append bc "/bin/bc -l"))) (substitute* "data/etc/meson.build" - (("/bin/mount") (string-append utils "/bin/mount")) - (("/bin/umount") (string-append utils "/bin/umount")) + (("/bin/mount") "/run/setuid-programs/mount") + (("/bin/umount") "/run/setuid-programs/umount") (("/usr/bin/eject") (string-append utils "/bin/eject")) (("/usr/bin/l2ping") (string-append bluez "/bin/l2ling")) (("/bin/rfkill") (string-append utils "/sbin/rfkill")) @@ -449,25 +449,32 @@ Libraries stack (eo, evas, ecore, edje, emotion, ethumb and elementary).") (define-public edi (package (name "edi") - (version "0.6.0") + (version "0.8.0") (source (origin (method url-fetch) - (uri (string-append "https://download.enlightenment.org/rel/apps/edi/" - name "-" version ".tar.xz")) + (uri (string-append "https://github.com/Enlightenment/edi/releases/" + "download/v" version "/edi-" version ".tar.xz")) (sha256 (base32 - "0iqkah327ms5m7k054hcik2l9v68i4mg9yy52brprfqpd5jk7pw8")))) - (build-system gnu-build-system) + "01k8gp8r2wa6pyg3dkbm35m6hdsbss06hybghg0qjmd4mzswcd3a")))) + (build-system meson-build-system) (arguments '(#:phases (modify-phases %standard-phases + (add-after 'unpack 'fix-clang-header + (lambda _ + (substitute* "scripts/clang_include_dir.sh" + (("grep clang") "grep clang | head -n1")) + #t)) (add-after 'unpack 'set-home-directory ;; FATAL: Cannot create run dir '/homeless-shelter/.run' - errno=2 (lambda _ (setenv "HOME" "/tmp") #t))) #:tests? #f)) ; tests require running dbus service (native-inputs - `(("pkg-config" ,pkg-config))) + `(("check" ,check) + ("gettext" ,gettext-minimal) + ("pkg-config" ,pkg-config))) (inputs `(("clang" ,clang) ("efl" ,efl))) @@ -478,7 +485,8 @@ the EFL. It's aim is to create a new, native development environment for Linux that tries to lower the barrier to getting involved in Enlightenment development and in creating applications based on the Enlightenment Foundation Library suite.") (license (list license:public-domain ; data/extra/skeleton - license:gpl2)))) ; edi + license:gpl2 ; edi + license:gpl3)))) ; data/extra/examples/images/mono-runtime.png (define-public lekha (package @@ -560,7 +568,7 @@ directories. (define-public evisum (package (name "evisum") - (version "0.2.6") + (version "0.4.1") (source (origin (method url-fetch) @@ -568,22 +576,14 @@ directories. "evisum/evisum-" version ".tar.xz")) (sha256 (base32 - "1rg3kri6j8nmab0kdljnmcc096c8ibgwzvbhqr0b25xpmrq8bcac")))) - (build-system gnu-build-system) + "0c3sgz6g8agig1i6fwn1jv318zsm556l9f3f0dm1jll146dlk2iv")))) + (build-system meson-build-system) (arguments - '(#:tests? #f ; no tests - #:make-flags (list (string-append "PREFIX=" (assoc-ref %outputs "out"))) - #:phases - (modify-phases %standard-phases - (delete 'configure) ; no configure phase - (add-after 'unpack 'set-environmental-variables - (lambda _ (setenv "CC" (which "gcc")) #t))))) + '(#:tests? #f)) ; no tests (native-inputs `(("pkg-config" ,pkg-config))) (inputs - `(("alsa-lib" ,alsa-lib) - ("efl" ,efl) - ("perl" ,perl))) + `(("efl" ,efl))) (home-page "https://www.enlightenment.org") (synopsis "EFL process viewer") (description diff --git a/gnu/packages/erlang.scm b/gnu/packages/erlang.scm index 865895da78..4b6c0cf105 100644 --- a/gnu/packages/erlang.scm +++ b/gnu/packages/erlang.scm @@ -3,7 +3,7 @@ ;;; Copyright © 2016, 2017 Leo Famulari <leo@famulari.name> ;;; Copyright © 2016, 2017 Pjotr Prins <pjotr.guix@thebird.nl> ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr> -;;; Copyright © 2018 ng0 <ng0@n0.is> +;;; Copyright © 2018 Nikita <nikita@n0.is> ;;; ;;; This file is part of GNU Guix. ;;; diff --git a/gnu/packages/file-systems.scm b/gnu/packages/file-systems.scm index ce1155c755..293322c76b 100644 --- a/gnu/packages/file-systems.scm +++ b/gnu/packages/file-systems.scm @@ -3,7 +3,8 @@ ;;; Copyright © 2017 Gábor Boskovits <boskovits@gmail.com> ;;; Copyright © 2017, 2018 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2018 Leo Famulari <leo@famulari.name> -;;; Copyright © 2019 Efraim Flashner <efraim@flashner.co.il> +;;; Copyright © 2019, 2020 Efraim Flashner <efraim@flashner.co.il> +;;; Copyright © 2020 Raghav Gururajan <raghavgururajan@disroot.org> ;;; ;;; This file is part of GNU Guix. ;;; @@ -44,10 +45,12 @@ #:use-module (gnu packages docbook) #:use-module (gnu packages flex) #:use-module (gnu packages glib) + #:use-module (gnu packages gnupg) #:use-module (gnu packages libffi) #:use-module (gnu packages linux) #:use-module (gnu packages nfs) #:use-module (gnu packages onc-rpc) + #:use-module (gnu packages photo) #:use-module (gnu packages pkg-config) #:use-module (gnu packages python) #:use-module (gnu packages readline) @@ -56,6 +59,77 @@ #:use-module (gnu packages valgrind) #:use-module (gnu packages xml)) +(define-public fsarchiver + (package + (name "fsarchiver") + (version "0.8.5") + (source + (origin + (method git-fetch) + (uri + (git-reference + (url "https://github.com/fdupoux/fsarchiver.git") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1rvwq5v3rl14bqxjm1ibfapyicf0sa44nw7451v10kx39lp56ylp")))) + (build-system gnu-build-system) + (native-inputs + `(("autoconf" ,autoconf) + ("automake" ,automake) + ("pkg-config" ,pkg-config))) + (inputs + `(("bzip2" ,bzip2) + ("e2fsprogs" ,e2fsprogs) + ("libgcrypt" ,libgcrypt) + ("lz4" ,lz4) + ("lzo" ,lzo) + ("util-linux" ,util-linux "lib") + ("xz" ,xz) + ("zlib" ,zlib) + ("zstd:lib" ,zstd "lib"))) + (synopsis "File system back-up, deployment, and migration tool") + (description + "FSArchiver saves the contents of a file system to a compressed archive +file, and restores it to a different file system and/or partition. This +partition can be of a different size than the original and FSArchiver will +create a new file system if none exists. + +All standard file attributes supported by the kernel are preserved, including +file permissions, timestamps, symbolic and hard links, and extended attributes. + +Each file in the archive is protected by a checksum. If part of the archive +is corrupted you'll lose the affected file(s) but not the whole back-up.") + (home-page "http://www.fsarchiver.org/") + (license license:gpl2))) + +(define-public gphotofs + (package + (name "gphotofs") + (version "0.5.0") + (source + (origin + (method url-fetch) + (uri + (string-append "mirror://sourceforge/gphoto/gphotofs/" version + "/gphotofs-0.5.tar.gz")) + (sha256 + (base32 + "04slwhr6ap9xcc27wphk22ad8yn79ngyy5z10lxams3k5liahvc2")))) + (build-system gnu-build-system) + (native-inputs + `(("pkg-config" ,pkg-config))) + (inputs + `(("fuse" ,fuse) + ("glib" ,glib) + ("libgphoto2" ,libgphoto2))) + (synopsis "Virtual filesystem for libgphoto2 using FUSE") + (description "GPhotoFS is a FUSE filesystem module to mount your camera as +a filesystem on Linux. This allow using your camera with any tool able to read +from a mounted filesystem.") + (home-page "http://www.gphoto.org/proj/gphotofs/") + (license license:gpl2+))) + (define-public bcachefs-tools (let ((commit "ab2f1ec24f5307b0cf1e3c4ad19bf350d9f54d9f") (revision "0")) @@ -94,7 +168,7 @@ ("libscrypt" ,libscrypt) ("libsodium" ,libsodium) ("liburcu" ,liburcu) - ("util-linux" ,util-linux) ; lib{blkid,uuid} + ("util-linux" ,util-linux "lib") ; lib{blkid,uuid} ("lz4" ,lz4) ("zlib" ,zlib) ("zstd:lib" ,zstd "lib"))) @@ -186,7 +260,7 @@ single file can be mounted.") "jfsutils-include-systypes.patch")))) (build-system gnu-build-system) (inputs - `(("util-linux" ,util-linux))) + `(("util-linux" ,util-linux "lib"))) (home-page "http://jfs.sourceforge.net/home.html") (synopsis "Utilities for managing JFS file systems") (description @@ -330,7 +404,7 @@ non-determinism in the build process.") ("fuse", fuse) ("openssl" ,openssl) ("liburcu" ,liburcu) - ("libuuid" ,util-linux) + ("libuuid" ,util-linux "lib") ("libxml2" ,libxml2) ("readline" ,readline) ("zlib" ,zlib) @@ -553,6 +627,7 @@ APFS.") #t)))))) (native-inputs `(("attr" ,attr) + ("kmod" ,kmod) ("pkg-config" ,pkg-config))) (inputs `(("eudev" ,eudev) @@ -562,7 +637,7 @@ APFS.") ("openssl" ,openssl) ("python" ,python) ("python-cffi" ,python-cffi) - ("util-linux" ,util-linux) + ("util-linux" ,util-linux "lib") ("zlib" ,zlib))) (home-page "https://zfsonlinux.org/") (synopsis "Native ZFS on Linux") diff --git a/gnu/packages/file.scm b/gnu/packages/file.scm index 9ba51d1b74..bac951f9c5 100644 --- a/gnu/packages/file.scm +++ b/gnu/packages/file.scm @@ -30,15 +30,14 @@ (define-public file (package (name "file") - (version "5.33") + (version "5.38") (source (origin (method url-fetch) (uri (string-append "ftp://ftp.astron.com/pub/file/file-" version ".tar.gz")) - (patches (search-patches "file-CVE-2018-10360.patch")) (sha256 (base32 - "1iipnwjkag7q04zjkaqic41r9nlw0ml6mhqian6qkkbisb1whlhw")))) + "0d7s376b4xqymnrsjxi3nsv3f5v89pzfspzml2pcajdk5by2yg2r")))) (build-system gnu-build-system) ;; When cross-compiling, this package depends upon a native install of diff --git a/gnu/packages/finance.scm b/gnu/packages/finance.scm index c31b87ec19..7018479665 100644 --- a/gnu/packages/finance.scm +++ b/gnu/packages/finance.scm @@ -18,6 +18,7 @@ ;;; Copyright © 2020 Kei Kebreau <kkebreau@posteo.net> ;;; Copyright © 2020 Christopher Lemmer Webber <cwebber@dustycloud.org> ;;; Copyright © 2020 Tom Zander <tomz@freedommail.ch> +;;; Copyright © 2020 Marius Bakke <mbakke@fastmail.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -103,13 +104,14 @@ (name "bitcoin-core") (version "0.19.1") (source (origin - (method url-fetch) - (uri - (string-append "https://bitcoincore.org/bin/bitcoin-core-" - version "/bitcoin-" version ".tar.gz")) - (sha256 - (base32 - "1h3w7brc18145np920vy7j5ms5hym59hvr40swdjx34fbdaisngj")))) + (method url-fetch) + (uri + (string-append "https://bitcoincore.org/bin/bitcoin-core-" + version "/bitcoin-" version ".tar.gz")) + (sha256 + (base32 + "1h3w7brc18145np920vy7j5ms5hym59hvr40swdjx34fbdaisngj")) + (patches (search-patches "bitcoin-core-python-compat.patch")))) (build-system gnu-build-system) (native-inputs `(("pkg-config" ,pkg-config) @@ -126,35 +128,36 @@ ("qtbase" ,qtbase))) (arguments `(#:configure-flags - (list - ;; Boost is not found unless specified manually. - (string-append "--with-boost=" - (assoc-ref %build-inputs "boost")) - ;; XXX: The configure script looks up Qt paths by - ;; `pkg-config --variable=host_bins Qt5Core`, which fails to pick - ;; up executables residing in 'qttools', so we specify them here. - (string-append "ac_cv_path_LRELEASE=" - (assoc-ref %build-inputs "qttools") - "/bin/lrelease") - (string-append "ac_cv_path_LUPDATE=" - (assoc-ref %build-inputs "qttools") - "/bin/lupdate")) + (list + ;; Boost is not found unless specified manually. + (string-append "--with-boost=" + (assoc-ref %build-inputs "boost")) + ;; XXX: The configure script looks up Qt paths by + ;; `pkg-config --variable=host_bins Qt5Core`, which fails to pick + ;; up executables residing in 'qttools', so we specify them here. + (string-append "ac_cv_path_LRELEASE=" + (assoc-ref %build-inputs "qttools") + "/bin/lrelease") + (string-append "ac_cv_path_LUPDATE=" + (assoc-ref %build-inputs "qttools") + "/bin/lupdate")) #:phases - (modify-phases %standard-phases - (add-before 'configure 'make-qt-deterministic + (modify-phases %standard-phases + (add-before 'configure 'make-qt-deterministic (lambda _ - ;; Make Qt deterministic. - (setenv "QT_RCC_SOURCE_DATE_OVERRIDE" "1") - #t)) - (add-before 'check 'set-home + ;; Make Qt deterministic. + (setenv "QT_RCC_SOURCE_DATE_OVERRIDE" "1") + #t)) + (add-before 'check 'set-home (lambda _ - (setenv "HOME" (getenv "TMPDIR")) ; tests write to $HOME - #t)) - (add-after 'check 'check-functional + (setenv "HOME" (getenv "TMPDIR")) ; tests write to $HOME + #t)) + (add-after 'check 'check-functional (lambda _ - (invoke "python3" "./test/functional/test_runner.py" - (string-append "--jobs=" (number->string (parallel-job-count)))) - #t))))) + (invoke + "python3" "./test/functional/test_runner.py" + (string-append "--jobs=" (number->string (parallel-job-count)))) + #t))))) (home-page "https://bitcoin.org/en/") (synopsis "Bitcoin peer-to-peer client") (description @@ -197,7 +200,7 @@ and dynamically with report tools based on filtering and graphical charts.") (define-public ledger (package (name "ledger") - (version "3.1.3") + (version "3.2.0") (source (origin (method git-fetch) @@ -206,16 +209,32 @@ and dynamically with report tools based on filtering and graphical charts.") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 - (base32 "0bfnrqrd6wqgsngfpqi30xh6yy86pwl25iwzrqy44q31r0zl4mm3")))) + (base32 "1l5c9jf2wnly6ncm9civ8i7v47xld15g1y7wpl0hqwgbfyffwjci")))) (build-system cmake-build-system) (arguments - `(#:configure-flags + `(#:modules (,@%cmake-build-system-modules + ((guix build python-build-system) #:select (python-version))) + #:imported-modules (,@%cmake-build-system-modules + (guix build python-build-system)) + #:configure-flags `("-DBUILD_DOCS:BOOL=ON" "-DBUILD_WEB_DOCS:BOOL=ON" "-DUSE_PYTHON:BOOL=ON" "-DCMAKE_INSTALL_LIBDIR:PATH=lib") #:phases - (modify-phases %standard-phases + (modify-phases (@ (guix build cmake-build-system) %standard-phases) + (add-after 'unpack 'fix-python-installation-directory + (lambda* (#:key inputs outputs #:allow-other-keys) + ;; By default the package attempts to install its Python bindings + ;; to the Python store directory, which obviously does not work. + ;; Passing -DPython_SITEARCH in #:configure-flags has no effect. + (let ((python-version (python-version (assoc-ref inputs "python"))) + (out (assoc-ref outputs "out"))) + (substitute* "src/CMakeLists.txt" + (("DESTINATION \\$\\{Python_SITEARCH\\}") + (string-append "DESTINATION " out "/lib/python" + python-version "/site-packages"))) + #t))) (add-before 'configure 'install-examples (lambda* (#:key outputs #:allow-other-keys) (let ((examples (string-append (assoc-ref outputs "out") @@ -241,7 +260,7 @@ and dynamically with report tools based on filtering and graphical charts.") ("gmp" ,gmp) ("libedit" ,libedit) ("mpfr" ,mpfr) - ("python" ,python-2) + ("python" ,python) ("utfcpp" ,utfcpp))) (native-inputs `(("groff" ,groff) @@ -853,31 +872,21 @@ Ledger Blue/Nano S.") (define-public python-trezor (package (name "python-trezor") - (version "0.11.3") + (version "0.12.0") (source (origin (method url-fetch) (uri (pypi-uri "trezor" version)) (sha256 (base32 - "0211m027vlvyqy83kwbjjjxalb04xgf1klv0h0y0f0yhj07516n7")))) + "0ycmpwjv5xp25993divjhaq5j766zgcy22xx39xfc1pcvldq5g7n")))) (build-system python-build-system) - (arguments - `(#:phases - (modify-phases %standard-phases - ;; Default tests run device-specific tests which fail, only run specific tests. - (replace 'check - (lambda* (#:key inputs outputs #:allow-other-keys) - ;; Delete tests that require network access. - (delete-file "trezorlib/tests/unit_tests/test_tx_api.py") - (invoke "python" "-m" "pytest" "--pyarg" "trezorlib.tests.unit_tests")))))) (propagated-inputs `(("python-click" ,python-click) ("python-construct" ,python-construct) ("python-ecdsa" ,python-ecdsa) ("python-libusb1" ,python-libusb1) ("python-mnemonic" ,python-mnemonic) - ("python-pyblake2" ,python-pyblake2) ("python-requests" ,python-requests) ("python-typing-extensions" ,python-typing-extensions))) (native-inputs diff --git a/gnu/packages/firmware.scm b/gnu/packages/firmware.scm index b35f55ae97..e0a162f1b8 100644 --- a/gnu/packages/firmware.scm +++ b/gnu/packages/firmware.scm @@ -5,6 +5,8 @@ ;;; Copyright © 2017, 2018 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2018 Vagrant Cascadian <vagrant@debian.org> +;;; Copyright © 2019 Mathieu Othacehe <m.othacehe@gmail.com> +;;; Copyright © 2020 Marius Bakke <mbakke@fastmail.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -31,6 +33,7 @@ #:use-module (gnu packages) #:use-module (gnu packages admin) #:use-module (gnu packages assembly) + #:use-module (gnu packages base) #:use-module (gnu packages bison) #:use-module (gnu packages cmake) #:use-module (gnu packages cross-base) @@ -59,7 +62,7 @@ '(#:phases (modify-phases %standard-phases (add-before 'configure 'pre-configure - (lambda* (#:key inputs #:allow-other-keys) + (lambda* (#:key inputs native-inputs #:allow-other-keys) (chdir "target_firmware") ;; 'configure' is a simple script that runs 'cmake' with @@ -67,7 +70,7 @@ (substitute* "configure" (("^TOOLCHAIN=.*$") (string-append "TOOLCHAIN=" - (assoc-ref inputs "cross-gcc") + (assoc-ref (or native-inputs inputs) "cross-gcc") "\n"))) #t)) (replace 'install @@ -82,8 +85,11 @@ ;; The firmware is cross-compiled using a "bare bones" compiler (no libc.) ;; Use our own tool chain for that. - (native-inputs `(("cross-gcc" ,(cross-gcc "xtensa-elf")) - ("cross-binutils" ,(cross-binutils "xtensa-elf")) + (native-inputs `(("cross-gcc" ,(cross-gcc + "xtensa-elf" + #:xbinutils (cross-binutils "xtensa-elf" + binutils-2.33))) + ("cross-binutils" ,(cross-binutils "xtensa-elf" binutils-2.33)) ("cmake" ,cmake-minimal) ("perl" ,perl))) (home-page "https://wireless.wiki.kernel.org/en/users/Drivers/ath9k_htc") @@ -314,14 +320,26 @@ coreboot.") (build-system gnu-build-system) (native-inputs `(("acpica" ,acpica) - ("gcc" ,gcc-5) + ("gcc@5" ,gcc-5) ("nasm" ,nasm) ("python-2" ,python-2) - ("util-linux" ,util-linux))) + ("util-linux" ,util-linux "lib"))) (arguments `(#:tests? #f ; No check target. #:phases (modify-phases %standard-phases + ;; Hide the default GCC from CPLUS_INCLUDE_PATH to prevent it from + ;; shadowing the version of GCC provided in native-inputs. + (add-after 'set-paths 'hide-gcc7 + (lambda* (#:key inputs #:allow-other-keys) + (let ((gcc (assoc-ref inputs "gcc"))) + (setenv "CPLUS_INCLUDE_PATH" + (string-join + (delete (string-append gcc "/include/c++") + (string-split (getenv "CPLUS_INCLUDE_PATH") + #\:)) + ":")) + #t))) (replace 'configure (lambda _ (let* ((cwd (getcwd)) diff --git a/gnu/packages/fltk.scm b/gnu/packages/fltk.scm index 573c0541bb..d0f20b20fd 100644 --- a/gnu/packages/fltk.scm +++ b/gnu/packages/fltk.scm @@ -56,7 +56,7 @@ (native-inputs `(("pkg-config" ,pkg-config))) (inputs - `(("libjpeg" ,libjpeg) + `(("libjpeg" ,libjpeg-turbo) ("libpng" ,libpng) ("libx11" ,libx11) ("libxft" ,libxft) @@ -129,7 +129,7 @@ UI builder called FLUID that can be used to create applications in minutes.") (assoc-ref outputs "out") "/lib")) #t))))) (inputs - `(("libjpeg" ,libjpeg) + `(("libjpeg" ,libjpeg-turbo) ("glu" ,glu) ("waf" ,python-waf))) ;; ntk.pc lists "x11" and "xft" in Requires.private, and "cairo" in diff --git a/gnu/packages/fonts.scm b/gnu/packages/fonts.scm index 21423baefd..64d5c17346 100644 --- a/gnu/packages/fonts.scm +++ b/gnu/packages/fonts.scm @@ -7,12 +7,12 @@ ;;; Copyright © 2015 Eric Dvorsak <eric@dvorsak.fr> ;;; Copyright © 2015, 2017 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2015, 2016 Leo Famulari <leo@famulari.name> -;;; Copyright © 2016, 2017, 2018 ng0 <ng0@n0.is> +;;; Copyright © 2016, 2017, 2018 Nikita <nikita@n0.is> ;;; Copyright © 2016 Jookia <166291@gmail.com> ;;; Copyright © 2016 Eric Bavier <bavier@member.fsf.org> ;;; Copyright © 2016 Dmitry Nikolaev <cameltheman@gmail.com> ;;; Copyright © 2016, 2017, 2018, 2019, 2020 Efraim Flashner <efraim@flashner.co.il> -;;; Copyright © 2016 Marius Bakke <mbakke@fastmail.com> +;;; Copyright © 2016, 2020 Marius Bakke <mbakke@fastmail.com> ;;; Copyright © 2016 Toni Reina <areina@riseup.net> ;;; Copyright © 2017, 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2017 José Miguel Sánchez García <jmi2k@openmailbox.com> @@ -236,6 +236,8 @@ The Lato 2.010 family supports more than 100 Latin-based languages, over (define-public font-gnu-freefont (package (name "font-gnu-freefont") + ;; Note: Remove the special FontForge input and package once the 2020 + ;; release is out. (version "20120503") (source (origin (method url-fetch) @@ -253,11 +255,11 @@ The Lato 2.010 family supports more than 100 Latin-based languages, over (let ((doc-dir (string-append %output "/share/doc/" ,name "-" ,version)) (ttf-font-dir (string-append %output - "/share/fonts/ttf")) + "/share/fonts/truetype")) (otf-font-dir (string-append %output - "/share/fonts/otf")) + "/share/fonts/opentype")) (woff-font-dir (string-append %output - "/share/fonts/woff"))) + "/share/fonts/webfonts"))) (mkdir-p doc-dir) (substitute* "Makefile" (("\\$\\(TMPDIR\\)") doc-dir) @@ -289,12 +291,8 @@ The Lato 2.010 family supports more than 100 Latin-based languages, over (lambda (file) (string-suffix? "woff" file)) (find-files "." ""))))))) #:test-target "tests")) - ;; replace python 3 with python 2 - ;; python 3 support commits aren't yet released in 20120503 - ;; so freefont needs python 2 support in fontforge - (native-inputs `(("fontforge" ,(package (inherit fontforge) - (inputs `(("python-2" ,python-2) - ,@(package-inputs fontforge))))))) + ;; FreeFont anno 2012 requires a FontForge built with Python 2. + (native-inputs `(("fontforge" ,fontforge-20190801))) (home-page "https://www.gnu.org/software/freefont/") (synopsis "Unicode-encoded outline fonts") (description diff --git a/gnu/packages/fontutils.scm b/gnu/packages/fontutils.scm index 2dffc0b919..e552ece50b 100644 --- a/gnu/packages/fontutils.scm +++ b/gnu/packages/fontutils.scm @@ -5,11 +5,11 @@ ;;; Copyright © 2016, 2017 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2017 Rene Saavedra <rennes@openmailbox.org> ;;; Copyright © 2017 Leo Famulari <leo@famulari.name> -;;; Copyright © 2017 ng0 <ng0@n0.is> +;;; Copyright © 2017 Nikita <nikita@n0.is> ;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2018 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2018, 2019 Ludovic Courtès <ludo@gnu.org> -;;; Copyright © 2019 Marius Bakke <mbakke@fastmail.com> +;;; Copyright © 2019, 2020 Marius Bakke <mbakke@fastmail.com> ;;; Copyright © 2020 Roel Janssen <roel@gnu.org> ;;; Copyright © 2020 Nicolas Goaziou <mail@nicolasgoaziou.fr> ;;; @@ -60,7 +60,9 @@ #:use-module (guix build-system cmake) #:use-module (guix build-system gnu) #:use-module (guix build-system python) - #:use-module (guix build-system meson)) + #:use-module (guix build-system meson) + #:use-module (guix utils) + #:use-module (srfi srfi-1)) (define-public freetype (package @@ -296,13 +298,14 @@ fonts to/from the WOFF2 format.") (uri (string-append "https://www.freedesktop.org/software/fontconfig/release/fontconfig-" version ".tar.bz2")) + (patches (search-patches "fontconfig-hurd-path-max.patch")) (sha256 (base32 "0hb700a68kk0ip51wdlnjjc682kvlrmb6q920mzajykdk0mdsmgn")))) (build-system gnu-build-system) ;; In Requires or Requires.private of fontconfig.pc. (propagated-inputs `(("expat" ,expat) ("freetype" ,freetype) - ("libuuid" ,util-linux))) + ("libuuid" ,util-linux "lib"))) (inputs `(("gs-fonts" ,gs-fonts))) (native-inputs `(("gperf" ,gperf) @@ -397,6 +400,8 @@ X11-system or any other graphical user interface.") (sha256 (base32 "0gbxyip4wdibirdg2pvzayzyy927vxyd6dfyfiflx8zg88qzn8v8")))) (build-system gnu-build-system) + (arguments + '(#:configure-flags '("--disable-static"))) (inputs `(("zlib" ,zlib) ("expat" ,expat))) @@ -465,7 +470,7 @@ and returns a sequence of positioned glyphids from the font.") (define-public potrace (package (name "potrace") - (version "1.15") + (version "1.16") (source (origin (method url-fetch) @@ -473,8 +478,7 @@ and returns a sequence of positioned glyphids from the font.") "/potrace-" version ".tar.gz")) (sha256 (base32 - "17ajildjp14shsy339xarh1lw1p0k60la08ahl638a73mh23kcx9")) - (patches (search-patches "potrace-tests.patch")))) + "1k3sxgjqq0jnpk9xxys05q32sl5hbf1lbk1gmfxcrmpdgnhli0my")))) (build-system gnu-build-system) (native-inputs `(("ghostscript" ,ghostscript))) ;for tests (inputs `(("zlib" ,zlib))) @@ -519,16 +523,18 @@ using the above tables.") (define-public libspiro (package (name "libspiro") - (version "0.5.20150702") + (version "20190731") (source (origin (method url-fetch) (uri (string-append "https://github.com/fontforge/libspiro/releases" - "/download/" version "/libspiro-dist-" version ".tar.gz")) + "/download/" version "/libspiro-" version ".tar.gz")) (sha256 (base32 - "153ckwj6h3wwlsgcppzqj8cymv1927hi8ar8fzpchq5q89cj2kai")))) + "0m63x97b7aciviijprvy85gm03p2jsgslxn323zl9zn7qz6d3ir4")))) (build-system gnu-build-system) + (arguments + '(#:configure-flags '("--disable-static"))) (synopsis "Clothoid to bezier conversion library") (description "Raph Levien's Spiro package as a library. A mechanism for drawing @@ -539,7 +545,7 @@ smooth contours with constant curvature at the spline joins.") (define-public libuninameslist (package (name "libuninameslist") - (version "20190701") + (version "20200313") (home-page "https://github.com/fontforge/libuninameslist") (source (origin @@ -548,7 +554,7 @@ smooth contours with constant curvature at the spline joins.") "/libuninameslist-dist-" version ".tar.gz")) (sha256 (base32 - "18c9pcz81wm26q2m7npmvh9j3ibjs2hycxfh5xic2xgjfw40v2qn")))) + "10ri80c64xb4rhbif3sr87y5vhi3m702zb0m02imvj1jib9rq0m8")))) (build-system gnu-build-system) (synopsis "Unicode names and annotation list") (description @@ -565,15 +571,15 @@ definitions.") (define-public fontforge (package (name "fontforge") - (version "20190801") + (version "20200314") (source (origin (method url-fetch) (uri (string-append "https://github.com/fontforge/fontforge/releases/download/" - version "/fontforge-" version ".tar.gz")) + version "/fontforge-" version ".tar.xz")) (sha256 - (base32 "0lh8yx01asbzxm6car5cfi64njh5p4lxc7iv8dldr5rwg357a86r")))) - (build-system gnu-build-system) + (base32 "0qf88wd6riycq56d24brybyc93ns74s0nyyavm43zp2kfcihn6fd")))) + (build-system cmake-build-system) (native-inputs `(("pkg-config" ,pkg-config))) (inputs `(("cairo" ,cairo) @@ -584,7 +590,7 @@ definitions.") ("libSM" ,libsm) ("libX11" ,libx11) ("libXi" ,libxi) - ("libjpeg" ,libjpeg) + ("libjpeg" ,libjpeg-turbo) ("libltdl" ,libltdl) ("libpng" ,libpng) ("libspiro" ,libspiro) @@ -598,8 +604,20 @@ definitions.") ("python" ,python) ("zlib" ,zlib))) (arguments - '(#:phases + '(#:configure-flags '(;; TODO: Provide GTK+ for the Wayland-friendly GDK + ;; backend, instead of the legacy X11 backend. + ;; Currently it introduces a circular dependency. + "-DENABLE_X11=ON") + #:phases (modify-phases %standard-phases + (add-after 'unpack 'do-not-override-RPATH + (lambda _ + ;; Do not attempt to set a default RPATH, as our ld-wrapper + ;; already does the right thing. + (substitute* "CMakeLists.txt" + (("^set_default_rpath\\(\\)") + "")) + #t)) (add-after 'install 'set-library-path (lambda* (#:key inputs outputs #:allow-other-keys) (let ((out (assoc-ref outputs "out")) @@ -624,6 +642,31 @@ generate bitmaps.") (license license:gpl3+) (home-page "https://fontforge.github.io"))) +;; This is the last version that supports Python 2, which is needed for +;; GNU FreeFont. Remove once no longer required. +(define-public fontforge-20190801 + (package + (inherit fontforge) + (version "20190801") + (source (origin + (method url-fetch) + (uri (string-append + "https://github.com/fontforge/fontforge/releases/download/" + version "/fontforge-" version ".tar.gz")) + (sha256 + (base32 "0lh8yx01asbzxm6car5cfi64njh5p4lxc7iv8dldr5rwg357a86r")))) + (build-system gnu-build-system) + (arguments + (substitute-keyword-arguments (package-arguments fontforge) + ((#:configure-flags _) + ''()) + ((#:phases phases) + `(modify-phases ,phases + (delete 'do-not-override-RPATH))))) + (inputs + `(("python" ,python-2) + ,@(alist-delete "python" (package-inputs fontforge)))))) + (define-public python2-ufolib (package (name "python2-ufolib") @@ -756,7 +799,7 @@ maintain the Noto Fonts project.") ("desktop-file-utils" ,desktop-file-utils))) (inputs `(("json-glib" ,json-glib) - ("sqlite-with-column-metadata" ,sqlite-with-column-metadata) + ("sqlite" ,sqlite) ("fonconfig" ,fontconfig) ("freetype" ,freetype) ("gtk+" ,gtk+))) diff --git a/gnu/packages/forth.scm b/gnu/packages/forth.scm index 6902a4a4a3..4dcea19f4e 100644 --- a/gnu/packages/forth.scm +++ b/gnu/packages/forth.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2016 ng0 <ng0@n0.is> +;;; Copyright © 2016 Nikita <nikita@n0.is> ;;; Copyright © 2016 Sou Bunnbu <iyzsong@gmail.com> ;;; ;;; This file is part of GNU Guix. diff --git a/gnu/packages/freedesktop.scm b/gnu/packages/freedesktop.scm index 9b62cf6aac..f00cb1e076 100644 --- a/gnu/packages/freedesktop.scm +++ b/gnu/packages/freedesktop.scm @@ -7,6 +7,7 @@ ;;; Copyright © 2015 David Hashe <david.hashe@dhashe.com> ;;; Copyright © 2016, 2017, 2019 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2016 Kei Kebreau <kkebreau@posteo.net> +;;; Copyright © 2017 Nikita <nikita@n0.is> ;;; Copyright © 2017, 2018 Mark H Weaver <mhw@netris.org> ;;; Copyright © 2017, 2018, 2019, 2020 Marius Bakke <mbakke@fastmail.com> ;;; Copyright © 2017, 2018, 2019 Rutger Helling <rhelling@mykolab.com> @@ -18,6 +19,7 @@ ;;; Copyright © 2019, 2020 Guillaume Le Vaillant <glv@posteo.net> ;;; Copyright © 2020 Jakub Kądziołka <kuba@kadziolka.net> ;;; Copyright © 2020 Rene Saavedra <pacoon@protonmail.com> +;;; Copyright © 2020 Nicolò Balzarotti <nicolo@nixo.xyz> ;;; ;;; This file is part of GNU Guix. ;;; @@ -531,7 +533,7 @@ of a the system to know what users are logged in, and where.") (find-files ".." "^(kbd-model-map|language-fallback-map)$")) #t))))))) (native-inputs (package-native-inputs elogind)) - (inputs `(("libmount" ,util-linux) + (inputs `(("libmount" ,util-linux "lib") ("xkeyboard-config" ,xkeyboard-config) ("kbd" ,kbd) ,@(package-inputs elogind))) @@ -693,7 +695,7 @@ applications, X servers (rootless or fullscreen) or other display servers.") (define-public waylandpp (package (name "waylandpp") - (version "0.2.5") + (version "0.2.7") (home-page "https://github.com/NilsBrause/waylandpp") (source (origin (method git-fetch) @@ -701,7 +703,7 @@ applications, X servers (rootless or fullscreen) or other display servers.") (file-name (git-file-name name version)) (sha256 (base32 - "16h57hzd688664qcyznzhjp3hxipdkzgv46x82yhkww24av8b55n")))) + "1r4m0xhvwpcqxrqvp3hz1bzlkxqj2jiymd5r6hj8xjzz536hyprz")))) (build-system cmake-build-system) (arguments `(#:tests? #f)) ;no tests @@ -742,7 +744,7 @@ applications, X servers (rootless or fullscreen) or other display servers.") ("lcms" ,lcms) ("libevdev" ,libevdev) ("libinput" ,libinput-minimal) - ("libjpeg" ,libjpeg) + ("libjpeg" ,libjpeg-turbo) ("libunwind" ,libunwind) ("libva" ,libva) ("libwebp" ,libwebp) @@ -896,7 +898,7 @@ Analysis and Reporting Technology) functionality.") (define-public udisks (package (name "udisks") - (version "2.7.7") + (version "2.8.4") (source (origin (method url-fetch) (uri (string-append @@ -904,7 +906,7 @@ Analysis and Reporting Technology) functionality.") version "/udisks-" version ".tar.bz2")) (sha256 (base32 - "1dnlxqgy9v0mjdknv3b1s64szdykyk3hk0rxj3chwhpd415lrwgs")))) + "06cq52kp1nyy15qzylywy9s7hhhqc45k0s3y68crf0zsmjyng0yj")))) (build-system gnu-build-system) (native-inputs `(("docbook-xml" ,docbook-xml-4.3) ; to build the manpages @@ -933,7 +935,6 @@ Analysis and Reporting Technology) functionality.") #:disallowed-references ("doc") ;enforce separation of "doc" #:configure-flags (list "--enable-man" - "--enable-gtk-doc" ; Without this the HTML doc does not seem to build automatically. "--enable-available-modules" ; Such as lvm2, btrfs, etc. "--localstatedir=/var" "--enable-fhs-media" ;mount devices in /media, not /run/media @@ -1688,3 +1689,188 @@ Its features include: @end itemize ") (license license:expat))) + +(define-public plymouth + (package + (name "plymouth") + (version "0.9.4") + (source + (origin + (method url-fetch) + (uri (string-append "https://www.freedesktop.org/software/" + "plymouth/releases/" name "-" version ".tar.xz")) + (sha256 + (base32 + "0l8kg7b2vfxgz9gnrn0v2w4jvysj2cirp0nxads5sy05397pl6aa")))) + (build-system gnu-build-system) + (arguments + `(#:configure-flags + (list (string-append "--with-logo=" + "/etc/plymouth/logo.png") + (string-append "--with-background-color=" + "0x00ff00") + (string-append "--with-background-start-color-stop=" + "0xff0000") + (string-append "--with-background-end-color-stop=" + "0x0000ff") + "--localstatedir=/var" + "--with-boot-tty=/dev/console" + "--without-system-root-install" + "--without-rhgb-compat-link" + "--enable-drm" + "--disable-systemd-integration" + ;; Disable GTK to dramatically reduce the closure + ;; size from ~800 MiB to a little more than 200 MiB + "--disable-gtk") + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'make-reproducible + (lambda _ + (substitute* "src/main.c" + (("__DATE__") "\"guix\"")) + #t)) + (add-before 'configure 'fix-docbook + (lambda* (#:key inputs #:allow-other-keys) + (substitute* "docs/Makefile.in" + (("http://docbook.sourceforge.net/release/xsl/current/manpages/docbook.xsl") + (string-append (assoc-ref inputs "docbook-xsl") + "/xml/xsl/docbook-xsl-" + ,(package-version docbook-xsl) + "/manpages/docbook.xsl"))) + (setenv "XML_CATALOG_FILES" + (string-append (assoc-ref inputs "docbook-xml") + "/xml/dtd/docbook/catalog.xml")) + #t))))) + (inputs + `(("glib" ,glib) + ("pango" ,pango) + ("libdrm" ,libdrm) + ("libpng" ,libpng) + ("eudev" ,eudev))) + (native-inputs + `(("pkg-config" ,pkg-config) + ("libxslt" ,libxslt) + ("docbook-xsl" ,docbook-xsl) + ("docbook-xml" ,docbook-xml))) + (synopsis "Graphical boot animation (splash) and logger") + (home-page "https://www.freedesktop.org/wiki/Software/Plymouth/") + (description + "Plymouth is an application that runs very early in the boot process and +that provides a graphical boot animation while the boot process happens in the +background. You are not supposed to install this on your own, it is only +useful with system integration.") + (license license:gpl2+))) + +(define-public libindicator + (package + (name "libindicator") + (version "12.10.1") + (source + (origin + (method url-fetch) + (uri (string-append + "https://launchpad.net/libindicator/" + (version-major+minor version) "/" version + "/+download/libindicator-" version ".tar.gz")) + (sha256 + (base32 + "0zs4z7l9b57jldwz0ban77f3c2zq43ambd0dssf5qg9i216f9lmj")))) + (build-system gnu-build-system) + (native-inputs + `(("dbus-test-runner" ,dbus-test-runner) + ("glib:bin" ,glib "bin") + ("pkg-config" ,pkg-config) + ("xvfb" ,xorg-server-for-tests))) + (inputs + `(("gtk+" ,gtk+) + ("glib" ,glib))) + (arguments + `(#:make-flags '("CFLAGS=-Wno-error") + #:phases + (modify-phases %standard-phases + (add-before 'configure 'fix-missing-space-for-libm + (lambda* (#:key outputs #:allow-other-keys) + (substitute* "configure" + (("LIBM=\"-lm\"") "LIBM=\" -lm\"")) + #t)) + (add-before 'configure 'fix-test-paths + (lambda* (#:key inputs #:allow-other-keys) + (substitute* "tests/Makefile.in" + (("/bin/sh") (which "sh")) + (("#!/bin/bash") (string-append "#!" (which "bash"))) + (("/usr/share") + (string-append (assoc-ref inputs "dbus-test-runner") "/share"))) + #t))))) + (home-page "https://launchpad.net/libindicator") + (synopsis "Ayatana indicators symbols and functions") + (description "A set of symbols and convenience functions for Ayatana indicators.") + (license license:gpl3))) + +(define-public libappindicator + (package + (name "libappindicator") + (version "12.10.0") + (source + (origin + (method url-fetch) + (uri (string-append + "https://launchpad.net/libappindicator/" + (version-major+minor version) "/" version + "/+download/libappindicator-" version ".tar.gz")) + (sha256 + (base32 + "17xlqd60v0zllrxp8bgq3k5a1jkj0svkqn8rzllcyjh8k0gpr46m")))) + (build-system gnu-build-system) + (native-inputs + `(("dbus-test-runner" ,dbus-test-runner) + ("glib:bin" ,glib "bin") + ("gobject-introspection" ,gobject-introspection) + ("pkg-config" ,pkg-config) + ("xvfb" ,xorg-server-for-tests))) + (inputs + `(("dbus-glib" ,dbus-glib) + ("gtk+" ,gtk+) + ("libdbusmenu" ,libdbusmenu) + ("libindicator" ,libindicator) + ("python@2" ,python-2) + ("python2-pygtk" ,python2-pygtk) + ("python2-pygobject-2" ,python2-pygobject-2) + ;; ("mono" ,mono) ; requires non-packaged gapi + ("vala" ,vala))) + (arguments + ;; FIXME: do not hardcode gtk version + `(#:configure-flags '("--with-gtk=3") + #:make-flags '("CFLAGS=-Wno-error") + #:tests? #f ; One test does not pass (it succeeds when it should fail). + #:phases + (modify-phases %standard-phases + (add-before 'configure 'fix-paths + (lambda* (#:key inputs #:allow-other-keys) + (substitute* "docs/reference/Makefile.in" + (("/bin/sh") (which "sh"))) + (substitute* "tests/Makefile.in" + (("/bin/sh") (which "sh")) + (("#!/bin/bash") (string-append "#!" (which "bash"))) + (("/usr") (string-append (assoc-ref inputs "dbus-test-runner")))) + (substitute* "bindings/python/Makefile.in" + (("-lappindicator") "-lappindicator3")) + #t)) + (add-after 'unpack 'fix-codegen-path + (lambda _ + (substitute* "configure" + (("PYGTK_CODEGEN=.*") "PYGTK_CODEGEN=pygtk-codegen-2.0\n")) + #t)) + (add-after 'build 'build-bindings + (lambda _ + (invoke "make" "-C" "bindings/python") + #t)) + (add-after 'install 'install-bindings + (lambda _ + (invoke "make" "-C" "bindings/python" "install") + #t))))) + (home-page "https://launchpad.net/libappindicator") + (synopsis "Allow applications to export a menu into the Unity menu bar") + (description "A library to allow applications to export a menu, originally +into the Unity menu bar. Based on KSNI, it also works in KDE and will +fallback to generic Systray support if none of those are available.") + (license license:lgpl2.1+))) diff --git a/gnu/packages/fribidi.scm b/gnu/packages/fribidi.scm index 345529b73a..e213192aa6 100644 --- a/gnu/packages/fribidi.scm +++ b/gnu/packages/fribidi.scm @@ -27,18 +27,17 @@ (define-public fribidi (package - (replacement fribidi/fixed) (name "fribidi") - (version "1.0.5") + (version "1.0.9") (source (origin (method url-fetch) (uri (string-append "https://github.com/fribidi/fribidi/releases" "/download/v" version "/fribidi-" version - ".tar.bz2")) + ".tar.xz")) (sha256 - (base32 "1kp4b1hpx2ky20ixgy2xhj5iygfl7ps5k9kglh1z5i7mhykg4r3a")))) + (base32 "1iz06r6ha2nrgbzbn4141r58a60a9s5qiaadjjhhvdkg0alpxr65")))) (build-system gnu-build-system) (synopsis "Implementation of the Unicode bidirectional algorithm") (description @@ -48,13 +47,6 @@ or right-to-left ordering as necessary.") (home-page "https://github.com/fribidi/fribidi") (license lgpl2.1+))) -(define fribidi/fixed - (package - (inherit fribidi) - (source - (origin (inherit (package-source fribidi)) - (patches (search-patches "fribidi-CVE-2019-18397.patch")))))) - (define-public bidiv (package (name "bidiv") diff --git a/gnu/packages/fvwm.scm b/gnu/packages/fvwm.scm index 88f6e24a99..470f2e11e3 100644 --- a/gnu/packages/fvwm.scm +++ b/gnu/packages/fvwm.scm @@ -1,7 +1,7 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2015 Sou Bunnbu <iyzsong@gmail.com> ;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il> -;;; Copyright © 2017 ng0 <ng0@n0.is> +;;; Copyright © 2017 Nikita <nikita@n0.is> ;;; Copyright © 2019 Tobias Geerinckx-Rice <me@tobias.gr> ;;; ;;; This file is part of GNU Guix. diff --git a/gnu/packages/game-development.scm b/gnu/packages/game-development.scm index d4b2fdcab2..26aa4f714b 100644 --- a/gnu/packages/game-development.scm +++ b/gnu/packages/game-development.scm @@ -38,6 +38,7 @@ (define-module (gnu packages game-development) #:use-module (srfi srfi-1) + #:use-module (ice-9 match) #:use-module ((guix licenses) #:prefix license:) #:use-module (guix packages) #:use-module (guix download) @@ -532,7 +533,7 @@ clone.") ("xcb-util-image" ,xcb-util-image) ("libxrandr" ,libxrandr) ("eudev" ,eudev) - ("libjpeg" ,libjpeg) + ("libjpeg" ,libjpeg-turbo) ("libsndfile" ,libsndfile) ("stb-image" ,stb-image) ("stb-image-write" ,stb-image-write))) @@ -779,7 +780,7 @@ etc.") ("freetype" ,freetype) ("glu" ,glu) ("gtk" ,gtk+-2) - ("libjpeg" ,libjpeg) + ("libjpeg" ,libjpeg-turbo) ("libpng" ,libpng) ("libtheora" ,libtheora) ("libvorbis" ,libvorbis) @@ -861,7 +862,7 @@ etc.") ("curl" ,curl) ("freetype" ,freetype) ("giflib" ,giflib) - ("libjpeg" ,libjpeg) + ("libjpeg" ,libjpeg-turbo) ("libpng" ,libpng) ("libwebp" ,libwebp) ("libx11" ,libx11) @@ -1013,7 +1014,7 @@ interface (API).") ("sdl-mixer" ,sdl-mixer) ("sdl-ttf" ,sdl-ttf) ("sdl-gfx" ,sdl-gfx) - ("libjpeg" ,libjpeg) + ("libjpeg" ,libjpeg-turbo) ("libpng" ,libpng) ("libX11" ,libx11) ("libsmpeg" ,libsmpeg) @@ -1726,7 +1727,7 @@ scripted in a Python-like language.") ("libxft" ,libxft) ("libxinerama" ,libxinerama) ("libfontconfig" ,fontconfig) - ("libjpeg" ,libjpeg) + ("libjpeg" ,libjpeg-turbo) ("libpng" ,libpng) ("fltk" ,fltk) ("zlib" ,zlib))) @@ -1934,7 +1935,7 @@ of the others") (build-system gnu-build-system) (inputs `(("sdl2" ,sdl2) - ("libjpeg" ,libjpeg) + ("libjpeg" ,libjpeg-turbo) ("openal" ,openal) ("curl" ,curl) ("opusfile" ,opusfile) @@ -2225,3 +2226,89 @@ rigid body physics library written in C.") developers providing an advanced true color console, input, and lots of other utilities frequently used in roguelikes.") (license license:bsd-3))) + +(define-public warsow-qfusion + ;; As of 2020-04-09, the latest stable version 2.1.0 is deprecated. + ;; The 2.5 beta as published on the homepage is commit + ;; c4de15df559410aff0ca6643724e24cddb0ecbbd + (let ((commit "c4de15df559410aff0ca6643724e24cddb0ecbbd")) + (package + (name "warsow-qfusion") + (version (git-version "2.5" "1" commit)) ; 2.5-beta + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/Warsow/qfusion/") + (commit commit) + (recursive? #t))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0xv2yycr43p3xmq7lm6j6zb3cpcr6w00x7qg918faq0mw9j7v48g")) + ;; Issue reported here: https://github.com/Warsow/qfusion/issues/46 + (patches (search-patches "warsow-qfusion-fix-bool-return-type.patch")) + (modules '((guix build utils))) + (snippet '(begin + (delete-file-recursively "platforms") + (delete-file-recursively "debian") + (delete-file-recursively "libsrcs") + #t)))) + (build-system cmake-build-system) + (arguments + `(#:tests? #f ; No tests. + #:configure-flags '("-DQFUSION_GAME=Warsow") + #:modules + ((guix build utils) + (guix build cmake-build-system) + (ice-9 match)) + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'change-to-build-dir + (lambda _ + (chdir "source") + #t)) + (add-after 'install 'really-install + (lambda* (#:key outputs system #:allow-other-keys) + (let ((arch (match system + ("x86_64-linux" "x86_64") + ("i686-linux" "i386"))) + (out (assoc-ref outputs "out"))) + (install-file (string-append "../source/build/basewsw/libgame_" + arch ".so") + (string-append out "/lib/")) + (install-file (string-append "../source/build/libui_" arch ".so") + (string-append out "/lib/")) + (for-each + (lambda (file) + (install-file file (string-append out "/bin/"))) + (append (find-files "../source/build" "warsow") + (find-files "../source/build" "wsw_server.")))) + #t))))) + (inputs + `(("alsa-lib" ,alsa-lib) + ("curl" ,curl) + ("freetype" ,freetype) + ("ffmpeg" ,ffmpeg) + ("libjpeg" ,libjpeg-turbo) + ("libogg" ,libogg) + ("libpng" ,libpng) + ("libtheora" ,libtheora) + ("libvorbis" ,libvorbis) + ("mesa" ,mesa) + ("openal" ,openal) + ("pulseaudio" ,pulseaudio) + ("qtbase" ,qtbase) + ("qtdeclarative" ,qtdeclarative) + ("sdl2" ,sdl2) + ("uuid.h" ,util-linux "lib") + ("zlib" ,zlib))) + (native-inputs + `(("pkg-config" ,pkg-config))) + (home-page "https://github.com/Warsow/qfusion") + (supported-systems '("i686-linux" "x86_64-linux")) + (synopsis "Warsow's fork of qfusion, the id Tech 2 derived game engine") + (description + "This package contains the game engine of Warsow, a first-person +shooter video game. The engine is based on qfusion, the id Tech 2 derived +game engine. id Tech 2 is the engine originally behind Quake 2.") + (license license:gpl2+)))) diff --git a/gnu/packages/games.scm b/gnu/packages/games.scm index 10b3a072b9..63977f9c47 100644 --- a/gnu/packages/games.scm +++ b/gnu/packages/games.scm @@ -15,7 +15,7 @@ ;;; Copyright © 2015, 2016, 2017 Alex Kost <alezost@gmail.com> ;;; Copyright © 2015 Paul van der Walt <paul@denknerd.org> ;;; Copyright © 2016, 2017 Rodger Fox <thylakoid@openmailbox.org> -;;; Copyright © 2016, 2017, 2018 ng0 <ng0@n0.is> +;;; Copyright © 2016, 2017, 2018 Nikita <nikita@n0.is> ;;; Copyright © 2016 Albin Söderqvist <albin@fripost.org> ;;; Copyright © 2016, 2017, 2018, 2019 Kei Kebreau <kkebreau@posteo.net> ;;; Copyright © 2016 Alex Griffin <a@ajgrf.com> @@ -27,7 +27,7 @@ ;;; Copyright © 2017, 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2017, 2019 nee <nee-git@hidamari.blue> ;;; Copyright © 2017 Clément Lassieur <clement@lassieur.org> -;;; Copyright © 2017, 2019 Marius Bakke <mbakke@fastmail.com> +;;; Copyright © 2017, 2019, 2020 Marius Bakke <mbakke@fastmail.com> ;;; Copyright © 2017, 2018 Rutger Helling <rhelling@mykolab.com> ;;; Copyright © 2017 Roel Janssen <roel@gnu.org> ;;; Copyright © 2017, 2018, 2019, 2020 Nicolas Goaziou <mail@nicolasgoaziou.fr> @@ -241,7 +241,7 @@ `(("expat" ,expat) ("freeglut" ,freeglut) ("glu" ,glu) - ("libjpeg" ,libjpeg) + ("libjpeg" ,libjpeg-turbo) ("libogg" ,libogg) ("libtiff" ,libtiff) ("libvorbis" ,libvorbis) @@ -863,7 +863,7 @@ effects and music to make a completely free game.") `(("pkg-config" ,pkg-config))) (inputs `(("glu" ,glu) - ("libjpeg" ,libjpeg) + ("libjpeg" ,libjpeg-turbo) ("libogg" ,libogg) ("libpng" ,libpng) ("libvorbis" ,libvorbis) @@ -1200,7 +1200,11 @@ such as chess or stockfish.") (base32 "11xwhcli1h12k6rnhhyq4jphzrhfik7i8ah3k32pqw803460n6yf")))) (build-system gnu-build-system) - (inputs `(("glib" ,glib) + (inputs `(;; XXX: Build with an older Pango for 'pango_font_get_hb_font' and + ;; 'pango_coverage_get_type'. Try removing this for versions > 1.06.002. + ("pango" ,pango-1.42) + + ("glib" ,glib) ("readline" ,readline) ("gtk+" ,gtk+-2) ("mesa" ,mesa) @@ -1252,6 +1256,16 @@ also features an attractive, 3D representation of the playing board.") (base32 "1vlf924mq8hg93bsjj0rzvs0crc6psmlxyc6zn0fr7msnmpx6gib")))) (build-system gnu-build-system) + (arguments + '(#:phases (modify-phases %standard-phases + (add-after 'unpack 'skip-gtk-update-icon-cache + (lambda _ + ;; Do not attempt to run 'gtk-update-icon-cache', which is + ;; unnecessary and causes a needless dependency on glib. + (substitute* "Makefile.in" + (("gtk-update-icon-cache") + "true")) + #t))))) (inputs `(("gtk+" ,gtk+-2) ("mesa" ,mesa) ("glu" ,glu) @@ -2213,7 +2227,7 @@ are primarily in English, however some in other languages are provided.") #:make-flags '("CC=gcc" "sharedlib"))) (inputs `(("bzip2" ,bzip2) - ("libjpeg" ,libjpeg) + ("libjpeg" ,libjpeg-turbo) ("libpng" ,libpng) ("libx11" ,libx11) ("libxxf86vm" ,libxxf86vm) @@ -2360,7 +2374,7 @@ match, cannon keep, and grave-itation pit.") ("gmp" ,gmp) ("irrlicht" ,irrlicht) ("jsoncpp" ,jsoncpp) - ("libjpeg" ,libjpeg) + ("libjpeg" ,libjpeg-turbo) ("libpng" ,libpng) ("libogg" ,libogg) ("libvorbis" ,libvorbis) @@ -2497,6 +2511,7 @@ Widgets, and allows users to create more.") (uri (string-append "https://codeload.github.com/fifengine/" "fifengine/tar.gz/" version)) (file-name (string-append name "-" version ".tar.gz")) + (patches (search-patches "fifengine-swig-compat.patch")) (sha256 (base32 "1y4grw25cq5iqlg05rnbyxw1njl11ypidnlsm3qy4sm3xxdvb0p8")))) @@ -2513,7 +2528,9 @@ Widgets, and allows users to create more.") "/include/AL") (string-append "-DPYTHON_SITE_PACKAGES=" (assoc-ref %outputs "out") - "/lib/python3.7/site-packages")) + "/lib/python" + ,(version-major+minor (package-version python)) + "/site-packages")) #:phases (modify-phases %standard-phases (add-after 'unpack 'patch-run_tests.py @@ -2602,7 +2619,7 @@ games using Python as well as C++.") `(("pkg-config" ,pkg-config))) (inputs `(("freetype" ,freetype) - ("libjpeg" ,libjpeg) + ("libjpeg" ,libjpeg-turbo) ("libpng" ,libpng) ("libsndfile" ,libsndfile) ("libxml2" ,libxml2) @@ -2731,7 +2748,7 @@ This game is based on the GPL version of the famous game TuxRacer.") ("curl" ,curl) ;; The following input is needed to build the bundled and modified ;; version of irrlicht. - ("libjpeg" ,libjpeg) + ("libjpeg" ,libjpeg-turbo) ("openssl" ,openssl) ("enet" ,enet))) (native-inputs @@ -2882,20 +2899,7 @@ falling, themeable graphics and sounds, and replays.") "1i8mz6gw3qar09bscczhki0g4scj8pl58v85rp0g55r4bcq41l5v")))) (build-system cmake-build-system) (arguments - `(#:tests? #f ;no check target - #:phases (modify-phases %standard-phases - (add-before 'configure 'treat-boost-as-system-header - (lambda* (#:key inputs #:allow-other-keys) - (let ((boost (assoc-ref inputs "boost"))) - ;; Ensure Boost is treated as "system headers" to - ;; pacify compiler warnings induced by Boost headers. - (for-each (lambda (variable) - (setenv variable - (string-append boost "/include:" - (or (getenv variable) - "")))) - '("C_INCLUDE_PATH" "CPLUS_INCLUDE_PATH")) - #t)))))) + `(#:tests? #f)) ;no check target (native-inputs `(("gettext" ,gettext-minimal) ("pkg-config" ,pkg-config))) @@ -4391,7 +4395,7 @@ throwing people around in pseudo-randomly generated buildings.") (add-after 'set-paths 'set-sdl-paths (lambda* (#:key inputs #:allow-other-keys) (setenv "CPATH" - (string-append (getenv "CPATH") ":" + (string-append (or (getenv "CPATH") "") ":" (assoc-ref inputs "sdl-union") "/include/SDL")))) (replace 'configure @@ -4800,7 +4804,8 @@ over 100 user-created campaigns.") (string-append (assoc-ref inputs "sdl-union") "/include/SDL:" (assoc-ref inputs "python") - "/include/python2.7")) + "/include/python2.7:" + (or (getenv "CPLUS_INCLUDE_PATH") ""))) (substitute* "src/main/main.cpp" (("#include <SDL.h>" line) (string-append line " @@ -4865,7 +4870,7 @@ small robot living in the nano world, repair its maker.") (define-public teeworlds (package (name "teeworlds") - (version "0.7.4") + (version "0.7.5") (source (origin (method git-fetch) (uri (git-reference @@ -4874,7 +4879,7 @@ small robot living in the nano world, repair its maker.") (file-name (git-file-name name version)) (sha256 (base32 - "1lxdb1k2cdj2421vyz1z0ximzfnpkh2y4y84zpn2gqsa1nzwbryb")) + "169dl83q08zl4h813az8hjs4rs3dms9yjn6bnsld4fjcj0imvvc6")) (modules '((guix build utils) (ice-9 ftw) (ice-9 regex) @@ -5577,7 +5582,7 @@ Crowther & Woods, its original authors, in 1995. It has been known as (setenv "CPATH" (string-append (assoc-ref inputs "sdl-union") "/include/SDL2:" - (getenv "CPATH"))) + (or (getenv "CPATH") ""))) #t)) (delete 'check) ;; premake doesn't provide install target @@ -5631,19 +5636,13 @@ Crowther & Woods, its original authors, in 1995. It has been known as (copy-recursively "game" (string-append data "/game")) ;; launcher (mkdir-p applications) - (with-output-to-file (string-append applications "/" - ,name ".desktop") - (lambda () - (display - (string-append - "[Desktop Entry] -Name=ToME4 -Comment=" ,synopsis "\n" -"Exec=" ,name "\n" -"Icon=" icon "\n" -"Terminal=false -Type=Application -Categories=Game;RolePlaying;\n"))))) + (make-desktop-entry-file + (string-append applications "/" ,name ".desktop") + #:name "ToME4" + #:comment ,synopsis + #:exec ,name + #:icon icon + #:categories '("Game" "RolePlaying"))) #t))))) (home-page "https://te4.org") (description "Tales of Maj’Eyal (ToME) RPG, featuring tactical turn-based @@ -6100,7 +6099,7 @@ You can save humanity and get programming skills!") ("fluidsynth" ,fluidsynth) ("gtk+3" ,gtk+) ("libgme" ,libgme) - ("libjpeg" ,libjpeg) + ("libjpeg" ,libjpeg-turbo) ("libsndfile" ,libsndfile) ("mesa" ,mesa) ("mpg123" ,mpg123) @@ -6191,7 +6190,7 @@ affect gameplay).") (package (inherit chocolate-doom) (name "crispy-doom") - (version "5.7.2") + (version "5.8.0") (source (origin (method git-fetch) (uri (git-reference @@ -6199,7 +6198,7 @@ affect gameplay).") (commit (string-append "crispy-doom-" version)))) (file-name (git-file-name name version)) (sha256 - (base32 "002aqbgsksrgzqridwdlkrjincaxh0dkvwlrbb8d2f3kwk7lj4fq")))) + (base32 "1b6gn0dysv631jynh769whww9xcss1gms78sz3nrn855q1dsvcb4")))) (native-inputs (append (package-native-inputs chocolate-doom) @@ -6557,7 +6556,7 @@ quotation from a collection of quotes.") `(("xonotic-data" ,xonotic-data) ("alsa-lib" ,alsa-lib) ("curl" ,curl) - ("libjpeg" ,libjpeg) + ("libjpeg" ,libjpeg-turbo) ("libmodplug" ,libmodplug) ("libvorbis" ,libvorbis) ("libogg" ,libogg) @@ -6832,7 +6831,7 @@ your score gets higher, you level up and the blocks fall faster.") (define-public endless-sky (package (name "endless-sky") - (version "0.9.10") + (version "0.9.12") (source (origin (method git-fetch) @@ -6841,8 +6840,7 @@ your score gets higher, you level up and the blocks fall faster.") (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 - (base32 - "1wax9qhxakydg6bs92d1jy2fki1n9r0wkps1np02y0pvm1fl189i")))) + (base32 "18nkl4s3r5sy3sd9lhbdg9160c7fggklklprx0d5azifc8g6k0wj")))) (build-system scons-build-system) (arguments `(#:scons ,scons-python2 @@ -7989,22 +7987,18 @@ on items and player adaptability for character progression.") ;; game, so we borrow SCUMMVM's. (let ((apps (string-append out "/share/applications"))) (mkdir-p apps) - (with-output-to-file (string-append apps "/drascula.desktop") - (lambda _ - (format #t - "[Desktop Entry]~@ - Name=Drascula: The Vampire Strikes Back~@ - GenericName=Drascula~@ - Exec=~a/bin/drascula~@ - Icon=~a/share/icons/hicolor/scalable/apps/scummvm.svg~@ - Categories=AdventureGame;Game;RolePlaying;~@ - Keywords=game;adventure;roleplaying;2D,fantasy;~@ - Comment=Classic 2D point and click adventure game~@ - Comment[de]=klassisches 2D-Abenteuerspiel in Zeigen-und-Klicken-Manier~@ - Comment[fr]=Jeux classique d'aventure pointer-et-cliquer en 2D~@ - Comment[it]=Gioco classico di avventura punta e clicca 2D~@ - Type=Application~%" - out scummvm)))) + (make-desktop-entry-file + (string-append apps "/drascula.desktop") + #:name "Drascula: The Vampire Strikes Back" + #:generic-name "Drascula" + #:exec (string-append out "/bin/drascula") + #:icon (string-append scummvm "/share/icons/hicolor/scalable/apps/scummvm.svg") + #:categories '("AdventureGame" "Game" "RolePlaying") + #:keywords '("game" "adventure" "roleplaying" "2D" "fantasy") + #:comment '((#f "Classic 2D point and click adventure game") + ("de" "Klassisches 2D-Abenteuerspiel in Zeigen-und-Klicken-Manier") + ("fr" "Jeu classique d'aventure pointer-et-cliquer en 2D") + ("it" "Gioco classico di avventura punta e clicca 2D")))) #t)))) (native-inputs `(("bash" ,bash) @@ -10247,7 +10241,7 @@ This package is part of the KDE games module.") `(("curl" ,curl) ("font-dejavu" ,font-dejavu) ("glu" ,glu) - ("libjpeg" ,libjpeg) + ("libjpeg" ,libjpeg-turbo) ("libpng" ,libpng) ("libxdg-basedir" ,libxdg-basedir) ("libxml2" ,libxml2) @@ -10566,7 +10560,7 @@ kingdom.") (native-inputs `(("gettext" ,gettext-minimal))) ;for msgfmt (inputs - `(("libjpeg" ,libjpeg) + `(("libjpeg" ,libjpeg-turbo) ("libpng" ,libpng) ("libvorbis" ,libvorbis) ("physfs" ,physfs) diff --git a/gnu/packages/gcc.scm b/gnu/packages/gcc.scm index 3d1ae25dc9..0c5be69fbf 100644 --- a/gnu/packages/gcc.scm +++ b/gnu/packages/gcc.scm @@ -1,12 +1,12 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2014, 2015, 2018 Mark H Weaver <mhw@netris.org> ;;; Copyright © 2014, 2015, 2016, 2017, 2019 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2015 Andreas Enge <andreas@enge.fr> ;;; Copyright © 2015, 2016, 2017, 2018, 2020 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2016 Carlos Sánchez de La Lama <csanchezdll@gmail.com> ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr> -;;; Copyright © 2018 Marius Bakke <mbakke@fastmail.com> +;;; Copyright © 2018, 2020 Marius Bakke <mbakke@fastmail.com> ;;; Copyright © 2020 Joseph LaFreniere <joseph@lafreniere.xyz> ;;; Copyright © 2020 Guy Fleury Iteriteka <gfleury@disroot.org> ;;; @@ -342,7 +342,9 @@ where the OS part is overloaded to denote a specific ABI---into GCC (files '("include"))) (search-path-specification (variable "CPLUS_INCLUDE_PATH") - (files '("include"))) + ;; Add 'include/c++' here so that <cstdlib>'s "#include_next + ;; <stdlib.h>" finds GCC's <stdlib.h>, not libc's. + (files '("include/c++" "include"))) (search-path-specification (variable "LIBRARY_PATH") (files '("lib" "lib64"))))) @@ -402,6 +404,7 @@ Go. It also includes runtime support libraries for these languages.") "14l06m7nvcvb0igkbip58x59w3nq6315k6jcz3wr9ch1rn9d44bc")) (patches (search-patches "gcc-4.9-libsanitizer-fix.patch" "gcc-4.9-libsanitizer-ustat.patch" + "gcc-4.9-libsanitizer-mode-size.patch" "gcc-arm-bug-71399.patch" "gcc-asan-missing-include.patch" "gcc-libvtv-runpath.patch" @@ -421,7 +424,33 @@ Go. It also includes runtime support libraries for these languages.") #t)))) ;; Override inherited texinfo-5 with latest version. (native-inputs `(("perl" ,perl) ;for manpages - ("texinfo" ,texinfo))))) + ("texinfo" ,texinfo))) + (arguments + (if (%current-target-system) + (package-arguments gcc-4.8) + ;; For native builds of GCC 4.9 and GCC 5, the C++ include path needs + ;; to be adjusted so it does not interfere with GCC's own build processes. + (substitute-keyword-arguments (package-arguments gcc-4.8) + ((#:modules modules %gnu-build-system-modules) + `((srfi srfi-1) + ,@modules)) + ((#:phases phases) + `(modify-phases ,phases + (add-after 'set-paths 'adjust-CPLUS_INCLUDE_PATH + (lambda* (#:key inputs #:allow-other-keys) + (let ((libc (assoc-ref inputs "libc")) + (gcc (assoc-ref inputs "gcc"))) + (setenv "CPLUS_INCLUDE_PATH" + (string-join (fold delete + (string-split (getenv "CPLUS_INCLUDE_PATH") + #\:) + (list (string-append libc "/include") + (string-append gcc "/include/c++"))) + ":")) + (format #t + "environment variable `CPLUS_INCLUDE_PATH' changed to ~a~%" + (getenv "CPLUS_INCLUDE_PATH")) + #t)))))))))) (define-public gcc-5 ;; Note: GCC >= 5 ships with .info files but 'make install' fails to install @@ -441,7 +470,9 @@ Go. It also includes runtime support libraries for these languages.") "gcc-5.0-libvtv-runpath.patch" "gcc-5-source-date-epoch-1.patch" "gcc-5-source-date-epoch-2.patch" - "gcc-fix-texi2pod.patch")) + "gcc-6-libsanitizer-mode-size.patch" + "gcc-fix-texi2pod.patch" + "gcc-5-hurd.patch")) (modules '((guix build utils))) (snippet ;; Fix 'libcc1/configure' error when cross-compiling GCC. @@ -473,35 +504,31 @@ Go. It also includes runtime support libraries for these languages.") (base32 "0i89fksfp6wr1xg9l8296aslcymv2idn60ip31wr9s4pwin7kwby")) (patches (search-patches "gcc-strmov-store-file-names.patch" + "gcc-6-libsanitizer-mode-size.patch" "gcc-6-source-date-epoch-1.patch" "gcc-6-source-date-epoch-2.patch" "gcc-5.0-libvtv-runpath.patch")))) + + ;; GCC 4.9 and 5 has a workaround that is not needed for GCC 6 and later. + (arguments (package-arguments gcc-4.8)) + (inputs `(("isl" ,isl) - ,@(package-inputs gcc-4.7))) - - (native-search-paths - ;; We have to use 'CPATH' for GCC > 5, not 'C_INCLUDE_PATH' & co., due to - ;; <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70129>. - (list (search-path-specification - (variable "CPATH") - (files '("include"))) - (search-path-specification - (variable "LIBRARY_PATH") - (files '("lib" "lib64"))))))) + ,@(package-inputs gcc-4.7))))) (define-public gcc-7 (package (inherit gcc-6) - (version "7.4.0") + (version "7.5.0") (source (origin (method url-fetch) (uri (string-append "mirror://gnu/gcc/gcc-" version "/gcc-" version ".tar.xz")) (sha256 (base32 - "0lgy170b0pp60j9cczqkmaqyjjb584vfamj4c30swd7k0j6y5pgd")) + "0qg6kqc5l72hpnj4vr6l0p69qav0rh4anlkk3y55540zy3klc6dq")) (patches (search-patches "gcc-strmov-store-file-names.patch" + "gcc-7-libsanitizer-mode-size.patch" "gcc-5.0-libvtv-runpath.patch")))) (description "GCC is the GNU Compiler Collection. It provides compiler front-ends @@ -537,6 +564,20 @@ It also includes runtime support libraries for these languages."))) "gcc-9-asan-fix-limits-include.patch" "gcc-5.0-libvtv-runpath.patch")))))) +(define-public gcc-10 + (package + (inherit gcc-8) + (version "10.1.0") + (source (origin + (method url-fetch) + (uri (string-append "mirror://gnu/gcc/gcc-" + version "/gcc-" version ".tar.xz")) + (sha256 + (base32 + "18kyds3ss4j7in8shlsbmjafdhin400mq739d0dnyrabhhiqm2dn")) + (patches (search-patches "gcc-9-strmov-store-file-names.patch" + "gcc-5.0-libvtv-runpath.patch")))))) + ;; Note: When changing the default gcc version, update ;; the gcc-toolchain-* definitions and the gfortran definition ;; accordingly. @@ -614,12 +655,12 @@ as the 'native-search-paths' field." (native-search-paths search-paths) (properties (alist-delete 'hidden? (package-properties gcc))) (arguments - (substitute-keyword-arguments `(#:modules ((guix build gnu-build-system) - (guix build utils) - (ice-9 regex) - (srfi srfi-1) - (srfi srfi-26)) - ,@(package-arguments gcc)) + (substitute-keyword-arguments (package-arguments gcc) + ((#:modules modules %gnu-build-system-modules) + `(,@modules + (srfi srfi-1) + (srfi srfi-26) + (ice-9 regex))) ((#:configure-flags flags) `(cons (string-append "--enable-languages=" ,(string-join languages ",")) @@ -897,7 +938,7 @@ as the 'native-search-paths' field." (define-public isl (package (name "isl") - (version "0.21") + (version "0.22.1") (source (origin (method url-fetch) (uri (list (string-append @@ -908,8 +949,27 @@ as the 'native-search-paths' field." name "-" version ".tar.bz2"))) (sha256 (base32 - "0ng8l3q1px9lkzb44nxnzhh6fhdbclrwng9xs2v9m8yii8gs336i")))) + "1kf54jib0nind1pvakblnfhimmwzm0y1llz8470ag0di5vwqwrhs")))) (build-system gnu-build-system) + (outputs '("out" "static")) + (arguments + '(#:phases (modify-phases %standard-phases + (add-after 'install 'move-static-library + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (static (assoc-ref outputs "static")) + (source (string-append out "/lib/libisl.a")) + (target (string-append static "/lib/libisl.a"))) + (mkdir-p (dirname target)) + (link source target) + (delete-file source) + + ;; Remove reference to libisl.a from the .la file so + ;; libtool looks for it in the usual locations. + (substitute* (string-append out "/lib/libisl.la") + (("^old_library=.*") + "old_library=''\n")) + #t)))))) (inputs `(("gmp" ,gmp))) (home-page "http://isl.gforge.inria.fr/") (synopsis diff --git a/gnu/packages/gd.scm b/gnu/packages/gd.scm index 2d3ee4200d..c6a2e0117d 100644 --- a/gnu/packages/gd.scm +++ b/gnu/packages/gd.scm @@ -42,7 +42,7 @@ ;; Note: With libgd.org now pointing to github.com, genuine old ;; tarballs are no longer available. Notably, versions 2.0.x are ;; missing. - (version "2.2.5") + (version "2.3.0") (source (origin (method url-fetch) (uri (string-append @@ -50,19 +50,15 @@ version "/libgd-" version ".tar.xz")) (sha256 (base32 - "0lfy5f241sbv8s3splm2zqiaxv7lxrcshh875xryryk7yk5jqc4c")) - - (patches (search-patches "gd-CVE-2018-5711.patch" - "gd-CVE-2018-1000222.patch" - "gd-CVE-2019-6977.patch" - "gd-CVE-2019-6978.patch" - "gd-fix-tests-on-i686.patch" - "gd-freetype-test-failure.patch")))) + "0n5czhxzinvjvmhkf5l9fwjdx5ip69k5k7pj6zwb6zs1k9dibngc")) + (patches (search-patches "gd-fix-tests-on-i686.patch" + "gd-brect-bounds.patch")))) (build-system gnu-build-system) (arguments ;; As recommended by github.com/libgd/libgd/issues/278 to fix rounding ;; issues on aarch64 and other architectures. `(#:make-flags '("CFLAGS=-ffp-contract=off") + #:configure-flags '("--disable-static") #:phases (modify-phases %standard-phases ;; This test is known to fail on i686-linux: @@ -77,12 +73,11 @@ (native-inputs `(("pkg-config" ,pkg-config))) (inputs - `(("freetype" ,freetype) + `(("fontconfig" ,fontconfig) + ("freetype" ,freetype) + ("libjpeg" ,libjpeg-turbo) ("libpng" ,libpng) ("zlib" ,zlib))) - (propagated-inputs - `(("fontconfig" ,fontconfig) - ("libjpeg" ,libjpeg))) (home-page "https://www.libgd.org/") (synopsis "Library for the dynamic creation of images by programmers") (description @@ -113,8 +108,10 @@ most common applications of GD involve website development.") ("freetype" ,freetype) ("gd" ,gd) ("libpng" ,libpng) - ("libjpeg" ,libjpeg) + ("libjpeg" ,libjpeg-turbo) ("zlib" ,zlib))) + (native-inputs + `(("perl-extutils-pkgconfig" ,perl-extutils-pkgconfig))) (arguments `(#:make-maker-flags (list (string-append "--lib_jpeg_path=" diff --git a/gnu/packages/gdb.scm b/gnu/packages/gdb.scm index 6331bd23f3..97ca644fe3 100644 --- a/gnu/packages/gdb.scm +++ b/gnu/packages/gdb.scm @@ -93,7 +93,6 @@ ("readline" ,readline) ("ncurses" ,ncurses) ("guile" ,guile-2.0) - ("python" ,python) ("python-wrapper" ,python-wrapper) ("source-highlight" ,source-highlight) diff --git a/gnu/packages/geo.scm b/gnu/packages/geo.scm index 384f274aee..3c76b01c63 100644 --- a/gnu/packages/geo.scm +++ b/gnu/packages/geo.scm @@ -140,7 +140,7 @@ topology functions.") (define-public gnome-maps (package (name "gnome-maps") - (version "3.32.2.1") + (version "3.34.2") (source (origin (method url-fetch) (uri (string-append "mirror://gnome/sources/" name "/" @@ -148,7 +148,7 @@ topology functions.") name "-" version ".tar.xz")) (sha256 (base32 - "1m191iq1gjaqz79ci3dkbmwrkxp7pzknngimlf5bqib5x8yairlb")))) + "00xslcnhhwslqglgfv2im7vq3awa49y2jxzr8wsby7f713k28vf5")))) (build-system meson-build-system) (arguments `(#:glib-or-gtk? #t @@ -189,11 +189,12 @@ topology functions.") ,geocode-glib-path))) #t)))))) (native-inputs - `(("gobject-introspection" ,gobject-introspection) - ("intltool" ,intltool) + `(("gettext" ,gettext-minimal) + ("gobject-introspection" ,gobject-introspection) ("pkg-config" ,pkg-config))) (inputs - `(("folks" ,folks) + `(("evolution-data-server" ,evolution-data-server) + ("folks" ,folks) ("libchamplain" ,libchamplain) ("libgee" ,libgee) ("libsecret" ,libsecret) @@ -209,10 +210,9 @@ topology functions.") ("glib" ,glib) ("gnome-online-accounts:lib" ,gnome-online-accounts "lib") ("gsettings-desktop-schemas" ,gsettings-desktop-schemas) + ("gtk+" ,gtk+) ("rest" ,rest) ("webkitgtk" ,webkitgtk))) - (propagated-inputs - `(("gtk+3" ,gtk+))) (synopsis "Graphical map viewer and wayfinding program") (description "GNOME Maps is a graphical map viewer. It uses map data from the OpenStreetMap project. It can provide directions for walking, bicycling, @@ -745,6 +745,7 @@ utilities for data translation and processing.") (inputs `(("gdal" ,gdal) ("geos" ,geos) + ("giflib" ,giflib) ("json-c" ,json-c) ("libjpeg" ,libjpeg-turbo) ("libxml2" ,libxml2) @@ -1444,7 +1445,7 @@ using the dataset of topographical information collected by ("qtwebengine" ,qtwebengine) ("quazip" ,quazip) ("routino" ,routino) - ("sqlite" ,sqlite-with-column-metadata) ; See wrap phase + ("sqlite" ,sqlite) ; See wrap phase ("zlib" ,zlib))) (arguments `(#:tests? #f @@ -1465,23 +1466,15 @@ using the dataset of topographical information collected by (invoke "patch" "-p1" "-i" "FindQuaZip5.patch") #t)) (add-after 'install 'wrap - ;; The program fails to run with the error: - ;; undefined symbol: sqlite3_column_table_name16 - ;; Forcing the program to use sqlite-with-column-metadata instead - ;; of sqlite using LD_LIBRARY_PATH solves the problem. - ;; - ;; The program also fails to find the QtWebEngineProcess program, + ;; The program fails to find the QtWebEngineProcess program, ;; so we set QTWEBENGINEPROCESS_PATH to help it. (lambda* (#:key inputs outputs #:allow-other-keys) (let ((bin (string-append (assoc-ref outputs "out") "/bin")) (qtwebengineprocess (string-append (assoc-ref inputs "qtwebengine") - "/lib/qt5/libexec/QtWebEngineProcess")) - (sqlite-lib (string-append (assoc-ref inputs "sqlite") - "/lib"))) + "/lib/qt5/libexec/QtWebEngineProcess"))) (for-each (lambda (program) (wrap-program program - `("LD_LIBRARY_PATH" ":" prefix (,sqlite-lib)) `("QTWEBENGINEPROCESS_PATH" = (,qtwebengineprocess)))) (find-files bin ".*"))) @@ -1993,7 +1986,7 @@ growing set of geoscientific methods.") ("qtwebkit" ,qtwebkit) ("qwt" ,qwt) ("saga" ,saga) - ("sqlite" ,sqlite-with-column-metadata))) + ("sqlite" ,sqlite))) (native-inputs `(("bison" ,bison) ("flex" ,flex) diff --git a/gnu/packages/ghostscript.scm b/gnu/packages/ghostscript.scm index 3b74a96966..4d56f05cf2 100644 --- a/gnu/packages/ghostscript.scm +++ b/gnu/packages/ghostscript.scm @@ -7,7 +7,8 @@ ;;; Copyright © 2017, 2018, 2019 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2017 Leo Famulari <leo@famulari.name> ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr> -;;; Copyright © 2018 Marius Bakke <mbakke@fastmail.com> +;;; Copyright © 2018, 2020 Marius Bakke <mbakke@fastmail.com> +;;; Copyright © 2019 Mathieu Othacehe <m.othacehe@gmail.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -57,7 +58,9 @@ (sha256 (base32 "083xisy6z01zhm7p7rgk4bx9d6zlr8l20qkfv1g29ylnhgwzvij8")))) (build-system gnu-build-system) - (inputs `(("libjpeg" ,libjpeg) + (arguments + `(#:configure-flags '("--disable-static"))) + (inputs `(("libjpeg" ,libjpeg-turbo) ("libtiff" ,libtiff) ("zlib" ,zlib))) (synopsis "Little CMS, a small-footprint colour management engine") @@ -84,6 +87,25 @@ Consortium standard (ICC), approved as ISO 15076-1.") (sha256 (base32 "0zhcx67afb6b5r936w5jmaydj3ks8zh83n9rm5sv3m3k8q8jib1q")))) (build-system gnu-build-system) + (native-inputs + `(("automake" ,automake))) ; For up to date 'config.guess' and 'config.sub'. + (arguments + `(#:configure-flags '("--disable-static") + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'fix-configure + (lambda* (#:key inputs native-inputs #:allow-other-keys) + ;; Replace outdated config.sub and config.guess: + (for-each (lambda (file) + (install-file + (string-append (assoc-ref + (or native-inputs inputs) "automake") + "/share/automake-" + ,(version-major+minor + (package-version automake)) + "/" file) ".")) + '("config.sub" "config.guess")) + #t))))) (synopsis "Library for handling paper sizes") (description "The paper library and accompanying files are intended to provide a simple @@ -137,13 +159,7 @@ printing, and psresize, for adjusting page sizes.") (define-public ghostscript (package (name "ghostscript") - (version "9.27") - - ;; The problems addressed by GHOSTSCRIPT/FIXED are not security-related, - ;; but they have a significant impact on usability, hence this graft. - ;; TODO: Ungraft on next update cycle. - (replacement ghostscript/fixed) - + (version "9.52") (source (origin (method url-fetch) @@ -153,7 +169,7 @@ printing, and psresize, for adjusting page sizes.") "/ghostscript-" version ".tar.xz")) (sha256 (base32 - "06dnj0mxyaryfbwlsjwaqf847w91w2h8f108kxxcc41nrnx1y3zw")) + "0z1w42y2jmcpl2m1l3z0sfii6zmvzcwcgzn6bydklia6ig7jli2p")) (patches (search-patches "ghostscript-no-header-creationdate.patch" "ghostscript-no-header-id.patch" "ghostscript-no-header-uuid.patch")) @@ -186,6 +202,10 @@ printing, and psresize, for adjusting page sizes.") (string-append "ZLIBDIR=" (assoc-ref %build-inputs "zlib") "/include") "--enable-dynamic" + "--disable-compile-inits" + (string-append "--with-fontpath=" + (assoc-ref %build-inputs "gs-fonts") + "/share/fonts/type1/ghostscript") ,@(if (%current-target-system) '(;; Specify the native compiler, which is used to build 'echogs' @@ -213,10 +233,6 @@ printing, and psresize, for adjusting page sizes.") (substitute* "base/gscdef.c" (("GS_DOCDIR") "\"~/.guix-profile/share/doc/ghostscript\"")) - ;; The docdir default changed in 9.23 and a compatibility - ;; symlink was added from datadir->docdir. Remove it. - (substitute* "base/unixinst.mak" - (("ln -s \\$\\(DESTDIR\\)\\$\\(docdir\\).*") "")) #t)) (add-after 'configure 'patch-config-files (lambda _ @@ -249,6 +265,7 @@ printing, and psresize, for adjusting page sizes.") #t)))))) (native-inputs `(("perl" ,perl) + ("pkg-config" ,pkg-config) ;needed for freetype ("python" ,python-wrapper) ("tcl" ,tcl) @@ -256,12 +273,14 @@ printing, and psresize, for adjusting page sizes.") ;; these libraries. ,@(if (%current-target-system) `(("zlib/native" ,zlib) - ("libjpeg/native" ,libjpeg)) + ("libjpeg/native" ,libjpeg-turbo)) '()))) (inputs - `(("freetype" ,freetype) + `(("fontconfig" ,fontconfig) + ("freetype" ,freetype) + ("gs-fonts" ,gs-fonts) ("jbig2dec" ,jbig2dec) - ("libjpeg" ,libjpeg) + ("libjpeg" ,libjpeg-turbo) ("libpaper" ,libpaper) ("libpng" ,libpng) ("libtiff" ,libtiff) @@ -275,25 +294,6 @@ output file formats and printers.") (home-page "https://www.ghostscript.com/") (license license:agpl3+))) -(define ghostscript/fixed - ;; This adds the Freetype dependency (among other things), which fixes the - ;; rendering issues described in <https://issues.guix.gnu.org/issue/34877>. - (package/inherit - ghostscript - (arguments - (substitute-keyword-arguments (package-arguments ghostscript) - ((#:configure-flags flags ''()) - `(append (list "--disable-compile-inits" - (string-append "--with-fontpath=" - (assoc-ref %build-inputs "gs-fonts") - "/share/fonts/type1/ghostscript")) - ,flags)))) - (native-inputs `(("pkg-config" ,pkg-config) ;needed for freetype - ,@(package-native-inputs ghostscript))) - (inputs `(("gs-fonts" ,gs-fonts) - ("fontconfig" ,fontconfig) - ,@(package-inputs ghostscript))))) - (define-public ghostscript/x (package/inherit ghostscript (name (string-append (package-name ghostscript) "-with-x")) diff --git a/gnu/packages/gimp.scm b/gnu/packages/gimp.scm index d13390c214..2a0ca3ac25 100644 --- a/gnu/packages/gimp.scm +++ b/gnu/packages/gimp.scm @@ -5,6 +5,7 @@ ;;; Copyright © 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2018 Leo Famulari <leo@famulari.name> ;;; Copyright © 2018 Thorsten Wilms <t_w_@freenet.de> +;;; Copyright © 2020 Marius Bakke <mbakke@fastmail.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -117,7 +118,7 @@ provided, as well as a framework to add new color models and data types.") `(("cairo" ,cairo) ("pango" ,pango) ("libpng" ,libpng) - ("libjpeg" ,libjpeg))) + ("libjpeg" ,libjpeg-turbo))) (native-inputs `(("pkg-config" ,pkg-config) ("glib" ,glib "bin") ; for gtester @@ -151,9 +152,16 @@ buffers.") (list (string-append "--with-html-dir=" (assoc-ref %outputs "doc") "/share/gtk-doc/html") + + ;; Prevent the build system from running 'gtk-update-icon-cache' + ;; which is not needed during the build because Guix runs it at + ;; profile creation time. + "ac_cv_path_GTK_UPDATE_ICON_CACHE=true" + ;; Disable automatic network request on startup to check for ;; version updates. "--disable-check-update" + ;; ./configure requests not to annoy upstream with packaging bugs. "--with-bug-report-url=https://bugs.gnu.org/guix") #:phases @@ -178,7 +186,7 @@ buffers.") ("glib-networking" ,glib-networking) ("libtiff" ,libtiff) ("libwebp" ,libwebp) - ("libjpeg" ,libjpeg) + ("libjpeg" ,libjpeg-turbo) ("atk" ,atk) ("gexiv2" ,gexiv2) ("gtk+" ,gtk+-2) diff --git a/gnu/packages/gl.scm b/gnu/packages/gl.scm index 01241cd88e..e024dd2756 100644 --- a/gnu/packages/gl.scm +++ b/gnu/packages/gl.scm @@ -3,7 +3,7 @@ ;;; Copyright © 2013 Joshua Grant <tadni@riseup.net> ;;; Copyright © 2014, 2016 David Thompson <davet@gnu.org> ;;; Copyright © 2014, 2015, 2016, 2017 Mark H Weaver <mhw@netris.org> -;;; Copyright © 2016 ng0 <ng0@n0.is> +;;; Copyright © 2016 Nikita <nikita@n0.is> ;;; Copyright © 2016, 2017, 2018, 2020 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2016 David Thompson <davet@gnu.org> ;;; Copyright © 2017, 2018, 2019 Efraim Flashner <efraim@flashner.co.il> @@ -12,6 +12,7 @@ ;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2019 Pierre Neidhardt <mail@ambrevar.xyz> ;;; Copyright © 2020 Marius Bakke <mbakke@fastmail.com> +;;; Copyright © 2020 Giacomo Leidi <goodoldpaul@autistici.org> ;;; ;;; This file is part of GNU Guix. ;;; @@ -293,7 +294,7 @@ also known as DXTn or DXTC) for Mesa.") '(,@(match (%current-system) ((or "armhf-linux" "aarch64-linux") ;; TODO: Fix svga driver for aarch64 and armhf. - '("-Dgallium-drivers=etnaviv,freedreno,nouveau,r300,r600,swrast,tegra,v3d,vc4,virgl")) + '("-Dgallium-drivers=etnaviv,freedreno,kmsro,lima,nouveau,panfrost,r300,r600,swrast,tegra,v3d,vc4,virgl")) (_ '("-Dgallium-drivers=iris,nouveau,r300,r600,radeonsi,svga,swrast,virgl"))) ;; Enable various optional features. TODO: opencl requires libclc, @@ -742,30 +743,34 @@ and surfaces, receiving input and events.") (license license:zlib))) (define-public nanovg-for-extempore - (package - (name "nanovg-for-extempore") - (version "0.7.1") - (source (origin - (method url-fetch) - (uri (string-append "https://github.com/extemporelang/nanovg/" - "archive/" version ".tar.gz")) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 - "0ivs1sagq19xiw8jxd9f8w2b39svi0n9hrbmdvckwvqg95r8701g")))) - (build-system cmake-build-system) - (arguments `(#:tests? #f)) ; no tests included - (inputs - `(("mesa" ,mesa))) - ;; Extempore refuses to build on architectures other than x86_64 - (supported-systems '("x86_64-linux")) - (home-page "https://github.com/extemporelang/nanovg") - (synopsis "2D vector drawing library on top of OpenGL") - (description "NanoVG is small antialiased vector graphics rendering + (let ((version "0.7.1") + (revision "0") + (commit "3c60175fcc2e5fe305b04355cdce35d499c80310")) + (package + (name "nanovg-for-extempore") + (version (git-version version revision commit)) + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/extemporelang/nanovg.git") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0ddn3d3mxqn8hj9967v3pss7lz1wn08pcdnqzc118g7yjkq7hxzy")))) + (build-system cmake-build-system) + (arguments `(#:tests? #f)) ; no tests included + (inputs + `(("mesa" ,mesa))) + ;; Extempore refuses to build on architectures other than x86_64 + (supported-systems '("x86_64-linux")) + (home-page "https://github.com/extemporelang/nanovg") + (synopsis "2D vector drawing library on top of OpenGL") + (description "NanoVG is small antialiased vector graphics rendering library for OpenGL. It has lean API modeled after HTML5 canvas API. It is aimed to be a practical and fun toolset for building scalable user interfaces and visualizations.") - (license license:zlib))) + (license license:zlib)))) (define-public gl2ps (package diff --git a/gnu/packages/glib.scm b/gnu/packages/glib.scm index 47410e0d8d..12ba6e939b 100644 --- a/gnu/packages/glib.scm +++ b/gnu/packages/glib.scm @@ -11,7 +11,8 @@ ;;; 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> +;;; Copyright © 2019, 2020 Marius Bakke <mbakke@fastmail.com> +;;; Copyright © 2020 Nicolò Balzarotti <nicolo@nixo.xyz> ;;; ;;; This file is part of GNU Guix. ;;; @@ -54,6 +55,7 @@ #:use-module (gnu packages perl-check) #:use-module (gnu packages pkg-config) #:use-module (gnu packages python) + #:use-module (gnu packages python-xyz) #:use-module (gnu packages selinux) #:use-module (gnu packages web) #:use-module (gnu packages xml) @@ -105,6 +107,9 @@ ;; Install the session bus socket under /tmp. "--with-session-socket-dir=/tmp" + ;; Build shared libraries only. + "--disable-static" + ;; Use /etc/dbus-1 for system-wide config. ;; Look for configuration file under ;; /etc/dbus-1. This is notably required by @@ -162,7 +167,7 @@ shared NFS home directories.") (define glib (package (name "glib") - (version "2.60.6") + (version "2.62.6") (source (origin (method url-fetch) (uri (string-append "mirror://gnome/sources/" @@ -170,7 +175,7 @@ shared NFS home directories.") name "-" version ".tar.xz")) (sha256 (base32 - "0v7vpx2md1gn0wwiirn7g4bhf2csfvcr03y96q2zv97ain6sp3zz")) + "174bsmbmcvaw69ff9g60q5sx0fn23rkhqcwqz17h5s7sprps4kqh")) (patches (search-patches "glib-tests-timer.patch")) (modules '((guix build utils))) (snippet @@ -185,11 +190,9 @@ shared NFS home directories.") `(("pcre" ,pcre) ; in the Requires.private field of glib-2.0.pc ("libffi" ,libffi) ; in the Requires.private field of gobject-2.0.pc ;; These are in the Requires.private field of gio-2.0.pc - ("util-linux" ,util-linux) ; for libmount + ("util-linux" ,util-linux "lib") ;for libmount ("libselinux" ,libselinux) ("zlib" ,zlib))) - (inputs - `(("coreutils" ,coreutils))) (native-inputs `(("gettext" ,gettext-minimal) ("m4" ,m4) ; for installing m4 macros @@ -199,11 +202,26 @@ shared NFS home directories.") ("perl" ,perl) ; needed by GIO tests ("tzdata" ,tzdata-for-tests))) ; for tests/gdatetime.c (arguments - `(;; TODO: Uncomment on the next rebuild cycle. - ;; #:disallowed-references (,tzdata-for-tests) - + `(#:disallowed-references (,tzdata-for-tests) #:phases (modify-phases %standard-phases + (add-after 'unpack 'patch-dbus-launch-path + (lambda* (#:key inputs #:allow-other-keys) + (let ((dbus (assoc-ref inputs "dbus"))) + (substitute* "gio/gdbusaddress.c" + (("command_line = g_strdup_printf \\(\"dbus-launch") + (string-append "command_line = g_strdup_printf (\"" + dbus "/bin/dbus-launch"))) + #t))) + (add-after 'unpack 'patch-gio-launch-desktop + (lambda* (#:key outputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out"))) + ;; See also <https://gitlab.gnome.org/GNOME/glib/issues/1633> + ;; for another future fix. + (substitute* "gio/gdesktopappinfo.c" + (("gio-launch-desktop") + (string-append out "/libexec/gio-launch-desktop"))) + #t))) (add-before 'build 'pre-build (lambda* (#:key inputs outputs #:allow-other-keys) ;; For tests/gdatetime.c. @@ -284,7 +302,7 @@ shared NFS home directories.") (;; Requires /etc/machine-id. "/gdbus/codegen-peer-to-peer")) - ("gio/tests/gdbus-unix-addresses.c" + ("gio/tests/gdbus-address-get-session.c" (;; Requires /etc/machine-id. "/gdbus/x11-autolaunch")) @@ -312,6 +330,13 @@ shared NFS home directories.") (mkdir-p bin) (rename-file (string-append out "/bin") (string-append bin "/bin")) + ;; This one is an implementation detail of glib. + ;; It is wrong that that's in "/bin" in the first place, + ;; but that's what upstream is doing right now. + ;; See <https://gitlab.gnome.org/GNOME/glib/issues/1633>. + (mkdir (string-append out "/libexec")) + (rename-file (string-append bin "/bin/gio-launch-desktop") + (string-append out "/libexec/gio-launch-desktop")) ;; Do not refer to "bindir", which points to "${prefix}/bin". ;; We don't patch "bindir" to point to "$bin/bin", because that ;; would create a reference cycle between the "out" and "bin" @@ -380,14 +405,14 @@ dynamic loading, and an object system.") (define gobject-introspection (package (name "gobject-introspection") - (version "1.60.2") + (version "1.62.0") (source (origin (method url-fetch) (uri (string-append "mirror://gnome/sources/" "gobject-introspection/" (version-major+minor version) "/gobject-introspection-" version ".tar.xz")) (sha256 - (base32 "172ymc1vbg2rclq1rszx4y32vm900nn1mc4qg1a4mqxjiwvf5pzz")) + (base32 "18lhglg9v6y83lhqzyifc1z0wrlawzrhzzxx0a3h1g7xaz97xvmi")) (patches (search-patches "gobject-introspection-cc.patch" "gobject-introspection-girepository.patch" @@ -529,20 +554,10 @@ information in their documents, such as whether a particular element should be translated.") (license license:gpl3+))) -(define-public itstool/fixed - ;; This variant fixes a python-libxml2 crash when processing UTF-8 - ;; sequences: <https://bugs.gnu.org/37468>. Since the issue is quite rare, - ;; create this variant here to avoid a full rebuild. - (package/inherit - itstool - (inputs - `(("python-libxml2" ,python-libxml2/fixed) - ,@(alist-delete "python-libxml2" (package-inputs itstool)))))) - (define dbus-glib (package (name "dbus-glib") - (version "0.108") + (version "0.110") (source (origin (method url-fetch) (uri @@ -550,7 +565,7 @@ translated.") version ".tar.gz")) (sha256 (base32 - "0b307hw9j41npzr6niw1bs6ryp87m5yafg492gqwvsaj4dz0qd4z")))) + "09g8swvc95bk1z6j8sw463p2v0dqmgm2zjfndf7i8sbcyq67dr3w")))) (build-system gnu-build-system) (propagated-inputs ; according to dbus-glib-1.pc `(("dbus" ,dbus) @@ -570,7 +585,7 @@ by GDBus included in Glib.") (define libsigc++ (package (name "libsigc++") - (version "2.10.2") + (version "2.10.3") (source (origin (method url-fetch) (uri (string-append "mirror://gnome/sources/libsigc++/" @@ -578,7 +593,7 @@ by GDBus included in Glib.") name "-" version ".tar.xz")) (sha256 (base32 - "163s14d1rqp82gc1vsm3q0wzsbdicb9q6307kz0zk5lm6x9h5jmi")))) + "11j7j1jv4z58d9s7jvl42fnqa1dzl4idgil9r45cjv1w673dys0b")))) (build-system gnu-build-system) (native-inputs `(("pkg-config" ,pkg-config) ("m4" ,m4))) @@ -597,7 +612,7 @@ has an ease of use unmatched by other C++ callback libraries.") (define glibmm (package (name "glibmm") - (version "2.60.0") + (version "2.62.0") (source (origin (method url-fetch) (uri (string-append "mirror://gnome/sources/glibmm/" @@ -605,7 +620,7 @@ has an ease of use unmatched by other C++ callback libraries.") "/glibmm-" version ".tar.xz")) (sha256 (base32 - "1g7jxqd270dv2d83r7pf5893mwpz7d5xib0q01na2yalh34v38d3")))) + "1ziwx6r7k7wbvg4qq1rgrv8zninapgrmhn1hs6926a3krh9ryr9n")))) (build-system gnu-build-system) (arguments `(#:phases @@ -679,7 +694,7 @@ useful for C++.") (define-public python-pygobject (package (name "python-pygobject") - (version "3.28.3") + (version "3.34.0") (source (origin (method url-fetch) @@ -688,24 +703,20 @@ useful for C++.") "/pygobject-" version ".tar.xz")) (sha256 (base32 - "1c6h3brzlyvzbpdsammnd957azmp6cbzqrd65r400vnh2l8f5lrx")))) - (build-system gnu-build-system) - (arguments - `(#:phases - (modify-phases %standard-phases - (add-after 'unpack 'delete-broken-tests - (lambda _ - ;; FIXME: this test freezes and times out. - (delete-file "tests/test_mainloop.py") - ;; FIXME: this test fails with this kind of error: - ;; AssertionError: <Handlers.SIG_IGN: 1> != <built-in function default_int_handler - (delete-file "tests/test_ossig.py") + "06i7ynnbvgpz0gw09zsjbvhgcp5qz4yzdifw27qjwdazg2mckql7")) + (modules '((guix build utils))) + (snippet + '(begin + ;; We disable these tests in a snippet so that they are inherited + ;; by the Python 2 variant which is built differently. + (with-directory-excursion "tests" + ;; FIXME: These tests require Gdk and/or Gtk 4. + (for-each delete-file + '("test_atoms.py" "test_overrides_gtk.py")) #t))))) + (build-system meson-build-system) (native-inputs - `(("which" ,which) - ;for tests: dbus-run-session and glib-compile-schemas - ("dbus" ,dbus) - ("glib-bin" ,glib "bin") + `(("glib-bin" ,glib "bin") ("pkg-config" ,pkg-config) ("python-pytest" ,python-pytest))) (inputs @@ -728,45 +739,31 @@ useful for C++.") (define-public python2-pygobject (package (inherit (strip-python2-variant python-pygobject)) (name "python2-pygobject") + + ;; Note: We use python-build-system here, because Meson only supports + ;; Python 3, and needs PYTHONPATH etc set up correctly, which makes it + ;; difficult to use for Python 2 projects. + (build-system python-build-system) + (arguments + `(#:python ,python-2 + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'delete-broken-tests + (lambda _ + ;; FIXME: this test freezes and times out. + (delete-file "tests/test_mainloop.py") + ;; FIXME: this test fails with this kind of error: + ;; AssertionError: <Handlers.SIG_IGN: 1> != <built-in function default_int_handler + (delete-file "tests/test_ossig.py") + #t))))) (inputs - `(("python" ,python-2) - ("python-pycairo" ,python2-pycairo) + `(("python-pycairo" ,python2-pycairo) ("gobject-introspection" ,gobject-introspection))) (native-inputs - `(("which" ,which) - ;for tests: dbus-run-session and glib-compile-schemas - ("dbus" ,dbus) - ("glib-bin" ,glib "bin") + `(("glib-bin" ,glib "bin") ("pkg-config" ,pkg-config) ("python-pytest" ,python2-pytest))))) -;; Newer version of this core-updates package, for Lollypop. -(define-public python-pygobject-3.34 - (package/inherit - python-pygobject - (version "3.34.0") - (source - (origin - (method url-fetch) - (uri (string-append "mirror://gnome/sources/pygobject/" - (version-major+minor version) - "/pygobject-" version ".tar.xz")) - (sha256 - (base32 "06i7ynnbvgpz0gw09zsjbvhgcp5qz4yzdifw27qjwdazg2mckql7")))) - (build-system meson-build-system) - (arguments - `(#:phases - (modify-phases %standard-phases - (add-after 'unpack 'delete-broken-tests - (lambda _ - (with-directory-excursion "tests" - (for-each - delete-file - ;; FIXME: these tests require Gdk and/or Gtk 4. - '("test_atoms.py" - "test_overrides_gtk.py"))) - #t))))))) - (define-public perl-glib (package (name "perl-glib") @@ -810,6 +807,7 @@ up the Gnome environment, and are used in many unrelated projects.") "1symyzbjmxvksn2ifdkk50lafjm2llf2sbmky062gq2pz3cg23cy")) (patches (list + (search-patch "telepathy-glib-channel-memory-leak.patch") ;; Don't use the same test name for multiple tests. ;; <https://bugs.freedesktop.org/show_bug.cgi?id=92245> (origin @@ -829,7 +827,18 @@ up the Gnome environment, and are used in many unrelated projects.") ;; ;; EOFError: EOF read where object expected ;; make[2]: *** [Makefile:1906: _gen/register-dbus-glib-marshallers-body.h] Error 1 - #:parallel-build? #f)) + #:parallel-build? #f + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'disable-failing-tests + (lambda _ + ;; None of the tests below are able to find the org.gtk.vfs.Daemon + ;; service file provided by gvfs. + (substitute* "tests/dbus/Makefile.in" + (("test-contacts\\$\\(EXEEXT\\)") "") + (("test-file-transfer-channel\\$\\(EXEEXT\\)") "") + (("test-stream-tube\\$\\(EXEEXT\\)") "")) + #t))))) (native-inputs `(("glib" ,glib "bin") ; uses glib-mkenums ("gobject-introspection" ,gobject-introspection) @@ -915,15 +924,14 @@ programming language. It also contains the utility (propagated-inputs `(("gcab" ,gcab) ; for .pc file ("gdk-pixbuf" ,gdk-pixbuf) ; for .pc file - ("util-linux" ,util-linux))) ; for .pc file + ("libuuid" ,util-linux "lib"))) ; for .pc file (inputs `(("glib" ,glib) ("gperf" ,gperf) ("gtk+" ,gtk+) ("json-glib" ,json-glib) ("libarchive" ,libarchive) - ("libsoup" ,libsoup) - ("libyaml" ,libyaml))) + ("libsoup" ,libsoup))) (arguments `(#:configure-flags (list "-Ddep11=false" @@ -1068,3 +1076,49 @@ simple methods via GObject-Introspection.") 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+))) + +(define-public dbus-test-runner + (package + (name "dbus-test-runner") + (version "19.04.0") + (source (origin + (method url-fetch) + (uri (string-append + "https://launchpad.net/dbus-test-runner/" + (version-major+minor version) "/" version + "/+download/dbus-test-runner-" version ".tar.gz")) + (sha256 + (base32 + "0xnbay58xn0hav208mdsg8dd176w57dcpw1q2k0g5fh9v7xk4nk4")))) + (build-system gnu-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-before 'configure 'fix-test-paths + ;; add missing space + (lambda* (#:key outputs #:allow-other-keys) + (substitute* "Makefile.in" + (("#!/bin/bash") (string-append "#!" (which "bash")))) + (substitute* "tests/Makefile.in" + (("/bin/sh") (which "sh")) + (("#!/bin/bash") (string-append "#!" (which "bash"))) + (("echo cat") (string-append "echo " (which "cat"))) + (("/bin/true") (which "true"))) + #t))))) + (inputs + `(("gtk+" ,gtk+) + ("glib" ,glib) + ("dbus-glib" ,dbus-glib))) + (native-inputs + `(("glib:bin" ,glib "bin") + ("intltool" ,intltool) + ("pkg-config" ,pkg-config) + ;; following used for tests + ("python" ,python) + ("python-dbusmock" ,python-dbusmock) + ("xvfb" ,xorg-server-for-tests))) + (home-page "https://launchpad.net/dbus-test-runner") + (synopsis "Run a executables under a new DBus session for testing") + (description "A small little utility to run a couple of executables under a +new DBus session for testing.") + (license license:gpl3))) diff --git a/gnu/packages/gnome-xyz.scm b/gnu/packages/gnome-xyz.scm index 625248a25a..673b8cf1d7 100644 --- a/gnu/packages/gnome-xyz.scm +++ b/gnu/packages/gnome-xyz.scm @@ -148,6 +148,53 @@ GNOME Shell.") (home-page "https://github.com/ubuntu/gnome-shell-extension-appindicator/") (license license:gpl2+))) +(define-public gnome-shell-extension-clipboard-indicator + (package + (name "gnome-shell-extension-clipboard-indicator") + (version "34") + (source (origin + (method git-fetch) + (uri (git-reference + (url (string-append "https://github.com/Tudmotu/" + "gnome-shell-extension-clipboard-indicator.git")) + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0i00psc1ky70zljd14jzr627y7nd8xwnwrh4xpajl1f6djabh12s")) + (modules '((guix build utils))) + (snippet + ;; Remove pre-compiled settings schemas and translations from + ;; source, as they are generated as part of build. Upstream + ;; includes them for people who want to run the software + ;; directly from source tree. + '(begin (delete-file "schemas/gschemas.compiled") + (for-each delete-file (find-files "locale" "\\.mo$")) + #t)))) + (build-system copy-build-system) + (arguments + '(#:install-plan + '(("." "share/gnome-shell/extensions/clipboard-indicator@tudmotu.com" + #:include-regexp ("\\.css$" "\\.compiled$" "\\.js(on)?$" "\\.mo$" "\\.xml$"))) + #:phases + (modify-phases %standard-phases + (add-before 'install 'compile-schemas + (lambda _ + (with-directory-excursion "schemas" + (invoke "glib-compile-schemas" ".")) + #t)) + (add-before 'install 'compile-locales + (lambda _ (invoke "./compile-locales.sh") + #t))))) + (native-inputs + `(("gettext" ,gettext-minimal) + ("glib:bin" ,glib "bin"))) ; for glib-compile-schemas + (home-page "https://github.com/Tudmotu/gnome-shell-extension-clipboard-indicator") + (synopsis "Clipboard manager extension for GNOME Shell") + (description "Clipboard Indicator is a clipboard manager for GNOME Shell +that caches clipboard history.") + (license license:expat))) + (define-public gnome-shell-extension-topicons-redux (package (name "gnome-shell-extension-topicons-redux") @@ -229,8 +276,8 @@ faster window switching.") (define-public gnome-shell-extension-gsconnect (package (name "gnome-shell-extension-gsconnect") - ;; v28 is the last version to support GNOME 3.32 - (version "28") + ;; v33 is the last version to support GNOME 3.34 + (version "33") (source (origin (method git-fetch) (uri (git-reference @@ -240,7 +287,7 @@ faster window switching.") (file-name (git-file-name name version)) (sha256 (base32 - "0grqkzqm7mlkbzin4nx9w7bh5cgygph8pn0cvim4a4gg99nfcp5z")))) + "1q03axhn75i864vgmd6myhmgwrmnpf01gsd1wl0di5x9q8mic2zn")))) (build-system meson-build-system) (arguments `(#:configure-flags @@ -294,7 +341,6 @@ faster window switching.") `(("at-spi2-core" ,at-spi2-core) ("caribou" ,caribou) ("evolution-data-server" ,evolution-data-server) - ("folks" ,folks) ("gjs" ,gjs) ("glib" ,glib) ("glib:bin" ,glib "bin") diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm index d96a5f4643..e4bb056e4c 100644 --- a/gnu/packages/gnome.scm +++ b/gnu/packages/gnome.scm @@ -19,7 +19,7 @@ ;;; Copyright © 2016 Roel Janssen <roel@gnu.org> ;;; Copyright © 2016, 2018 Leo Famulari <leo@famulari.name> ;;; Copyright © 2016 Alex Griffin <a@ajgrf.com> -;;; Copyright © 2016, 2017 ng0 <ng0@n0.is> +;;; Copyright © 2016, 2017 Nikita <nikita@n0.is> ;;; Copyright © 2016 David Craven <david@craven.ch> ;;; Copyright © 2016, 2017, 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2017 Thomas Danckaert <post@thomasdanckaert.be> @@ -1030,13 +1030,6 @@ useful as a tutorial and users' guide for new or less experienced users.") ("perl" ,perl) ("pkg-config" ,pkg-config) ("python-wrapper" ,python-wrapper))) - (arguments - `(#:phases - (modify-phases %standard-phases - (add-before 'bootstrap 'dont-configure-during-bootstrap - (lambda _ - (setenv "NOCONFIGURE" "true") - #t))))) (home-page "https://wiki.gnome.org/Apps/Dia") (synopsis "Diagram creation for GNOME") (description "Dia can be used to draw different types of diagrams, and @@ -1198,7 +1191,7 @@ commonly used macros.") (define-public gnome-contacts (package (name "gnome-contacts") - (version "3.32.1") + (version "3.34") (source (origin (method url-fetch) (uri (string-append "mirror://gnome/sources/gnome-contacts/" @@ -1206,10 +1199,11 @@ commonly used macros.") name "-" version ".tar.xz")) (sha256 (base32 - "17g1gh8yj58cfpdx69h2szivlbjgvv982kmhnkkh0i5bwj0zs2yy")))) + "04igc9xvyc4kb5xf5g2missnvyvj9zv5cqxf5k4z7hb0sv42wq4r")))) (build-system meson-build-system) (arguments - `(#:phases + `(#:configure-flags '("-Dcheese=false") + #:phases (modify-phases %standard-phases (add-after 'unpack 'generate-vapis (lambda* (#:key inputs #:allow-other-keys) @@ -1220,14 +1214,18 @@ commonly used macros.") (invoke "vapigen" "--directory=vapi" "--pkg=gio-2.0" "--library=goa-1.0" (string-append goa "/share/gir-1.0/Goa-1.0.gir")) + #t)) + (add-after 'unpack 'skip-gtk-update-icon-cache + ;; Don't create 'icon-theme.cache'. + (lambda _ + (substitute* "build-aux/meson_post_install.py" + (("gtk-update-icon-cache") "true")) #t))))) (native-inputs `(("glib:bin" ,glib "bin") - ("gtk+:bin" ,gtk+ "bin") ("pkg-config" ,pkg-config))) (inputs - `(("cheese" ,cheese) - ("docbook-xml" ,docbook-xml) + `(("docbook-xml" ,docbook-xml) ("dockbook-xsl" ,docbook-xsl) ("evolution-data-server" ,evolution-data-server) ("gettext" ,gettext-minimal) @@ -1253,7 +1251,7 @@ offline sources, providing a centralized place for managing your contacts.") (define-public gnome-desktop (package (name "gnome-desktop") - (version "3.32.2") + (version "3.34.2") (source (origin (method url-fetch) @@ -1262,7 +1260,7 @@ offline sources, providing a centralized place for managing your contacts.") name "-" version ".tar.xz")) (sha256 (base32 - "0bidx4626x7k2myv6f64qv4fzmxv8v475wibiz19kj8hjfr737q9")))) + "1v983xirwp1y6ggz97bh742ak6gff0hxb359dgn37nikjxhvm0a0")))) (build-system meson-build-system) (arguments '(#:phases @@ -1353,7 +1351,7 @@ and keep up to date translations of documentation.") (define-public gnome-disk-utility (package (name "gnome-disk-utility") - (version "3.32.1") + (version "3.34.0") (source (origin (method url-fetch) (uri (string-append "mirror://gnome/sources/" name "/" @@ -1361,10 +1359,11 @@ and keep up to date translations of documentation.") name "-" version ".tar.xz")) (sha256 (base32 - "08vwbji9m1nhjjdiyhhaqi8cncys7i89b4bpy095f8475v8y05bg")))) + "1mb7q90lnlp97dhxhnadhjagcfd12dfqzp0vj9h6b1r61pzhy97y")))) (build-system meson-build-system) (arguments - '(#:phases + '(#:configure-flags '("-Dlogind=libelogind") + #:phases (modify-phases %standard-phases (add-after 'unpack 'skip-gtk-update-icon-cache ;; Don't create 'icon-theme.cache'. @@ -1381,7 +1380,8 @@ and keep up to date translations of documentation.") ("libxml2" ,libxml2) ("libxslt" ,libxslt))) (inputs - `(("glib" ,glib) + `(("elogind" ,elogind) + ("glib" ,glib) ("appstream-glib" ,appstream-glib) ("gnome-settings-daemon" ,gnome-settings-daemon) ("gtk+" ,gtk+) @@ -1435,7 +1435,7 @@ the font would look under various sizes.") (define-public gcr (package (name "gcr") - (version "3.28.1") + (version "3.34.0") (source (origin (method url-fetch) (uri (string-append "mirror://gnome/sources/" name "/" @@ -1443,20 +1443,7 @@ the font would look under various sizes.") name "-" version ".tar.xz")) (sha256 (base32 - "12qn7mcmxb45lz1gq3s3b34rimiyrrshkrpvxdw1fc0w26i4l84m")) - (patches - (list - ;; This patch solves an ordering issue that showed up when - ;; running the test suite against newer Glib 2.60. See - ;; <https://gitlab.gnome.org/GNOME/gcr/merge_requests/9>. - (origin - (method url-fetch) - (uri (string-append "https://gitlab.gnome.org/GNOME/gcr/commit/" - "45d637578d7643ff96c0183ac267497a0b4c6344.diff")) - (file-name "gcr-hashtable-ordering.patch") - (sha256 - (base32 - "1vsqiys8fsm1f1vvds783wwf7zwi5v282rhsai8jrsm6x7h79gbi"))))))) + "0925snsixzkwh49xiayqmj6fcrmklqk8kyy0jkv7m64h9abm1pr9")))) (build-system gnu-build-system) (arguments '(#:phases @@ -1465,9 +1452,9 @@ the font would look under various sizes.") ;; build environment. (add-after 'unpack 'disable-failing-tests (lambda _ - (substitute* "gcr/test-system-prompt.c" - (("g_test_add") "//") - (("return.*") "return 0;")) + (substitute* "Makefile.in" + (("[[:blank:]]+test-system-prompt\\$\\(EXEEXT\\)") + "")) #t)) (add-before 'check 'pre-check (lambda _ @@ -1479,11 +1466,11 @@ the font would look under various sizes.") ("gnupg" ,gnupg) ;called as a child process during tests ("libgcrypt" ,libgcrypt))) (native-inputs - `(("python" ,python-2) ;for tests + `(("python" ,python-wrapper) ;for tests ("pkg-config" ,pkg-config) + ("gettext" ,gettext-minimal) ("glib" ,glib "bin") ("gobject-introspection" ,gobject-introspection) - ("intltool" ,intltool) ("libxml2" ,libxml2) ("vala" ,vala) ("xsltproc" ,libxslt))) @@ -1534,7 +1521,7 @@ GNOME Desktop.") (define-public gnome-keyring (package (name "gnome-keyring") - (version "3.28.2") + (version "3.34.0") (source (origin (method url-fetch) (uri (string-append "mirror://gnome/sources/" name "/" @@ -1542,7 +1529,7 @@ GNOME Desktop.") name "-" version ".tar.xz")) (sha256 (base32 - "0sk4las4ji8wv9nx8mldzqccmpmkvvr9pdwv9imj26r10xyin5w1")))) + "0hqrsh5g9q9lm190f0m85q4nki8k4ng7wphl6qbccdry59aakkg9")))) (build-system gnu-build-system) (arguments `(#:tests? #f ;48 of 603 tests fail because /var/lib/dbus/machine-id does @@ -1681,7 +1668,7 @@ on the GNOME Desktop with a single simple application.") (define-public gsettings-desktop-schemas (package (name "gsettings-desktop-schemas") - (version "3.32.0") + (version "3.34.0") (source (origin (method url-fetch) @@ -1690,7 +1677,7 @@ on the GNOME Desktop with a single simple application.") name "-" version ".tar.xz")) (sha256 (base32 - "0d8a6479vappgplq5crdr3ah0ykqcr3fw533wkx9v1a8lnrv8n9d")))) + "1bayr76aylawf2fhyjhv9zgk4kpv7ivrrmd80khb0h3h1wk092r8")))) (build-system meson-build-system) (arguments '(#:phases (modify-phases %standard-phases @@ -1792,7 +1779,7 @@ GNOME and KDE desktops to the icon names proposed in the specification.") (define-public adwaita-icon-theme (package (inherit gnome-icon-theme) (name "adwaita-icon-theme") - (version "3.32.0") + (version "3.34.3") (source (origin (method url-fetch) (uri (string-append "mirror://gnome/sources/" name "/" @@ -1800,7 +1787,7 @@ GNOME and KDE desktops to the icon names proposed in the specification.") name "-" version ".tar.xz")) (sha256 (base32 - "11ij35na8nisvxx3qh527iz33h6z2q1a7iinqyp7p65v0zjbd3b9")))) + "025rj1fskw1y448hiar4a9icyzpyr242nlh9xhsmyp8jb71dihp7")))) (native-inputs `(("gtk-encode-symbolic-svg" ,gtk+ "bin"))))) @@ -1830,14 +1817,16 @@ guidelines.") (define-public shared-mime-info (package (name "shared-mime-info") - (version "1.10") + (version "1.15") (source (origin (method url-fetch) - (uri (string-append "https://freedesktop.org/~hadess/" - "shared-mime-info-" version ".tar.xz")) + (uri (string-append + "https://gitlab.freedesktop.org/xdg/shared-mime-info/uploads/" + "b27eb88e4155d8fccb8bb3cd12025d5b/shared-mime-info-" version + ".tar.xz")) (sha256 (base32 - "1gxyvwym3xgpmp262gfn8jg5sla6k5hy6m6dmy6grgiq90xsh9f6")))) + "146vynj78wcwdq0ms52jzm1r4m6dzi1rhyh3h4xyb6bw8ckv10pl")))) (build-system gnu-build-system) (arguments ;; The build system appears not to be parallel-safe. @@ -1846,7 +1835,8 @@ guidelines.") `(("glib" ,glib) ("libxml2" ,libxml2))) (native-inputs - `(("intltool" ,intltool) + `(("gettext" ,gettext-minimal) + ("itstool" ,itstool) ("pkg-config" ,pkg-config))) (home-page "https://www.freedesktop.org/wiki/Software/shared-mime-info") (synopsis "Database of common MIME types") @@ -2163,7 +2153,7 @@ XML/CSS rendering engine.") (define-public libgsf (package (name "libgsf") - (version "1.14.46") + (version "1.14.47") (source (origin (method url-fetch) (uri (string-append "mirror://gnome/sources/" name "/" @@ -2171,14 +2161,19 @@ XML/CSS rendering engine.") name "-" version ".tar.xz")) (sha256 (base32 - "0bddmlzg719sjhlbzqlhb7chwk93qc7g68m2r9r8xz112jdradpa")))) + "0kbpp9ksl7977xiga37sk1gdw1r039v6zviqznl7alvvg39yp26i")))) (build-system gnu-build-system) + (arguments + '(#:configure-flags '("--disable-static"))) (native-inputs - `(("intltool" ,intltool) - ("pkg-config" ,pkg-config))) + `(("pkg-config" ,pkg-config) + ("gettext" ,gettext-minimal) + + ;; For tests. + ("perl" ,perl) + ("perl-xml-parser" ,perl-xml-parser))) (inputs - `(("python" ,python) - ("zlib" ,zlib) + `(("zlib" ,zlib) ("bzip2" ,bzip2))) (propagated-inputs `(("gdk-pixbuf" ,gdk-pixbuf) @@ -2195,9 +2190,8 @@ dealing with different structured file formats.") (define-public librsvg (package - (replacement librsvg/fixed) (name "librsvg") - (version "2.40.20") + (version "2.40.21") (source (origin (method url-fetch) (uri (string-append "mirror://gnome/sources/" name "/" @@ -2205,7 +2199,7 @@ dealing with different structured file formats.") name "-" version ".tar.xz")) (sha256 (base32 - "0ay9himvw1l1swcf3h1312d2iqzfl65kpbfgiyfykgvq7cydvx6g")))) + "1fljkag2gr7c4k5mn798lgf9903xslz8h51bgvl89nnay42qjqpp")))) (build-system gnu-build-system) (arguments `(#:configure-flags @@ -2243,7 +2237,9 @@ dealing with different structured file formats.") ("glib" ,glib "bin") ; glib-mkenums, etc. ("gobject-introspection" ,gobject-introspection))) ; g-ir-compiler, etc. (inputs - `(("pango" ,pango) + `(;; XXX: 1.44 causes some test failures, so we stick with 1.42 for + ;; this ancient version of librsvg. + ("pango" ,pango-1.42) ("libcroco" ,libcroco) ("bzip2" ,bzip2) ("libgsf" ,libgsf) @@ -2260,20 +2256,6 @@ dealing with different structured file formats.") library.") (license license:lgpl2.0+))) -(define librsvg/fixed - (package - (inherit librsvg) - (name "librsvg") - (version "2.40.21") - (source (origin - (method url-fetch) - (uri (string-append "mirror://gnome/sources/" name "/" - (version-major+minor version) "/" - name "-" version ".tar.xz")) - (sha256 - (base32 - "1fljkag2gr7c4k5mn798lgf9903xslz8h51bgvl89nnay42qjqpp")))))) - (define-public librsvg-next (package (inherit librsvg) @@ -2451,7 +2433,9 @@ functionality was designed to be as reusable and portable as possible.") "0l3mhpyym9m5iz09fz0rgiqxl2ym6kpkwpsp1xrr4aa80nlh1jam")))) (build-system gnu-build-system) (arguments - `(#:configure-flags + `(;; The "timeout-server" test hangs when run in parallel. + #:parallel-tests? #f + #:configure-flags '(;; We don't need static libraries, plus they don't build reproducibly ;; (non-deterministic ordering of .o files in the archive.) "--disable-static" @@ -2784,7 +2768,7 @@ creating interactive structured graphics.") ("libgnome" ,libgnome) ("libgnomecanvas" ,libgnomecanvas) ("libgnome-keyring" ,libgnome-keyring))) - (inputs `(("libjpeg" ,libjpeg) + (inputs `(("libjpeg" ,libjpeg-turbo) ("popt" ,popt) ("libbonobo" ,libbonobo) ("libxml2" ,libxml2) @@ -3096,7 +3080,7 @@ Hints specification (EWMH).") `(("bison" ,bison) ("docbook-xml" ,docbook-xml) ("intltool" ,intltool) - ("itstool" ,itstool/fixed) ;see <https://bugs.gnu.org/37468> + ("itstool" ,itstool) ("glib:bin" ,glib "bin") ("pkg-config" ,pkg-config))) (home-page "http://www.gnumeric.org") @@ -3150,7 +3134,7 @@ engineering.") (define-public seahorse (package (name "seahorse") - (version "3.32.2") + (version "3.34") (source (origin (method url-fetch) @@ -3159,9 +3143,7 @@ engineering.") version ".tar.xz")) (sha256 (base32 - "0d8zdzmlz7fjv9xl20zl4ckidf465mvdjnbpxy3k08y9iw423q4x")) - (patches (search-patches - "seahorse-gkr-use-0-on-empty-flags.patch")))) + "16sfnqrdlr5xx6kixx2ln1mva7nngjlw1k3f5n454vyaigffjh2v")))) (build-system meson-build-system) (arguments '(#:glib-or-gtk? #t @@ -3201,7 +3183,7 @@ passwords in the GNOME keyring.") (define-public vala (package (name "vala") - (version "0.44.5") + (version "0.46.5") (source (origin (method url-fetch) (uri (string-append "mirror://gnome/sources/" name "/" @@ -3209,7 +3191,7 @@ passwords in the GNOME keyring.") name "-" version ".tar.xz")) (sha256 (base32 - "0zy2kfcvhikczfzhk5l7pkw6mvn3d6vw8cv7g08iah85p22q33xv")))) + "07fv895sp9wq74b20qig7hic0r4ynrr5pfaqba02r44xb794fy0s")))) (build-system gnu-build-system) (arguments '(#:phases @@ -3406,16 +3388,17 @@ and RDP protocols.") (define-public dconf (package (name "dconf") - (version "0.32.0") + (version "0.34.0") (source (origin (method url-fetch) (uri (string-append "mirror://gnome/sources/" name "/" (version-major+minor version) "/" name "-" version ".tar.xz")) + (patches (search-patches "dconf-meson-0.52.patch")) (sha256 (base32 - "1azz4hb9z76yxn34yrrsiib3iqz5z4vpwn5q7cncp55w365ygg38")))) + "0lnsl85cp2vpzgp8pkf6l6yd2i3lp02jdvga1icfa78j2smr8fll")))) (build-system meson-build-system) (propagated-inputs ;; In Requires of dconf.pc. @@ -3491,13 +3474,7 @@ and objects.") (file-name (git-file-name name version)))) (build-system gnu-build-system) (arguments - '(#:phases - (modify-phases %standard-phases - (add-after 'unpack 'no-configure - (lambda* _ - (setenv "NOCONFIGURE" "1") - #t))) - #:configure-flags + '(#:configure-flags (list (string-append "--with-xkb-base=" (assoc-ref %build-inputs "xkeyboard-config") "/share/X11/xkb") @@ -3565,7 +3542,7 @@ library.") (define-public glib-networking (package (name "glib-networking") - (version "2.60.3") + (version "2.62.2") (source (origin (method url-fetch) (uri (string-append "mirror://gnome/sources/glib-networking/" @@ -3573,7 +3550,7 @@ library.") "glib-networking-" version ".tar.xz")) (sha256 (base32 - "1mfw44qpmwvz6yzj8c6spx6z357wrmkk15byrkc5byagd82860fm")))) + "0i2mw75297ql72h47vyvff3hqa0kcmqybblj52fqrarb0kfbhi06")))) (build-system meson-build-system) (arguments `(#:configure-flags '("-Dlibproxy_support=false"))) @@ -3751,7 +3728,7 @@ and the GLib main loop, to integrate well with GNOME applications.") (define-public libsecret (package (name "libsecret") - (version "0.20.2") + (version "0.20.3") (source (origin (method url-fetch) (uri (string-append @@ -3760,7 +3737,7 @@ and the GLib main loop, to integrate well with GNOME applications.") "libsecret-" version ".tar.xz")) (sha256 (base32 - "1hzz34gmsxxf1jm1b7qin390rkwbg8sx198xdkwxqp3q6cw19sc1")))) + "1r4habxdzmn02id324m0m4mg5isf22q1z436bg3vjjmcz1b3rjsg")))) (build-system gnu-build-system) (outputs '("out" "doc")) (arguments @@ -3799,7 +3776,7 @@ and other secrets. It communicates with the \"Secret Service\" using DBus.") (define-public five-or-more (package (name "five-or-more") - (version "3.32.1") + (version "3.32.2") (source (origin (method url-fetch) @@ -3807,7 +3784,7 @@ and other secrets. It communicates with the \"Secret Service\" using DBus.") (version-major+minor version) "/" "five-or-more-" version ".tar.xz")) (sha256 - (base32 "0xw05dd2dwi9vsph9h158b4n89s5k07xrh6bjz1icm0pdmjwhpgk")))) + (base32 "19pf8wzbf3ciqf2k4bj9sddvyhckfd62x86pnqr6s8h4vn9jc6ii")))) (build-system meson-build-system) (arguments '(#:glib-or-gtk? #t @@ -3842,7 +3819,7 @@ and other secrets. It communicates with the \"Secret Service\" using DBus.") (define-public gnome-mines (package (name "gnome-mines") - (version "3.32.2") + (version "3.34.0") (source (origin (method url-fetch) @@ -3851,7 +3828,7 @@ and other secrets. It communicates with the \"Secret Service\" using DBus.") name "-" version ".tar.xz")) (sha256 (base32 - "1nv966wkp2rqxzcdb76bwlbzpjqadcaqzrnkxpzwnvjjr167yx8g")))) + "1spxa6qr1y8s5rrsvpciywpvhk812ngn95s1apaxaigwy2g1iw54")))) (build-system meson-build-system) (arguments '(#:glib-or-gtk? #t @@ -3885,7 +3862,7 @@ floating in an ocean using only your brain and a little bit of luck.") (define-public gnome-sudoku (package (name "gnome-sudoku") - (version "3.32.0") + (version "3.34.1") (source (origin (method url-fetch) @@ -3894,7 +3871,7 @@ floating in an ocean using only your brain and a little bit of luck.") name "-" version ".tar.xz")) (sha256 (base32 - "1wwdjflw1lbx3cv6gvqcgp5jnjkrq37ld6mjbjj03g3vr90qaf0l")))) + "025y85r4qqardivvwiwhbmgarziykdy224m8zlrq8b79zv82793b")))) (build-system meson-build-system) (arguments '(#:glib-or-gtk? #t @@ -3931,7 +3908,7 @@ more fun.") (define-public gnome-terminal (package (name "gnome-terminal") - (version "3.32.2") + (version "3.34.2") (source (origin (method url-fetch) @@ -3940,7 +3917,7 @@ more fun.") name "-" version ".tar.xz")) (sha256 (base32 - "0shhpnagasyp1kxgjczfrivcxbgrrl3y8lzvp1z101m67h4jp6km")))) + "0gc004f9b5k94gkdanmqjz3wqgnpny0l3nqm8zd19h4f0ps27mrv")))) (build-system glib-or-gtk-build-system) (arguments '(#:configure-flags @@ -3965,7 +3942,7 @@ more fun.") ("vte" ,vte) ("gnutls" ,gnutls) ("gsettings-desktop-schemas" ,gsettings-desktop-schemas) - ("util-linux" ,util-linux) + ("util-linux" ,util-linux "lib") ("vala" ,vala))) (home-page "https://wiki.gnome.org/Apps/Terminal") (synopsis "Terminal emulator") @@ -4203,7 +4180,7 @@ service via the system message bus.") (define-public libgweather (package (name "libgweather") - (version "3.28.3") + (version "3.34.0") (source (origin (method url-fetch) (uri (string-append "mirror://gnome/sources/" name "/" @@ -4211,7 +4188,7 @@ service via the system message bus.") name "-" version ".tar.xz")) (sha256 (base32 - "1xz60h59zgyk61y2wwzm0xlqav72i668g7v0x7rh9idz240hxls5")))) + "1fgiqswkhiaijanml3mb16ajn5aanrk7x6yiwagp9n9rssam6902")))) (build-system meson-build-system) (arguments `(#:tests? #f ; one of two tests requires network access @@ -4245,7 +4222,7 @@ services for numerous locations.") (define-public gnome-settings-daemon (package (name "gnome-settings-daemon") - (version "3.32.1") + (version "3.34.1") (source (origin (method url-fetch) @@ -4254,7 +4231,7 @@ services for numerous locations.") name "-" version ".tar.xz")) (sha256 (base32 - "02d0s0g2mmqfib44r3sf0499r08p61s8l2ndsjssbam1bi7x2dks")))) + "07y1gbicz0pbxmdgwrdzyc4byy30wfwpbqgvnx27gnpqmc5s50cr")))) (build-system meson-build-system) (arguments `(#:glib-or-gtk? #t @@ -4262,6 +4239,7 @@ services for numerous locations.") (list (string-append "-Dudev_dir=" (assoc-ref %outputs "out") "/lib/udev/rules.d/") + "-Dsystemd=false" ;; Otherwise, the RUNPATH will lack the final path component. (string-append "-Dc_link_args=-Wl,-rpath=" (assoc-ref %outputs "out") @@ -4299,7 +4277,9 @@ services for numerous locations.") ("librsvg" ,librsvg) ("xf86-input-wacom" ,xf86-input-wacom) ("wayland" ,wayland) - ("network-manager" ,network-manager))) + ("network-manager" ,network-manager) + ("gcr" ,gcr) + ("modem-manager" ,modem-manager))) (home-page "https://www.gnome.org") (synopsis "GNOME settings daemon") (description @@ -4414,7 +4394,7 @@ both a traditional UI or a modern UI with a GtkHeaderBar.") (define-public devhelp (package (name "devhelp") - (version "3.32.0") + (version "3.34.0") (source (origin (method url-fetch) (uri (string-append "mirror://gnome/sources/" name "/" @@ -4422,7 +4402,7 @@ both a traditional UI or a modern UI with a GtkHeaderBar.") name "-" version ".tar.xz")) (sha256 (base32 - "06sa83zggk29wcg75fl3gqh0rmi7cd3gsbk09a2z23r7vpy7xanq")))) + "0zpmn6fgkgiayvn4diia5df0s6s7dqrdnp3nrvpavsmgn0vhb4pg")))) (build-system meson-build-system) (arguments '(#:glib-or-gtk? #t @@ -4745,7 +4725,7 @@ GNOME Games, but it may be used by others.") (define-public gnome-klotski (package (name "gnome-klotski") - (version "3.32.0") + (version "3.34.0") (source (origin (method url-fetch) (uri (string-append "mirror://gnome/sources/" name "/" @@ -4753,7 +4733,7 @@ GNOME Games, but it may be used by others.") name "-" version ".tar.xz")) (sha256 (base32 - "1p4s15gxj6gasix22z9vlx2yrx196fvcxr6v6qrl569idfgjbi72")))) + "0sbx0bzy32lh2c9jp8v7gz788wn9y1la8mr5a7gf7370szsl4d4f")))) (build-system meson-build-system) (arguments '(#:glib-or-gtk? #t @@ -4879,7 +4859,7 @@ discovery protocols.") (define-public totem (package (name "totem") - (version "3.32.1") + (version "3.34.1") (source (origin (method url-fetch) @@ -4888,7 +4868,7 @@ discovery protocols.") name "-" version ".tar.xz")) (sha256 (base32 - "0yra8apc7smpwf7d1k8crhrm8d4wix24ds6i9yxbch1v11jnhr3v")))) + "028sc6xbyi7rs884862d8f3di6zhcm0lhvlpc3r69ifzjsq9my3b")))) (build-system meson-build-system) (native-inputs `(("pkg-config" ,pkg-config) @@ -5073,7 +5053,7 @@ supports playlists, song ratings, and any codecs installed through gstreamer.") (define-public eog (package (name "eog") - (version "3.32.2") + (version "3.34.1") (source (origin (method url-fetch) (uri (string-append "mirror://gnome/sources/" name "/" @@ -5081,7 +5061,7 @@ supports playlists, song ratings, and any codecs installed through gstreamer.") name "-" version ".tar.xz")) (sha256 (base32 - "1bcxpqgzlk2cy4wfb3b5h66mhpj2fhrk1rrb5qqcv5xrr62ik5xy")))) + "0b7ld4azs9xbdjsk9b91ywhdzvxgajhndiwiivxjzbr0hjgp7c7x")))) (build-system meson-build-system) (arguments `(#:configure-flags @@ -5120,8 +5100,8 @@ supports playlists, song ratings, and any codecs installed through gstreamer.") ("lcms" ,lcms) ("libexif" ,libexif) ("libpeas" ,libpeas) - ("libjpeg" ,libjpeg) - ("librsvg" ,librsvg) + ("libjpeg" ,libjpeg-turbo) + ("librsvg" ,librsvg-next) ("gsettings-desktop-schemas" ,gsettings-desktop-schemas) ("gtk+" ,gtk+))) (home-page "https://wiki.gnome.org/Apps/EyeOfGnome") @@ -5310,7 +5290,7 @@ USB transfers with your high-level application or system daemon.") (define-public simple-scan (package (name "simple-scan") - (version "3.36.0") + (version "3.36.2.1") (source (origin (method url-fetch) @@ -5318,7 +5298,7 @@ USB transfers with your high-level application or system daemon.") (version-major+minor version) "/" "simple-scan-" version ".tar.xz")) (sha256 - (base32 "198l3yhqhb2wzfdcgi8fzbwycr0njn44583dazz6wy1gqbiqnzgm")))) + (base32 "0aq1pf0wk536b91as54684xgmhl7lps0k2xcwha5wh6h1isyb35v")))) (build-system meson-build-system) ;; TODO: Fix icons in home screen, About dialogue, and scan menu. (arguments @@ -5418,7 +5398,7 @@ a secret password store, an adblocker, and a modern UI.") (define-public epiphany (package (name "epiphany") - (version "3.32.5") + (version "3.34.4") (source (origin (method url-fetch) (uri (string-append "mirror://gnome/sources/epiphany/" @@ -5426,17 +5406,11 @@ a secret password store, an adblocker, and a modern UI.") "epiphany-" version ".tar.xz")) (sha256 (base32 - "1hj4yy53fwh96h17cqiw3gxc070vmc7yqwc7phvhnpyinkp9g5my")))) + "13ar3s40cds1rplwbzx0fzigf120w0rydiv05r3k6zpc0zy91qb0")))) (build-system meson-build-system) (arguments - ;; FIXME: tests run under Xvfb, but fail with: - ;; /src/bookmarks/ephy-bookmarks/create: - ;; ** (test-ephy-bookmarks:19591): WARNING **: Unable to start Zeroconf - ;; subsystem - ;; FAIL - '(#:tests? #f - #:glib-or-gtk? #t + '(#:glib-or-gtk? #t #:phases (modify-phases %standard-phases (add-after 'unpack 'skip-gtk-update-icon-cache @@ -5444,6 +5418,21 @@ a secret password store, an adblocker, and a modern UI.") (lambda _ (substitute* "post_install.py" (("gtk-update-icon-cache") "true")) + #t)) + (add-after 'unpack 'disable-failing-tests + (lambda _ + (substitute* "tests/meson.build" + ;; embed_shell fails, because webkitgtk apparently no longer supports + ;; overriding the ftp schema + ;; web_app_utils fails due to missing network access + (("(embed_shell|web_app_utils)_test,") + "find_program('sh'), args: ['-c', 'exit 77'],")) + #t)) + (add-before 'check 'pre-check + (lambda _ + ;; Tests require a running X server. + (system "Xvfb :1 &") + (setenv "DISPLAY" ":1") #t))) #:configure-flags ;; Otherwise, the RUNPATH will lack the final 'epiphany' path component. @@ -5457,7 +5446,8 @@ a secret password store, an adblocker, and a modern UI.") ("intltool" ,intltool) ("itstool" ,itstool) ("pkg-config" ,pkg-config) - ("xmllint" ,libxml2))) + ("xmllint" ,libxml2) + ("xorg-server" ,xorg-server-for-tests))) (inputs `(("avahi" ,avahi) ("gcr" ,gcr) @@ -5543,7 +5533,7 @@ of running programs and invoke methods on those interfaces.") (define-public yelp-xsl (package (name "yelp-xsl") - (version "3.32.1") + (version "3.34.2") (source (origin (method url-fetch) (uri (string-append "mirror://gnome/sources/" name "/" @@ -5551,10 +5541,10 @@ of running programs and invoke methods on those interfaces.") name "-" version ".tar.xz")) (sha256 (base32 - "013z2ixx9kfrs6hq79qpil093xfbc12y1p0mvsh6lpala30iphya")))) + "1bdpgkzawhqmw52l6zx8czzg1ndfgcf1p44m2bxjdpqkc4afcgqc")))) (build-system gnu-build-system) (native-inputs - `(("intltool" ,intltool) + `(("gettext-minimal" ,gettext-minimal) ("itstool" ,itstool) ("xmllint" ,libxml2))) (home-page "https://wiki.gnome.org/Apps/Yelp") @@ -5601,7 +5591,7 @@ freedesktop.org help system specification.") (define-public yelp-tools (package (name "yelp-tools") - (version "3.28.0") + (version "3.32.2") (source (origin (method url-fetch) (uri (string-append "mirror://gnome/sources/" name "/" @@ -5609,7 +5599,7 @@ freedesktop.org help system specification.") name "-" version ".tar.xz")) (sha256 (base32 - "1b61dmlb1sd50fgq6zgnkcpx2s1py33q0x9cx67fzpsr4gmgxnw2")))) + "1yg8f5g5wadhmy4yfd9yjhvd8vll4gq4l86ibp0b42qbxnsmcf0q")))) (build-system gnu-build-system) (native-inputs `(("pkg-config" ,pkg-config))) @@ -5629,17 +5619,6 @@ lifting is done by packages like yelp-xsl and itstool. This package just wraps things up in a developer-friendly way.") (license license:gpl2+))) -(define-public yelp-tools/fixed - ;; This variant fixes a python-libxml2 crash when processing UTF-8 - ;; sequences: <https://bugs.gnu.org/37468>. TODO: Remove this in - ;; the next rebuild cycle. - (hidden-package - (package/inherit - yelp-tools - (propagated-inputs - `(("itstool" ,itstool/fixed) - ,@(alist-delete "itstool" (package-propagated-inputs yelp-tools))))))) - (define-public libgee (package (name "libgee") @@ -5803,7 +5782,7 @@ such as gzip tarballs.") (define-public gnome-session (package (name "gnome-session") - (version "3.32.0") + (version "3.34.2") (source (origin (method url-fetch) (uri (string-append "mirror://gnome/sources/" name "/" @@ -5811,7 +5790,7 @@ such as gzip tarballs.") name "-" version ".tar.xz")) (sha256 (base32 - "0zrzkpd406i159mla7bfs5npa32fgqh66aip1rfq02rgsgmc9m5v")))) + "1qgqp97f8k2zi2ydvhds14zsjzfj7cv521r6wx5sw0qacn0p7dwb")))) (arguments '(#:glib-or-gtk? #t #:phases @@ -5874,7 +5853,7 @@ configuration program to choose applications starting on login.") (define-public gjs (package (name "gjs") - (version "1.56.2") + (version "1.58.3") (source (origin (method url-fetch) (uri (string-append "mirror://gnome/sources/" name "/" @@ -5882,7 +5861,7 @@ configuration program to choose applications starting on login.") name "-" version ".tar.xz")) (sha256 (base32 - "1b5321krn89p3f7s2ik6gpfnc61apzljhlnbqky8c88f7n6832ac")))) + "1bkksx362007zs8c31ydygb29spwa5g5kch1ad2grc2sp53wv7ya")))) (build-system gnu-build-system) (arguments '(#:phases @@ -5912,6 +5891,7 @@ configuration program to choose applications starting on login.") ("xmllint" ,libxml2) ;; For testing ("dbus-launch" ,dbus) + ("dconf" ,dconf) ; required to properly store settings ("uuidgen" ,util-linux) ("xvfb" ,xorg-server-for-tests))) (propagated-inputs @@ -5932,7 +5912,7 @@ javascript engine and the GObject introspection framework.") (define-public gedit (package (name "gedit") - (version "3.32.2") + (version "3.34.1") (source (origin (method url-fetch) (uri (string-append "mirror://gnome/sources/" name "/" @@ -5940,7 +5920,7 @@ javascript engine and the GObject introspection framework.") name "-" version ".tar.xz")) (sha256 (base32 - "1q2rk7fym542c7k3bn2wlnzgy384gxacbifsjny0spbg95gfybvl")))) + "1inm50sdfw63by1lf4f1swb59mpyxlly0g5rdg99j5l3357fzygb")))) (build-system meson-build-system) (arguments `(#:glib-or-gtk? #t @@ -6053,7 +6033,7 @@ to display dialog boxes from the commandline and shell scripts.") (define-public mutter (package (name "mutter") - (version "3.32.2") + (version "3.34.2") (source (origin (method url-fetch) (uri (string-append "mirror://gnome/sources/" name "/" @@ -6061,7 +6041,7 @@ to display dialog boxes from the commandline and shell scripts.") name "-" version ".tar.xz")) (sha256 (base32 - "1h577i2ap7dpfy1jg101jvc6nzccc0csgvd55ahydlr8f94frcva")))) + "0b8bz5kvs7rlwvqsg87cf6jhrrj95vgd1l235mjx8rip35ipfvrd")))) ;; NOTE: Since version 3.21.x, mutter now bundles and exports forked ;; versions of cogl and clutter. As a result, many of the inputs, ;; propagated-inputs, and configure flags used in cogl and clutter are @@ -6073,10 +6053,12 @@ to display dialog boxes from the commandline and shell scripts.") #:tests? #f #:glib-or-gtk? #t #:configure-flags - ;; Otherwise, the RUNPATH will lack the final path component. - (list (string-append "-Dc_link_args=-Wl,-rpath=" + ;; TODO: Enable profiler when Sysprof is packaged. + (list "-Dprofiler=false" + ;; Otherwise, the RUNPATH will lack the final path component. + (string-append "-Dc_link_args=-Wl,-rpath=" (assoc-ref %outputs "out") "/lib:" - (assoc-ref %outputs "out") "/lib/mutter-4") + (assoc-ref %outputs "out") "/lib/mutter-5") ;; The following flags are needed for the bundled clutter (string-append "-Dxwayland_path=" @@ -6086,27 +6068,10 @@ to display dialog boxes from the commandline and shell scripts.") ;; the remaining flags are needed for the bundled cogl (string-append "-Dopengl_libname=" (assoc-ref %build-inputs "mesa") - "/lib/libGL.so")) - #:phases - (modify-phases %standard-phases - (add-after 'unpack 'disable-werror - (lambda _ - ;; XXX: build fails with [-Werror]: - ;; backends/meta-cursor-renderer.c:112:5: error: - ;; implicit declaration of function ?roundf? - (substitute* "meson.build" - (("'-Werror=.*',") "")) - #t)) - ;; Replace references to systemd libraries to elogind references. - (add-before 'configure 'use-elogind - (lambda _ - (substitute* (list "meson.build" - "src/backends/native/meta-launcher.c" - "src/core/main.c") - (("systemd") "elogind")) - #t))))) + "/lib/libGL.so")))) (native-inputs - `(("glib:bin" ,glib "bin") ; for glib-compile-schemas, etc. + `(("desktop-file-utils" ,desktop-file-utils) ; for update-desktop-database + ("glib:bin" ,glib "bin") ; for glib-compile-schemas, etc. ("gobject-introspection" ,gobject-introspection) ("intltool" ,intltool) ("pkg-config" ,pkg-config) @@ -6224,7 +6189,7 @@ Exchange, Last.fm, IMAP/SMTP, Jabber, SIP and Kerberos.") (define-public evolution-data-server (package (name "evolution-data-server") - (version "3.32.4") + (version "3.34.2") (source (origin (method url-fetch) (uri (string-append "mirror://gnome/sources/" name "/" @@ -6234,7 +6199,7 @@ Exchange, Last.fm, IMAP/SMTP, Jabber, SIP and Kerberos.") "evolution-data-server-libical-compat.patch")) (sha256 (base32 - "0zsc9xwy6ixk3x0dx69ax5isrdw8qxjdxg2i5fr95s40nss7rxl3")))) + "16z85y6hhazcrp5ngw47w4x9r0j8zrj7awv5im58hhp0xs19zf1y")))) (build-system cmake-build-system) (arguments '(#:configure-flags @@ -6261,13 +6226,6 @@ Exchange, Last.fm, IMAP/SMTP, Jabber, SIP and Kerberos.") (delete-file-recursively "tests/book-migration") (substitute* "tests/CMakeLists.txt" (("add_subdirectory\\(book-migration\\)") "")) - ;; tests/libebook/client/test-book-client-view-operations:8077): - ;; e-data-server-WARNING **: - ;; (src/libedataserver/e-source-registry.c:264):thread_closure_free: - ;; runtime check failed: - ;; (!g_main_context_pending (closure->main_context)) - (substitute* "tests/libebook/client/CMakeLists.txt" - (("test-book-client-view-operations") "")) #t)) (add-after 'unpack 'patch-paths (lambda _ @@ -6471,6 +6429,10 @@ users.") (lambda _ ;; For the missing /etc/machine-id. (setenv "DBUS_FATAL_WARNINGS" "0") + + ;; XXX: Regenerate some of the tests that are dependent on Python version. + ;; Try removing this variable for newer versions of NetworkManager. + (setenv "NM_TEST_REGENERATE" "1") #t)) (replace 'install (lambda _ @@ -6671,6 +6633,7 @@ Compatible with Cisco VPN concentrators configured to use IPsec.") ("kmod" ,kmod) ("libsecret" ,libsecret) ("libxml2" ,libxml2) + ("lz4" ,lz4) ("network-manager" ,network-manager) ("openconnect" ,openconnect))) (home-page "https://wiki.gnome.org/Projects/NetworkManager/VPN") @@ -6798,7 +6761,7 @@ libxml2.") (define-public gdm (package (name "gdm") - (version "3.32.0") + (version "3.34.1") (source (origin (method url-fetch) (uri (string-append "mirror://gnome/sources/" name "/" @@ -6806,7 +6769,7 @@ libxml2.") name "-" version ".tar.xz")) (sha256 (base32 - "12ypdz9i24hwbl1d1wnnxb8zlvfa4f49n9ac5cl9d6h8qp4b0gb4")) + "1lyqvcwxhwxklbxn4xjswjzr6fhjix6h28mi9ypn34wdm9bzcpg8")) (patches (search-patches "gdm-default-session.patch")))) (build-system glib-or-gtk-build-system) (arguments @@ -6848,6 +6811,7 @@ libxml2.") (("#include <systemd/sd-daemon\\.h>") "")) ;; Use elogind for sd-login. (substitute* '("common/gdm-common.c" + "daemon/gdm-local-display-factory.c" "daemon/gdm-manager.c" "libgdm/gdm-user-switching.c") (("#include <systemd/sd-login\\.h>") @@ -6895,7 +6859,8 @@ libxml2.") (substitute* '("daemon/gdm-server.c") (("\\(X_SERVER X_SERVER_ARG_FORMAT") "(\"%s\" X_SERVER_ARG_FORMAT, g_getenv (\"GDM_X_SERVER\")")) - (substitute* '("daemon/gdm-x-session.c") + (substitute* '("daemon/gdm-wayland-session.c" + "daemon/gdm-x-session.c") (("\"dbus-daemon\"") "g_getenv (\"GDM_DBUS_DAEMON\")") (("X_SERVER") @@ -7014,7 +6979,7 @@ usage and information about running processes.") (define-public gnome-bluetooth (package (name "gnome-bluetooth") - (version "3.32.1") + (version "3.34.0") (source (origin (method url-fetch) (uri (string-append "mirror://gnome/sources/" name "/" @@ -7022,7 +6987,7 @@ usage and information about running processes.") name "-" version ".tar.xz")) (sha256 (base32 - "1am1gf0nzwg6x1s8ly13j0xnjzgrfj06j0dp52x4zy9s67ywlhb4")))) + "1bvbxcsjkyl0givy8nfm7112bq3c0vn1v89fdk2pip714dsfcrz8")))) (build-system meson-build-system) (native-inputs `(("glib:bin" ,glib "bin") ; for gdbus-codegen, etc. @@ -7049,7 +7014,7 @@ devices using the GNOME desktop.") (define-public gnome-control-center (package (name "gnome-control-center") - (version "3.32.2") + (version "3.34.2") (source (origin (method url-fetch) (uri (string-append "mirror://gnome/sources/" name "/" @@ -7057,7 +7022,7 @@ devices using the GNOME desktop.") name "-" version ".tar.xz")) (sha256 (base32 - "03np0mhfl9kkdw4cb711pda0cli9zgh2bq2gqn2zwbdi3qnhk9gs")))) + "054igagvmyzpaa5nwzz98gv7bk7l5dwp6g813707132si3szlpx8")))) (build-system meson-build-system) (arguments '(#:glib-or-gtk? #t @@ -7098,10 +7063,15 @@ devices using the GNOME desktop.") (("DATADIR \"/gnome/gnome-version.xml\"") (string-append "\"" gnome-desktop "/share/gnome/gnome-version.xml\""))) - #t)))))) + #t))) + (add-after 'unpack 'skip-gtk-update-icon-cache + ;; Don't create 'icon-theme.cache'. + (lambda _ + (substitute* "build-aux/meson/meson_post_install.py" + (("gtk-update-icon-cache") (which "true"))) + #t))))) (native-inputs `(("glib:bin" ,glib "bin") ; for glib-mkenums, etc. - ("gtk+:bin" ,gtk+ "bin") ; for gtk-update-icon-cache ("intltool" ,intltool) ("pkg-config" ,pkg-config) ("xsltproc" ,libxslt) @@ -7157,7 +7127,7 @@ properties, screen resolution, and other GNOME parameters.") (define-public gnome-shell (package (name "gnome-shell") - (version "3.32.2") + (version "3.34.2") (source (origin (method url-fetch) (uri (string-append "mirror://gnome/sources/" name "/" @@ -7165,8 +7135,9 @@ properties, screen resolution, and other GNOME parameters.") name "-" version ".tar.xz")) (sha256 (base32 - "0anlkdnqsp5fqvmg95rqjpp1ifcx5xzsvwcrdsvb1cqzbh6inmp5")) - (patches (search-patches "gnome-shell-theme.patch")) + "0k9vq2gh1nhdd6fpp7jnwx37qxaakawiqw1xnlfjvq5g5zdn8ckh")) + (patches (search-patches "gnome-shell-theme.patch" + "gnome-shell-disable-test.patch")) (modules '((guix build utils))) (snippet #~(begin @@ -7260,7 +7231,8 @@ properties, screen resolution, and other GNOME parameters.") '("inkscape" "intltool" "glib:bin")) #:outputs outputs))))))) (native-inputs - `(("glib:bin" ,glib "bin") ; for glib-compile-schemas, etc. + `(("asciidoc" ,asciidoc) + ("glib:bin" ,glib "bin") ; for glib-compile-schemas, etc. ("desktop-file-utils" ,desktop-file-utils) ; for update-desktop-database ("gobject-introspection" ,gobject-introspection) ("inkscape" ,inkscape) @@ -7281,6 +7253,7 @@ properties, screen resolution, and other GNOME parameters.") ("gdm" ,gdm) ("gdk-pixbuf" ,gdk-pixbuf+svg) ("gjs" ,gjs) + ("gnome-autoar" ,gnome-autoar) ("gnome-bluetooth" ,gnome-bluetooth) ("gnome-desktop" ,gnome-desktop) ("gnome-settings-daemon" ,gnome-settings-daemon) @@ -7353,7 +7326,7 @@ as SASL, TLS and VeNCrypt. Additionally it supports encoding extensions.") (define-public gnome-autoar (package (name "gnome-autoar") - (version "0.2.3") + (version "0.2.4") (source (origin (method url-fetch) (uri (string-append "mirror://gnome/sources/" name "/" @@ -7361,14 +7334,13 @@ as SASL, TLS and VeNCrypt. Additionally it supports encoding extensions.") name "-" version ".tar.xz")) (sha256 (base32 - "02i4zgqqqj56h7bcys6dz7n78m4nj2x4dv1ggjmnrk98n06xpsax")))) + "0yk56ch46n3wfy633mq31kif9n7v06rlij4vqbsbn6l4z1vw6d0a")))) (build-system glib-or-gtk-build-system) (native-inputs - `(("gnome-common" ,gnome-common) - ("gobject-introspection" ,gobject-introspection) + `(("gobject-introspection" ,gobject-introspection) ("pkg-config" ,pkg-config))) (propagated-inputs - `(("libarchive" ,libarchive))) ; XXX document why + `(("libarchive" ,libarchive))) ; Required by gnome-autoar-0.pc (inputs `(("gtk+" ,gtk+))) (synopsis "Archives integration support for GNOME") @@ -7494,7 +7466,7 @@ endpoint and it understands SPARQL. ") ("libgsf" ,libgsf) ("libgxps" ,libgxps) ("libiptcdata" ,libiptcdata) - ("libjpeg" ,libjpeg) + ("libjpeg" ,libjpeg-turbo) ("libosinfo" ,libosinfo) ("libpng" ,libpng) ("libseccomp" ,libseccomp) @@ -7522,7 +7494,7 @@ shared object databases, search tools and indexing.") (define-public nautilus (package (name "nautilus") - (version "3.32.3") + (version "3.34.2") (source (origin (method url-fetch) (uri (string-append "mirror://gnome/sources/" name "/" @@ -7530,17 +7502,24 @@ shared object databases, search tools and indexing.") name "-" version ".tar.xz")) (sha256 (base32 - "1x9crzbj6rrrf8w5dkcx0c14j40byr4ijpzkwd5dcrbfvvdy1r01")))) + "19zqwq4qyyncc5wq3xls0f7rsavnw741k336p2h7kx35p4kf41mv")))) (build-system meson-build-system) (arguments '(#:glib-or-gtk? #t + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'skip-gtk-update-icon-cache + ;; Don't create 'icon-theme.cache'. + (lambda _ + (substitute* "build-aux/meson/postinstall.py" + (("gtk-update-icon-cache") "true")) + #t))) ;; XXX: FAIL: check-nautilus ;; Settings schema 'org.gnome.nautilus.preferences' is not installed #:tests? #f)) (native-inputs `(("desktop-file-utils" ,desktop-file-utils) ; for update-desktop-database ("glib:bin" ,glib "bin") ; for glib-mkenums, etc. - ("gtk+:bin" ,gtk+ "bin") ; for gtk-update-icon-cache ("gobject-introspection" ,gobject-introspection) ("intltool" ,intltool) ("pkg-config" ,pkg-config))) @@ -7611,7 +7590,7 @@ is complete it provides a graphical representation of each selected folder.") (define-public gnome-backgrounds (package (name "gnome-backgrounds") - (version "3.32.0") + (version "3.34.0") (source (origin (method url-fetch) @@ -7620,7 +7599,7 @@ is complete it provides a graphical representation of each selected folder.") name "-" version ".tar.xz")) (sha256 (base32 - "1s5krdmd3md44p1fgr2lqm5ifxb8s1vzx6hm11sb4cgzr4dw6lrz")))) + "0zxlwy55fz7i582hch2wnj8zy1kzikssgaix0l2y41ccp5nzpdy2")))) (build-system meson-build-system) (native-inputs `(("intltool" ,intltool))) @@ -7639,7 +7618,7 @@ can add your own files to the collection.") (define-public gnome-screenshot (package (name "gnome-screenshot") - (version "3.32.0") + (version "3.34.0") (source (origin (method url-fetch) @@ -7648,11 +7627,19 @@ can add your own files to the collection.") name "-" version ".tar.xz")) (sha256 (base32 - "09ha7dizjm5ymqpjyrqd10ijfb3xlqc1mwg9ajkrbfry11q9yq4b")))) + "1rmiq890j7gfn5mcz31xy6jfnnxgc17dq67bhn2k9m5ylbvza2n8")))) (build-system meson-build-system) + (arguments + '(#:phases + (modify-phases %standard-phases + (add-after 'unpack 'skip-gtk-update-icon-cache + ;; Don't create 'icon-theme.cache'. + (lambda _ + (substitute* "build-aux/postinstall.py" + (("gtk-update-icon-cache") "true")) + #t))))) (native-inputs `(("glib:bin" ,glib "bin") ; for glib-compile-schemas, etc. - ("gtk+-bin" ,gtk+ "bin") ; for gtk-update-icon-cache ("desktop-file-utils" ,desktop-file-utils) ; for update-desktop-database ("intltool" ,intltool) ("appstream-glib" ,appstream-glib) @@ -7673,7 +7660,7 @@ beautifying border effects.") (define-public dconf-editor (package (name "dconf-editor") - (version "3.32.0") + (version "3.34.2") (source (origin (method url-fetch) @@ -7682,19 +7669,8 @@ beautifying border effects.") name "-" version ".tar.xz")) (sha256 (base32 - "1fmsmlh16njjm948grz20mzrsvb4wjj7pl1fvkrkxqi7mhr177gi")))) + "0pwxjada2vaf69ihpjgp9nky54iykvxq63lp1vl8pxjanif2mk6f")))) (build-system meson-build-system) - (arguments - '(#:phases (modify-phases %standard-phases - (add-before 'configure 'set-glib-minimum-version - (lambda _ - ;; Change the minimum required GLib version so that - ;; 'valac' is passed '--target-glib 2.60.0'; failing to - ;; do that, it complains that "55" is not an even - ;; number. See <https://bugs.gnu.org/37503>. - (substitute* "editor/meson.build" - (("2\\.55\\.1") "2.60.0")) - #t))))) (native-inputs `(("glib:bin" ,glib "bin") ; for glib-compile-schemas, gio-2.0. ("gtk+-bin" ,gtk+ "bin") ; for gtk-update-icon-cache @@ -7705,7 +7681,7 @@ beautifying border effects.") `(("dconf" ,dconf) ("gtk+" ,gtk+) ("libxml2" ,libxml2))) - (home-page "https://git.gnome.org/browse/dconf-editor") + (home-page "https://gitlab.gnome.org/GNOME/dconf-editor") (synopsis "Graphical editor for GNOME's dconf configuration system") (description "Dconf-editor is a graphical tool for browsing and editing the dconf @@ -7803,7 +7779,8 @@ associations for GNOME.") ("gnome-desktop" ,gnome-desktop) ("libgweather" ,libgweather))) (arguments - `(#:phases + `(#:glib-or-gtk? #t + #:phases (modify-phases %standard-phases (add-after 'install 'fix-desktop-file ;; FIXME: "gapplication launch org.gnome.Weather" fails for some reason. @@ -7812,7 +7789,16 @@ associations for GNOME.") (let* ((out (assoc-ref outputs "out")) (applications (string-append out "/share/applications"))) (substitute* (string-append applications "/org.gnome.Weather.desktop") - (("Exec=.*") "Exec=gnome-weather\n")))))))) + (("Exec=.*") "Exec=gnome-weather\n")) + #t))) + (add-after 'install 'wrap + (lambda* (#:key inputs outputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out")) + (gi-typelib-path (getenv "GI_TYPELIB_PATH"))) + ;; GNOME Weather needs the typelib files of GTK+, Pango etc at runtime. + (wrap-program (string-append out "/bin/gnome-weather") + `("GI_TYPELIB_PATH" ":" prefix (,gi-typelib-path))) + #t)))))) (synopsis "Weather monitoring for GNOME desktop") (description "GNOME Weather is a small application that allows you to monitor the current weather conditions for your city, or anywhere in the @@ -7865,7 +7851,11 @@ world.") ;; GNOME-Core-Utilities ("baobab" ,baobab) ("cheese" ,cheese) - ("eog" ,eog) + ;; XXX: EoG requires librsvg-next, which depends on Rust, which currently + ;; only works on x86_64, so exclude it on other architectures. + ,@(if (string-prefix? "x86_64" (%current-system)) + `(("eog" ,eog)) + '()) ("epiphany" ,epiphany) ("evince" ,evince) ("file-roller" ,file-roller) @@ -7943,7 +7933,7 @@ documents and diagrams, playing media, scanning, and much more.") (arguments '(#:phases (modify-phases %standard-phases - (replace 'bootstrap + (add-before 'bootstrap 'build-without-Werror (lambda _ ;; The build system cleverly detects that we're not building from ;; a release tarball and turns on -Werror for GCC. @@ -7951,11 +7941,7 @@ documents and diagrams, playing media, scanning, and much more.") ;; causes the build to fail unnecessarily, so we remove the flag. (substitute* '("configure.ac") (("-Werror") "")) - ;; The autogen.sh script in gnome-common will run ./configure - ;; by default, which is problematic because source shebangs - ;; have not yet been patched. - (setenv "NOCONFIGURE" "t") - (zero? (system* "sh" "autogen.sh"))))))) + #t))))) (native-inputs `(("autoconf" ,autoconf) ("automake" ,automake) @@ -8035,7 +8021,7 @@ Microsoft SkyDrive and Hotmail, using their REST protocols.") (define-public gnome-clocks (package (name "gnome-clocks") - (version "3.32.0") + (version "3.34.0") (source (origin (method url-fetch) (uri (string-append "mirror://gnome/sources/" name "/" @@ -8043,15 +8029,22 @@ Microsoft SkyDrive and Hotmail, using their REST protocols.") name "-" version ".tar.xz")) (sha256 (base32 - "1w6lgjdak3x76c9gyhd1lqrdmjfh8q77sjnrkcimylsg0jq913bc")))) + "0g7hjk55smhkd09hwa9kag3h5a12l494wj89w9smpdk3ghsmy6b1")))) (build-system meson-build-system) (arguments - '(#:glib-or-gtk? #t)) + '(#:glib-or-gtk? #t + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'skip-gtk-update-icon-cache + ;; Don't create 'icon-theme.cache'. + (lambda _ + (substitute* "build-aux/post-install.py" + (("gtk-update-icon-cache") "true")) + #t))))) (native-inputs `(("vala" ,vala) ("pkg-config" ,pkg-config) ("glib" ,glib "bin") ; for glib-compile-resources - ("gtk+-bin" ,gtk+ "bin") ; for gtk-update-icon-cache ("desktop-file-utils" ,desktop-file-utils) ("gettext" ,gettext-minimal) ("itstool" ,itstool))) @@ -8073,7 +8066,7 @@ desktop. It supports world clock, stop watch, alarms, and count down timer.") (define-public gnome-calendar (package (name "gnome-calendar") - (version "3.32.2") + (version "3.34.2") (source (origin (method url-fetch) (uri (string-append "mirror://gnome/sources/" name "/" @@ -8081,26 +8074,34 @@ desktop. It supports world clock, stop watch, alarms, and count down timer.") name "-" version ".tar.xz")) (sha256 (base32 - "07p73cvzj8idr80npja5yiv9pjfyi6qqfhaz5jwcgqspqbnhnl7k")))) + "1bnmd191044zn2kr6f5vg7sm5q59qf7z652awll1f7s6ahijr8rw")))) (build-system meson-build-system) (arguments '(#:glib-or-gtk? #t ;; gnome-calendar has to be installed before the tests can be run ;; https://bugzilla.gnome.org/show_bug.cgi?id=788224 - #:tests? #f)) + #:tests? #f + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'skip-gtk-update-icon-cache + ;; Don't create 'icon-theme.cache'. + (lambda _ + (substitute* "build-aux/meson/meson_post_install.py" + (("gtk-update-icon-cache") "true")) + #t))))) (native-inputs `(("gettext" ,gettext-minimal) ("glib-bin" ,glib "bin") ; For glib-compile-schemas - ("gtk+-bin" ,gtk+ "bin") ; For gtk-update-icon-cache ("pkg-config" ,pkg-config))) (inputs - `(("evolution-data-server" ,evolution-data-server) - ("gnome-online-accounts:lib" ,gnome-online-accounts "lib") + `(("gnome-online-accounts:lib" ,gnome-online-accounts "lib") ("gsettings-desktop-schemas" ,gsettings-desktop-schemas) ("libdazzle" ,libdazzle) ("libedataserverui" ,evolution-data-server) ("libgweather" ,libgweather) ("geoclue" ,geoclue))) + (propagated-inputs + `(("evolution-data-server" ,evolution-data-server))) (home-page "https://wiki.gnome.org/Apps/Calendar") (synopsis "GNOME's calendar application") (description @@ -8119,7 +8120,9 @@ desktop. It supports multiple calendars, month, week and year view.") name "-" version ".tar.xz")) (sha256 (base32 - "08ygqbib72jlf9y0a16k54zz51sncpq2wa18wp81v46q8301ymy7")))) + "08ygqbib72jlf9y0a16k54zz51sncpq2wa18wp81v46q8301ymy7")) + (patches + (search-patches "gnome-todo-delete-esource-duplicate.patch")))) (build-system meson-build-system) (arguments '(#:glib-or-gtk? #t @@ -8203,7 +8206,7 @@ existing databases over the internet.") (define-public gnome-tweaks (package (name "gnome-tweaks") - (version "3.32.0") + (version "3.34.0") (source (origin (method url-fetch) (uri (string-append "mirror://gnome/sources/gnome-tweaks/" @@ -8213,7 +8216,7 @@ existing databases over the internet.") (list (search-patch "gnome-tweaks-search-paths.patch"))) (sha256 (base32 - "037r35cw34ifcs676fq9n2v4mh1nkqx0qk474bznf18mr6r62h55")))) + "0l2j42ba7v866iknygamnkiq7igh0fjvq92r93cslvvfnkx2ccq0")))) (build-system meson-build-system) (arguments `(#:glib-or-gtk? #t @@ -8223,6 +8226,12 @@ existing databases over the internet.") ,@%meson-build-system-modules) #:phases (modify-phases %standard-phases + (add-after 'unpack 'skip-gtk-update-icon-cache + ;; Don't create 'icon-theme.cache'. + (lambda _ + (substitute* "meson-postinstall.py" + (("gtk-update-icon-cache") "true")) + #t)) (add-after 'install 'wrap (@@ (guix build python-build-system) wrap)) (add-after 'wrap 'wrap-gi-typelib @@ -8233,14 +8242,14 @@ existing databases over the internet.") `("GI_TYPELIB_PATH" ":" prefix (,gi-typelib-path)))) #t))))) (native-inputs - `(("gtk+:bin" ,gtk+ "bin") ; For gtk-update-icon-cache - ("intltool" ,intltool) + `(("intltool" ,intltool) ("pkg-config" ,pkg-config))) (inputs `(("gnome-desktop" ,gnome-desktop) ("gtk+" ,gtk+) ("gobject-introspection" ,gobject-introspection) ("gsettings-desktop-schemas" ,gsettings-desktop-schemas) + ("libhandy" ,libhandy) ("libnotify" ,libnotify) ("libsoup" ,libsoup) ("nautilus" ,nautilus) @@ -8258,7 +8267,7 @@ GNOME Shell appearance and extension, etc.") (define-public gnome-shell-extensions (package (name "gnome-shell-extensions") - (version "3.32.1") + (version "3.34.2") (source (origin (method url-fetch) (uri (string-append "mirror://gnome/sources/" name "/" @@ -8266,7 +8275,7 @@ GNOME Shell appearance and extension, etc.") name "-" version ".tar.xz")) (sha256 (base32 - "07libf6z24n42hpdsq163w0j8xyrav0lxqrwxrvq5kbz8zxv5ch2")))) + "1f5l35l3kdkzrv49xmg1sh11vwmgjbg7hx3gb91i39bfl1snxqd1")))) (build-system meson-build-system) (arguments '(#:configure-flags '("-Dextension_set=all"))) @@ -8418,7 +8427,7 @@ the Moka icon theme.") (define-public folks (package (name "folks") - (version "0.11.4") + (version "0.13.1") (source (origin (method url-fetch) (uri (string-append @@ -8427,17 +8436,28 @@ the Moka icon theme.") "folks-" version ".tar.xz")) (sha256 (base32 - "16hqh2gxlbx0b0hgq216hndr1m72vj54jvryzii9zqkk0g9kxc57")))) - (build-system glib-or-gtk-build-system) + "0pda8sx4ap3lyri5fdrnakl29la1zkhwlc9bmnp13qigp1iwdw9x")))) + (build-system meson-build-system) + (arguments + '(#:phases + (modify-phases %standard-phases + (add-after 'unpack 'skip-gtk-update-icon-cache + ;; Don't create 'icon-theme.cache'. + (lambda _ + (substitute* "meson_post_install.py" + (("gtk-update-icon-cache") "true")) + #t))))) (inputs `(("bdb" ,bdb) ("dbus-glib" ,dbus-glib) ("evolution-data-server" ,evolution-data-server) ("glib" ,glib) ("libgee" ,libgee) + ("readline" ,readline) ("telepathy-glib" ,telepathy-glib))) (native-inputs - `(("gobject-introspection" ,gobject-introspection) + `(("glib:bin" ,glib "bin") + ("gobject-introspection" ,gobject-introspection) ("intltool" ,intltool) ("pkg-config" ,pkg-config) ("vala" ,vala))) @@ -8555,7 +8575,7 @@ handling the startup notification side.") (define-public gnome-calculator (package (name "gnome-calculator") - (version "3.32.2") + (version "3.34.1") (source (origin (method url-fetch) @@ -8564,19 +8584,20 @@ handling the startup notification side.") name "-" version ".tar.xz")) (sha256 (base32 - "0fgpn3sc226s9fpzhik5rkkrf669037gc659ga2kn9jsyckj6p41")))) + "0lbh87255zzggqzai6543qg920y52bl4vs5m5h5087ghzg14hlsd")))) (build-system meson-build-system) (arguments '(#:glib-or-gtk? #t)) (native-inputs - `(("glib:bin" ,glib "bin") ; for glib-compile-schemas, gio-2.0. + `(("gettext" ,gettext-minimal) + ("glib:bin" ,glib "bin") ; for glib-compile-schemas, gio-2.0. ("gtk+:bin" ,gtk+ "bin") ; for gtk-update-icon-cache - ("intltool" ,intltool) ("itstool" ,itstool) ("vala" ,vala) ("pkg-config" ,pkg-config))) (inputs `(("glib" ,glib) ("gtksourceview" ,gtksourceview) + ("libgee" ,libgee) ("libsoup" ,libsoup) ("libxml2" ,libxml2) ("mpc" ,mpc) @@ -8807,7 +8828,7 @@ accessibility infrastructure.") (define-public orca (package (name "orca") - (version "3.32.0") + (version "3.34.1") (source (origin (method url-fetch) (uri (string-append @@ -8816,7 +8837,7 @@ accessibility infrastructure.") name "-" version ".tar.xz")) (sha256 (base32 - "05jqzlg0f1x53hyl0l9282ynmw37159g6dsbrid12b7sjs12cc1i")))) + "1q38n7hyshkiszmn361skxjynxr31lcms7a1iny6d0zlpmh1vnk4")))) (build-system glib-or-gtk-build-system) (arguments '(#:phases @@ -9023,7 +9044,7 @@ views can be printed as PDF or PostScript files, or exported to HTML.") ("python-gst" ,python-gst) ("python-pil" ,python-pillow) ("python-pycairo" ,python-pycairo) - ("python-pygobject" ,python-pygobject-3.34) + ("python-pygobject" ,python-pygobject) ("python-pylast" ,python-pylast) ("totem-pl-parser" ,totem-pl-parser) ("webkitgtk" ,webkitgtk))) @@ -9071,7 +9092,7 @@ photo-booth-like software, such as Cheese.") (define-public cheese (package (name "cheese") - (version "3.32.1") + (version "3.34.0") (source (origin (method url-fetch) (uri (string-append "mirror://gnome/sources/" name "/" @@ -9079,16 +9100,17 @@ photo-booth-like software, such as Cheese.") version ".tar.xz")) (sha256 (base32 - "1xlmsm4zsx05ahvpd4mgy1hfhxbag0r5i6p63bksjxdligdd36kv")))) + "0wvyc9wb0avrprvm529m42y5fkv3lirdphqydc9jw0c8mh05d1ni")))) (arguments - ;; Tests require GDK. - `(#:tests? #f + `(#:glib-or-gtk? #t + ;; Tests require GDK. + #:tests? #f #:phases (modify-phases %standard-phases - (add-before 'install 'skip-gtk-update-icon-cache + (add-after 'unpack 'skip-gtk-update-icon-cache (lambda _ ;; Don't create 'icon-theme.cache' - (substitute* "Makefile" + (substitute* "meson_post_install.py" (("gtk-update-icon-cache") (which "true"))) #t)) (add-after 'install 'wrap-cheese @@ -9098,12 +9120,15 @@ photo-booth-like software, such as Cheese.") (wrap-program (string-append out "/bin/cheese") `("GST_PLUGIN_SYSTEM_PATH" ":" prefix (,gst-plugin-path)))) #t))))) - (build-system glib-or-gtk-build-system) + (build-system meson-build-system) (native-inputs - `(("glib:bin" ,glib "bin") + `(("docbook-xsl" ,docbook-xsl) + ("glib:bin" ,glib "bin") + ("gtk-doc" ,gtk-doc) ("intltool" ,intltool) ("itstool" ,itstool) ("libxml2" ,libxml2) + ("libxslt" ,libxslt) ("pkg-config" ,pkg-config) ("vala" ,vala))) (propagated-inputs @@ -9320,7 +9345,7 @@ hexadecimal or ASCII. It is useful for editing binary files in general.") (define-public libdazzle (package (name "libdazzle") - (version "3.33.90") + (version "3.34.1") (source (origin (method url-fetch) (uri (string-append "mirror://gnome/sources/libdazzle/" @@ -9328,7 +9353,7 @@ hexadecimal or ASCII. It is useful for editing binary files in general.") "libdazzle-" version ".tar.xz")) (sha256 (base32 - "189m7q88d1a7bq0yyal9f3yhm9kz46lb61379nn4wsnnhpa1d0qs")))) + "01cmcrd75b7ns7j2b4p6h7pv68vjhkcl9zbvzzx7pf4vknxir61x")))) (build-system meson-build-system) (arguments `(#:phases @@ -9361,7 +9386,7 @@ generic enough to work for everyone.") (define-public evolution (package (name "evolution") - (version "3.32.4") + (version "3.34.2") (source (origin (method url-fetch) (uri (string-append "mirror://gnome/sources/evolution/" @@ -9369,7 +9394,7 @@ generic enough to work for everyone.") "evolution-" version ".tar.xz")) (sha256 (base32 - "00hmmg4hfns8rq9rcilmy0gi1xkksld27lfbd9zmw2xw37wjmbqh")))) + "164vy8h432pjglafn8y2ms4gsvk3kbgc63h5qp0mk5dv4smsp29c")))) (build-system cmake-build-system) (arguments `(#:imported-modules (,@%cmake-build-system-modules @@ -9409,10 +9434,9 @@ generic enough to work for everyone.") ("gsettings-desktop-schemas" ,gsettings-desktop-schemas) ("gnome-autoar" ,gnome-autoar) ("gnome-desktop" ,gnome-desktop) - ("gtkspell3" ,gtkspell3) + ("gspell" ,gspell) ("highlight" ,highlight) ("libcanberra" ,libcanberra) - ("libedataserverui" ,evolution-data-server) ("libgweather" ,libgweather) ("libnotify" ,libnotify) ("libsoup" ,libsoup) @@ -9468,7 +9492,7 @@ functionality.") ("clutter" ,clutter) ("clutter-gst" ,clutter-gst) ("clutter-gtk" ,clutter-gtk) - ("libjpeg" ,libjpeg) + ("libjpeg" ,libjpeg-turbo) ("libtiff" ,libtiff) ("libraw" ,libraw))) (home-page "https://wiki.gnome.org/Apps/Gthumb") diff --git a/gnu/packages/gnunet.scm b/gnu/packages/gnunet.scm index 9b030a2b52..1b7ea9246c 100644 --- a/gnu/packages/gnunet.scm +++ b/gnu/packages/gnunet.scm @@ -5,7 +5,7 @@ ;;; Copyright © 2015, 2017, 2019, 2020 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2016 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2016 Mark H Weaver <mhw@netris.org> -;;; Copyright © 2016, 2017, 2018, 2019 ng0 <ng0@n0.is> +;;; Copyright © 2016, 2017, 2018, 2019 Nikita <nikita@n0.is> ;;; Copyright © 2016, 2017, 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2018 Alex Vong <alexvong1995@gmail.com> ;;; Copyright © 2019 Brett Gilio <brettg@gnu.org> @@ -102,7 +102,7 @@ ("gtk+" ,gtk+) ("libarchive" ,libarchive) ("libgsf" ,libgsf) - ("libjpeg" ,libjpeg) + ("libjpeg" ,libjpeg-turbo) ("libltdl" ,libltdl) ("libmpeg2" ,libmpeg2) ("libmp4v2" ,libmp4v2) @@ -270,7 +270,7 @@ supports HTTP, HTTPS and GnuTLS.") ("libextractor" ,libextractor) ("libidn" ,libidn2) ("libgcrypt" ,libgcrypt) - ("libjpeg" ,libjpeg) + ("libjpeg" ,libjpeg-turbo) ("libltdl" ,libltdl) ("libmicrohttpd" ,libmicrohttpd) ("libogg" ,libogg) diff --git a/gnu/packages/gnupg.scm b/gnu/packages/gnupg.scm index 04bb705712..cf6f965b0d 100644 --- a/gnu/packages/gnupg.scm +++ b/gnu/packages/gnupg.scm @@ -7,7 +7,7 @@ ;;; Copyright © 2015, 2016, 2017, 2018, 2019, 2020 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2015, 2016, 2017, 2019 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2016 Christopher Allan Webber <cwebber@dustycloud.org> -;;; Copyright © 2016, 2017 ng0 <ng0@n0.is> +;;; Copyright © 2016, 2017 Nikita <nikita@n0.is> ;;; Copyright © 2016 Christopher Baines <mail@cbaines.net> ;;; Copyright © 2016 Mike Gerwitz <mtg@gnu.org> ;;; Copyright © 2016 Troy Sankey <sankeytms@gmail.com> @@ -16,6 +16,7 @@ ;;; Copyright © 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2018, 2019 Marius Bakke <mbakke@fastmail.com> ;;; Copyright © 2018 Björn Höfling <bjoern.hoefling@bjoernhoefling.de> +;;; Copyright © 2019 Mathieu Othacehe <m.othacehe@gmail.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -78,7 +79,7 @@ (define-public libgpg-error (package (name "libgpg-error") - (version "1.36") + (version "1.37") (source (origin (method url-fetch) @@ -86,17 +87,33 @@ version ".tar.bz2")) (sha256 (base32 - "0z696dmhfxm2n6pmr8b857wwljq9h633yi99bhbn7h88f91rigds")) - (patches (search-patches "libgpg-error-gawk-compat.patch")) - ;; XXX: Remove this snippet with the gawk patch above. It avoids having - ;; to call autoreconf for the Makefile.am change to take effect. - (modules '((guix build utils))) - (snippet - '(begin - (substitute* "src/Makefile.in" - (("namespace=errnos") "pkg_namespace=errnos")) - #t)))) + "0qwpx8mbc2l421a22l0l1hpzkip9jng06bbzgxwpkkvk5bvnybdk")))) (build-system gnu-build-system) + (arguments + (if (%current-target-system) + `(#:modules ((ice-9 match) + (guix build gnu-build-system) + (guix build utils)) + #:phases + (modify-phases %standard-phases + ;; When cross-compiling, some platform specific properties cannot + ;; be detected. Create a symlink to the appropriate platform + ;; file. See Cross-Compiling section at: + ;; https://github.com/gpg/libgpg-error/blob/master/README + (add-after 'unpack 'cross-symlinks + (lambda* (#:key target inputs #:allow-other-keys) + (let ((triplet + (match (string-take target + (string-index target #\-)) + ("armhf" "arm-unknown-linux-gnueabi") + (x + (string-append x "-unknown-linux-gnu"))))) + (symlink + (string-append "lock-obj-pub." triplet ".h") + "src/syscfg/lock-obj-pub.linux-gnu.h")) + #t)))) + '())) + (native-inputs `(("gettext" ,gettext-minimal))) (home-page "https://gnupg.org") (synopsis "Library of error values for GnuPG components") (description @@ -111,15 +128,14 @@ Daemon and possibly more in the future.") (define-public libgcrypt (package (name "libgcrypt") - (version "1.8.4") - (replacement libgcrypt-1.8.5) + (version "1.8.5") (source (origin (method url-fetch) (uri (string-append "mirror://gnupg/libgcrypt/libgcrypt-" version ".tar.bz2")) (sha256 (base32 - "09r27ywj9zplq6n9qw3mn7zmvf6y2jdmwx5d1kg8yqkj0qx18f7n")))) + "1hvsazms1bfd769q0ngl0r9g5i4m9mpz9jmvvrdzyzk3rfa2ljiv")))) (build-system gnu-build-system) (propagated-inputs `(("libgpg-error-host" ,libgpg-error))) @@ -132,7 +148,10 @@ Daemon and possibly more in the future.") ;; the 'gpg-error-config' it runs is the native one---i.e., the wrong one. `(#:configure-flags (list (string-append "--with-gpg-error-prefix=" - (assoc-ref %build-inputs "libgpg-error-host"))))) + (assoc-ref %build-inputs "libgpg-error-host")) + ;; When cross-compiling, _gcry_mpih_lshift etc are undefined + ,@(if (%current-target-system) '("--disable-asm") + '())))) (outputs '("out" "debug")) (home-page "https://gnupg.org/") (synopsis "Cryptographic function library") @@ -145,18 +164,6 @@ generation.") (properties '((ftp-server . "ftp.gnupg.org") (ftp-directory . "/gcrypt/libgcrypt"))))) -(define-public libgcrypt-1.8.5 - (package - (inherit libgcrypt) - (version "1.8.5") - (source (origin - (method url-fetch) - (uri (string-append "mirror://gnupg/libgcrypt/libgcrypt-" - version ".tar.bz2")) - (sha256 - (base32 - "1hvsazms1bfd769q0ngl0r9g5i4m9mpz9jmvvrdzyzk3rfa2ljiv")))))) - (define-public libassuan (package (name "libassuan") @@ -478,13 +485,28 @@ gpgpme starting with version 1.7.") "0n232iyayc46f7hywmjw0jr7pbmmz5h4b04jskhkzz9gxz0ci99c")) (file-name (git-file-name name version)))) (build-system gnu-build-system) + (arguments + ;; When cross-compiling, the bash script libgcrypt-config provided by + ;; libgcrypt must be accessible during configure phase. + `(,@(if (%current-target-system) + '(#:phases + (modify-phases %standard-phases + (add-before 'configure 'add-libgrypt-config + (lambda _ + (setenv "PATH" (string-append + (assoc-ref %build-inputs "libgcrypt") + "/bin:" + (getenv "PATH"))) + #t)))) + '()))) (native-inputs `(("pkg-config" ,pkg-config) ("autoconf" ,autoconf) ("automake" ,automake) - ("texinfo" ,texinfo))) + ("texinfo" ,texinfo) + ("guile" ,guile-3.0))) (inputs - `(("guile" ,guile-2.2) + `(("guile" ,guile-3.0) ("libgcrypt" ,libgcrypt))) (synopsis "Cryptography library for Guile using Libgcrypt") (description @@ -498,18 +520,27 @@ interface (FFI) of Guile.") (define-public guile2.0-gcrypt (package (inherit guile-gcrypt) (name "guile2.0-gcrypt") + (native-inputs + `(("guile" ,guile-2.0) + ,@(alist-delete "guile" (package-native-inputs guile-gcrypt)))) (inputs `(("guile" ,guile-2.0) ,@(alist-delete "guile" (package-inputs guile-gcrypt)))))) -(define-public guile3.0-gcrypt +(define-public guile2.2-gcrypt (package (inherit guile-gcrypt) - (name "guile3.0-gcrypt") + (name "guile2.2-gcrypt") + (native-inputs + `(("guile" ,guile-2.2) + ,@(alist-delete "guile" (package-native-inputs guile-gcrypt)))) (inputs - `(("guile" ,guile-next) + `(("guile" ,guile-2.2) ,@(alist-delete "guile" (package-inputs guile-gcrypt)))))) +(define-public guile3.0-gcrypt + (deprecated-package "guile3.0-gcrypt" guile-gcrypt)) + (define-public python-gpg (package (name "python-gpg") diff --git a/gnu/packages/gnustep.scm b/gnu/packages/gnustep.scm index e04755aa52..ce68fc77ed 100644 --- a/gnu/packages/gnustep.scm +++ b/gnu/packages/gnustep.scm @@ -139,7 +139,7 @@ to easily create cross-compiled binaries.") ("libx11" ,libx11) ("libxinerama" ,libxinerama) ("fontconfig" ,fontconfig) - ("libjpeg" ,libjpeg) + ("libjpeg" ,libjpeg-turbo) ("giflib" ,giflib) ("libpng" ,libpng) ("libtiff" ,libtiff))) diff --git a/gnu/packages/gnuzilla.scm b/gnu/packages/gnuzilla.scm index 06d855ee3e..8a926681e0 100644 --- a/gnu/packages/gnuzilla.scm +++ b/gnu/packages/gnuzilla.scm @@ -6,12 +6,14 @@ ;;; Copyright © 2016, 2017, 2018, 2019 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2016 Alex Griffin <a@ajgrf.com> ;;; Copyright © 2017 Clément Lassieur <clement@lassieur.org> -;;; Copyright © 2017 ng0 <ng0@n0.is> +;;; Copyright © 2017, 2018 Nikita <nikita@n0.is> ;;; Copyright © 2017, 2018, 2020 Tobias Geerinckx-Rice <me@tobias.gr> -;;; Copyright © 2018 Ricardo Wurmus <rekado@elephly.net> +;;; Copyright © 2018, 2020 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2019 Ivan Petkov <ivanppetkov@gmail.com> ;;; Copyright © 2020 Oleg Pykhalov <go.wigust@gmail.com> ;;; Copyright © 2020 Jakub Kądziołka <kuba@kadziolka.net> +;;; Copyright © 2019, 2020 Adrian Malacoda <malacoda@monarch-pass.net> +;;; Copyright © 2020 Jonathan Brielmaier <jonathan.brielmaier@web.de> ;;; ;;; This file is part of GNU Guix. ;;; @@ -554,8 +556,8 @@ from forcing GEXP-PROMISE." #:system system #:guile-for-build guile))) -(define %icecat-version "68.7.0-guix0-preview1") -(define %icecat-build-id "20200406000000") ;must be of the form YYYYMMDDhhmmss +(define %icecat-version "68.8.0-guix0-preview1") +(define %icecat-build-id "20200505000000") ;must be of the form YYYYMMDDhhmmss ;; 'icecat-source' is a "computed" origin that generates an IceCat tarball ;; from the corresponding upstream Firefox ESR tarball, using the 'makeicecat' @@ -577,11 +579,11 @@ from forcing GEXP-PROMISE." "firefox-" upstream-firefox-version ".source.tar.xz")) (sha256 (base32 - "0w3mad0r4khcd7hfmm3xix9x6mp5yp8g8kyh18vanfnjqdls0gmd")))) + "0hp8cc7xk6qj4q1s8n97qv9sdrypkzvphik96m5qv1r5s9k24nzs")))) - (upstream-icecat-base-version "68.7.0") ; maybe older than base-version + (upstream-icecat-base-version "68.8.0") ; maybe older than base-version ;;(gnuzilla-commit (string-append "v" upstream-icecat-base-version)) - (gnuzilla-commit "d185c5a67506311e19440fd4b824a822ce840369") + (gnuzilla-commit "5358ff2963a6136f8acafdc598cad540231ad23e") (gnuzilla-source (origin (method git-fetch) @@ -593,10 +595,12 @@ from forcing GEXP-PROMISE." (string-take gnuzilla-commit 8))) (sha256 (base32 - "09skws692qv5kbhj8bvy3prj7v0iyfz68xjck4vbfxkahldfppqx")))) + "1bq0qzgkxz9q61g48bc05i0zx1z8k0pklxnmn54ch136aqgsyli4")))) (makeicecat-patch - (local-file (search-patch "icecat-makeicecat.patch")))) + (local-file (search-patch "icecat-makeicecat.patch"))) + (gnuzilla-fixes-patch + (local-file (search-patch "icecat-use-older-reveal-hidden-html.patch")))) (origin (method computed-origin-method) @@ -642,6 +646,8 @@ from forcing GEXP-PROMISE." (make-file-writable "makeicecat") (invoke "patch" "--force" "--no-backup-if-mismatch" "-p1" "--input" #+makeicecat-patch) + (invoke "patch" "--force" "--no-backup-if-mismatch" + "-p1" "--input" #+gnuzilla-fixes-patch) (patch-shebang "makeicecat") (substitute* "makeicecat" (("^FFMAJOR=(.*)" all ffmajor) @@ -1016,20 +1022,6 @@ from forcing GEXP-PROMISE." (string-append name "\"" null-hash "\""))) (generate-all-checksums "third_party/rust")) #t)) - (add-before 'configure 'augment-CPLUS_INCLUDE_PATH - (lambda* (#:key build inputs #:allow-other-keys) - ;; Here, we add additional entries to CPLUS_INCLUDE_PATH, to work - ;; around a problem that otherwise occurs when attempting to - ;; build Stylo, which requires Rust and Clang. Without these - ;; additional entries, errors occur during the build indicating - ;; that the <cstddef> and "c++config.h" headers cannot be found. - ;; Note that the 'build' keyword argument contains the GNU - ;; triplet, e.g. "x86_64-unknown-linux-gnu". - (let ((gcc (assoc-ref inputs "gcc"))) - (setenv "CPLUS_INCLUDE_PATH" - (string-append gcc "/include/c++" ":" - gcc "/include/c++/" build))) - #t)) (replace 'configure ;; configure does not work followed by both "SHELL=..." and ;; "CONFIG_SHELL=..."; set environment variables instead @@ -1142,6 +1134,302 @@ standards of the IceCat project.") (cpe-name . "firefox_esr") (cpe-version . ,(first (string-split version #\-))))))) +;; Update this together with icecat! +(define %icedove-build-id "20200505000000") ;must be of the form YYYYMMDDhhmmss +(define-public icedove + (package + (name "icedove") + (version "68.8.0") + (source icecat-source) + (properties + `((cpe-name . "thunderbird_esr"))) + (build-system gnu-build-system) + (arguments + `(#:tests? #f ; no check target + #:imported-modules ,%cargo-utils-modules ;for `generate-all-checksums' + #:modules ((guix build utils) ;find-files + (sxml simple) + (ice-9 regex) + ,@%gnu-build-system-modules) + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'prepare-thunderbird-sources + (lambda* (#:key inputs #:allow-other-keys) + (mkdir "comm") + (copy-recursively (assoc-ref inputs "thunderbird-sources") + "comm") + (delete-file-recursively "obj-x86_64-pc-linux-gnu") + (delete-file "sourcestamp.txt") + #t)) + (add-after 'patch-source-shebangs 'patch-cargo-checksums + (lambda _ + (use-modules (guix build cargo-utils)) + (let ((null-hash "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855")) + (substitute* '("Cargo.lock" "gfx/wr/Cargo.lock") + (("(\"checksum .* = )\".*\"" all name) + (string-append name "\"" null-hash "\""))) + (generate-all-checksums "third_party/rust")) + #t)) + ;; Fixes issue where each installation directory generates its own profile. + ;; See e.g. https://trac.torproject.org/projects/tor/ticket/31457 + (add-after 'patch-source-shebangs 'fix-profile-setting + (lambda _ + (substitute* "comm/mail/moz.configure" + (("'MOZ_DEDICATED_PROFILES', True") + "'MOZ_DEDICATED_PROFILES', False")) + #t)) + (add-after 'prepare-thunderbird-sources 'rename-to-icedove + (lambda _ + (substitute* "comm/mail/confvars.sh" + (("MOZ_APP_BASENAME=Thunderbird") + "MOZ_APP_BASENAME=Icedove\nMOZ_APP_DISPLAYNAME=Icedove") + (("MOZ_APP_NAME=thunderbird") + "MOZ_APP_NAME=icedove") + (("MOZ_UPDATER=1") + "MOZ_UPDATER=0")) + ;; Remove branding to comply with Mozilla's trademark policy + (with-directory-excursion "comm/mail/branding/nightly" + (delete-file "content/about-wordmark.svg") + (call-with-output-file "content/about-wordmark.svg" + (lambda (port) + (sxml->xml '(svg (@ (xmlns "http://www.w3.org/2000/svg") + (viewBox "0 0 789.1 90.78") + (width "333") + (height "48") + (fill "#fff")) + (text (@ (x "400") (y "70") + (text-anchor "middle") + (font-size "90")) + "Icedove Daily")) + port))) + (substitute* '("locales/en-US/brand.properties" + "locales/en-US/brand.ftl" + "locales/en-US/brand.dtd" + "configure.sh") + (("Thunderbird") "Icedove") + (("mozilla.org") "guix.gnu.org"))) + ;; Remove other mentions of Thunderbird in user-visible text. + (with-directory-excursion "comm/mail/base/content" + (substitute* '("newInstallPage.xhtml" + "overrides/app-license-name.html" + "newInstall.xul") + (("Thunderbird") "Icedove"))) + (with-directory-excursion "comm/mail/components/" + (substitute* '("mailGlue.js" + "extensions/schemas/addressBook.json" + "extensions/schemas/tabs.json" + "extensions/schemas/cloudFile.json" + "extensions/schemas/chrome_settings_overrides.json" + "extensions/schemas/windows.json" + "extensions/parent/ext-mail.js" + "im/messages/mail/Info.plist" + "enterprisepolicies/moz.build" + "enterprisepolicies/helpers/moz.build" + "enterprisepolicies/schemas/moz.build" + "preferences/chat.inc.xul") + (("Thunderbird") "Icedove"))) + (substitute* "comm/calendar/lightning/lightning-packager.mk" + (("ifeq \\(thunderbird") + "ifeq (icedove")) + (substitute* '("comm/mailnews/base/prefs/content/accountUtils.js" + "comm/mailnews/extensions/newsblog/content/feed-subscriptions.js" + "comm/common/src/customizeToolbar.js") + (("AppConstants.MOZ_APP_NAME (.)= \"thunderbird" _ e) + (format #f "AppConstants.MOZ_APP_NAME ~a= \"icedove" e))) + + ;; Override addon URLs and settings + (substitute* "comm/mail/app/profile/all-thunderbird.js" + (("(pref\\(\"extensions.webservice.discoverURL\").*" _ m) + (string-append m ", \"https://directory.fsf.org/wiki/Icedove\");")) + (("(pref\\(\"extensions.getAddons.search.url\").*" _ m) + (string-append m ", \"https://guix.gnu.org/packages\");")) + (("(pref\\(\"extensions.update.enabled\").*" _ m) + (string-append m ", false);")) + (("(pref\\(\"extensions.systemAddon.update.enabled\").*" _ m) + (string-append m ", false);")) + (("(pref\\(\"lightweightThemes.update.enabled\").*" _ m) + (string-append m ", false);"))) + #t)) + (add-after 'build 'neutralize-store-references + (lambda _ + ;; Mangle the store references to compilers & other build tools in + ;; about:buildconfig, reducing Icedove's closure significant. + ;; The resulting files are saved in lib/thunderbird/omni.ja + (substitute* + ;; Use find because the path "obj-x86_64-pc-linux-gnu" contains + ;; the architecture and the system -> more complicated. + (find-files "." "buildconfig.html") + (((format #f "(~a/)([0-9a-df-np-sv-z]{32})" + (regexp-quote (%store-directory))) + _ store hash) + (string-append store + (string-take hash 8) + "<!-- Guix: not a runtime dependency -->" + (string-drop hash 8)))) + #t)) + (replace 'configure + (lambda* (#:key inputs outputs configure-flags #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (bash (which "bash")) + (abs-srcdir (getcwd)) + (srcdir (string-append "../" (basename abs-srcdir))) + (flags `(,(string-append "--prefix=" out) + ,@configure-flags)) + (mozconfig (string-append (getcwd) "/.mozconfig"))) + (setenv "SHELL" bash) + (setenv "AUTOCONF" + (string-append (assoc-ref %build-inputs + "autoconf") + "/bin/autoconf")) + (setenv "CONFIG_SHELL" bash) + (setenv "QA_CONFIGURE_OPTIONS" ".*") + (setenv "MOZBUILD_STATE_PATH" + (string-append (getcwd) "/mach_state")) + (setenv "MOZCONFIG" + (string-append (getcwd) "/.mozconfig")) + (setenv "CC" "gcc") + (setenv "MOZ_NOSPAM" "1") + (setenv "PYTHON" + (string-append (assoc-ref inputs "python2") + "/bin/python")) + (setenv "MOZ_BUILD_DATE" ,%icedove-build-id) ; avoid timestamp + (setenv "LDFLAGS" (string-append "-Wl,-rpath=" + (assoc-ref outputs "out") + "/lib/icedove")) + (mkdir-p (string-append (getcwd) "/builddir")) + (with-output-to-file mozconfig + (lambda () + (display + (string-append + "ac_add_options --disable-crashreporter\n" + "ac_add_options --disable-debug\n" + "ac_add_options --disable-debug-symbols\n" + "ac_add_options --disable-elf-hack\n" + "ac_add_options --disable-gconf\n" + "ac_add_options --disable-ion\n" + "ac_add_options --disable-necko-wifi\n" + "ac_add_options --disable-official-branding\n" + "ac_add_options --disable-tests\n" + "ac_add_options --disable-updater\n" + "ac_add_options --disable-webrtc\n" + "ac_add_options --enable-application=comm/mail\n" + "ac_add_options --enable-calendar\n" + "ac_add_options --enable-content-sandbox\n" + "ac_add_options --enable-default-toolkit=\"cairo-gtk3\"\n" + "ac_add_options --enable-optimize\n" + "ac_add_options --enable-pulseaudio\n" + "ac_add_options --enable-release\n" + "ac_add_options --enable-startup-notification\n" + "ac_add_options --enable-strip\n" + "ac_add_options --enable-system-ffi\n" + "ac_add_options --enable-system-pixman\n" + "ac_add_options --enable-system-sqlite\n" + "ac_add_options --prefix=" out "\n" + "ac_add_options --with-clang-path=" (assoc-ref %build-inputs "clang") "/bin/clang\n" + "ac_add_options --with-distribution-id=org.gnu\n" + "ac_add_options --with-libclang-path=" (assoc-ref %build-inputs "clang") "/lib\n" + "ac_add_options --with-system-bz2\n" + "ac_add_options --with-system-icu\n" + "ac_add_options --with-system-jpeg\n" + "ac_add_options --with-system-libevent\n" + "ac_add_options --with-system-nspr\n" + "ac_add_options --with-system-nss\n" + "ac_add_options --with-system-zlib\n" + "ac_add_options --with-user-appdir=\\.icedove\n")))) + (display (getcwd)) + (newline) + (display "mach configure") + (invoke "./mach" "configure")))) + (replace 'build + (lambda _ (invoke "./mach" "build"))) + (replace 'install + (lambda _ (invoke "./mach" "install"))) + (add-after 'install 'wrap-program + (lambda* (#:key inputs outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (lib (string-append out "/lib")) + (gtk (assoc-ref inputs "gtk+")) + (gtk-share (string-append gtk "/share")) + (pulseaudio (assoc-ref inputs "pulseaudio")) + (pulseaudio-lib (string-append pulseaudio "/lib"))) + (wrap-program (car (find-files lib "^icedove$")) + `("XDG_DATA_DIRS" prefix (,gtk-share)) + `("LD_LIBRARY_PATH" prefix (,pulseaudio-lib))) + #t)))))) + (inputs + `(("bzip2" ,bzip2) + ("cairo" ,cairo) + ("cups" ,cups) + ("dbus-glib" ,dbus-glib) + ("ffmpeg" ,ffmpeg) + ("freetype" ,freetype) + ("gdk-pixbuf" ,gdk-pixbuf) + ("glib" ,glib) + ("gtk+" ,gtk+) + ("gtk+-2" ,gtk+-2) + ("hunspell" ,hunspell) + ("icu4c" ,icu4c) + ("libcanberra" ,libcanberra) + ("libevent" ,libevent) + ("libffi" ,libffi) + ("libgnome" ,libgnome) + ("libjpeg-turbo" ,libjpeg-turbo) + ("libpng-apng" ,libpng-apng) + ("libvpx" ,libvpx) + ("libxcomposite" ,libxcomposite) + ("libxft" ,libxft) + ("libxinerama" ,libxinerama) + ("libxscrnsaver" ,libxscrnsaver) + ("libxt" ,libxt) + ("mesa" ,mesa) + ("mit-krb5" ,mit-krb5) + ("nspr" ,nspr) + ("nss" ,nss) + ("pango" ,pango) + ("pixman" ,pixman) + ("pulseaudio" ,pulseaudio) + ("sqlite" ,sqlite) + ("startup-notification" ,startup-notification) + ("unzip" ,unzip) + ("zip" ,zip) + ("zlib" ,zlib))) + (native-inputs + `(("thunderbird-sources" + ;; The changeset identifier is taken from the file "sourcestamp.txt" + ;; in the Thunderbird release tarball. We don't use the release + ;; tarball because it duplicates the Icecat sources and only adds the + ;; "comm" directory, which is provided by this repository. + ,(let ((changeset "4c022a34cd5dd776671721c44db89f693f59132c")) + (origin + (method hg-fetch) + (uri (hg-reference + (url "https://hg.mozilla.org/releases/comm-esr68") + (changeset changeset))) + (file-name (string-append "thunderbird-" version "-checkout")) + (sha256 + (base32 + "0k3653ic1g5pwcmf87a95lbzjah25l9qx0r49c4j04c21069fhad"))))) + ("autoconf" ,autoconf-2.13) + ("cargo" ,rust "cargo") + ("clang" ,clang) + ("llvm" ,llvm) + ("nasm" ,nasm) + ("node" ,node) + ("perl" ,perl) + ("pkg-config" ,pkg-config) + ("python" ,python) + ("python2" ,python-2.7) + ("rust" ,rust) + ("rust-cbindgen" ,rust-cbindgen) + ("which" ,which) + ("yasm" ,yasm))) + (home-page "https://www.thunderbird.net") + (synopsis "Rebranded Mozilla Thunderbird email client") + (description + "This package provides an email client built based on Mozilla +Thunderbird. It supports email, news feeds, chat, calendar and contacts.") + (license license:mpl2.0))) + (define-public firefox-decrypt (package (name "firefox-decrypt") diff --git a/gnu/packages/graph.scm b/gnu/packages/graph.scm index 436c18449d..a999b1cdfa 100644 --- a/gnu/packages/graph.scm +++ b/gnu/packages/graph.scm @@ -531,6 +531,8 @@ of graphs.") (base32 "08yw3maxhn5fl1lff81gmcrpa4j9aas4mmby1g9w5qcr0np82d1w")))) (build-system gnu-build-system) + (native-inputs + `(("pkg-config" ,pkg-config))) (inputs `(("gd" ,gd))) (home-page "http://www.mcternan.me.uk/mscgen/") diff --git a/gnu/packages/graphics.scm b/gnu/packages/graphics.scm index dd5041784c..664e3fab45 100644 --- a/gnu/packages/graphics.scm +++ b/gnu/packages/graphics.scm @@ -119,7 +119,7 @@ ("freetype" ,freetype) ("gl" ,mesa) ("glu" ,glu) - ("jpeg" ,libjpeg) + ("jpeg" ,libjpeg-turbo) ("png" ,libpng) ("tiff" ,libtiff) ("x11" ,libx11) @@ -172,11 +172,11 @@ objects!") "-DWITH_MOD_OCEANSIM=ON" "-DWITH_OPENSUBDIV=ON" "-DWITH_PYTHON_INSTALL=OFF" - (string-append "-DPYTHON_LIBRARY=python" ,python-version "m") + (string-append "-DPYTHON_LIBRARY=python" ,python-version) (string-append "-DPYTHON_LIBPATH=" (assoc-ref %build-inputs "python") "/lib") (string-append "-DPYTHON_INCLUDE_DIR=" (assoc-ref %build-inputs "python") - "/include/python" ,python-version "m") + "/include/python" ,python-version) (string-append "-DPYTHON_VERSION=" ,python-version) (string-append "-DPYTHON_NUMPY_PATH=" (assoc-ref %build-inputs "python-numpy") @@ -211,7 +211,7 @@ objects!") ("opensubdiv" ,opensubdiv) ("ilmbase" ,ilmbase) ("openjpeg" ,openjpeg) - ("libjpeg" ,libjpeg) + ("libjpeg" ,libjpeg-turbo) ("libpng" ,libpng) ("libtiff" ,libtiff) ("ffmpeg" ,ffmpeg) @@ -299,7 +299,7 @@ many more.") (define-public ilmbase (package (name "ilmbase") - (version "2.4.1") + (version "2.5.0") (source (origin (method git-fetch) (uri (git-reference @@ -308,9 +308,9 @@ many more.") (file-name (git-file-name "ilmbase" version)) (sha256 (base32 - "020gyl8zv83ag6gbcchmqiyx9rh2jca7j8n52zx1gk4rck7kwc01")) + "1k50cvi3sk6gf6w713lkk2gv5cvs74vkc7s7k4z6nmyhi4g89w4y")) (patches (search-patches "ilmbase-fix-tests.patch" - "ilmbase-openexr-pkg-config.patch")))) + "ilmbase-fix-test-arm.patch")))) (build-system cmake-build-system) (arguments `(#:phases (modify-phases %standard-phases @@ -426,10 +426,7 @@ graphics.") ;; https://github.com/openexr/openexr/issues/67#issuecomment-21169748 (lambda _ (substitute* "IlmImfTest/main.cpp" - ((".*testOptimizedInterleavePatterns.*") "") - ;; This test is broken in 2.4.0 and will be fixed in a later - ;; release: <https://github.com/openexr/openexr/issues/571>. - ((".*testLargeDataWindowOffsets.*") "")) + ((".*testOptimizedInterleavePatterns.*") "")) #t))) '())))) (native-inputs @@ -469,7 +466,7 @@ storage of the \"EXR\" file format for storing 16-bit floating-point images.") (inputs `(("boost" ,boost) ("libpng" ,libpng) - ("libjpeg" ,libjpeg) + ("libjpeg" ,libjpeg-turbo) ("libtiff" ,libtiff) ("giflib" ,giflib) ("openexr" ,openexr) @@ -485,22 +482,6 @@ visual effects work for film.") (home-page "https://www.openimageio.org") (license license:bsd-3))) -;; This older version of OpenImageIO is required for Blender 2.79. -(define-public openimageio-1.7 - (package - (inherit openimageio) - (name "openimageio") - (version "1.7.19") - (source (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/OpenImageIO/oiio.git") - (commit (string-append "Release-" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "0yxxy43l3lllw7maqg42dlkgqms2d4772sxzxk7kmxg4lnhsvndc")))))) - (define-public openscenegraph (package (name "openscenegraph") @@ -531,7 +512,7 @@ visual effects work for film.") ("unzip" ,unzip))) (inputs `(("giflib" ,giflib) - ("libjpeg" ,libjpeg) ; required by the JPEG texture plugin + ("libjpeg" ,libjpeg-turbo) ; required for the JPEG texture plugin. ("jasper" ,jasper) ("librsvg" ,librsvg) ("libxrandr" ,libxrandr) @@ -570,7 +551,7 @@ virtual reality, scientific visualization and modeling.") "-DCMAKE_CXX_FLAGS=-fpermissive" ,flags)))) (inputs - `(("libjpeg" ,libjpeg) + `(("libjpeg" ,libjpeg-turbo) ,@(package-inputs openscenegraph))))) @@ -635,7 +616,7 @@ virtual reality, scientific visualization and modeling.") ("pkg-config" ,pkg-config))) (inputs `(("boost" ,boost) - ("libjpeg" ,libjpeg) + ("libjpeg" ,libjpeg-turbo) ("libpng" ,libpng) ("libtiff" ,libtiff) ("openexr" ,openexr) @@ -987,7 +968,7 @@ your terminal.") `(("imagemagick" ,imagemagick) ("lcms" ,lcms) ("fbida" ,fbida) - ("libjpeg" ,libjpeg) + ("libjpeg" ,libjpeg-turbo) ("zip" ,zip) ("perl" ,perl) ("perl-cpanel-json-xs" ,perl-cpanel-json-xs) diff --git a/gnu/packages/graphviz.scm b/gnu/packages/graphviz.scm index 051089881a..1a1c2a0da9 100644 --- a/gnu/packages/graphviz.scm +++ b/gnu/packages/graphviz.scm @@ -57,15 +57,15 @@ (define-public graphviz (package (name "graphviz") - (version "2.40.1") + (version "2.42.3") (source (origin (method url-fetch) (uri (string-append - "http://www.graphviz.org/pub/graphviz/ARCHIVE/graphviz-" - version ".tar.gz")) + "https://www2.graphviz.org/Packages/stable/portable_source/" + "graphviz-" version ".tar.gz")) (sha256 (base32 - "08d4ygkxz2f553bxj6087da56a23kx1khv0j8ycxa102vvx1hlna")))) + "1pbswjbx3fjdlsxcm7cmlsl5bvaa3d6gcnr0cr8x3c8pag13zbwg")))) (build-system gnu-build-system) (arguments ;; FIXME: rtest/rtest.sh is a ksh script (!). Add ksh as an input. @@ -104,7 +104,7 @@ ("libltdl" ,libltdl) ("libXaw" ,libxaw) ("expat" ,expat) - ("libjpeg" ,libjpeg) + ("libjpeg" ,libjpeg-turbo) ("libpng" ,libpng))) (native-inputs `(("bison" ,bison) diff --git a/gnu/packages/groff.scm b/gnu/packages/groff.scm index 98f17914bf..5fe353a901 100644 --- a/gnu/packages/groff.scm +++ b/gnu/packages/groff.scm @@ -5,6 +5,7 @@ ;;; Copyright © 2017 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2019 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2019 Eric Bavier <bavier@member.fsf.org> +;;; Copyright © 2019 Mathieu Othacehe <m.othacehe@gmail.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -55,12 +56,28 @@ ;; from 'inputs'. (inputs `(("ghostscript" ,ghostscript))) - (native-inputs `(("bison" ,bison) + + ;; When cross-compiling, this package depends upon a native install of + ;; itself. + (native-inputs `(,@(if (%current-target-system) + `(("self" ,this-package)) + '()) + ("bison" ,bison) ("perl" ,perl) ("psutils" ,psutils) ("texinfo" ,texinfo))) (arguments `(#:parallel-build? #f ; parallel build fails + ,@(if (%current-target-system) + `(#:make-flags + ;; In groff-minimal package, that inherits from this package, + ;; we'll need to locate "groff" instead of "self". + (let ((groff (or (assoc-ref %build-host-inputs "groff") + (assoc-ref %build-host-inputs "self")))) + (list + (string-append "GROFF_BIN_PATH=" groff) + (string-append "GROFFBIN=" groff "/bin/groff")))) + '()) #:phases (modify-phases %standard-phases (add-after 'unpack 'disable-relocatability @@ -115,7 +132,8 @@ is usually the formatter of \"man\" documentation pages.") ;; Omit the DVI, PS, PDF, and HTML backends. (inputs '()) (native-inputs `(("bison" ,bison) - ("perl" ,perl))) + ("perl" ,perl) + ("groff" ,groff))) (arguments `(#:disallowed-references (,perl) diff --git a/gnu/packages/gsasl.scm b/gnu/packages/gsasl.scm index a796f9aa82..98acc3c756 100644 --- a/gnu/packages/gsasl.scm +++ b/gnu/packages/gsasl.scm @@ -35,14 +35,14 @@ (define-public libntlm (package (name "libntlm") - (version "1.5") + (version "1.6") (source (origin (method url-fetch) (uri (string-append "https://www.nongnu.org/libntlm/releases/" "libntlm-" version ".tar.gz")) (sha256 (base32 - "1gcvv7f9rggpxay81qv6kw5hr6gd4qiyzkbwhzz02fx9jvv9kmsk")))) + "08b83nss16jsn213j326yhn1vnrz10k15fwq6jm5b1vdn23nndzj")))) (build-system gnu-build-system) (synopsis "Library that implements NTLM authentication") (description diff --git a/gnu/packages/gstreamer.scm b/gnu/packages/gstreamer.scm index 0709d8568b..7596796d68 100644 --- a/gnu/packages/gstreamer.scm +++ b/gnu/packages/gstreamer.scm @@ -265,7 +265,7 @@ for the GStreamer multimedia library.") ("libcaca" ,libcaca) ("libdv" ,libdv) ("libiec61883" ,libiec61883) - ("libjpeg" ,libjpeg) + ("libjpeg" ,libjpeg-turbo) ("libpng" ,libpng) ("libshout" ,libshout) ("libsoup" ,libsoup) @@ -521,7 +521,9 @@ non-linear editors.") "gst-python-" version ".tar.xz")) (sha256 (base32 - "1a48ca66izmm8hnp608jv5isg3jxb0vlfmhns0bg9nbkilag7390")))) + "1a48ca66izmm8hnp608jv5isg3jxb0vlfmhns0bg9nbkilag7390")) + (patches + (search-patches "python-gst-fix-build-with-python-3.8.patch")))) (build-system meson-build-system) (arguments `(#:modules ((guix build meson-build-system) diff --git a/gnu/packages/gtk.scm b/gnu/packages/gtk.scm index bea4850d15..3e2cb30246 100644 --- a/gnu/packages/gtk.scm +++ b/gnu/packages/gtk.scm @@ -13,12 +13,12 @@ ;;; Copyright © 2016 Fabian Harfert <fhmgufs@web.de> ;;; Copyright © 2016 Kei Kebreau <kkebreau@posteo.net> ;;; Copyright © 2016 Patrick Hetu <patrick.hetu@auf.org> -;;; Copyright © 2016 ng0 <ng0@n0.is> +;;; Copyright © 2016 Nikita <nikita@n0.is> ;;; Copyright © 2017 Roel Janssen <roel@gnu.org> ;;; Copyright © 2017, 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr> -;;; Copyright © 2017 Marius Bakke <mbakke@fastmail.com> +;;; Copyright © 2017, 2019, 2020 Marius Bakke <mbakke@fastmail.com> ;;; Copyright © 2018 Alex Vong <alexvong1995@gmail.com> -;;; Copyright © 2018 Arun Isaac <arunisaac@systemreboot.net> +;;; Copyright © 2018, 2020 Arun Isaac <arunisaac@systemreboot.net> ;;; Copyright © 2018 Pierre Neidhardt <mail@ambrevar.xyz> ;;; Copyright © 2019 Meiyo Peng <meiyo@riseup.net> ;;; Copyright © 2019 Giacomo Leidi <goodoldpaul@autistici.org> @@ -148,7 +148,9 @@ tools have full access to view and control running applications.") ("python" ,python-wrapper))) (arguments `(#:tests? #f ; see http://lists.gnu.org/archive/html/bug-guix/2013-06/msg00085.html - #:configure-flags '("--enable-tee"))) ; needed for GNU Icecat + #:configure-flags '("--enable-tee" ;needed for GNU Icecat + "--enable-xml" ;for cairo-xml support + "--disable-static"))) (synopsis "2D graphics library") (description "Cairo is a 2D graphics library with support for multiple output devices. @@ -184,7 +186,7 @@ affine transformation (scale, rotation, shear, etc.).") (define-public harfbuzz (package (name "harfbuzz") - (version "2.5.3") + (version "2.6.4") (source (origin (method url-fetch) (uri (string-append "https://www.freedesktop.org/software/" @@ -192,7 +194,7 @@ affine transformation (scale, rotation, shear, etc.).") version ".tar.xz")) (sha256 (base32 - "0p45xk5bblsw8lfs7y7z80b4rvda9f2hlpr28flkrfmpjz3hvl7y")))) + "04iwq13w6zkdhljmsxrzgg4fyh04qnwfn57rgrl9kmijc7cvh4wl")))) (build-system gnu-build-system) (outputs '("out" "bin")) ; 160K, only hb-view depend on cairo @@ -224,16 +226,28 @@ affine transformation (scale, rotation, shear, etc.).") (define-public pango (package (name "pango") - (version "1.42.4") + (version "1.44.7") (source (origin (method url-fetch) (uri (string-append "mirror://gnome/sources/pango/" (version-major+minor version) "/" name "-" version ".tar.xz")) + (patches (search-patches "pango-skip-libthai-test.patch")) (sha256 (base32 - "17bwb7dgbncrfsmchlib03k9n3xaalirb39g3yb43gg8cg6p8aqx")))) - (build-system gnu-build-system) + "07qvxa2sk90chp1l12han6vxvy098mc37sdqcznyywyv2g6bd9b6")))) + (build-system meson-build-system) + (arguments + '(#:phases (modify-phases %standard-phases + (add-after 'unpack 'disable-cantarell-tests + (lambda _ + (substitute* "tests/meson.build" + ;; XXX FIXME: These tests require "font-cantarell", but + ;; adding it here would introduce a circular dependency. + (("\\[ 'test-harfbuzz'.*") "") + (("\\[ 'test-itemize'.*") "") + (("\\[ 'test-layout'.*") "")) + #t))))) (propagated-inputs ;; These are all in Requires or Requires.private of the '.pc' files. `(("cairo" ,cairo) @@ -241,13 +255,13 @@ affine transformation (scale, rotation, shear, etc.).") ("fontconfig" ,fontconfig) ("freetype" ,freetype) ("glib" ,glib) - ("harfbuzz" ,harfbuzz))) - (inputs - `(("zlib" ,zlib) + ("harfbuzz" ,harfbuzz) ;; Some packages, such as Openbox, expect Pango to be built with the ;; optional libxft support. ("libxft" ,libxft))) + (inputs + `(("zlib" ,zlib))) (native-inputs `(("pkg-config" ,pkg-config) ("glib" ,glib "bin") ; glib-mkenums, etc. @@ -260,6 +274,21 @@ used throughout the world.") (license license:lgpl2.0+) (home-page "https://developer.gnome.org/pango/"))) +(define-public pango-1.42 + (package + (inherit pango) + (version "1.42.4") + (source (origin + (method url-fetch) + (uri (string-append "mirror://gnome/sources/pango/" + (version-major+minor version) "/" + "pango-" version ".tar.xz")) + (sha256 + (base32 + "17bwb7dgbncrfsmchlib03k9n3xaalirb39g3yb43gg8cg6p8aqx")))) + (build-system gnu-build-system) + (arguments '()))) + (define-public pangox-compat (package (name "pangox-compat") @@ -275,7 +304,7 @@ used throughout the world.") (build-system gnu-build-system) (inputs `(("glib" ,glib) - ("pango" ,pango))) + ("pango" ,pango-1.42))) (native-inputs `(("intltool" ,intltool) ("pkg-config" ,pkg-config))) @@ -506,7 +535,7 @@ highlighting and other features typical of a source code editor.") ;; Used for testing and required at runtime. ("shared-mime-info" ,shared-mime-info))) (inputs - `(("libjpeg" ,libjpeg) + `(("libjpeg" ,libjpeg-turbo) ("libtiff" ,libtiff) ("libx11" ,libx11))) (native-inputs @@ -609,10 +638,10 @@ in the GNOME project.") ("libxi" ,libxi) ("libxtst" ,libxtst))) (native-inputs - `(("gobject-introspection" ,gobject-introspection) + `(("gettext" ,gettext-minimal) + ("gobject-introspection" ,gobject-introspection) ("gtk-doc" ,gtk-doc) ("glib" ,glib "bin") - ("intltool" ,intltool) ("pkg-config" ,pkg-config))) (synopsis "Assistive Technology Service Provider Interface, core components") (description @@ -674,7 +703,7 @@ is part of the GNOME accessibility project.") "gtk2-respect-GUIX_GTK2_IM_MODULE_FILE.patch" "gtk2-theme-paths.patch")))) (build-system gnu-build-system) - (outputs '("out" "doc")) + (outputs '("out" "bin" "doc")) (propagated-inputs `(("atk" ,atk) ("gdk-pixbuf" ,gdk-pixbuf+svg) @@ -701,14 +730,19 @@ is part of the GNOME accessibility project.") (assoc-ref %outputs "doc") "/share/gtk-doc/html")) #:phases - (alist-cons-before - 'configure 'disable-tests - (lambda _ - ;; FIXME: re-enable tests requiring an X server - (substitute* "gtk/Makefile.in" - (("SUBDIRS = theme-bits . tests") "SUBDIRS = theme-bits .")) - #t) - %standard-phases))) + (modify-phases %standard-phases + (add-before 'configure 'disable-tests + (lambda _ + ;; FIXME: re-enable tests requiring an X server + (substitute* "gtk/Makefile.in" + (("SUBDIRS = theme-bits . tests") "SUBDIRS = theme-bits .")) + #t)) + (add-after 'install 'remove-cache + (lambda* (#:key outputs #:allow-other-keys) + (for-each + delete-file + (find-files (assoc-ref outputs "out") "immodules.cache")) + #t))))) (native-search-paths (list (search-path-specification (variable "GUIX_GTK2_PATH") @@ -736,7 +770,6 @@ application suites.") "120yz5gxqbv7sgdbcy4i0b6ixm8jpjzialdrqs0gv15q7bwnjk8w")) (patches (search-patches "gtk3-respect-GUIX_GTK3_PATH.patch" "gtk3-respect-GUIX_GTK3_IM_MODULE_FILE.patch")))) - (outputs '("out" "bin" "doc")) (propagated-inputs `(("at-spi2-atk" ,at-spi2-atk) ("atk" ,atk) @@ -844,10 +877,14 @@ application suites.") "#include <libguile.h>\n#include <string.h>\n")) #t))))) (build-system gnu-build-system) + (arguments + ;; Uses of 'scm_t_uint8' & co. are deprecated; don't stop the build + ;; because of them. + '(#:configure-flags '("--disable-Werror"))) (inputs `(("guile-lib" ,guile-lib) ("expat" ,expat) - ("guile" ,guile-2.2))) + ("guile" ,guile-3.0))) (propagated-inputs ;; The .pc file refers to 'cairo'. `(("cairo" ,cairo))) @@ -864,22 +901,19 @@ graphics library with all of the benefits of Scheme: memory management, exceptions, macros, and a dynamic programming environment.") (license license:lgpl3+))) -(define-public guile3.0-cairo +(define-public guile2.2-cairo (package (inherit guile-cairo) - (name "guile3.0-cairo") - (arguments - (substitute-keyword-arguments (package-arguments guile-cairo) - ((#:configure-flags flags ''()) - ;; Uses of 'scm_t_uint8' & co. are deprecated; don't stop the build - ;; because of them. - `(cons "--disable-Werror" ,flags)))) + (name "guile2.2-cairo") (inputs - `(("guile" ,guile-3.0) - ("guile-lib" ,guile3.0-lib) + `(("guile" ,guile-2.2) + ("guile-lib" ,guile2.2-lib) ,@(fold alist-delete (package-inputs guile-cairo) '("guile" "guile-lib")))))) +(define-public guile3.0-cairo + (deprecated-package "guile3.0-cairo" guile-cairo)) + (define-public guile-rsvg ;; Use a recent snapshot that supports Guile 2.2 and beyond. (let ((commit "05c6a2fd67e4fea1a7c3ff776729dc931bae6678") @@ -916,7 +950,7 @@ exceptions, macros, and a dynamic programming environment.") ("automake" ,automake) ("libtool" ,libtool) ("texinfo" ,texinfo))) - (inputs `(("guile" ,guile-2.2) + (inputs `(("guile" ,guile-3.0) ("librsvg" ,librsvg) ("guile-lib" ,guile-lib))) ;for (unit-test) (propagated-inputs `(("guile-cairo" ,guile-cairo))) @@ -927,16 +961,19 @@ images onto Cairo surfaces.") (home-page "https://wingolog.org/projects/guile-rsvg/") (license license:lgpl2.1+)))) -(define-public guile3.0-rsvg +(define-public guile2.2-rsvg (package (inherit guile-rsvg) - (name "guile3.0-rsvg") + (name "guile2.2-rsvg") (inputs - `(("guile" ,guile-3.0) - ("guile-lib" ,guile3.0-lib) + `(("guile" ,guile-2.2) + ("guile-lib" ,guile2.2-lib) ,@(fold alist-delete (package-inputs guile-rsvg) '("guile" "guile-lib")))) - (propagated-inputs `(("guile-cairo" ,guile3.0-cairo))))) + (propagated-inputs `(("guile-cairo" ,guile2.2-cairo))))) + +(define-public guile3.0-rsvg + (deprecated-package "guile3.0-rsvg" guile-rsvg)) (define-public guile-present (package @@ -982,7 +1019,7 @@ images onto Cairo surfaces.") out "/lib/guile/" version "/site-ccache ")))) #t))))) (native-inputs `(("pkg-config" ,pkg-config))) - (inputs `(("guile" ,guile-2.2))) + (inputs `(("guile" ,guile-3.0))) (propagated-inputs ;; These are used by the (present …) modules. `(("guile-lib" ,guile-lib) @@ -998,15 +1035,18 @@ includes a tools to generate PDF presentations out of Org mode and Texinfo documents.") (license license:lgpl3+))) -(define-public guile3.0-present +(define-public guile2.2-present (package (inherit guile-present) - (name "guile3.0-present") - (inputs `(("guile" ,guile-3.0))) + (name "guile2.2-present") + (inputs `(("guile" ,guile-2.2))) (propagated-inputs - `(("guile-lib" ,guile3.0-lib) - ("guile-cairo" ,guile3.0-cairo) - ("guile-rsvg" ,guile3.0-rsvg))))) + `(("guile-lib" ,guile2.2-lib) + ("guile-cairo" ,guile2.2-cairo) + ("guile-rsvg" ,guile2.2-rsvg))))) + +(define-public guile3.0-present + (deprecated-package "guile3.0-present" guile-present)) (define-public guile-gnome (package @@ -1041,9 +1081,9 @@ documents.") ("glib" ,glib))) (inputs `(("guile" ,guile-2.2))) (propagated-inputs - `(("guile-cairo" ,guile-cairo) + `(("guile-cairo" ,guile2.2-cairo) ("g-wrap" ,g-wrap) - ("guile-lib" ,guile-lib))) + ("guile-lib" ,guile2.2-lib))) (arguments `(#:tests? #f ;FIXME #:phases (modify-phases %standard-phases @@ -1248,7 +1288,7 @@ printing and other features typical of a source code editor.") (define-public python-pycairo (package (name "python-pycairo") - (version "1.17.1") + (version "1.19.0") (source (origin (method url-fetch) @@ -1256,7 +1296,7 @@ printing and other features typical of a source code editor.") version "/pycairo-" version ".tar.gz")) (sha256 (base32 - "165n0g7gp2a0qi8558snvfans17x83jv2lv7bx4vr1rxjbn3a2hg")))) + "176i283glkpycka8wwyndwld0zp1yn9xj9rpvllqgja698vsjnsg")))) (build-system python-build-system) (native-inputs `(("pkg-config" ,pkg-config) @@ -1270,14 +1310,21 @@ printing and other features typical of a source code editor.") (license license:lgpl3+) (properties `((python2-variant . ,(delay python2-pycairo)))))) +;; Pycairo no longer supports Python 2 since version 1.19.0, so we stick +;; with this older version here. (define-public python2-pycairo (let ((pycairo (package-with-python2 (strip-python2-variant python-pycairo)))) (package (inherit pycairo) - (propagated-inputs - `(("python2-funcsigs" ,python2-funcsigs) - ,@(package-propagated-inputs pycairo))) + (version "1.18.2") + (source (origin + (method url-fetch) + (uri (string-append "https://github.com/pygobject/pycairo/releases" + "/download/v" version "/pycairo-" version ".tar.gz")) + (sha256 + (base32 + "0cb5n4r4nl0k1g90b1gz9iyk4lp7hi03db98i1p52a870bym7f6w")))) ;; Dual-licensed under LGPL 2.1 or Mozilla Public License 1.1 (license (list license:lgpl2.1 license:mpl1.1))))) @@ -1301,6 +1348,11 @@ printing and other features typical of a source code editor.") `(("pkg-config" ,pkg-config))) (inputs `(("python" ,python-2) + + ;; XXX: The package fails to build with the latest Pango (propagated + ;; from GTK+2), so we provide it with this older version. + ("pango" ,pango-1.42) + ("libglade" ,libglade) ("glib" ,glib))) (propagated-inputs @@ -1862,6 +1914,14 @@ shell scripts. Example of how to use @code{yad} can be consulted at "/lib/girepository-1.0")) #:phases (modify-phases %standard-phases + (add-before 'configure 'do-not-treat-warnings-as-errors + (lambda _ + ;; Prevent the build from failing due to deprecation warnings + ;; from newer GLib and GTK versions. + (substitute* (find-files "." "^Makefile.in$") + ((" -Werror") + "")) + #t)) (add-before 'configure 'set-environment (lambda _ (setenv "HAVE_VALGRIND_TRUE" "") @@ -1961,3 +2021,79 @@ popovers.") library for drawing.") (home-page "https://wiki.gnome.org/GooCanvas") (license license:lgpl2.0))) + +(define-public gtksheet + (package + (name "gtksheet") + (version "4.3.4") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/fpaquet/gtksheet") + (commit (string-append "V" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "10qzmdkjkkvkcadxn019cbyhwaahxcfv1apv54lc711bqvh63v8r")))) + (build-system gnu-build-system) + (arguments + `(#:configure-flags (list "--enable-glade" + "--enable-introspection") + #:phases + (modify-phases %standard-phases + ;; The "configure" script is present, but otherwise the project is + ;; not bootstrapped properly. Delete configure so the bootstrap phase + ;; will take over. + (add-after 'unpack 'delete-configure + (lambda _ + (delete-file "configure") + #t)) + ;; Fix glade install directories. + (add-before 'bootstrap 'configure-glade-directories + (lambda* (#:key outputs #:allow-other-keys) + (substitute* "configure.ac" + (("`\\$PKG_CONFIG --variable=catalogdir gladeui-2.0`") + (string-append (assoc-ref outputs "out") "/share/glade/catalogs")) + (("`\\$PKG_CONFIG --variable=moduledir gladeui-2.0`") + (string-append (assoc-ref outputs "out") "/lib/glade/modules")) + (("`\\$PKG_CONFIG --variable=pixmapdir gladeui-2.0`") + (string-append (assoc-ref outputs "out") "/share/pixmaps"))) + #t)) + ;; Fix incorrect typelib version. This is a known upstream bug. See + ;; https://github.com/fpaquet/gtksheet/issues/23 + (add-after 'install 'fix-typelib-version + (lambda* (#:key outputs #:allow-other-keys) + (with-directory-excursion (string-append (assoc-ref outputs "out") + "/lib/girepository-1.0") + (rename-file "GtkSheet-4.0.typelib" + (string-append "GtkSheet-" ,version ".typelib"))) + #t))))) + (inputs + `(("glade" ,glade3) + ("glib" ,glib) + ("gtk+" ,gtk+) + ("libxml2" ,libxml2))) + (native-inputs + `(("autoconf" ,autoconf) + ("automake" ,automake) + ("gobject-introspection" ,gobject-introspection) + ("libtool" ,libtool) + ("pkg-config" ,pkg-config))) + (home-page "https://fpaquet.github.io/gtksheet/") + (synopsis "Spreadsheet widget for GTK+") + (description "GtkSheet is a matrix widget for GTK+. It consists of an +scrollable grid of cells where you can allocate text. Cell contents can be +edited interactively through a specially designed entry, GtkItemEntry. It is +also a container subclass, allowing you to display buttons, images and any +other widget in it. You can also set many attributes such as border, +foreground and background colors, text justification and more.") + (native-search-paths + (list + (search-path-specification + (variable "GLADE_CATALOG_SEARCH_PATH") + (files '("share/glade/catalogs"))) + (search-path-specification + (variable "GLADE_MODULE_SEARCH_PATH") + (files '("lib/glade/modules"))))) + (license license:lgpl2.0+))) diff --git a/gnu/packages/guile-wm.scm b/gnu/packages/guile-wm.scm index 622fc560d9..e2c1bd432b 100644 --- a/gnu/packages/guile-wm.scm +++ b/gnu/packages/guile-wm.scm @@ -2,7 +2,8 @@ ;;; Copyright © 2013, 2014 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2016 Alex ter Weele <alex.ter.weele@gmail.com> ;;; Copyright © 2017, 2019 Ricardo Wurmus <rekado@elephly.net> -;;; Copyright © 2017 ng0 <ng0@n0.is> +;;; Copyright © 2017 Nikita <nikita@n0.is> +;;; Copyright © 2019 Pierre-Moana Levesque <pierre.moana.levesque@gmail.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -57,7 +58,8 @@ "--with-guile-site-ccache-dir=" (assoc-ref %outputs "out") "/lib/guile/2.2/site-ccache")))) - (native-inputs `(("pkg-config" ,pkg-config) + (native-inputs `(("guile" ,guile-2.2) + ("pkg-config" ,pkg-config) ("texinfo" ,texinfo))) (inputs `(("guile" ,guile-2.2) ("xcb" ,xcb-proto))) diff --git a/gnu/packages/guile-xyz.scm b/gnu/packages/guile-xyz.scm index 6ec1c4c2fc..d7f52b08f4 100644 --- a/gnu/packages/guile-xyz.scm +++ b/gnu/packages/guile-xyz.scm @@ -14,7 +14,7 @@ ;;; Copyright © 2017 David Thompson <davet@gnu.org> ;;; Copyright © 2017, 2018, 2019, 2020 Mathieu Othacehe <m.othacehe@gmail.com> ;;; Copyright © 2017 Theodoros Foradis <theodoros@foradis.org> -;;; Copyright © 2017 ng0 <ng0@n0.is> +;;; Copyright © 2017 Nikita <nikita@n0.is> ;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2018 Maxim Cournoyer <maxim.cournoyer@gmail.com> ;;; Copyright © 2018, 2019, 2020 Arun Isaac <arunisaac@systemreboot.net> @@ -23,7 +23,7 @@ ;;; Copyright © 2019 swedebugia <swedebugia@riseup.net> ;;; Copyright © 2019, 2020 Amar Singh <nly@disroot.org> ;;; Copyright © 2019 Timothy Sample <samplet@ngyro.com> -;;; Copyright © 2019 Martin Becze <mjbecze@riseup.net> +;;; Copyright © 2019, 2020 Martin Becze <mjbecze@riseup.net> ;;; Copyright © 2020 Evan Straw <evan.straw99@gmail.com> ;;; ;;; This file is part of GNU Guix. @@ -153,7 +153,7 @@ ;; TODO: Add guile-dbi and guile-dbd optional dependencies. (propagated-inputs `(("guile-json" ,guile-json-1) - ("guile-readline" ,guile-readline) + ("guile-readline" ,guile2.2-readline) ("guile-redis" ,guile-redis))) (native-inputs `(("bash" ,bash) ;for the `source' builtin @@ -448,16 +448,16 @@ you send to a FIFO file.") (define-public guile-dsv (package (name "guile-dsv") - (version "0.2.1") + (version "0.3.0") (source (origin (method git-fetch) (uri (git-reference (url "https://github.com/artyom-poptsov/guile-dsv") - (commit "bdc5267d007478abc20ea96d7c459b7dd9560b3d"))) + (commit "6c867915dc4198eacc548a4834ef0e1aef852795"))) (file-name (string-append name "-" version "-checkout")) (sha256 (base32 - "1irw6mz8998nwyhzrw9g94jcz60b9zljgqfmipaz1ybn8579qjx0")))) + "1mxbbcsmbjfnh4yydqz44ihbkdnzdwz38xanaam128arlb7hwr8n")))) (build-system gnu-build-system) (native-inputs `(("autoconf" ,autoconf) @@ -465,7 +465,7 @@ you send to a FIFO file.") ("pkg-config" ,pkg-config) ("texinfo" ,texinfo))) (inputs `(("guile" ,guile-2.2))) - (propagated-inputs `(("guile-lib" ,guile-lib))) + (propagated-inputs `(("guile2.2-lib" ,guile2.2-lib))) (arguments '(#:phases (modify-phases %standard-phases (add-before 'configure 'set-guilesitedir @@ -526,7 +526,9 @@ Unix-style DSV format and RFC 4180 format.") #t)))) (build-system gnu-build-system) (arguments - '(#:phases (modify-phases %standard-phases + '(;; The code uses 'scm_t_uint64' et al., which are deprecated in 3.0. + #:configure-flags '("CFLAGS=-Wno-error=deprecated-declarations") + #:phases (modify-phases %standard-phases (add-after 'install 'mode-guile-objects (lambda* (#:key outputs #:allow-other-keys) ;; .go files are installed to "lib/guile/X.Y/cache". @@ -543,7 +545,7 @@ Unix-style DSV format and RFC 4180 format.") `(("texinfo" ,texinfo) ("pkg-config" ,pkg-config))) (inputs - `(("guile" ,guile-2.2))) + `(("guile" ,guile-3.0))) (synopsis "Lightweight concurrency facility for Guile") (description "Fibers is a Guile library that implements a a lightweight concurrency @@ -559,15 +561,14 @@ is not available for Guile 2.0.") (home-page "https://github.com/wingo/fibers") (license license:lgpl3+))) -(define-public guile3.0-fibers +(define-public guile2.0-fibers (package (inherit guile-fibers) - (name "guile3.0-fibers") - (arguments - ;; The code uses 'scm_t_uint64' et al., which are deprecated in 3.0. - `(#:configure-flags '("CFLAGS=-Wno-error=deprecated-declarations") - ,@(package-arguments guile-fibers))) - (inputs `(("guile" ,guile-3.0))))) + (name "guile2.2-fibers") + (inputs `(("guile" ,guile-2.2))))) + +(define-public guile3.0-fibers + (deprecated-package "guile3.0-fibers" guile-fibers)) (define-public guile-syntax-highlight (package @@ -594,7 +595,7 @@ is not available for Guile 2.0.") (native-inputs `(("pkg-config" ,pkg-config))) (inputs - `(("guile" ,guile-2.2))) + `(("guile" ,guile-3.0))) (synopsis "General-purpose syntax highlighter for GNU Guile") (description "Guile-syntax-highlight is a general-purpose syntax highlighting library for GNU Guile. It can parse code written in various @@ -603,11 +604,14 @@ HTML (via SXML) or any other format for rendering.") (home-page "https://dthompson.us/projects/guile-syntax-highlight.html") (license license:lgpl3+))) -(define-public guile3.0-syntax-highlight +(define-public guile2.2-syntax-highlight (package (inherit guile-syntax-highlight) - (name "guile3.0-syntax-highlight") - (inputs `(("guile" ,guile-3.0))))) + (name "guile2.2-syntax-highlight") + (inputs `(("guile" ,guile-2.2))))) + +(define-public guile3.0-syntax-highlight + (deprecated-package "guile3.0-syntax-highlight" guile-syntax-highlight)) (define-public guile-sjson (package @@ -619,20 +623,34 @@ HTML (via SXML) or any other format for rendering.") ".tar.gz")) (sha256 (base32 - "1mzmapln79vv10qxaggz9qwcdbag3jnrj19xx8bgkmxss8h03sv3")))) + "1mzmapln79vv10qxaggz9qwcdbag3jnrj19xx8bgkmxss8h03sv3")) + (modules '((guix build utils))) + (snippet + '(begin + ;; Allow builds with Guile 3.0. + (substitute* "configure" + (("2\\.2 2\\.0") + "3.0 2.2 2.0")) + #t)))) (build-system gnu-build-system) (native-inputs `(("autoconf" ,autoconf) ("automake" ,automake) ("pkg-config" ,pkg-config))) (inputs - `(("guile" ,guile-2.2))) + `(("guile" ,guile-3.0))) (home-page "https://gitlab.com/dustyweb/guile-sjson") (synopsis "S-expression based json reader/writer for Guile") (description "guile-sjson is a json reader/writer for Guile. It has a nice, simple s-expression based syntax.") (license license:lgpl3+))) +(define-public guile2.2-sjson + (package + (inherit guile-sjson) + (name "guile2.2-sjson") + (inputs `(("guile" ,guile-2.2))))) + (define-public guile-squee (let ((commit "a85902a92bf6f58a1d35fd974a01ade163deda8d") (revision "0")) @@ -664,7 +682,7 @@ It has a nice, simple s-expression based syntax.") (inputs `(("postgresql" ,postgresql))) (native-inputs - `(("guile" ,guile-2.2))) + `(("guile" ,guile-3.0))) (home-page "https://notabug.org/cwebber/guile-squee") (synopsis "Connect to PostgreSQL using Guile") (description @@ -672,14 +690,17 @@ It has a nice, simple s-expression based syntax.") using Guile's foreign function interface.") (license license:lgpl3+)))) -(define-public guile3.0-squee +(define-public guile2.2-squee (package (inherit guile-squee) - (name "guile3.0-squee") - (native-inputs `(("guile" ,guile-next) + (name "guile2.2-squee") + (native-inputs `(("guile" ,guile-2.2) ,@(alist-delete "guile" (package-native-inputs guile-squee)))))) +(define-public guile3.0-squee + (deprecated-package "guile3.0-squee" guile-squee)) + (define-public guile-colorized (package (name "guile-colorized") @@ -695,18 +716,21 @@ using Guile's foreign function interface.") (base32 "10mv8c63159r3qvwwdvsgnsvdg7nc2ghak85zapwqpv4ywrqp9zc")))) (build-system guile-build-system) (native-inputs - `(("guile" ,guile-2.2))) + `(("guile" ,guile-3.0))) (home-page "https://gitlab.com/NalaGinrut/guile-colorized") (synopsis "Colorized REPL for Guile") (description "Guile-colorized provides you with a colorized REPL for GNU Guile.") (license license:gpl3+))) -(define-public guile3.0-colorized +(define-public guile2.2-colorized (package (inherit guile-colorized) - (name "guile3.0-colorized") - (native-inputs `(("guile" ,guile-next))))) + (name "guile2.2-colorized") + (native-inputs `(("guile" ,guile-2.2))))) + +(define-public guile3.0-colorized + (deprecated-package "guile3.0-colorized" guile-colorized)) (define-public guile-pfds (package @@ -759,7 +783,7 @@ using Guile's foreign function interface.") (find-files "." "\\.sls$")) #t))))) (native-inputs - `(("guile" ,guile-2.2))) + `(("guile" ,guile-3.0))) (synopsis "Purely functional data structures for Guile") (description "This package provides purely functional data structures written in R6RS @@ -780,23 +804,19 @@ Vicare Scheme and IronScheme. Right now it contains: @end itemize\n") (license license:bsd-3))) -(define-public guile3.0-pfds +(define-public guile2.2-pfds (package (inherit guile-pfds) - (name "guile3.0-pfds") - (native-inputs `(("guile" ,guile-3.0))) + (name "guile2.2-pfds") + (native-inputs `(("guile" ,guile-2.2))) (arguments (substitute-keyword-arguments (package-arguments guile-pfds) ((#:phases phases) `(modify-phases ,phases - (add-after 'unpack 'work-around-guile-bug - (lambda _ - ;; See bug #39210. - (substitute* '("fingertrees.sls" - "queues/private/condition.sls" - "deques/private/condition.sls") - (("&assertion") "&violation")) - #t)))))))) + (delete 'work-around-guile-bug))))))) + +(define-public guile3.0-pfds + (deprecated-package "guile3.0-pfds" guile-pfds)) (define-public guile-aa-tree (package @@ -850,7 +870,7 @@ convenient nested tree operations.") (assoc-ref inputs "zeromq")))) #t))))) (native-inputs - `(("guile" ,guile-2.2))) + `(("guile" ,guile-3.0))) (inputs `(("zeromq" ,zeromq))) (home-page "https://github.com/jerry40/guile-simple-zmq") @@ -860,11 +880,14 @@ convenient nested tree operations.") messaging library.") (license license:gpl3+)))) -(define-public guile3.0-simple-zmq +(define-public guile2.2-simple-zmq (package (inherit guile-simple-zmq) - (name "guile3.0-simple-zmq") - (native-inputs `(("guile" ,guile-next))))) + (name "guile2.2-simple-zmq") + (native-inputs `(("guile" ,guile-2.2))))) + +(define-public guile3.0-simple-zmq + (deprecated-package "guile3.0-simple-zmq" guile-simple-zmq)) (define-public jupyter-guile-kernel (let ((commit "a7db9245a886e104138474df46c3e88b95cff629") @@ -995,7 +1018,7 @@ using S-expressions.") (propagated-inputs `(("guile-email" ,guile-email))) (native-inputs - `(("guile" ,guile-2.2) + `(("guile" ,guile-3.0) ("pkg-config" ,pkg-config))) (home-page "https://savannah.gnu.org/projects/guile-debbugs/") (synopsis "Guile interface to the Debbugs bug tracking service") @@ -1022,7 +1045,7 @@ tracker's SOAP service, such as @url{https://bugs.gnu.org}.") `(("pkg-config" ,pkg-config) ("lzip" ,lzip))) (inputs - `(("guile" ,guile-2.2))) + `(("guile" ,guile-3.0))) (arguments '(#:make-flags '("GUILE_AUTO_COMPILE=0"))) ; to prevent guild warnings (home-page "https://guile-email.systemreboot.net") @@ -1033,13 +1056,16 @@ Extensions) compliant email messages and reading emails from the mbox format.") (license license:agpl3+))) -(define-public guile3.0-email +(define-public guile2.2-email (package (inherit guile-email) - (name "guile3.0-email") - (inputs `(("guile" ,guile-next) + (name "guile2.2-email") + (inputs `(("guile" ,guile-2.2) ,@(alist-delete "guile" (package-inputs guile-email)))))) +(define-public guile3.0-email + (deprecated-package "guile3.0-email" guile-email)) + (define-public guile-newt (package (name "guile-newt") @@ -1058,7 +1084,7 @@ format.") '(#:make-flags '("GUILE_AUTO_COMPILE=0"))) ;to prevent guild warnings (inputs - `(("guile" ,guile-2.2) + `(("guile" ,guile-3.0) ("newt" ,newt))) (native-inputs `(("autoconf" ,autoconf) @@ -1072,13 +1098,16 @@ Scheme by using Guile’s foreign function interface.") (home-page "https://gitlab.com/mothacehe/guile-newt") (license license:gpl3+))) -(define-public guile3.0-newt +(define-public guile2.2-newt (package (inherit guile-newt) - (name "guile3.0-newt") - (inputs `(("guile" ,guile-next) + (name "guile2.2-newt") + (inputs `(("guile" ,guile-2.2) ,@(alist-delete "guile" (package-inputs guile-newt)))))) +(define-public guile3.0-newt + (deprecated-package "guile3.0-newt" guile-newt)) + (define-public guile-mastodon (package (name "guile-mastodon") @@ -1127,7 +1156,7 @@ microblogging service.") '(#:make-flags '("GUILE_AUTO_COMPILE=0"))) ;to prevent guild warnings (inputs - `(("guile" ,guile-2.2) + `(("guile" ,guile-3.0) ("parted" ,parted))) (propagated-inputs `(("guile-bytestructures" ,guile-bytestructures))) @@ -1143,14 +1172,17 @@ written in pure Scheme by using Guile's foreign function interface.") (home-page "https://gitlab.com/mothacehe/guile-parted") (license license:gpl3+))) -(define-public guile3.0-parted +(define-public guile2.2-parted (package (inherit guile-parted) - (name "guile3.0-parted") - (inputs `(("guile" ,guile-next) + (name "guile2.2-parted") + (inputs `(("guile" ,guile-2.2) ,@(alist-delete "guile" (package-inputs guile-parted)))) (propagated-inputs - `(("guile-bytestructures" ,guile3.0-bytestructures))))) + `(("guile-bytestructures" ,guile2.2-bytestructures))))) + +(define-public guile3.0-parted + (deprecated-package "guile3.0-parted" guile-parted)) (define-public guile-xosd (package @@ -1337,7 +1369,7 @@ PostgreSQL.") ("automake" ,automake) ("pkg-config" ,pkg-config) ("texinfo" ,texinfo))) - (inputs `(("guile" ,guile-2.2))) + (inputs `(("guile" ,guile-3.0))) (synopsis "Guile application configuration parsing library.") (description @@ -1352,13 +1384,16 @@ above command-line parameters.") "https://gitlab.com/a-sassmannshausen/guile-config") (license license:gpl3+))) -(define-public guile3.0-config +(define-public guile2.2-config (package (inherit guile-config) - (name "guile3.0-config") - (inputs `(("guile" ,guile-next) + (name "guile2.2-config") + (inputs `(("guile" ,guile-2.2) ,@(alist-delete "guile" (package-inputs guile-config)))))) +(define-public guile3.0-config + (deprecated-package "guile3.0-config" guile-config)) + (define-public guile-hall (package (name "guile-hall") @@ -1425,7 +1460,7 @@ above command-line parameters.") ("automake" ,automake) ("pkg-config" ,pkg-config) ("texinfo" ,texinfo))) - (inputs `(("guile" ,guile-2.2))) + (inputs `(("guile" ,guile-3.0))) (propagated-inputs `(("guile-config" ,guile-config))) (synopsis "Guile project tooling") @@ -1437,17 +1472,20 @@ provides tight coupling to Guix.") (home-page "https://gitlab.com/a-sassmannshausen/guile-hall") (license license:gpl3+))) -(define-public guile3.0-hall +(define-public guile2.2-hall (package (inherit guile-hall) - (name "guile3.0-hall") - (inputs `(("guile" ,guile-next) + (name "guile2.2-hall") + (inputs `(("guile" ,guile-2.2) ,@(alist-delete "guile" (package-inputs guile-hall)))) (propagated-inputs - `(("guile-config" ,guile3.0-config) + `(("guile-config" ,guile2.2-config) ,@(alist-delete "guile-config" (package-propagated-inputs guile-hall)))))) +(define-public guile3.0-hall + (deprecated-package "guile3.0-hall" guile-hall)) + (define-public guile-ics (package (name "guile-ics") @@ -1477,7 +1515,7 @@ provides tight coupling to Guix.") ;; Gettext brings 'AC_LIB_LINKFLAGS_FROM_LIBS'. ("gettext" ,gettext-minimal) ("pkg-config" ,pkg-config))) - (inputs `(("guile" ,guile-2.2) ("which" ,which))) + (inputs `(("guile" ,guile-3.0) ("which" ,which))) (propagated-inputs `(("guile-lib" ,guile-lib))) (home-page "https://github.com/artyom-poptsov/guile-ics") (synopsis "Guile parser library for the iCalendar format") @@ -1488,13 +1526,16 @@ pure Scheme. The library can be used to read and write iCalendar data. The library is shipped with documentation in Info format and usage examples.") (license license:gpl3+))) -(define-public guile3.0-ics +(define-public guile2.2-ics (package (inherit guile-ics) - (name "guile3.0-ics") - (inputs `(("guile" ,guile-3.0) + (name "guile2.2-ics") + (inputs `(("guile" ,guile-2.2) ,@(alist-delete "guile" (package-inputs guile-ics)))) - (propagated-inputs `(("guile-lib" ,guile3.0-lib))))) + (propagated-inputs `(("guile-lib" ,guile2.2-lib))))) + +(define-public guile3.0-ics + (deprecated-package "guile3.0-ics" guile-ics)) (define-public guile-wisp (package @@ -1521,6 +1562,12 @@ The library is shipped with documentation in Info format and usage examples.") (guix build emacs-utils)) #:phases (modify-phases %standard-phases + (add-after 'unpack 'support-guile-3.0 + (lambda _ + (substitute* "configure" + (("_guile_versions_to_search=\"2.2") + "_guile_versions_to_search=\"3.0 2.2")) + #t)) (add-before 'configure 'patch-/usr/bin/env (lambda _ (substitute* "Makefile.in" @@ -1559,7 +1606,7 @@ The library is shipped with documentation in Info format and usage examples.") (assoc-ref emacs:%standard-phases 'make-autoloads))))) (home-page "https://www.draketo.de/english/wisp") (inputs - `(("guile" ,guile-2.2))) + `(("guile" ,guile-3.0))) (native-inputs `(("emacs" ,emacs-minimal) ("python" ,python) @@ -1570,21 +1617,14 @@ whitespace-significant language. It may be easier on the eyes for some users and in some situations.") (license license:gpl3+))) -(define-public guile3.0-wisp +(define-public guile2.2-wisp (package (inherit guile-wisp) - (name "guile3.0-wisp") - (inputs `(("guile" ,guile-3.0))) - (arguments - (substitute-keyword-arguments (package-arguments guile-wisp) - ((#:phases phases) - `(modify-phases ,phases - (add-after 'unpack 'support-guile-3.0 - (lambda _ - (substitute* "configure" - (("_guile_versions_to_search=\"2.2") - "_guile_versions_to_search=\"3.0 2.2")) - #t)))))))) + (name "guile2.2-wisp") + (inputs `(("guile" ,guile-2.2))))) + +(define-public guile3.0-wisp + (deprecated-package "guile3.0-wisp" guile-wisp)) (define-public guile-sly (package @@ -1830,10 +1870,16 @@ many readers as needed).") "038xbffalhymg26lvmzgf7ljilxz2f2zmqg5r5nfzbipfbprwjhf")))) (build-system gnu-build-system) (inputs `(("ncurses" ,ncurses) - ("guile" ,guile-2.2))) + ("guile" ,guile-3.0))) (native-inputs `(("pkg-config" ,pkg-config))) (arguments - '(#:configure-flags (list "--with-ncursesw" ; Unicode support + `(#:modules ((guix build gnu-build-system) + ((guix build guile-build-system) + #:select (target-guile-effective-version)) + (guix build utils)) + #:imported-modules ((guix build guile-build-system) + ,@%gnu-build-system-modules) + #:configure-flags (list "--with-ncursesw" ; Unicode support "--with-gnu-filesystem-hierarchy") #:phases (modify-phases %standard-phases @@ -1848,8 +1894,8 @@ many readers as needed).") (files (find-files dir ".scm"))) (substitute* files (("\"libguile-ncurses\"") - (format #f "\"~a/lib/guile/2.2/libguile-ncurses\"" - out))) + (format #f "\"~a/lib/guile/~a/libguile-ncurses\"" + out (target-guile-effective-version)))) #t)))))) (home-page "https://www.gnu.org/software/guile-ncurses/") (synopsis "Guile bindings to ncurses") @@ -1858,6 +1904,16 @@ many readers as needed).") library.") (license license:lgpl3+))) +(define-public guile2.2-ncurses + (package + (inherit guile-ncurses) + (name "guile2.2-ncurses") + (inputs `(("ncurses" ,ncurses) + ("guile" ,guile-2.2))))) + +(define-public guile3.0-ncurses + (deprecated-package "guile3.0-ncurses" guile-ncurses)) + (define-public guile-ncurses/gpm (package (inherit guile-ncurses) @@ -1865,6 +1921,13 @@ library.") (inputs `(("ncurses" ,ncurses/gpm) ("guile" ,guile-2.2))))) +(define-public guile3.0-ncurses/gpm + (package + (inherit guile3.0-ncurses) + (name "guile3.0-ncurses-with-gpm") + (inputs `(("ncurses" ,ncurses/gpm) + ("guile" ,guile-3.0))))) + (define-public guile-lib (package (name "guile-lib") @@ -1903,7 +1966,7 @@ library.") $(libdir)/guile/@GUILE_EFFECTIVE_VERSION@/site-ccache\n")) #t))))) (native-inputs `(("pkg-config" ,pkg-config))) - (inputs `(("guile" ,guile-2.2))) + (inputs `(("guile" ,guile-3.0))) (home-page "https://www.nongnu.org/guile-lib/") (synopsis "Collection of useful Guile Scheme modules") (description @@ -1923,11 +1986,14 @@ for Guile\".") (name "guile2.0-lib") (inputs `(("guile" ,guile-2.0))))) -(define-public guile3.0-lib +(define-public guile2.2-lib (package (inherit guile-lib) - (name "guile3.0-lib") - (inputs `(("guile" ,guile-3.0))))) + (name "guile2.2-lib") + (inputs `(("guile" ,guile-2.2))))) + +(define-public guile3.0-lib + (deprecated-package "guile3.0-lib" guile-lib)) (define-public guile-minikanren (package @@ -1944,7 +2010,7 @@ for Guile\".") "0r50jlpzi940jlmxyy3ddqqwmj5r12gb4bcv0ssini9v8km13xz6")))) (build-system guile-build-system) (native-inputs - `(("guile" ,guile-2.2))) + `(("guile" ,guile-3.0))) (home-page "https://github.com/ijp/minikanren") (synopsis "MiniKanren declarative logic system, packaged for Guile") (description @@ -1965,11 +2031,14 @@ See http://minikanren.org/ for more on miniKanren generally.") (name "guile2.0-minikanren") (native-inputs `(("guile" ,guile-2.0))))) -(define-public guile3.0-minikanren +(define-public guile2.2-minikanren (package (inherit guile-minikanren) - (name "guile3.0-minikanren") - (native-inputs `(("guile" ,guile-next))))) + (name "guile2.2-minikanren") + (native-inputs `(("guile" ,guile-2.2))))) + +(define-public guile3.0-minikanren + (deprecated-package "guile3.0-minikanren" guile-minikanren)) (define-public guile-irregex (package @@ -2002,7 +2071,7 @@ See http://minikanren.org/ for more on miniKanren generally.") #t))) #:source-directory "src")) (native-inputs - `(("guile" ,guile-2.2))) + `(("guile" ,guile-3.0))) (home-page "http://synthcode.com/scheme/irregex") (synopsis "S-expression based regular expressions") (description @@ -2017,11 +2086,14 @@ inspired by the SCSH regular expression system.") (name "guile2.0-irregex") (native-inputs `(("guile" ,guile-2.0))))) -(define-public guile3.0-irregex +(define-public guile2.2-irregex (package (inherit guile-irregex) - (name "guile3.0-irregex") - (native-inputs `(("guile" ,guile-next))))) + (name "guile2.2-irregex") + (native-inputs `(("guile" ,guile-2.2))))) + +(define-public guile3.0-irregex + (deprecated-package "guile3.0-irregex" guile-irregex)) (define-public haunt (package @@ -2087,9 +2159,10 @@ inspired by the SCSH regular expression system.") `(("pkg-config" ,pkg-config) ("texinfo" ,texinfo))) (inputs - `(("guile" ,guile-2.2))) + `(("guile" ,guile-3.0))) (propagated-inputs - `(("guile-reader" ,guile-reader) + ;; XXX: Guile-Reader is currently unavailable for Guile 2.2 so strip it. + `(;;("guile-reader" ,guile-reader) ("guile-commonmark" ,guile-commonmark))) (synopsis "Functional static site generator") (description "Haunt is a static site generator written in Guile @@ -2098,14 +2171,14 @@ interface for reading articles in any format.") (home-page "http://haunt.dthompson.us") (license license:gpl3+))) -(define-public guile3.0-haunt +(define-public guile2.2-haunt (package (inherit haunt) - (name "guile3.0-haunt") - (inputs `(("guile" ,guile-3.0))) + (name "guile2.2-haunt") + (inputs `(("guile" ,guile-2.2))) (propagated-inputs - ;; XXX: Guile-Reader is currently unavailable for Guile 3.0 so strip it. - `(("guile-commonmark" ,guile3.0-commonmark))))) + `(("guile-reader" ,guile-reader) + ("guile-commonmark" ,guile2.2-commonmark))))) (define-public guile2.0-haunt (package @@ -2113,6 +2186,9 @@ interface for reading articles in any format.") (name "guile2.0-haunt") (inputs `(("guile" ,guile-2.0))))) +(define-public guile3.0-haunt + (deprecated-package "guile3.0-haunt" haunt)) + (define-public guile-redis (package (name "guile-redis") @@ -2132,12 +2208,20 @@ interface for reading articles in any format.") `(("autoconf" ,autoconf) ("automake" ,automake) ("pkg-config" ,pkg-config) - ("guile" ,guile-2.2))) + ("guile" ,guile-3.0))) (synopsis "Redis client library for Guile") (description "Guile-redis provides a Scheme interface to the Redis key-value cache and store.") (license license:lgpl3+))) +(define-public guile2.2-redis + (package + (inherit guile-redis) + (name "guile2.2-redis") + (native-inputs `(("guile" ,guile-2.2) + ,@(alist-delete "guile" + (package-native-inputs guile-redis)))))) + (define-public guile2.0-redis (package (inherit guile-redis) @@ -2168,7 +2252,7 @@ key-value cache and store.") #t)))) (build-system gnu-build-system) (inputs - `(("guile" ,guile-2.2))) + `(("guile" ,guile-3.0))) (native-inputs `(("pkg-config" ,pkg-config))) (synopsis "CommonMark parser for Guile") @@ -2181,11 +2265,11 @@ is no support for parsing block and inline level HTML.") (home-page "https://github.com/OrangeShark/guile-commonmark") (license license:lgpl3+))) -(define-public guile3.0-commonmark +(define-public guile2.2-commonmark (package (inherit guile-commonmark) - (name "guile3.0-commonmark") - (inputs `(("guile" ,guile-3.0))))) + (name "guile2.2-commonmark") + (inputs `(("guile" ,guile-2.2))))) (define-public guile2.0-commonmark (package @@ -2193,6 +2277,9 @@ is no support for parsing block and inline level HTML.") (name "guile2.0-commonmark") (inputs `(("guile" ,guile-2.0))))) +(define-public guile3.0-commonmark + (deprecated-package "guile3.0-commonmark" guile-commonmark)) + (define-public mcron (package (name "mcron") @@ -2224,8 +2311,10 @@ is no support for parsing block and inline level HTML.") (string-append "(test-skip 4)\n" all))) #t))))) (native-inputs `(("pkg-config" ,pkg-config) - ("tzdata" ,tzdata-for-tests))) - (inputs `(("guile" ,guile-2.2.7))) ;fix <https://bugs.gnu.org/37237> + ("tzdata" ,tzdata-for-tests) + ("guile-native" ;for 'guild compile' + ,@(assoc-ref (package-inputs this-package) "guile")))) + (inputs `(("guile" ,guile-3.0))) (home-page "https://www.gnu.org/software/mcron/") (synopsis "Run jobs at scheduled times") (description @@ -2235,11 +2324,14 @@ Guile, so its configuration can be written in Scheme; the original cron format is also supported.") (license license:gpl3+))) -(define-public guile3.0-mcron +(define-public guile2.2-mcron (package (inherit mcron) - (name "guile3.0-mcron") - (inputs `(("guile" ,guile-3.0))))) + (name "guile2.2-mcron") + (inputs `(("guile" ,guile-2.2))))) + +(define-public guile3.0-mcron + (deprecated-package "guile3.0-mcron" mcron)) (define-public guile-picture-language (let ((commit "91d10c96708d732145006dd2802acc4de08b632e") @@ -2258,7 +2350,7 @@ format is also supported.") "1ydvw9dvssdvlvhh1dr8inyzy2x6m41qgp8hsivca1xysr4gc23a")))) (build-system gnu-build-system) (inputs - `(("guile" ,guile-2.2))) + `(("guile" ,guile-3.0))) (native-inputs `(("autoconf" ,autoconf) ("automake" ,automake) @@ -2272,11 +2364,15 @@ format is also supported.") The picture values can directly be displayed in Geiser.") (license license:lgpl3+)))) -(define-public guile3.0-picture-language +(define-public guile2.2-picture-language (package (inherit guile-picture-language) - (name "guile3.0-picture-language") - (inputs `(("guile" ,guile-3.0))))) + (name "guile2.2-picture-language") + (inputs `(("guile" ,guile-2.2))))) + +(define-public guile3.0-picture-language + (deprecated-package "guile3.0-picture-language" + guile-picture-language)) (define-public guile-studio (package @@ -2540,14 +2636,14 @@ list of components. This module takes care of that for you.") (define-public guile-gi (package (name "guile-gi") - (version "0.2.2") + (version "0.3.0") (source (origin (method url-fetch) (uri (string-append "http://lonelycactus.com/tarball/guile_gi-" version ".tar.gz")) (sha256 (base32 - "1v82kz8mz7wgq6w5llaz8a2wwdnl8vk2667dpjwjxscl0qyxsy6y")))) + "05xbwrk50h4f9fh8la8fk2wsxbnm0jcyb9phnpkkjq4sqkhkxlbj")))) (build-system gnu-build-system) (arguments `(#:configure-flags '("--with-gnu-filesystem-hierarchy") @@ -2600,7 +2696,7 @@ list of components. This module takes care of that for you.") ("gtk+" ,gtk+) ("guile-lib" ,guile-lib) ("webkitgtk" ,webkitgtk))) - (inputs `(("guile" ,guile-2.2))) + (inputs `(("guile" ,guile-3.0))) (home-page "https://github.com/spk121/guile-gi") (synopsis "GObject bindings for Guile") (description @@ -2609,14 +2705,17 @@ libraries, such as GTK+3. Its README comes with the disclaimer: This is pre-alpha code.") (license license:gpl3+))) -(define-public guile3.0-gi +(define-public guile2.2-gi (package (inherit guile-gi) - (name "guile3.0-gi") + (name "guile2.2-gi") (native-inputs - `(("guile" ,guile-3.0) + `(("guile" ,guile-2.2) ,@(package-native-inputs guile-gi))))) +(define-public guile3.0-gi + (deprecated-package "guile3.0-gi" guile-gi)) + (define-public guile-srfi-159 (let ((commit "1bd98abda2ae4ef8f36761a167903e55c6bda7bb") (revision "0")) @@ -3093,7 +3192,7 @@ the style of the Node Package Manager (NPM).") (rename-file "private" "hashing/private") #t))))) (native-inputs - `(("guile" ,guile-2.2))) + `(("guile" ,guile-3.0))) (synopsis "Cryprographic hash functions implemented in Scheme") (description "The @code{(hashing @dots{})} modules implement cryptographic hash @@ -3101,12 +3200,115 @@ functions in pure R6RS Scheme: CRC, HMAC, MD5, SHA-1, and SHA-2 (SHA-256, SHA-512).") (license license:expat))) -(define-public guile3.0-hashing +(define-public guile2.2-hashing (package (inherit guile-hashing) - (name "guile3.0-hashing") + (name "guile2.2-hashing") (native-inputs - `(("guile" ,guile-next))))) + `(("guile" ,guile-2.2))))) + +(define-public guile3.0-hashing + (deprecated-package "guile3.0-hashing" guile-hashing)) + +(define-public guile-packrat + (package + (name "guile-packrat") + (version "0.1.1") + (home-page "https://github.com/weinholt/packrat") + (source (origin + (method git-fetch) + (uri (git-reference + (url home-page) + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1aga17164fkhbgllqc7ni6fk5zl8mkmgkl5zcsy67x7ngpyalbby")))) + (build-system guile-build-system) + (arguments + `(#:implicit-inputs? #f ;needs nothing but Guile + #:compile-flags '("--r6rs" "-Wunbound-variable" "-Warity-mismatch") + #:not-compiled-file-regexp "/extensible\\.scm$" + #:phases (modify-phases %standard-phases + (add-before 'build 'no-srfi-23 + (lambda _ + (substitute* "packrat.sls" + (("\\(srfi :23 error\\)") + (object->string '(only (guile) error)))) + #t))))) + (native-inputs + `(("guile" ,guile-3.0))) + (synopsis "Packrat parser library in R6RS Scheme") + (description + "This is an R6RS Scheme adaptation of the +@uref{https://bford.info/packrat/, packrat parsing}. Packrat parsing is a +memoizing, backtracking, recursive-descent parsing technique that runs in time +and space linear in the size of the input text.") + (license license:expat))) + +(define-public guile-ac-d-bus + (package + (name "guile-ac-d-bus") + (version "1.0.0-beta.0") + (home-page "https://gitlab.com/weinholt/ac-d-bus/") + (source (origin + (method git-fetch) + (uri (git-reference + (url home-page) + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0rl809qimhgz6b0rixakb42r2l4g53jr09a2g0s1hxgab0blz0kb")))) + (build-system guile-build-system) + (arguments + `(#:implicit-inputs? #f ;needs nothing but Guile + #:compile-flags '("--r6rs" "-Wunbound-variable" "-Warity-mismatch") + #:phases (modify-phases %standard-phases + (add-before 'build 'adjust-for-guile + (lambda _ + ;; Adjust source file names for Guile. + (define (guile-sls->sls file) + (string-append (string-drop-right + file (string-length ".guile.sls")) + ".sls")) + + ;; Remove files targeting other implementations: + ;; *.mosh.sls, etc. + (for-each delete-file + (find-files + "compat" + (lambda (file stat) + (not (string-contains file ".guile."))))) + + ;; Rename *.guile.sls to *.sls so the ".guile" bit does + ;; not appear in .go file names. + (for-each (lambda (file) + (rename-file file (guile-sls->sls file))) + (find-files "compat" "\\.guile\\.sls")) + + ;; Move directories under d-bus/ to match module names. + (mkdir "d-bus") + (for-each (lambda (directory) + (rename-file directory + (string-append "d-bus/" + directory))) + '("compat" "protocol")) + + #t))))) + (native-inputs + `(("guile" ,guile-3.0))) + (propagated-inputs + `(("guile-packrat" ,guile-packrat))) + (synopsis "D-Bus protocol implementation in R6RS Scheme") + (description + "AC/D-Bus is an implementation of the D-Bus wire protocol. D-Bus is an +interprocess communication protocol popular on GNU/Linux systems to +communicate with a variety of services. Originally designed for desktop +environments, it is now used by programs like VLC media player, BlueZ, +NetworkManager, Pulseaudio, systemd (including logind and resolved), Polkit, +gnome-keyring, and many more.") + (license license:expat))) (define-public guile-webutils (let ((commit "8541904f761066dc9c27b1153e9a838be9a55299") @@ -3122,7 +3324,15 @@ SHA-512).") (file-name (git-file-name name version)) (sha256 (base32 - "1s9n3hbxd7lfpdi0x8wr0cfvlsf6g62ird9gbspxdrp5p05rbi64")))) + "1s9n3hbxd7lfpdi0x8wr0cfvlsf6g62ird9gbspxdrp5p05rbi64")) + (modules '((guix build utils))) + (snippet + '(begin + ;; Allow builds with Guile 3.0. + (substitute* "configure.ac" + (("2\\.2 2\\.0") + "3.0 2.2 2.0")) + #t)))) (build-system gnu-build-system) (native-inputs `(("autoconf" ,autoconf) @@ -3130,7 +3340,7 @@ SHA-512).") ("pkg-config" ,pkg-config) ("texinfo" ,texinfo))) (inputs - `(("guile" ,guile-2.2))) + `(("guile" ,guile-3.0))) (propagated-inputs `(("guile-irregex" ,guile-irregex) ("guile-gcrypt" ,guile-gcrypt))) @@ -3141,6 +3351,16 @@ SHA-512).") as signed sessions, multipart message support, etc.") (license license:gpl3+)))) +(define-public guile2.2-webutils + (package + (inherit guile-webutils) + (name "guile2.2-webutils") + (inputs + `(("guile" ,guile-2.2))) + (propagated-inputs + `(("guile-irregex" ,guile2.2-irregex) + ("guile-gcrypt" ,guile2.2-gcrypt))))) + (define-public guile-lens (let ((commit "14b15d07255f9d3f55d40a3b750d13c9ee3a154f") (revision "0")) @@ -3167,7 +3387,7 @@ as signed sessions, multipart message support, etc.") (native-inputs `(("autoconf" ,autoconf) ("automake" ,automake) - ("guile" ,guile-2.2) + ("guile" ,guile-3.0) ("guile-hall" ,guile-hall) ("pkg-config" ,pkg-config) ("texinfo" ,texinfo))) @@ -3180,6 +3400,14 @@ provide composable procedures, which can be used to focus, apply functions over, or update a value in arbitrary data structures.") (license license:gpl3+)))) +(define-public guile2.2-lens + (package + (inherit guile-lens) + (name "guile2.2-lens") + (native-inputs + `(("guile" ,guile-2.2) + ,@(alist-delete "guile" (package-native-inputs guile-lens)))))) + (define-public guile-xapian (package (name "guile-xapian") @@ -3198,7 +3426,7 @@ over, or update a value in arbitrary data structures.") (arguments '(#:make-flags '("GUILE_AUTO_COMPILE=0"))) ; to prevent guild warnings (inputs - `(("guile" ,guile-2.2) + `(("guile" ,guile-3.0) ("xapian" ,xapian) ("zlib" ,zlib))) (native-inputs @@ -3216,14 +3444,17 @@ applications. It has built-in support for several families of weighting models and also supports a rich set of boolean query operators.") (license license:gpl2+))) -(define-public guile3.0-xapian +(define-public guile2.2-xapian (package (inherit guile-xapian) - (name "guile3.0-xapian") + (name "guile2.2-xapian") (inputs - `(("guile" ,guile-next) + `(("guile" ,guile-2.2) ,@(alist-delete "guile" (package-inputs guile-xapian)))))) +(define-public guile3.0-xapian + (deprecated-package "guile3.0-xapian" guile-xapian)) + (define-public guile-torrent (package (name "guile-torrent") @@ -3286,10 +3517,10 @@ Relay Chat} (IRC).") ;; Some file headers incorrectly say LGPLv2+. (license license:lgpl2.1+)))) -(define-public guile3.0-websocket +(define-public guile-websocket (let ((commit "c854e0f84a40d972cbd532bbb89c97ca0126a7cf")) (package - (name "guile3.0-websocket") + (name "guile-websocket") (version "0.1") (source (origin @@ -3324,9 +3555,12 @@ Relay Chat} (IRC).") `(("autoconf" ,autoconf) ("automake" ,automake))) (inputs - `(("guile" ,guile-next))) + `(("guile" ,guile-3.0))) (synopsis "Websocket server/client for Guile") (description "Guile-websocket provides an implementation of the WebSocket protocol as defined by RFC 6455.") (home-page "https://git.dthompson.us/guile-websocket.git") (license license:lgpl3+)))) + +(define-public guile3.0-websocket + (deprecated-package "guile3.0-websocket" guile-websocket)) diff --git a/gnu/packages/guile.scm b/gnu/packages/guile.scm index 56dda89899..ef1e19c6b8 100644 --- a/gnu/packages/guile.scm +++ b/gnu/packages/guile.scm @@ -15,6 +15,7 @@ ;;; Copyright © 2018 Danny Milosavljevic <dannym@scratchpost.org> ;;; Copyright © 2018 Eric Bavier <bavier@member.fsf.org> ;;; Copyright © 2019 Taylan Kammer <taylan.kammer@gmail.com> +;;; Copyright © 2020 Efraim Flashner <efraim@flashner.co.il> ;;; ;;; This file is part of GNU Guix. ;;; @@ -180,6 +181,20 @@ without requiring the source code to be rewritten.") `(#:configure-flags '("--disable-static") ; saves 3 MiB #:phases (modify-phases %standard-phases + ,@(if (hurd-system?) + '((add-after 'unpack 'disable-tests + (lambda _ + ;; Hangs at: "Running 00-repl-server.test" + (rename-file "test-suite/tests/00-repl-server.test" "00-repl-server.test") + ;; Sometimes Hangs at: "Running 00-socket.test" + (rename-file "test-suite/tests/00-socket.test" "00-socket.test") + ;; FAIL: srfi-18.test: thread-sleep!: thread sleeps fractions of a second + (rename-file "test-suite/tests/srfi-18.test" "srfi-18.test") + ;; failed to remove 't-guild-compile-7215.go.tdL7yC + (substitute* "test-suite/standalone/Makefile.in" + (("test-guild-compile ") "")) + #t))) + '()) (add-before 'configure 'pre-configure (lambda* (#:key inputs #:allow-other-keys) ;; Tell (ice-9 popen) the file name of Bash. @@ -217,7 +232,7 @@ without requiring the source code to be rewritten.") (define-public guile-2.2 (package (inherit guile-2.0) (name "guile") - (version "2.2.6") + (version "2.2.7") (source (origin (method url-fetch) @@ -227,7 +242,7 @@ without requiring the source code to be rewritten.") ".tar.xz")) (sha256 (base32 - "1269ymxm56j1z1lvq1y42rm961f2n7rinm3k6l00p9k52hrpcddk")) + "013mydzhfswqci6xmyc1ajzd59pfbdak15i0b090nhr9bzm7dxyd")) (modules '((guix build utils))) (patches (search-patches "guile-2.2-skip-oom-test.patch")) @@ -250,31 +265,8 @@ without requiring the source code to be rewritten.") (variable "GUILE_LOAD_COMPILED_PATH") (files '("lib/guile/2.2/site-ccache"))))))) -(define-public guile-2.2.7 - ;; This version contains a bug fix for a relatively rare crash that could - ;; affect shepherd as PID 1: <https://bugs.gnu.org/37757>. - (package - (inherit guile-2.2) - (version "2.2.7") - (source (origin - (inherit (package-source guile-2.2)) - (uri (string-append "mirror://gnu/guile/guile-" version - ".tar.xz")) - (sha256 - (base32 - "013mydzhfswqci6xmyc1ajzd59pfbdak15i0b090nhr9bzm7dxyd")))))) - -(define-deprecated guile-2.2/bug-fix guile-2.2.7) +(define-deprecated guile-2.2/bug-fix guile-2.2) -(define-public guile-2.2/fixed - ;; A package of Guile 2.2 that's rarely changed. It is the one used - ;; in the `base' module, and thus changing it entails a full rebuild. - (package - (inherit guile-2.2) - (properties '((hidden? . #t) ;people should install 'guile-2.2' - (timeout . 72000) ;20 hours - (max-silent-time . 36000))))) ;10 hours (needed on ARM - ; when heavily loaded) (define-public guile-2.2.4 (package/inherit guile-2.2 @@ -291,7 +283,7 @@ without requiring the source code to be rewritten.") ;; This is the latest Guile stable version. (package (inherit guile-2.2) - (name "guile-next") ;to be renamed to "guile" + (name "guile") (version "3.0.2") (source (origin (inherit (package-source guile-2.2)) @@ -300,6 +292,13 @@ without requiring the source code to be rewritten.") (sha256 (base32 "12lziar4j27j9whqp2n18427q45y9ghq7gdd8lqhmj1k0lr7vi2k")))) + (arguments + ;; XXX: JIT-enabled Guile crashes in obscure ways on GNU/Hurd. + (if (hurd-target?) + (substitute-keyword-arguments (package-arguments guile-2.2) + ((#:configure-flags flags ''()) + `(cons "--disable-jit" ,flags))) + (package-arguments guile-2.2))) (native-search-paths (list (search-path-specification (variable "GUILE_LOAD_PATH") @@ -309,7 +308,29 @@ without requiring the source code to be rewritten.") (files '("lib/guile/3.0/site-ccache" "share/guile/site/3.0"))))))) -(define-public guile-next guile-3.0) +(define-public guile-next + (deprecated-package "guile-next" guile-3.0)) + +(define-public guile-3.0/libgc-7 + ;; Using libgc-7 avoid crashes that can occur, particularly when loading + ;; data in to the Guix Data Service: + ;; https://debbugs.gnu.org/cgi/bugreport.cgi?bug=40525 + (hidden-package + (package + (inherit guile-3.0) + (propagated-inputs + `(("bdw-gc" ,libgc-7) + ,@(srfi-1:alist-delete "bdw-gc" (package-propagated-inputs guile-3.0))))))) + +(define-public guile-3.0/fixed + ;; A package of Guile that's rarely changed. It is the one used in the + ;; `base' module, and thus changing it entails a full rebuild. + (package + (inherit guile-3.0) + (properties '((hidden? . #t) ;people should install 'guile-2.2' + (timeout . 72000) ;20 hours + (max-silent-time . 36000))))) ;10 hours (needed on ARM + ; when heavily loaded) (define* (make-guile-readline guile #:optional (name "guile-readline")) (package @@ -368,10 +389,10 @@ GNU@tie{}Guile. Use the @code{(ice-9 readline)} module and call its (license license:gpl3+))) (define-public guile-readline - (make-guile-readline guile-2.2)) + (make-guile-readline guile-3.0)) -(define-public guile3.0-readline - (make-guile-readline guile-next "guile3.0-readline")) +(define-public guile2.2-readline + (make-guile-readline guile-2.2 "guile2.2-readline")) (define (guile-variant-package-name prefix) (lambda (name) @@ -384,13 +405,46 @@ GNU@tie{}Guile. Use the @code{(ice-9 readline)} module and call its (define package-for-guile-2.0 ;; A procedure that rewrites the dependency tree of the given package to use - ;; GUILE-2.0 instead of GUILE-2.2. - (package-input-rewriting `((,guile-2.2 . ,guile-2.0)) + ;; GUILE-2.0 instead of GUILE-3.0. + (package-input-rewriting `((,guile-3.0 . ,guile-2.0)) (guile-variant-package-name "guile2.0"))) -(define package-for-guile-3.0 - (package-input-rewriting `((,guile-2.2 . ,guile-next)) - (guile-variant-package-name "guile3.0"))) +(define package-for-guile-2.2 + (package-input-rewriting `((,guile-3.0 . ,guile-2.2)) + (guile-variant-package-name "guile2.2"))) + +(define-syntax define-deprecated-guile3.0-package + (lambda (s) + "Define a deprecated package alias for \"guile3.0-something\"." + (syntax-case s () + ((_ name) + (and (identifier? #'name) + (string-prefix? "guile3.0-" (symbol->string (syntax->datum + #'name)))) + (let ((->guile (lambda (str) + (let ((base (string-drop str + (string-length "guile3.0-")))) + (string-append "guile-" base))))) + (with-syntax ((package-name (symbol->string (syntax->datum #'name))) + (package + (datum->syntax + #'name + (string->symbol + (->guile (symbol->string (syntax->datum + #'name)))))) + (old-name + ;; XXX: This is the name generated by + ;; 'define-deprecated'. + (datum->syntax + #'name + (symbol-append '% (syntax->datum #'name) + '/deprecated)))) + #'(begin + (define-deprecated name package + (deprecated-package package-name package)) + (export old-name)))))))) + +(define-deprecated-guile3.0-package guile3.0-readline) (define-public guile-for-guile-emacs (let ((commit "15ca78482ac0dd2e3eb36dcb31765d8652d7106d") @@ -495,10 +549,16 @@ specification. These are the main features: version ".tar.gz")) (sha256 (base32 - "0nj0684qgh6ppkbdyxqfyjwsv2qbyairxpi8fzrhsi3xnc7jn4im")))))) + "0nj0684qgh6ppkbdyxqfyjwsv2qbyairxpi8fzrhsi3xnc7jn4im")))) + (native-inputs `(("pkg-config" ,pkg-config) + ("guile" ,guile-3.0))) + (inputs `(("guile" ,guile-3.0))))) + +(define-public guile2.2-json + (package-for-guile-2.2 guile-json-3)) (define-public guile3.0-json - (package-for-guile-3.0 guile-json-3)) + (deprecated-package "guile3.0-json" guile-json-3)) ;; There are two guile-gdbm packages, one using the FFI and one with ;; direct C bindings, hence the verbose name. @@ -539,7 +599,7 @@ specification. These are the main features: (assoc-ref inputs "gdbm")))) #t))))) (native-inputs - `(("guile" ,guile-2.2))) + `(("guile" ,guile-3.0))) (inputs `(("gdbm" ,gdbm))) (home-page "https://github.com/ijp/guile-gdbm") @@ -552,8 +612,10 @@ Guile's foreign function interface.") (define-public guile2.0-gdbm-ffi (package-for-guile-2.0 guile-gdbm-ffi)) -(define-public guile3.0-gdbm-ffi - (package-for-guile-3.0 guile-gdbm-ffi)) +(define-public guile2.2-gdbm-ffi + (package-for-guile-2.2 guile-gdbm-ffi)) + +(define-deprecated-guile3.0-package guile3.0-gdbm-ffi) (define-public guile-sqlite3 (package @@ -569,6 +631,8 @@ Guile's foreign function interface.") (base32 "1nv8j7wk6b5n4p22szyi8lv8fs31rrzxhzz16gyj8r38c1fyp9qp")) (file-name (string-append name "-" version "-checkout")) + (patches + (search-patches "guile-sqlite3-fix-cross-compilation.patch")) (modules '((guix build utils))) (snippet '(begin @@ -581,9 +645,10 @@ Guile's foreign function interface.") (native-inputs `(("autoconf" ,autoconf) ("automake" ,automake) + ("guile" ,guile-3.0) ("pkg-config" ,pkg-config))) (inputs - `(("guile" ,guile-2.2) + `(("guile" ,guile-3.0) ("sqlite" ,sqlite))) (synopsis "Access SQLite databases from Guile") (description @@ -593,8 +658,10 @@ Guile's foreign function interface.") (define-public guile2.0-sqlite3 (package-for-guile-2.0 guile-sqlite3)) -(define-public guile3.0-sqlite3 - (package-for-guile-3.0 guile-sqlite3)) +(define-public guile2.2-sqlite3 + (package-for-guile-2.2 guile-sqlite3)) + +(define-deprecated-guile3.0-package guile3.0-sqlite3) (define-public guile-bytestructures (package @@ -626,9 +693,9 @@ Guile's foreign function interface.") `(("autoconf" ,autoconf) ("automake" ,automake) ("pkg-config" ,pkg-config) - ("guile" ,guile-2.2))) + ("guile" ,guile-3.0))) (inputs - `(("guile" ,guile-2.2))) + `(("guile" ,guile-3.0))) (synopsis "Structured access to bytevector contents for Guile") (description "Guile bytestructures offers a system imitating the type system @@ -642,8 +709,10 @@ type system, elevating types to first-class status.") (define-public guile2.0-bytestructures (package-for-guile-2.0 guile-bytestructures)) -(define-public guile3.0-bytestructures - (package-for-guile-3.0 guile-bytestructures)) +(define-public guile2.2-bytestructures + (package-for-guile-2.2 guile-bytestructures)) + +(define-deprecated-guile3.0-package guile3.0-bytestructures) (define-public guile-git (package @@ -659,12 +728,14 @@ type system, elevating types to first-class status.") (base32 "0c5i3d16hp7gp9rd78vk9zc45js8bphf92m4lbb5gyi4l1yl7kkm")))) (build-system gnu-build-system) + (arguments + `(#:make-flags '("GUILE_AUTO_COMPILE=0"))) ; to prevent guild warnings (native-inputs `(("pkg-config" ,pkg-config) - ("guile" ,guile-2.2) + ("guile" ,guile-3.0) ("guile-bytestructures" ,guile-bytestructures))) (inputs - `(("guile" ,guile-2.2) + `(("guile" ,guile-3.0) ("libgit2" ,libgit2))) (propagated-inputs `(("guile-bytestructures" ,guile-bytestructures))) @@ -674,8 +745,8 @@ type system, elevating types to first-class status.") manipulate repositories of the Git version control system.") (license license:gpl3+))) -(define-public guile3.0-git - (package-for-guile-3.0 guile-git)) +(define-public guile2.2-git + (package-for-guile-2.2 guile-git)) (define-public guile2.0-git (let ((base (package-for-guile-2.0 guile-git))) @@ -688,5 +759,7 @@ manipulate repositories of the Git version control system.") ,@(srfi-1:alist-delete "libgit2" (package-inputs base))))))) +(define-deprecated-guile3.0-package guile3.0-git) + ;;; guile.scm ends here diff --git a/gnu/packages/hardware.scm b/gnu/packages/hardware.scm index 7ee657a75a..7ca565e17f 100644 --- a/gnu/packages/hardware.scm +++ b/gnu/packages/hardware.scm @@ -1,6 +1,7 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org> +;;; Copyright © 2020 Brice Waegeneire <brice@waegenei.re> ;;; ;;; This file is part of GNU Guix. ;;; @@ -18,15 +19,25 @@ ;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>. (define-module (gnu packages hardware) + #:use-module (gnu packages admin) #:use-module (gnu packages autotools) + #:use-module (gnu packages bash) #:use-module (gnu packages compression) + #:use-module (gnu packages check) + #:use-module (gnu packages cpp) + #:use-module (gnu packages crypto) + #:use-module (gnu packages documentation) #:use-module (gnu packages gcc) #:use-module (gnu packages glib) #:use-module (gnu packages libusb) #:use-module (gnu packages linux) #:use-module (gnu packages ncurses) + #:use-module (gnu packages openldap) #:use-module (gnu packages pkg-config) + #:use-module (gnu packages polkit) + #:use-module (gnu packages protobuf) #:use-module (gnu packages xdisorg) + #:use-module (gnu packages xml) #:use-module (gnu packages xorg) #:use-module (guix build-system gnu) #:use-module (guix download) @@ -79,6 +90,43 @@ calibrated, and restored when the calibration is applied.") (license (list license:bsd-3 ; FindDDCUtil.cmake license:gpl2+)))) ; everything else +(define-public edid-decode + (let ((commit "74b64180d67bb009d8d9ea1b6f18ad41aaa16396") ; 2020-04-22 + (revision "1")) + (package + (name "edid-decode") + (version (git-version "0.0.0" revision commit)) + (source + (origin + (method git-fetch) + (file-name (git-file-name name version)) + (uri (git-reference + (url "git://linuxtv.org/edid-decode.git") + (commit commit))) + (sha256 + (base32 "0nirp5bza08zj5d8bjgcm0p869hdg3qg3mwa7999pjdrzmn7s2ah")))) + (build-system gnu-build-system) + (arguments + `(#:tests? #f ; No test suite + #:make-flags + (list (string-append "DESTDIR=" (assoc-ref %outputs "out")) + "bindir=/bin" "mandir=/share/man") + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'fix-cross-compilation + (lambda* (#:key native-inputs target #:allow-other-keys) + (when target + (substitute* "Makefile" + (("\\$\\(CXX\\)") + (string-append target "-g++")))) + #t)) + (delete 'configure)))) + (home-page "https://git.linuxtv.org/edid-decode.git/") + (synopsis "Decode @dfn{EDID} data in human-readable format") + (description "edid-decode decodes @dfn{EDID} monitor description data in +human-readable format and checks if it conforms to the standards.") + (license license:expat)))) + ;; Distinct from memtest86, which is obsolete. (define-public memtest86+ (package @@ -307,3 +355,112 @@ supported by the Linux kernel.") "Rkdeveloptool can read from and write to RockChip devices over USB, such as the Pinebook Pro.") (license license:gpl2+)))) + +(define-public libqb + (package + (name "libqb") + ;; NOTE: We are using a Release Candidate version (for 2.0) here because + ;; of the linker issues with the previous release. + (version "1.9.1") + (source (origin + (method url-fetch) + (uri (string-append + "https://github.com/ClusterLabs/libqb/releases/download/v" + version "/libqb-" version ".tar.xz")) + (sha256 + (base32 + "008vvw504kh40br5v2xkqavnp9vpmjvf768faqzv1d00fd53ingn")))) + (build-system gnu-build-system) + (native-inputs + `(("pkg-config" ,pkg-config) + ("xmllint" ,libxml2))) + (home-page "https://clusterlabs.github.io/libqb/") + (synopsis "Library providing high performance logging, tracing, ipc, and poll") + (description "Libqb is a library with the primary purpose of providing +high-performance, reusable features for client-server architecture, such as +logging, tracing, inter-process communication (IPC), and polling. Libqb is +not intended to be an all-encompassing library, but instead provide focused +APIs that are highly tuned for maximum performance for client-server +applications.") + (license license:lgpl2.1))) + +(define-public usbguard + (package + (name "usbguard") + (version "0.7.6") + (source (origin + (method url-fetch) + (uri (string-append + "https://github.com/USBGuard/usbguard/releases/download/usbguard-" + version "/usbguard-" version ".tar.gz")) + (file-name (git-file-name name version)) + (sha256 + (base32 "0gzhs8s4aka86mkcjib36z54si939ki4bmk46p6v8kln1fixad3j")))) + (build-system gnu-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-after 'unpack 'patch-build-scripts + (lambda* (#:key inputs #:allow-other-keys) + (substitute* "configure" + (("/usr/include/catch") + (string-append (assoc-ref inputs "catch") "/include"))) + ;; Do not create log directory. + (substitute* "Makefile.in" ((".*/log/usbguard.*") "")) + ;; Disable LDAP tests: they use 'sudo'. + (substitute* "src/Tests/Makefile.in" + (("\\$\\(am__append_2\\)") "")) + #t)) + (add-after 'install 'delete-static-library + (lambda* (#:key outputs #:allow-other-keys) + ;; It can't be direclty disabled since it's needed for the tests. + (delete-file (string-append (assoc-ref outputs "out") + "/lib/libusbguard.a")) + #t)) + (add-after 'install 'install-zsh-completion + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (site-functions + (string-append out "/share/zsh/site-functions"))) + (mkdir-p site-functions) + (copy-file "scripts/usbguard-zsh-completion" + (string-append site-functions "/_usbguard")) + #t)))) + #:make-flags + (list (string-append "BASH_COMPLETION_DIR=" + (assoc-ref %outputs "out") + "/etc/bash_completion.d")) + #:configure-flags + (list + "--localstatedir=/var" + "--enable-systemd=no" + "--with-ldap" + "--with-dbus" + "--with-polkit"))) + (inputs + `(("audit" ,audit) + ("catch" ,catch-framework) + ("dbus-glib" ,dbus-glib) + ("ldap" ,openldap) + ("libcap-ng" ,libcap-ng) + ("libseccomp" ,libseccomp) + ("libsodium" ,libsodium) + ("pegtl" ,pegtl) + ("polkit" ,polkit) + ("protobuf" ,protobuf) + ("libqb" ,libqb))) + (native-inputs + `(("asciidoc" ,asciidoc) + ("bash-completion" ,bash-completion) + ("gdbus-codegen" ,glib "bin") + ("umockdev" ,umockdev) + ("xmllint" ,libxml2) + ("xsltproc" ,libxslt) + ("pkg-config" ,pkg-config))) + (home-page "https://usbguard.github.io") + (synopsis "Helps to protect your computer against rogue USB devices (a.k.a. BadUSB)") + (description "USBGuard is a software framework for implementing USB device +authorization policies (what kind of USB devices are authorized) as well as +method of use policies (how a USB device may interact with the system). +Simply put, it is a USB device whitelisting tool.") + (license license:gpl2))) diff --git a/gnu/packages/haskell-apps.scm b/gnu/packages/haskell-apps.scm index d12d113945..ecfe439c4b 100644 --- a/gnu/packages/haskell-apps.scm +++ b/gnu/packages/haskell-apps.scm @@ -1,7 +1,7 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2015 Siniša Biđin <sinisa@bidin.eu> ;;; Copyright © 2015, 2017, 2018 Ricardo Wurmus <rekado@elephly.net> -;;; Copyright © 2016, 2017, 2018 ng0 <ng0@n0.is> +;;; Copyright © 2016, 2017, 2018 Nikita <nikita@n0.is> ;;; Copyright © 2017 Danny Milosavljevic <dannym@scratchpost.org> ;;; Copyright © 2017, 2018 Alex Vong <alexvong1995@gmail.com> ;;; Copyright © 2017, 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr> @@ -11,7 +11,7 @@ ;;; Copyright © 2015 Paul van der Walt <paul@denknerd.org> ;;; Copyright © 2019 Kyle Meyer <kyle@kyleam.com> ;;; Copyright © 2015 John Soo <jsoo1@asu.edu> -;;; Copyright © 2019 Efraim Flashner <efraim@flashner.co.il> +;;; Copyright © 2019, 2020 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2019 Alex Griffin <a@ajgrf.com> ;;; Copyright © 2020 Alexandru-Sergiu Marton <brown121407@member.fsf.org> ;;; Copyright © 2020 Brian Leung <bkleung89@gmail.com> @@ -37,6 +37,7 @@ #:use-module (guix packages) #:use-module ((guix licenses) #:prefix license:) #:use-module (guix build-system haskell) + #:use-module (gnu packages) #:use-module (gnu packages base) #:use-module (gnu packages curl) #:use-module (gnu packages gl) @@ -198,7 +199,7 @@ pre-processors. Additional features include: a plain-text mode; an option to unlit literate code files; and an option to turn off macro-expansion.") (license (list license:lgpl2.1+ license:gpl3+)))) -;; Darcs has no https support: http://irclog.perlgeek.de/darcs/2016-09-17 +;; Darcs has no https support: ;; http://darcs.net/manual/Configuring_darcs.html#SECTION00440070000000000000 ;; and results of search engines will show that if the protocol is http, https ;; is never mentioned. @@ -341,14 +342,15 @@ to @code{cabal repl}).") (define-public git-annex (package (name "git-annex") - (version "8.20200330") + (version "8.20200501") (source (origin (method url-fetch) (uri (string-append "https://hackage.haskell.org/package/" "git-annex/git-annex-" version ".tar.gz")) + (patches (search-patches "git-annex-S3v4.patch")) (sha256 - (base32 "0xy0ld7kr4cfdl4g4yzvrzl5r60dcj33cxm28a4qz6nqm2yhd4sv")))) + (base32 "19rggaymvqy7r61n2rl2nigwdi2hzq5l1afcd5l0k1vbacwgq4jl")))) (build-system haskell-build-system) (arguments `(#:configure-flags diff --git a/gnu/packages/haskell-check.scm b/gnu/packages/haskell-check.scm index c6e89460ea..d571d46945 100644 --- a/gnu/packages/haskell-check.scm +++ b/gnu/packages/haskell-check.scm @@ -3,7 +3,7 @@ ;;; Copyright © 2015 Eric Bavier <bavier@member.fsf.org> ;;; Copyright © 2015 Federico Beffa <beffa@fbengineering.ch> ;;; Copyright © 2015, 2016, 2017, 2018 Ricardo Wurmus <rekado@elephly.net> -;;; Copyright © 2016 ng0 <ng0@n0.is> +;;; Copyright © 2016 Nikita <nikita@n0.is> ;;; Copyright © 2016 David Craven <david@craven.ch> ;;; Copyright © 2017 Danny Milosavljevic <dannym@scratchpost.org> ;;; Copyright © 2017 rsiddharth <s@ricketyspace.net> @@ -215,6 +215,39 @@ with the @url{https://hackage.haskell.org/package/tasty, tasty testing framework}.") (license license:bsd-3))) +(define-public ghc-tasty-hspec + (package + (name "ghc-tasty-hspec") + (version "1.1.5.1") + (source + (origin + (method url-fetch) + (uri (string-append + "mirror://hackage/package/tasty-hspec/tasty-hspec-" + version + ".tar.gz")) + (sha256 + (base32 + "0i9kdzjpk750sa078jj3iyhp72k0177zk7vxl131r6dkyz09x27y")))) + (build-system haskell-build-system) + (inputs + `(("ghc-hspec" ,ghc-hspec) + ("ghc-hspec-core" ,ghc-hspec-core) + ("ghc-quickcheck" ,ghc-quickcheck) + ("ghc-tasty" ,ghc-tasty) + ("ghc-tasty-smallcheck" ,ghc-tasty-smallcheck) + ("ghc-tasty-quickcheck" ,ghc-tasty-quickcheck))) + (arguments + `(#:cabal-revision + ("4" "1yppwhs2r2rlwrzli9ccv5ldgl95h5p7pqhsr898r3das6daf6sk"))) + (home-page + "https://github.com/mitchellwrosen/tasty-hspec") + (synopsis + "Hspec support for the Tasty test framework") + (description + "This package provides a Tasty provider for Hspec test suites.") + (license license:bsd-3))) + (define-public ghc-tasty-hunit (package (name "ghc-tasty-hunit") diff --git a/gnu/packages/haskell-crypto.scm b/gnu/packages/haskell-crypto.scm index 4170ec82f0..b9b350b61a 100644 --- a/gnu/packages/haskell-crypto.scm +++ b/gnu/packages/haskell-crypto.scm @@ -1,7 +1,7 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2015 Paul van der Walt <paul@denknerd.org> ;;; Copyright © 2015, 2017, 2018, 2019 Ricardo Wurmus <rekado@elephly.net> -;;; Copyright © 2016 ng0 <ng0@n0.is> +;;; Copyright © 2016 Nikita <nikita@n0.is> ;;; Copyright © 2017 rsiddharth <s@ricketyspace.net> ;;; Copyright © 2017, 2019 Tobias Geerinckx-Rice <me@tobias.gr> ;;; diff --git a/gnu/packages/haskell-web.scm b/gnu/packages/haskell-web.scm index 05be862a85..4689025432 100644 --- a/gnu/packages/haskell-web.scm +++ b/gnu/packages/haskell-web.scm @@ -655,6 +655,87 @@ limitation, automatic pruning, energy saving and replay resistance.") a WAI handler, via the native Haskell TLS implementation.") (license license:expat))) +(define-public ghc-websockets + (package + (name "ghc-websockets") + (version "0.12.6.1") + (source + (origin + (method url-fetch) + (uri (string-append + "mirror://hackage/package/websockets/websockets-" + version + ".tar.gz")) + (sha256 + (base32 + "1vp3790w3hmr6v96314vdx74f7sg2c7hvnc93gafq0xhbxnr7nvx")))) + (build-system haskell-build-system) + (inputs + `(("ghc-attoparsec" ,ghc-attoparsec) + ("ghc-base64-bytestring" ,ghc-base64-bytestring) + ("ghc-bytestring-builder" ,ghc-bytestring-builder) + ("ghc-case-insensitive" ,ghc-case-insensitive) + ("ghc-network" ,ghc-network) + ("ghc-random" ,ghc-random) + ("ghc-sha" ,ghc-sha) + ("ghc-streaming-commons" ,ghc-streaming-commons) + ("ghc-entropy" ,ghc-entropy))) + (native-inputs + `(("ghc-hunit" ,ghc-hunit) + ("ghc-quickcheck" ,ghc-quickcheck) + ("ghc-test-framework" ,ghc-test-framework) + ("ghc-test-framework-hunit" ,ghc-test-framework-hunit) + ("ghc-test-framework-quickcheck2" ,ghc-test-framework-quickcheck2))) + (home-page "https://jaspervdj.be/websockets/") + (synopsis + "Write WebSocket-capable servers in Haskell") + (description + "This library allows you to write WebSocket-capable servers. + +An example server: +@url{https://github.com/jaspervdj/websockets/blob/master/example/server.lhs} +An example client: +@url{https://github.com/jaspervdj/websockets/blob/master/example/client.hs} + +See also: +@itemize +@item The specification of the WebSocket protocol: +@url{http://www.whatwg.org/specs/web-socket-protocol/} +@item The JavaScript API for dealing with WebSockets: +@url{http://www.w3.org/TR/websockets/} +@end itemize") + (license license:bsd-3))) + +(define-public ghc-wai-websockets + (package + (name "ghc-wai-websockets") + (version "3.0.1.2") + (source + (origin + (method url-fetch) + (uri (string-append + "mirror://hackage/package/wai-websockets/wai-websockets-" + version + ".tar.gz")) + (sha256 + (base32 + "0b2xmdsrsqpssyib53wbr6r8hf75789ndyyanv37sv99iyqcwz4i")))) + (build-system haskell-build-system) + (inputs + `(("ghc-wai" ,ghc-wai) + ("ghc-case-insensitive" ,ghc-case-insensitive) + ("ghc-network" ,ghc-network) + ("ghc-websockets" ,ghc-websockets) + ("ghc-http-types" ,ghc-http-types))) + (arguments + `(#:configure-flags '("--flags=-example"))) + (home-page "https://github.com/yesodweb/wai") + (synopsis + "Provide a bridge between WAI and the websockets package") + (description + "Use websockets with WAI applications, primarily those hosted via Warp.") + (license license:expat))) + (define-public ghc-xss-sanitize (package (name "ghc-xss-sanitize") @@ -924,6 +1005,39 @@ the function @code{aesonQQ} that compile-time converts a string representation of a JSON value into a @code{Data.Aeson.Value}.") (license license:expat))) +(define-public ghc-aeson-better-errors + (package + (name "ghc-aeson-better-errors") + (version "0.9.1.0") + (source + (origin + (method url-fetch) + (uri (string-append + "mirror://hackage/package/aeson-better-errors/aeson-better-errors-" + version + ".tar.gz")) + (sha256 + (base32 + "09vkyrhwak3bmpfsqcd2az8hfqqkxyhg468hv5avgisy0nzh3w38")))) + (build-system haskell-build-system) + (inputs + `(("ghc-aeson" ,ghc-aeson) + ("ghc-unordered-containers" ,ghc-unordered-containers) + ("ghc-dlist" ,ghc-dlist) + ("ghc-scientific" ,ghc-scientific) + ("ghc-vector" ,ghc-vector) + ("ghc-transformers-compat" ,ghc-transformers-compat) + ("ghc-void" ,ghc-void))) + (home-page + "https://github.com/hdgarrood/aeson-better-errors") + (synopsis + "Better error messages when decoding JSON values in Haskell") + (description + "Gives you the tools to build parsers to decode JSON values, and gives +good error messages when parsing fails. See also +@url{http://harry.garrood.me/blog/aeson-better-errors/}.") + (license license:expat))) + (define-public ghc-multipart (package (name "ghc-multipart") @@ -1693,3 +1807,100 @@ non-Haskell dependencies.") and Perl's @code{Web::Scraper}. Scalpel builds on top of TagSoup to provide a declarative and monadic interface.") (license license:asl2.0))) + +(define-public ghc-sourcemap + (package + (name "ghc-sourcemap") + (version "0.1.6") + (source + (origin + (method url-fetch) + (uri (string-append + "mirror://hackage/package/sourcemap/sourcemap-" + version + ".tar.gz")) + (sha256 + (base32 + "0ynfm44ym8y592wnzdwa0d05dbkffyyg5sm26y5ylzpynk64r85r")))) + (build-system haskell-build-system) + (inputs + `(("ghc-aeson" ,ghc-aeson) + ("ghc-unordered-containers" ,ghc-unordered-containers) + ("ghc-attoparsec" ,ghc-attoparsec) + ("ghc-utf8-string" ,ghc-utf8-string))) + (arguments + `(#:tests? #f ; FIXME: Fail to compile + #:cabal-revision + ("1" "1f7q44ar6qfip8fsllg43jyn7r15ifn2r0vz32cbmx0sb0d38dax"))) + (home-page + "http://hackage.haskell.org/package/sourcemap") + (synopsis + "Implementation of source maps as proposed by Google and Mozilla") + (description + "Sourcemap provides an implementation of source maps, revision 3, +proposed by Google and Mozilla here +@url{https://wiki.mozilla.org/DevTools/Features/SourceMap}.") + (license license:bsd-3))) + +(define-public ghc-language-javascript + (package + (name "ghc-language-javascript") + (version "0.7.0.0") + (source + (origin + (method url-fetch) + (uri (string-append + "mirror://hackage/package/language-javascript/language-javascript-" + version + ".tar.gz")) + (sha256 + (base32 + "15bpqpkjf2y3fk8wff9zlnkpsjc63bnbvhlkxrs9alj0bikq17nk")))) + (build-system haskell-build-system) + (inputs + `(("ghc-blaze-builder" ,ghc-blaze-builder) + ("ghc-utf8-string" ,ghc-utf8-string))) + (native-inputs + `(("ghc-alex" ,ghc-alex) + ("ghc-quickcheck" ,ghc-quickcheck) + ("ghc-happy" ,ghc-happy) + ("ghc-hspec" ,ghc-hspec) + ("ghc-utf8-light" ,ghc-utf8-light))) + (home-page + "https://github.com/erikd/language-javascript") + (synopsis "Parser for JavaScript") + (description + "Parses Javascript into an Abstract Syntax Tree (AST). Initially intended +as frontend to hjsmin.") + (license license:bsd-3))) + +(define-public ghc-bower-json + (package + (name "ghc-bower-json") + (version "1.0.0.1") + (source + (origin + (method url-fetch) + (uri (string-append + "mirror://hackage/package/bower-json/bower-json-" + version + ".tar.gz")) + (sha256 + (base32 + "0wvygg3rdbxzrmr61a9w6ddv9pfric85ih8hnxyk0ydzn7i59abs")))) + (build-system haskell-build-system) + (inputs + `(("ghc-aeson" ,ghc-aeson) + ("ghc-aeson-better-errors" ,ghc-aeson-better-errors) + ("ghc-scientific" ,ghc-scientific) + ("ghc-transformers" ,ghc-transformers) + ("ghc-unordered-containers" ,ghc-unordered-containers))) + (native-inputs + `(("ghc-tasty" ,ghc-tasty) + ("ghc-tasty-hunit" ,ghc-tasty-hunit))) + (home-page "https://github.com/hdgarrood/bower-json") + (synopsis "Read bower.json from Haskell") + (description + "This package provides a data type and ToJSON/FromJSON instances for +Bower's package manifest file, bower.json.") + (license license:expat))) diff --git a/gnu/packages/haskell-xyz.scm b/gnu/packages/haskell-xyz.scm index c9119efd69..29d3077755 100644 --- a/gnu/packages/haskell-xyz.scm +++ b/gnu/packages/haskell-xyz.scm @@ -4,7 +4,7 @@ ;;; Copyright © 2015 Paul van der Walt <paul@denknerd.org> ;;; Copyright © 2015, 2019 Eric Bavier <bavier@member.fsf.org> ;;; Copyright © 2016, 2018, 2019 Ludovic Courtès <ludo@gnu.org> -;;; Copyright © 2016, 2017 ng0 <ng0@n0.is> +;;; Copyright © 2016, 2017 Nikita <nikita@n0.is> ;;; Copyright © 2016, 2019 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2015, 2016, 2017, 2018, 2019 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2016, 2017 David Craven <david@craven.ch> @@ -456,6 +456,34 @@ colored output using the ansi-terminal package.") style.") (license license:bsd-3))) +(define-public ghc-assoc + (package + (name "ghc-assoc") + (version "1.0.1") + (source + (origin + (method url-fetch) + (uri (string-append + "https://hackage.haskell.org/package/assoc/assoc-" + version + ".tar.gz")) + (sha256 + (base32 + "1m9n4vp190bvn2wcrd4ggfwa9pi93jp0zgx02mdgywn2zfidw020")))) + (build-system haskell-build-system) + (inputs + `(("ghc-bifunctors" ,ghc-bifunctors) + ("ghc-tagged" ,ghc-tagged))) + (home-page + "http://hackage.haskell.org/package/assoc") + (synopsis + "Swap and assoc: Symmetric and Semigroupy Bifunctors") + (description + "Provides generalisations of @code{swap :: (a,b) -> (b,a)} and +@code{assoc :: ((a,b),c) -> (a,(b,c))} to @code{Bifunctor}s supporting +similar operations (e.g. @code{Either}, @code{These}).") + (license license:bsd-3))) + (define-public ghc-async (package (name "ghc-async") @@ -6600,7 +6628,7 @@ compiler versions.") (inputs `(("ghc-conduit" ,ghc-conduit) ("ghc-resourcet" ,ghc-resourcet) - ("libyaml" ,libyaml-2.1))) + ("libyaml" ,libyaml))) (home-page "https://github.com/snoyberg/yaml#readme") (synopsis "Low-level, streaming YAML interface.") (description "This package provides a Haskell wrapper over the @@ -7631,6 +7659,41 @@ semi-direct products, \"deletable\" monoids, \"split\" monoids, and \"cut\" monoids.") (license license:bsd-3))) +(define-public ghc-mtl-compat + (package + (name "ghc-mtl-compat") + (version "0.2.2") + (source + (origin + (method url-fetch) + (uri (string-append + "mirror://hackage/package/mtl-compat/mtl-compat-" + version + ".tar.gz")) + (sha256 + (base32 + "17iszr5yb4f17g8mq6i74hsamii8z6m2qfsmgzs78mhiwa7kjm8r")))) + (build-system haskell-build-system) + (home-page + "https://github.com/haskell-compat/mtl-compat") + (synopsis + "Backported Control.Monad.Except module from mtl") + (description + "This package backports the Control.Monad.Except module from mtl (if +using mtl-2.2.0.1 or earlier), which reexports the ExceptT monad transformer +and the MonadError class. + +This package should only be used if there is a need to use the +Control.Monad.Except module specifically. If you just want the mtl class +instances for ExceptT, use transformers-compat instead, since mtl-compat does +nothing but reexport the instances from that package. + +Note that unlike how mtl-2.2 or later works, the Control.Monad.Except +module defined in this package exports all of ExceptT's monad class instances. +Therefore, you may have to declare @code{import Control.Monad.Except ()} at +the top of your file to get all of the ExceptT instances in scope.") + (license license:bsd-3))) + (define-public ghc-murmur-hash (package (name "ghc-murmur-hash") @@ -8724,6 +8787,29 @@ of two versions of a source file. It provides a good balance between performance, nice output for humans, and simplicity of implementation.") (license license:bsd-3))) +(define-public ghc-pattern-arrows + (package + (name "ghc-pattern-arrows") + (version "0.0.2") + (source + (origin + (method url-fetch) + (uri (string-append + "mirror://hackage/package/pattern-arrows/pattern-arrows-" + version + ".tar.gz")) + (sha256 + (base32 + "13q7bj19hd60rnjfc05wxlyck8llxy11z3mns8kxg197wxrdkhkg")))) + (build-system haskell-build-system) + (home-page + "https://blog.functorial.com/posts/2013-10-27-Pretty-Printing-Arrows.html") + (synopsis "Arrows for Pretty Printing") + (description + "A library for generating concise pretty printers based on precedence +rules.") + (license license:expat))) + (define-public ghc-pcre-light (package (name "ghc-pcre-light") @@ -9246,6 +9332,33 @@ project-template tries to provide a canonical Haskell library for implementing the ideal templating system.") (license license:bsd-3))) +(define-public ghc-protolude + (package + (name "ghc-protolude") + (version "0.2.3") + (source + (origin + (method url-fetch) + (uri (string-append + "mirror://hackage/package/protolude/protolude-" + version + ".tar.gz")) + (sha256 + (base32 + "0zzkyxz0vmcbncpid7gp72fpjj0fla3gqhlfkij5c5lg12skjgfj")))) + (build-system haskell-build-system) + (inputs + `(("ghc-async" ,ghc-async) + ("ghc-hashable" ,ghc-hashable) + ("ghc-mtl-compat" ,ghc-mtl-compat) + ("ghc-transformers-compat" ,ghc-transformers-compat))) + (home-page "https://github.com/protolude/protolude") + (synopsis "Sensible set of defaults for writing custom Preludes") + (description + "Protolude gives you sensible defaults for writing custom Preludes to +replace the standard one provided by GHC.") + (license license:expat))) + (define-public ghc-psqueues (package (name "ghc-psqueues") @@ -10406,6 +10519,46 @@ Haskell") a memory chunk that will be auto-scrubbed after it run out of scope.") (license license:bsd-3))) +(define-public ghc-semialign + (package + (name "ghc-semialign") + (version "1") + (source + (origin + (method url-fetch) + (uri (string-append + "https://hackage.haskell.org/package/semialign/semialign-" + version + ".tar.gz")) + (sha256 + (base32 + "004x0a80sqqdgvsyk4z0nasxpi6z3g1d8kgwj804bj9ka8dlc75m")))) + (build-system haskell-build-system) + (inputs + `(("ghc-these" ,ghc-these) + ("ghc-base-compat" ,ghc-base-compat) + ("ghc-hashable" ,ghc-hashable) + ("ghc-tagged" ,ghc-tagged) + ("ghc-unordered-containers" ,ghc-unordered-containers) + ("ghc-vector" ,ghc-vector) + ("ghc-semigroupoids" ,ghc-semigroupoids))) + (arguments + `(#:cabal-revision + ("1" + "0qnqnyfng4kwy2h2anrcy5id2ijnawava3zcc5h5b8ri1y6ks6zi"))) + (home-page + "https://github.com/isomorphism/these") + (synopsis + "Align and Zip type-classes from the common Semialign ancestor ") + (description + "The major use of @code{These} of this is provided by the +@code{align} member of @code{Semialign} class, representing a +generalized notion of \"zipping with padding\" that combines +structures without truncating to the size of the smaller input. It +turns out that @code{zip} operation fits well the @code{Semialign} +class, forming lattice-like structure.") + (license license:bsd-3))) + (define-public ghc-semigroupoids (package (name "ghc-semigroupoids") @@ -11887,6 +12040,63 @@ and @code{Eq} instances. These instances used to live in the haskell-src-meta package, and that's where the version number started.") (license license:bsd-3))) +(define-public ghc-these + (package + (name "ghc-these") + (version "1.0.1") + (source + (origin + (method url-fetch) + (uri (string-append + "https://hackage.haskell.org/package/these/these-" + version + ".tar.gz")) + (sha256 + (base32 + "1k0pi65g7cm9hzdw6my6bzz2zvddkmj1qs45ymqmi316bpiixk3r")))) + (build-system haskell-build-system) + (inputs + `(("ghc-base-compat" ,ghc-base-compat) + ("ghc-hashable" ,ghc-hashable) + ("ghc-aeson" ,ghc-aeson) + ("ghc-unordered-containers" ,ghc-unordered-containers) + ("ghc-assoc" ,ghc-assoc) + ("ghc-semigroupoids" ,ghc-semigroupoids) + ("ghc-quickcheck" ,ghc-quickcheck))) + (arguments + `(#:cabal-revision + ("1" + "0923r86fnmgpx0msm68aszirh2n19nn5bccgjxfh2146jw4z7w3z"))) + (home-page + "https://github.com/isomorphism/these") + (synopsis "Either-or-both data type") + (description + "This package provides a data type @code{These a b} which can +hold a value of either type or values of each type. This is usually +thought of as an \"inclusive or\" type (contrasting @code{Either a b} as +\"exclusive or\") or as an \"outer join\" type (contrasting @code{(a, b)} +as \"inner join\"). + +@code{data These a b = This a | That b | These a b} + +Since version 1, this package was split into parts: + +@itemize +@item +https://hackage.haskell.org/package/semialign For @code{Align} and +@code{Zip} type-classes. +@item +https://hackage.haskell.org/package/semialign-indexed For +@code{SemialignWithIndex} class, providing @code{ialignWith} and +@code{izipWith} +@item +https://hackage.haskell.org/package/these-lens For lens combinators. +@item +http://hackage.haskell.org/package/monad-chronicle For transformers +variant of @code{These}. +@end itemize") + (license license:bsd-3))) + (define-public ghc-threads (package (name "ghc-threads") @@ -12127,6 +12337,45 @@ from a shell. The @code{tldr} pages are a community effort to simplify the man pages with practical examples.") (license license:bsd-3))) +(define-public ghc-transformers + (package + (name "ghc-transformers") + (version "0.5.6.2") + (source + (origin + (method url-fetch) + (uri (string-append + "mirror://hackage/package/transformers/transformers-" + version + ".tar.gz")) + (sha256 + (base32 + "0v66j5k0xqk51pmca55wq192qyw2p43s2mgxlz4f95q2c1fpjs5n")))) + (build-system haskell-build-system) + (home-page + "http://hackage.haskell.org/package/transformers") + (synopsis "Concrete functor and monad transformers") + (description + "Transformers provides functor and monad transformers, inspired by the +paper \"Functional Programming with Overloading and Higher-Order +Polymorphism\", by Mark P Jones, in Advanced School of Functional Programming, +1995 @url{http://web.cecs.pdx.edu/~mpj/pubs/springschool.html}. + +This package contains: +@itemize +@item the monad transformer class (in @code{Control.Monad.Trans.Class}) +@item concrete functor and monad transformers, each with associated operations +and functions to lift operations associated with other transformers. +@end itemize + +This package can be used on its own in portable Haskell code, in which case +operations need to be manually lifted through transformer stacks (see +@code{Control.Monad.Trans.Class} for some examples). Alternatively, it can be +used with the non-portable monad classes in the mtl or monads-tf packages, +which automatically lift operations introduced by monad transformers through +other transformers.") + (license license:bsd-3))) + (define-public ghc-transformers-base (package (name "ghc-transformers-base") @@ -12671,6 +12920,31 @@ a style ready for qualification, that is, you should import them by parser that uses ByteStrings for parsing and representing the URI data.") (license license:bsd-3))) +(define-public ghc-utf8-light + (package + (name "ghc-utf8-light") + (version "0.4.2") + (source + (origin + (method url-fetch) + (uri (string-append + "mirror://hackage/package/utf8-light/utf8-light-" + version + ".tar.gz")) + (sha256 + (base32 + "0rwyc5z331yfnm4hpx0sph6i1zvkd1z10vvglhnp0vc9wy644k0q")))) + (build-system haskell-build-system) + (home-page + "http://hackage.haskell.org/package/utf8-light") + (synopsis "Lightweight unicode support for Haskell") + (description + "This package profides a class for encoding and decoding UTF8 strings +with instances for several common types. It also includes several functions +for working with UTF8. It aims to be lightweight, depending only on Base and +including only one module.") + (license license:bsd-3))) + (define-public ghc-utf8-string (package (name "ghc-utf8-string") diff --git a/gnu/packages/haskell.scm b/gnu/packages/haskell.scm index 8db650e6ae..e9c8e7f82a 100644 --- a/gnu/packages/haskell.scm +++ b/gnu/packages/haskell.scm @@ -4,7 +4,7 @@ ;;; Copyright © 2015 Paul van der Walt <paul@denknerd.org> ;;; Copyright © 2015, 2019 Eric Bavier <bavier@member.fsf.org> ;;; Copyright © 2016, 2018, 2019 Ludovic Courtès <ludo@gnu.org> -;;; Copyright © 2016, 2017 ng0 <ng0@n0.is> +;;; Copyright © 2016, 2017 Nikita <nikita@n0.is> ;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2015, 2016, 2017, 2018, 2019 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2016, 2017 David Craven <david@craven.ch> @@ -19,6 +19,7 @@ ;;; Copyright © 2018, 2019 Gabriel Hondet <gabrielhondet@gmail.com> ;;; Copyright © 2019 Robert Vollmert <rob@vllmrt.net> ;;; Copyright © 2019 Jacob MacDonald <jaccarmac@gmail.com> +;;; Copyright © 2020 Marius Bakke <mbakke@fastmail.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -37,10 +38,8 @@ (define-module (gnu packages haskell) #:use-module (gnu packages) - #:use-module (gnu packages base) #:use-module (gnu packages bootstrap) #:use-module (gnu packages elf) - #:use-module (gnu packages gcc) #:use-module (gnu packages ghostscript) #:use-module (gnu packages libffi) #:use-module (gnu packages lisp) @@ -172,10 +171,6 @@ top of CLISP.") ;; execution. #:parallel-tests? #f - ;; The DSOs use $ORIGIN to refer to each other, but (guix build - ;; gremlin) doesn't support it yet, so skip this phase. - #:validate-runpath? #f - ;; Don't pass --build=<triplet>, because the configure script ;; auto-detects slightly different triplets for --host and --target and ;; then complains that they don't match. @@ -321,9 +316,7 @@ interactive environment for the functional language Haskell.") (sha256 (base32 "1c8qc4fhkycynk4g1f9hvk53dj6a1vvqi6bklqznns6hw59m8qhi")) (patches - (search-patches - "ghc-dont-pass-linker-flags-via-response-files.patch" - "ghc-8.0-fall-back-to-madv_dontneed.patch")))) + (search-patches "ghc-8.0-fall-back-to-madv_dontneed.patch")))) (build-system gnu-build-system) (supported-systems '("i686-linux" "x86_64-linux")) (outputs '("out" "doc")) @@ -351,10 +344,6 @@ interactive environment for the functional language Haskell.") ;; execution. #:parallel-tests? #f - ;; The DSOs use $ORIGIN to refer to each other, but (guix build - ;; gremlin) doesn't support it yet, so skip this phase. - #:validate-runpath? #f - ;; Don't pass --build=<triplet>, because the configure script ;; auto-detects slightly different triplets for --host and --target and ;; then complains that they don't match. @@ -424,22 +413,18 @@ interactive environment for the functional language Haskell.") (define-public ghc-8.4 (package (inherit ghc-8.0) (name "ghc") - (version "8.4.3") + (version "8.4.4") (source (origin (method url-fetch) (uri (string-append "https://www.haskell.org/ghc/dist/" version "/" name "-" version "-src.tar.xz")) (sha256 - (base32 "1mk046vb561j75saz05rghhbkps46ym5aci4264dwc2qk3dayixf")))) + (base32 "1ch4j2asg7pr52ai1hwzykxyj553wndg7wq93i47ql4fllspf48i")))) (inputs `(("gmp" ,gmp) ("ncurses" ,ncurses) - ("libffi" ,libffi) - ("target-binutils" ,binutils) - ("target-gcc" ,gcc) - ("target-ld-wrapper" ,(make-ld-wrapper "ld-wrapper" - #:binutils binutils)))) + ("libffi" ,libffi))) (native-inputs `(("perl" ,perl) ("python" ,python) ; for tests @@ -454,17 +439,13 @@ interactive environment for the functional language Haskell.") version "/" name "-" version "-testsuite.tar.xz")) (sha256 (base32 - "1z55b1z0m3plqd2d1ks6w5wvx7igm7zsk3i4v7cms003z0as0hzz")))))) + "0s8lf9sxj7n89pjagi58b3fahnp34qvmwhnn0j1fbg6955vbrfj6")))))) (arguments `(#:test-target "test" ;; We get a smaller number of test failures by disabling parallel test ;; execution. #:parallel-tests? #f - ;; The DSOs use $ORIGIN to refer to each other, but (guix build - ;; gremlin) doesn't support it yet, so skip this phase. - #:validate-runpath? #f - ;; Don't pass --build=<triplet>, because the configure script ;; auto-detects slightly different triplets for --host and --target and ;; then complains that they don't match. @@ -514,9 +495,9 @@ interactive environment for the functional language Haskell.") ;; plain command names. (add-before 'configure 'set-target-programs (lambda* (#:key inputs #:allow-other-keys) - (let ((binutils (assoc-ref inputs "target-binutils")) - (gcc (assoc-ref inputs "target-gcc")) - (ld-wrapper (assoc-ref inputs "target-ld-wrapper"))) + (let ((binutils (assoc-ref inputs "binutils")) + (gcc (assoc-ref inputs "gcc")) + (ld-wrapper (assoc-ref inputs "ld-wrapper"))) (setenv "CC" (string-append gcc "/bin/gcc")) (setenv "CXX" (string-append gcc "/bin/g++")) (setenv "LD" (string-append ld-wrapper "/bin/ld")) @@ -573,6 +554,7 @@ interactive environment for the functional language Haskell.") (uri (string-append "https://www.haskell.org/ghc/dist/" version "/" name "-" version "-testsuite.tar.xz")) + (patches (search-patches "ghc-testsuite-dlopen-pie.patch")) (sha256 (base32 "0pw9r91g2np3i806g2f4f8z4jfdd7mx226cmdizk4swa7av1qf91")))) @@ -588,10 +570,10 @@ interactive environment for the functional language Haskell.") ,make-flags)) ((#:phases phases '%standard-phases) `(modify-phases ,phases - ;; These two tests refer to the root user, which doesn't exist - ;; (see <https://bugs.gnu.org/36692>). (add-after 'unpack-testsuite 'skip-tests (lambda _ + ;; These two tests refer to the root user, which doesn't exist + ;; (see <https://bugs.gnu.org/36692>). (substitute* "libraries/unix/tests/all.T" (("^test\\('T8108'") "# guix skipped: test('T8108'")) (substitute* "libraries/unix/tests/libposix/all.T" diff --git a/gnu/packages/heads.scm b/gnu/packages/heads.scm new file mode 100644 index 0000000000..b28433431c --- /dev/null +++ b/gnu/packages/heads.scm @@ -0,0 +1,163 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2020 Danny Milosavljevic <dannym@scratchpost.org> +;;; +;;; This file is part of GNU Guix. +;;; +;;; GNU Guix is free software; you can redistribute it and/or modify it +;;; under the terms of the GNU General Public License as published by +;;; the Free Software Foundation; either version 3 of the License, or (at +;;; your option) any later version. +;;; +;;; GNU Guix is distributed in the hope that it will be useful, but +;;; WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;;; GNU General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>. + +(define-module (gnu packages heads) + #:use-module ((guix licenses) #:prefix license:) + #:use-module (guix build-system gnu) + #:use-module (guix packages) + #:use-module (guix download) + #:use-module (guix git-download) + #:use-module (guix utils) + #:use-module (gnu packages) + #:use-module (gnu packages admin) + #:use-module (gnu packages algebra) + #:use-module (gnu packages assembly) + #:use-module (gnu packages autotools) + #:use-module (gnu packages base) + #:use-module (gnu packages bash) + #:use-module (gnu packages compression) + #:use-module (gnu packages flex) + #:use-module (gnu packages bison) + #:use-module (gnu packages elf) + #:use-module (gnu packages m4) + #:use-module (gnu packages curl) + #:use-module (gnu packages linux) + #:use-module (gnu packages multiprecision) + #:use-module (gnu packages python) + #:use-module (gnu packages cpio) + #:use-module (gnu packages file) + #:use-module (gnu packages perl) + #:use-module (gnu packages version-control) + #:use-module (gnu packages virtualization) + #:use-module ((guix build utils) #:select (alist-replace))) + +(define-public musl-cross + (let ((revision "3") + (commit "a8a66490dae7f23a2cf5e256f3a596d1ccfe1a03")) + (package + (name "musl-cross") + (version (git-version "0.1" revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/GregorR/musl-cross") + (commit commit))) + (file-name "musl-cross-checkout") + (sha256 + (base32 + "1xvl9y017wb2qaphy9zqh3vrhm8hklr8acvzzcjc35d1jjhyl58y")) + (patches (search-patches "musl-cross-locale.patch")))) + (build-system gnu-build-system) + (arguments + `(#:tests? #f ; No tests in main project. + #:modules + ((guix build utils) + (guix build gnu-build-system) + (srfi srfi-1)) ; drop + #:phases + (modify-phases %standard-phases + (replace 'configure + (lambda _ + (setenv "SHELL" "bash") + (setenv "CONFIG_SHELL" "bash") + #t)) + (add-after 'unpack 'unpack-dependencies + (lambda* (#:key inputs outputs #:allow-other-keys) + (define (install-file* source-key destination-directory + destination-suffix) + (let* ((source-file (assoc-ref inputs source-key)) + (source-basename (basename source-file)) + (source-parts (string-split source-basename #\-)) + (destination-file + (string-join (drop source-parts 1) "-"))) + (copy-file source-file + (string-append destination-directory "/" + destination-file destination-suffix)))) + (for-each (lambda (name) + (install-file* name "tarballs" "")) + '("binutils" "target-gcc-5" "linux-headers" "musl")) + (copy-file (string-append (assoc-ref inputs "config.sub") + "/share/automake-1.16/config.sub") + "tarballs/config.sub;hb=3d5db9ebe860") + (copy-file (string-append (assoc-ref inputs "config.sub") + "/share/automake-1.16/config.guess") + "tarballs/config.guess;hb=3d5db9ebe860") + (substitute* "config.sh" + (("^CC_BASE_PREFIX=.*") + (string-append "CC_BASE_PREFIX=" (assoc-ref outputs "out") + "/crossgcc\n"))) + ;; Note: Important: source/gcc-5.3.0/gcc/exec-tool.in + ;; Note: Important: source/kernel-headers-3.12.6-5/tools/install.sh + ;; Note: Important: move-if-change (twice) + ;; Make sure that shebangs are patched after new extractions. + (substitute* "defs.sh" + (("touch \"[$]2/extracted\"") + (string-append "touch \"$2/extracted\" +for s in mkinstalldirs move-if-change compile depcomp callprocs configure \\ +mkdep compile libtool-ldflags config.guess install-sh missing config.sub \\ +config.rpath progtest.m4 lib-ld.m4 acx.m4 gen-fixed.sh mkheader.sh ylwrap \\ +merge.sh godeps.sh lock-and-run.sh print-sysroot-suffix.sh mkconfig.sh \\ +genmultilib exec-tool.in install.sh +do + find . -name $s -exec sed -i -e 's;!/bin/sh;!" (assoc-ref inputs "bash") +"/bin/sh;' '{}' ';' + find . -name $s -exec sed -i -e 's; /bin/sh; " (assoc-ref inputs "bash") +"/bin/sh;' '{}' ';' +done +" ))) + #t)) + (replace 'build + (lambda* (#:key outputs #:allow-other-keys) + (invoke "./build.sh"))) + (delete 'install)))) + (native-inputs + `(("config.sub" ,automake) + ("bash" ,bash) + ("flex" ,flex) + ("gmp" ,gmp) + ("mpfr" ,mpfr) + ("mpc" ,mpc) + ("binutils" + ,(origin + (method url-fetch) + (uri "https://ftpmirror.gnu.org/gnu/binutils/binutils-2.27.tar.bz2") + (sha256 + (base32 "125clslv17xh1sab74343fg6v31msavpmaa1c1394zsqa773g5rn")))) + ("target-gcc-5" + ,(origin + (method url-fetch) + (uri "https://ftpmirror.gnu.org/gnu/gcc/gcc-5.3.0/gcc-5.3.0.tar.bz2") + (sha256 + (base32 "1ny4smkp5bzs3cp8ss7pl6lk8yss0d9m4av1mvdp72r1x695akxq")))) + ("linux-headers" + ,(origin + (method url-fetch) + (uri "http://ftp.barfooze.de/pub/sabotage/tarballs/linux-headers-4.19.88.tar.xz") + (sha256 + (base32 "1srgi2nqw892jb6yd4kzacf2xzwfvzhsv2957xfh1nvbs7varwyk")))) + ("musl" + ,(origin + (method url-fetch) + (uri "http://www.musl-libc.org/releases/musl-1.1.24.tar.gz") + (sha256 + (base32 "18r2a00k82hz0mqdvgm7crzc7305l36109c0j9yjmkxj2alcjw0k")))))) + (home-page "https://github.com/osresearch/heads") + (synopsis "Musl-cross gcc 5 toolchain") + (description "Musl-cross toolchain: binutils, gcc 5 and musl.") + (license license:isc)))) diff --git a/gnu/packages/hurd.scm b/gnu/packages/hurd.scm index d483badbc5..55c40710fa 100644 --- a/gnu/packages/hurd.scm +++ b/gnu/packages/hurd.scm @@ -2,6 +2,10 @@ ;;; Copyright © 2014, 2015, 2016, 2017 Manolis Fragkiskos Ragkousis <manolis837@gmail.com> ;;; Copyright © 2018, 2020 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2020 Efraim Flashner <efraim@flashner.co.il> +;;; Copyright © 2020 Marius Bakke <mbakke@fastmail.com> +;;; Copyright © 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org> +;;; Copyright © 2020 Ricardo Wurmus <rekado@elephly.net> +;;; Copyright © 2020 Rene Saavedra <pacoon@protonmail.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -19,22 +23,33 @@ ;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>. (define-module (gnu packages hurd) - #:use-module (guix licenses) + #:use-module ((guix licenses) #:hide (zlib)) #:use-module (guix download) #:use-module (guix packages) #:use-module (gnu packages) + #:use-module (guix gexp) #:use-module (guix utils) #:use-module (guix build-system gnu) #:use-module (guix build-system trivial) #:use-module (gnu packages autotools) + #:use-module (gnu packages compression) #:use-module (gnu packages flex) + #:use-module (gnu packages gawk) + #:use-module (gnu packages gnupg) #:use-module (gnu packages bison) + #:use-module (gnu packages libdaemon) + #:use-module (gnu packages linux) #:use-module (gnu packages perl) + #:use-module (gnu packages pkg-config) #:use-module (gnu packages base) + #:use-module (gnu packages bash) #:use-module (gnu packages texinfo) + #:use-module (gnu packages onc-rpc) + #:use-module (gnu packages xorg) ; libpciaccess #:use-module (guix git-download) - #:export (hurd-triplet? - hurd-target?)) + #:export (hurd-system? + hurd-target? + hurd-triplet?)) (define (hurd-triplet? triplet) (and (string-suffix? "-gnu" triplet) @@ -44,7 +59,12 @@ "Return true if the cross-compilation target or the current system is GNU/Hurd." (or (and=> (%current-target-system) hurd-triplet?) - (string-suffix? (%current-system) "-gnu"))) + (and (not (%current-target-system)) + (and=> (%current-system) hurd-triplet?)))) + +(define (hurd-system?) + "Return true if the current system is the Hurd." + (and=> (%current-system) hurd-triplet?)) (define (hurd-source-url version) (string-append "mirror://gnu/hurd/hurd-" @@ -129,11 +149,11 @@ communication.") (define-public hurd-headers ;; Resort to a post-0.9 snapshot that provides the 'file_utimens' and ;; 'file_exec_paths' RPCs that glibc 2.28 expects. - (let ((revision "0") - (commit "98b33905c89b7e5c309c74ae32302a5745901a6e")) + (let ((revision "1") + (commit "91a51672ff4cfe1f1a0712b4c542ded3081c825b")) (package (name "hurd-headers") - (version "0.9") + (version (git-version "0.9" revision commit)) (source (origin (method git-fetch) (uri (git-reference @@ -141,7 +161,7 @@ communication.") (commit commit))) (sha256 (base32 - "1mj22sxgscas2675vrbxr477mwbxdj68pqcrh65lbir8qlssrgrf")) + "16k9wkahz9wasviijz53n6i13nmiwa9fs64ikf1jqh8rl60hw7cz")) (file-name (git-file-name name version)))) (build-system gnu-build-system) (native-inputs @@ -167,6 +187,7 @@ communication.") "--disable-ncursesw" "--disable-test" "--without-libbz2" + "--without-libcrypt" "--without-libz" ;; Skip the clnt_create check because it expects ;; a working glibc causing a circular dependency. @@ -255,6 +276,8 @@ Hurd-minimal package which are needed for both glibc and GCC.") (name "gnumach") (arguments (substitute-keyword-arguments (package-arguments gnumach-headers) + ((#:configure-flags flags ''()) + `(cons "--enable-kdb" ,flags)) ;enable kernel debugger ((#:phases phases '%standard-phases) `(modify-phases %standard-phases (add-after 'install 'produce-image @@ -275,37 +298,268 @@ Hurd-minimal package which are needed for both glibc and GCC.") (description "GNU Mach is the microkernel upon which a GNU Hurd system is based."))) +(define unifont + ;; GNU Unifont, <http://gnu.org/s/unifont>. + ;; Used the the VGA driver of the Hurd's console client. + (origin + (method url-fetch) + (uri + "http://unifoundry.com/pub/unifont-7.0.06/font-builds/unifont-7.0.06.bdf.gz") + (sha256 + (base32 + "0p2vhnc18cnbmb39vq4m7hzv4mhnm2l0a2s7gx3ar277fwng3hys")))) + +(define (hurd-rc-script) + "Return a script to be installed as /libexec/rc in the 'hurd' package. The +script takes care of installing the relevant passive translators on the first +boot, since this cannot be done from GNU/Linux." + (define translators + '(("/servers/crash-dump-core" ("/hurd/crash" "--dump-core")) + ("/servers/crash-kill" ("/hurd/crash" "--kill")) + ("/servers/crash-suspend" ("/hurd/crash" "--suspend")) + ("/servers/password" ("/hurd/password")) + ("/servers/socket/1" ("/hurd/pflocal")) + ("/servers/socket/2" ("/hurd/pfinet" "--interface" "eth0" + "--address" "10.0.2.15" ;the default QEMU guest IP + "--netmask" "255.255.255.0" + "--gateway" "10.0.2.2" + "--ipv6" "/servers/socket/16")))) + + (define rc + (with-imported-modules '((guix build utils)) + #~(begin + (use-modules (guix build utils) + (ice-9 match)) + + ;; "@HURD@" is a placeholder. + (setenv "PATH" "@HURD@/bin") + + (define (translated? node) + ;; Return true if a translator is installed on NODE. + (with-output-to-port (%make-void-port "w") + (lambda () + (with-error-to-port (%make-void-port "w") + (lambda () + (zero? (system* "showtrans" "-s" node))))))) + + (for-each (match-lambda + ((node command) + (unless (translated? node) + (mkdir-p (dirname node)) + (apply invoke "settrans" "-c" node command)))) + '#$translators) + + ;; Start the oh-so-fancy console client. + (mkdir-p "/var/run") ;for the PID file + (invoke "console" "--daemonize" "-c" "/dev/vcs" + "-d" "vga" "-d" "pc_kbd" "-d" "generic_speaker")))) + + ;; FIXME: We want the program to use the cross-compiled Guile when + ;; cross-compiling. But why do we need to be explicit here? + (with-parameters ((%current-target-system "i586-pc-gnu")) + (program-file "rc" rc))) + +(define dde-sources + ;; This is the current tip of the dde branch + (let ((commit "ac1c7eb7a8b24b7469bed5365be38a968d59a136")) + (origin + (method git-fetch) + (uri (git-reference + (url "https://git.savannah.gnu.org/git/hurd/incubator.git") + (commit commit))) + (sha256 + (base32 + "1vryinbg75xpydfrv9dbgfnds6knlh8l8bk2rxp32y9dc58z0692")) + (file-name (git-file-name "dde" commit))))) + (define-public hurd (package (name "hurd") - (version "0.9") - (source (origin - (method url-fetch) - (uri (hurd-source-url version)) - (sha256 - (base32 - "1nw9gly0n7pyv3cpfm4mmxy4yccrx4g0lyrvd3vk2vil26jpbggw")) - (patches (search-patches "hurd-fix-eth-multiplexer-dependency.patch")))) + (version (package-version hurd-headers)) + (source (origin (inherit (package-source hurd-headers)) + (patches (search-patches "hurd-cross.patch")))) (arguments `(#:phases (modify-phases %standard-phases + (add-after 'unpack 'prepare-dde + (lambda* (#:key native-inputs inputs #:allow-other-keys) + (substitute* "Makefile" + (("libbpf ") + "libbpf libmachdev libmachdevdde libddekit")) + (for-each make-file-writable (find-files ".")) + (let ((dde (or (assoc-ref inputs "dde-sources") + (assoc-ref native-inputs "dde-sources")))) + (for-each (lambda (dir) + (copy-recursively + (string-append dde "/" dir ) dir)) + '("libmachdev" "libmachdevdde" "libddekit"))) + #t)) + (add-after 'unpack 'find-tirpc + (lambda* (#:key inputs #:allow-other-keys) + (for-each (lambda (var) + (setenv var + (string-append (assoc-ref inputs "libtirpc") + "/include/tirpc:" + (or (getenv var) "")))) + '("CROSS_C_INCLUDE_PATH" "C_INCLUDE_PATH" + "CROSS_CPATH" "CPATH")) + #t)) + (add-after 'unpack 'fix-rpc-headers + (lambda _ + (substitute* "nfs/mount.c" + (("#undef (TRUE|FALSE)") "") + (("#include <rpc/pmap_prot.h>" m) + (string-append "#include <rpc/xdr.h>\n" m))) + (substitute* '("nfsd/cache.c") + (("#undef (TRUE|FALSE)") "")) + (substitute* '("nfsd/loop.c" + "nfsd/main.c" + "nfsd/ops.c") + (("#include <rpc/pmap_prot.h>" m) + (string-append "#include <rpc/types.h>\n#include <rpc/xdr.h>\n" m))) + #t)) (add-before 'build 'pre-build - (lambda _ - ;; Don't change the ownership of any file at this time. - (substitute* '("daemons/Makefile" "utils/Makefile") - (("-o root -m 4755") "")) - #t))) + (lambda _ + ;; Don't change the ownership of any file at this time. + (substitute* '("daemons/Makefile" "utils/Makefile") + (("-o root -m 4755") "")) + #t)) + (add-before 'build 'set-file-names + (lambda* (#:key inputs outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (bash (assoc-ref inputs "bash-minimal")) + (coreutils (assoc-ref inputs "coreutils")) + (sed (assoc-ref inputs "sed")) + (grep (assoc-ref inputs "grep")) + (util-linux (assoc-ref inputs "util-linux"))) + (substitute* '("daemons/runttys.c" "daemons/getty.c" "utils/login.c") + (("/bin/login") + (string-append out "/bin/login")) + (("/bin/bash") (string-append bash "/bin/bash"))) + (substitute* '("startup/startup.c" "init/init.c" "config/ttys") + (("/libexec/") + (string-append out "/libexec/"))) + (substitute* '("utils/uptime.sh") + (("/bin/w") + (string-append out "/bin/w"))) + (substitute* "daemons/console-run.c" + (("/hurd/") + (string-append out "/hurd/"))) + + (substitute* '("daemons/runsystem.sh" + "daemons/runsystem.hurd.sh" + "sutils/MAKEDEV.sh") + (("^PATH=.*") + (string-append "PATH=" out "/bin:" out "/sbin:" + coreutils "/bin:" + sed "/bin:" grep "/bin:" + util-linux "/bin\n")) + (("^SHELL=.*") + (string-append "SHELL=" bash "/bin/bash\n")) + (("/sbin/") (string-append out "/sbin/")) + (("/libexec/") (string-append out "/libexec/")) + (("/hurd/") (string-append out "/hurd/"))) + + (substitute* "daemons/runsystem.sh" + (("export PATH") + (string-append "export PATH\n" + "\ +fsysopts / --writable + +# MAKEDEV relies on pipes so this needs to be set up. +settrans -c /servers/socket/1 /hurd/pflocal + +(cd /dev; MAKEDEV -D /dev std vcs tty{1,2,3,4,5,6})\n"))) + + (substitute* "daemons/runsystem.hurd.sh" + (("export PATH") + "export PATH +fsysopts / --writable\n")) + #t))) + (add-after 'patch-shebangs 'patch-libexec-shebangs + (lambda* (#:key inputs outputs #:allow-other-keys) + ;; XXX: Since the 'patch-shebangs' phase doesn't traverse + ;; /libexec, do it here. + (let* ((out (assoc-ref outputs "out")) + (bash (assoc-ref inputs "bash-minimal")) + (path (list (string-append bash "/bin")))) + (for-each (lambda (file) + (patch-shebang file path)) + (find-files (string-append out "/libexec"))) + #t))) + (add-after 'install 'install-goodies + (lambda* (#:key inputs outputs #:allow-other-keys) + ;; Install additional goodies. + ;; TODO: Build & install *.msgids for rpctrace. + (let* ((out (assoc-ref outputs "out")) + (datadir (string-append out "/share/hurd"))) + ;; Install the fancy UTF-8 motd. + (mkdir-p (string-append out "/etc")) + (copy-file "console/motd.UTF8" + (string-append out "/etc/motd")) + + ;; Install the BDF font for use by the console client. + (copy-file (assoc-ref inputs "unifont") + "unifont.gz") + (invoke "gunzip" "unifont.gz") + (mkdir-p datadir) + (copy-file "unifont" + (string-append datadir "/vga-system.bdf")) + #t))) + (add-after 'install 'install-rc-file + (lambda* (#:key inputs outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (file (string-append out "/libexec/rc")) + (rc (assoc-ref inputs "hurd-rc"))) + (delete-file file) + (copy-file rc file) + (substitute* file + (("@HURD@") out)) + #t)))) #:configure-flags (list (string-append "LDFLAGS=-Wl,-rpath=" %output "/lib") "--disable-ncursesw" "--without-libbz2" "--without-libz" - "--without-parted"))) + "--without-parted" + ;; This is needed to pass the configure check for + ;; clnt_create + "ac_func_search_save_LIBS=-ltirpc" + "ac_cv_search_clnt_create=false"))) (build-system gnu-build-system) - (inputs `(("glibc-hurd-headers" ,glibc/hurd-headers))) + (inputs + `(("glibc-hurd-headers" ,glibc/hurd-headers) + ("hurd-rc" ,(hurd-rc-script)) + + ("libgcrypt" ,libgcrypt) ;for /hurd/random + ("libdaemon" ,libdaemon) ;for /bin/console --daemonize + ("unifont" ,unifont) + ("libpciaccess" ,libpciaccess) + + ;; For NFS support + ("libtirpc" ,libtirpc/hurd) + + ;; Tools for the /libexec/* scripts. + ("bash-minimal" ,bash-minimal) + ("coreutils" ,coreutils) + ("sed" ,sed) + ("grep" ,grep) + ("util-linux" ,util-linux))) (native-inputs - `(("mig" ,mig) - ("perl" ,perl))) + `(("autoconf" ,autoconf) + ("automake" ,automake) + ("libgcrypt" ,libgcrypt) ;for 'libgcrypt-config' + ("pkg-config" ,pkg-config) + ("mig" ,(if (%current-target-system) + ;; XXX: When targeting i586-pc-gnu, we need a 32-bit MiG, + ;; hence this hack. + (package + (inherit mig) + (arguments `(#:system "i686-linux"))) + mig)) + ("perl" ,perl) + ("texinfo" ,texinfo-4) + ("dde-sources" ,dde-sources))) (supported-systems %hurd-systems) (home-page "https://www.gnu.org/software/hurd/hurd.html") (synopsis "The kernel servers for the GNU operating system") @@ -315,3 +569,87 @@ augmentation of standard Unix kernels. It is a collection of protocols for system interaction (file systems, networks, authentication), and servers implementing them.") (license gpl2+))) + +(define-public netdde + (let ((commit "4a1016f130b6f2065d3f088325e5fb0b2997ae12") + (revision "1")) + (package + (name "netdde") + ;; The version prefix corresponds to the version of Linux from which the + ;; drivers were taken. + (version (git-version "2.6.32.65" revision commit)) + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://git.savannah.gnu.org/git/hurd/incubator.git") + (commit commit))) + (sha256 + (base32 + "1njv9dszq4lj05yq4v9j5v247hfghpzvvz4hzy0khjjr35mw7hr8")) + (file-name (git-file-name name commit)))) + (build-system gnu-build-system) + (arguments + `(#:make-flags + (list (string-append "SHELL=" (assoc-ref %build-inputs "bash") + "/bin/bash") + "PKGDIR=libdde_linux26" + ,@(if (%current-target-system) + (list "CC=i586-pc-gnu-gcc" + "LINK_PROGRAM=i586-pc-gnu-gcc") + (list "CC=gcc"))) + #:configure-flags + (list (string-append "LDFLAGS=-Wl,-rpath=" %output "/lib")) + #:phases + (modify-phases %standard-phases + (delete 'configure) + (add-after 'unpack 'prepare-dde + (lambda* (#:key native-inputs inputs #:allow-other-keys) + (for-each make-file-writable (find-files ".")) + (let ((dde (or (assoc-ref inputs "dde-sources") + (assoc-ref native-inputs "dde-sources")))) + (for-each (lambda (dir) + (copy-recursively + (string-append dde "/" dir ) dir)) + '("libdde_linux26" "libddekit"))) + (substitute* "libdde_linux26/mk/rel2abs.sh" + (("/bin/bash") (which "bash"))) + #t)) + (add-after 'patch-generated-file-shebangs 'build-libdde-linux26 + (lambda* (#:key make-flags #:allow-other-keys) + (with-directory-excursion "libdde_linux26" + (apply invoke "make" + (delete "PKGDIR=libdde_linux26" make-flags))))) + (add-after 'build-libdde-linux26 'convert + (lambda* (#:key make-flags #:allow-other-keys) + (apply invoke "make" "convert" make-flags))) + (replace 'build + (lambda* (#:key make-flags #:allow-other-keys) + ;; no-common can be dropped with GCC 10+ where this is the + ;; default. + (apply invoke "make" "CFLAGS=-fno-common" make-flags))) + (replace 'install + (lambda* (#:key outputs #:allow-other-keys) + (install-file "netdde" + (string-append (assoc-ref outputs "out") + "/bin")) + #t))))) + (inputs + `(("hurd" ,hurd) + ("libpciaccess" ,libpciaccess) + ("zlib" ,zlib))) + (native-inputs + `(("coreutils" ,coreutils) + ("gawk" ,gawk) + ("grep" ,grep) + ("perl" ,perl) + ("sed" ,sed) + ("dde-sources" ,dde-sources))) + (supported-systems %hurd-systems) + (home-page "https://www.gnu.org/software/hurd/hurd.html") + (synopsis "Linux network drivers glued by the DDE layer") + (description + "This package provides Linux 2.6 network drivers that can be embedded +in userland processes thanks to the DDE layer.") + ;; Some drivers are dually licensed with the options being GPLv2 or one + ;; of MPL/Expat/BSD-3 (dependent on the driver). + (license gpl2)))) diff --git a/gnu/packages/hyperledger.scm b/gnu/packages/hyperledger.scm index 86eb86d3b5..c1b8215584 100644 --- a/gnu/packages/hyperledger.scm +++ b/gnu/packages/hyperledger.scm @@ -188,7 +188,7 @@ link-time. New implementations can be added as well.") ("rxcpp" ,rxcpp) ("spdlog" ,spdlog))) (inputs - `(("boost" ,boost-1.69) + `(("boost" ,boost) ("gflags" ,gflags) ("grpc" ,grpc-1.16.1) ("hyperledger-iroha-ed25519" ,hyperledger-iroha-ed25519) diff --git a/gnu/packages/icu4c.scm b/gnu/packages/icu4c.scm index beeb2d7ff4..cf76c6fe20 100644 --- a/gnu/packages/icu4c.scm +++ b/gnu/packages/icu4c.scm @@ -5,6 +5,7 @@ ;;; Copyright © 2017 Clément Lassieur <clement@lassieur.org> ;;; Copyright © 2017 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2019, 2020 Marius Bakke <mbakke@fastmail.com> +;;; Copyright © 2019 Mathieu Othacehe <m.othacehe@gmail.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -27,57 +28,45 @@ #:use-module (gnu packages python) #:use-module (guix licenses) #:use-module (guix packages) + #:use-module (guix utils) #:use-module (guix download) #:use-module (guix build-system ant) #:use-module (guix build-system gnu)) -;; These patches are taken from ICUs 'maint-64' branch and will be included in -;; 64.3. The latter patch is needed because many packages use "invalid" -;; locales which misbehave with ICU 64.2. See discussion at -;; <https://lists.gnu.org/archive/html/guix-devel/2019-07/msg00343.html>. -(define %icu4c-patches - (list (origin - (method url-fetch) - (uri (string-append "https://github.com/unicode-org/icu/commit/" - "7788f04eb9be0d7ecade6af46cf7b9825447763d.patch")) - (file-name "icu4c-datetime-regression.patch") - (sha256 - (base32 - "0gs2sbdfpzwwdjqcqr0c16fw3g7wy3gb1gbgvzs9k1ciw0bhpv4w"))) - (origin - (method url-fetch) - (uri (string-append "https://github.com/unicode-org/icu/commit/" - "cfb20862909ff105d4f2c43923c97561bc5a5815.patch")) - (file-name "icu4c-locale-mapping.patch") - (sha256 - (base32 - "0s5psb60aisj6icziblvlp9dqcz56n3887i8ib0yidbjnnrw5b97"))))) - (define-public icu4c (package (name "icu4c") - (replacement icu4c/fixed) - (version "64.2") + (version "66.1") (source (origin (method url-fetch) (uri (string-append - "http://download.icu-project.org/files/icu4c/" - version + "https://github.com/unicode-org/icu/releases/download/release-" + (string-map (lambda (x) (if (char=? x #\.) #\- x)) version) "/icu4c-" (string-map (lambda (x) (if (char=? x #\.) #\_ x)) version) "-src.tgz")) - (patches %icu4c-patches) (patch-flags '("-p2")) + (patches (search-patches "icu4c-CVE-2020-10531.patch")) (sha256 - (base32 "0v0xsf14xwlj125y9fd8lrhsaych4d8liv8gr746zng6g225szb2")))) + (base32 "0bharwzc9nzkbrcf405z2nb3h7q0711z450arz0mjmdrk8hg58sj")))) (build-system gnu-build-system) + ;; When cross-compiling, this package needs a source directory of a + ;; native-build of itself. (native-inputs - `(("python" ,python-minimal))) + `(("python" ,python-minimal) + ,@(if (%current-target-system) + `(("icu4c-build-root" ,icu4c-build-root)) + '()))) (inputs `(("perl" ,perl))) (arguments `(#:configure-flags - '("--enable-rpath") + (list + "--enable-rpath" + ,@(if (%current-target-system) + '((string-append "--with-cross-build=" + (assoc-ref %build-inputs "icu4c-build-root"))) + '())) #:phases (modify-phases %standard-phases (add-after 'unpack 'chdir-to-source @@ -106,34 +95,24 @@ C/C++ part.") (license x11) (home-page "http://site.icu-project.org/"))) -(define icu4c/fixed - (package - (inherit icu4c) - (source (origin - (inherit (package-source icu4c)) - (patch-flags '("-p2")) - (patches (append - (origin-patches (package-source icu4c)) - (search-patches - "icu4c-CVE-2020-10531.patch"))))))) - -(define-public icu4c-66.1 +(define-public icu4c-build-root (package (inherit icu4c) - (version "66.1") - (source (origin - (method url-fetch) - (uri (string-append - "https://github.com/unicode-org/icu/releases/download/release-" - (string-map (lambda (x) (if (char=? x #\.) #\- x)) version) - "/icu4c-" - (string-map (lambda (x) (if (char=? x #\.) #\_ x)) version) - "-src.tgz")) - (patch-flags '("-p2")) - (patches (search-patches "icu4c-CVE-2020-10531.patch")) - (sha256 - (base32 - "0bharwzc9nzkbrcf405z2nb3h7q0711z450arz0mjmdrk8hg58sj")))))) + (name "icu4c-build-root") + (arguments + (substitute-keyword-arguments (package-arguments icu4c) + ((#:tests? _ '()) + #f) + ((#:out-of-source? _ '()) + #t) + ((#:phases phases) + `(modify-phases ,phases + (replace 'install + (lambda* (#:key outputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out"))) + (copy-recursively "../build" out) + #t))))))) + (native-inputs '()))) (define-public java-icu4j (package diff --git a/gnu/packages/image-processing.scm b/gnu/packages/image-processing.scm index 02d903a6a3..801dc70149 100644 --- a/gnu/packages/image-processing.scm +++ b/gnu/packages/image-processing.scm @@ -90,7 +90,7 @@ (inputs `(;; Our ICU is too recent: “error: ‘UChar’ does not name a type“. ;; ("icu4c" ,icu4c) - ("libjpeg" ,libjpeg) + ("libjpeg" ,libjpeg-turbo) ("libpng" ,libpng) ("libtiff" ,libtiff) ("libxml2" ,libxml2) @@ -138,7 +138,7 @@ licences similar to the Modified BSD licence.")))) ("gts" ,gts) ("hdf5" ,hdf5) ("itpp" ,itpp) - ("libjpeg" ,libjpeg) + ("libjpeg" ,libjpeg-turbo) ("libpng" ,libpng) ("libtiff" ,libtiff) ("libxml" ,libxml2) @@ -199,7 +199,7 @@ of external libraries that provide additional functionality.") ("expat" ,expat) ("freetype" ,freetype) ("hdf5" ,hdf5) - ("jpeg" ,libjpeg) + ("jpeg" ,libjpeg-turbo) ("jsoncpp" ,jsoncpp) ("libogg" ,libogg) ("libtheora" ,libtheora) @@ -394,7 +394,7 @@ integrates with various databases on GUI toolkits such as Qt and Tk.") (patches (search-patches "opencv-rgbd-aarch64-test-fix.patch")) (sha256 (base32 "1f334glf39nk42mpqq6j732h3ql2mpz89jd4mcl678s8n73nfjh2")))))) - (inputs `(("libjpeg" ,libjpeg) + (inputs `(("libjpeg" ,libjpeg-turbo) ("libpng" ,libpng) ("jasper" ,jasper) ;; ffmpeg 4.0 causes core dumps in tests. @@ -455,7 +455,7 @@ vision algorithms. It can be used to do things like: ("gobject-introspection" ,gobject-introspection))) (inputs `(("glib" ,glib) - ("libjpeg" ,libjpeg) + ("libjpeg" ,libjpeg-turbo) ("libpng" ,libpng) ("librsvg" ,librsvg) ("libtiff" ,libtiff) @@ -517,7 +517,7 @@ due to its architecture which automatically parallelises the image workflows.") ("gtk+-2" ,gtk+-2) ("libxml2" ,libxml2) ("libexif" ,libexif) - ("libjpeg" ,libjpeg) ; required by vips.pc + ("libjpeg" ,libjpeg-turbo) ;required by vips.pc ("librsvg" ,librsvg) ("fftw" ,fftw) ("libgsf" ,libgsf) @@ -574,7 +574,7 @@ recalculates.") (inputs `(("libgeotiff" ,libgeotiff) ("libtiff" ,libtiff) - ("libjpeg" ,libjpeg) + ("libjpeg" ,libjpeg-turbo) ("libpng" ,libpng) ("zlib" ,zlib))) (home-page "https://github.com/vxl/vxl/") @@ -651,7 +651,7 @@ libraries designed for computer vision research and implementation.") ("fftw" ,fftw) ("fftwf" ,fftwf) ("hdf5" ,hdf5) - ("libjpeg" ,libjpeg) + ("libjpeg" ,libjpeg-turbo) ("libpng" ,libpng) ("libtiff" ,libtiff) ("mesa" ,mesa-opencl) diff --git a/gnu/packages/image-viewers.scm b/gnu/packages/image-viewers.scm index 12bf318b0a..78d7e7c01b 100644 --- a/gnu/packages/image-viewers.scm +++ b/gnu/packages/image-viewers.scm @@ -4,7 +4,7 @@ ;;; Copyright © 2015, 2016 Alex Kost <alezost@gmail.com> ;;; Copyright © 2016, 2017, 2018, 2019 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2017 Alex Griffin <a@ajgrf.com> -;;; Copyright © 2017 ng0 <ng0@n0.is> +;;; Copyright © 2017 Nikita <nikita@n0.is> ;;; Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com> ;;; Copyright © 2017 nee <nee-git@hidamari.blue> ;;; Copyright © 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr> @@ -74,7 +74,7 @@ (define-public feh (package (name "feh") - (version "3.3") + (version "3.4") (home-page "https://feh.finalrewind.org/") (source (origin (method url-fetch) @@ -82,7 +82,7 @@ name "-" version ".tar.bz2")) (sha256 (base32 - "04c8cgwzkax481sz7lbzy23mk79bqmjy3qpvr7vxa4c14mc9k5gk")))) + "0r83zincbfnk8g13xwm2qaccml9srnwlsmpc1f0nhwjkqyjmqm0q")))) (build-system gnu-build-system) (arguments '(#:phases (modify-phases %standard-phases (delete 'configure)) @@ -158,7 +158,6 @@ actions.") write-dummy-changelog) (call-with-output-file "ChangeLog.html" write-dummy-changelog) - (setenv "NOCONFIGURE" "true") ;; Don't try to run 'git' for the version number. (substitute* "configure.ac" @@ -207,7 +206,7 @@ collection. Geeqie was initially based on GQview.") "0hi9v0rdx47nys0wvm9xasdrafa34r5kq6crb074a0ipwmc60iiq")))) (build-system gnu-build-system) (inputs `(("gtk+" ,gtk+-2) - ("libjpeg" ,libjpeg))) + ("libjpeg" ,libjpeg-turbo))) (native-inputs `(("intltool" ,intltool) ("pkg-config" ,pkg-config))) (synopsis "Simple and fast image viewer for X") @@ -385,7 +384,7 @@ It supports JPEG, PNG and GIF formats.") ("zlib" ,zlib) ("exiv2" ,exiv2) ("libpng" ,libpng) - ("libjpeg" ,libjpeg) + ("libjpeg" ,libjpeg-turbo) ("lcms" ,lcms) ("openexr" ,openexr) ("fftw" ,fftwf) @@ -672,7 +671,7 @@ with tiling window managers. Features include: ("glib" ,glib) ("gtk+" ,gtk+-2) ("lcms" ,lcms) - ("libjpeg" ,libjpeg) + ("libjpeg" ,libjpeg-turbo) ("libtiff" ,libtiff) ("libexif" ,libexif) ("libx11" ,libx11) diff --git a/gnu/packages/image.scm b/gnu/packages/image.scm index 7b1d41cfa5..28d3385e71 100644 --- a/gnu/packages/image.scm +++ b/gnu/packages/image.scm @@ -8,18 +8,18 @@ ;;; Copyright © 2015 Amirouche Boubekki <amirouche@hypermove.net> ;;; Copyright © 2014, 2017 John Darrington <jmd@gnu.org> ;;; Copyright © 2016, 2017, 2018, 2020 Leo Famulari <leo@famulari.name> -;;; Copyright © 2016, 2017, 2018, 2019 Efraim Flashner <efraim@flashner.co.il> +;;; Copyright © 2016, 2017, 2018, 2019, 2020 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2016, 2017, 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2016 Eric Bavier <bavier@member.fsf.org> ;;; Copyright © 2016, 2017 Arun Isaac <arunisaac@systemreboot.net> ;;; Copyright © 2016, 2017 Kei Kebreau <kkebreau@posteo.net> -;;; Copyright © 2017 ng0 <ng0@n0.is> +;;; Copyright © 2017 Nikita <nikita@n0.is> ;;; Copyright © 2017,2019,2020 Hartmut Goebel <h.goebel@crazy-compilers.com> ;;; Copyright © 2017 Julien Lepiller <julien@lepiller.eu> ;;; Copyright © 2018 Joshua Sierles, Nextjournal <joshua@nextjournal.com> ;;; Copyright © 2018 Fis Trivial <ybbs.daans@hotmail.com> ;;; Copyright © 2018 Pierre Neidhardt <mail@ambrevar.xyz> -;;; Copyright © 2018, 2019 Marius Bakke <mbakke@fastmail.com> +;;; Copyright © 2018, 2019, 2020 Marius Bakke <mbakke@fastmail.com> ;;; Copyright © 2018 Pierre-Antoine Rouby <contact@parouby.fr> ;;; Copyright © 2018 Alex Vong <alexvong1995@gmail.com> ;;; Copyright © 2018 Rutger Helling <rhelling@mykolab.com> @@ -49,6 +49,7 @@ #:use-module (gnu packages base) #:use-module (gnu packages boost) #:use-module (gnu packages check) + #:use-module (gnu packages cmake) #:use-module (gnu packages curl) #:use-module (gnu packages compression) #:use-module (gnu packages documentation) @@ -81,11 +82,13 @@ #:use-module (guix packages) #:use-module (guix download) #:use-module (guix git-download) + #:use-module (guix utils) #:use-module (guix build-system gnu) #:use-module (guix build-system cmake) #:use-module (guix build-system meson) #:use-module (guix build-system python) #:use-module (guix build-system scons) + #:use-module (guix deprecation) #:use-module (srfi srfi-1)) (define-public libpng @@ -363,7 +366,7 @@ Features: @end enumerate") (license license:gpl3+))) -(define-public libjpeg +(define-public ijg-libjpeg (package (name "libjpeg") (version "9c") @@ -392,8 +395,8 @@ lossless JPEG manipulations such as rotation, scaling or cropping: (license license:ijg) (home-page "https://www.ijg.org/"))) -(define-public libjpeg-8 - (package (inherit libjpeg) +(define-public ijg-libjpeg-8 + (package (inherit ijg-libjpeg) (version "8d") (source (origin (method url-fetch) @@ -499,7 +502,7 @@ official designation is ISO/IEC 29199-2). This library is an implementation of t (sha256 (base32 "1dss7907fclfl8zsw0bl4qcw0hhz6fqgi3867w0jyfm3q9jfpcc8")))) (build-system gnu-build-system) - (inputs `(("libjpeg" ,libjpeg))) + (inputs `(("libjpeg" ,libjpeg-turbo))) (arguments '(#:tests? #f)) ; no tests (synopsis "Optimize JPEG images") @@ -544,7 +547,7 @@ extracting icontainer icon files.") (define-public libtiff (package (name "libtiff") - (version "4.0.10") + (version "4.1.0") (source (origin (method url-fetch) @@ -552,7 +555,7 @@ extracting icontainer icon files.") version ".tar.gz")) (sha256 (base32 - "1r4np635gr6zlc0bic38dzvxia6iqzcrary4n1ylarzpr8fd2lic")))) + "0d46bdvxdiv59lxnb0xz9ywm8arsr6xsapi5s6y6vnys2wjz6aax")))) (build-system gnu-build-system) (outputs '("out" "doc")) ;1.3 MiB of HTML documentation @@ -561,9 +564,10 @@ extracting icontainer icon files.") `(#:configure-flags (list (string-append "--with-docdir=" (assoc-ref %outputs "doc") "/share/doc/" - ,name "-" ,version)))) + ,name "-" ,version) + "--disable-static"))) (inputs `(("zlib" ,zlib) - ("libjpeg" ,libjpeg))) + ("libjpeg" ,libjpeg-turbo))) (synopsis "Library for handling TIFF files") (description "Libtiff provides support for the Tag Image File Format (TIFF), a format @@ -596,13 +600,11 @@ collection of tools for doing simple manipulations of TIFF images.") ("pkg-config" ,pkg-config))) (inputs `(("giflib" ,giflib) - ("libjpeg" ,libjpeg) + ("libjpeg" ,libjpeg-turbo) ("libpng" ,libpng) ("libtiff" ,libtiff) - ("libwebp" ,libwebp))) - (propagated-inputs - ;; Linking a program with leptonica also requires these. - `(("openjpeg" ,openjpeg) + ("libwebp" ,libwebp) + ("openjpeg" ,openjpeg) ("zlib" ,zlib))) (arguments '(#:phases @@ -614,7 +616,16 @@ collection of tools for doing simple manipulations of TIFF images.") (string-append " " (which "sh") " ")) (("which gnuplot") "true")) - #t))))) + #t)) + (add-after 'install 'provide-absolute-giflib-reference + (lambda* (#:key inputs outputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out")) + (giflib (assoc-ref inputs "giflib"))) + ;; Add an absolute reference to giflib to avoid propagation. + (with-directory-excursion (string-append out "/lib") + (substitute* '("liblept.la" "pkgconfig/lept.pc") + (("-lgif") (string-append "-L" giflib "/lib -lgif")))) + #t)))))) (home-page "http://www.leptonica.com/") (synopsis "Library and tools for image processing and analysis") (description @@ -629,18 +640,33 @@ arithmetic ops.") (define-public jbig2dec (package (name "jbig2dec") - (version "0.16") + (version "0.18") (source (origin (method url-fetch) (uri (string-append "https://github.com/ArtifexSoftware" "/ghostpdl-downloads/releases/download" - "/gs927/" name "-" version ".tar.gz")) + "/gs951/" name "-" version ".tar.gz")) (sha256 (base32 - "00h61y7bh3z6mqfzxyb318gyh0f8jwarg4hvlrm83rqps8avzxm4")) - (patches (search-patches "jbig2dec-ignore-testtest.patch")))) + "0pigfw2v0ppvr0lbysm69gx0zsa5q2q92yrb8af2j3im6x97f6cy")))) (build-system gnu-build-system) - (arguments '(#:configure-flags '("--disable-static"))) + (arguments '(#:configure-flags '("--disable-static") + #:phases (modify-phases %standard-phases + (add-before 'bootstrap 'force-bootstrap + (lambda _ + ;; XXX: jbig2dec 0.18 was released with + ;; a broken configure script, so we + ;; recreate the build system here. + ;; Remove the autoconf inputs below + ;; when deleting this code. + (delete-file "configure") + (delete-file "autogen.sh") + #t))))) + (native-inputs + `(("autoconf" ,autoconf) + ("automake" ,automake) + ("libtool" ,libtool) + ("python" ,python-wrapper))) ;for tests (synopsis "Decoder of the JBIG2 image compression format") (description "JBIG2 is designed for lossy or lossless encoding of @code{bilevel} (1-bit @@ -782,31 +808,31 @@ error-resilience, a Java-viewer for j2k-images, ...") (define-public giflib (package (name "giflib") - (version "5.1.4") + (version "5.2.1") (source (origin (method url-fetch) (uri (string-append "mirror://sourceforge/giflib/giflib-" - version ".tar.bz2")) + version ".tar.gz")) (sha256 (base32 - "1md83dip8rf29y40cm5r7nn19705f54iraz6545zhwa6y8zyq9yz")) - (patches (search-patches - "giflib-make-reallocarray-private.patch")))) + "1gbrg03z1b6rlrvjyc6d41bc8j1bsr7rm8206gb1apscyii5bnii")))) (build-system gnu-build-system) (outputs '("bin" ; utility programs "out")) ; library - (inputs `(("libx11" ,libx11) - ("libice" ,libice) - ("libsm" ,libsm) - ("perl" ,perl))) (arguments - `(#:phases + '(#:make-flags (list "CC=gcc" + (string-append "PREFIX=" + (assoc-ref %outputs "out")) + (string-append "BINDIR=" + (assoc-ref %outputs "bin") "/bin")) + #:phases (modify-phases %standard-phases (add-after 'unpack 'disable-html-doc-gen (lambda _ - (substitute* "doc/Makefile.in" + (substitute* "doc/Makefile" (("^all: allhtml manpages") "")) #t)) + (delete 'configure) (add-after 'install 'install-manpages (lambda* (#:key outputs #:allow-other-keys) (let* ((bin (assoc-ref outputs "bin")) @@ -870,7 +896,7 @@ compose, and analyze GIF images.") ("freetype" ,freetype) ("giflib" ,giflib) ("libid3tag" ,libid3tag) - ("libjpeg" ,libjpeg) + ("libjpeg" ,libjpeg-turbo) ("libpng" ,libpng) ("libtiff" ,libtiff) ("libx11" ,libx11) @@ -989,7 +1015,7 @@ supplies a generic doubly-linked list and some string functions.") `(("pkg-config" ,pkg-config) ("unzip" ,unzip))) (inputs - `(("libjpeg" ,libjpeg) + `(("libjpeg" ,libjpeg-turbo) ("libjxr" ,libjxr) ("libpng" ,libpng) ("libraw" ,libraw) @@ -1015,6 +1041,7 @@ graphics image formats like PNG, BMP, JPEG, TIFF and others.") (uri (string-append "https://github.com/ukoethe/vigra/releases/download/" "Version-" (string-join (string-split version #\.) "-") "/vigra-" version "-src.tar.gz")) + (patches (search-patches "vigra-python-compat.patch")) (sha256 (base32 "1bqs8vx5i1bzamvv563i24gx2xxdidqyxh9iaj46mbznhc84wmm5")))) (build-system cmake-build-system) @@ -1025,16 +1052,16 @@ graphics image formats like PNG, BMP, JPEG, TIFF and others.") ("hdf5" ,hdf5) ("ilmbase" ,ilmbase) ; propagated by openexr, but needed explicitly ; to create a configure-flag - ("libjpeg" ,libjpeg) + ("libjpeg" ,libjpeg-turbo) ("libpng" ,libpng) ("libtiff" ,libtiff) ("openexr" ,openexr) - ("python" ,python-2) ; print syntax - ("python2-numpy" ,python2-numpy) + ("python" ,python-wrapper) + ("python-numpy" ,python-numpy) ("zlib" ,zlib))) (native-inputs `(("doxygen" ,doxygen) - ("python2-nose" ,python2-nose) + ("python-nose" ,python-nose) ("sphinx" ,python-sphinx))) (arguments `(#:test-target "check" @@ -1054,7 +1081,9 @@ graphics image formats like PNG, BMP, JPEG, TIFF and others.") (list "-Wno-dev" ; suppress developer mode with lots of warnings (string-append "-DVIGRANUMPY_INSTALL_DIR=" (assoc-ref %outputs "out") - "/lib/python2.7/site-packages") + "/lib/python" + ,(version-major+minor (package-version python)) + "/site-packages") ;; OpenEXR is not enabled by default. "-DWITH_OPENEXR=1" ;; Fix rounding error on 32-bit machines @@ -1127,7 +1156,7 @@ language bindings to VIGRA.") (inputs `(("freeglut" ,freeglut) ("giflib" ,giflib) - ("libjpeg" ,libjpeg) + ("libjpeg" ,libjpeg-turbo) ("libpng" ,libpng) ("libtiff" ,libtiff))) (native-inputs @@ -1167,7 +1196,7 @@ channels.") (propagated-inputs ;; These are all in the 'Libs.private' field of libmng.pc. `(("lcms" ,lcms) - ("libjpeg" ,libjpeg) + ("libjpeg" ,libjpeg-turbo) ("zlib" ,zlib))) (home-page "https://www.libmng.com/") (synopsis "Library for handling MNG files") @@ -1283,7 +1312,7 @@ convert, manipulate, filter and display a wide variety of image formats.") (base32 "05l75yd1zsxwv25ykwwwjs8961szv7iywf16nc6vc6qpby27ckv6")))) (build-system cmake-build-system) - (inputs `(("libjpeg" ,libjpeg))) + (inputs `(("libjpeg" ,libjpeg-turbo))) (synopsis "JPEG-2000 library") (description "The JasPer Project is an initiative to provide a reference implementation of the codec specified in the JPEG-2000 Part-1 standard (i.e., @@ -1371,7 +1400,7 @@ differences in file encoding, image quality, and other small variations.") (inputs `(("libmhash" ,libmhash) ("libmcrypt" ,libmcrypt) - ("libjpeg" ,libjpeg) + ("libjpeg" ,libjpeg-turbo) ("zlib" ,zlib))) (arguments `(#:make-flags '("CXXFLAGS=-fpermissive") ;required for MHashPP.cc @@ -1496,21 +1525,47 @@ is hereby granted.")))) (define-public libjpeg-turbo (package (name "libjpeg-turbo") - (version "2.0.2") - (replacement libjpeg-turbo/fixed) + (version "2.0.4") (source (origin (method url-fetch) (uri (string-append "mirror://sourceforge/libjpeg-turbo/" version "/libjpeg-turbo-" version ".tar.gz")) (sha256 (base32 - "1v9gx1gdzgxf51nd55ncq7rghmj4x9x91rby50ag36irwngmkf5c")))) + "01ill8bgjyk582wipx7sh7gj2nidylpbzvwhx0wkcm6mxx3qbp9k")))) (build-system cmake-build-system) (native-inputs `(("nasm" ,nasm))) (arguments - '(#:configure-flags '("-DCMAKE_INSTALL_LIBDIR:PATH=lib" - "-DENABLE_STATIC=0"))) + `(#:configure-flags '("-DCMAKE_INSTALL_LIBDIR:PATH=lib" + "-DENABLE_STATIC=0" + ;; djpeg-shared-3x2-float-prog-cmp fails on 32-bit PPC. + ,@(if (string=? "powerpc-linux" (%current-system)) + `("-DFLOATTEST=NO") + '()) + ;; The build system probes for the current CPU, but + ;; that fails when cross-compiling. + ,@(let ((target (%current-target-system))) + (if target + (cond + ((string-prefix? "arm" target) + `("-DCMAKE_SYSTEM_PROCESSOR=arm")) + ((string-prefix? "aarch64" target) + `("-DCMAKE_SYSTEM_PROCESSOR=aarch64")) + ((string-prefix? "i686" target) + `("-DCMAKE_SYSTEM_PROCESSOR=x86")) + ((string-prefix? "x86_64" target) + `("-DCMAKE_SYSTEM_PROCESSOR=x86_64")) + ;; 32-bit and 64-bit + ((string-prefix? "powerpc" target) + `("-DCMAKE_SYSTEM_PROCESSOR=powerpc")) + (else '())) + '()))) + ,@(if (%current-target-system) + '() + ;; Use a special "bootstrap" CMake for the native build to work + ;; around a circular dependency between CMake and this package. + `(#:cmake ,cmake-bootstrap)))) (home-page "https://libjpeg-turbo.org/") (synopsis "SIMD-accelerated JPEG image handling library") (description "libjpeg-turbo is a JPEG image codec that accelerates baseline @@ -1527,19 +1582,8 @@ and decompress to 32-bit and big-endian pixel buffers (RGBX, XBGR, etc.).") license:ijg ;the libjpeg library and associated tools license:zlib)))) ;the libjpeg-turbo SIMD extensions -;; Replacement package to fix CVE-2019-13960 and CVE-2019-2201. -(define libjpeg-turbo/fixed - (package - (inherit libjpeg-turbo) - (version "2.0.3") - (source (origin - (method url-fetch) - (uri (string-append "mirror://sourceforge/libjpeg-turbo/" - version "/libjpeg-turbo-" version ".tar.gz")) - (sha256 - (base32 - "1ds16bnj17v6hzd43w8pzijz3imd9am4hw75ir0fxm240m8dwij2")) - (patches (search-patches "libjpeg-turbo-CVE-2019-2201.patch")))))) +(define-deprecated libjpeg libjpeg-turbo) +(export libjpeg) (define-public niftilib (package @@ -1752,7 +1796,7 @@ identical visual appearance.") (build-system gnu-build-system) (inputs `(("curl" ,curl) - ("libjpeg" ,libjpeg) + ("libjpeg" ,libjpeg-turbo) ("ncurses" ,ncurses))) (home-page "https://csl.name/jp2a/") (synopsis "Convert JPEG images to ASCII") @@ -2006,7 +2050,7 @@ AOM, including with alpha.") ("libtiff" ,libtiff) ("libpng" ,libpng) ("libungif", libungif) - ("libjpeg", libjpeg) + ("libjpeg", libjpeg-turbo) ("libwebp" ,libwebp) ("openjpeg" ,openjpeg) ("lcms" ,lcms) diff --git a/gnu/packages/imagemagick.scm b/gnu/packages/imagemagick.scm index 5287255054..6fc7e6d201 100644 --- a/gnu/packages/imagemagick.scm +++ b/gnu/packages/imagemagick.scm @@ -105,7 +105,7 @@ ("libxml2" ,libxml2) ("libtiff" ,libtiff) ("libpng" ,libpng) - ("libjpeg" ,libjpeg) + ("libjpeg" ,libjpeg-turbo) ("pango" ,pango) ("freetype" ,freetype) ("bzip2" ,bzip2) @@ -208,7 +208,7 @@ script.") ("libxml2" ,libxml2) ("libtiff" ,libtiff) ("libpng" ,libpng) - ("libjpeg" ,libjpeg) + ("libjpeg" ,libjpeg-turbo) ("freetype" ,freetype) ("bzip2" ,bzip2) ("xz" ,xz) diff --git a/gnu/packages/inkscape.scm b/gnu/packages/inkscape.scm index 1ad23a92d4..26d4642547 100644 --- a/gnu/packages/inkscape.scm +++ b/gnu/packages/inkscape.scm @@ -2,7 +2,7 @@ ;;; Copyright © 2014 John Darrington <jmd@gnu.org> ;;; Copyright © 2014, 2016 Mark H Weaver <mhw@netris.org> ;;; Copyright © 2016, 2018 Ricardo Wurmus <rekado@elephly.net> -;;; Copyright © 2017 Marius Bakke <mbakke@fastmail.com> +;;; Copyright © 2017, 2020 Marius Bakke <mbakke@fastmail.com> ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr> ;;; ;;; This file is part of GNU Guix. @@ -88,12 +88,18 @@ (substitute* "share/icons/application/CMakeLists.txt" (("gtk-update-icon-cache") "true")) #t)) - (add-before 'configure 'dont-use-system-includes + (add-after 'unpack 'adjust-for-new-poppler (lambda _ - ;; Don't add redundant -isystem includes which confuses GCC7. - (substitute* "CMakeScripts/DefineDependsandFlags.cmake" - (("include_directories\\(SYSTEM") - "include_directories(")) + (substitute* (find-files "src/extension/internal/pdfinput") + ;; Needed for Poppler 0.82. + (("Unicode \\*u") "Unicode const *u") + ;; Needed for Poppler 0.83. + (("\\(GfxPath") "(const GfxPath") + (("GfxSubpath") "const GfxSubpath") + (("new GlobalParams\\(\\)") + "std::unique_ptr<GlobalParams>(new GlobalParams())") + (("new GlobalParams\\(poppler_datadir\\)") + "std::unique_ptr<GlobalParams>(new GlobalParams(poppler_datadir))")) #t))))) (home-page "https://inkscape.org/") (synopsis "Vector graphics editor") diff --git a/gnu/packages/irc.scm b/gnu/packages/irc.scm index 95b8123b8e..548a3ca049 100644 --- a/gnu/packages/irc.scm +++ b/gnu/packages/irc.scm @@ -3,7 +3,7 @@ ;;; Copyright © 2014 Kevin Lemonnier <lemonnierk@ulrar.net> ;;; Copyright © 2015, 2017 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2015, 2016, 2017, 2018, 2019, 2020 Efraim Flashner <efraim@flashner.co.il> -;;; Copyright © 2016 ng0 <ng0@n0.is> +;;; Copyright © 2016 Nikita <nikita@n0.is> ;;; Copyright © 2017 Marius Bakke <mbakke@fastmail.com> ;;; Copyright © 2017, 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2020 Oleg Pykhalov <go.wigust@gmail.com> diff --git a/gnu/packages/jami.scm b/gnu/packages/jami.scm new file mode 100644 index 0000000000..84f1d92d34 --- /dev/null +++ b/gnu/packages/jami.scm @@ -0,0 +1,343 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2019 Pierre Neidhardt <mail@ambrevar.xyz> +;;; Copyright © 2020 Vincent Legoll <vincent.legoll@gmail.com> +;;; Copyright © 2019, 2020 Jan Wielkiewicz <tona_kosmicznego_smiecia@interia.pl> +;;; +;;; 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 jami) + #:use-module ((guix licenses) #:prefix license:) + #:use-module (gnu packages aidc) + #:use-module (gnu packages audio) + #:use-module (gnu packages autotools) + #:use-module (gnu packages base) + #:use-module (gnu packages boost) + #:use-module (gnu packages check) + #:use-module (gnu packages compression) + #:use-module (gnu packages crypto) + #:use-module (gnu packages documentation) + #:use-module (gnu packages gettext) + #:use-module (gnu packages glib) + #:use-module (gnu packages gnome) + #:use-module (gnu packages gtk) + #:use-module (gnu packages hurd) + #:use-module (gnu packages libcanberra) + #:use-module (gnu packages linux) + #:use-module (gnu packages multiprecision) + #:use-module (gnu packages networking) + #:use-module (gnu packages pcre) + #:use-module (gnu packages perl) + #:use-module (gnu packages pkg-config) + #:use-module (gnu packages pulseaudio) + #:use-module (gnu packages python) + #:use-module (gnu packages qt) + #:use-module (gnu packages serialization) + #:use-module (gnu packages sqlite) + #:use-module (gnu packages telephony) + #:use-module (gnu packages tls) + #:use-module (gnu packages upnp) + #:use-module (gnu packages video) + #:use-module (gnu packages webkit) + #:use-module (gnu packages xiph) + #:use-module (gnu packages xorg) + #:use-module (gnu packages) + #:use-module (guix build-system cmake) + #:use-module (guix build-system gnu) + #:use-module (guix download) + #:use-module (guix git-download) + #:use-module (guix packages) + #:use-module (guix utils)) + +(define %jami-version "20200401.1.6f090de") + +(define* (jami-source #:key without-daemon) + (origin + (method url-fetch) + (uri (string-append "https://dl.jami.net/release/tarballs/jami_" + %jami-version + ".tar.gz")) + (modules '((guix build utils))) + (snippet + (if without-daemon + '(begin + (delete-file-recursively "daemon/contrib")) + #f)) + (sha256 + (base32 + "0lryx9n1jn0jsw7s10pbwivqv0d5m3jdzhdhdyg5n02v72mjvkmh")))) + +;; Savoir-Faire Linux modifies many libraries to add features +;; to Jami. This procedure makes applying patches to a given +;; package easy. +(define jami-apply-dependency-patches + '(lambda* (#:key inputs dep-name patches) + (let ((patches-directory "sfl-patches")) + (mkdir-p patches-directory) + (invoke "tar" "-xvf" (assoc-ref inputs "sfl-patches") + "-C" patches-directory + "--strip-components=5" + (string-append "ring-project/daemon/contrib/src/" + dep-name)) + (for-each + (lambda (file) + (invoke "patch" "--force" "-p1" "-i" + (string-append patches-directory "/" + file ".patch"))) + patches)))) + +(define-public pjproject-jami + (package + (inherit pjproject) + (name "pjproject-jami") + (native-inputs + `(("sfl-patches" ,(jami-source)) + ,@(package-native-inputs pjproject))) + (arguments + `(#:tests? #f + ;; See ring-project/daemon/contrib/src/pjproject/rules.mak. + #:configure-flags + (list "--disable-oss" + "--disable-sound" + "--disable-video" + ;; The following flag is Linux specific. + ,@(if (hurd-triplet? (or (%current-system) + (%current-target-system))) + '() + '("--enable-epoll")) + "--enable-ext-sound" + "--disable-speex-aec" + "--disable-g711-codec" + "--disable-l16-codec" + "--disable-gsm-codec" + "--disable-g722-codec" + "--disable-g7221-codec" + "--disable-speex-codec" + "--disable-ilbc-codec" + "--disable-opencore-amr" + "--disable-silk" + "--disable-sdl" + "--disable-ffmpeg" + "--disable-v4l2" + "--disable-openh264" + "--disable-resample" + "--disable-libwebrtc" + "--with-gnutls" + "--with-external-srtp" + ;; We need -fPIC or else we get the following error when linking + ;; against pjproject-jami: + ;; relocation R_X86_64_32S against `.rodata' can not be used when + ;; making a shared object; + "CFLAGS=-fPIC" + "CXXFLAGS=-fPIC") + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'make-git-checkout-writable + (lambda _ + (for-each make-file-writable (find-files ".")) + #t)) + (add-after 'unpack 'apply-patches + (lambda* (#:key inputs #:allow-other-keys) + (let ((jami-apply-dependency-patches ,jami-apply-dependency-patches)) + ;; Comes from + ;; "ring-project/daemon/contrib/src/pjproject/rules.mak". + ;; WARNING: These amount for huge changes in pjproject. + (jami-apply-dependency-patches + #:inputs inputs + #:dep-name "pjproject" + #:patches + '("0001-rfc6544" + "0002-rfc2466" + "0003-add-tcp-keep-alive" + "0004-multiple_listeners" + "0005-fix_ebusy_turn" + "0006-ignore_ipv6_on_transport_check" + "0007-pj_ice_sess" + "0008-fix_ioqueue_ipv6_sendto" + "0009-add-config-site")) + #t))) + ;; TODO: We could use substitute-keyword-arguments instead of + ;; repeating the phases from pjproject, but somehow it does + ;; not work. + (add-before 'build 'build-dep + (lambda _ (invoke "make" "dep"))) + (add-before 'patch-source-shebangs 'autoconf + (lambda _ + (invoke "autoconf" "-v" "-f" "-i" "-o" + "aconfigure" "aconfigure.ac"))) + (add-before 'autoconf 'disable-some-tests + ;; Three of the six test programs fail due to missing network + ;; access. + (lambda _ + (substitute* "Makefile" + (("selftest: pjlib-test pjlib-util-test pjnath-test pjmedia-test pjsip-test pjsua-test") + "selftest: pjlib-test pjlib-util-test pjmedia-test")) + #t))))))) + +(define-public libring + (package + (name "libring") + (version %jami-version) + (source (jami-source #:without-daemon #t)) + (build-system gnu-build-system) + (inputs + `(("alsa-lib" ,alsa-lib) + ("boost" ,boost) + ("dbus-c++" ,dbus-c++) + ("eudev" ,eudev) + ("ffmpeg" ,ffmpeg) + ("flac" ,flac) + ("gmp" ,gmp) + ("gsm" ,gsm) + ("jack" ,jack-1) + ("jsoncpp" ,jsoncpp) + ("libnatpmp" ,libnatpmp) + ("libogg" ,libogg) + ("libva" ,libva) + ("opendht" ,opendht) + ("opus" ,opus) + ("pcre" ,pcre) + ("pulseaudio" ,pulseaudio) + ("libsamplerate" ,libsamplerate) + ("libsndfile" ,libsndfile) + ("speex" ,speex) + ("speexdsp" ,speexdsp) + ("libupnp" ,libupnp) + ("libvorbis" ,libvorbis) + ("libx264" ,libx264) + ("libvdpau" ,libvdpau) + ("yaml-cpp" ,yaml-cpp) + ("zlib" ,zlib) + ("openssl" ,openssl) + ("libsecp256k1" ,libsecp256k1) + ("python" ,python) + ("python-wrapper" ,python-wrapper) + ("restinio" ,restinio) + ("libx11" ,libx11) + ("asio" ,asio) + ;; TODO: Upstream seems to rely on a custom pjproject (a.k.a. pjsip) version. + ;; See https://git.jami.net/savoirfairelinux/ring-daemon/issues/24. + ("pjproject" ,pjproject-jami))) + (native-inputs + `(("autoconf" ,autoconf) + ("automake" ,automake) + ("libtool" ,libtool) + ("pkg-config" ,pkg-config) + ("which" ,which) + ("cppunit" ,cppunit) + ("perl" ,perl))) ; Needed for documentation. + (arguments + `(#:tests? #f ; The tests fail to compile due to missing headers. + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'change-directory + (lambda _ + (chdir "daemon") + #t)) + (add-before 'build 'add-lib-dir + (lambda _ + (mkdir-p "src/lib") + #t))))) + (synopsis "Distributed multimedia communications platform") + (description "Jami (formerly GNU Ring) is a secure and distributed voice, +video and chat communication platform that requires no centralized server and +leaves the power of privacy in the hands of the user. It supports the SIP and +IAX protocols, as well as decentralized calling using P2P-DHT. + +This package provides a library and daemon implementing the Jami core +functionality.") + (home-page "https://jami.net/") + (license license:gpl3+))) + +(define-public libringclient + (package + (inherit libring) + (name "libringclient") + (build-system cmake-build-system) + (propagated-inputs + `(("libring" ,libring) ; For 'dring'. + ("qtbase" ,qtbase) ; Qt is included in several installed headers. + ("qttools" ,qttools))) + (arguments + `(#:tests? #f ; There is no testsuite. + #:configure-flags + (list (string-append "-DRING_BUILD_DIR=" + (assoc-ref %build-inputs "libring") "/include")) + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'change-directory + (lambda _ + (chdir "lrc") + #t)) + (add-before 'configure 'fix-dbus-interfaces-path + (lambda* (#:key inputs #:allow-other-keys) + (substitute* "CMakeLists.txt" + (("\\$\\{CMAKE_INSTALL_PREFIX\\}(/share/dbus-1/interfaces)" _ dbus-interfaces-path-suffix) + (string-append (assoc-ref inputs "libring") + dbus-interfaces-path-suffix)))))))) + (synopsis "Distributed multimedia communications platform") + (description "Jami (formerly GNU Ring) is a secure and distributed voice, +video and chat communication platform that requires no centralized server and +leaves the power of privacy in the hands of the user. It supports the SIP and +IAX protocols, as well as decentralized calling using P2P-DHT. + +This package provides a library common to all Jami clients.") + (home-page "https://jami.net") + (license license:gpl3+))) + +(define-public jami + (package + (inherit libring) + (name "jami") + (build-system cmake-build-system) + (inputs + `(("libringclient" ,libringclient) + ("gtk+" ,gtk+) + ("qrencode" ,qrencode) + ("libnotify" ,libnotify) + ("clutter" ,clutter) + ("clutter-gtk" ,clutter-gtk) + ("libcanberra" ,libcanberra) + ("webkitgtk" ,webkitgtk) + ("sqlite" ,sqlite))) + (native-inputs + `(("pkg-config" ,pkg-config) + ("gettext" ,gettext-minimal) + ("glib:bin" ,glib "bin") + ("doxygen" ,doxygen))) + (propagated-inputs + `(("libring" ,libring) ; Contains `dring', the daemon, which is automatically by d-bus. + ("adwaita-icon-theme" ,adwaita-icon-theme) + ("evolution-data-server" ,evolution-data-server))) + (arguments + `(#:tests? #f ; There is no testsuite. + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'change-directory + (lambda _ + (chdir "client-gnome") + #t))))) + (synopsis "Distributed, privacy-respecting communication program") + (description "Jami (formerly GNU Ring) is a secure and distributed voice, +video and chat communication platform that requires no centralized server and +leaves the power of privacy in the hands of the user. It supports the SIP and +IAX protocols, as well as decentralized calling using P2P-DHT. + +This package provides the Jami client for the GNOME desktop.") + (home-page "https://jami.net") + (license license:gpl3+))) + +(define-public jami-client-gnome + (deprecated-package "jami-client-gnome" jami)) diff --git a/gnu/packages/java.scm b/gnu/packages/java.scm index cab90fb4e7..e2f79c3dc5 100644 --- a/gnu/packages/java.scm +++ b/gnu/packages/java.scm @@ -11,9 +11,9 @@ ;;; Copyright © 2018 Chris Marusich <cmmarusich@gmail.com> ;;; Copyright © 2018, 2019, 2020 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2019, 2020 Björn Höfling <bjoern.hoefling@bjoernhoefling.de> +;;; Copyright © 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org> ;;; Copyright © 2020 Raghav Gururajan <raghavgururajan@disroot.org> ;;; Copyright © 2020 Maxim Cournoyer <maxim.cournoyer@gmail.com> - ;;; ;;; This file is part of GNU Guix. ;;; @@ -990,7 +990,7 @@ machine."))) ("grep" ,grep) ("jamvm" ,jamvm) ("lcms" ,lcms) - ("libjpeg" ,libjpeg) + ("libjpeg" ,libjpeg-turbo) ("libnsl" ,libnsl) ("libpng" ,libpng) ("libtool" ,libtool) @@ -1610,7 +1610,7 @@ bootstrapping purposes.") ("libxi" ,libxi) ("libxinerama" ,libxinerama) ("libxrender" ,libxrender) - ("libjpeg" ,libjpeg) + ("libjpeg" ,libjpeg-turbo) ("libpng" ,libpng) ("mit-krb5" ,mit-krb5) ("nss" ,nss) @@ -1907,7 +1907,7 @@ new Date();")) ("giflib" ,giflib) ("lcms" ,lcms) ("libelf" ,libelf) - ("libjpeg" ,libjpeg) + ("libjpeg" ,libjpeg-turbo) ("libice" ,libice) ("libpng" ,libpng) ("libx11" ,libx11) @@ -1920,6 +1920,9 @@ new Date();")) (native-inputs `(("icedtea-8" ,icedtea-8) ("icedtea-8:jdk" ,icedtea-8 "jdk") + ;; XXX: The build system is not particularly parallel safe and + ;; fails with newer versions of GNU Make. + ("make@4.2" ,gnu-make-4.2) ("unzip" ,unzip) ("which" ,which) ("zip" ,zip))) @@ -1976,6 +1979,7 @@ new Date();")) (native-inputs `(("openjdk9" ,openjdk9) ("openjdk9:jdk" ,openjdk9 "jdk") + ("make@4.2" ,gnu-make-4.2) ("unzip" ,unzip) ("which" ,which) ("zip" ,zip))))) @@ -2185,7 +2189,7 @@ new Date();")) ("freetype" ,freetype) ("giflib" ,giflib) ("lcms" ,lcms) - ("libjpeg" ,libjpeg) + ("libjpeg" ,libjpeg-turbo) ("libpng" ,libpng) ("libx11" ,libx11) ("libxext" ,libxext) @@ -2196,6 +2200,7 @@ new Date();")) `(("autoconf" ,autoconf) ("openjdk10" ,openjdk10) ("openjdk10:jdk" ,openjdk10 "jdk") + ("make" ,gnu-make-4.2) ("pkg-config" ,pkg-config) ("unzip" ,unzip) ("which" ,which) @@ -2232,7 +2237,7 @@ new Date();")) ("freetype" ,freetype) ("giflib" ,giflib) ("lcms" ,lcms) - ("libjpeg" ,libjpeg) + ("libjpeg" ,libjpeg-turbo) ("libpng" ,libpng) ("libx11" ,libx11) ("libxext" ,libxext) @@ -2244,6 +2249,7 @@ new Date();")) `(("autoconf" ,autoconf) ("openjdk11" ,openjdk11) ("openjdk11:jdk" ,openjdk11 "jdk") + ("make@4.2" ,gnu-make-4.2) ("pkg-config" ,pkg-config) ("unzip" ,unzip) ("which" ,which) @@ -10218,7 +10224,8 @@ that is part of the SWT Tools project.") "linux32") ((or "x86_64-linux" "aarch64-linux" "mips64el-linux") - "linux64"))))) + "linux64") + (_ "unknown-kernel"))))) (install-file "src/main/native-package/src/libjansi.so" dir)) #t)) (add-after 'install 'install-native diff --git a/gnu/packages/javascript.scm b/gnu/packages/javascript.scm index 467a7d0cb9..97c3a571a1 100644 --- a/gnu/packages/javascript.scm +++ b/gnu/packages/javascript.scm @@ -409,14 +409,14 @@ external server.") (define-public mujs (package (name "mujs") - (version "1.0.6") + (version "1.0.7") (source (origin (method url-fetch) (uri (string-append "https://mujs.com/downloads/mujs-" version ".tar.xz")) (sha256 (base32 - "1q9w2dcspfp580pzx7sw7x9gbn8j0ak6dvj75wd1ml3f3q3i43df")))) + "1ilhay15z4k7mlzs6g2d00snivin7vp72dfw5wwpmc0x70jr31l2")))) (build-system gnu-build-system) (arguments '(#:phases diff --git a/gnu/packages/jemalloc.scm b/gnu/packages/jemalloc.scm index aa8493fd1d..c4b87b540d 100644 --- a/gnu/packages/jemalloc.scm +++ b/gnu/packages/jemalloc.scm @@ -32,7 +32,7 @@ (define-public jemalloc (package (name "jemalloc") - (version "5.2.0") + (version "5.2.1") (source (origin (method url-fetch) (uri (string-append @@ -40,7 +40,7 @@ version "/jemalloc-" version ".tar.bz2")) (sha256 (base32 - "1d73a5c5qdrwck0fa5pxz0myizaf3s9alsvhiqwrjahdlr29zgkl")))) + "1xl7z0vwbn5iycg7amka9jd6hxd8nmfk7nahi4p9w2bnw9f0wcrl")))) (build-system gnu-build-system) (arguments `(#:phases @@ -59,6 +59,9 @@ '() '(#:configure-flags (list "--disable-thp"))))) (inputs `(("perl" ,perl))) + ;; Install the scripts to a separate output to avoid referencing Perl and + ;; Bash in the default output, saving ~75 MiB on the closure. + (outputs '("out" "bin")) (home-page "http://jemalloc.net/") (synopsis "General-purpose scalable concurrent malloc implementation") (description diff --git a/gnu/packages/julia-xyz.scm b/gnu/packages/julia-xyz.scm new file mode 100644 index 0000000000..f1da66a4be --- /dev/null +++ b/gnu/packages/julia-xyz.scm @@ -0,0 +1,45 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2020 Nicolò Balzarotti <nicolo@nixo.xyz> +;;; +;;; 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 julia-xyz) + #:use-module ((guix licenses) #:prefix license:) + #:use-module (guix packages) + #:use-module (guix git-download) + #:use-module (guix build-system julia)) + +(define-public julia-compat + (package + (name "julia-compat") + (version "3.9.1") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/JuliaLang/Compat.jl") + (commit (string-append "v" version)))) + (file-name "Compat") + (sha256 + (base32 "01vwjr2134bzgnaxwd67knbibbhnfgnqjw7gxrp29s6y2a6j3882")))) + (build-system julia-build-system) + (home-page "https://github.com/JuliaLang/Compat.jl") + (synopsis "Compatibility across Julia versions") + (description "The Compat package is designed to ease interoperability +between older and newer versions of the Julia language. The Compat package +provides a macro that lets you use the latest syntax in a backwards-compatible +way.") + (license license:expat))) diff --git a/gnu/packages/julia.scm b/gnu/packages/julia.scm index 16a4705a07..c636fa756b 100644 --- a/gnu/packages/julia.scm +++ b/gnu/packages/julia.scm @@ -53,7 +53,7 @@ (let ((commit "35b1504507a7a4168caae3d78db54d1121b121e1") (revision "1")) ;; When upgrading Julia, also upgrade this. Get the commit from - ;; https://github.com/JuliaLang/julia/blob/v1.3.1/deps/libuv.version + ;; https://github.com/JuliaLang/julia/blob/v1.4.1/deps/libuv.version (package (inherit libuv) (name "libuv-julia") @@ -100,10 +100,10 @@ (define (julia-patch-url version name) (string-append "https://raw.githubusercontent.com/JuliaLang/julia/v" version - "/deps/patches/" name)) + "/deps/patches/" name ".patch")) (define (julia-patch name sha) - (let ((version "1.3.1")) + (let ((version "1.4.1")) (origin (method url-fetch) (uri (julia-patch-url version name)) (sha256 (base32 sha)) @@ -111,10 +111,10 @@ (define llvm-julia (package - (inherit llvm-6) + (inherit llvm-8) (name "llvm-julia") (source (origin - (inherit (package-source llvm-6)) + (inherit (package-source llvm-8)) ;; Those patches are inside the Julia source repo. ;; They are _not_ Julia specific (https://github.com/julialang/julia#llvm) ;; but they are required to build Julia. @@ -124,42 +124,50 @@ ((name hash) (julia-patch name hash))) (list - '("llvm-6.0-D44650" - "1336q4vqayr94wdcnlmcxh90mjdh34dzw9x2cbiqjnx9b1j8fxyb") + '("llvm-7.0-D44650" + "1h55kkmkiisfj6sk956if2bcj9s0v6n5czn8dxb870vp5nccj3ir") '("llvm-6.0-DISABLE_ABI_CHECKS" "014fawd1ba7yckalypfld22zgic87x9nx3cim42zrwygywd36pyg") '("llvm-6.0-NVPTX-addrspaces" "1qdi2zmrjsrj0h84zv2vyly2hjcn4f67mfy0s1q353g4v4jkscqc") - '("llvm-6.0.0_D27296-libssp" - "0s5hi2r1j63i8m6ig1346crx2aiv9f7rgb3mg80kw1wx5y7pdpfh") '("llvm-D27629-AArch64-large_model_6.0.1" "1qrshmlqvnasdyc158vfn3hnbigqph3lsq7acb9w8lwkpnnm2j4z") - '("llvm-D34078-vectorize-fdiv" - "1696hg84a0jxcnggvqsc2cdp271hf9a44p4qsd078qm1mfawkaay") - '("llvm-D42262-jumpthreading-not-i1" - "1c8w210gwidbnkkw8anp17dk5pnxws2fl3mb2qxh7y9wzfpixgaq") - '("llvm-D44892-Perf-integration" - "0r37jd0ssh2k1pndkfd5blgpg9z90im4vlzprhb0n0wwz45g4b05") - '("llvm-D46460" - "1miqgswdc0qvbaf4571c2xkxyp9ais06b1bcpa83sq22vr4hbsfb") - '("llvm-D49832-SCEVPred" - "0v5c88hgqj6dymv3j86ca5mhpqab5fbnrvjiw1nvnrnya9l4dlbn") - '("llvm-D50010-VNCoercion-ni" - "0iblb3q1xixwrb12jpb89h3ywmqmzdp6aqp416j4ncwakyjhhfkp") - '("llvm-D50167-scev-umin" - "1f2rakcnnyhr7w10k7gqg0k0491pyvx5ijplivw557f714ys3q6v") - '("llvm-OProfile-line-num" - "1jvbbmwyags0xfwamb13qrf3rgcz9i1r03m9lava7swag8xb78c7") - '("llvm-PPC-addrspaces" - "1f23nhsxh2s3jskbgs7da9nwg3s1hrkbk5aahl08x41wi3mny01p") - '("llvm-rL323946-LSRTy" - "10cz3vy1yw0w643z7xx021wa4kymx9fcm3bjg61s6vzdqd6d9fns") - '("llvm-rL326967-aligned-load" - "04jxnv32yj5x17hqhi8g2p8rhgp38gmjzr871w7z8s44pq10v9v4") - '("llvm-rL327898" - "15ah49gbsll23z28kpyahi5vl0fh3fkxcgd1zmxxdcl96s3x8bnq")))))) + '("llvm8-D34078-vectorize-fdiv" + "19spqc3xsazn1xs9gpcgv9ldadfkv49rmc5khl7sf1dlmhgi4602") + '("llvm7-D50010-VNCoercion-ni" + "18scg6aa036xa1508s7q93w9dvc5gp69fz6yl6fkh4yffw4gymw6") + '("llvm-8.0-D50167-scev-umin" + "0g9w2x8yryjdkihnrf18x0yi5bi14c5p8wffda1w732dr5ckzk94") + '("llvm-D57118-powerpc" + "0vxz5s0s9b625v1rv8lg1566yhxh1i91ydzmvy5s7njvzc7p19aw") + '("llvm8-WASM-addrspaces" + "1176agj9hh7csdm2lnklb42zcdsb3q6lx9jiyp2shn4p2678y76q") + '("llvm-exegesis-mingw" + "0ph1cj1j7arvf1xq2xcr7qf9g0cpdl14fincgr67vpi520zvd3vp") + '("llvm-test-plugin-mingw" + "12z738cnahbf6n381im7i0hxp1m6k9hrnfjlmq9sac46nxly9gnj") + '("llvm-8.0-D66401-mingw-reloc" + "15v3p5sznn979cfnd7gdn3nd701fd7xd5aks6lnj1mslvljlq3ls") + '("llvm7-revert-D44485" + "0f59kq3p3mpwsbmskypbi4zn01l6ig0x7v2rjp08k2r8z8m6fa8n") + '("llvm-8.0-D63688-wasm-isLocal" + "0i9wi5n63ip3802z6m7aj3p07hkqjlmp4vg4wq3xkf9f6w9rksab") + '("llvm-8.0-D55758-tablegen-cond" + "1l08mg7qigravi7plsq3yzya80fljnp95n8faddr29wbr2qr0655") + '("llvm-8.0-D59389-refactor-wmma" + "0rgrwk4xlwpk7yai2j7xadcfws93rmk2hhh44fysa88imvrbp478") + '("llvm-8.0-D59393-mma-ptx63-fix" + "094jcsxbcx9fljj623mgmc0rjpk12s2rs0di0ck0hakzhr8mbv5n") + '("llvm-8.0-D66657-codegen-degenerate" + "1n1ddx19h90bbpimdyd9dh8fsm6gb93xxyqm4ljkxa1k3cx2vm72") + '("llvm-8.0-D71495-vectorize-freduce" + "1zff08wvji9lnpskk4b3p5zyjsy5hhy23ynxjqlj9dw7jvvfrf0p") + '("llvm-8.0-D75072-SCEV-add-type" + "0amlyyndsc90ml2k6prdahf24q0j23nfmlbqf8gcqcxpl5sqq3i6") + '("llvm-8.0-D65174-limit-merge-stores" + "1ls5114fhgip9rbqabqc16mi367ra0k75ngc1vyqqhq1ghm9x7y9")))))) (arguments - (substitute-keyword-arguments (package-arguments llvm-6) + (substitute-keyword-arguments (package-arguments llvm-8) ((#:configure-flags flags) `(list ;; Taken from NixOS. Only way I could get libLLVM-6.0.so "-DCMAKE_BUILD_TYPE=Release" @@ -180,10 +188,50 @@ "-DLLVM_ENABLE_DUMP=ON" "-DLLVM_LINK_LLVM_DYLIB=ON")))))) +(define-public libwhich + (package + (name "libwhich") + (version "1.1.0") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/vtjnash/libwhich.git") + ;; fixes linux-vdso.so related tests + (commit "87cffe10080c98e7b5786c5166e420bf1ada1d41"))) + (file-name (string-append name "-" version "-checkout")) + (sha256 + (base32 + "1bpa0fcqpa3ai3hm8mz0p13bf76fsq53wsfcx5qw302zh22108xr")))) + (arguments + `(#:make-flags + (list "CC=gcc") + #:phases + (modify-phases %standard-phases + (delete 'configure) + (add-before 'check 'set-ld-library-path + (lambda* (#:key inputs #:allow-other-keys) + (setenv "LD_LIBRARY_PATH" + (string-append (assoc-ref inputs "zlib") "/lib")))) + (replace 'install + (lambda* (#:key outputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out"))) + (install-file "libwhich" (string-append out "/bin"))) + #t))))) + (native-inputs + ;; used for tests + `(("zlib" ,zlib))) + (build-system gnu-build-system) + (home-page "https://github.com/vtjnash/libwhich") + (synopsis "Like @code{which}, for dynamic libraries") + (description "@code{libwhich} is like @code{which}, but for dynamic +libraries. It is also a bit like @code{ldd} and @code{otool -L}.") + (license license:expat))) + (define-public julia (package (name "julia") - (version "1.3.1") + (version "1.4.1") (source (origin (method url-fetch) (uri (string-append @@ -191,7 +239,7 @@ version "/julia-" version ".tar.gz")) (sha256 (base32 - "1nwkmr9j55g1zkxdchnid1h022s0is52vx23niksshgvh793g41x")) + "030aza3qj5zcinxbrbqgi7p64q6klwq2bhwccraarx7l0hg9lw3i")) (patches (search-patches "julia-SOURCE_DATE_EPOCH-mtime.patch")))) (build-system gnu-build-system) @@ -214,15 +262,6 @@ (delete 'configure) (add-after 'unpack 'prepare-deps (lambda* (#:key inputs #:allow-other-keys) - (mkdir "deps/srccache") - ;; no USE_SYSTEM_{OBJCONV/LIBWHICH} option - (copy-file (assoc-ref inputs "objconv") - "deps/srccache/objconv.zip") - (copy-file (assoc-ref inputs "libwhich") - (string-append "deps/srccache/libwhich-" - "81e9723c0273d78493dc8c8ed570f68d9ce7e89e" - ".tar.gz")) - ;; needed by libwhich (setenv "LD_LIBRARY_PATH" (string-join (map (lambda (pkg) @@ -247,21 +286,19 @@ (("src ui doc deps") "src ui deps")) #t)) + (add-after 'unpack 'use-system-libwhich + (lambda* (#:key inputs #:allow-other-keys) + ;; don't build it + (substitute* "deps/Makefile" + (("DEP_LIBS \\+= libwhich") "")) + ;; call our version + (substitute* "base/Makefile" + (("\\$\\$\\(build_depsbindir\\)/libwhich") + (string-append (assoc-ref inputs "libwhich") "/bin/libwhich"))) + #t)) (add-before 'check 'set-home ;; Some tests require a home directory to be set. (lambda _ (setenv "HOME" "/tmp") #t)) - (add-after 'unpack 'hardcode-soname-map - ;; ./src/runtime_ccall.cpp creates a map from library names to paths - ;; using the output of "/sbin/ldconfig -p". Since ldconfig is not - ;; used in Guix, we patch runtime_ccall.cpp to contain a static map. - (lambda* (#:key inputs #:allow-other-keys) - (substitute* "base/math.jl" - (("const libm = Base.libm_name") - (string-append "const libm = \"" - (assoc-ref inputs "openlibm") - "/lib/libopenlibm.so" - "\""))) - #t)) (add-before 'build 'fix-include-and-link-paths (lambda* (#:key inputs #:allow-other-keys) ;; LIBUTF8PROC is a linker flag, not a build target. It is @@ -304,10 +341,14 @@ ;; running order. I think it depends on the number of ;; runners, disabling it for now ;; https://github.com/JuliaLang/julia/issues/34330 - "tests = filter(e->!in(e,[\"backtrace\",\"exceptions\", - \"stress\",\"precompile\", - \"client\",\"stacktraces\"]), + "tests = filter(e->!in(e,[\"backtrace\",\"exceptions\",\"precompile\", + \"client\",\"stacktraces\"]), testnames)")) + ;; precompile test is broken, fixed in + ;; fed29f893544d1dc8f86444c65d632c68168d0f3 + (substitute* "test/precompile.jl" + (("@test !isdefined\\(Base.Nothing.name.mt") + "# @test !isdefined(Base.Nothing.name.mt")) ;; When HOME is not set, julia calls uv_os_homedir, which in ;; turns call getpwuid_r. Add the HOME env variable to the ;; external julia call to fix this @@ -317,24 +358,31 @@ ;; https://github.com/JuliaLang/julia/issues/32377 (substitute* "stdlib/REPL/test/replcompletions.jl" (("@test count") "@test_broken count")) + ;; Dates has a similar bug: + ;; https://github.com/JuliaLang/julia/issues/34655 + (substitute* "stdlib/Dates/test/io.jl" + (("\"Dates.Time") "\"Time")) + ;; Upstream bug I found when packaging + ;; https://github.com/JuliaLang/julia/issues/35785 + (substitute* "test/file.jl" + (("@test dirname\\(t\\) == d") "@test_broken dirname(t) == d")) #t)) - (add-after 'install 'make-wrapper - (lambda* (#:key inputs outputs #:allow-other-keys) - (let* ((out (assoc-ref outputs "out")) - (bin (string-append out "/bin")) - (program "julia")) - (with-directory-excursion bin - (wrap-program program - `("JULIA_LOAD_PATH" ":" prefix - ("" "$JULIA_LOAD_PATH"))) - (wrap-program program - `("JULIA_DEPOT_PATH" ":" prefix - ("" "$JULIA_DEPOT_PATH")))) - #t)))) + (add-after 'install 'make-wrapper + (lambda* (#:key inputs outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (bin (string-append out "/bin")) + (program "julia")) + (with-directory-excursion bin + (wrap-program program + `("JULIA_LOAD_PATH" ":" prefix + ("" "$JULIA_LOAD_PATH"))) + (wrap-program program + `("JULIA_DEPOT_PATH" ":" prefix + ("" "$JULIA_DEPOT_PATH")))) + #t)))) #:make-flags (list - (string-append "prefix=" (assoc-ref %outputs "out")) - (string-append "PREFIX=" (assoc-ref %outputs "out")) + (string-append "prefix=" (assoc-ref %outputs "out")) ;; Passing the MARCH flag is necessary to build binary substitutes for ;; the supported architectures. @@ -382,17 +430,12 @@ "USE_SYSTEM_PATCHELF=1" "USE_SYSTEM_PCRE=1" "USE_SYSTEM_OPENLIBM=1" - + "USE_SYSTEM_MBEDTLS=1" + "USE_SYSTEM_LIBSSH2=1" "USE_SYSTEM_GMP=1" "USE_SYSTEM_MPFR=1" "USE_SYSTEM_ARPACK=1" "USE_SYSTEM_LIBGIT2=1" - (string-append "LIBUV=" - (assoc-ref %build-inputs "libuv") - "/lib/libuv.so") - (string-append "LIBUV_INC=" - (assoc-ref %build-inputs "libuv") - "/include") "USE_SYSTEM_ZLIB=1"))) (inputs `(("llvm" ,llvm-julia) @@ -423,30 +466,7 @@ ("suitesparse" ,suitesparse) ;; Find dependencies versions here: ;; https://raw.githubusercontent.com/JuliaLang/julia/v1.3.0/deps/Versions.make - ("objconv" - ,(origin - (method url-fetch) - ;; No versioned URL, see <https://www.agner.org/optimize/> for updates. - (uri "https://www.agner.org/optimize/objconv.zip") - (file-name "objconv-2018-10-07.zip") - (sha256 - (base32 - "0wp6ld9vk11f4nnkn56627zmlv9k5vafi99qa3yyn1pgcd61zcfs")))) - ("libwhich" - ,(let ((commit "81e9723c0273d78493dc8c8ed570f68d9ce7e89e")) - (origin - ;; Note: We use a /tarball URL, but that's because Julia's build - ;; system checks the hash of that tarball; thus we can't use - ;; 'git-fetch'. - (method url-fetch) - (uri (string-append - "https://api.github.com/repos/vtjnash/libwhich/tarball/" - commit)) - (file-name (string-append "libwhich-" (string-take commit 7) - ".tar.gz")) - (sha256 - (base32 - "1p7zg31kpmpbmh1znrk1xrbd074agx13b9q4dcw8n2zrwwdlbz3b"))))) + ("libwhich" ,libwhich) ("dsfmt" ,dsfmt))) (native-inputs `(("openssl" ,openssl) diff --git a/gnu/packages/jupyter.scm b/gnu/packages/jupyter.scm index e65a8bd6c9..3f16bc27f1 100644 --- a/gnu/packages/jupyter.scm +++ b/gnu/packages/jupyter.scm @@ -171,7 +171,7 @@ Messaging Protocol}.") ("cppzmq" ,cppzmq) ("zeromq" ,zeromq) ("openssl" ,openssl) - ("util-linux" ,util-linux))) ;libuuid + ("util-linux" ,util-linux "lib"))) ;libuuid (home-page "https://quantstack.net/xeus") (synopsis "C++ implementation of the Jupyter Kernel protocol") (description diff --git a/gnu/packages/kde-frameworks.scm b/gnu/packages/kde-frameworks.scm index dad50fad24..0c31709329 100644 --- a/gnu/packages/kde-frameworks.scm +++ b/gnu/packages/kde-frameworks.scm @@ -3663,7 +3663,7 @@ http://community.kde.org/Frameworks/Porting_Notes should help with this.") ("kwidgetsaddons" ,kwidgetsaddons) ("kwindowsystem" ,kwindowsystem) ("kxmlgui" ,kxmlgui) - ("libjpeg" ,libjpeg) + ("libjpeg" ,libjpeg-turbo) ("libpng" ,libpng) ("openssl" ,openssl) ("phonon" ,phonon) diff --git a/gnu/packages/kde.scm b/gnu/packages/kde.scm index c4576c8ba7..bf1ccef3e3 100644 --- a/gnu/packages/kde.scm +++ b/gnu/packages/kde.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2016, 2017, 2019 Efraim Flashner <efraim@flashner.co.il> +;;; Copyright © 2016, 2017, 2019, 2020 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2016 David Craven <david@craven.ch> ;;; Copyright © 2016, 2017 Thomas Danckaert <post@thomasdanckaert.be> ;;; Copyright © 2017, 2018 Mark Meyer <mark@ofosos.org> @@ -209,7 +209,7 @@ projects.") (define-public kdevelop (package (name "kdevelop") - (version "5.4.6") + (version "5.5.1") (source (origin (method url-fetch) @@ -217,7 +217,7 @@ projects.") "/" version "/src/kdevelop-" version ".tar.xz")) (sha256 - (base32 "01jmrmwbc1hrvq7jdfcc7mxl03q2l6kz57yca2j26xwyvfcfv5sz")))) + (base32 "18hxwkdbfw0qs3p19jv6d8wwwdzb9m087891i8w2bzkn21fd5pmy")))) (build-system qt-build-system) (native-inputs `(("extra-cmake-modules" ,extra-cmake-modules) @@ -302,15 +302,16 @@ software (Git, Subversion, Mercurial, CVS and Bazaar).") (define-public kdevelop-pg-qt (package (name "kdevelop-pg-qt") - (version "2.2.0") + (version "2.2.1") (source (origin - (method url-fetch) - (uri (string-append "https://github.com/KDE/kdevelop-pg-qt/archive/v" - version ".tar.gz")) - (file-name (string-append name "-" version ".tar.gz")) + (method git-fetch) + (uri (git-reference + (url "https://github.com/KDE/kdevelop-pg-qt") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) (sha256 - (base32 "15ja19gg6x7gww4ch12hy585x55ghbkpsiyr8fqiyjk0j6v07hh5")))) + (base32 "1kfab4p717acbdkcdi41d98vwch7v431gb2qi6s38hmclsf8bf8g")))) (native-inputs `(("extra-cmake-modules" ,extra-cmake-modules))) (inputs @@ -529,7 +530,7 @@ cards.") ("kwidgetsaddons" ,kwidgetsaddons) ("qtbase" ,qtbase) ("qca" ,qca) - ("util-linux" ,util-linux))) + ("util-linux" ,util-linux "lib"))) (home-page "https://community.kde.org/Frameworks") (synopsis "Library for managing partitions") (description "Library for managing partitions.") diff --git a/gnu/packages/kerberos.scm b/gnu/packages/kerberos.scm index 34e70e7994..896d15f485 100644 --- a/gnu/packages/kerberos.scm +++ b/gnu/packages/kerberos.scm @@ -5,9 +5,11 @@ ;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2012, 2013 Nikita Karetnikov <nikita@karetnikov.org> ;;; Copyright © 2012, 2017 Ludovic Courtès <ludo@gnu.org> -;;; Copyright © 2017 Ricardo Wurmus <rekado@elephly.net> +;;; Copyright © 2017, 2019 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2017 Alex Vong <alexvong1995@gmail.com> +;;; Copyright © 2019 Mathieu Othacehe <m.othacehe@gmail.com> +;;; Copyright © 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org> ;;; ;;; This file is part of GNU Guix. ;;; @@ -33,6 +35,7 @@ #:use-module (gnu packages gettext) #:use-module (gnu packages gnupg) #:use-module (gnu packages libidn) + #:use-module (gnu packages hurd) #:use-module (gnu packages linux) #:use-module (gnu packages pkg-config) #:use-module (gnu packages compression) @@ -49,7 +52,7 @@ (define-public mit-krb5 (package (name "mit-krb5") - (version "1.17") + (version "1.18") (source (origin (method url-fetch) (uri (list @@ -59,18 +62,34 @@ (string-append "https://kerberos.org/dist/krb5/" (version-major+minor version) "/krb5-" version ".tar.gz"))) + (patches (search-patches "mit-krb5-qualify-short-hostnames.patch" + "mit-krb5-hurd.patch")) (sha256 (base32 - "1xc1ly09697b7g2vngvx76szjqy9769kpgn27lnp1r9xln224vjs")))) + "121c5xsy3x0i4wdkrpw62yhvji6virbh6n30ypazkp0isws3k4bk")))) (build-system gnu-build-system) (native-inputs `(("bison" ,bison) ("perl" ,perl))) (arguments `(;; XXX: On 32-bit systems, 'kdb5_util' hangs on an fcntl/F_SETLKW call - ;; while running the tests in 'src/tests'. - #:tests? ,(string=? (%current-system) "x86_64-linux") + ;; while running the tests in 'src/tests'. Also disable tests when + ;; cross-compiling. + #:tests? ,(and (not (%current-target-system)) + (string=? (%current-system) "x86_64-linux")) + ,@(if (%current-target-system) + '(#:configure-flags + (list "--localstatedir=/var" + "krb5_cv_attr_constructor_destructor=yes" + "ac_cv_func_regcomp=yes" + "ac_cv_printf_positional=yes" + "ac_cv_file__etc_environment=yes" + "ac_cv_file__etc_TIMEZONE=no") + #:make-flags + (list "CFLAGS+=-DDESTRUCTOR_ATTR_WORKS=1")) + '(#:configure-flags + (list "--localstatedir=/var"))) #:phases (modify-phases %standard-phases (add-after 'unpack 'enter-source-directory @@ -78,8 +97,8 @@ (chdir "src") #t)) (add-before 'check 'pre-check - (lambda* (#:key inputs #:allow-other-keys) - (let ((perl (assoc-ref inputs "perl"))) + (lambda* (#:key inputs native-inputs #:allow-other-keys) + (let ((perl (assoc-ref (or native-inputs inputs) "perl"))) (substitute* "plugins/kdb/db2/libdb2/test/run.test" (("/bin/cat") (string-append perl "/bin/perl")) (("D/bin/sh") (string-append "D" (which "sh"))) diff --git a/gnu/packages/kodi.scm b/gnu/packages/kodi.scm index 2831d3d842..81294f4859 100644 --- a/gnu/packages/kodi.scm +++ b/gnu/packages/kodi.scm @@ -121,7 +121,7 @@ (string-append out "/lib")) #t)))))) (inputs - `(("util-linux" ,util-linux))) + `(("libuuid" ,util-linux "lib"))) (synopsis "Lightweight universal identifier library") (description "CrossGuid is a minimal GUID/UUID generator library for C++.") @@ -419,7 +419,7 @@ alternatives. In compilers, this can reduce the cascade of secondary errors.") ("libcdio" ,libcdio) ("libdrm" ,libdrm) ("libgcrypt" ,libgcrypt) - ("libjpeg" ,libjpeg) + ("libjpeg" ,libjpeg-turbo) ("libltdl" ,libltdl) ("libmad" ,libmad) ("libmicrohttpd" ,libmicrohttpd) diff --git a/gnu/packages/language.scm b/gnu/packages/language.scm index cec0ffa942..c66718aa1e 100644 --- a/gnu/packages/language.scm +++ b/gnu/packages/language.scm @@ -1,7 +1,7 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2015, 2016 Eric Bavier <bavier@member.fsf.org> ;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr> -;;; Copyright © 2018 ng0 <ng0@n0.is> +;;; Copyright © 2018 Nikita <nikita@n0.is> ;;; Copyright © 2019 Alex Vong <alexvong1995@gmail.com> ;;; Copyright © 2020 Ricardo Wurmus <rekado@elephly.net> ;;; diff --git a/gnu/packages/ld-wrapper-next.in b/gnu/packages/ld-wrapper-next.in deleted file mode 100644 index 5d5756f6a3..0000000000 --- a/gnu/packages/ld-wrapper-next.in +++ /dev/null @@ -1,305 +0,0 @@ -#!@BASH@ -# -*- mode: scheme; coding: utf-8; -*- - -# XXX: We have to go through Bash because there's no command-line switch to -# augment %load-compiled-path, and because of the silly 127-byte limit for -# the shebang line in Linux. -# Use `load-compiled' because `load' (and `-l') doesn't otherwise load our -# .go file (see <http://bugs.gnu.org/12519>). -# Unset 'GUILE_LOAD_COMPILED_PATH' to make sure we do not stumble upon -# incompatible .go files. See -# <https://lists.gnu.org/archive/html/guile-devel/2016-03/msg00000.html>. - -unset GUILE_LOAD_COMPILED_PATH -main="(@ (gnu build-support ld-wrapper) ld-wrapper)" -exec @GUILE@ -c "(load-compiled \"@SELF@.go\") (apply $main (cdr (command-line)))" "$@" -!# -;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018 Ludovic Courtès <ludo@gnu.org> -;;; Copyright © 2020 Marius Bakke <mbakke@fastmail.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 build-support ld-wrapper) - #:use-module (srfi srfi-1) - #:use-module (ice-9 match) - #:autoload (ice-9 rdelim) (read-delimited) - #:export (ld-wrapper)) - -;;; Commentary: -;;; -;;; This is a wrapper for the linker. Its purpose is to inspect the -L and -;;; -l switches passed to the linker, add corresponding -rpath arguments, and -;;; invoke the actual linker with this new set of arguments. -;;; -;;; The alternatives to this hack would be: -;;; -;;; 1. Using $LD_RUN_PATH. However, that would tend to include more than -;;; needed in the RPATH; for instance, given a package with `libfoo' as -;;; an input, all its binaries would have libfoo in their RPATH, -;;; regardless of whether they actually NEED it. -;;; -;;; 2. Use a GCC "lib" spec string such as `%{L*:-rpath %*}', which adds a -;;; `-rpath LIBDIR' argument for each occurrence of `-L LIBDIR'. -;;; However, this doesn't work when $LIBRARY_PATH is used, because the -;;; additional `-L' switches are not matched by the above rule, because -;;; the rule only matches explicit user-provided switches. See -;;; <http://gcc.gnu.org/ml/gcc-help/2012-09/msg00110.html> for details. -;;; -;;; As a bonus, this wrapper checks for "impurities"--i.e., references to -;;; libraries outside the store. -;;; -;;; Code: - -(define %real-ld - ;; Name of the linker that we wrap. - "@LD@") - -(define %store-directory - ;; File name of the store. - (or (getenv "NIX_STORE") "/gnu/store")) - -(define %temporary-directory - ;; Temporary directory. - (or (getenv "TMPDIR") "/tmp")) - -(define %build-directory - ;; Top build directory when run from a builder. - (getenv "NIX_BUILD_TOP")) - -(define %allow-impurities? - ;; Whether to allow references to libraries outside the store. - ;; Allow them by default for convenience. - (let ((value (getenv "GUIX_LD_WRAPPER_ALLOW_IMPURITIES"))) - (or (not value) - (let ((value (string-downcase value))) - (cond ((member value '("yes" "y" "t" "true" "1")) - #t) - ((member value '("no" "n" "f" "false" "0")) - #f) - (else - (format (current-error-port) - "ld-wrapper: ~s: invalid value for \ -'GUIX_LD_WRAPPER_ALLOW_IMPURITIES'~%" - value))))))) - -(define %debug? - ;; Whether to emit debugging output. - (getenv "GUIX_LD_WRAPPER_DEBUG")) - -(define %disable-rpath? - ;; Whether to disable automatic '-rpath' addition. - (getenv "GUIX_LD_WRAPPER_DISABLE_RPATH")) - -(define (readlink* file) - ;; Call 'readlink' until the result is not a symlink. - (define %max-symlink-depth 50) - - (let loop ((file file) - (depth 0)) - (define (absolute target) - (if (absolute-file-name? target) - target - (string-append (dirname file) "/" target))) - - (if (>= depth %max-symlink-depth) - file - (call-with-values - (lambda () - (catch 'system-error - (lambda () - (values #t (readlink file))) - (lambda args - (let ((errno (system-error-errno args))) - (if (or (= errno EINVAL) (= errno ENOENT)) - (values #f file) - (apply throw args)))))) - (lambda (success? target) - (if success? - (loop (absolute target) (+ depth 1)) - file)))))) - -(define (pure-file-name? file) - ;; Return #t when FILE is the name of a file either within the store - ;; (possibly via a symlink) or within the build directory. - (let ((file (readlink* file))) - (or (not (string-prefix? "/" file)) - (string-prefix? %store-directory file) - (string-prefix? %temporary-directory file) - (and %build-directory - (string-prefix? %build-directory file))))) - -(define (store-file-name? file) - ;; Return #t when FILE is a store file, possibly indirectly. - (string-prefix? %store-directory (readlink* file))) - -(define (shared-library? file) - ;; Return #t when FILE denotes a shared library. - (or (string-suffix? ".so" file) - (let ((index (string-contains file ".so."))) - ;; Since we cannot use regexps during bootstrap, roll our own. - (and index - (string-every (char-set-union (char-set #\.) char-set:digit) - (string-drop file (+ index 3))))))) - -(define (library-search-path args) - ;; Return the library search path as a list of directory names. The GNU ld - ;; manual notes that "[a]ll `-L' options apply to all `-l' options, - ;; regardless of the order in which the options appear", so we must compute - ;; the search path independently of the -l options. - (let loop ((args args) - (path '())) - (match args - (() - (reverse path)) - (("-L" directory . rest) - (loop rest (cons directory path))) - ((argument . rest) - (if (string-prefix? "-L" argument) ;augment the search path - (loop rest - (cons (string-drop argument 2) path)) - (loop rest path)))))) - -(define (library-files-linked args library-path) - ;; Return the absolute file names of shared libraries explicitly linked - ;; against via `-l' or with an absolute file name in ARGS, looking them up - ;; in LIBRARY-PATH. - (define files+args - (fold (lambda (argument result) - (match result - ((library-files ((and flag - (or "-dynamic-linker" "-plugin")) - . rest)) - ;; When passed '-dynamic-linker ld.so', ignore 'ld.so'; when - ;; passed '-plugin liblto_plugin.so', ignore - ;; 'liblto_plugin.so'. See <http://bugs.gnu.org/20102>. - (list library-files - (cons* argument flag rest))) - ((library-files previous-args) - (cond ((string-prefix? "-l" argument) ;add library - (let* ((lib (string-append "lib" - (string-drop argument 2) - ".so")) - (full (search-path library-path lib))) - (list (if full - (cons full library-files) - library-files) - (cons argument previous-args)))) - ((and (string-prefix? %store-directory argument) - (shared-library? argument)) ;add library - (list (cons argument library-files) - (cons argument previous-args))) - (else - (list library-files - (cons argument previous-args))))))) - (list '() '()) - args)) - - (match files+args - ((files arguments) - (reverse files)))) - -(define (rpath-arguments library-files) - ;; Return the `-rpath' argument list for each of LIBRARY-FILES, a list of - ;; absolute file names. - (fold-right (lambda (file args) - ;; Add '-rpath' if and only if FILE is in the store; we don't - ;; want to add '-rpath' for files under %BUILD-DIRECTORY or - ;; %TEMPORARY-DIRECTORY because that could leak to installed - ;; files. - (cond ((and (not %disable-rpath?) - (store-file-name? file)) - (cons* "-rpath" (dirname file) args)) - ((or %allow-impurities? - (pure-file-name? file)) - args) - (else - (begin - (format (current-error-port) - "ld-wrapper: error: attempt to use \ -library outside of ~a: ~s~%" - %store-directory file) - (exit 1))))) - '() - library-files)) - -(define (expand-arguments args) - ;; Expand ARGS such that "response file" arguments, such as "@args.txt", are - ;; expanded (info "(gcc) Overall Options"). - (define (response-file-arguments file) - (define (tokenize port) - ;; Return a list of all strings found in PORT. Quote characters are removed, - ;; but whitespaces within quoted strings are preserved. - (let loop ((words '())) - (let* ((word (read-delimited " '\"" port 'split)) - (token (car word)) - (delim (cdr word))) - (if (eof-object? delim) - (reverse words) - (case delim - ((#\") (loop (cons (read-delimited "\"" port) words))) - ((#\') (loop (cons (read-delimited "'" port) words))) - ((#\ ) (if (> 0 (string-length token)) - (loop (cons token words)) - (loop words))) - (else (loop words))))))) - - (when %debug? - (format (current-error-port) - "ld-wrapper: attempting to read arguments from '~a'~%" file)) - - (call-with-input-file file tokenize)) - - (define result - (fold-right (lambda (arg result) - (if (string-prefix? "@" arg) - (let ((file (string-drop arg 1))) - (append (catch 'system-error - (lambda () - (response-file-arguments file)) - (lambda args - ;; FILE doesn't exist or cannot be read so - ;; leave ARG as is. - (list arg))) - result)) - (cons arg result))) - '() - args)) - - ;; If there are "@" arguments in RESULT *and* we can expand them (they don't - ;; refer to nonexistent files), then recurse. - (if (equal? result args) - result - (expand-arguments result))) - -(define (ld-wrapper . args) - ;; Invoke the real `ld' with ARGS, augmented with `-rpath' switches. - (let* ((args (expand-arguments args)) - (path (library-search-path args)) - (libs (library-files-linked args path)) - (args (append args (rpath-arguments libs)))) - (when %debug? - (format (current-error-port) - "ld-wrapper: library search path: ~s~%" path) - (format (current-error-port) - "ld-wrapper: libraries linked: ~s~%" libs) - (format (current-error-port) - "ld-wrapper: invoking `~a' with ~s~%" - %real-ld args) - (force-output (current-error-port))) - (apply execl %real-ld (basename %real-ld) args))) - -;;; ld-wrapper.scm ends here diff --git a/gnu/packages/ld-wrapper.in b/gnu/packages/ld-wrapper.in index 16780c58f6..2b68b87fb9 100644 --- a/gnu/packages/ld-wrapper.in +++ b/gnu/packages/ld-wrapper.in @@ -16,6 +16,7 @@ exec @GUILE@ -c "(load-compiled \"@SELF@.go\") (apply $main (cdr (command-line)) !# ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2020 Marius Bakke <mbakke@fastmail.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -35,7 +36,7 @@ exec @GUILE@ -c "(load-compiled \"@SELF@.go\") (apply $main (cdr (command-line)) (define-module (gnu build-support ld-wrapper) #:use-module (srfi srfi-1) #:use-module (ice-9 match) - #:autoload (ice-9 rdelim) (read-string) + #:autoload (ice-9 rdelim) (read-delimited) #:export (ld-wrapper)) ;;; Commentary: @@ -239,13 +240,27 @@ library outside of ~a: ~s~%" ;; Expand ARGS such that "response file" arguments, such as "@args.txt", are ;; expanded (info "(gcc) Overall Options"). (define (response-file-arguments file) + (define (tokenize port) + ;; Return a list of all strings found in PORT. Quote characters are + ;; removed, but whitespaces within quoted strings are preserved. + (let loop ((tokens '())) + (let* ((token+delimiter (read-delimited " '\"\n" port 'split)) + (token (car token+delimiter)) + (delim (cdr token+delimiter))) + (if (eof-object? token) + (reverse tokens) + (case delim + ((#\") (loop (cons (read-delimited "\"" port) tokens))) + ((#\') (loop (cons (read-delimited "'" port) tokens))) + (else (if (> (string-length token) 0) + (loop (cons token tokens)) + (loop tokens)))))))) + (when %debug? (format (current-error-port) "ld-wrapper: attempting to read arguments from '~a'~%" file)) - ;; FIXME: Options can contain whitespace if they are protected by single - ;; or double quotes; this is not implemented here. - (string-tokenize (call-with-input-file file read-string))) + (call-with-input-file file tokenize)) (define result (fold-right (lambda (arg result) diff --git a/gnu/packages/less.scm b/gnu/packages/less.scm index 91c269a67e..d449e0729e 100644 --- a/gnu/packages/less.scm +++ b/gnu/packages/less.scm @@ -1,6 +1,8 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2012 Nikita Karetnikov <nikita@karetnikov.org> ;;; Copyright © 2019 Tobias Geerinckx-Rice <me@tobias.gr> +;;; Copyright © 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org> +;;; Copyright © 2020 Michael Rohleder <mike@rohleder.de> ;;; ;;; This file is part of GNU Guix. ;;; @@ -19,9 +21,13 @@ (define-module (gnu packages less) #:use-module (guix licenses) + #:use-module (gnu packages) #:use-module (gnu packages ncurses) + #:use-module (gnu packages perl) + #:use-module (gnu packages file) #:use-module (guix packages) #:use-module (guix download) + #:use-module (guix git-download) #:use-module (guix build-system gnu)) (define-public less @@ -35,6 +41,7 @@ version ".tar.gz") (string-append "http://www.greenwoodsoftware.com/less/less-" version ".tar.gz"))) + (patches (search-patches "less-hurd-path-max.patch")) (sha256 (base32 "0ggyjl3yzn7c450zk1rixi9ls6asdhgqynhk34zsd0ckhmsm45pz")))) (build-system gnu-build-system) @@ -48,3 +55,43 @@ backwards and forwards movement through the document. It also does not have to read the entire input file before starting, so it starts faster than most text editors.") (license gpl3+))) ; some files are under GPLv2+ + +(define-public lesspipe + (package + (name "lesspipe") + (version "1.84") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/wofr06/lesspipe.git") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "124ffhzrikr88ab14rk6753n8adxijpmg7q3zx7nmqc52wpkfd8q")))) + (build-system gnu-build-system) + (arguments + '(#:tests? #f ; no tests + #:phases (modify-phases %standard-phases + (replace 'configure + (lambda* (#:key outputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out"))) + (delete-file "Makefile") ; force generating + (invoke "./configure" + (string-append "--prefix=" out) + "--yes") + #t)))))) + (inputs + `(("file" ,file) + ("ncurses" ,ncurses))) ; for tput + (native-inputs `(("perl" ,perl))) + (home-page "https://github.com/wofr06/lesspipe") + (synopsis "Input filter for less") + (description "To browse files, the excellent viewer @code{less} can be +used. By setting the environment variable @code{LESSOPEN}, less can be +enhanced by external filters to become more powerful. The input filter for +less described here is called @code{lesspipe.sh}. It is able to process a +wide variety of file formats. It enables users to inspect archives and +display their contents without having to unpack them before. The filter is +easily extensible for new formats.") + (license gpl2+))) diff --git a/gnu/packages/libbsd.scm b/gnu/packages/libbsd.scm index a616de70bd..16a7e8fd89 100644 --- a/gnu/packages/libbsd.scm +++ b/gnu/packages/libbsd.scm @@ -25,15 +25,17 @@ (define-public libbsd (package (name "libbsd") - (version "0.9.1") + (version "0.10.0") (source (origin (method url-fetch) (uri (string-append "https://libbsd.freedesktop.org/releases/" "libbsd-" version ".tar.xz")) (sha256 (base32 - "1957w2wi7iqar978qlfsm220dwywnrh5m58nrnn9zmi74ds3bn2n")))) + "11x8q45jvjvf2dvgclds64mscyg10lva33qinf2hwgc84v3svf1l")))) (build-system gnu-build-system) + (arguments + '(#:configure-flags '("--disable-static"))) (synopsis "Utility functions from BSD systems") (description "This library provides useful functions commonly found on BSD systems, and lacking on others like GNU systems, thus making it easier to port diff --git a/gnu/packages/libcanberra.scm b/gnu/packages/libcanberra.scm index 121ba11f89..32d1cd3605 100644 --- a/gnu/packages/libcanberra.scm +++ b/gnu/packages/libcanberra.scm @@ -2,7 +2,7 @@ ;;; Copyright © 2013 Andreas Enge <andreas@enge.fr> ;;; Copyright © 2014, 2015, 2019 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2016 Fabian Harfert <fhmgufs@web.de> -;;; Copyright © 2017, 2018 ng0 <ng0@n0.is> +;;; Copyright © 2017, 2018 Nikita <nikita@n0.is> ;;; ;;; This file is part of GNU Guix. ;;; diff --git a/gnu/packages/libdaemon.scm b/gnu/packages/libdaemon.scm index 81cf6e58ba..e47d66cfa7 100644 --- a/gnu/packages/libdaemon.scm +++ b/gnu/packages/libdaemon.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2013, 2014 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2013, 2014, 2020 Ludovic Courtès <ludo@gnu.org> ;;; ;;; This file is part of GNU Guix. ;;; @@ -45,6 +45,20 @@ "0d5qlq5ab95wh1xc87rqrh1vx6i8lddka1w3f1zcqvcqdxgyn8zx")) (file-name (string-append name "-" version ".tar.gz")))) (build-system gnu-build-system) + (arguments + (if (%current-target-system) + ;; The 'setpgrp' test cannot provide an answer when cross-compiling, + ;; so provide the right one for glibc. + `(#:configure-flags (list "ac_cv_func_setpgrp_void=yes" + + ;; TODO: Move this globally on the next + ;; rebuild cycle. + ;; Set a valid localstatedir for the + ;; benefit of the default + ;; 'daemon_pid_file_proc', used by the + ;; Hurd's console client. + "--localstatedir=/var")) + '())) ;; XXX: Stale URL, missing replacement. See <http://bugs.gnu.org/18639>. (home-page "http://0pointer.de/lennart/projects/libdaemon/") diff --git a/gnu/packages/libedit.scm b/gnu/packages/libedit.scm index 37638a2b6a..38da02572a 100644 --- a/gnu/packages/libedit.scm +++ b/gnu/packages/libedit.scm @@ -3,6 +3,7 @@ ;;; Copyright © 2015 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2019 Gábor Boskovits <boskovits@gmail.com> +;;; Copyright © 2020 Giacomo Leidi <goodoldpaul@autistici.org> ;;; ;;; This file is part of GNU Guix. ;;; @@ -48,3 +49,24 @@ library (libedit). This Berkeley-style licensed command line editor library provides generic line editing, history, and tokenization functions, similar to those found in GNU Readline.") (license bsd-3))) + +(define-public editline + (package + (name "editline") + (version "1.17.1") + (source + (origin + (method url-fetch) + (uri (string-append + "https://ftp.troglobit.com/editline/editline-" version ".tar.xz")) + (sha256 + (base32 "03pw3z6pz590v8xfnjx0yynnzij2sb9xwjbvqvdzsid56crkn8nz")))) + (build-system gnu-build-system) + (home-page "https://troglobit.com/projects/editline/") + (synopsis "Line editing library") + (description + "@code{editline} is a small line editing library. It can be linked into almost +any program to provide command line editing and history functions. It is call +compatible with the GNU Readline library, but at a fraction of the size, +and as a result fewer features.") + (license bsd-4))) diff --git a/gnu/packages/libevent.scm b/gnu/packages/libevent.scm index 3754a5c427..dab574a155 100644 --- a/gnu/packages/libevent.scm +++ b/gnu/packages/libevent.scm @@ -76,7 +76,7 @@ loop.") (define-public libev (package (name "libev") - (version "4.25") + (version "4.31") (source (origin (method url-fetch) (uri (string-append "http://dist.schmorp.de/libev/Attic/libev-" @@ -84,8 +84,10 @@ loop.") ".tar.gz")) (sha256 (base32 - "1295q0lkkbrlpd5dl5i48bh1rm8mjzh9y795jlvjz3bp4wf7wxbq")))) + "0nkfqv69wfyy2bpga4d53iqydycpik8jp8x6q70353hia8mmv1gd")))) (build-system gnu-build-system) + (arguments + '(#:configure-flags '("--disable-static"))) (home-page "http://software.schmorp.de/pkg/libev.html") (synopsis "Event loop loosely modelled after libevent") (description @@ -100,17 +102,18 @@ limited support for fork events.") (define-public libuv (package (name "libuv") - (version "1.30.1") + (version "1.35.0") (source (origin (method url-fetch) (uri (string-append "https://dist.libuv.org/dist/v" version "/libuv-v" version ".tar.gz")) (sha256 (base32 - "12s7ifwgbfxblhv46inqa8c2lsnl8cgmvd37y4a4248xhkx1d0s6")))) + "0126mfmaw3s92dsga60sydgwjmzwg9cd36n127pydmisah17v50f")))) (build-system gnu-build-system) (arguments - '(;; XXX: Some tests want /dev/tty, attempt to make connections, etc. + '(#:configure-flags '("--disable-static") + ;; XXX: Some tests want /dev/tty, attempt to make connections, etc. #:tests? #f)) (native-inputs `(("autoconf" ,autoconf-wrapper) ("automake" ,automake) @@ -130,20 +133,6 @@ resolution, asynchronous file system operations, and threading primitives.") ;; details. Documentation is CC-BY 4.0 as of 1.12.0; see 'LICENSE-docs'. (license (list expat cc-by4.0)))) -;; This newer version of LibUV is required by 'node'. Package it separately -;; to avoid massive rebuilds. -(define-public libuv/latest - (package/inherit - libuv - (version "1.34.2") - (source (origin - (method url-fetch) - (uri (string-append "https://dist.libuv.org/dist/v" version - "/libuv-v" version ".tar.gz")) - (sha256 - (base32 - "0inzk8qpw78im3fiazrc54qi1gcapbs8dhf0hk3kwpzg0i2kpnb5")))))) - (define-public perl-anyevent (package (name "perl-anyevent") @@ -181,14 +170,14 @@ not rely on XS.") (define-public perl-ev (package (name "perl-ev") - (version "4.25") + (version "4.31") (source (origin (method url-fetch) (uri (string-append "mirror://cpan/authors/id/M/ML/MLEHMANN/EV-" version ".tar.gz")) (sha256 (base32 - "0slw68zxrkfribf6lhggdhpay3mdng0nqxlglkwrk19myblchr9f")) + "1jxlhnvrqim39977zwavjrcbdf9bifb46pwaxvm0s8klq121kjwb")) (modules '((guix build utils))) (snippet '(begin diff --git a/gnu/packages/libffi.scm b/gnu/packages/libffi.scm index b61dbc8657..b0098389c0 100644 --- a/gnu/packages/libffi.scm +++ b/gnu/packages/libffi.scm @@ -41,7 +41,7 @@ (define-public libffi (package (name "libffi") - (version "3.2.1") + (version "3.3") (source (origin (method url-fetch) (uri @@ -49,21 +49,12 @@ name "-" version ".tar.gz")) (sha256 (base32 - "0dya49bnhianl0r65m65xndz6ls2jn1xngyn72gd28ls3n7bnvnh")) - (patches (search-patches "libffi-3.2.1-complex-alpha.patch")))) + "0mi0cpf8aa40ljjmzxb7im6dbj45bb0kllcd09xgmp834y9agyvj")))) (build-system gnu-build-system) (arguments `(;; Prevent the build system from passing -march and -mtune to the ;; compiler. See "ax_cc_maxopt.m4" and "ax_gcc_archflag.m4". - #:configure-flags '("--enable-portable-binary" "--without-gcc-arch") - #:phases - (modify-phases %standard-phases - (add-after 'install 'post-install - (lambda* (#:key outputs #:allow-other-keys) - (define out (assoc-ref outputs "out")) - (symlink (string-append out "/lib/libffi-3.2.1/include") - (string-append out "/include")) - #t))))) + #:configure-flags '("--enable-portable-binary" "--without-gcc-arch"))) (outputs '("out" "debug")) (synopsis "Foreign function call interface library") (description @@ -85,14 +76,13 @@ conversions for values passed between the two languages.") (define-public python-cffi (package (name "python-cffi") - (version "1.11.5") + (version "1.13.2") (source (origin (method url-fetch) (uri (pypi-uri "cffi" version)) (sha256 - (base32 "1x3lrj928dcxx1k8k9gf3s4s3jwvzv8mc3kkyg1g7c3a1sc1f3z9")) - (patches (search-patches "python-cffi-x87-stack-clean.patch")))) + (base32 "0iikq5rn9a405n94c7s2j6kq3jv5qs9q4xyik8657b2py27ix6jr")))) (build-system python-build-system) (inputs `(("libffi" ,libffi))) @@ -125,7 +115,7 @@ conversions for values passed between the two languages.") "compiler_so='gcc',linker_exe='gcc'," "linker_so='gcc -shared')"))) (substitute* "testing/cffi0/test_ownlib.py" - (("'cc testownlib") "'gcc testownlib")) + (("\"cc testownlib") "\"gcc testownlib")) (invoke "py.test" "-v" "c/" "testing/") #t)) (add-before 'check 'patch-paths-of-dynamically-loaded-libraries @@ -151,14 +141,7 @@ conversions for values passed between the two languages.") (substitute* "c/test_c.py" (("find_and_load_library\\(['\"]{1}c['\"]{1}") (format #f "find_and_load_library('~a'" libc))) - #t))) - (add-before 'check 'disable-failing-test - ;; This is assumed to be a libffi issue: - ;; https://bitbucket.org/cffi/cffi/issues/312/tests-failed-with-armv8 - (lambda _ - (substitute* "testing/cffi0/test_ownlib.py" - (("ret.left") "ownlib.left")) - #t))))) + #t)))))) (home-page "https://cffi.readthedocs.io/") (synopsis "Foreign function interface for Python") (description "Foreign Function Interface for Python calling C code.") diff --git a/gnu/packages/libidn.scm b/gnu/packages/libidn.scm index ea9ce70dfb..8731ed3f83 100644 --- a/gnu/packages/libidn.scm +++ b/gnu/packages/libidn.scm @@ -59,14 +59,14 @@ Java libraries.") (define-public libidn2 (package (name "libidn2") - (version "2.2.0") + (version "2.3.0") (source (origin (method url-fetch) (uri (string-append "mirror://gnu/libidn/" name "-" version ".tar.lz")) (sha256 (base32 - "1a5cv79q6b719jv4fpwjl3r0mmx9qcpla98v9dk64cgxn8f8di10")))) + "14yw4w37ya6rcqa7h6p44x6711dwgq2j22xg6k79ybbf04sj88kb")))) (native-inputs `(("lzip" ,lzip))) (inputs diff --git a/gnu/packages/libreoffice.scm b/gnu/packages/libreoffice.scm index f9dc6099e1..a3a6ea5d1a 100644 --- a/gnu/packages/libreoffice.scm +++ b/gnu/packages/libreoffice.scm @@ -539,6 +539,17 @@ library primarily intended for language guessing.") (sha256 (base32 "1b1lvqh68rwij1yvmxy02hsmh7i74ma5767mk8mg5nx6chajshhf")))) (build-system gnu-build-system) + (arguments + '(#:phases (modify-phases %standard-phases + (add-before 'build 'adjust-for-ICU-65 + (lambda _ + ;; Fix build with ICU 65 and later. Taken from this + ;; upstream commit, remove for libfreehand > 0.1.2: + ;; https://gerrit.libreoffice.org/#/c/80224/ + (substitute* "src/lib/libfreehand_utils.cpp" + (("U16_NEXT.*" all) + (string-append all ";\n"))) + #t))))) (native-inputs `(("cppunit" ,cppunit) ("doxygen" ,doxygen) @@ -995,6 +1006,7 @@ converting QuarkXPress file format. It supports versions 3.1 to 4.1.") (string-append "https://download.documentfoundation.org/libreoffice/src/" (version-prefix version 3) "/libreoffice-" version ".tar.xz")) + (patches (search-patches "libreoffice-poppler-compat.patch")) (sha256 (base32 "06acm41q9nda8r30b13cn9zafsw1gszjdphh6lx90s09d2sf7f23")))) diff --git a/gnu/packages/libusb.scm b/gnu/packages/libusb.scm index 01c138cb4e..3842f3fead 100644 --- a/gnu/packages/libusb.scm +++ b/gnu/packages/libusb.scm @@ -8,6 +8,8 @@ ;;; Copyright © 2017 Jonathan Brielmaier <jonathan.brielmaier@web.de> ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2018 Vagrant Cascadian <vagrant@debian.org> +;;; Copyright © 2020 Marius Bakke <mbakke@fastmail.com> +;;; Copyright © 2020 Christopher Howard <christopher@librehacker.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -113,7 +115,8 @@ version of libusb to run with newer libusb.") (sha256 (base32 "0i4bacxkyr7xyqxbmb00ypkrv4swkgm0mghbzjsnw6blvvczgxip")) - (patches (search-patches "libusb-0.1-disable-tests.patch")))))) + (patches (search-patches "libusb-0.1-disable-tests.patch")))) + (arguments `(#:configure-flags (list "CFLAGS=-Wno-error"))))) (define-public libusb4java ;; There is no public release so we take the latest version from git. @@ -358,14 +361,7 @@ I2C and SPI devices attached to the USB Hub.") (base32 "02vraf4j46bp746s0gz7vga2gv2dy3zd1v1bsy9x8algg9fpcb7n")))) (build-system gnu-build-system) (arguments - `(#:phases - (modify-phases %standard-phases - (add-before 'bootstrap 'configure-later - ;; Don't run ./configure during bootstrap. - (lambda _ - (setenv "NOCONFIGURE" "set") - #t))) - ;; Tests fail randomly when run in parallel because several of them write + `(;; Tests fail randomly when run in parallel because several of them write ;; and read to/from the same file--e.g., "4.plist" is accessed by ;; 'large.test' and 'largecmp.test'. #:parallel-tests? #f)) @@ -405,6 +401,25 @@ connections from and to iOS devices by connecting to a socket provided by a @code{usbmuxd} daemon.") (license license:lgpl2.1+))) +;; These patches are needed to build with Python 3.8. +(define %libimobiledevice-patches + (list (origin + (method url-fetch) + (uri (string-append "https://github.com/libimobiledevice/libimobiledevice" + "/commit/1ff3448d2e27f1bac8d2f0af8b8e952854860278.patch")) + (file-name "libimobiledevice-python-config.patch") + (sha256 + (base32 + "1mkwhp8vvhajij29jk3w4rkgcfh8d8waf908drh3076k70hb6i8y"))) + (origin + (method url-fetch) + (uri (string-append "https://github.com/libimobiledevice/libimobiledevice" + "/commit/eea4f1be9107c8ab621fd71460e47d0d38e55d71.patch")) + (file-name "libimobiledevice-python-3.8-compat.patch") + (sha256 + (base32 + "1zz8v7kgwyq5ck1qp03l29pcmljygnjwls9d6q28nv5pkwa6848w"))))) + (define-public libimobiledevice (package (name "libimobiledevice") @@ -413,17 +428,19 @@ connections from and to iOS devices by connecting to a socket provided by a (method url-fetch) (uri (string-append "https://www.libimobiledevice.org/downloads/" "libimobiledevice-" version ".tar.bz2")) + ;; Note: Remove the 'force-bootstrap' phase and the autoconf + ;; inputs below when removing these patches. + (patches %libimobiledevice-patches) (sha256 (base32 "0dqhy4qwj30mw8pwckvjmgnj1qqrh6p8c6jknmhvylshhzh0ssvq")))) (build-system gnu-build-system) (arguments - `(#:configure-flags - (list (string-append "PYTHON_LDFLAGS=-L" - (assoc-ref %build-inputs "python") - "/lib -lpython" - ,(version-major+minor (package-version python)) - "m")))) + `(#:phases (modify-phases %standard-phases + (add-before 'bootstrap 'force-bootstrap + (lambda _ + (delete-file "configure") + #t))))) (propagated-inputs `(("openssl" ,openssl-1.0) ("libplist" ,libplist) @@ -433,6 +450,10 @@ connections from and to iOS devices by connecting to a socket provided by a (native-inputs `(("pkg-config" ,pkg-config) ("python-cython" ,python-cython) + + ;; These are required because we patch and bootstrap the build system. + ("autoconf" ,autoconf) + ("automake" ,automake) ("libtool" ,libtool))) (home-page "https://www.libimobiledevice.org/") (synopsis "Protocol library and tools to communicate with Apple devices") diff --git a/gnu/packages/lighting.scm b/gnu/packages/lighting.scm index b91f5c8834..18110420de 100644 --- a/gnu/packages/lighting.scm +++ b/gnu/packages/lighting.scm @@ -57,7 +57,7 @@ `(("libftdi" ,libftdi) ("libmicrohttpd" ,libmicrohttpd) ("libusb" ,libusb) - ("libuuid" ,util-linux) + ("libuuid" ,util-linux "lib") ("zlib" ,zlib))) (propagated-inputs ;; Ola 0.10.5 only supports protobuf 2.x, and building it with 3.x breaks. diff --git a/gnu/packages/linphone.scm b/gnu/packages/linphone.scm index e7d3cf7aaf..f96fff2fc4 100644 --- a/gnu/packages/linphone.scm +++ b/gnu/packages/linphone.scm @@ -37,6 +37,7 @@ #:use-module (gnu packages pulseaudio) #:use-module (gnu packages python) #:use-module (gnu packages python-xyz) + #:use-module (gnu packages qt) #:use-module (gnu packages java) #:use-module (gnu packages sqlite) #:use-module (gnu packages telephony) @@ -49,6 +50,7 @@ #:use-module (guix packages) #:use-module (guix download) #:use-module (guix build-system cmake) + #:use-module (guix build-system qt) #:use-module (guix build-system glib-or-gtk) #:use-module (guix build-system gnu)) @@ -68,12 +70,11 @@ (arguments '(#:tests? #f ; No test target #:configure-flags - (list - "-DENABLE_STATIC=NO"))) ; Not required + (list "-DENABLE_STATIC=NO"))) ; Not required (synopsis "Belledonne Communications Unit Testing Framework") - (description "BCUnit is a fork of the defunct project CUnit, -with several fixes and patches applied. It is an unit testing -framework for writing, administering, and running unit tests in C.") + (description "BCUnit is a fork of the defunct project CUnit, with several +fixes and patches applied. It is an unit testing framework for writing, +administering, and running unit tests in C.") (home-page "https://gitlab.linphone.org/BC/public/bcunit") (license license:lgpl2.0+))) @@ -93,8 +94,7 @@ framework for writing, administering, and running unit tests in C.") (arguments '(#:tests? #f ; No test target #:configure-flags - (list - "-DENABLE_STATIC=OFF"))) ; Not required + (list "-DENABLE_STATIC=OFF"))) ; Not required (inputs `(("bcunit" ,bcunit) ("mbedtls" ,mbedtls-apache))) @@ -120,14 +120,14 @@ Communications software like belle-sip, mediastreamer2 and linphone.") (arguments `(#:tests? #f ; No test target #:configure-flags - (list - "-DENABLE_STATIC=OFF"))) ; Not required + (list "-DENABLE_STATIC=OFF"))) ; Not required (inputs `(("bctoolbox" ,bctoolbox))) (synopsis "Belledonne Communications Language Recognition Library") - (description "Belr is Belledonne Communications' language recognition library, -written in C++11. It parses text inputs formatted according to a language -defined by an ABNF grammar, such as the protocols standardized at IETF.") + (description "Belr is Belledonne Communications' language recognition +library, written in C++11. It parses text inputs formatted according to a +language defined by an ABNF grammar, such as the protocols standardized at +IETF.") (home-page "https://gitlab.linphone.org/BC/public/belr") (license license:gpl3+))) @@ -147,13 +147,13 @@ defined by an ABNF grammar, such as the protocols standardized at IETF.") (arguments `(#:tests? #f ; No test target #:configure-flags - (list - "-DENABLE_STATIC=OFF"))) ; Not required + (list "-DENABLE_STATIC=OFF"))) ; Not required (inputs `(("bctoolbox" ,bctoolbox) ("belr" ,belr))) (synopsis "Belledonne Communications VCard Library") - (description "Belcard is a C++ library to manipulate VCard standard format.") + (description "Belcard is a C++ library to manipulate VCard standard +format.") (home-page "https://gitlab.linphone.org/BC/public/belcard") (license license:gpl3+))) @@ -176,16 +176,16 @@ defined by an ABNF grammar, such as the protocols standardized at IETF.") (list "-DENABLE_STATIC=NO"))) ; Not required (synopsis "Belledonne Communications Media Container") - (description "BcMatroska is a free and open standard multi-media -container format. It can hold an unlimited number of video, audio, -picture, or subtitle tracks in one file. ") + (description "BcMatroska is a free and open standard multi-media container +format. It can hold an unlimited number of video, audio, picture, or subtitle +tracks in one file. ") (home-page "https://gitlab.linphone.org/BC/public/bcmatroska2") (license (list - ;; That license applies for Core C and LibEBML2. + ;; For Core C and LibEBML2. ;; https://www.matroska.org/node/47 license:bsd-4 - ;; That license applies for LibMatroska2. + ;; For LibMatroska2. ;; https://www.matroska.org/node/47 license:lgpl2.1+)))) @@ -205,8 +205,7 @@ picture, or subtitle tracks in one file. ") (arguments `(#:tests? #f ; No test target #:configure-flags - (list - "-DENABLE_STATIC=NO"))) ; Not required + (list "-DENABLE_STATIC=NO"))) ; Not required (synopsis "Belledonne Communications G729 Codec") (description "BcG729 is an implementation of both encoder and decoder of the ITU G729 speech codec. The library written in C 99 is fully portable and @@ -232,8 +231,7 @@ such as conferencing.") (arguments `(#:tests? #f ; No test target #:configure-flags - (list - "-DENABLE_STATIC=NO"))) ; Not required + (list "-DENABLE_STATIC=NO"))) ; Not required (native-inputs `(("dot" ,graphviz) ("doxygen" ,doxygen))) @@ -261,16 +259,15 @@ implements the RFC 3550 standard.") (arguments `(#:tests? #f ; No test target #:configure-flags - (list - "-DENABLE_STATIC=NO"))) + (list "-DENABLE_STATIC=NO"))) ; Not required (inputs `(("bctoolbox" ,bctoolbox) ("sqlite3" ,sqlite) ("xml2" ,libxml2))) (synopsis "Belledonne Communications ZRTP Library") - (description "BZRTP is an implementation of ZRTP keys exchange -protocol, written in C. It is fully portable and can be executed on many -platforms including both ARM and x86.") + (description "BZRTP is an implementation of ZRTP keys exchange protocol, +written in C. It is fully portable and can be executed on many platforms +including both ARM and x86.") (home-page "https://gitlab.linphone.org/BC/public/bzrtp") (license license:gpl2+))) @@ -290,16 +287,15 @@ platforms including both ARM and x86.") (arguments `(#:tests? #f ; Requires network access #:configure-flags - (list - "-DENABLE_STATIC=NO") + (list "-DENABLE_STATIC=NO") ; Not required #:phases (modify-phases %standard-phases (add-after 'unpack 'patch (lambda _ (substitute* "src/CMakeLists.txt" - ;; ANTLR would use multithreaded DFA generation - ;; otherwise--which would not be reproducible. - (("-Xmultithreaded ") "")) + ;; ANTLR would use multithreaded DFA generation otherwise, + ;; which would not be reproducible. + (("-Xmultithreaded ") "")) #t))))) (inputs `(("antlr3" ,antlr3-3.3) @@ -332,12 +328,11 @@ API. It also comprises a simple HTTP/HTTPS client implementation.") (arguments `(#:tests? #f ; No test target #:configure-flags - (list - "-DENABLE_STATIC=NO" ; Not required - "-DENABLE_STRICT=NO" ; Would otherwise treat warnings as err - "-DENABLE_BV16=NO" ; Not available - "-DCMAKE_C_FLAGS=-DMS2_GIT_VERSION=\\\"unknown\\\"" - "-DCMAKE_CXX_FLAGS=-DMS2_GIT_VERSION=\\\"unknown\\\"") + (list "-DENABLE_STATIC=NO" ; Not required + "-DENABLE_STRICT=NO" ; Would otherwise treat warnings as err + "-DENABLE_BV16=NO" ; Not available + "-DCMAKE_C_FLAGS=-DMS2_GIT_VERSION=\\\"unknown\\\"" + "-DCMAKE_CXX_FLAGS=-DMS2_GIT_VERSION=\\\"unknown\\\"") #:phases (modify-phases %standard-phases (add-after 'install 'separate-outputs @@ -394,13 +389,12 @@ API. It also comprises a simple HTTP/HTTPS client implementation.") ("vpx" ,libvpx) ("x11" ,libx11) ("xv" ,libxv) - ("zrtp", bzrtp))) + ("zrtp" ,bzrtp))) (synopsis "Belledonne Communications Streaming Engine") - (description "Mediastreamer2 is a powerful and lightweight -streaming engine for telephony applications. This media processing -and streaming toolkit is responsible for receiving and sending all -multimedia streams in Linphone, including media capture, encoding and -decoding, and rendering.") + (description "Mediastreamer2 is a powerful and lightweight streaming engine +for telephony applications. This media processing and streaming toolkit is +responsible for receiving and sending all multimedia streams in Linphone, +including media capture, encoding and decoding, and rendering.") (home-page "https://gitlab.linphone.org/BC/public/mediastreamer2") (license license:gpl2+))) @@ -421,15 +415,15 @@ decoding, and rendering.") (arguments `(#:tests? #f ; No test target #:configure-flags - (list - (string-append "-DGTK2_GDKCONFIG_INCLUDE_DIR=" - (string-append (assoc-ref %build-inputs "gtk2") - "/lib/gtk-2.0/include")) - (string-append "-DGTK2_GLIBCONFIG_INCLUDE_DIR=" - (string-append (assoc-ref %build-inputs "glib") - "/lib/glib-2.0/include")) - "-DENABLE_STATIC=NO" ; Not required - "-DENABLE_GTK_UI=YES") ; For Legacy UI + (list (string-append "-DGTK2_GDKCONFIG_INCLUDE_DIR=" + (string-append (assoc-ref %build-inputs "gtk2") + "/lib/gtk-2.0/include")) + (string-append "-DGTK2_GLIBCONFIG_INCLUDE_DIR=" + (string-append (assoc-ref %build-inputs "glib") + "/lib/glib-2.0/include")) + "-DENABLE_STATIC=NO" ; Not required + "-DENABLE_STRICT=NO" + "-DENABLE_GTK_UI=YES") ; for legacy UI #:imported-modules (,@%cmake-build-system-modules (guix build glib-or-gtk-build-system)) #:modules ((guix build cmake-build-system) @@ -500,6 +494,90 @@ and video calls or instant messaging capabilities to an application.") (home-page "https://gitlab.linphone.org/BC/public/liblinphone") (license license:gpl2+))) +(define-public linphoneqt + (package + (name "linphoneqt") + (version "4.1.1") + (source + (origin + (method url-fetch) + (uri + (string-append "https://www.linphone.org/releases/sources/" name + "/" name "-" version ".tar.gz")) + (sha256 + (base32 "1g2zrr9li0g1hgs6vys06vr98h5dx36z22hx7a6ry231536c002a")) + (patches (search-patches "linphoneqt-tabbutton.patch")))) + (build-system qt-build-system) + (arguments + `(#:tests? #f ; No test target + #:phases + (modify-phases %standard-phases + (add-after 'set-paths 'set-qt-rcc-source-date-override + (lambda _ + ;; This fixes a reproducibility problem where the Qt Resource + ;; Compiler (RCC) includes timestamp of its source files + ;; (see: https://reproducible-builds.org/docs/ + ;; deterministic-build-systems/#cmake-notes). + (setenv "QT_RCC_SOURCE_DATE_OVERRIDE" "1") + #t)) + (add-after 'unpack 'fix-cmake-error + (lambda _ + ;; This is fixed in commit efed2fd8 of the master branch. + (substitute* "CMakeLists.txt" + (("js)\\$\"") + "js$\"")) + #t)) + (add-after 'unpack 'set-version-string + (lambda _ + (substitute* "src/app/AppController.cpp" + (("LINPHONE_QT_GIT_VERSION") + (format #f "~s" ,version))) + #t)) + (add-after 'install 'extend-shared-resources + ;; Not using the FHS exposes an issue where the client refers to + ;; its own "share" directory, which lacks sound files installed by + ;; liblinphone. + (lambda* (#:key inputs outputs #:allow-other-keys) + (let ((liblinphone (assoc-ref inputs "linphone")) + (out (assoc-ref outputs "out"))) + (symlink (string-append liblinphone "/share/sounds") + (string-append out "/share/sounds")) + #t)))))) + (native-inputs + `(("qttools" ,qttools))) + (inputs + `(("bctoolbox" ,bctoolbox) + ("belcard" ,belcard) + ("bellesip" ,belle-sip) + ("linphone" ,liblinphone) + ("mediastreamer2" ,mediastreamer2) + ("qtbase" ,qtbase) + ("qtdeclarative" ,qtdeclarative) + ("qtgraphicaleffects" ,qtgraphicaleffects) + ("qtquickcontrols" ,qtquickcontrols) + ("qtquickcontrols2" ,qtquickcontrols2) + ("qtsvg" ,qtsvg))) + (synopsis "Desktop client for the Linphone SIP softphone") + (description "Linphone is a SIP softphone for voice and video over IP calling +(VoIP) and instant messaging. Amongst its features are: +@itemize +@item High Definition (HD) audio and video calls +@item Multiple call management (pause and resume) +@item Call transfer +@item Audio conferencing (merge calls into a conference call) +@item Call recording and replay (audio only) +@item Instant Messaging with message delivery status (IMDN) +@item Picture and file sharing +@item Echo cancellation +@item Secure user authentication using TLS client certificates +@item SRTP, zRTP and SRTP-DTLS voice and video encryption +@item Telephone tone (DTMF) support using SIP INFO or RFC 4733 +@item Audio codecs: opus, speex, g711, g729, gsm, iLBC, g722, SILK, etc. +@item Video codecs: VP8, H.264 and H.265 with resolutions up to 1080P, MPEG4 +@end itemize") + (home-page "https://gitlab.linphone.org/BC/public/linphone-desktop") + (license license:gpl2+))) + (define-public msopenh264 (package (name "msopenh264") @@ -518,17 +596,18 @@ and video calls or instant messaging capabilities to an application.") (origin (method url-fetch) (uri - (string-append "https://gitlab.linphone.org/BC/public/msopenh264/commit/" - "493d147d28c9a0f788ba4e50b47a1ce7b18bf326.diff")) + (string-append "https://gitlab.linphone.org/BC/public/msopenh264/" + "commit/493d147d28c9a0f788ba4e50b47a1ce7b18bf326" + ".diff")) (file-name "msopenh264-openh264.patch") (sha256 - (base32 "0mmd7nz5n9ian4rcwn200nldmy5j0dpdrna7r32rqnaw82bx3kdb"))))))) + (base32 + "0mmd7nz5n9ian4rcwn200nldmy5j0dpdrna7r32rqnaw82bx3kdb"))))))) (build-system cmake-build-system) (arguments `(#:tests? #f ; No test target #:configure-flags - (list - "-DENABLE_STATIC=NO"))) ; Not required + (list "-DENABLE_STATIC=NO"))) ; Not required (inputs `(("mediastreamer2" ,mediastreamer2) ("openh264" ,openh264) @@ -555,14 +634,13 @@ mediastreamer2 based on the openh264 library.") (arguments `(#:tests? #f ; No test target #:configure-flags - (list - "-DENABLE_STATIC=NO"))) ; Not required + (list "-DENABLE_STATIC=NO"))) ; Not required (inputs `(("mediastreamer2" ,mediastreamer2) ("ortp" ,ortp))) (synopsis "Media Streamer SILK Codec") - (description "MSSILK is a plugin of MediaStreamer, adding support for -AMR codec. It is based on the Skype's SILK implementation.") + (description "MSSILK is a plugin of MediaStreamer, adding support for AMR +codec. It is based on the Skype's SILK implementation.") (home-page "https://gitlab.linphone.org/BC/public/mssilk") (license license:gpl2+))) @@ -583,7 +661,7 @@ AMR codec. It is based on the Skype's SILK implementation.") `(#:tests? #f ; No test target #:configure-flags (list - "-DENABLE_STATIC=NO"))) + "-DENABLE_STATIC=NO"))) ; Not required (inputs `(("bctoolbox" ,bctoolbox) ("mediastreamer2" ,mediastreamer2) @@ -610,16 +688,15 @@ WebRTC codec. It includes features from WebRTC, such as, iSAC and AECM.") (arguments `(#:tests? #f ; No test target #:configure-flags - (list - "-DENABLE_STATIC=NO" ; Not required - "-DENABLE_WIDEBAND=YES"))) + (list "-DENABLE_STATIC=NO" ; Not required + "-DENABLE_WIDEBAND=YES"))) (inputs `(("mediastreamer2" ,mediastreamer2) ("opencoreamr" ,opencore-amr) ("ortp" ,ortp) ("voamrwbenc" ,vo-amrwbenc))) (synopsis "Media Streamer AMR Codec") - (description "MSAMR is a plugin of MediaStreamer, adding support for -AMR codec. It is based on the opencore-amr implementation.") + (description "MSAMR is a plugin of MediaStreamer, adding support for AMR +codec. It is based on the opencore-amr implementation.") (home-page "https://gitlab.linphone.org/BC/public/msamr") (license license:gpl3+))) diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm index 72a2c9594b..22249e1cf1 100644 --- a/gnu/packages/linux.scm +++ b/gnu/packages/linux.scm @@ -18,11 +18,11 @@ ;;; Copyright © 2016, 2017, 2018, 2019, 2020 Marius Bakke <mbakke@fastmail.com> ;;; Copyright © 2016, 2018 Rene Saavedra <pacoon@protonmail.com> ;;; Copyright © 2016 Carlos Sánchez de La Lama <csanchezdll@gmail.com> -;;; Copyright © 2016, 2017 ng0 <ng0@n0.is> +;;; Copyright © 2016, 2017 Nikita <nikita@n0.is> ;;; Copyright © 2017, 2018 Leo Famulari <leo@famulari.name> ;;; Copyright © 2017 José Miguel Sánchez García <jmi2k@openmailbox.com> ;;; Copyright © 2017 Gábor Boskovits <boskovits@gmail.com> -;;; Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com> +;;; Copyright © 2017, 2019 Mathieu Othacehe <m.othacehe@gmail.com> ;;; Copyright © 2017 Clément Lassieur <clement@lassieur.org> ;;; Copyright © 2017, 2018, 2019 Rutger Helling <rhelling@mykolab.com> ;;; Copyright © 2017 nee <nee-git@hidamari.blue> @@ -42,6 +42,7 @@ ;;; Copyright © 2020 Pierre Neidhardt <mail@ambrevar.xyz> ;;; Copyright © 2020 Chris Marusich <cmmarusich@gmail.com> ;;; Copyright © 2020 Vincent Legoll <vincent.legoll@gmail.com> +;;; Copyright © 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org> ;;; ;;; This file is part of GNU Guix. ;;; @@ -63,7 +64,6 @@ #:use-module (gnu packages acl) #:use-module (gnu packages admin) #:use-module (gnu packages algebra) - #:use-module (gnu packages attr) #:use-module (gnu packages audio) #:use-module (gnu packages autotools) #:use-module (gnu packages backup) @@ -200,9 +200,9 @@ defconfig. Return the appropriate make target if applicable, otherwise return (define deblob-scripts-5.4 (linux-libre-deblob-scripts - "5.4.28" + "5.4.37" (base32 "0ckxn7k5zgcqk30dq943bnamr6a6zjbw2aqjl3x30f4kvh5f6k25") - (base32 "08ls4gx5vanyiq9rn0869nfq4piw4lx1dl8hh9w9xgkr4ypc1j4k"))) + (base32 "10qb890is4z58vr8czh3xx69q62l3b3j38y410kgiw8nii3zx5lr"))) (define deblob-scripts-4.19 (linux-libre-deblob-scripts @@ -369,50 +369,50 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS." (sha256 hash))) -(define-public linux-libre-5.6-version "5.6.7") +(define-public linux-libre-5.6-version "5.6.13") (define-public linux-libre-5.6-pristine-source (let ((version linux-libre-5.6-version) - (hash (base32 "1jljcva3gxg1yc2kw3jjgmhzzdm16nylzxl63zbndjza547l5813"))) + (hash (base32 "11zriz0jwqizv0pq0laql0svsnspdfnxqykq70v22x39iyfdf9gi"))) (make-linux-libre-source version (%upstream-linux-source version hash) deblob-scripts-5.6))) -(define-public linux-libre-5.4-version "5.4.35") +(define-public linux-libre-5.4-version "5.4.41") (define-public linux-libre-5.4-pristine-source (let ((version linux-libre-5.4-version) - (hash (base32 "1m06k19pbb3wz8z2dgf03jvzbbdh6q8jwwdz509s902a53vxasz1"))) + (hash (base32 "0mxhz3f0ayz0nggndbikp44kx307yxf16qzsv46hni6p8z1ffr0y"))) (make-linux-libre-source version (%upstream-linux-source version hash) deblob-scripts-5.4))) -(define-public linux-libre-4.19-version "4.19.118") +(define-public linux-libre-4.19-version "4.19.123") (define-public linux-libre-4.19-pristine-source (let ((version linux-libre-4.19-version) - (hash (base32 "15lcq3xky59v88vb8vvnmgcsmm1fadz0m4jyrii6rynsz5jr6x49"))) + (hash (base32 "0gwrkbbfy85ajxpg7q6j9mn8mzhmsr1v3wmh5c76p34d3b9i96d7"))) (make-linux-libre-source version (%upstream-linux-source version hash) deblob-scripts-4.19))) -(define-public linux-libre-4.14-version "4.14.177") +(define-public linux-libre-4.14-version "4.14.180") (define-public linux-libre-4.14-pristine-source (let ((version linux-libre-4.14-version) - (hash (base32 "04hq0i06mg2yc09jj2xk0vhf5q9yigzjzm55a5bvfy2a6j43r9rk"))) + (hash (base32 "03pd4wpg526n391jwc0kbmbxi059mvq8d42a9qbym9mnv5rzjkj4"))) (make-linux-libre-source version (%upstream-linux-source version hash) deblob-scripts-4.14))) -(define-public linux-libre-4.9-version "4.9.220") +(define-public linux-libre-4.9-version "4.9.223") (define-public linux-libre-4.9-pristine-source (let ((version linux-libre-4.9-version) - (hash (base32 "0bhbkybzbdsbmrjmb5m7hxxl8b3v6n79zhh86cbr95kzg1hcgnfs"))) + (hash (base32 "1r9ag1fhy0g429q44qlqh0qkf42qkhzxa04gxlmnrinqypk00lyg"))) (make-linux-libre-source version (%upstream-linux-source version hash) deblob-scripts-4.9))) -(define-public linux-libre-4.4-version "4.4.220") +(define-public linux-libre-4.4-version "4.4.223") (define-public linux-libre-4.4-pristine-source (let ((version linux-libre-4.4-version) - (hash (base32 "1knj3qsl7x3fysdz1h0s980ddbafs3658z2y67w6sn79wp7d8blg"))) + (hash (base32 "09fln0sdfif2zv2jifp24yiqi0vcyj8fqx2jz91g21zvsxk3x5nd"))) (make-linux-libre-source version (%upstream-linux-source version hash) deblob-scripts-4.4))) @@ -579,11 +579,11 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS." ;; The following package is used in the early bootstrap, and thus must be kept ;; stable and with minimal build requirements. -(define-public linux-libre-headers-4.19.56 - (make-linux-libre-headers "4.19.56" - "1zqiic55viy065lhnkmhn33sz3bbbr2ykbm5f92yzd8lpc9zl7yx")) +(define-public linux-libre-headers-5.4.20 + (make-linux-libre-headers "5.4.20" + "1qxhf6dmcwjblzx8fgn6vr10p38xw10iwh6d1y1v1mxb25y30b47")) -(define-public linux-libre-headers linux-libre-headers-4.19.56) +(define-public linux-libre-headers linux-libre-headers-5.4.20) ;;; @@ -711,27 +711,6 @@ for ARCH and optionally VARIANT, or #f if there is no such configuration." #t)) (replace 'configure (lambda* (#:key inputs native-inputs target #:allow-other-keys) - ;; On AArch64 (at least), we need to remove glibc headers from - ;; CPATH (they are still available as "system headers"), so that - ;; the kernel can override uint64_t. See - ;; <https://bugs.gnu.org/37593>. This is also true when - ;; cross-compiling, except in that case, cross-libc must be - ;; removed from CROSS_CPATH. - (let ((var ,(if (%current-target-system) - "CROSS_CPATH" - "CPATH")) - (libc ,(if (%current-target-system) - "cross-libc" - "libc"))) - (setenv var - (string-join - (remove - (cut string-prefix? (assoc-ref inputs libc) <>) - (string-split (getenv var) #\:)) - ":")) - (format #t "environment variable `~a' changed to `~a'~%" - var (getenv var))) - ;; Avoid introducing timestamps (setenv "KCONFIG_NOTIMESTAMP" "1") (setenv "KBUILD_BUILD_TIMESTAMP" (getenv "SOURCE_DATE_EPOCH")) @@ -965,51 +944,47 @@ It has been modified to remove all non-free binary blobs.") ;;; (define-public acpi-call-linux-module - (package - (name "acpi-call-linux-module") - (version "3.17") - (source - (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/teleshoes/acpi_call.git") - (commit version))) - (file-name (git-file-name name version)) - (sha256 - (base32 "04mbv4lasm3vv1j4ndxhnz4hvp5wg8f5fc9q6qxv0nhvwjynmsl3")))) - (build-system linux-module-build-system) - (arguments - `(#:tests? #f ; no tests - #:phases - (modify-phases %standard-phases - (add-after 'unpack 'fix-for-linux-4.12 - (lambda _ - (substitute* "acpi_call.c" - (("asm/uaccess\\.h") - "linux/uaccess.h")) - #t)) - (add-after 'install 'install-documentation - (lambda* (#:key outputs #:allow-other-keys) - (let* ((out (assoc-ref outputs "out")) - (doc (string-append out "/share/doc/" ,name "-" ,version))) - (for-each (lambda (file) - (let ((target (string-append doc "/" file))) - (mkdir-p (dirname target)) - (copy-recursively file target))) - (list "README.md" "examples")) - #t)))))) - (home-page "https://github.com/teleshoes/acpi_call") - (synopsis "Linux kernel module to perform ACPI method calls") - (description - "This simple Linux kernel module allows calls from user space to any + (let ((commit "70b9c80bd700e6a4d10797eaac9fd34b7e8cbd4a") + (revision "0")) + (package + (name "acpi-call-linux-module") + (version (git-version "3.17" revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/teleshoes/acpi_call.git") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 "09c1vw6vcrkqxbwhpgfgpj4d1grzn4qq6ka8pwwzm7cvm405xj7x")))) + (build-system linux-module-build-system) + (arguments + `(#:tests? #f ; no tests + #:phases + (modify-phases %standard-phases + (add-after 'install 'install-documentation + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (doc (string-append out "/share/doc/" ,name "-" ,version))) + (for-each (lambda (file) + (let ((target (string-append doc "/" file))) + (mkdir-p (dirname target)) + (copy-recursively file target))) + (list "README.md" "examples")) + #t)))))) + (home-page "https://github.com/teleshoes/acpi_call") + (synopsis "Linux kernel module to perform ACPI method calls") + (description + "This simple Linux kernel module allows calls from user space to any @acronym{ACPI, Advanced Configuration and Power Interface} method provided by your computer's firmware, by writing to @file{/proc/acpi/call}. You can pass -any number of parameters of types @code{ACPI_INTEGER}, @code{ACPI_STRING}, +any number of parameters of types @code{ACPI_INTEGER}, @code{ACPI_STRING}, and @code{ACPI_BUFFER}. It grants direct and undocumented access to your hardware that may cause damage and should be used with caution, especially on untested models.") - (license license:gpl3+))) ; see README.md (no licence headers) + (license license:gpl3+)))) ; see README.md (no licence headers) (define-public rtl8812au-aircrack-ng-linux-module (let ((commit "945d6ed6505c32f0993b1dba576388e92e78101b") @@ -1057,6 +1032,40 @@ and frame injection. It provides a @code{88XXau} kernel module that supports RTL8812AU, RTL8821AU, and RTL8814AU chips.") (license license:gpl2+)))) +(define-public rtl8821ce-linux-module + (let ((commit "69765eb288a8dfad3b055b906760b53e02ab1dea") + (revision "0")) + (package + (name "rtl8821ce-linux-module") + (version (git-version "0.0.0" revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/tomaspinho/rtl8821ce.git") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "17jiw25k74kv5lnvgycvj2g1n06hbrpjz6p4znk4a62g136rhn4s")))) + (build-system linux-module-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (replace 'build + (lambda* (#:key (make-flags '()) inputs #:allow-other-keys) + (setenv "CC" "gcc") + (invoke "make" + (string-append "KSRC=" + (assoc-ref inputs "linux-module-builder") + "/lib/modules/build"))))) + #:tests? #f)) + (home-page "https://github.com/tomaspinho/rtl8821ce") + (synopsis "Linux driver for Realtek RTL8821CE wireless network adapters") + (description "This is Realtek's RTL8821CE Linux driver for wireless +network adapters.") + (license license:gpl2)))) + (define-public vhba-module (package (name "vhba-module") @@ -1199,6 +1208,53 @@ at login. Local and dynamic reconfiguration are its key features.") ;;; Miscellaneous. ;;; +(define-public powerstat + (package + (name "powerstat") + (version "0.02.22") + (source + (origin + (method url-fetch) + (uri (string-append "https://kernel.ubuntu.com/~cking/tarballs/" + "powerstat/powerstat-" version ".tar.gz")) + (sha256 + (base32 "0r355b9syqa2nhfy8ksvxyy5d58v0isf983842js091s6liy0x7g")))) + (build-system gnu-build-system) + (arguments + `(#:make-flags + (let* ((target ,(%current-target-system))) + (list (string-append "CC=" (if target + (string-append target "-gcc") + "gcc")) + (string-append "prefix=" (assoc-ref %outputs "out")))) + #:tests? #f ; no test suite + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'respect-$prefix + ;; https://bugs.launchpad.net/ubuntu/+source/powerstat/+bug/1877744 + (lambda _ + (substitute* "Makefile" + (("DIR=/usr/") "DIR=$(prefix)/")) + #t)) + (delete 'configure)))) ; no configure script + (home-page "https://kernel.ubuntu.com/~cking/powerstat/") + (synopsis "Measure system power consumption") + (description + "Powerstat measures and reports your computer's power consumption in real +time. On mobile PCs, it uses ACPI battery information to measure the power +drain of the entire system. + +Powerstat can also report @acronym{RAPL, Running Average Power Limit} power +domain measurements. These are available only on some hardware such as Intel +Sandybridge and newer, and cover only part of the machine's components such as +CPU, DRAM, and graphics. However, they provide accurate and immediate readings +and don't require a battery at all. + +The output is like @command{vmstat} but also shows power consumption statistics: +at the end of a run, @command{powerstat} will calculate the average, standard +deviation, and minimum and maximum values. It can show a nice histogram too.") + (license license:gpl2))) + (define-public psmisc (package (name "psmisc") @@ -1230,7 +1286,7 @@ providing the system administrator with some help in common tasks.") (define-public util-linux (package (name "util-linux") - (version "2.34") + (version "2.35.1") (source (origin (method url-fetch) (uri (string-append "mirror://kernel.org/linux/utils/" @@ -1238,7 +1294,7 @@ providing the system administrator with some help in common tasks.") "util-linux-" version ".tar.xz")) (sha256 (base32 - "1db2kydkwjmvgd1glkcba3adhidxw0f1x735dcjdpdjjf869sgvl")) + "1yfpy6bkab4jw61mpx48gfy24yrqp4a7arvpis8csrkk53fkxpnr")) (patches (search-patches "util-linux-tests.patch")) (modules '((guix build utils))) (snippet @@ -1251,19 +1307,33 @@ providing the system administrator with some help in common tasks.") (("build_kill=yes") "build_kill=no")) #t)))) (build-system gnu-build-system) - (outputs '("out" - "static")) ;>2 MiB of static .a libraries + (outputs '("out" ;6.4 MiB executables and documentation + "lib" ;8.8 MiB shared libraries, headers and locales + "static")) ;2.9 MiB static .a libraries (arguments `(#:configure-flags (list "--disable-use-tty-group" "--enable-fs-paths-default=/run/current-system/profile/sbin" ;; Don't try to chown root:root mount and umount "--disable-makeinstall-chown" + "--localstatedir=/var" + (string-append "--localedir=" + (assoc-ref %outputs "lib") + "/share/locale") ;; Install completions where our ;; bash-completion package expects them. (string-append "--with-bashcompletiondir=" (assoc-ref %outputs "out") "/etc/bash_completion.d")) #:phases (modify-phases %standard-phases + (add-before 'configure 'patch-build-scripts + (lambda* (#:key outputs #:allow-other-keys) + (substitute* "configure" + ;; The build system assumes that we want to install + ;; libraries below $exec_prefix when $libdir does not + ;; match any of the "usual" locations. Fix that. + (("usrlib_execdir='\\$\\{exec_prefix\\}'\\$libdir") + "usrlib_execdir=$libdir")) + #t)) (add-before 'build 'set-umount-file-name (lambda* (#:key outputs #:allow-other-keys) ;; Tell 'eject' the right file name of 'umount'. @@ -1280,13 +1350,34 @@ providing the system administrator with some help in common tasks.") (substitute* "tests/ts/misc/mcookie" (("/etc/services") (string-append net "/etc/services"))) + + ;; The C.UTF-8 locale does not exist in our libc. + (substitute* "tests/ts/column/invalid-multibyte" + (("C\\.UTF-8") "en_US.utf8")) #t))) + ;; TODO: Remove the conditional on the next rebuild cycle. + ,@(if (string-prefix? "arm" (%current-system)) + '((add-before 'check 'disable-setarch-test + (lambda _ + ;; The setarch tests are unreliable in QEMU's + ;; user-mode emulation, which is our primary + ;; method of building ARMv7 packages. + ;; <https://github.com/karelzak/util-linux/issues/601> + (substitute* "tests/ts/misc/setarch" + (("ts_init_subtest.*" all) + (string-append + all "\n" + "ts_skip \"setarch tests are unreliable under QEMU\""))) + #t))) + '()) (add-after 'install 'move-static-libraries (lambda* (#:key outputs #:allow-other-keys) - (let ((out (assoc-ref outputs "out")) + (let ((lib (assoc-ref outputs "lib")) (static (assoc-ref outputs "static"))) + + ;; Move static libraries to the "static" output. (mkdir-p (string-append static "/lib")) - (with-directory-excursion out + (with-directory-excursion lib (for-each (lambda (file) (rename-file file (string-append static "/" @@ -1299,7 +1390,16 @@ providing the system administrator with some help in common tasks.") (substitute* (find-files "lib" "\\.la$") (("old_library=.*") "old_library=''\n"))) - #t)))))) + #t))) + (add-after 'install 'adjust-pkg-config-files + (lambda* (#:key outputs #:allow-other-keys) + (let ((lib (assoc-ref outputs "lib"))) + ;; Drop the unused "prefix=" and "exec_prefix=" variables from + ;; the pkg-config files to avoid a cyclic reference on "out". + (substitute* (find-files (string-append lib "/lib/pkgconfig") + "\\.pc$") + (("^(exec_)?prefix=.*") ""))) + #t))))) (inputs `(("zlib" ,zlib) ("ncurses" ,ncurses) @@ -1423,10 +1523,16 @@ parameters.") "1br0g93ysqhlv13i1k4lfbimsgxnpy5rgs4lxfc9rkzdbpbaqplj")))) (build-system gnu-build-system) (arguments - '(#:modules ((guix build utils) + `(#:modules ((guix build utils) (guix build gnu-build-system) (srfi srfi-1) (srfi srfi-26)) + ,@(if (%current-target-system) + '(#:configure-flags + (list + "ac_cv_func_malloc_0_nonnull=yes" + "ac_cv_func_realloc_0_nonnull=yes")) + '()) #:phases (modify-phases %standard-phases (add-after @@ -1516,7 +1622,7 @@ slabtop, and skill.") (base32 "0mj2yizwygs7xww8jfy5mxjn8ww4pvc0b1hg1p2vsnirailsx9zz")))) (build-system gnu-build-system) - (inputs `(("util-linux" ,util-linux))) + (inputs `(("util-linux" ,util-linux "lib"))) (native-inputs `(("pkg-config" ,pkg-config) ("texinfo" ,texinfo) ;for the libext2fs Info manual @@ -1800,12 +1906,13 @@ MIDI functionality to the Linux-based operating system.") (("\\$\\(MKDIR_P\\) .*ASOUND_STATE_DIR.*") "true\n")) #t))))) + (native-inputs + `(("gettext" ,gettext-minimal))) (inputs `(("libsamplerate" ,libsamplerate) ("ncurses" ,ncurses) ("alsa-lib" ,alsa-lib) - ("xmlto" ,xmlto) - ("gettext" ,gettext-minimal))) + ("xmlto" ,xmlto))) (home-page "http://www.alsa-project.org/") (synopsis "Utilities for the Advanced Linux Sound Architecture (ALSA)") (description @@ -2092,6 +2199,7 @@ inadequately in modern network environments, and both should be deprecated.") (string-append "mandir=/share/man"))))) (native-inputs `(("gettext" ,gettext-minimal) ("unzip" ,unzip))) + (supported-systems (delete "i586-gnu" %supported-systems)) (synopsis "Tools for controlling the network subsystem in Linux") (description "This package includes the important tools for controlling the network @@ -2104,7 +2212,7 @@ configuration (iptunnel, ipmaddr).") (define-public libcap (package (name "libcap") - (version "2.27") + (version "2.31") (source (origin (method url-fetch) (uri (string-append @@ -2112,7 +2220,7 @@ configuration (iptunnel, ipmaddr).") "libcap2/libcap-" version ".tar.xz")) (sha256 (base32 - "0sj8kidl7qgf2qwxcbw1vadnlb30y4zvjzxswsmfdghq04npkhfs")))) + "0ikwm0kngrqa4ci80lqnrkk17kg09q7dxrz28y0gm5qw3vj8s266")))) (build-system gnu-build-system) (arguments '(#:phases (modify-phases %standard-phases @@ -2124,13 +2232,13 @@ configuration (iptunnel, ipmaddr).") (string-append "LDFLAGS := -Wl,-rpath=" %output "/lib"))) #t))) - #:tests? #f ; no 'check' target + #:test-target "test" #:make-flags (list "lib=lib" (string-append "prefix=" (assoc-ref %outputs "out")) "RAISE_SETFCAP=no"))) (native-inputs `(("perl" ,perl))) - (inputs `(("attr" ,attr))) + (supported-systems (delete "i586-gnu" %supported-systems)) (home-page "https://sites.google.com/site/fullycapable/") (synopsis "Library for working with POSIX capabilities") (description @@ -2140,6 +2248,21 @@ Linux-based operating systems.") ;; License is BSD-3 or GPLv2, at the user's choice. (license license:gpl2))) +;; libcap 2.31 causes problems for 'fakeroot', so provide this newer variant. +;; To be merged with libcap on the next rebuild cycle. +(define-public libcap/next + (package + (inherit libcap) + (version "2.34") + (source (origin + (method url-fetch) + (uri (string-append + "mirror://kernel.org/linux/libs/security/linux-privs/" + "libcap2/libcap-" version ".tar.xz")) + (sha256 + (base32 + "048n1gy2p48vl9hkrr9wymfxxcpwj2aslz2bv79nhl4m2lhd9kdf")))))) + (define-public bridge-utils (package (name "bridge-utils") @@ -2213,35 +2336,18 @@ transparently through a bridge.") "/libnl-doc-" version ".tar.gz")) (sha256 (base32 "19p5y8q3cm5wqvamqc4s5syxnnkvzxy3gw8ivxk6fv9ybn8jm35h")))))) - (inputs - `(("python-2" ,python-2) - ("python-3" ,python-3))) - (outputs '("out" "doc" "python2" "python3")) + (outputs `("out" "doc")) (arguments - `(#:modules ((guix build gnu-build-system) - (guix build utils) - (srfi srfi-1)) - #:phases + `(#:phases (modify-phases %standard-phases - (add-after 'install 'install-python - (lambda* (#:key outputs #:allow-other-keys) - (define (python-inst python) - (invoke python "setup.py" "build") - (invoke python "setup.py" "install" - (string-append "--prefix=" - (assoc-ref %outputs python))) - (invoke python "setup.py" "clean")) - (setenv "LDFLAGS" (format #f "-Wl,-rpath=~a/lib" - (assoc-ref %outputs "out"))) - (with-directory-excursion "./python" - (for-each python-inst '("python2" "python3"))) - #t)) (add-after 'install 'install-doc - (lambda* (#:key inputs outputs #:allow-other-keys) + (lambda* (#:key inputs native-inputs outputs #:allow-other-keys) (let ((dest (string-append (assoc-ref outputs "doc") "/share/doc/libnl"))) (mkdir-p dest) - (invoke "tar" "xf" (assoc-ref inputs "libnl3-doc") + (invoke "tar" "xf" (assoc-ref + (or native-inputs inputs) + "libnl3-doc") "--strip-components=1" "-C" dest))))))) (home-page "https://www.infradead.org/~tgr/libnl/") (synopsis "NetLink protocol library suite") @@ -2256,6 +2362,43 @@ configuration and monitoring interfaces.") ;; 'nl-addr-add.c'), so the result is GPLv2-only. (license license:gpl2))) +;; libnl python extensions used to be outputs of libnl. However, as +;; cross-compiling python extensions is currently broken, create separate +;; packages for libnl python extensions. +(define (libnl-python-package python) + (let ((name (string-append "libnl-" python))) + (package + (inherit libnl) + (name name) + (inputs `(,@(cond + ((string=? python "python2") + `(("python-2" ,python-2))) + ((string=? python "python3") + `(("python-3" ,python-3)))))) + (propagated-inputs `(("libnl" ,libnl))) + (outputs '("out")) + (arguments + `(#:modules ((guix build gnu-build-system) + (guix build utils) + (srfi srfi-1)) + #:phases + (modify-phases %standard-phases + (replace 'install + (lambda* (#:key inputs outputs #:allow-other-keys) + (define (python-inst python) + (invoke python "setup.py" "build") + (invoke python "setup.py" "install" + (string-append "--prefix=" + (assoc-ref %outputs "out"))) + (invoke python "setup.py" "clean")) + (setenv "LDFLAGS" (format #f "-Wl,-rpath=~a/lib" + (assoc-ref inputs "libnl"))) + (with-directory-excursion "./python" (python-inst ,python)) + #t)))))))) + +(define-public libnl-python2 (libnl-python-package "python2")) +(define-public libnl-python3 (libnl-python-package "python3")) + (define-public iw (package (name "iw") @@ -2295,14 +2438,14 @@ devices. It replaces @code{iwconfig}, which is deprecated.") (define-public powertop (package (name "powertop") - (version "2.11") + (version "2.12") (source (origin (method url-fetch) (uri (string-append "https://01.org/sites/default/files/downloads/" - "powertop-v" version "-1-g7ef7f79.tar_0.gz")) + "powertop-" version ".tar.gz")) (sha256 - (base32 "0kynypj5cydfbma0ssblq1k4m1arixc1s2vf0ybv8y2gg09wjs5f")))) + (base32 "1kiiwa5p2r7h1lzcf53xq61ckaa4wk565s9fs6vw4bfk84y3mfsw")))) (build-system gnu-build-system) (arguments '(#:phases @@ -2442,6 +2585,7 @@ processes currently causing I/O.") (("-DFUSERMOUNT_DIR=[[:graph:]]+") "-DFUSERMOUNT_DIR=\\\"/var/empty\\\"")) #t))))) + (supported-systems (delete "i586-gnu" %supported-systems)) (home-page "https://github.com/libfuse/libfuse") (synopsis "Support file systems implemented in user space") (description @@ -2824,6 +2968,7 @@ to use Linux' inotify mechanism, which allows file accesses to be monitored.") '("insmod" "rmmod" "lsmod" "modprobe" "modinfo" "depmod")) #t)))))) + (supported-systems (delete "i586-gnu" %supported-systems)) (home-page "https://www.kernel.org/") (synopsis "Kernel module tools") (description "Kmod is a set of tools to handle common tasks with Linux @@ -2895,7 +3040,7 @@ to the in-kernel OOM killer.") (patches (search-patches "eudev-rules-directory.patch")))) (build-system gnu-build-system) (arguments - '(#:phases + `(#:phases (modify-phases %standard-phases (add-after 'unpack 'make-source-writable (lambda _ @@ -2904,12 +3049,23 @@ to the in-kernel OOM killer.") (for-each make-file-writable (find-files ".")) #t)) (add-before 'bootstrap 'patch-file-names - (lambda* (#:key inputs #:allow-other-keys) + (lambda* (#:key inputs native-inputs #:allow-other-keys) (substitute* "man/make.sh" (("/usr/bin/xsltproc") - (string-append (assoc-ref inputs "xsltproc") + (string-append (assoc-ref + (or native-inputs inputs) "xsltproc") "/bin/xsltproc"))) #t)) + (add-before 'configure 'patch-bindir-in-btrfs-rules + (lambda* (#:key outputs #:allow-other-keys) + ;; The "@bindir@" substitution incorrectly expands to a literal + ;; "${exec_prefix}" (see <https://bugs.gnu.org/39926>). Work + ;; around it. + (let ((out (assoc-ref outputs "out"))) + (substitute* "rules/64-btrfs.rules.in" + (("@bindir@") + (string-append out "/bin"))) + #t))) (add-after 'install 'move-static-library (lambda* (#:key outputs #:allow-other-keys) (let* ((out (assoc-ref outputs "out")) @@ -2929,9 +3085,14 @@ to the in-kernel OOM killer.") (lambda* (#:key outputs #:allow-other-keys) ;; Build OUT/etc/udev/hwdb.bin. This allows 'lsusb' and ;; similar tools to display product names. + ;; + ;; XXX: This can't be done when cross-compiling. Find another way + ;; to generate hwdb.bin for cross-built systems. (let ((out (assoc-ref outputs "out"))) - (invoke (string-append out "/bin/udevadm") - "hwdb" "--update"))))) + ,@(if (%current-target-system) + '(#t) + '((invoke (string-append out "/bin/udevadm") + "hwdb" "--update"))))))) #:configure-flags (list "--enable-manpages"))) (native-inputs `(("autoconf" ,autoconf) @@ -2951,7 +3112,7 @@ to the in-kernel OOM killer.") ;; When linked against libblkid, eudev can populate /dev/disk/by-label ;; and similar; it also installs the '60-persistent-storage.rules' file, ;; which contains the rules to do that. - `(("util-linux" ,util-linux) ;for blkid + `(("util-linux" ,util-linux "lib") ;for blkid ("kmod" ,kmod))) (outputs '("out" "static")) (home-page "https://wiki.gentoo.org/wiki/Project:Eudev") @@ -2961,26 +3122,6 @@ device nodes from /dev/, handles hotplug events and loads drivers at boot time.") (license license:gpl2+))) -;; TODO: Merge with eudev on the next rebuild cycle. -(define-public eudev/btrfs-fix - (package/inherit - eudev - (version (string-append (package-version eudev) "-1")) - (arguments - (substitute-keyword-arguments (package-arguments eudev) - ((#:phases phases '%standard-phases) - `(modify-phases ,phases - (add-before 'configure 'patch-bindir-in-btrfs-rules - (lambda* (#:key outputs #:allow-other-keys) - ;; The "@bindir@" substitution incorrectly expands to a literal - ;; "${exec_prefix}" (see <https://bugs.gnu.org/39926>). Work - ;; around it. - (let ((out (assoc-ref outputs "out"))) - (substitute* "rules/64-btrfs.rules.in" - (("@bindir@") - (string-append out "/bin"))) - #t))))))))) - (define-public python-evdev (package (name "python-evdev") @@ -3021,7 +3162,7 @@ devices that can inject events directly into the input subsystem.") (define-public lvm2 (package (name "lvm2") - (version "2.03.08") + (version "2.03.09") (source (origin (method url-fetch) (uri (list (string-append "ftp://sourceware.org/pub/lvm2/LVM2." @@ -3030,7 +3171,7 @@ devices that can inject events directly into the input subsystem.") version ".tgz"))) (sha256 (base32 - "1j0yis658564rk1ddabkl8vbavp0fdd10gd6qhgyzc3akzf620kf")) + "0xdr9qbqw6kja267wmx6ajnfv1nhw056gpxx9v2qmfh3bj6qnfn0")) (modules '((guix build utils))) (snippet '(begin @@ -3052,7 +3193,7 @@ devices that can inject events directly into the input subsystem.") `(("libaio" ,libaio) ("udev" ,eudev))) (arguments - '(#:phases + `(#:phases (modify-phases %standard-phases (add-after 'configure 'set-makefile-shell (lambda _ @@ -3079,10 +3220,16 @@ devices that can inject events directly into the input subsystem.") (assoc-ref %outputs "out") "/lib,-rpath=" (assoc-ref %outputs "out") - "/lib/device-mapper")) + "/lib/device-mapper") + ;; This is needed when cross-compiling. + ,@(if (%current-target-system) + '("ac_cv_func_malloc_0_nonnull=yes" + "ac_cv_func_realloc_0_nonnull=yes") + '())) ;; The tests use 'mknod', which requires root access. #:tests? #f)) + (supported-systems (delete "i586-gnu" %supported-systems)) (home-page "https://sourceware.org/lvm2/") (synopsis "Logical volume management for Linux") (description @@ -3193,13 +3340,23 @@ interface.") (patches (search-patches "crda-optional-gcrypt.patch")))) (build-system gnu-build-system) (arguments - '(#:phases (modify-phases %standard-phases + `(#:phases (modify-phases %standard-phases (delete 'configure) (add-after 'unpack 'gzip-determinism (lambda _ (substitute* "Makefile" (("gzip") "gzip --no-name")) #t)) + ,@(if (%current-target-system) + '((add-after + 'unpack 'fix-pkg-config + (lambda* (#:key target #:allow-other-keys) + (substitute* + "Makefile" + (("pkg-config") + (string-append target "-pkg-config"))) + #t))) + '()) (add-before 'build 'no-werror-no-ldconfig (lambda _ @@ -3209,37 +3366,44 @@ interface.") #t)) (add-before 'build 'set-regulator-db-file-name - (lambda* (#:key inputs #:allow-other-keys) + (lambda* (#:key native-inputs inputs #:allow-other-keys) ;; Tell CRDA where to find our database. - (let ((regdb (assoc-ref inputs "wireless-regdb"))) + (let ((regdb (assoc-ref (or native-inputs inputs) + "wireless-regdb"))) (substitute* "crda.c" (("\"/lib/crda/regulatory.bin\"") (string-append "\"" regdb "/lib/crda/regulatory.bin\""))) #t)))) #:test-target "verify" - #:make-flags (let ((out (assoc-ref %outputs "out")) - (regdb (assoc-ref %build-inputs "wireless-regdb"))) - (list "CC=gcc" "V=1" - - ;; Disable signature-checking on 'regulatory.bin'. - ;; The reason is that this simplifies maintenance - ;; on our side (no need to manage a distro key - ;; pair), and we can guarantee integrity of - ;; 'regulatory.bin' by other means anyway, such as - ;; 'guix gc --verify'. See - ;; <https://wireless.wiki.kernel.org/en/developers/regulatory/wireless-regdb> - ;; for a discssion. - "USE_OPENSSL=0" - - (string-append "PREFIX=" out) - (string-append "SBINDIR=" out "/sbin/") - (string-append "UDEV_RULE_DIR=" - out "/lib/udev/rules.d") - (string-append "LDFLAGS=-Wl,-rpath=" - out "/lib -L.") - (string-append "REG_BIN=" regdb - "/lib/crda/regulatory.bin"))))) + #:make-flags (let ((out (assoc-ref %outputs "out")) + (regdb (assoc-ref %build-inputs "wireless-regdb")) + (target ,(%current-target-system))) + (list + (string-append + "CC=" (if target + (string-append target "-gcc") "gcc")) + "V=1" + + ;; Disable signature-checking on 'regulatory.bin'. + ;; The reason is that this simplifies maintenance + ;; on our side (no need to manage a distro key + ;; pair), and we can guarantee integrity of + ;; 'regulatory.bin' by other means anyway, such as + ;; 'guix gc --verify'. See + ;; <https://wireless.wiki.kernel.org/en/developers/regulatory/wireless-regdb> + ;; for a discssion. + "USE_OPENSSL=0" + + (string-append "PREFIX=" out) + (string-append "SBINDIR=" out "/sbin/") + (string-append "UDEV_RULE_DIR=" + out "/lib/udev/rules.d") + (string-append "LDFLAGS=-Wl,-rpath=" + out "/lib -L.") + (string-append "REG_BIN=" regdb + "/lib/crda/regulatory.bin") + "all_noverify")))) (native-inputs `(("pkg-config" ,pkg-config) ("wireless-regdb" ,wireless-regdb))) (inputs `(("libnl" ,libnl))) @@ -3960,8 +4124,9 @@ MPEG-2 and audio over Linux IEEE 1394.") #:phases (modify-phases %standard-phases (add-before 'build 'patch-program-paths - (lambda* (#:key inputs #:allow-other-keys) - (let ((coreutils (assoc-ref inputs "coreutils"))) + (lambda* (#:key native-inputs inputs #:allow-other-keys) + (let ((coreutils (assoc-ref (or native-inputs inputs) + "coreutils"))) (substitute* "udev-md-raid-arrays.rules" (("/usr/bin/(readlink|basename)" all program) (string-append coreutils "/bin/" program)))) @@ -3976,6 +4141,7 @@ MPEG-2 and audio over Linux IEEE 1394.") (delete 'configure)) ;;tests must be done as root #:tests? #f)) + (supported-systems (delete "i586-gnu" %supported-systems)) (home-page "http://neil.brown.name/blog/mdadm") (synopsis "Tool for managing Linux Software RAID arrays") (description @@ -4042,12 +4208,6 @@ arrays when needed.") (string-append "DESTDIR=" (assoc-ref %outputs "out")) "SYSTEMDPATH=lib" - ;; Add the libaio headers to GCCs system header - ;; search path to suppress -Werror=cast-qual on - ;; the included headers. - (string-append "C_INCLUDE_PATH=" - (assoc-ref %build-inputs "libaio") - "/include") (string-append "LDFLAGS=-Wl,-rpath=" (assoc-ref %outputs "out") "/lib")) @@ -4109,8 +4269,14 @@ Linux Device Mapper multipathing driver: "14mlqdapjqq1dhpkdgy5z83mvsaz36fcxca7a4z6hinmr7r6415b")))) (build-system gnu-build-system) (arguments - '(#:make-flags - (list "CC=gcc" (string-append "prefix=" %output)) + `(#:make-flags + (let ((target ,(%current-target-system))) + (list (string-append "prefix=" %output) + (string-append + "CC=" (if target + (string-append (assoc-ref %build-inputs "cross-gcc") + "/bin/" target "-gcc") + "gcc")))) #:test-target "partcheck" ; need root for a full 'check' #:phases (modify-phases %standard-phases (delete 'configure)))) ; no configure script @@ -4395,11 +4561,9 @@ and copy/paste text in the console and in xterm.") #:test-target "test" #:parallel-tests? #f)) ; tests fail when run in parallel (inputs `(("e2fsprogs" ,e2fsprogs) ; for btrfs-convert - ("libblkid" ,util-linux) - ("libblkid:static" ,util-linux "static") - ("libuuid" ,util-linux) - ("libuuid:static" ,util-linux "static") ("lzo" ,lzo) + ("util-linux:lib" ,util-linux "lib") ;for libblkid and libuuid + ("util-linux:static" ,util-linux "static") ;ditto ("zlib" ,zlib) ("zlib:static" ,zlib "static") ("zstd" ,zstd "lib") @@ -4565,7 +4729,7 @@ obviously it can be shared with files outside our set).") ("libtool" ,libtool) ("pkg-config" ,pkg-config))) (inputs - `(("libuuid" ,util-linux) + `(("libuuid" ,util-linux "lib") ("libselinux" ,libselinux))) (home-page "https://f2fs.wiki.kernel.org/") (synopsis "Userland tools for f2fs") @@ -4591,7 +4755,77 @@ disks and SD cards. This package provides the userland utilities.") (base32 "0z9c0y3qq75iyqknl5k0v7v46l8c3pcifpqb0yqalrs24blkm7dk")))) (inputs - `(("libuuid" ,util-linux))))) + `(("libuuid" ,util-linux "lib"))))) + +(define-public f2fs-tools/static + (static-package + (package + (inherit f2fs-tools) + (name "f2fs-tools-static") + (arguments + `(#:configure-flags + (let ((libuuid-static (assoc-ref %build-inputs "libuuid:static")) + (libuuid (assoc-ref %build-inputs "libuuid"))) + (list + (string-append "libuuid_CFLAGS=-I" libuuid "/include") + (string-append "libuuid_LIBS=-L" libuuid-static "/lib -luuid") + (string-append "libblkid_CFLAGS=-I" libuuid "/include") + (string-append "libblkid_LIBS=-L" libuuid-static "/lib -lblkid"))) + #:disallowed-references (,util-linux) + #:phases + (modify-phases %standard-phases ; TODO: f2fs phases. + (add-after 'unpack 'make-static + (lambda _ + (define (append-to-file name body) + (let ((file (open-file name "a"))) + (display body file) + (close-port file))) + (append-to-file "mkfs/Makefile.am" "\nmkfs_f2fs_LDFLAGS = -all-static\n") + (append-to-file "fsck/Makefile.am" "\nfsck_f2fs_LDFLAGS = -all-static\n") + (append-to-file "tools/Makefile.am" "\nf2fscrypt_LDFLAGS = -all-static -luuid\n") + #t)) + (add-after 'install 'remove-store-references + (lambda* (#:key outputs #:allow-other-keys) + ;; Work around bug in our util-linux. + ;; <https://debbugs.gnu.org/cgi/bugreport.cgi?bug=41019>. + (remove-store-references (string-append (assoc-ref outputs "out") + "/sbin/mkfs.f2fs")) + #t))))) + (inputs + `(("libuuid:static" ,util-linux "static") + ("libuuid" ,util-linux "lib")))))) ; for include files + +(define-public f2fs-fsck/static + (package + (name "f2fs-fsck-static") + (version (package-version f2fs-tools/static)) + (source #f) + (build-system trivial-build-system) + (arguments + `(#:modules ((guix build utils)) + #:builder + (begin + (use-modules (guix build utils) + (ice-9 ftw) + (srfi srfi-26)) + (let* ((f2fs-tools (assoc-ref %build-inputs "f2fs-tools-static")) + (fsck "fsck.f2fs") + (out (assoc-ref %outputs "out")) + (sbin (string-append out "/sbin"))) + (mkdir-p sbin) + (with-directory-excursion sbin + (install-file (string-append f2fs-tools "/sbin/" fsck) + ".") + (remove-store-references fsck) + (chmod fsck #o555)) + #t)))) + (inputs + `(("f2fs-tools-static" ,f2fs-tools/static))) + (home-page (package-home-page f2fs-tools/static)) + (synopsis "Statically-linked fsck.f2fs command from f2fs-tools") + (description "This package provides statically-linked fsck.f2fs command taken +from the f2fs-tools package. It is meant to be used in initrds.") + (license (package-license f2fs-tools/static)))) (define-public freefall (package @@ -4922,7 +5156,7 @@ The collection contains a set of bandwidth and latency benchmark such as: (package (name "rng-tools") (home-page "https://github.com/nhorman/rng-tools") - (version "6.9") + (version "6.10") (source (origin (method git-fetch) (uri (git-reference (url home-page) @@ -4930,18 +5164,22 @@ The collection contains a set of bandwidth and latency benchmark such as: (file-name (git-file-name name version)) (sha256 (base32 - "065jf26s8zkicb95zc9ilksjdq9gqrh5vcx3mhi6mypbnamn6w98")))) + "0hbml37yxs0fs69g7f2x4ixq61z0029swy99rn7ykma9mi6b7ni9")))) (build-system gnu-build-system) (arguments - `(;; Avoid using OpenSSL, curl, and libxml2, reducing the closure by 166 MiB. + `(;; Disable support for various hardware entropy sources as they need + ;; dependencies that are not yet in Guix, and would significantly + ;; increase closure size. #:configure-flags '("--without-nistbeacon" - "--without-pkcs11"))) + "--without-pkcs11" + "--without-rtlsdr"))) (native-inputs `(("autoconf" ,autoconf) ("automake" ,automake) ("pkg-config" ,pkg-config))) (inputs - `(("libsysfs" ,sysfsutils))) + `(("libsysfs" ,sysfsutils) + ("openssl" ,openssl))) (synopsis "Random number generator daemon") (description "Monitor a hardware random number generator, and supply entropy @@ -5260,7 +5498,7 @@ are exceeded.") ("pkg-config" ,pkg-config))) (inputs `(("acl" ,acl) ; extended attributes (xattr) - ("libuuid" ,util-linux) + ("libuuid" ,util-linux "lib") ("lzo" ,lzo) ("openssl" ,openssl) ; optional crypto support ("zlib" ,zlib) @@ -5368,14 +5606,7 @@ under OpenGL graphics workloads.") (string-append "LDFLAGS=-Wl,-rpath=" %output "/lib")) #:phases (modify-phases %standard-phases - (delete 'configure) - (add-before 'build 'kernel-headers-are-system-headers - (lambda* (#:key inputs #:allow-other-keys) - (let ((kernel-headers (assoc-ref inputs "kernel-headers"))) - ;; Make sure the kernel headers are treated as system headers - ;; to suppress a conflict between "util.h" and <linux/fs.h>. - (setenv "C_INCLUDE_PATH" (string-append kernel-headers "/include")) - #t)))))) + (delete 'configure)))) (native-inputs `(("pkg-config" ,pkg-config))) (inputs @@ -5408,12 +5639,7 @@ interface to the variable facility of UEFI boot firmware.") ;; installed (known as OS_VENDOR in the code). ;; GRUB overrides this, as such it's only used if ;; nothing else is specified on the command line. - "EFIDIR=gnu" - ;; Treat kernel headers as system headers to prevent - ;; warnings about conflicting types. - (string-append "C_INCLUDE_PATH=" - (assoc-ref %build-inputs "kernel-headers") - "/include")) + "EFIDIR=gnu") #:phases (modify-phases %standard-phases (delete 'configure)))) (native-inputs `(("pkg-config" ,pkg-config))) @@ -5876,7 +6102,16 @@ userspace queueing component and the logging subsystem.") (native-inputs `(("which" ,which) ;; For 'mcookie', used by some of the tests. - ("util-linux" ,util-linux))) + ("util-linux" ,util-linux) + + ;; XXX: Choose the old coreutils because its 'stat' + ;; program does not use statx(2) when running 'stat -c + ;; %a' or similar, which PRoot doesn't properly support. + ("coreutils-old" ,coreutils-8.30) + + ;; XXX: 'test-c6b77b77.sh' runs 'make' and that leads + ;; make 4.3 to segfault. + ("make-old" ,gnu-make-4.2))) (inputs `(("talloc" ,talloc))) (home-page "https://github.com/proot-me/PRoot") (synopsis "Unprivileged chroot, bind mount, and binfmt_misc") @@ -6059,7 +6294,7 @@ libraries, which are often integrated directly into libfabric.") "psm-disable-memory-stats.patch")))) (build-system gnu-build-system) (outputs '("out" "debug")) - (inputs `(("libuuid" ,util-linux))) + (inputs `(("libuuid" ,util-linux "lib"))) (arguments '(#:make-flags `("PSM_USE_SYS_UUID=1" "CC=gcc" "WERROR=" ,(string-append "INSTALL_PREFIX=" %output) @@ -6436,7 +6671,7 @@ IP addresses and routes, and configure IPsec.") (native-inputs `(("gettext" ,gettext-minimal))) (inputs - `(("libuuid" ,util-linux) + `(("libuuid" ,util-linux "lib") ("python" ,python-wrapper))) (home-page "https://xfs.wiki.kernel.org/") (synopsis "XFS file system tools") @@ -6534,13 +6769,21 @@ the superuser to make device nodes.") ;; We don't have an /etc/passwd entry for "root" - use numeric IDs. (substitute* "test/compare-tar" (("tar -tvf") "tar --numeric-owner -tvf")) + + ;; coreutils 8.32 changed 'ls' to use the statx() syscall instead + ;; of lstat(). fakeroot 1.24 does not support the former, so + ;; adjust these tests to use 'test -b' instead of 'ls' to test for + ;; block device. See <https://bugs.gnu.org/41090>. + (substitute* '("test/t.mknod" "test/t.chmod_dev") + (("ls -ld? \\$tmp/hda3") + "test -b $tmp/hda3 && echo block || echo fail")) #t))))) (native-inputs `(("acl" ,acl) ("sharutils" ,sharutils) ; for the tests ("xz" ,xz))) ; for the tests (inputs - `(("libcap" ,libcap) + `(("libcap" ,libcap/next) ("util-linux" ,util-linux))) (synopsis "Provides a fake root environment") (description "@command{fakeroot} runs a command in an environment where @@ -6553,6 +6796,36 @@ have to construct the archives directly, without using the archiver.") (home-page "http://freshmeat.sourceforge.net/projects/fakeroot") (license license:gpl3+))) +(define-public fakechroot + (package + (name "fakechroot") + (version "2.20.1") + (source (origin + (method url-fetch) + (uri (string-append + "https://github.com/dex4er/fakechroot/releases/download/" + version "/fakechroot-" version ".tar.gz")) + (sha256 + (base32 + "1aijkd0b45wav25v01qhw8zxwa3pl0nnp9fabmmy1nlx7hr09gas")))) + (build-system gnu-build-system) + (arguments + ;; XXX: The tests heavily assume they run on an FHS system so for now + ;; skip them. + '(#:tests? #f + #:configure-flags '("--disable-static"))) + (synopsis "Emulate @code{chroot} by overriding file system calls") + (description + "@command{fakechroot} runs a command in an environment were is additional +possibility to use @code{chroot} command without root privileges. This is +useful for allowing users to create own chrooted environment with possibility +to install another packages without need for root privileges. + +It works by providing @file{libfakechroot.so}, a shared library meant to be +set as @code{LD_PRELOAD} to override the C library file system functions.") + (home-page "https://github.com/dex4er/fakechroot/") + (license license:lgpl2.1+))) + (define-public inputattach (package (name "inputattach") @@ -6723,3 +6996,40 @@ utilities. Using @code{kexec}, it is possible to boot directly into a new kernel from the context of an already-running kernel, bypassing the normal system boot process.") (license license:gpl2))) + +(define-public cachefilesd + (package + (name "cachefilesd") + (version "0.10.10") + (source (origin + (method url-fetch) + (uri (string-append + "https://git.kernel.org/pub/scm/linux/kernel/git/dhowells" + "/cachefilesd.git/snapshot/cachefilesd-" + version ".tar.gz")) + (sha256 + (base32 + "0g40ljjnn3wzh9gp6il21c95f977298qrrkrxfnwfl3k3asfmnbi")))) + (build-system gnu-build-system) + (outputs '("out")) + (arguments + `(#:tests? #f ; there are no tests + #:make-flags + (let ((prefix-dir (lambda (var dir) + (string-append var "=" %output "/" dir))) + (target ,(%current-target-system))) + (list (string-append "CC=" + (if target + (string-append target "-gcc") + "gcc")) + (prefix-dir "SBINDIR" "sbin/") + (prefix-dir "ETCDIR" "etc/") + (prefix-dir "MANDIR" "share/man/"))) + #:phases (modify-phases %standard-phases (delete 'configure)))) + (home-page "https://people.redhat.com/~dhowells/cachefs/") + (synopsis "CacheFiles userspace management daemon") + (description "@code{cachefilesd} is a userspace daemon that manages the +cache data store that is used by network file systems such as @code{AFS} and +@code{NFS} to cache data locally on disk. The content of the cache is +persistent over reboots.") + (license license:gpl2+))) diff --git a/gnu/packages/lisp-xyz.scm b/gnu/packages/lisp-xyz.scm index c2029d940e..60fb4b0487 100644 --- a/gnu/packages/lisp-xyz.scm +++ b/gnu/packages/lisp-xyz.scm @@ -3,7 +3,7 @@ ;;; Copyright © 2015 Taylan Ulrich Bayırlı/Kammer <taylanbayirli@gmail.com> ;;; Copyright © 2015 Mark H Weaver <mhw@netris.org> ;;; Copyright © 2016 Federico Beffa <beffa@fbengineering.ch> -;;; Copyright © 2016, 2017 ng0 <ng0@n0.is> +;;; Copyright © 2016, 2017 Nikita <nikita@n0.is> ;;; Copyright © 2016, 2017 Andy Patterson <ajpatter@uwaterloo.ca> ;;; Copyright © 2017, 2019, 2020 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2017, 2018, 2019 Efraim Flashner <efraim@flashner.co.il> @@ -74,11 +74,10 @@ #:use-module (srfi srfi-19)) (define-public sbcl-alexandria - (let ((revision "1") - (commit "3b849bc0116ea70f215ee6b2fbf354e862aaa9dd")) + (let ((commit "5e5c7d83090cc0fbf32c4628362ac3ce2c50dc59")) (package (name "sbcl-alexandria") - (version (git-version "1.0.0" revision commit)) + (version "1.0.1") (source (origin (method git-fetch) @@ -87,7 +86,7 @@ (commit commit))) (sha256 (base32 - "04amwvx2vl691f0plcfbqqwxgib9zimih7jrn5zl7mbwvrxy022b")) + "010w8829dq28jf8ajfzas9nfvpxa5bal04mg299xq6y9spihc2iz")) (file-name (git-file-name name version)))) (build-system asdf-build-system/sbcl) (native-inputs @@ -202,7 +201,7 @@ support.") (define-public sbcl-trivial-gray-streams (let ((revision "1") - (commit "0483ade330508b4b2edeabdb47d16ec9437ee1cb")) + (commit "ebd59b1afed03b9dc8544320f8f432fdf92ab010")) (package (name "sbcl-trivial-gray-streams") (version (string-append "0.0.0-" revision "." (string-take commit 7))) @@ -214,7 +213,7 @@ support.") (url "https://github.com/trivial-gray-streams/trivial-gray-streams.git") (commit commit))) (sha256 - (base32 "0m3rpf2x0zmdk3nf1qfa01j6a55vj7gkwhyw78qslcgbjlgh8p4d")) + (base32 "0b1pxlccmnagk9cbh4cy8s5k66g3x0gwib5shjwr24xvrji6lp94")) (file-name (string-append "trivial-gray-streams-" version "-checkout")))) (build-system asdf-build-system/sbcl) @@ -1158,25 +1157,27 @@ utilities that make it even easier to manipulate text in Common Lisp. It has (sbcl-package->ecl-package sbcl-cl-strings)) (define-public sbcl-trivial-features - (package - (name "sbcl-trivial-features") - (version "0.8") - (source - (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/trivial-features/trivial-features.git") - (commit (string-append "v" version)))) - (file-name (git-file-name "trivial-features" version)) - (sha256 - (base32 "0ccv7dqyrk55xga78i5vzlic7mdwp28in3g1a8fqhlk6626scsq9")))) - (build-system asdf-build-system/sbcl) - (arguments '(#:tests? #f)) - (home-page "https://cliki.net/trivial-features") - (synopsis "Ensures consistency of @code{*FEATURES*} in Common Lisp") - (description "Trivial-features ensures that @code{*FEATURES*} is + ;; No release since 2014. + (let ((commit "870d03de0ed44067963350936856e17ee725153e")) + (package + (name "sbcl-trivial-features") + (version (git-version "0.8" "1" commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/trivial-features/trivial-features.git") + (commit commit))) + (file-name (git-file-name "trivial-features" version)) + (sha256 + (base32 "14pcahr8r2j3idhyy216zyw8jnj1dnrx0qbkkbdqkvwzign1ah4j")))) + (build-system asdf-build-system/sbcl) + (arguments '(#:tests? #f)) + (home-page "https://cliki.net/trivial-features") + (synopsis "Ensures consistency of @code{*FEATURES*} in Common Lisp") + (description "Trivial-features ensures that @code{*FEATURES*} is consistent across multiple Common Lisp implementations.") - (license license:expat))) + (license license:expat)))) (define-public cl-trivial-features (sbcl-package->cl-source-package sbcl-trivial-features)) @@ -1242,29 +1243,31 @@ with a focus on interactive development.") (sbcl-package->ecl-package sbcl-hu.dwim.stefil)) (define-public sbcl-babel - (package - (name "sbcl-babel") - (version "0.5.0") - (source - (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/cl-babel/babel.git") - (commit (string-append "v" version)))) - (file-name (git-file-name "babel" version)) - (sha256 - (base32 "139a8rn2gnhj082n8jg01gc8fyr63hkj57hgrnmb3d1r327yc77f")))) - (build-system asdf-build-system/sbcl) - (native-inputs - `(("tests:cl-hu.dwim.stefil" ,sbcl-hu.dwim.stefil))) - (inputs - `(("sbcl-alexandria" ,sbcl-alexandria) - ("sbcl-trivial-features" ,sbcl-trivial-features))) - (home-page "https://common-lisp.net/project/babel/") - (synopsis "Charset encoding and decoding library") - (description "Babel is a charset encoding and decoding library, not unlike + ;; No release since 2014. + (let ((commit "aeed2d1b76358db48e6b70a64399c05678a6b9ea")) + (package + (name "sbcl-babel") + (version (git-version "0.5.0" "1" commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/cl-babel/babel.git") + (commit commit))) + (file-name (git-file-name "babel" version)) + (sha256 + (base32 "0lkvv4xdpv4cv1y2bqillmabx8sdb2y4l6pbinq6mjh33w2brpvb")))) + (build-system asdf-build-system/sbcl) + (native-inputs + `(("tests:cl-hu.dwim.stefil" ,sbcl-hu.dwim.stefil))) + (inputs + `(("sbcl-alexandria" ,sbcl-alexandria) + ("sbcl-trivial-features" ,sbcl-trivial-features))) + (home-page "https://common-lisp.net/project/babel/") + (synopsis "Charset encoding and decoding library") + (description "Babel is a charset encoding and decoding library, not unlike GNU libiconv, but completely written in Common Lisp.") - (license license:expat))) + (license license:expat)))) (define-public cl-babel (sbcl-package->cl-source-package sbcl-babel)) @@ -1745,11 +1748,11 @@ streams, support is included for convenient stream wrappers.") (sbcl-package->ecl-package sbcl-ironclad)) (define-public sbcl-named-readtables - (let ((commit "4dfb89fa1af6b305b6492b8af042f5190c11e9fc") - (revision "1")) + (let ((commit "64bd53f37a1694cfde48fc38b8f03901f6f0c05b") + (revision "2")) (package (name "sbcl-named-readtables") - (version (string-append "0.9-" revision "." (string-take commit 7))) + (version (git-version "0.9" revision commit)) (source (origin (method git-fetch) @@ -1757,7 +1760,7 @@ streams, support is included for convenient stream wrappers.") (url "https://github.com/melisgl/named-readtables.git") (commit commit))) (sha256 - (base32 "083kgh5462iqbb4px6kq8s7sggvpvkm36hx4qi9rnaw53b6ilqkk")) + (base32 "01l4831m7k84qvhzyx0qgdl50isr4zmp40qf6dfq2iqcaj8y4h3n")) (file-name (git-file-name "named-readtables" version)))) (build-system asdf-build-system/sbcl) (arguments @@ -2539,7 +2542,7 @@ non-consing thread safe queues and fibonacci priority queues.") (add-after 'unpack 'fix-paths (lambda* (#:key inputs #:allow-other-keys) (substitute* "libffi/libffi.lisp" - (("libffi.so.6" all) (string-append + (("libffi.so.7" all) (string-append (assoc-ref inputs "libffi") "/lib/" all))) (substitute* "toolchain/c-toolchain.lisp" @@ -2827,10 +2830,10 @@ the Common Lisp programming language.") (sbcl-package->ecl-package sbcl-trivial-garbage)) (define-public sbcl-closer-mop - (let ((commit "fac29ce90e3a46e1fc6cf182190e193526fa9dbc")) + (let ((commit "19c9d33f576e10715fd79cc1d4f688dab0f241d6")) (package (name "sbcl-closer-mop") - (version (git-version "1.0.0" "1" commit)) + (version (git-version "1.0.0" "2" commit)) (source (origin (method git-fetch) @@ -2838,7 +2841,7 @@ the Common Lisp programming language.") (url "https://github.com/pcostanza/closer-mop") (commit commit))) (sha256 - (base32 "0hvh77y869h8fg9di5snyg85fxq6fdh9gj1igmx1g6j6j5x915dl")) + (base32 "1w3x087wvlwkd6swfdgbvjfs6kazf0la8ax4pjfzikwjch4snn2c")) (file-name (git-file-name "closer-mop" version )))) (build-system asdf-build-system/sbcl) (home-page "https://github.com/pcostanza/closer-mop") @@ -2855,7 +2858,7 @@ Lisp implementations.") (sbcl-package->ecl-package sbcl-closer-mop)) (define sbcl-cl-cffi-gtk-boot0 - (let ((commit "29443c5aaca975709df8025c4649366d882033cb")) + (let ((commit "412d17214e092220c65a5660f5cbbd9cb69b8fe4")) (package (name "sbcl-cl-cffi-gtk-boot0") (version (git-version "0.11.2" "1" commit)) @@ -2868,7 +2871,7 @@ Lisp implementations.") (file-name (git-file-name "cl-cffi-gtk" version)) (sha256 (base32 - "0f6s92sf8xyzh1yksqx8bsy1sv0zmy0c13j3b8bavaba5hlxpxah")))) + "0n997yhcnzk048nalx8ys62ja2ac8iv4mbn3mb55iapl0321hghn")))) (build-system asdf-build-system/sbcl) (inputs `(("iterate" ,sbcl-iterate) @@ -2887,6 +2890,7 @@ is a library for creating graphical user interfaces.") (name "sbcl-cl-cffi-gtk-glib") (inputs `(("glib" ,glib) + ("bordeaux-threads" ,sbcl-bordeaux-threads) ,@(package-inputs sbcl-cl-cffi-gtk-boot0))) (arguments `(#:asd-file "glib/cl-cffi-gtk-glib.asd" @@ -2895,8 +2899,8 @@ is a library for creating graphical user interfaces.") (add-after 'unpack 'fix-paths (lambda* (#:key inputs #:allow-other-keys) (substitute* "glib/glib.init.lisp" - (("libglib|libgthread" all) (string-append - (assoc-ref inputs "glib") "/lib/" all)))))))))) + (("libglib|libgthread" all) + (string-append (assoc-ref inputs "glib") "/lib/" all)))))))))) (define-public sbcl-cl-cffi-gtk-gobject (package @@ -3143,10 +3147,10 @@ is a library for creating graphical user interfaces.") (sbcl-package->cl-source-package sbcl-cl-cffi-gtk)) (define-public sbcl-cl-webkit - (let ((commit "d97115ca601838dfa60ea7afbb88641d7a526dba")) + (let ((commit "f93cb9697e8813068795fe4dc39ac950d814102d")) (package (name "sbcl-cl-webkit") - (version (git-version "2.4" "2" commit)) + (version (git-version "2.4" "3" commit)) (source (origin (method git-fetch) @@ -3156,7 +3160,7 @@ is a library for creating graphical user interfaces.") (file-name (git-file-name "cl-webkit" version)) (sha256 (base32 - "0sdb2l2h5xv5c1m2mfq31i9yl6zjf512fvwwzlvk9nvisyhc4xi3")))) + "1sjcw08kjpd5h83sms7zcq2nymddjygk9hm2rpgzrl524an9ziwc")))) (build-system asdf-build-system/sbcl) (inputs `(("cffi" ,sbcl-cffi) @@ -3544,7 +3548,7 @@ client and server.") (home-page "https://common-lisp.net/project/trivial-backtrace/") (synopsis "Portable simple API to work with backtraces in Common Lisp") (description - "On of the many things that didn't quite get into the Common Lisp + "One of the many things that didn't quite get into the Common Lisp standard was how to get a Lisp to output its call stack when something has gone wrong. As such, each Lisp has developed its own notion of what to display, how to display it, and what sort of arguments can be used to @@ -3606,7 +3610,7 @@ RFC 1321 by R. Rivest, published April 1992.") (sbcl-package->cl-source-package sbcl-md5)) (define-public sbcl-cl+ssl - (let ((commit "141ae91416bc40f1618dc07e48429b84388aa599") + (let ((commit "701e645081e6533a3f0f0b3ac86389d6f506c4b5") (revision "1")) (package (name "sbcl-cl+ssl") @@ -3619,7 +3623,7 @@ RFC 1321 by R. Rivest, published April 1992.") (commit commit))) (file-name (git-file-name "cl+ssl" version)) (sha256 - (base32 "1s0hg1h9sf8q89v0yrxmzg5f5sng29rgx3n21r9h9yql8351myan")))) + (base32 "0nfl275nwhff3m25872y388cydz14kqb6zbwywa6nj85r9k8bgs0")))) (build-system asdf-build-system/sbcl) (arguments '(#:phases @@ -3684,37 +3688,34 @@ Rosenberg's CL packages.") (sbcl-package->cl-source-package sbcl-kmrcl)) (define-public sbcl-cl-base64 - (let ((version "3.3.3")) - (package - (name "sbcl-cl-base64") - (version version) - (source - (origin - (method git-fetch) - (uri (git-reference - (url "http://git.kpe.io/cl-base64.git") - (commit (string-append "v" version)))) - (file-name (git-file-name "cl-base64" version)) - (sha256 - (base32 "1dw6j7n6gsd2qa0p0rbsjxj00acxx3i9ca1qkgl0liy8lpnwkypl")))) - (build-system asdf-build-system/sbcl) - (arguments - ;; Tests fail with: :FORCE and :FORCE-NOT arguments not allowed - ;; in a nested call to ASDF/OPERATE:OPERATE unless identically - ;; to toplevel - '(#:tests? #f)) - (inputs - `(("sbcl-ptester" ,sbcl-ptester) - ("sbcl-kmrcl" ,sbcl-kmrcl))) - (home-page "http://files.kpe.io/cl-base64/") - (synopsis - "Common Lisp package to encode and decode base64 with URI support") - (description - "This package provides highly optimized base64 encoding and decoding. + (package + (name "sbcl-cl-base64") + (version "3.3.4") + (source + (origin + (method url-fetch) + (uri (string-append "http://files.kpe.io/cl-base64/cl-base64-" + version ".tar.gz")) + (sha256 + (base32 "0pl4zwn5bf18dm8fh1kn1yshaa6kpmfrjyb33z9mq4raqmj3xpv2")))) + (build-system asdf-build-system/sbcl) + (arguments + ;; Tests fail with: :FORCE and :FORCE-NOT arguments not allowed + ;; in a nested call to ASDF/OPERATE:OPERATE unless identically + ;; to toplevel + '(#:tests? #f)) + (inputs + `(("sbcl-ptester" ,sbcl-ptester) + ("sbcl-kmrcl" ,sbcl-kmrcl))) + (home-page "http://files.kpe.io/cl-base64/") + (synopsis + "Common Lisp package to encode and decode base64 with URI support") + (description + "This package provides highly optimized base64 encoding and decoding. Besides conversion to and from strings, integer conversions are supported. Encoding with Uniform Resource Identifiers is supported by using a modified encoding table that uses only URI-compatible characters.") - (license license:bsd-3)))) + (license license:bsd-3))) (define-public cl-base64 (sbcl-package->cl-source-package sbcl-cl-base64)) @@ -3976,34 +3977,40 @@ PROPER-LIST, ASSOCIATION-LIST, PROPERTY-LIST and TUPLE.") (define-public sbcl-cl-syntax-annot (package + (inherit sbcl-cl-syntax) (name "sbcl-cl-syntax-annot") - (version "0.0.3") - (source - (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/m2ym/cl-syntax.git") - (commit "03f0c329bbd55b8622c37161e6278366525e2ccc"))) - (file-name (git-file-name name version)) - (sha256 - (base32 "17ran8xp77asagl31xv8w819wafh6whwfc9p6dgx22ca537gyl4y")))) - (build-system asdf-build-system/sbcl) (arguments '(#:asd-file "cl-syntax-annot.asd" #:asd-system-name "cl-syntax-annot")) (inputs `(("sbcl-cl-syntax" ,sbcl-cl-syntax) ("sbcl-cl-annot" ,sbcl-cl-annot))) - (home-page "https://github.com/m2ym/cl-syntax") - (synopsis "Reader Syntax Coventions for Common Lisp and SLIME") + (synopsis "Common Lisp reader Syntax for cl-annot") (description - "CL-SYNTAX provides Reader Syntax Coventions for Common Lisp and -SLIME.") - (license license:llgpl))) + "CL-SYNTAX provides reader syntax coventions for Common Lisp and +@code{cl-annot}."))) (define-public cl-syntax-annot (sbcl-package->cl-source-package sbcl-cl-syntax-annot)) +(define-public sbcl-cl-syntax-interpol + (package + (inherit sbcl-cl-syntax) + (name "sbcl-cl-syntax-interpol") + (arguments + '(#:asd-file "cl-syntax-interpol.asd" + #:asd-system-name "cl-syntax-interpol")) + (inputs + `(("sbcl-cl-syntax" ,sbcl-cl-syntax) + ("sbcl-cl-interpol" ,sbcl-cl-interpol))) + (synopsis "Common Lisp reader Syntax for cl-interpol") + (description + "CL-SYNTAX provides reader syntax coventions for Common Lisp and +@code{cl-interpol}."))) + +(define-public cl-syntax-interpol + (sbcl-package->cl-source-package sbcl-cl-syntax-interpol)) + (define-public sbcl-cl-utilities (let ((commit "dce2d2f6387091ea90357a130fa6d13a6776884b") (revision "1")) @@ -4072,8 +4079,8 @@ addition, removal, and random selection.") (sbcl-package->cl-source-package sbcl-map-set)) (define-public sbcl-quri - (let ((commit "76b75103f21ead092c9f715512fa82441ef61185") - (revision "1")) + (let ((commit "b53231c5f19446dd7c24b15a249fefa45ae94f9a") + (revision "2")) (package (name "sbcl-quri") (version (git-version "0.1.0" revision commit)) @@ -4085,7 +4092,7 @@ addition, removal, and random selection.") (commit commit))) (file-name (git-file-name name version)) (sha256 - (base32 "1ccbxsgzdibmzq33mmbmmz9vwl6l03xh6nbpsh1hkdvdcl7q0a60")))) + (base32 "0cansr63m690ymvhway419178mq2sqnmxm4rdxclbsrnjwwbi36m")))) (build-system asdf-build-system/sbcl) (arguments ;; Tests fail with: Component QURI-ASD::QURI-TEST not found, @@ -4212,8 +4219,8 @@ depending on content size.") (sbcl-package->cl-source-package sbcl-smart-buffer)) (define-public sbcl-fast-http - (let ((commit "f9e7597191bae380503e20724fd493a24d024935") - (revision "1")) + (let ((commit "502a37715dcb8544cc8528b78143a942de662c5a") + (revision "2")) (package (name "sbcl-fast-http") (version (git-version "0.2.0" revision commit)) @@ -4225,7 +4232,7 @@ depending on content size.") (commit commit))) (file-name (git-file-name name version)) (sha256 - (base32 "0qdmwv2zm0sizxdb8nnclgwl0nfjcbjaimbakavikijw7lr9b4jp")))) + (base32 "0al2g7g219jjljsf7b23pbilpgacxy5as5gs2nqf76b5qni396mi")))) (build-system asdf-build-system/sbcl) (arguments ;; Tests fail with: Component FAST-HTTP-ASD::FAST-HTTP-TEST not found, @@ -4233,7 +4240,8 @@ depending on content size.") `(#:tests? #f)) (native-inputs `(("sbcl-prove-asdf" ,sbcl-prove-asdf) - ("sbcl-prove" ,sbcl-prove))) + ("sbcl-prove" ,sbcl-prove) + ("cl-syntax-interpol" ,sbcl-cl-syntax-interpol))) (inputs `(("sbcl-alexandria" ,sbcl-alexandria) ("sbcl-proc-parse" ,sbcl-proc-parse) @@ -4349,8 +4357,8 @@ against the last run.") (sbcl-package->cl-source-package sbcl-checkl)) (define-public sbcl-fast-io - (let ((commit "dc3a71db7e9b756a88781ae9c342fe9d4bbab51c") - (revision "1")) + (let ((commit "603f4903dd74fb221859da7058ae6ca3853fe64b") + (revision "2")) (package (name "sbcl-fast-io") (version (git-version "1.0.0" revision commit)) @@ -4362,7 +4370,7 @@ against the last run.") (commit commit))) (file-name (git-file-name name version)) (sha256 - (base32 "1jsp6xvi26ln6fdy5j5zi05xvan8jsqdhisv552dy6xg6ws8i1yq")))) + (base32 "00agvc0xx4w715i6ach05p995zpcpghn04xc06zyci06q677vw3n")))) (build-system asdf-build-system/sbcl) (arguments ;; Error while trying to load definition for system fast-io-test from @@ -4541,7 +4549,7 @@ performance and simplicity in mind.") (sbcl-package->cl-source-package sbcl-lack-request)) (define-public sbcl-local-time - (let ((commit "beac054eef428552b63d4ae7820c32ffef9a3015") + (let ((commit "62792705245168d3fc2e04164b9a143477284142") (revision "1")) (package (name "sbcl-local-time") @@ -4554,7 +4562,7 @@ performance and simplicity in mind.") (commit commit))) (file-name (git-file-name name version)) (sha256 - (base32 "0xhkmgxh41dg2wwlsp0h2l41jp144xn4gpxhh0lna6kh0560w2cc")))) + (base32 "1r5zq4l1lrgprdr2pw7wwry194yknnllyjf6lx7snypb3k4r3yir")))) (build-system asdf-build-system/sbcl) (arguments ;; TODO: Component :STEFIL not found, required by #<SYSTEM @@ -5202,11 +5210,17 @@ high-level way. This library provides such operators.") (let ((python (assoc-ref inputs "python"))) (setenv "BB_PYTHON3_INCLUDE_DIR" (string-append python "/include/python" - (python-version python) - "m")) + (python-version python))) (setenv "BB_PYTHON3_DYLIB" (string-append python "/lib/libpython3.so")) - #t)))))) + #t))) + (add-after 'unpack 'adjust-for-python-3.8 + (lambda _ + ;; This method is no longer part of the public API. + (substitute* "ffi-interface.lisp" + ((".*PyEval_ReInitThreads.*") + "")) + #t))))) (native-inputs `(("sbcl-cl-fad" ,sbcl-cl-fad) ("sbcl-lift" ,sbcl-lift) @@ -5407,12 +5421,12 @@ formats.") (define-public sbcl-iolib.asdf ;; Latest release is from June 2017. - (let ((commit "81e20614c0d27f9605bf9766214e236fd31b99b4") - (revision "1")) + (let ((commit "7f5ea3a8457a29d224b24653c2b3657fb1898021") + (revision "2")) (package (name "sbcl-iolib.asdf") (build-system asdf-build-system/sbcl) - (version "0.8.3") + (version (git-version "0.8.3" revision commit)) (home-page "https://github.com/sionescu/iolib") (source (origin @@ -5423,7 +5437,7 @@ formats.") (file-name (git-file-name name version)) (sha256 (base32 - "1j81r0wm7nfbwl991f26s4npcy7kybzybd3m47rbxy31h0cfcmdm")))) + "1bg5w7lm61hqk4b0svmri8a590q36z76jfa0sdgzb39r98c04w12")))) (inputs `(("alexandria" ,sbcl-alexandria))) (arguments @@ -5470,26 +5484,7 @@ and @code{kqueue(2)}), a pathname library and file-system utilities.") (synopsis "Base package for IOLib, a Common Lisp I/O library"))) (define-public sbcl-iolib.grovel - (package - (inherit sbcl-iolib.asdf) - (name "sbcl-iolib.grovel") - (inputs - `(("iolib.asdf" ,sbcl-iolib.asdf) - ("iolib.conf" ,sbcl-iolib.conf) - ("iolib.base", sbcl-iolib.base) - ("cffi", sbcl-cffi))) - (arguments - '(#:asd-file "iolib.grovel.asd" - #:phases - (modify-phases %standard-phases - (add-after 'install 'install-header - (lambda* (#:key outputs #:allow-other-keys) - ;; This header is required by sbcl-iolib. - (install-file "src/grovel/grovel-common.h" - (string-append (assoc-ref outputs "out") - "/lib/sbcl")) - #t))))) - (synopsis "CFFI Groveller for IOLib, a Common Lisp I/O library"))) + (deprecated-package "sbcl-iolib.grovel" sbcl-cffi-grovel)) (define sbcl-iolib+syscalls (package @@ -5498,7 +5493,7 @@ and @code{kqueue(2)}), a pathname library and file-system utilities.") (inputs `(("iolib.asdf" ,sbcl-iolib.asdf) ("iolib.conf" ,sbcl-iolib.conf) - ("iolib.grovel" ,sbcl-iolib.grovel) + ("cffi-grovel" ,sbcl-cffi-grovel) ("iolib.base" ,sbcl-iolib.base) ("bordeaux-threads" ,sbcl-bordeaux-threads) ("idna" ,sbcl-idna) @@ -5510,7 +5505,6 @@ and @code{kqueue(2)}), a pathname library and file-system utilities.") (arguments '(#:asd-file "iolib.asd" #:asd-system-name "iolib/syscalls" - #:test-asd-file "iolib.tests.asd" #:phases (modify-phases %standard-phases (add-after 'unpack 'fix-paths @@ -5521,7 +5515,7 @@ and @code{kqueue(2)}), a pathname library and file-system utilities.") "(:default \"" (assoc-ref inputs "libfixposix") "/lib/libfixposix\")"))) ;; Socket tests need Internet access, disable them. - (substitute* "iolib.tests.asd" + (substitute* "iolib.asd" (("\\(:file \"sockets\" :depends-on \\(\"pkgdcl\" \"defsuites\"\\)\\)") ""))))))) (synopsis "Common Lisp I/O library"))) @@ -5537,8 +5531,6 @@ and @code{kqueue(2)}), a pathname library and file-system utilities.") (substitute-keyword-arguments (package-arguments sbcl-iolib+syscalls) ((#:asd-system-name _) "iolib/multiplex"))))) - - (define sbcl-iolib+streams (package (inherit sbcl-iolib+syscalls) @@ -5811,12 +5803,12 @@ cookie headers, cookie creation, cookie jar creation and more.") (sbcl-package->cl-source-package sbcl-cl-cookie)) (define-public sbcl-dexador - (let ((commit "a2714d126cc94bc7a9a6e1e3c08de455b3a66378") + (let ((commit "953090f04c4d1a9ee6632b90133cdc297b68badc") (revision "1")) (package (name "sbcl-dexador") (build-system asdf-build-system/sbcl) - (version (git-version "0.9.10" revision commit)) + (version "0.9.14" ) (home-page "https://github.com/fukamachi/dexador") (source (origin @@ -5827,7 +5819,7 @@ cookie headers, cookie creation, cookie jar creation and more.") (file-name (git-file-name name version)) (sha256 (base32 - "0nbqgn4v3l2z6m1k1bdxfnqpfrk84nxdmz7csz11zzcfs4flkv79")))) + "0w18fz3301rpmwc3kwb810czcd24mbf7r1z8vdyc0v5crjfpw3mn")))) (inputs `(("trivial-gray-streams" ,sbcl-trivial-gray-streams) ("babel" ,sbcl-babel) @@ -5853,7 +5845,8 @@ cookie headers, cookie creation, cookie jar creation and more.") ("babel" ,sbcl-babel) ("alexandria" ,sbcl-alexandria) ("cl-ppcre" ,sbcl-cl-ppcre) - ("local-time" ,sbcl-local-time))) + ("local-time" ,sbcl-local-time) + ("trivial-features" ,sbcl-trivial-features))) (arguments ;; TODO: Circular dependency: tests depend on clack-test which depends on dexador. `(#:tests? #f @@ -5917,8 +5910,8 @@ This library offers macros to deal with symbols from any namespace.") (sbcl-package->cl-source-package sbcl-lisp-namespace)) (define-public sbcl-trivial-cltl2 - (let ((commit "8eec8407df833e8f27df8a388bc10913f16d9e83") - (revision "1")) + (let ((commit "8a3bda30dc25d2f65fcf514d0eb6e6db75252c61") + (revision "2")) (package (name "sbcl-trivial-cltl2") (build-system asdf-build-system/sbcl) @@ -5933,7 +5926,7 @@ This library offers macros to deal with symbols from any namespace.") (file-name (git-file-name name version)) (sha256 (base32 - "1dyyxz17vqv8hlfwq287gl8xxbvcnq798ajb7p5jdjz91wqf4bgk")))) + "08cnzb9rnczn4pn2zpf0587ny4wjy1mjndy885fz9pw7xrlx37ip")))) (synopsis "Simple CLtL2 compatibility layer for Common Lisp") (description "This library is a portable compatibility layer around \"Common Lisp the Language, 2nd @@ -5989,8 +5982,8 @@ can and/or provide reasonable defaults.") (sbcl-package->cl-source-package sbcl-introspect-environment)) (define-public sbcl-type-i - (let ((commit "dea233f45f94064105ec09f0767de338f67dcbe2") - (revision "1")) + (let ((commit "d34440ab4ebf5a46a58deccb35950b15670e3667") + (revision "2")) (package (name "sbcl-type-i") (build-system asdf-build-system/sbcl) @@ -6005,7 +5998,7 @@ can and/or provide reasonable defaults.") (file-name (git-file-name name version)) (sha256 (base32 - "039g5pbrhh65s0bhr9314gmd2nwc2y5lp2377c5qrc2lxky89qs3")))) + "12wsga0pwjkkr176lnjwkmmlm3ccp0n310sjj9h20lk53iyd0z69")))) (inputs `(("alexandria" ,sbcl-alexandria) ("introspect-environment" ,sbcl-introspect-environment) @@ -6189,8 +6182,8 @@ This package uses fare-quasiquote with named-readtable."))) @code{fare-quasiquote-optima}."))) (define-public sbcl-trivia.level0 - (let ((commit "574901ac376ae54c9d37169fd5efab9b3b8fcc63") - (revision "1")) + (let ((commit "37698b47a14c2007630468de7a993694ef7bd475") + (revision "2")) (package (name "sbcl-trivia.level0") (build-system asdf-build-system/sbcl) @@ -6205,7 +6198,7 @@ This package uses fare-quasiquote with named-readtable."))) (file-name (git-file-name name version)) (sha256 (base32 - "0hf53n71xzr9sjwrxis5fivx3drclf4s39h5ck8vh21ndqj9zvdk")))) + "0rsbwbw3ipxxgr6zzhci12nilq8zky475kmhz1rcxy4q8a85vn72")))) (inputs `(("alexandria" ,sbcl-alexandria))) (synopsis "Pattern matching in Common Lisp") @@ -6582,8 +6575,9 @@ extension-points via the concept of hooks.") (sbcl-package->ecl-package sbcl-cl-hooks)) (define-public sbcl-s-sysdeps - (let ((commit "d28246b5dffef9e73a0e0e6cfbc4e878006fe34d") - (revision "1")) + ;; No release since 2013. + (let ((commit "9aa23bbdceb24bcdbe0e7c39fa1901858f823106") + (revision "2")) (package (name "sbcl-s-sysdeps") (build-system asdf-build-system/sbcl) @@ -6598,7 +6592,11 @@ extension-points via the concept of hooks.") (file-name (git-file-name name version)) (sha256 (base32 - "14b69b81yrxmjlvmm3lfxk04x5v7hqz4fql121334wh72czznfh9")))) + "1fh8r7kf8s3hvqdg6b71b8p7w3v2kkga9bw8j3qqdxhzr6anpm0b")))) + (inputs + `(("bordeaux-threads" ,sbcl-bordeaux-threads) + ("usocket" ,sbcl-usocket) + ("usocket-server" ,sbcl-usocket-server))) (synopsis "Common Lisp abstraction layer over platform dependent functionality") (description "@code{s-sysdeps} is an abstraction layer over platform dependent functionality. This simple package is used as a building block in a @@ -6621,8 +6619,8 @@ number of other open source projects. (sbcl-package->ecl-package sbcl-s-sysdeps)) (define-public sbcl-cl-prevalence - (let ((commit "c163c227ed85d430b82cb1e3502f72d4f88e3cfa") - (revision "1")) + (let ((commit "da3ed6c4594b1c2fca90c178c1993973c4bf16c9") + (revision "2")) (package (name "sbcl-cl-prevalence") (build-system asdf-build-system/sbcl) @@ -6637,7 +6635,7 @@ number of other open source projects. (file-name (git-file-name name version)) (sha256 (base32 - "1i9zj1q2ahgwch56an21yzbgkynz0kab9fyxkq9mg8p3xrv38jjn")))) + "0bq905hv1626dl6b7s0zn4lbdh608g1pxaljl1fda6pwp9hmj95a")))) (inputs `(("s-sysdeps" ,sbcl-s-sysdeps) ("s-xml" ,sbcl-s-xml))) @@ -7826,8 +7824,8 @@ functions for arrays and vectors. Originally from Plump.") (sbcl-package->cl-source-package sbcl-array-utils)) (define-public sbcl-plump - (let ((commit "16f1231bf706cfbc54d9e55a853ca945e4452a08") - (revision "0")) + (let ((commit "34f890fe46efdebe7bb70d218f1937e98f632bf9") + (revision "1")) (package (name "sbcl-plump") (version (git-version "2.0.0" revision commit)) @@ -7841,7 +7839,7 @@ functions for arrays and vectors. Originally from Plump.") (file-name (git-file-name name version)) (sha256 (base32 - "0705k8pbip51v74rccgwscwph439f2pma9f915qf1h4bhjx999ip")))) + "0a0x8wn6vv1ylxcwck12k18gy0a366kdm6ddxxk7yynl4mwnqgkh")))) (build-system asdf-build-system/sbcl) (inputs `(("array-utils" ,sbcl-array-utils) @@ -11533,21 +11531,19 @@ MOP easier to use.") (arguments `(#:phases (modify-phases %standard-phases - (add-before 'validate-runpath 'cleanup-files + ;; The cleanup phase moves files around but we need to keep the + ;; directory structure for the grovel-generated library. + (replace 'cleanup (lambda* (#:key outputs #:allow-other-keys) (let* ((out (assoc-ref outputs "out")) - (lib (string-append out "/lib/sbcl"))) - (for-each - delete-file - (filter (lambda (file) - (not (member (basename file) - '("basic-unixint__grovel" - "libosicat.so" - "osicat--system.fasl" - "osicat.asd" - "unixint__grovel")))) - (find-files lib ".*"))) - #t)))))) + (lib (string-append out "/lib/sbcl/"))) + (delete-file-recursively (string-append lib "src")) + (delete-file-recursively (string-append lib "tests")) + (for-each delete-file + (filter (lambda (file) + (not (member (basename file) '("libosicat.so")))) + (find-files (string-append lib "posix") ".*")))) + #t))))) (inputs `(("alexandria" ,sbcl-alexandria) ("cffi" ,sbcl-cffi) diff --git a/gnu/packages/lisp.scm b/gnu/packages/lisp.scm index 219bc4dcf9..3ae8dab141 100644 --- a/gnu/packages/lisp.scm +++ b/gnu/packages/lisp.scm @@ -3,18 +3,19 @@ ;;; Copyright © 2015 Taylan Ulrich Bayırlı/Kammer <taylanbayirli@gmail.com> ;;; Copyright © 2015 Mark H Weaver <mhw@netris.org> ;;; Copyright © 2016 Federico Beffa <beffa@fbengineering.ch> -;;; Copyright © 2016, 2017 ng0 <ng0@n0.is> +;;; Copyright © 2016, 2017 Nikita <nikita@n0.is> ;;; Copyright © 2016, 2017 Andy Patterson <ajpatter@uwaterloo.ca> ;;; Copyright © 2017, 2019 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2017, 2018, 2019 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2017, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2018 Benjamin Slade <slade@jnanam.net> ;;; Copyright © 2018 Alex Vong <alexvong1995@gmail.com> -;;; Copyright © 2018, 2019 Pierre Neidhardt <mail@ambrevar.xyz> +;;; Copyright © 2018, 2019, 2020 Pierre Neidhardt <mail@ambrevar.xyz> ;;; Copyright © 2018, 2019 Pierre Langlois <pierre.langlois@gmx.com> ;;; Copyright © 2019, 2020 Katherine Cox-Buday <cox.katherine.e@gmail.com> ;;; Copyright © 2019 Jesse Gildersleve <jessejohngildersleve@protonmail.com> ;;; Copyright © 2019, 2020 Guillaume Le Vaillant <glv@posteo.net> +;;; Copyright © 2020 Marius Bakke <mbakke@fastmail.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -568,8 +569,16 @@ statistical profiler, a code coverage tool, and many other extensions.") ;; it, as is the case for SBCL, but I know of no attempt to do so." (package (name "ccl") - (version "1.11.5") - (source #f) + (version "1.12") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/Clozure/ccl/") + (commit (string-append "v" version)))) + (file-name (git-file-name "ccl" version)) + (sha256 + (base32 + "0kxr24d2fzsmpsilijpwwfl6g89y7fcrwb80kai5nx9pwgxmjbp3")))) (build-system gnu-build-system) ;; CCL consists of a "lisp kernel" and "heap image", both of which are ;; shipped in precompiled form in source tarballs. The former is a C @@ -577,12 +586,11 @@ statistical profiler, a code coverage tool, and many other extensions.") ;; generated without an already working copy of CCL, and is platform ;; dependent, so we need to fetch the correct tarball for the platform. (inputs - `(("ccl" + `(("ccl-bootstrap" ,(origin (method url-fetch) (uri (string-append - "https://github.com/Clozure/ccl/releases/download/v" version - "/ccl-" version "-" + "https://github.com/Clozure/ccl/releases/download/v" version "/" (match (%current-system) ((or "i686-linux" "x86_64-linux") "linuxx86") ("armhf-linux" "linuxarm") @@ -594,13 +602,12 @@ statistical profiler, a code coverage tool, and many other extensions.") (base32 (match (%current-system) ((or "i686-linux" "x86_64-linux") - "0hs1f3z7crgzvinpj990kv9gvbsipxvcvwbmk54n51nasvc5025q") + "15l7cfa4a7jkfwdzsfm4q3n22jnb57imxahpql3h77xin57v1gbz") ("armhf-linux" - "0p0l1dzsygb6i1xxgbipjpxkn46xhq3jm41a34ga1qqp4x8lkr62") + "0x4bjx6cxsjvxyagijhlvmc7jkyxifdvz5q5zvz37028va65243c") (_ "")))))))) (native-inputs - `(("m4" ,m4) - ("subversion" ,subversion))) + `(("m4" ,m4))) (arguments `(#:tests? #f ;no 'check' target #:modules ((srfi srfi-26) @@ -608,11 +615,9 @@ statistical profiler, a code coverage tool, and many other extensions.") (guix build gnu-build-system)) #:phases (modify-phases %standard-phases - (replace 'unpack + (add-after 'unpack 'unpack-image (lambda* (#:key inputs #:allow-other-keys) - (invoke "tar" "xzvf" (assoc-ref inputs "ccl")) - (chdir "ccl") - #t)) + (invoke "tar" "xzvf" (assoc-ref inputs "ccl-bootstrap")))) (delete 'configure) (add-before 'build 'pre-build ;; Enter the source directory for the current platform's lisp @@ -623,13 +628,13 @@ statistical profiler, a code coverage tool, and many other extensions.") (chdir (string-append "lisp-kernel/" ,(match (or (%current-target-system) (%current-system)) - ("i686-linux" "linuxx8632") + ("i686-linux" "linuxx8632") ("x86_64-linux" "linuxx8664") - ("armhf-linux" "linuxarm") + ("armhf-linux" "linuxarm") ;; Prevent errors when querying this package ;; on unsupported platforms, e.g. when running ;; "guix package --search=" - (_ "UNSUPPORTED")))) + (_ "UNSUPPORTED")))) (substitute* '("Makefile") (("/bin/rm") "rm")) (setenv "CC" "gcc") @@ -649,24 +654,24 @@ statistical profiler, a code coverage tool, and many other extensions.") (bash (assoc-ref inputs "bash")) (kernel ,(match (or (%current-target-system) (%current-system)) - ("i686-linux" "lx86cl") + ("i686-linux" "lx86cl") ("x86_64-linux" "lx86cl64") - ("armhf-linux" "armcl") + ("armhf-linux" "armcl") ;; Prevent errors when querying this package ;; on unsupported platforms, e.g. when running ;; "guix package --search=" - (_ "UNSUPPORTED"))) + (_ "UNSUPPORTED"))) (heap (string-append kernel ".image"))) (install-file kernel libdir) (install-file heap libdir) (let ((dirs '("lib" "library" "examples" "tools" "objc-bridge" ,@(match (%current-system) - ("x86_64-linux" - '("x86-headers64")) - ("i686-linux" - '("x86-headers")) - (_ '()))))) + ("x86_64-linux" + '("x86-headers64")) + ("i686-linux" + '("x86-headers")) + (_ '()))))) (for-each copy-recursively dirs (map (cut string-append libdir <>) dirs))) @@ -688,57 +693,7 @@ statistical profiler, a code coverage tool, and many other extensions.") implementation featuring fast compilation speed, native threads, a precise, generational, compacting garbage collector, and a convenient foreign-function interface.") - ;; See file doc/LICENSE for clarifications it makes regarding how the LGPL - ;; applies to Lisp code according to them. - (license (list license:lgpl2.1 - license:clarified-artistic)))) ;TRIVIAL-LDAP package - -(define-public ccl-1.12 - ;; This is a development snapshot. The last stable version is from November - ;; 2017 and does not support package-local-nicknames, which prevents CCL - ;; from compiling some third-party packages. - ;; The main drawback of 1.12 is that ARM is not supported for now. - (package - (inherit ccl) - (version "1.12-dev.5") - (source (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/Clozure/ccl/") - (commit (string-append "v" version)))) - (file-name (git-file-name "ccl" version)) - (sha256 - (base32 - "1za5j4ll4hk1vi1i7v1bmqhaqbsgc16izn46qmry7dnbig0rdqm0")))) - ;; CCL consists of a "lisp kernel" and "heap image". - ;; See comment in `ccl' package. - (inputs - `(("ccl-bootstrap" - ,(origin - (method url-fetch) - (uri (string-append - "https://github.com/Clozure/ccl/releases/download/v" version "/" - (match (%current-system) - ((or "i686-linux" "x86_64-linux") "linuxx86") - ;; Prevent errors when querying this package on unsupported - ;; platforms, e.g. when running "guix package --search=" - (_ "UNSUPPORTED")) - ".tar.gz")) - (sha256 - (base32 - (match (%current-system) - ((or "i686-linux" "x86_64-linux") - "1pqiybxxv4wx5zlp1i60nim3njaczwl5321bdwq6frjsl3s95xmb") - (_ "")))))))) - (arguments - (substitute-keyword-arguments (package-arguments ccl) - ((#:phases phases) - `(modify-phases ,phases - (replace 'unpack (assoc-ref %standard-phases 'unpack)) - (add-after 'unpack 'unpack-image - (lambda* (#:key inputs #:allow-other-keys) - (invoke "tar" "xzvf" (assoc-ref inputs "ccl-bootstrap")))))))) - (supported-systems '("i686-linux" "x86_64-linux")))) + (license license:asl2.0))) (define-public lush2 (package diff --git a/gnu/packages/llvm.scm b/gnu/packages/llvm.scm index d6c519bcbd..15e15281a7 100644 --- a/gnu/packages/llvm.scm +++ b/gnu/packages/llvm.scm @@ -14,6 +14,7 @@ ;;; Copyright © 2019 Arm Ltd <David.Truby@arm.com> ;;; Copyright © 2019 Mathieu Othacehe <m.othacehe@gmail.com> ;;; Copyright © 2019 Brett Gilio <brettg@gnu.org> +;;; Copyright © 2020 Giacomo Leidi <goodoldpaul@autistici.org> ;;; ;;; This file is part of GNU Guix. ;;; @@ -75,7 +76,8 @@ as \"x86_64-linux\"." ("powerpc" => "PowerPC") ("riscv" => "RISCV") ("x86_64" => "X86") - ("i686" => "X86")))) + ("i686" => "X86") + ("i586" => "X86")))) (define (llvm-download-uri component version) (if (version>=? version "9.0.1") @@ -96,6 +98,7 @@ as \"x86_64-linux\"." (base32 "1pwgm6cr0xr5a0hrbqs1zvsvvjvy0yq1y47c96804wcs795s90yz")))) (build-system cmake-build-system) + (outputs '("out" "opt-viewer")) (native-inputs `(("python" ,python-2) ;bytes->str conversion in clang>=3.7 needs python-2 ("perl" ,perl))) @@ -113,16 +116,27 @@ as \"x86_64-linux\"." ;; Don't use '-g' during the build, to save space. #:build-type "Release" - #:phases (modify-phases %standard-phases - (add-before 'build 'shared-lib-workaround - ;; Even with CMAKE_SKIP_BUILD_RPATH=FALSE, llvm-tblgen - ;; doesn't seem to get the correct rpath to be able to run - ;; from the build directory. Set LD_LIBRARY_PATH as a - ;; workaround. - (lambda _ - (setenv "LD_LIBRARY_PATH" - (string-append (getcwd) "/lib")) - #t))))) + #:phases + (modify-phases %standard-phases + (add-before 'build 'shared-lib-workaround + ;; Even with CMAKE_SKIP_BUILD_RPATH=FALSE, llvm-tblgen + ;; doesn't seem to get the correct rpath to be able to run + ;; from the build directory. Set LD_LIBRARY_PATH as a + ;; workaround. + (lambda _ + (setenv "LD_LIBRARY_PATH" + (string-append (getcwd) "/lib")) + #t)) + (add-after 'install 'install-opt-viewer + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (opt-viewer-out (assoc-ref outputs "opt-viewer")) + (opt-viewer-share-dir (string-append opt-viewer-out "/share")) + (opt-viewer-dir (string-append opt-viewer-share-dir "/opt-viewer"))) + (mkdir-p opt-viewer-share-dir) + (rename-file (string-append out "/share/opt-viewer") + opt-viewer-dir)) + #t))))) (home-page "https://www.llvm.org") (synopsis "Optimizing compiler infrastructure") (description @@ -152,7 +166,28 @@ of programming tools as well as libraries with equivalent functionality.") (arguments `(;; Don't use '-g' during the build to save space. #:build-type "Release" - #:tests? #f)) ; Tests require gtest + #:tests? #f ; Tests require gtest + #:modules ((srfi srfi-1) + (ice-9 match) + ,@%cmake-build-system-modules) + #:phases (modify-phases (@ (guix build cmake-build-system) %standard-phases) + (add-after 'set-paths 'hide-glibc + ;; Work around https://issues.guix.info/issue/36882. We need to + ;; remove glibc from CPLUS_INCLUDE_PATH so that the one hardcoded + ;; in GCC, at the bottom of GCC include search-path is used. + (lambda* (#:key inputs #:allow-other-keys) + (let* ((filters '("libc")) + (input-directories + (filter-map (lambda (input) + (match input + ((name . dir) + (and (not (member name filters)) + dir)))) + inputs))) + (set-path-environment-variable "CPLUS_INCLUDE_PATH" + '("include") + input-directories) + #t)))))) (home-page "https://compiler-rt.llvm.org") (synopsis "Runtime library for Clang/LLVM") (description @@ -306,9 +341,12 @@ compiler. In LLVM this library is called \"compiler-rt\".") ;; Clang supports the same environment variables as GCC. (native-search-paths (list (search-path-specification - (variable "CPATH") + (variable "C_INCLUDE_PATH") (files '("include"))) (search-path-specification + (variable "CPLUS_INCLUDE_PATH") + (files '("include/c++" "include"))) + (search-path-specification (variable "LIBRARY_PATH") (files '("lib" "lib64"))))) @@ -396,7 +434,8 @@ output), and Binutils.") (define-public clang-runtime-9 (clang-runtime-from-llvm llvm-9 - "0xwh79g3zggdabxgnd0bphry75asm1qz7mv3hcqihqwqr6aspgy2")) + "0xwh79g3zggdabxgnd0bphry75asm1qz7mv3hcqihqwqr6aspgy2" + '("clang-runtime-9-libsanitizer-mode-field.patch"))) (define-public clang-9 (clang-from-llvm llvm-9 clang-runtime-9 @@ -427,7 +466,8 @@ output), and Binutils.") (define-public clang-runtime-8 (clang-runtime-from-llvm llvm-8 - "1c919wsm17xnv7lr8bhpq2wkq8113lzlw6hzhfr737j59x3wfddl")) + "1c919wsm17xnv7lr8bhpq2wkq8113lzlw6hzhfr737j59x3wfddl" + '("clang-runtime-9-libsanitizer-mode-field.patch"))) (define-public clang-8 (clang-from-llvm llvm-8 clang-runtime-8 @@ -451,7 +491,8 @@ output), and Binutils.") (define-public clang-runtime-7 (clang-runtime-from-llvm llvm-7 - "065ybd8fsc4h2hikbdyricj6pyv4r7r7kpcikhb2y5zf370xybkq")) + "065ybd8fsc4h2hikbdyricj6pyv4r7r7kpcikhb2y5zf370xybkq" + '("clang-runtime-9-libsanitizer-mode-field.patch"))) (define-public clang-7 (clang-from-llvm llvm-7 clang-runtime-7 @@ -475,7 +516,8 @@ output), and Binutils.") (define-public clang-runtime-6 (clang-runtime-from-llvm llvm-6 - "1fcr3jn24yr8lh36nc0c4ikli4744i2q9m1ik67p1jymwwaixkgl")) + "1fcr3jn24yr8lh36nc0c4ikli4744i2q9m1ik67p1jymwwaixkgl" + '("clang-runtime-9-libsanitizer-mode-field.patch"))) (define-public clang-6 (clang-from-llvm llvm-6 clang-runtime-6 @@ -495,13 +537,20 @@ output), and Binutils.") (uri (llvm-download-uri "llvm" version)) (sha256 (base32 - "1vi9sf7rx1q04wj479rsvxayb6z740iaz3qniwp266fgp5a07n8z")))))) + "1vi9sf7rx1q04wj479rsvxayb6z740iaz3qniwp266fgp5a07n8z")))) + (outputs '("out")) + (arguments + (substitute-keyword-arguments (package-arguments llvm) + ((#:phases phases) + `(modify-phases ,phases + (delete 'install-opt-viewer))))))) (define-public clang-runtime-3.9.1 (clang-runtime-from-llvm llvm-3.9.1 "16gc2gdmp5c800qvydrdhsp0bzb97s8wrakl6i8a4lgslnqnf2fk" - '("clang-runtime-asan-build-fixes.patch" + '("clang-runtime-3.9-libsanitizer-mode-field.patch" + "clang-runtime-asan-build-fixes.patch" "clang-runtime-esan-build-fixes.patch" "clang-3.5-libsanitizer-ustat-fix.patch"))) @@ -527,6 +576,7 @@ output), and Binutils.") llvm-3.8 "0p0y85c7izndbpg2l816z7z7558axq11d5pwkm4h11sdw7d13w0d" '("clang-runtime-asan-build-fixes.patch" + "clang-runtime-3.8-libsanitizer-mode-field.patch" "clang-3.5-libsanitizer-ustat-fix.patch"))) (define-public clang-3.8 @@ -550,6 +600,7 @@ output), and Binutils.") llvm-3.7 "10c1mz2q4bdq9bqfgr3dirc6hz1h3sq8573srd5q5lr7m7j6jiwx" '("clang-runtime-asan-build-fixes.patch" + "clang-runtime-3.8-libsanitizer-mode-field.patch" "clang-3.5-libsanitizer-ustat-fix.patch"))) (define-public clang-3.7 @@ -572,7 +623,7 @@ output), and Binutils.") (clang-runtime-from-llvm llvm-3.6 "11qx8d3pbfqjaj2x207pvlvzihbs1z2xbw4crpz7aid6h1yz6bqg" - '("clang-runtime-asan-build-fixes.patch"))) + '("clang-runtime-asan-build-fixes.patch"))) (define-public clang-3.6 (clang-from-llvm llvm-3.6 clang-runtime-3.6 @@ -627,12 +678,16 @@ output), and Binutils.") #:patches '("clang-3.5-libc-search-path.patch"))) (define-public llvm-for-extempore - (package (inherit llvm-3.7) + (package (inherit llvm-3.8) (name "llvm-for-extempore") (source (origin - (inherit (package-source llvm-3.7)) - (patches (list (search-patch "llvm-for-extempore.patch"))))) + (method url-fetch) + (uri (string-append "http://extempore.moso.com.au/extras/" + "llvm-3.8.0.src-patched-for-extempore.tar.xz")) + (sha256 + (base32 + "1svdl6fxn8l01ni8mpm0bd5h856ahv3h9sdzgmymr6fayckjvqzs")))) ;; Extempore refuses to build on architectures other than x86_64 (supported-systems '("x86_64-linux")))) @@ -648,6 +703,23 @@ output), and Binutils.") (base32 "0d2bj5i6mk4caq7skd5nsdmz8c2m5w5anximl5wz3x32p08zz089")))) (build-system cmake-build-system) + (arguments + `(#:phases + (modify-phases (@ (guix build cmake-build-system) %standard-phases) + (add-after 'set-paths 'adjust-CPLUS_INCLUDE_PATH + (lambda* (#:key inputs #:allow-other-keys) + (let ((gcc (assoc-ref inputs "gcc"))) + ;; Hide GCC's C++ headers so that they do not interfere with + ;; the ones we are attempting to build. + (setenv "CPLUS_INCLUDE_PATH" + (string-join (delete (string-append gcc "/include/c++") + (string-split (getenv "CPLUS_INCLUDE_PATH") + #\:)) + ":")) + (format #t + "environment variable `CPLUS_INCLUDE_PATH' changed to ~a~%" + (getenv "CPLUS_INCLUDE_PATH")) + #t)))))) (native-inputs `(("clang" ,clang) ("llvm" ,llvm))) diff --git a/gnu/packages/logging.scm b/gnu/packages/logging.scm index 8496b6256d..9139dc440e 100644 --- a/gnu/packages/logging.scm +++ b/gnu/packages/logging.scm @@ -6,6 +6,7 @@ ;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2019 Gábor Boskovits <boskovits@gmail.com> ;;; Copyright © 2019 Meiyo Peng <meiyo@riseup.net> +;;; Copyright © 2020 Marius Bakke <mbakke@fastmail.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -53,6 +54,17 @@ (base32 "07gmr3jyaf2239n9sp6h7hwdz1pv7b7aka8n06gmr2fnlmaymfrc")))) (build-system gnu-build-system) + (arguments + '(#:phases + (modify-phases %standard-phases + (add-after 'unpack 'do-not-call-stime + (lambda _ + ;; Patch out use of 'stime' which was removed from glibc 2.31. + ;; The test would not work in the build container anyway. + (substitute* "tests/testDailyRollingFileAppender.cpp" + (("if \\(stime\\(&now\\) == -1\\)") + "if (1)")) + #t))))) (synopsis "Log library for C++") (description "Log4cpp is library of C++ classes for flexible logging to files, syslog, diff --git a/gnu/packages/lolcode.scm b/gnu/packages/lolcode.scm index 84ae83dcc8..3f62c4d5a5 100644 --- a/gnu/packages/lolcode.scm +++ b/gnu/packages/lolcode.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2016 ng0 <ng0@n0.is> +;;; Copyright © 2016 Nikita <nikita@n0.is> ;;; Copyright © 2019 Tobias Geerinckx-Rice <me@tobias.gr> ;;; ;;; This file is part of GNU Guix. diff --git a/gnu/packages/lxde.scm b/gnu/packages/lxde.scm index 9de96a21cb..14c4120d05 100644 --- a/gnu/packages/lxde.scm +++ b/gnu/packages/lxde.scm @@ -1,7 +1,7 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2015 Mathieu Lirzin <mthl@openmailbox.org> ;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il> -;;; Copyright © 2017 ng0 <ng0@n0.is> +;;; Copyright © 2017 Nikita <nikita@n0.is> ;;; Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com> ;;; Copyright © 2017 Brendan Tildesley <mail@brendan.scot> ;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr> @@ -27,7 +27,9 @@ (define-module (gnu packages lxde) #:use-module (gnu packages) + #:use-module (gnu packages admin) #:use-module (gnu packages autotools) + #:use-module (gnu packages base) #:use-module (gnu packages bash) #:use-module (gnu packages disk) #:use-module (gnu packages docbook) @@ -55,6 +57,7 @@ #:use-module (guix build-system gnu) #:use-module (guix build-system trivial) #:use-module (guix download) + #:use-module (guix git-download) #:use-module ((guix licenses) #:prefix license:) #:use-module (guix packages) #:use-module (guix utils)) @@ -249,25 +252,26 @@ with freedesktop.org standard.") (package (name "spacefm") (version "1.0.6") - (source (origin - (method url-fetch) - (uri (string-append - "https://github.com/IgnorantGuru/spacefm/archive/" - version ".tar.gz")) - (sha256 - (base32 - "1jg7xfyr7kihjnalxp8wxyb9qjk8hqf5l36rp3s0lvkpmpyakppy")) - (modules '((guix build utils))) - (snippet - '(begin - (substitute* "src/main.c" - (("#include <sys/types\\.h>" all) - ;; Add missing include for 'major' and 'minor' with glibc - ;; >= 2.28. - (string-append all "\n" - "#include <sys/sysmacros.h>\n"))) - #t)) - (file-name (string-append name "-" version ".tar.gz")))) + (source + (origin + (method git-fetch) + (uri + (git-reference + (url "https://github.com/IgnorantGuru/spacefm.git") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 "193mdcv73cfc2bnm4bzmnf1wmkzgj1ya64y0lgyxn3ww36ghcsx9")) + (modules '((guix build utils))) + (snippet + '(begin + (substitute* "src/main.c" + (("#include <sys/types\\.h>" all) + ;; Add missing include for 'major' and 'minor' with glibc + ;; >= 2.28. + (string-append all "\n" + "#include <sys/sysmacros.h>\n"))) + #t)))) (build-system glib-or-gtk-build-system) (native-inputs `(("desktop-file-utils" ,desktop-file-utils) @@ -277,32 +281,123 @@ with freedesktop.org standard.") ("pkg-config" ,pkg-config))) (inputs `(("bash" ,bash) + ("btrfs-progs" ,btrfs-progs) ("cairo" ,cairo) + ("coreutils" ,coreutils) ("curlftpfs" ,curlftpfs) - ("dbus" ,dbus) + ("e2fsprogs" ,e2fsprogs) ("eudev" ,eudev) ("fakeroot" ,fakeroot) ("ffmpegthumbnailer" ,ffmpegthumbnailer) + ("fsarchiver" ,fsarchiver) ("fuseiso" ,fuseiso) ("glib" ,glib) + ("gphotofs" ,gphotofs) ("gtk+" ,gtk+) ("ifuse" ,ifuse) ("jmtpfs" ,jmtpfs) + ("ktsuss" ,ktsuss) ("libx11" ,libx11) ("lsof" ,lsof) + ("ntfs-3g" ,ntfs-3g) ("pango" ,pango) + ("procps" ,procps) ("shared-mime-info" ,shared-mime-info) ("startup-notification" ,startup-notification) ("udevil" ,udevil) ("util-linux" ,util-linux) ("wget" ,wget))) (arguments - `(#:configure-flags (list (string-append "--with-bash-path=" - (assoc-ref %build-inputs "bash") - "/bin/bash") - (string-append "--sysconfdir=" - (assoc-ref %outputs "out") - "/etc")))) + `(#:phases + (modify-phases %standard-phases + (add-after 'unpack 'patch-bin-dirs + (lambda* (#:key inputs #:allow-other-keys) + (let* ((bash (assoc-ref inputs "bash")) + (coreutils (assoc-ref inputs "coreutils")) + (util-linux (assoc-ref inputs "util-linux")) + (procps (assoc-ref inputs "procps")) + (e2fsprogs (assoc-ref inputs "e2fsprogs")) + (btrfs-progs (assoc-ref inputs "btrfs-progs")) + (ntfs-3g (assoc-ref inputs "ntfs-3g")) + (lsof (assoc-ref inputs "lsof")) + (fsarchiver (assoc-ref inputs "fsarchiver")) + (ktsuss (assoc-ref inputs "ktsuss"))) + (with-directory-excursion "src" + (substitute* '("ptk/ptk-file-task.c" "ptk/ptk-handler.h" + "ptk/ptk-location-view.c" "spacefm-auth" + "spacefm-auth.bash" "vfs/vfs-file-task.c" + "settings.c" "../data/ui/prefdlg.ui" + "../data/ui/prefdlg2.ui") + (("/bin/sh" file) (string-append bash file)) + (("/bin/bash" file) (string-append bash file)) + (("/bin/kill" file) (string-append coreutils file)) + (("/bin/ls" file) (string-append coreutils file)) + (("/usr(/bin/sha256sum)" _ file) (string-append coreutils file)) + (("/usr(/bin/sha512sum)" _ file) (string-append coreutils file)) + (("/sbin/fsck" file) (string-append util-linux file)) + (("/sbin/mkfs" file) (string-append util-linux file)) + (("/sbin/mkswap" file) (string-append util-linux file)) + (("/bin/ps" file) (string-append procps file)) + (("/sbin/tune2fs" file) (string-append e2fsprogs file)) + (("/sbin/btrfs") (string-append btrfs-progs "/bin/btrfs")) + (("/sbin/ntfslabel" file) (string-append ntfs-3g file)) + (("/usr(/bin/lsof)" _ file) (string-append lsof file)) + (("(/usr)?/(sbin|bin)/fsarchiver") (string-append fsarchiver + "/sbin/fsarchiver")) + (("/usr(/bin/ktsuss)" _ file) (string-append ktsuss file)))) + #t))) + (add-after 'patch-bin-dirs 'patch-share-dirs + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (share (string-append out "/share"))) + (with-directory-excursion "src" + (substitute* '("main-window.c" "settings.c" + "ptk/ptk-app-chooser.c") + (("/usr(/local)?/share") share))) + #t))) + (add-after 'patch-share-dirs 'patch-mime-dirs + (lambda* (#:key inputs #:allow-other-keys) + (let* ((mime (string-append (assoc-ref inputs "shared-mime-info") + "/share/mime"))) + (with-directory-excursion "src" + (substitute* '("mime-type/mime-type.c" "ptk/ptk-file-menu.c") + (("/usr(/local)?/share/mime") mime))) + #t))) + (add-after 'patch-mime-dirs 'patch-setuid-progs + (lambda _ + (let* ((su "/run/setuid-programs/su") + (mount "/run/setuid-programs/mount") + (umount "/run/setuid-programs/umount") + (udevil "/run/setuid-programs/udevil")) + (with-directory-excursion "src" + (substitute* '("settings.c" "settings.h" "vfs/vfs-file-task.c" + "vfs/vfs-volume-hal.c" "../data/ui/prefdlg.ui" + "../data/ui/prefdlg2.ui") + (("(/usr)?/bin/su") su) + (("/(bin|sbin)/mount") mount) + (("/(bin|sbin)/umount") umount) + (("/usr/bin/udevil") udevil))) + #t))) + (add-after 'patch-setuid-progs 'patch-spacefm-conf + (lambda* (#:key inputs #:allow-other-keys) + (substitute* "etc/spacefm.conf" + (("#terminal_su=/bin/su") + "terminal_su=/run/setuid-programs/su") + (("#graphical_su=/usr/bin/gksu") + (string-append "graphical_su=" + (string-append (assoc-ref inputs "ktsuss") + "/bin/ktsuss")))) + #t))) + #:configure-flags (list + (string-append "--with-preferable-sudo=" + (assoc-ref %build-inputs "ktsuss") + "/bin/ktsuss") + (string-append "--with-bash-path=" + (assoc-ref %build-inputs "bash") + "/bin/bash") + (string-append "--sysconfdir=" + (assoc-ref %outputs "out") + "/etc")))) (home-page "https://ignorantguru.github.io/spacefm/") (synopsis "Multi-panel tabbed file manager") (description "SpaceFM is a graphical, multi-panel, tabbed file manager diff --git a/gnu/packages/lxqt.scm b/gnu/packages/lxqt.scm index a440491633..f9c757a804 100644 --- a/gnu/packages/lxqt.scm +++ b/gnu/packages/lxqt.scm @@ -3,7 +3,7 @@ ;;; Copyright © 2015 Sou Bunnbu <iyzsong@gmail.com> ;;; Copyright © 2016 Mark H Weaver <mhw@netris.org> ;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il> -;;; Copyright © 2017 ng0 <ng0@n0.is> +;;; Copyright © 2017 Nikita <nikita@n0.is> ;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2018, 2019 Meiyo Peng <meiyo@riseup.net> ;;; Copyright © 2018 Ricardo Wurmus <rekado@elephly.net> @@ -994,8 +994,7 @@ components to build desktop file managers which belongs to LXDE.") (base32 "0x3c25inlxll965xszx37mnl5gp3smm2h7x04f67z0qlh3vsbrjq")))) (build-system cmake-build-system) (inputs - `(("glib:bin" ,glib "bin") - ("libfm-qt" ,libfm-qt) + `(("libfm-qt" ,libfm-qt) ("qtbase" ,qtbase) ("qtx11extras" ,qtx11extras))) (native-inputs @@ -1011,17 +1010,7 @@ components to build desktop file managers which belongs to LXDE.") (substitute* '("autostart/CMakeLists.txt") (("DESTINATION \"\\$\\{LXQT_ETC_XDG_DIR\\}") "DESTINATION \"etc/xdg")) - #t)) - (add-after 'install 'wrap-glib - (lambda* (#:key outputs inputs #:allow-other-keys) - (let* ((out (assoc-ref outputs "out")) - (glib (assoc-ref inputs "glib:bin")) - (gio-exe-path (string-append glib "/bin/gio-launch-desktop"))) - (if (file-exists? gio-exe-path) - (wrap-program (string-append out "/bin/pcmanfm-qt") - `("GIO_LAUNCH_DESKTOP" = (,gio-exe-path))) - (error "could not find gio-launch-desktop")) - #t)))))) + #t))))) (home-page "https://lxqt.org/") (synopsis "File manager and desktop icon manager") (description "PCManFM-Qt is the Qt port of PCManFM, the file manager of diff --git a/gnu/packages/machine-learning.scm b/gnu/packages/machine-learning.scm index f979a64d55..6552d171bf 100644 --- a/gnu/packages/machine-learning.scm +++ b/gnu/packages/machine-learning.scm @@ -781,7 +781,7 @@ than 8 bits, and at the end only some significant 8 bits are kept.") (inputs `(("giflib" ,giflib) ("lapack" ,lapack) - ("libjpeg" ,libjpeg) + ("libjpeg" ,libjpeg-turbo) ("libpng" ,libpng) ("libx11" ,libx11) ("openblas" ,openblas) @@ -1239,8 +1239,9 @@ automatically.") (license license:asl2.0)))) (define-public kaldi-gstreamer-server - (let ((commit "1735ba49c5dc0ebfc184e45105fc600cd9f1f508") - (revision "1")) + ;; This is the tip of the py3 branch + (let ((commit "f68cab490be7eb0da2af1475fbc16655f50a60cb") + (revision "2")) (package (name "kaldi-gstreamer-server") (version (git-version "0" revision commit)) @@ -1252,7 +1253,7 @@ automatically.") (file-name (git-file-name name version)) (sha256 (base32 - "0j701m7lbwmzqxsfanj882v7881hrbmpqybbczbxqpcbg8q34w0k")))) + "17lh1368vkg8ngrcbn2phvigzlmalrqg6djx2gg61qq1a0nj87dm")))) (build-system gnu-build-system) (arguments `(#:tests? #f ; there are no tests that can be run automatically @@ -1268,6 +1269,14 @@ automatically.") ;; are reproducible. (setenv "PYTHONHASHSEED" "0") (with-directory-excursion "kaldigstserver" + ;; See https://github.com/alumae/kaldi-gstreamer-server/issues/232 + (substitute* "master_server.py" + (("\\.replace\\('\\\\.*") ")")) + + ;; This is a Python 2 file + (delete-file "decoder_test.py") + (delete-file "test-buffer.py") + (for-each (lambda (file) (apply invoke `("python" @@ -1318,12 +1327,10 @@ exec ~a ~a/~a \"$@\"~%" #t)))))) (inputs `(("gst-kaldi-nnet2-online" ,gst-kaldi-nnet2-online) - ("python2" ,python-2) - ("python2-futures" ,python2-futures) - ("python2-pygobject" ,python2-pygobject) - ("python2-pyyaml" ,python2-pyyaml) - ("python2-tornado" ,python2-tornado) - ("python2-ws4py" ,python2-ws4py-for-kaldi-gstreamer-server))) + ("python" ,python-wrapper) + ("python-pygobject" ,python-pygobject) + ("python-pyyaml" ,python-pyyaml) + ("python-tornado" ,python-tornado-6))) (home-page "https://github.com/alumae/kaldi-gstreamer-server") (synopsis "Real-time full-duplex speech recognition server") (description "This is a real-time full-duplex speech recognition server, @@ -1761,7 +1768,7 @@ INSTALL_RPATH " (assoc-ref outputs "out") "/lib)\n"))) ("eigen" ,eigen-for-tensorflow) ("gemmlowp" ,gemmlowp-for-tensorflow) ("lmdb" ,lmdb) - ("libjpeg" ,libjpeg) + ("libjpeg" ,libjpeg-turbo) ("libpng" ,libpng) ("giflib" ,giflib) ("grpc" ,grpc-1.16.1 "static") diff --git a/gnu/packages/magic-wormhole.scm b/gnu/packages/magic-wormhole.scm index bdfc1162b6..465e6aced6 100644 --- a/gnu/packages/magic-wormhole.scm +++ b/gnu/packages/magic-wormhole.scm @@ -29,14 +29,14 @@ (define-public magic-wormhole-mailbox-server (package (name "magic-wormhole-mailbox-server") - (version "0.3.1") + (version "0.4.1") (source (origin (method url-fetch) (uri (pypi-uri "magic-wormhole-mailbox-server" version)) (sha256 (base32 - "1q6zhbx8fcpk7rchclm7yqcxdsc1x97hki2ji61sa544r5xvxv55")))) + "1yw8i8jv5iv1kkz1aqimskw7fpichjn6ww0fq0czbalwj290bw8s")))) (build-system python-build-system) (arguments '(#:phases @@ -68,14 +68,14 @@ connection, or through a transit-relay.") (define-public magic-wormhole-transit-relay (package (name "magic-wormhole-transit-relay") - (version "0.1.2") + (version "0.2.1") (source (origin (method url-fetch) (uri (pypi-uri "magic-wormhole-transit-relay" version)) (sha256 (base32 - "11w5gdc6am2ph5rns60x0694sx4zrlzxj540jljhn5cmnbx1ngxi")))) + "0ppsx2s1ysikns1h053x67z2zmficbn3y3kf52bzzslhd2s02j6b")))) (build-system python-build-system) (arguments `(#:phases @@ -107,14 +107,14 @@ together, allowing them to pretend they have a direct connection.") (define-public magic-wormhole (package (name "magic-wormhole") - (version "0.11.2") + (version "0.12.0") (source (origin (method url-fetch) (uri (pypi-uri "magic-wormhole" version)) (sha256 (base32 - "01fr4bi6kc6fz9n3c4qq892inrc3nf6p2djy65yvm7xkvdxncydf")))) + "0q41j99718y7m95zg1vaybnsp31lp6lhyqkbv4yqz5ys6jixh3qv")))) (build-system python-build-system) (arguments '(#:phases diff --git a/gnu/packages/mail.scm b/gnu/packages/mail.scm index cb5e23bcea..ca1828b1b1 100644 --- a/gnu/packages/mail.scm +++ b/gnu/packages/mail.scm @@ -15,7 +15,7 @@ ;;; Copyright © 2016 Lukas Gradl <lgradl@openmailbox.org> ;;; Copyright © 2016 Alex Kost <alezost@gmail.com> ;;; Copyright © 2016, 2017 Troy Sankey <sankeytms@gmail.com> -;;; Copyright © 2016, 2017, 2018 ng0 <ng0@n0.is> +;;; Copyright © 2016, 2017, 2018 Nikita <nikita@n0.is> ;;; Copyright © 2016 Clément Lassieur <clement@lassieur.org> ;;; Copyright © 2016, 2017, 2018, 2019 Arun Isaac <arunisaac@systemreboot.net> ;;; Copyright © 2016 John Darrington <jmd@gnu.org> @@ -23,7 +23,7 @@ ;;; Copyright © 2017 Thomas Danckaert <post@thomasdanckaert.be> ;;; Copyright © 2017 Kyle Meyer <kyle@kyleam.com> ;;; Copyright © 2017, 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr> -;;; Copyright © 2017, 2018 Rene Saavedra <pacoon@protonmail.com> +;;; Copyright © 2017, 2018, 2020 Rene Saavedra <pacoon@protonmail.com> ;;; Copyright © 2018, 2019, 2020 Pierre Langlois <pierre.langlois@gmx.com> ;;; Copyright © 2018 Alex Vong <alexvong1995@gmail.com> ;;; Copyright © 2018 Gábor Boskovits <boskovits@gmail.com> @@ -228,7 +228,7 @@ ("dejagnu" ,dejagnu))) (inputs `(("m4" ,m4) - ("guile" ,guile-2.2) + ("guile" ,guile-3.0) ("gsasl" ,gsasl) ("gnutls" ,gnutls) ("ncurses" ,ncurses) @@ -252,14 +252,17 @@ software.") ;; Libraries are under LGPLv3+, and programs under GPLv3+. (list gpl3+ lgpl3+)))) -(define-public guile3.0-mailutils +(define-public guile2.2-mailutils (package (inherit mailutils) - (name "guile3.0-mailutils") + (name "guile2.2-mailutils") (inputs - `(("guile" ,guile-3.0) + `(("guile" ,guile-2.2) ,@(alist-delete "guile" (package-inputs mailutils)))))) +(define-public guile3.0-mailutils + (deprecated-package "guile3.0-mailutils" mailutils)) + (define-public nullmailer (package (name "nullmailer") @@ -715,22 +718,21 @@ security functionality including PGP, S/MIME, SSH, and SSL.") (define-public mu (package (name "mu") - (version "1.4") + (version "1.4.4") (source (origin (method url-fetch) (uri (string-append "https://github.com/djcb/mu/releases/" - "download/" (version-major+minor version) "/" + "download/" version "/" "mu-" version ".tar.xz")) (sha256 (base32 - "1ay68rhlngnp2zm6wdmzgr1fsal3spz61swcxlaz5y215qvgjfpy")))) + "0pmx8zh5fsfhkdl0cr7ydcv6cywhxbgavnjrfr5p2ibz9gx3q3vf")))) (build-system gnu-build-system) (native-inputs `(("pkg-config" ,pkg-config) ("glib" ,glib "bin") ; for gtester ("emacs" ,emacs-minimal) ("tzdata" ,tzdata-for-tests))) ; for mu/test/test-mu-query.c - ;; TODO: Add webkit and gtk to build the mug GUI. (inputs `(("xapian" ,xapian) ("guile" ,guile-2.2) @@ -1117,13 +1119,7 @@ useful features.") ("expat" ,expat) ("zlib" ,zlib))) (arguments - '(#:phases - (modify-phases %standard-phases - (replace 'bootstrap - (lambda _ - (setenv "NOCONFIGURE" "true") - (invoke "sh" "autogen.sh")))) - #:configure-flags + '(#:configure-flags '("--disable-static" "--disable-db"))) (home-page "https://www.etpan.org/libetpan.html") (synopsis "Portable middleware for email access") @@ -1220,14 +1216,14 @@ which can add many functionalities to the base client.") (define-public msmtp (package (name "msmtp") - (version "1.8.7") + (version "1.8.10") (source (origin (method url-fetch) (uri (string-append "https://marlam.de/msmtp/releases/" "/msmtp-" version ".tar.xz")) (sha256 - (base32 "1waiiksa57byb7gvx1zmh6srvl6r8rvwqklk0slb3iaf4kfbqlws")))) + (base32 "041g921rdjiv8bapp61gp4rylq8cckfkcwzyh8bs7xwxs4wpzfna")))) (build-system gnu-build-system) (inputs `(("libsecret" ,libsecret) @@ -2755,14 +2751,14 @@ tools and applications: (define-public balsa (package (name "balsa") - (version "2.5.7") + (version "2.6.0") (source (origin (method url-fetch) (uri (string-append "https://pawsa.fedorapeople.org/balsa/" name "-" version ".tar.bz2")) (sha256 - (base32 "0yfqhfpwm1qnwmbpr6dfn2f5w8a8xxq51pn8ypgg0fw973l1c1nx")))) + (base32 "0ycidvgy9npd6avxk88sf2ca609m7zb0hzrk1yajrgwb1rfqx68a")))) (build-system gnu-build-system) (arguments `(#:configure-flags @@ -2780,7 +2776,7 @@ tools and applications: `(("cyrus-sasl" ,cyrus-sasl) ("enchant" ,enchant) ("gdk-pixbuf" ,gdk-pixbuf) - ("gmime" ,gmime-2.6) + ("gmime" ,gmime) ("gnutls" ,gnutls) ("gpgme" ,gpgme) ("gtk+" ,gtk+) @@ -2788,7 +2784,9 @@ tools and applications: ("gtkspell3" ,gtkspell3) ("libcanberra" ,libcanberra) ("libesmtp" ,libesmtp) + ("libical" ,libical) ("libnotify" ,libnotify) + ("libsecret" ,libsecret) ("openldap" ,openldap) ("sqlite" ,sqlite) ("webkitgtk" ,webkitgtk))) @@ -2964,11 +2962,11 @@ replacement for the @code{urlview} program.") (license gpl2+))) (define-public mumi - (let ((commit "9175199e9039b9a1dbc5e1eafa05b9c618416f3b") - (revision "16")) + (let ((commit "5a578328199bab51a147fbadbce12c8d06959ed6") + (revision "2")) (package (name "mumi") - (version (git-version "0.0.0" revision commit)) + (version (git-version "0.0.1" revision commit)) (source (origin (method git-fetch) (uri (git-reference @@ -2977,7 +2975,7 @@ replacement for the @code{urlview} program.") (file-name (git-file-name name version)) (sha256 (base32 - "1v0i9h3dw0irc92flmk3wk72l0kiymf82fashklbyhk7mr968zx3")))) + "0hngv82gd19l4q7nnbf97r120z1yagsmkp0x3lc8haza5q4mc12c")))) (build-system gnu-build-system) (arguments `(#:modules ((guix build gnu-build-system) @@ -3006,17 +3004,15 @@ replacement for the @code{urlview} program.") (,go ,(getenv "GUILE_LOAD_COMPILED_PATH")))) #t)))))) (inputs - `(("guile-debbugs" ,guile-debbugs) - ("guile-email" ,guile-email) + `(("guile-email" ,guile-email) + ("guile-fibers" ,guile-fibers) ("guile-gcrypt" ,guile-gcrypt) ("guile-json" ,guile-json-3) ("guile-redis" ,guile-redis) - ("guile-sqlite3" ,guile-sqlite3) ("guile-syntax-highlight" ,guile-syntax-highlight) ("guile-webutils" ,guile-webutils) ("guile-xapian" ,guile-xapian) - ("gnutls" ,gnutls) ;needed to talk to https://debbugs.gnu.org - ("guile" ,guile-2.2) + ("guile" ,guile-3.0) ("mailutils" ,mailutils))) (native-inputs `(("autoconf" ,autoconf) diff --git a/gnu/packages/make-bootstrap.scm b/gnu/packages/make-bootstrap.scm index b8d1b2af3e..fe86f810bf 100644 --- a/gnu/packages/make-bootstrap.scm +++ b/gnu/packages/make-bootstrap.scm @@ -1,10 +1,11 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2017 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2018, 2019 Mark H Weaver <mhw@netris.org> ;;; Copyright © 2018, 2019 Jan (janneke) Nieuwenhuizen <janneke@gnu.org> -;;; Copyright © 2019 Marius Bakke <mbakke@fastmail.com> +;;; Copyright © 2019, 2020 Marius Bakke <mbakke@fastmail.com> +;;; Copyright © 2020 Mathieu Othacehe <m.othacehe@gmail.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -54,7 +55,8 @@ %mes-bootstrap-tarball %bootstrap-tarballs - %guile-static-stripped)) + %guile-static-stripped + %guile-3.0-static-stripped)) ;;; Commentary: ;;; @@ -92,34 +94,13 @@ for `sh' in $PATH, and without nscd, and with static NSS modules." (mlambdaq (glibc) "Return a variant of GCC that uses the bootstrap variant of GLIBC." (package - (inherit gcc) + (inherit gcc-5) (outputs '("out")) ;all in one so libgcc_s is easily found - (native-search-paths - ;; Set CPLUS_INCLUDE_PATH so GCC is able to find the libc - ;; C++ headers. - (cons (search-path-specification - (variable "CPLUS_INCLUDE_PATH") - (files '("include"))) - (package-native-search-paths gcc))) (inputs `( ;; Distinguish the name so we can refer to it below. ("bootstrap-libc" ,(glibc-for-bootstrap glibc)) ("libc:static" ,(glibc-for-bootstrap glibc) "static") - ,@(package-inputs gcc))) - (arguments - (substitute-keyword-arguments (package-arguments gcc) - ((#:phases phases) - `(modify-phases ,phases - (add-before 'configure 'treat-glibc-as-system-header - (lambda* (#:key inputs #:allow-other-keys) - (let ((libc (assoc-ref inputs "bootstrap-libc"))) - ;; GCCs build processes requires that the libc - ;; we're building against is on the system header - ;; search path. - (for-each (lambda (var) - (setenv var (string-append libc "/include"))) - '("C_INCLUDE_PATH" "CPLUS_INCLUDE_PATH")) - #t)))))))))) + ,@(package-inputs gcc-5)))))) (define (package-with-relocatable-glibc p) "Return a variant of P that uses the libc as defined by @@ -137,7 +118,10 @@ for `sh' in $PATH, and without nscd, and with static NSS modules." (define (inputs) (if (%current-target-system) ; is this package cross built? `(("cross-libc" - ,(cross-bootstrap-libc (%current-target-system)))) + ,(cross-bootstrap-libc (%current-target-system))) + ("cross-libc:static" + ,(cross-bootstrap-libc (%current-target-system)) + "static")) '())) (define (native-inputs) @@ -155,7 +139,7 @@ for `sh' in $PATH, and without nscd, and with static NSS modules." (cons (search-path-specification (variable "CROSS_CPLUS_INCLUDE_PATH") (files '("include"))) - (package-search-paths gcc))))) + (package-search-paths gcc-5))))) ("cross-binutils" ,(cross-binutils target)) ,@(%final-inputs))) `(("libc" ,(glibc-for-bootstrap glibc)) @@ -167,15 +151,6 @@ for `sh' in $PATH, and without nscd, and with static NSS modules." (current-source-location) #:native-inputs native-inputs)) -(define static-bash-for-bootstrap - (package - (inherit static-bash) - (source (origin - (inherit (package-source static-bash)) - (patches - (cons (search-patch "bash-reproducible-linux-pgrp-pipe.patch") - (origin-patches (package-source static-bash)))))))) - (define %static-inputs ;; Packages that are to be used as %BOOTSTRAP-INPUTS. (let ((coreutils (package (inherit coreutils) @@ -252,7 +227,7 @@ for `sh' in $PATH, and without nscd, and with static NSS modules." (("-Wl,-export-dynamic") "")) #t))))))) (inputs (if (%current-target-system) - `(("bash" ,static-bash-for-bootstrap)) + `(("bash" ,static-bash)) '())))) (tar (package (inherit tar) (arguments @@ -298,7 +273,7 @@ for `sh' in $PATH, and without nscd, and with static NSS modules." ("sed" ,sed) ("grep" ,grep) ("gawk" ,gawk))) - ("bash" ,static-bash-for-bootstrap)))) + ("bash" ,static-bash)))) (define %static-binaries (package @@ -400,6 +375,10 @@ for `sh' in $PATH, and without nscd, and with static NSS modules." (package-arguments binutils)) ((#:configure-flags flags _ ...) flags))) + #:make-flags ,(match (memq #:make-flags (package-arguments binutils)) + ((#:make-flags flags _ ...) + flags) + (_ ''())) #:strip-flags '("--strip-all") #:phases (modify-phases %standard-phases (add-before 'configure 'all-static @@ -427,7 +406,8 @@ for `sh' in $PATH, and without nscd, and with static NSS modules." (begin (use-modules (guix build utils)) - (setvbuf (current-output-port) _IOLBF) + (setvbuf (current-output-port) + (cond-expand (guile-2.0 _IOLBF) (else 'line))) (let* ((in (assoc-ref %build-inputs "binutils")) (out (assoc-ref %outputs "out")) (bin (string-append out "/bin"))) @@ -481,61 +461,62 @@ for `sh' in $PATH, and without nscd, and with static NSS modules." (define %gcc-static ;; A statically-linked GCC, with stripped-down functionality. (package-with-relocatable-glibc - (package (inherit gcc) + (package (inherit gcc-5) (name "gcc-static") (outputs '("out")) ; all in one (arguments - `(#:modules ((guix build utils) - (guix build gnu-build-system) - (srfi srfi-1) - (srfi srfi-26) - (ice-9 regex)) - ,@(substitute-keyword-arguments (package-arguments gcc) - ((#:guile _) #f) - ((#:implicit-inputs? _) #t) - ((#:configure-flags flags) - `(append (list - ;; We don't need a full bootstrap here. - "--disable-bootstrap" - - ;; Make sure '-static' is passed where it matters. - "--with-stage1-ldflags=-static" - - ;; GCC 4.8+ requires a C++ compiler and library. - "--enable-languages=c,c++" - - ;; Make sure gcc-nm doesn't require liblto_plugin.so. - "--disable-lto" - - "--disable-shared" - "--disable-plugin" - "--disable-libmudflap" - "--disable-libatomic" - "--disable-libsanitizer" - "--disable-libitm" - "--disable-libgomp" - "--disable-libcilkrts" - "--disable-libvtv" - "--disable-libssp" - "--disable-libquadmath") - (remove (cut string-match "--(.*plugin|enable-languages)" <>) - ,flags))) - ((#:phases phases) - `(modify-phases ,phases - (add-after 'pre-configure 'remove-lgcc_s - (lambda _ - ;; Remove the '-lgcc_s' added to GNU_USER_TARGET_LIB_SPEC in - ;; the 'pre-configure phase of our main gcc package, because - ;; that shared library is not present in this static gcc. See - ;; <https://lists.gnu.org/archive/html/guix-devel/2015-01/msg00008.html>. - (substitute* (cons "gcc/config/rs6000/sysv4.h" - (find-files "gcc/config" - "^gnu-user.*\\.h$")) - ((" -lgcc_s}}") "}}")) - #t))))))) + (substitute-keyword-arguments (package-arguments gcc-5) + ((#:modules modules %gnu-build-system-modules) + `((srfi srfi-1) + (srfi srfi-26) + (ice-9 regex) + ,@modules)) + ((#:guile _) #f) + ((#:implicit-inputs? _) #t) + ((#:configure-flags flags) + `(append (list + ;; We don't need a full bootstrap here. + "--disable-bootstrap" + + ;; Make sure '-static' is passed where it matters. + "--with-stage1-ldflags=-static" + + ;; GCC 4.8+ requires a C++ compiler and library. + "--enable-languages=c,c++" + + ;; Make sure gcc-nm doesn't require liblto_plugin.so. + "--disable-lto" + + "--disable-shared" + "--disable-plugin" + "--disable-libmudflap" + "--disable-libatomic" + "--disable-libsanitizer" + "--disable-libitm" + "--disable-libgomp" + "--disable-libcilkrts" + "--disable-libvtv" + "--disable-libssp" + "--disable-libquadmath") + (remove (cut string-match "--(.*plugin|enable-languages)" <>) + ,flags))) + ((#:phases phases) + `(modify-phases ,phases + (add-after 'pre-configure 'remove-lgcc_s + (lambda _ + ;; Remove the '-lgcc_s' added to GNU_USER_TARGET_LIB_SPEC in + ;; the 'pre-configure phase of our main gcc package, because + ;; that shared library is not present in this static gcc. See + ;; <https://lists.gnu.org/archive/html/guix-devel/2015-01/msg00008.html>. + (substitute* (cons "gcc/config/rs6000/sysv4.h" + (find-files "gcc/config" + "^gnu-user.*\\.h$")) + ((" -lgcc_s}}") "}}")) + #t)))))) (inputs `(("zlib:static" ,zlib "static") - ,@(package-inputs gcc))) + ("isl:static" ,isl-0.18 "static") + ,@(package-inputs gcc-5))) (native-inputs (if (%current-target-system) `(;; When doing a Canadian cross, we need GMP/MPFR/MPC both @@ -548,12 +529,12 @@ for `sh' in $PATH, and without nscd, and with static NSS modules." ("gmp-native" ,gmp) ("mpfr-native" ,mpfr) ("mpc-native" ,mpc) - ,@(package-native-inputs gcc)) - (package-native-inputs gcc)))))) + ,@(package-native-inputs gcc-5)) + (package-native-inputs gcc-5)))))) (define %gcc-stripped ;; The subset of GCC files needed for bootstrap. - (package (inherit gcc) + (package (inherit gcc-5) (name "gcc-stripped") (build-system trivial-build-system) (source #f) @@ -566,7 +547,8 @@ for `sh' in $PATH, and without nscd, and with static NSS modules." (srfi srfi-26) (guix build utils)) - (setvbuf (current-output-port) _IOLBF) + (setvbuf (current-output-port) + (cond-expand (guile-2.0 _IOLBF) (else 'line))) (let* ((out (assoc-ref %outputs "out")) (bindir (string-append out "/bin")) (libdir (string-append out "/lib")) @@ -695,95 +677,99 @@ for `sh' in $PATH, and without nscd, and with static NSS modules." #t)))) (inputs `(("mes" ,%mes-minimal))))) +(define* (make-guile-static guile patches) + (package-with-relocatable-glibc + (static-package + (package + (inherit guile) + (source + (origin (inherit (package-source guile)) + (patches (append (map search-patch patches) + (origin-patches (package-source guile)))))) + (name (string-append (package-name guile) "-static")) + (synopsis "Statically-linked and relocatable Guile") + + ;; Remove the 'debug' output (see above for the reason.) + (outputs (delete "debug" (package-outputs guile))) + + (inputs + `(("libunistring:static" ,libunistring "static") + ,@(package-inputs guile))) + + (propagated-inputs + `(("bdw-gc" ,libgc/static-libs) + ,@(alist-delete "bdw-gc" + (package-propagated-inputs guile)))) + (arguments + (substitute-keyword-arguments (package-arguments guile) + ((#:configure-flags flags '()) + ;; When `configure' checks for ltdl availability, it + ;; doesn't try to link using libtool, and thus fails + ;; because of a missing -ldl. Work around that. + ''("LDFLAGS=-ldl")) + ((#:phases phases '%standard-phases) + `(modify-phases ,phases + + ;; Do not record the absolute file name of 'sh' in + ;; (ice-9 popen). This makes 'open-pipe' unusable in + ;; a build chroot ('open-pipe*' is fine) but avoids + ;; keeping a reference to Bash. + (delete 'pre-configure) + + (add-before 'configure 'static-guile + (lambda _ + (substitute* "libguile/Makefile.in" + ;; Create a statically-linked `guile' + ;; executable. + (("^guile_LDFLAGS =") + "guile_LDFLAGS = -all-static") + + ;; Add `-ldl' *after* libguile-2.0.la. + (("^guile_LDADD =(.*)$" _ ldadd) + (string-append "guile_LDADD = " + (string-trim-right ldadd) + " -ldl\n"))))))) + ((#:tests? _ #f) + ;; There are uses of `dynamic-link' in + ;; {foreign,coverage}.test that don't fly here. + #f) + ((#:parallel-build? _ #f) + ;; Work around the fact that the Guile build system is + ;; not deterministic when parallel-build is enabled. + #f))))))) + (define %guile-static ;; A statically-linked Guile that is relocatable--i.e., it can search ;; .scm and .go files relative to its installation directory, rather ;; than in hard-coded configure-time paths. - (let* ((patches (cons* (search-patch "guile-relocatable.patch") - (search-patch "guile-2.2-default-utf8.patch") - (search-patch "guile-linux-syscalls.patch") - (origin-patches (package-source guile-2.2)))) - (source (origin (inherit (package-source guile-2.2)) - (patches patches))) - (guile (package (inherit guile-2.2) - (name (string-append (package-name guile-2.2) "-static")) - (source source) - (synopsis "Statically-linked and relocatable Guile") - - ;; Remove the 'debug' output (see above for the reason.) - (outputs (delete "debug" (package-outputs guile-2.2))) - - (inputs - `(("libunistring:static" ,libunistring "static") - ,@(package-inputs guile-2.2))) - - (propagated-inputs - `(("bdw-gc" ,libgc) - ,@(alist-delete "bdw-gc" - (package-propagated-inputs guile-2.2)))) - (arguments - (substitute-keyword-arguments (package-arguments guile-2.2) - ((#:configure-flags flags '()) - ;; When `configure' checks for ltdl availability, it - ;; doesn't try to link using libtool, and thus fails - ;; because of a missing -ldl. Work around that. - ''("LDFLAGS=-ldl")) - ((#:phases phases '%standard-phases) - `(modify-phases ,phases - - ;; Do not record the absolute file name of 'sh' in - ;; (ice-9 popen). This makes 'open-pipe' unusable in - ;; a build chroot ('open-pipe*' is fine) but avoids - ;; keeping a reference to Bash. - (delete 'pre-configure) - - (add-before 'configure 'static-guile - (lambda _ - (substitute* "libguile/Makefile.in" - ;; Create a statically-linked `guile' - ;; executable. - (("^guile_LDFLAGS =") - "guile_LDFLAGS = -all-static") - - ;; Add `-ldl' *after* libguile-2.2.la. - (("^guile_LDADD =(.*)$" _ ldadd) - (string-append "guile_LDADD = " - (string-trim-right ldadd) - " -ldl\n"))))))) - ((#:tests? _ #f) - ;; There are uses of `dynamic-link' in - ;; {foreign,coverage}.test that don't fly here. - #f) - ((#:parallel-build? _ #f) - ;; Work around the fact that the Guile build system is - ;; not deterministic when parallel-build is enabled. - #f)))))) - (package-with-relocatable-glibc (static-package guile)))) + (make-guile-static guile-2.0 '("guile-relocatable.patch" + "guile-default-utf8.patch" + "guile-linux-syscalls.patch"))) -(define %guile-static-stripped - ;; A stripped static Guile binary, for use during bootstrap. - (package (inherit %guile-static) - (name "guile-static-stripped") +(define* (make-guile-static-stripped static-guile) + (package + (inherit static-guile) + (name (string-append (package-name static-guile) "-stripped")) (build-system trivial-build-system) (arguments ;; The end result should depend on nothing but itself. `(#:allowed-references ("out") #:modules ((guix build utils)) #:builder - (let () + (let ((version ,(version-major+minor (package-version static-guile)))) (use-modules (guix build utils)) (let* ((in (assoc-ref %build-inputs "guile")) (out (assoc-ref %outputs "out")) (guile1 (string-append in "/bin/guile")) (guile2 (string-append out "/bin/guile"))) - (mkdir-p (string-append out "/share/guile/2.2")) - (copy-recursively (string-append in "/share/guile/2.2") - (string-append out "/share/guile/2.2")) + (mkdir-p (string-append out "/share/guile/" version)) + (copy-recursively (string-append in "/share/guile/" version) + (string-append out "/share/guile/" version)) - (mkdir-p (string-append out "/lib/guile/2.2/ccache")) - (copy-recursively (string-append in "/lib/guile/2.2/ccache") - (string-append out "/lib/guile/2.2/ccache")) + (mkdir-p (string-append out "/lib/guile/" version "/ccache")) + (copy-recursively (string-append in "/lib/guile/" version "/ccache") + (string-append out "/lib/guile/" version "/ccache")) (mkdir (string-append out "/bin")) (copy-file guile1 guile2) @@ -804,10 +790,22 @@ for `sh' in $PATH, and without nscd, and with static NSS modules." '((invoke guile2 "--version"))) #t)))) - (inputs `(("guile" ,%guile-static))) + (inputs `(("guile" ,static-guile))) (outputs '("out")) (synopsis "Minimal statically-linked and relocatable Guile"))) +(define %guile-static-stripped + ;; A stripped static Guile binary, for use during bootstrap. + (make-guile-static-stripped %guile-static)) + +(define %guile-3.0-static-stripped + ;; A stripped static Guile 3.0 binary, for use in initrds. + (make-guile-static-stripped + (make-guile-static guile-3.0 + '("guile-2.2-default-utf8.patch" + "guile-3.0-linux-syscalls.patch" + "guile-3.0-relocatable.patch")))) + (define (tarball-package pkg) "Return a package containing a tarball of PKG." (package (inherit pkg) @@ -890,7 +888,8 @@ for `sh' in $PATH, and without nscd, and with static NSS modules." (ice-9 match) (srfi srfi-26)) - (setvbuf (current-output-port) _IOLBF) + (setvbuf (current-output-port) + (cond-expand (guile-2.0 _IOLBF) (else 'line))) (mkdir out) (chdir out) (for-each (match-lambda @@ -910,8 +909,8 @@ for `sh' in $PATH, and without nscd, and with static NSS modules." ,%linux-libre-headers-bootstrap-tarball))) (_ `(("gcc-tarball" ,%gcc-bootstrap-tarball) ("binutils-tarball" ,%binutils-bootstrap-tarball) - ("glibc-tarball" ,(%glibc-bootstrap-tarball))))) - ("coreutils&co-tarball" ,%bootstrap-binaries-tarball))) + ("glibc-tarball" ,(%glibc-bootstrap-tarball)) + ("coreutils&co-tarball" ,%bootstrap-binaries-tarball)))))) (synopsis "Tarballs containing all the bootstrap binaries") (description synopsis) (home-page #f) diff --git a/gnu/packages/man.scm b/gnu/packages/man.scm index ae795ecba6..4dfac4f87b 100644 --- a/gnu/packages/man.scm +++ b/gnu/packages/man.scm @@ -200,7 +200,7 @@ Linux kernel and C library interfaces employed by user-space programs.") (define-public help2man (package (name "help2man") - (version "1.47.10") + (version "1.47.13") (source (origin (method url-fetch) @@ -208,7 +208,7 @@ Linux kernel and C library interfaces employed by user-space programs.") version ".tar.xz")) (sha256 (base32 - "1yywli520246aba12vpgj7bhr1r13swad3xm49a0cygqcgywnwgk")))) + "08q5arxz4j4pyx5q4712c2rn7p7dw7as9xg38yvmsh1c3ynvpy5p")))) (build-system gnu-build-system) (arguments `(;; There's no `check' target. #:tests? #f)) @@ -218,6 +218,8 @@ Linux kernel and C library interfaces employed by user-space programs.") ;; ("perl-LocaleGettext" ,perl-LocaleGettext) ;; ("gettext" ,gettext-minimal) )) + (native-inputs + `(("perl" ,perl))) (home-page "https://www.gnu.org/software/help2man/") (synopsis "Automatically generate man pages from program --help") (description @@ -226,18 +228,6 @@ Linux kernel and C library interfaces employed by user-space programs.") automatically.") (license gpl3+))) -(define-public help2man/latest - (package - (inherit help2man) - (version "1.47.13") - (source (origin - (method url-fetch) - (uri (string-append "mirror://gnu/help2man/help2man-" - version ".tar.xz")) - (sha256 - (base32 - "08q5arxz4j4pyx5q4712c2rn7p7dw7as9xg38yvmsh1c3ynvpy5p")))))) - (define-public scdoc (package (name "scdoc") diff --git a/gnu/packages/markup.scm b/gnu/packages/markup.scm index c1fc71b0a2..3cd7fb559c 100644 --- a/gnu/packages/markup.scm +++ b/gnu/packages/markup.scm @@ -2,8 +2,9 @@ ;;; Copyright © 2015 Mathieu Lirzin <mthl@openmailbox.org> ;;; Copyright © 2015 David Thompson <davet@gnu.org> ;;; Copyright © 2016, 2019 Efraim Flashner <efraim@flashner.co.il> -;;; Copyright © 2017 ng0 <ng0@n0.is> +;;; Copyright © 2017 Nikita <nikita@n0.is> ;;; Copyright © 2017, 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr> +;;; Copyright © 2020 Marius Bakke <mbakke@fastmail.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -205,7 +206,16 @@ implementation. (file-name (git-file-name name version)) (sha256 (base32 - "0r7jpqhgnssq444i8pwji2g36058vfzwkl70wbiwj13h4w5rfc8f")))) + "0r7jpqhgnssq444i8pwji2g36058vfzwkl70wbiwj13h4w5rfc8f")) + (modules '((guix build utils))) + (snippet + '(begin + ;; Mimic upstream commit 68c3a91166347 to fix a test failure + ;; when using Python 3.8. Remove for versions > 0.29. + ;; See <https://github.com/commonmark/cmark/issues/313>. + (substitute* "test/normalize.py" + (("cgi") "html")) + #t)))) (build-system cmake-build-system) (arguments '(#:test-target "test")) diff --git a/gnu/packages/mate.scm b/gnu/packages/mate.scm index f5d0b834b6..8b548b5d8e 100644 --- a/gnu/packages/mate.scm +++ b/gnu/packages/mate.scm @@ -1,7 +1,7 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2016 Fabian Harfert <fhmgufs@web.de> ;;; Copyright © 2016, 2017 Efraim Flashner <efraim@flashner.co.il> -;;; Copyright © 2017 ng0 <ng0@n0.is> +;;; Copyright © 2017 Nikita <nikita@n0.is> ;;; Copyright © 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2019, 2020 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2019 Guy Fleury Iteriteka <hoonandon@gmail.com> @@ -548,7 +548,7 @@ assorted menu related utility programs.") `(("pkg-config" ,pkg-config) ("intltool" ,intltool) ("libxslt" ,libxslt) - ("yelp-tools" ,yelp-tools/fixed) + ("yelp-tools" ,yelp-tools) ("scrollkeeper" ,scrollkeeper) ("gettext" ,gettext-minimal) ("docbook-xml" ,docbook-xml) @@ -792,7 +792,7 @@ infamous 'Wanda the Fish'.") ("libice" ,libice) ("libsm" ,libsm) ("libgxps" ,libgxps) - ("libjpeg" ,libjpeg) + ("libjpeg" ,libjpeg-turbo) ("libxml2" ,libxml2) ("dogtail" ,python2-dogtail) ("shared-mime-info" ,shared-mime-info) @@ -1277,7 +1277,7 @@ can be used as backgrounds in the MATE Desktop environment.") ("pkg-config" ,pkg-config) ("scrollkeeper" ,scrollkeeper) ("xorgproto" ,xorgproto) - ("yelp-tools" ,yelp-tools/fixed))) + ("yelp-tools" ,yelp-tools))) (inputs `(("atk" ,atk) ("cairo" ,cairo) @@ -1344,7 +1344,7 @@ can be used as backgrounds in the MATE Desktop environment.") ("libpeas" ,libpeas) ("libxml2" ,libxml2) ("libexif" ,libexif) - ("libjpeg" ,libjpeg) + ("libjpeg" ,libjpeg-turbo) ("librsvg" ,librsvg) ("lcms" ,lcms) ("mate-desktop" ,mate-desktop) diff --git a/gnu/packages/maths.scm b/gnu/packages/maths.scm index d7ce900682..d60c033dbc 100644 --- a/gnu/packages/maths.scm +++ b/gnu/packages/maths.scm @@ -12,11 +12,11 @@ ;;; Copyright © 2015 Fabian Harfert <fhmgufs@web.de> ;;; Copyright © 2016 Roel Janssen <roel@gnu.org> ;;; Copyright © 2016, 2018, 2020 Kei Kebreau <kkebreau@posteo.net> -;;; Copyright © 2016, 2017, 2018, 2019 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2016, 2017, 2018, 2019, 2020 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2016 Leo Famulari <leo@famulari.name> ;;; Copyright © 2016, 2017 Thomas Danckaert <post@thomasdanckaert.be> ;;; Copyright © 2017, 2018, 2019, 2020 Paul Garlick <pgarlick@tourbillion-technology.com> -;;; Copyright © 2017 ng0 <ng0@n0.is> +;;; Copyright © 2017 Nikita <nikita@n0.is> ;;; Copyright © 2017 Ben Woodcroft <donttrustben@gmail.com> ;;; Copyright © 2017 Theodoros Foradis <theodoros@foradis.org> ;;; Copyright © 2017, 2019 Arun Isaac <arunisaac@systemreboot.net> @@ -26,7 +26,7 @@ ;;; Copyright © 2018 Joshua Sierles, Nextjournal <joshua@nextjournal.com> ;;; Copyright © 2018 Nadya Voronova <voronovank@gmail.com> ;;; Copyright © 2018 Adam Massmann <massmannak@gmail.com> -;;; Copyright © 2018 Marius Bakke <mbakke@fastmail.com> +;;; Copyright © 2018, 2020 Marius Bakke <mbakke@fastmail.com> ;;; Copyright © 2018 Eric Brown <brown@fastmail.com> ;;; Copyright © 2018 Julien Lepiller <julien@lepiller.eu> ;;; Copyright © 2018 Amin Bandali <bandali@gnu.org> @@ -460,23 +460,45 @@ precision floating point numbers.") (define-public gsl (package (name "gsl") - (version "2.5") + (version "2.6") (source (origin (method url-fetch) (uri (string-append "mirror://gnu/gsl/gsl-" version ".tar.gz")) (sha256 (base32 - "1395y9hlhqadn5g9j8q22224fds5sd92jxi9czfavjj24myasq04")) - (patches (search-patches "gsl-test-i686.patch")))) + "1a460zj9xmbgvcymkdhqh313c4l29mn9cffbi5vf33x3qygk70mp")))) (build-system gnu-build-system) (arguments - `(;; Currently there are numerous tests that fail on "exotic" - ;; architectures such as aarch64 and ppc64le. - ,@(if (string-prefix? "aarch64-linux" - (or (%current-target-system) (%current-system))) - '(#:tests? #f) - '()))) + (let ((system (%current-system))) + (cond + ((string-prefix? "aarch64" system) + ;; Some sparse matrix tests are failing on AArch64: + ;; https://lists.gnu.org/archive/html/bug-gsl/2020-04/msg00001.html + '(#:phases (modify-phases %standard-phases + (add-before 'check 'disable-failing-tests + (lambda _ + (substitute* "spmatrix/test.c" + ((".*test_complex.*") "\n")) + #t))))) + ((string-prefix? "i686" system) + ;; There are rounding issues with these tests on i686: + ;; https://lists.gnu.org/archive/html/bug-gsl/2016-10/msg00000.html + ;; https://lists.gnu.org/archive/html/bug-gsl/2020-04/msg00000.html + '(#:phases (modify-phases %standard-phases + (add-before 'check 'disable-failing-tests + (lambda _ + (substitute* "linalg/test.c" + ((".*gsl_test\\(test_LU_decomp.*") "\n") + ((".*gsl_test\\(test_LUc_decomp.*") "\n") + ((".*gsl_test\\(test_cholesky_decomp.*") "\n") + ((".*gsl_test\\(test_COD_lssolve2.*") "\n")) + (substitute* "spmatrix/test.c" + ((".*test_all.*") "\n") + ((".*test_float.*") "\n") + ((".*test_complex.*") "\n")) + #t))))) + (else '())))) (home-page "https://www.gnu.org/software/gsl/") (synopsis "Numerical library for C and C++") (description @@ -856,7 +878,7 @@ computations.") ("flex" ,flex))) (inputs `(("zlib" ,zlib) - ("libjpeg" ,libjpeg) + ("libjpeg" ,libjpeg-turbo) ("libtirpc" ,libtirpc))) (arguments `(#:parallel-tests? #f @@ -1096,7 +1118,7 @@ extremely large and complex data collections.") `(("hdf4" ,hdf4) ("hdf5" ,hdf5) ("zlib" ,zlib) - ("libjpeg" ,libjpeg) + ("libjpeg" ,libjpeg-turbo) ("slf4j-api" ,java-slf4j-api))) (arguments `(#:configure-flags @@ -1213,7 +1235,7 @@ implemented in C.") `(("hdf4" ,hdf4-alt) ; assume most HDF-EOS2 users won't use the HDF4 netCDF API ;; XXX: These inputs are really dependencies of hdf4. ("zlib" ,zlib) - ("libjpeg" ,libjpeg) + ("libjpeg" ,libjpeg-turbo) ("libtirpc" ,libtirpc) ("gctp" ,gctp))) @@ -1412,7 +1434,7 @@ similar to MATLAB, GNU Octave or SciPy.") `(("hdf4" ,hdf4-alt) ("hdf5" ,hdf5) ("zlib" ,zlib) - ("libjpeg" ,libjpeg))) + ("libjpeg" ,libjpeg-turbo))) (arguments `(#:configure-flags '("--enable-doxygen" "--enable-dot" "--enable-hdf4") @@ -1685,6 +1707,12 @@ can solve two kinds of problems: ("glpk" ,glpk) ("glu" ,glu) ("graphicsmagick" ,graphicsmagick) + + ;; TODO: libjpeg-turbo is indirectly required through libtiff. In + ;; the next rebuild cycle, add an absolute reference for -ljpeg in + ;; libtiff.la instead of having to provide it here. + ("libjpeg" ,libjpeg-turbo) + ("hdf5" ,hdf5) ("lapack" ,lapack) ("libsndfile" ,libsndfile) @@ -1723,7 +1751,12 @@ can solve two kinds of problems: `(#:configure-flags (list (string-append "--with-shell=" (assoc-ref %build-inputs "bash") - "/bin/sh")) + "/bin/sh") + + ;; XXX: Without this flag, linking octave-cli fails with + ;; undefined references to 'logf@GLIBCXX_3.4' et.al. due to + ;; not pulling in liboctinterp.la for -lstdc++. + "--enable-link-all-dependencies") #:phases (modify-phases %standard-phases (add-after 'configure 'configure-makeinfo @@ -3282,7 +3315,7 @@ parts of it.") (define-public openblas (package (name "openblas") - (version "0.3.7") + (version "0.3.9") (source (origin (method url-fetch) @@ -3291,7 +3324,7 @@ parts of it.") (file-name (string-append name "-" version ".tar.gz")) (sha256 (base32 - "0jbdjsi0qsxahdcm42agnn1y7xpmg0hrhwjsxg0zbhs9wwy3p568")))) + "14iz9xnrb9xiwgj84j94mc74gg0zn2vsy9fmsijxxma1n7dck4w3")))) (build-system gnu-build-system) (arguments `(#:test-target "test" @@ -3727,16 +3760,43 @@ Failure to do so will result in a library with poor performance.") (define-public glm (package (name "glm") - (version "0.9.9.6") + (version "0.9.9.8") (source (origin (method url-fetch) (uri (string-append "https://github.com/g-truc/glm/releases/download/" version "/glm-" version ".zip")) (sha256 - (base32 "1l0pi1qi37mk6s0yrkrw07lspv4gcqnr9ryg3521hrl77ff37dwx")) - (patches (search-patches "glm-restore-install-target.patch")))) + (base32 "0k6yk9v46h690rshdx49x98y5qspkzibld1wb51jwcm35vba7qip")))) (build-system cmake-build-system) + (arguments + `(#:phases (modify-phases %standard-phases + (replace 'install + (lambda* (#:key outputs #:allow-other-keys) + ;; Since version 0.9.9.6, 'make install' is not supported + ;; and we have to do it "manually". Upstream discussion: + ;; <https://github.com/g-truc/glm/pull/968>. + (let* ((source (string-append "../glm")) + (out (assoc-ref outputs "out")) + (inc (string-append out "/include")) + (lib (string-append out "/lib")) + (pkgconfig (string-append lib "/pkgconfig"))) + (with-directory-excursion source + (mkdir-p inc) + (mkdir-p pkgconfig) + (copy-recursively "glm" (string-append inc "/glm")) + (copy-recursively "cmake" (string-append lib "/cmake")) + (call-with-output-file (string-append pkgconfig "/glm.pc") + (lambda (port) + (format port + "prefix=~a +includedir=${prefix}/include + +Name: GLM +Description: OpenGL Mathematics +Version: ~a +Cflags: -I${includedir}~%" out ,(version-prefix version 3))))) + #t)))))) (native-inputs `(("unzip" ,unzip))) (home-page "https://glm.g-truc.net/") @@ -3893,26 +3953,28 @@ in finite element programs.") (define-public flann (package (name "flann") - (version "1.8.4") + (version "1.9.1") + (home-page "https://github.com/mariusmuja/flann/") (source (origin - (method url-fetch) - (uri - (string-append - "http://www.cs.ubc.ca/research/flann/uploads/FLANN/flann-" - version "-src.zip")) + (method git-fetch) + (uri (git-reference (url home-page) (commit version))) + (file-name (git-file-name name version)) (sha256 (base32 - "022w8hph7bli5zbpnk3z1qh1c2sl5hm8fw2ccim651ynn0hr7fyz")) + "0p56fl2yx1r86ds1mgjq40926jdcgq3hka7p3l1hv2acv9jxp15x")) (patches (search-patches "flann-cmake-3.11.patch")))) (build-system cmake-build-system) - (outputs '("out" - "octave")) ;46 MiB .mex file that pulls Octave + (outputs '("out")) (native-inputs `(("unzip" ,unzip))) (inputs `(("hdf5" ,hdf5) - ("octave" ,octave-cli) + ;; FIXME: 'mkoctfile' fails with a linker error: + ;; ld: cannot find -loctinterp + ;; ld: cannot find -loctave + ;; Disable it for now. + ;;("octave" ,octave-cli) ("python" ,python-2) ; print syntax ;; ("python2-numpy" ,python2-numpy) ; only required for the tests ("zlib" ,zlib))) @@ -3925,14 +3987,6 @@ in finite element programs.") ;; Save 12 MiB by not installing .a files. Passing ;; '-DBUILD_STATIC_LIBS=OFF' has no effect. #:phases (modify-phases %standard-phases - (add-before 'configure 'set-octave-directory - (lambda* (#:key outputs #:allow-other-keys) - ;; Install the .mex file in the "octave" output. - (let ((out (assoc-ref outputs "octave"))) - (substitute* "src/matlab/CMakeLists.txt" - (("share/flann/octave") - (string-append out "/share/flann/octave"))) - #t))) (add-after 'install 'remove-static-libraries (lambda* (#:key outputs #:allow-other-keys) (let* ((out (assoc-ref outputs "out")) @@ -3942,7 +3996,6 @@ in finite element programs.") #t)))) #:tests? #f)) ; The test data are downloaded from the Internet. - (home-page "http://www.cs.ubc.ca/research/flann/") (synopsis "Library for approximate nearest neighbors computation") (description "FLANN is a library for performing fast approximate nearest neighbor searches in high dimensional spaces. It implements a @@ -4872,6 +4925,18 @@ This package contains the basic DUNE grid classes.") (arguments `(#:phases (modify-phases %standard-phases + ;; XXX: istl/test/matrixtest.cc includes <fenv.h> and fails to find + ;; the stdlib types when the gfortran header is used. Remove gfortran + ;; from CPLUS_INCLUDE_PATH as a workaround. + (add-after 'set-paths 'hide-gfortran + (lambda* (#:key inputs #:allow-other-keys) + (let ((gfortran (assoc-ref inputs "gfortran"))) + (setenv "CPLUS_INCLUDE_PATH" + (string-join + (delete (string-append gfortran "/include/c++") + (string-split (getenv "CPLUS_INCLUDE_PATH") #\:)) + ":")) + #t))) (add-after 'build 'build-tests (lambda* (#:key make-flags #:allow-other-keys) (apply invoke "make" "build_tests" make-flags)))))) @@ -4918,6 +4983,18 @@ aggregation-based algebraic multigrid.") (arguments `(#:phases (modify-phases %standard-phases + ;; XXX: localfunctions/test/lagrangeshapefunctiontest.cc includes <fenv.h> + ;; and fails to find the stdlib types when the gfortran header is used. + ;; Hide gfortran from CPLUS_INCLUDE_PATH to ensure we get the GCC header. + (add-after 'set-paths 'hide-gfortran + (lambda* (#:key inputs #:allow-other-keys) + (let ((gfortran (assoc-ref inputs "gfortran"))) + (setenv "CPLUS_INCLUDE_PATH" + (string-join + (delete (string-append gfortran "/include/c++") + (string-split (getenv "CPLUS_INCLUDE_PATH") #\:)) + ":")) + #t))) (add-after 'build 'build-tests (lambda* (#:key make-flags #:allow-other-keys) (apply invoke "make" "build_tests" make-flags)))))) diff --git a/gnu/packages/mc.scm b/gnu/packages/mc.scm index 76bf77d1c8..8ff4759127 100644 --- a/gnu/packages/mc.scm +++ b/gnu/packages/mc.scm @@ -1,7 +1,7 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2014 Eric Bavier <bavier@member.fsf.org> ;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il> -;;; Copyright © 2016, 2017 ng0 <ng0@n0.is> +;;; Copyright © 2016, 2017 Nikita <nikita@n0.is> ;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr> ;;; ;;; This file is part of GNU Guix. diff --git a/gnu/packages/messaging.scm b/gnu/packages/messaging.scm index c6217a95de..0ba166b591 100644 --- a/gnu/packages/messaging.scm +++ b/gnu/packages/messaging.scm @@ -5,7 +5,7 @@ ;;; Copyright © 2015 Andreas Enge <andreas@enge.fr> ;;; Copyright © 2015, 2016, 2017, 2018, 2019 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2015, 2018, 2019 Efraim Flashner <efraim@flashner.co.il> -;;; Copyright © 2016, 2017 ng0 <ng0@n0.is> +;;; Copyright © 2016, 2017 Nikita <nikita@n0.is> ;;; Copyright © 2016 Andy Patterson <ajpatter@uwaterloo.ca> ;;; Copyright © 2016, 2017, 2018, 2019 Clément Lassieur <clement@lassieur.org> ;;; Copyright © 2017 Mekeor Melire <mekeor.melire@gmail.com> @@ -20,6 +20,7 @@ ;;; Copyright © 2019, 2020 Timotej Lazar <timotej.lazar@araneo.si> ;;; Copyright © 2020 Nicolò Balzarotti <nicolo@nixo.xyz> ;;; Copyright © 2020 Vincent Legoll <vincent.legoll@gmail.com> +;;; Copyright © 2020 Marius Bakke <mbakke@fastmail.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -266,6 +267,51 @@ access to servers running the Discord protocol.") (home-page "https://github.com/sm00th/bitlbee-discord/") (license license:gpl2+))) +(define-public purple-mattermost + (package + (name "purple-mattermost") + (version "1.2") + (home-page "https://github.com/EionRobb/purple-mattermost") + (source (origin + (method git-fetch) + (uri (git-reference (url home-page) + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0fm49iv58l09qpy8vkca3am642fxiwcrrh6ykimyc2mas210b5g2")))) + (build-system gnu-build-system) + (arguments + `(#:phases (modify-phases %standard-phases + (replace 'configure + (lambda* (#:key inputs outputs #:allow-other-keys) + ;; Adjust the makefile to install files in the right + ;; place. + (let ((out (assoc-ref outputs "out"))) + (substitute* "Makefile" + (("MATTERMOST_DEST = .*") + (string-append "MATTERMOST_DEST = " out + "/lib/purple-2\n")) ;XXX: hardcoded + (("MATTERMOST_ICONS_DEST = .*") + (string-append "MATTERMOST_ICONS_DEST = " + out + "/share/pixmaps/pidgin/protocols\n"))) + #t)))) + #:make-flags (list "CC=gcc" + ,(string-append "PLUGIN_VERSION=" version)) + #:tests? #f)) + (inputs `(("glib" ,glib) + ("json-glib" ,json-glib) + ("discount" ,discount) + ("pidgin" ,pidgin))) + (native-inputs `(("pkg-config" ,pkg-config))) + (synopsis "Purple plug-in to access Mattermost instant messaging") + (description + "Purple-Mattermost is a plug-in for Purple, the instant messaging library +used by Pidgin and Bitlbee, among others, to access +@uref{https://mattermost.com/, Mattermost} servers.") + (license license:gpl3+))) + (define-public hexchat (package (name "hexchat") @@ -505,14 +551,14 @@ compromised.") (define-public znc (package (name "znc") - (version "1.7.5") + (version "1.8.0") (source (origin (method url-fetch) (uri (string-append "http://znc.in/releases/archive/znc-" version ".tar.gz")) (sha256 (base32 - "08a7yb2xs85hyyz8dpzfbsfjwj2r6kcii022lj3l4rf8hl9ix558")))) + "0m5xf60r40pgbg9lyk56dafxj2hj149pn2wf8vzsp8xgq4kv5zcl")))) (build-system cmake-build-system) (arguments `(#:configure-flags @@ -759,7 +805,7 @@ on Axolotl and PEP.") ("libgcrypt" ,libgcrypt) ("libsoup" ,libsoup) ("qrencode" ,qrencode) - ("sqlite" ,sqlite-with-column-metadata) + ("sqlite" ,sqlite) ("gpgme" ,gpgme) ("gtk+" ,gtk+) ("glib-networking" ,glib-networking) @@ -1723,6 +1769,12 @@ building the IRC clients and bots.") (delete 'configure) (add-before 'build 'enable-python-scripting (lambda _ + ;; XXX: For compatibility with Python 3.8, adjust python3-config + ;; invokation to include --embed; see + ;; <https://github.com/JFreegman/toxic/issues/533>. + (substitute* "cfg/checks/python.mk" + (("python3-config --ldflags") + "python3-config --ldflags --embed")) (setenv "ENABLE_PYTHON" "1") #t))))) (inputs diff --git a/gnu/packages/monitoring.scm b/gnu/packages/monitoring.scm index 8da31d6a84..d88bbc3aa3 100644 --- a/gnu/packages/monitoring.scm +++ b/gnu/packages/monitoring.scm @@ -6,6 +6,7 @@ ;;; Copyright © 2018 Gábor Boskovits <boskovits@gmail.com> ;;; Copyright © 2018, 2019 Oleg Pykhalov <go.wigust@gmail.com> ;;; Copyright © 2020 Alex ter Weele <alex.ter.weele@gmail.com> +;;; Copyright © 2020 Lars-Dominik Braun <ldb@leibniz-psychology.org> ;;; ;;; This file is part of GNU Guix. ;;; @@ -32,6 +33,7 @@ #:use-module (guix build-system gnu) #:use-module (guix build-system go) #:use-module (guix utils) + #:use-module (gnu packages) #:use-module (gnu packages admin) #:use-module (gnu packages autotools) #:use-module (gnu packages base) @@ -48,11 +50,14 @@ #:use-module (gnu packages libevent) #:use-module (gnu packages pcre) #:use-module (gnu packages perl) + #:use-module (gnu packages pkg-config) #:use-module (gnu packages python) #:use-module (gnu packages python-web) #:use-module (gnu packages python-xyz) + #:use-module (gnu packages rrdtool) #:use-module (gnu packages time) - #:use-module (gnu packages tls)) + #:use-module (gnu packages tls) + #:use-module (gnu packages web)) (define-public nagios (package @@ -445,3 +450,47 @@ written in Go with pluggable metric collectors.") (description "This package provides a file system monitor.") (home-page "https://github.com/emcrisostomo/fswatch") (license license:gpl3+))) + +(define-public collectd + (package + (name "collectd") + (version "5.11.0") + (source (origin + (method url-fetch) + (uri (string-append + "https://storage.googleapis.com/collectd-tarballs/collectd-" + version + ".tar.bz2")) + (sha256 + (base32 + "1cjxksxdqcqdccz1nbnc2fp6yy84qq361ynaq5q8bailds00mc9p")) + (patches (search-patches "collectd-5.11.0-noinstallvar.patch")))) + (build-system gnu-build-system) + (arguments + `(#:configure-flags (list "--localstatedir=/var" "--sysconfdir=/etc") + #:phases (modify-phases %standard-phases + (add-before 'configure 'autoreconf + (lambda _ + ;; Required because of patched sources. + (invoke "autoreconf" "-vfi")))))) + (inputs + `(("rrdtool" ,rrdtool) + ("curl" ,curl) + ("libyajl" ,libyajl))) + (native-inputs + `(("autoconf" ,autoconf) + ("automake" ,automake) + ("libtool" ,libtool) + ("pkg-config" ,pkg-config))) + (home-page "https://collectd.org/") + (synopsis "Collect system and application performance metrics periodically") + (description + "collectd gathers metrics from various sources such as the operating system, +applications, log files and external devices, and stores this information or +makes it available over the network. Those statistics can be used to monitor +systems, find performance bottlenecks (i.e., performance analysis) and predict +future system load (i.e., capacity planning).") + ;; license:expat for the daemon in src/daemon/ and some plugins, + ;; license:gpl2 for other plugins + (license (list license:expat license:gpl2)))) + diff --git a/gnu/packages/mono.scm b/gnu/packages/mono.scm index 5447dd2300..a01b63f08a 100644 --- a/gnu/packages/mono.scm +++ b/gnu/packages/mono.scm @@ -153,7 +153,7 @@ Java.") ("cairo" ,cairo) ("fontconfig" ,fontconfig) ("libtiff" ,libtiff) - ("libjpeg" ,libjpeg) + ("libjpeg" ,libjpeg-turbo) ("libexif" ,libexif) ("libungif" ,libungif))) (arguments diff --git a/gnu/packages/mpd.scm b/gnu/packages/mpd.scm index 303af32983..755fa5d482 100644 --- a/gnu/packages/mpd.scm +++ b/gnu/packages/mpd.scm @@ -92,7 +92,7 @@ interfacing MPD in the C, C++ & Objective C languages.") (define-public mpd (package (name "mpd") - (version "0.21.22") + (version "0.21.23") (source (origin (method url-fetch) (uri @@ -101,7 +101,7 @@ interfacing MPD in the C, C++ & Objective C languages.") "/mpd-" version ".tar.xz")) (sha256 (base32 - "18lvyv3crijki5nxjdhf1byayyavdvj07dk6rm856n4vi78qfmjn")))) + "18q72b9baj5cdpq0yn60qm7q4g8vwqqyqndl9xg3f3w0m4n557s3")))) (build-system meson-build-system) (arguments `(#:configure-flags '("-Ddocumentation=true"))) ;the default is 'false'... diff --git a/gnu/packages/multiprecision.scm b/gnu/packages/multiprecision.scm index 9a0b042dc0..2848e63d60 100644 --- a/gnu/packages/multiprecision.scm +++ b/gnu/packages/multiprecision.scm @@ -37,7 +37,7 @@ (define-public gmp (package (name "gmp") - (version "6.1.2") + (version "6.2.0") (source (origin (method url-fetch) (uri @@ -45,7 +45,7 @@ version ".tar.xz")) (sha256 (base32 - "04hrwahdxyqdik559604r7wrj9ffklwvipgfxgj4ys4skbl6bdc7")) + "09hmg8k63mbfrx1x3yy6y1yzbbq85kw5avbibhcgrg9z3ganr3i5")) (patches (search-patches "gmp-faulty-test.patch")))) (build-system gnu-build-system) (native-inputs `(("m4" ,m4))) diff --git a/gnu/packages/music.scm b/gnu/packages/music.scm index 589f158afe..9a55f0db3a 100644 --- a/gnu/packages/music.scm +++ b/gnu/packages/music.scm @@ -8,7 +8,7 @@ ;;; Copyright © 2016, 2017, 2019 Kei Kebreau <kkebreau@posteo.net> ;;; Copyright © 2016 John J. Foerch <jjfoerch@earthlink.net> ;;; Copyright © 2016 Alex Griffin <a@ajgrf.com> -;;; Copyright © 2017 ng0 <ng0@n0.is> +;;; Copyright © 2017 nikita <nikita@n0.is> ;;; Copyright © 2017 Rodger Fox <thylakoid@openmailbox.org> ;;; Copyright © 2017, 2018, 2019, 2020 Nicolas Goaziou <mail@nicolasgoaziou.fr> ;;; Copyright © 2017, 2018, 2019 Pierre Langlois <pierre.langlois@gmx.com> @@ -27,6 +27,7 @@ ;;; Copyright © 2019, 2020 Alexandros Theodotou <alex@zrythm.org> ;;; Copyright © 2020 Vincent Legoll <vincent.legoll@gmail.com> ;;; Copyright © 2020 Lars-Dominik Braun <lars@6xq.net> +;;; Copyright © 2020 Giacomo Leidi <goodoldpaul@autistici.org> ;;; ;;; This file is part of GNU Guix. ;;; @@ -300,7 +301,7 @@ score, keyboard, guitar, drum and controller views.") ("pulseaudio" ,pulseaudio) ("qtbase" ,qtbase) ("qtx11extras" ,qtx11extras) - ("sqlite" ,sqlite-with-column-metadata) + ("sqlite" ,sqlite) ("sparsehash" ,sparsehash) ("taglib" ,taglib))) (home-page "https://clementine-player.org") @@ -625,63 +626,73 @@ MusePack, Monkey's Audio, and WavPack files.") (define-public extempore (package (name "extempore") - (version "0.7.0") + (version "0.8.6") (source (origin (method git-fetch) (uri (git-reference (url "https://github.com/digego/extempore.git") - (commit version))) + (commit (string-append "v" version)))) (sha256 (base32 - "12fsp7zkfxb9kykwq46l88kcbbici9arczrrsl4qn87m6vm5349l")) - (file-name (string-append name "-" version "-checkout")))) + "182jy23qv115dipny7kglwbn21z55dp253w1ykm0kh8n6vkgs7gp")) + (file-name (git-file-name name version)) + (patches (search-patches + "extempore-unbundle-external-dependencies.patch")) + (modules '((guix build utils))) + (snippet + '(begin + ;; Remove bundled sources. + (map delete-file-recursively + '("src/portaudio" + "src/pcre")) + #t)))) (build-system cmake-build-system) (arguments - `(;; The default target also includes ahead-of-time compilation of the - ;; standard libraries. However, during the "install" phase this would - ;; happen *again* for unknown reasons. Hence we only build the - ;; extempore executable during the build phase. - #:make-flags '("extempore") - #:configure-flags '("-DJACK=ON" - ;; We want to distribute. - "-DIN_TREE=OFF" - ;; Don't download any dependencies. - "-DBUILD_DEPS=OFF") + `(#:configure-flags (list "-DJACK=ON" + "-DPACKAGE=ON" + "-DEXTERNAL_SHLIBS_AUDIO=OFF" + "-DEXTERNAL_SHLIBS_GRAPHICS=OFF" + "-DCMAKE_BUILD_TYPE=Release" + (string-append "-DEXT_SHARE_DIR=" + (assoc-ref %outputs "out") + "/share")) #:modules ((ice-9 match) (guix build cmake-build-system) (guix build utils)) #:phases (modify-phases %standard-phases + (add-after 'build 'build-aot-libs + (lambda _ + (for-each (lambda (target) + (invoke "make" target)) + '("aot_base" + "aot_math" + "aot_instruments")) + #t)) + (add-after 'unpack 'patch-install-locations + (lambda* (#:key outputs #:allow-other-keys) + (substitute* "CMakeLists.txt" + (("EXT_SHARE_DIR=\"\\.\"\\)") + "EXT_SHARE_DIR=\"${EXT_SHARE_DIR}/extempore\")") + (("DESTINATION \"\\.\"\\)") "DESTINATION bin)") + (("DESTINATION \"\\.\"\n") "DESTINATION share/extempore\n")) + #t)) (add-after 'unpack 'patch-directories (lambda* (#:key outputs #:allow-other-keys) - ;; Rewrite default path to runtime directory - (substitute* "src/Extempore.cpp" - (("runtimedir \\+= \"runtime\"") - (string-append "runtimedir = \"" - (assoc-ref outputs "out") - "/lib/extempore/runtime\""))) (substitute* "extras/extempore.el" (("\\(runtime-directory \\(concat default-directory \"runtime\"\\)\\)") (string-append "(runtime-directory \"" (assoc-ref outputs "out") - "/lib/extempore/runtime" + "/share/extempore/runtime" "\")"))) #t)) (add-after 'unpack 'link-with-additional-libs (lambda _ ;; The executable must be linked with libffi and zlib. (substitute* "CMakeLists.txt" - (("add_dependencies\\(aot_extended extended_deps\\)") "") (("target_link_libraries\\(extempore PRIVATE dl" line) (string-append line " ffi z"))) #t)) - ;; FIXME: AOT compilation of the nanovg bindings fail with the error: - ;; "Compiler Error could not bind _nvgLinearGradient" - (add-after 'unpack 'disable-nanovg - (lambda _ - (substitute* "CMakeLists.txt" - (("aotcompile_lib\\(libs/external/nanovg.xtm.*") "")) - #t)) ;; FIXME: All examples that are used as tests segfault for some ;; unknown reason. (add-after 'unpack 'disable-broken-tests @@ -710,20 +721,16 @@ MusePack, Monkey's Audio, and WavPack files.") ("gl/glcompat-directbind" "libGL.so" "mesa"))) #t)) (add-after 'unpack 'use-own-llvm - (lambda* (#:key inputs #:allow-other-keys) - (setenv "EXT_LLVM_DIR" (assoc-ref inputs "llvm")) - ;; Our LLVM builds shared libraries, so Extempore should use - ;; those. - (substitute* "CMakeLists.txt" - (("CMAKE_STATIC_LIBRARY") "CMAKE_SHARED_LIBRARY")) - #t)) + (lambda* (#:key inputs #:allow-other-keys) + (setenv "EXT_LLVM_DIR" (assoc-ref inputs "llvm")) + ;; Our LLVM builds shared libraries, so Extempore should use + ;; those. + (substitute* "CMakeLists.txt" + (("CMAKE_STATIC_LIBRARY") "CMAKE_SHARED_LIBRARY")) + #t)) (add-after 'unpack 'fix-aot-compilation (lambda* (#:key outputs #:allow-other-keys) (substitute* "CMakeLists.txt" - ;; EXT_SHARE_DIR does not exist before installation, so the - ;; working directory should be the source directory instead. - (("WORKING_DIRECTORY \\$\\{EXT_SHARE_DIR\\}") - "WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}") ;; Extempore needs to be told where the runtime is to be found. ;; While we're at it we disable automatic tuning for a specific ;; CPU to make binary substitution possible. @@ -1155,6 +1162,28 @@ complete studio.") with a selectable pattern matrix size.") (license license:gpl3+))) +(define-public bchoppr + (package + (inherit bsequencer) + (name "bchoppr") + (version "1.4.2") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/sjaehn/BChoppr.git") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1ympx0kyn3mkb23xgd44rlrf4qnngnlkmikz9syhayklgax7ijgm")))) + (synopsis "Audio stream-chopping LV2 plugin") + (description "B.Choppr cuts the audio input stream into a repeated +sequence of up to 16 chops. Each chop can be leveled up or down (gating). +B.Choppr is the successor of B.Slizr.") + (home-page "https://github.com/sjaehn/BChoppr") + (license license:gpl3+))) + (define-public solfege (package (name "solfege") @@ -1979,24 +2008,27 @@ using a system-independent interface.") (license license:expat))) (define-public portmidi-for-extempore - (package (inherit portmidi) - (name "portmidi-for-extempore") - (version "217") - (source (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/extemporelang/portmidi.git") - (commit version))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "1inriyrjf7xx2b7r54x0vmf9ngyqgr7g5060c22bwkbsgg53apzv")))) - (build-system cmake-build-system) - (arguments `(#:tests? #f)) ; no tests - (native-inputs '()) - ;; Extempore refuses to build on architectures other than x86_64 - (supported-systems '("x86_64-linux")) - (home-page "https://github.com/extemporelang/portmidi/"))) + (let ((version "217") + (revision "0") + (commit "8602f548f71daf5ef638b2f7d224753400cb2158")) + (package (inherit portmidi) + (name "portmidi-for-extempore") + (version (git-version version revision commit)) + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/extemporelang/portmidi.git") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1qidzl1s3kzhczzm96rcd2ppn27a97k2axgfh1zhvyf0s52d7m4w")))) + (build-system cmake-build-system) + (arguments `(#:tests? #f)) ; no tests + (native-inputs '()) + ;; Extempore refuses to build on architectures other than x86_64 + (supported-systems '("x86_64-linux")) + (home-page "https://github.com/extemporelang/portmidi/")))) (define-public python-pyportmidi (package @@ -2035,7 +2067,7 @@ using a system-independent interface.") (define-public frescobaldi (package (name "frescobaldi") - (version "3.1.1") + (version "3.1.2") (source (origin (method url-fetch) @@ -2043,7 +2075,7 @@ using a system-independent interface.") "https://github.com/wbsoft/frescobaldi/releases/download/v" version "/frescobaldi-" version ".tar.gz")) (sha256 - (base32 "0kfwvgygx2ds01w8g7vzykfrajglmr2brchk9d67ahzijpgvfkj5")))) + (base32 "084vxzvxnxl5rrhllincnh6krsyi03c8p0452ppzmn9c52wgyb2w")))) (build-system python-build-system) (arguments `(#:tests? #f)) ;no tests included @@ -2056,7 +2088,7 @@ using a system-independent interface.") ("python-pyportmidi" ,python-pyportmidi) ("python-pyqt" ,python-pyqt) ("python-sip" ,python-sip))) - (home-page "http://www.frescobaldi.org/") + (home-page "https://www.frescobaldi.org/") (synopsis "LilyPond sheet music text editor") (description "Frescobaldi is a LilyPond sheet music text editor with syntax @@ -2274,7 +2306,7 @@ improves on support for JACK features, such as JACK MIDI.") "1zs5yy124bymfyapsnljr6rv2lnn5inwchm0xnwiw44b2d39l8hn")))) (build-system gnu-build-system) (inputs - `(("libuuid" ,util-linux) + `(("libuuid" ,util-linux "lib") ("libsndfile" ,libsndfile))) (native-inputs `(("pkg-config" ,pkg-config))) diff --git a/gnu/packages/ncurses.scm b/gnu/packages/ncurses.scm index a969f3ffd6..7b2ab991cf 100644 --- a/gnu/packages/ncurses.scm +++ b/gnu/packages/ncurses.scm @@ -2,10 +2,10 @@ ;;; Copyright © 2012, 2013, 2014, 2015, 2017, 2018, 2019 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2014, 2016 Mark H Weaver <mhw@netris.org> ;;; Copyright © 2015, 2017 Leo Famulari <leo@famulari.name> -;;; Copyright © 2016 ng0 <ng0@n0.is> +;;; Copyright © 2016 Nikita <nikita@n0.is> ;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2016 Jan Nieuwenhuizen <janneke@gnu.org> -;;; Copyright © 2017, 2019 Marius Bakke <mbakke@fastmail.com> +;;; Copyright © 2017, 2019, 2020 Marius Bakke <mbakke@fastmail.com> ;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2020 Michael Rohleder <mike@rohleder.de> ;;; @@ -41,7 +41,7 @@ (define-public ncurses (package (name "ncurses") - (version "6.1-20190609") + (version "6.2") (source (origin (method url-fetch) (uri (string-append "mirror://gnu/ncurses/ncurses-" @@ -49,7 +49,7 @@ ".tar.gz")) (sha256 (base32 - "05qdmbmrrn88ii9f66rkcmcyzp1kb1ymkx7g040lfkd1nkp7w1da")))) + "17bcm2z1rdx5gmzj5fb8cp7f28aw5b4g2z4qvvqg3yg0fq66wc1h")))) (build-system gnu-build-system) (outputs '("out" "doc")) ;1 MiB of man pages @@ -185,12 +185,16 @@ ;; around this. ,@(if (%current-target-system) '("--disable-stripping") '()) + ;; Do not assume a default search path in ld, even if it is only to + ;; filter it out in ncurses-config. Mainly because otherwise it ends + ;; up using the libdir from binutils, which makes little sense and + ;; causes an unnecessary runtime dependency. + "cf_cv_ld_searchpath=/no-ld-searchpath" + ;; MinGW: Use term-driver created for the MinGW port. ,@(if (target-mingw?) '("--enable-term-driver") '())))) #:tests? #f ; no "check" target #:phases (modify-phases %standard-phases - (add-after 'unpack 'apply-rollup-patch - ,apply-rollup-patch-phase) (replace 'configure ,configure-phase) (add-after 'install 'post-install ,post-install-phase) @@ -202,18 +206,6 @@ `(,@(if (%current-target-system) `(("self" ,this-package)) ;for `tic' '()) - - ("rollup-patch" - ,(origin - (method url-fetch) - (uri (string-append - "https://invisible-mirror.net/archives/ncurses/" - (car (string-split version #\-)) - "/ncurses-" version "-patch.sh.bz2")) - (sha256 - (base32 - "0hqlqdqmh7lfs6dwj763qksb4j9nk0pv6crzx5gnp6n4caz3i46g")))) - ("pkg-config" ,pkg-config))) (native-search-paths (list (search-path-specification diff --git a/gnu/packages/netpbm.scm b/gnu/packages/netpbm.scm index 126f29f06f..96025661ca 100644 --- a/gnu/packages/netpbm.scm +++ b/gnu/packages/netpbm.scm @@ -102,7 +102,7 @@ (build-system gnu-build-system) (inputs `(("ghostscript" ,ghostscript) - ("libjpeg" ,libjpeg) + ("libjpeg" ,libjpeg-turbo) ("libpng" ,libpng) ("libtiff" ,libtiff) ("libxml2" ,libxml2) diff --git a/gnu/packages/networking.scm b/gnu/packages/networking.scm index 94b521584f..7ae1240e15 100644 --- a/gnu/packages/networking.scm +++ b/gnu/packages/networking.scm @@ -8,7 +8,7 @@ ;;; Copyright © 2016 John Darrington <jmd@gnu.org> ;;; Copyright © 2016, 2017, 2018, 2019, 2020 Nicolas Goaziou <mail@nicolasgoaziou.fr> ;;; Copyright © 2016 Eric Bavier <bavier@member.fsf.org> -;;; Copyright © 2016, 2017 ng0 <ng0@n0.is> +;;; Copyright © 2016, 2017 Nikita <nikita@n0.is> ;;; Copyright © 2016, 2017, 2018 Arun Isaac <arunisaac@systemreboot.net> ;;; Copyright © 2016 Benz Schenk <benz.schenk@uzh.ch> ;;; Copyright © 2016, 2017 Pjotr Prins <pjotr.guix@thebird.nl> @@ -33,7 +33,7 @@ ;;; Copyright © 2019 Brice Waegeneire <brice@waegenei.re> ;;; Copyright © 2019 Tonton <tonton@riseup.net> ;;; Copyright © 2019, 2020 Alex Griffin <a@ajgrf.com> -;;; Copyright © 2019 Jan Wielkiewicz <tona_kosmicznego_smiecia@interia.pl> +;;; Copyright © 2019, 2020 Jan Wielkiewicz <tona_kosmicznego_smiecia@interia.pl> ;;; Copyright © 2019 Daniel Schaefer <git@danielschaefer.me> ;;; Copyright © 2019 Diego N. Barbato <dnbarbato@posteo.de> ;;; Copyright © 2020 Vincent Legoll <vincent.legoll@gmail.com> @@ -72,6 +72,7 @@ #:use-module (gnu packages adns) #:use-module (gnu packages algebra) #:use-module (gnu packages audio) + #:use-module (gnu packages autogen) #:use-module (gnu packages autotools) #:use-module (gnu packages base) #:use-module (gnu packages bison) @@ -113,6 +114,7 @@ #:use-module (gnu packages python-xyz) #:use-module (gnu packages qt) #:use-module (gnu packages readline) + #:use-module (gnu packages samba) #:use-module (gnu packages serialization) #:use-module (gnu packages sqlite) #:use-module (gnu packages ssh) @@ -127,46 +129,110 @@ (define-public blueman (package (name "blueman") - (version "2.1.2") + (version "2.1.3") (source (origin (method url-fetch) - (uri - (string-append "https://github.com/blueman-project/blueman/releases/" - "download/2.1.2/blueman-2.1.2.tar.gz")) + (uri (string-append "https://github.com/blueman-project/blueman/releases" + "/download/" version "/blueman-" version ".tar.xz")) (sha256 - (base32 "0wamxdw36c8i3aqwmja5q70fajqwd7inpkvlpkldd54wdxbcd38d")))) + (base32 "1pngqbwapbvywhkmflapqvs0wa0af7d1a87wy56l5hg2r462xl1v")))) (build-system glib-or-gtk-build-system) (arguments - `(#:configure-flags - (list - "--enable-polkit" - "--disable-appindicator" ; Deprecated - "--with-systemdsystemunitdir=no" ; Not required - "--with-systemduserunitdir=no"))) ; Not required + `(#:configure-flags (list "--enable-polkit" + "--disable-appindicator" ; Not available + "--without-systemdsystemunitdir" ; Not required + "--without-systemduserunitdir") ; Not required + #:phases + (modify-phases %standard-phases + ;; Python references are not being patched in patch-phase of build, + ;; despite using python-wrapper as input. So we patch them manually. + (add-after 'unpack 'patch-python-references + (lambda* (#:key inputs #:allow-other-keys) + (with-directory-excursion "apps" + (substitute* '("blueman-adapters.in" "blueman-applet.in" + "blueman-assistant.in" "blueman-manager.in" + "blueman-mechanism.in" "blueman-report.in" + "blueman-rfcomm-watcher.in" "blueman-sendto.in" + "blueman-services.in" "blueman-tray.in") + (("@PYTHON@") (string-append (assoc-ref inputs "python") + "/bin/python" + ,(version-major+minor + (package-version python)))))) + #t)) + ;; Fix loading of external programs. + (add-after 'unpack 'patch-external-programs + (lambda* (#:key inputs #:allow-other-keys) + (substitute* '("apps/blueman-report.in" "blueman/main/NetConf.py" + "blueman/main/PPPConnection.py") + (("/usr/sbin/bluetoothd") + (string-append (assoc-ref inputs "bluez") + "/libexec/bluetooth/bluetoothd")) + (("/sbin/iptables") + (string-append (assoc-ref inputs "iptables") + "/sbin/iptables")) + (("/usr/sbin/pppd") + (string-append (assoc-ref inputs "ppp") + "/sbin/pppd"))) + #t)) + ;; Fix loading of pulseaudio libraries. + (add-after 'unpack 'patch-pulseaudio-libraries + (lambda* (#:key inputs #:allow-other-keys) + (let* ((pulseaudio (assoc-ref inputs "pulseaudio")) + (pulse (string-append pulseaudio "/lib/libpulse.so.0")) + (pulse-glib (string-append pulseaudio + "/lib/libpulse-mainloop-glib.so.0"))) + (with-directory-excursion "blueman/main" + (substitute* "PulseAudioUtils.py" + (("libpulse.so.0") pulse) + (("libpulse-mainloop-glib.so.0") pulse-glib))) + #t))) + ;; Fix running of blueman programs. + (add-after 'glib-or-gtk-wrap 'wrap-blueman-progs + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (bin (string-append out "/bin/blueman-")) + (libexec (string-append out "/libexec/blueman-")) + (lib (string-append out "/lib/python" + ,(version-major+minor + (package-version python)) + "/site-packages"))) + (for-each + (lambda (program) + (wrap-program program + `("PYTHONPATH" = (,(getenv "PYTHONPATH") ,lib)) + `("GI_TYPELIB_PATH" = (,(getenv "GI_TYPELIB_PATH"))))) + (append + (map (lambda (prog) (string-append bin prog)) + '("adapters" "applet" "assistant" "manager" "report" + "sendto" "services" "tray")) + (map (lambda (prog) (string-append libexec prog)) + '("mechanism" "rfcomm-watcher")))) + #t)))))) (native-inputs `(("cython" ,python-cython) ("glib:bin" ,glib "bin") + ("gobject-introspection" ,gobject-introspection) ("gtk+:bin" ,gtk+ "bin") ("intltool" ,intltool) - ("libtool" ,libtool) ("pkg-config" ,pkg-config))) (inputs - `(("adwaita-icon-theme" ,adwaita-icon-theme) - ("bluez" ,bluez) + `(("bluez" ,bluez) ("dbus" ,dbus) - ("gdkpixbuf" ,gdk-pixbuf) + ("gdkpixbuf" ,gdk-pixbuf+svg) ("glib" ,glib) ("gtk+" ,gtk+) ("iproute2" ,iproute) + ("iptables" ,iptables) ("net-tools" ,net-tools) ("pango" ,pango) ("polkit" ,polkit) + ("ppp" ,ppp) ("pulseaudio" ,pulseaudio) ("pycairo" ,python-pycairo) ("pygobject" ,python-pygobject) ("python" ,python-wrapper) - ("libnm" ,libnma))) + ("libnm" ,network-manager))) (synopsis "GTK+ Bluetooth manager") (description "Blueman is a Bluetooth management utility using the Bluez D-Bus backend. It is designed to be easy to use for most common Bluetooth @@ -426,6 +492,41 @@ between different versions of ØMQ.") files contain direct mappings of the abstractions provided by the ØMQ C API.") (license license:expat))) +(define-public libnatpmp + (package + (name "libnatpmp") + (version "20150609") + (source (origin + (method url-fetch) + (uri (string-append + "http://miniupnp.free.fr/files/" + name "-" version ".tar.gz")) + (sha256 + (base32 + "1c1n8n7mp0amsd6vkz32n8zj3vnsckv308bb7na0dg0r8969rap1")))) + (build-system gnu-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (delete 'configure) + (delete 'check)) ; no tests + #:make-flags + (let* ((target ,(%current-target-system)) + (gcc (if target + (string-append target "-gcc") + "gcc"))) + (list + (string-append "CC=" gcc) + (string-append "INSTALLPREFIX=" (assoc-ref %outputs "out")) + (string-append "LDFLAGS=-Wl,-rpath=" %output "/lib"))))) + (home-page "http://miniupnp.free.fr/libnatpmp.html") + (synopsis "C library implementing NAT-PMP") + (description + "@code{libnatpmp} is a portable and asynchronous implementation of +the Network Address Translation - Port Mapping Protocol (NAT-PMP) +written in the C programming language.") + (license license:bsd-3))) + (define-public librdkafka (package (name "librdkafka") @@ -1031,12 +1132,6 @@ live network and disk I/O bandwidth monitor.") (("/bin/sh") (which "sh"))) #t)) - (replace 'bootstrap - (lambda _ - ;; Patch shebangs in generated files before running - ;; ./configure. - (setenv "NOCONFIGURE" "please") - (invoke "bash" "./autogen.sh"))) (add-after 'build 'absolutize-tools (lambda* (#:key inputs #:allow-other-keys) (let ((ethtool (string-append (assoc-ref inputs "ethtool") @@ -2231,12 +2326,6 @@ remotely.") (base32 "0qz2730bng1gs9xbqxhkw88qbsmszgmmrl2g9k6xrg6r3bqvsdc7")))) (build-system gnu-build-system) - (arguments - `(;; Ensure the kernel headers are treated as system headers to suppress - ;; harmless -Werror=pedantic warnings. - #:make-flags (list (string-append "C_INCLUDE_PATH=" - (assoc-ref %build-inputs "kernel-headers") - "/include")))) (inputs `(("zeromq" ,zeromq) ("czmq" ,czmq) ("libsodium" ,libsodium))) @@ -2501,15 +2590,7 @@ Ethernet and TAP interfaces is supported. Packet capture is also supported.") #:tests? #f ; no test suite #:phases (modify-phases %standard-phases - (delete 'configure) - (add-after 'unpack 'set-environment - (lambda* (#:key inputs #:allow-other-keys) - (setenv "C_INCLUDE_PATH" - (string-append (assoc-ref inputs "curl") "/include:" - (assoc-ref inputs "libpcap") "/include:" - (assoc-ref inputs "openssl") "/include:" - (assoc-ref inputs "zlib") "/include")) - #t))))) + (delete 'configure)))) (home-page "https://github.com/ZerBea/hcxtools") (synopsis "Capture wlan traffic to hashcat and John the Ripper") (description @@ -2633,7 +2714,7 @@ communication over HTTP.") (define-public restinio (package (name "restinio") - (version "0.6.0.1") + (version "0.6.1.1") (source (origin (method git-fetch) (uri (git-reference @@ -2642,7 +2723,7 @@ communication over HTTP.") (file-name (git-file-name name version)) (sha256 (base32 - "1c25kpx652nng8m1sqf5an2c3c4g3k6zj85mkkaxzk88iwfzq1s8")))) + "141a96hx8zhcdv121g6cs91n46kb47y040v25pnvz5f54964z7f5")))) (build-system cmake-build-system) (inputs ; TODO: Need to force-keep references on some inputs, e.g. boost. `(("zlib" ,zlib) @@ -2675,7 +2756,7 @@ and targeted primarily for asynchronous processing of HTTP-requests.") (define-public opendht (package (name "opendht") - (version "2.0.0beta2") + (version "2.0.0") (source (origin (method git-fetch) (uri (git-reference @@ -2684,7 +2765,7 @@ and targeted primarily for asynchronous processing of HTTP-requests.") (file-name (git-file-name name version)) (sha256 (base32 - "02ix0rvvyhq22gd5djcq84qz08ji7ln93faf23b27zjzni2klzv5")))) + "1q1fwk8wwk9r6bp0indpr60ql668lsk16ykslacyhrh7kg97kvhr")))) ;; Since 2.0, the gnu-build-system does not seem to work anymore, upstream bug? (build-system cmake-build-system) (inputs diff --git a/gnu/packages/nfs.scm b/gnu/packages/nfs.scm index 81eabef493..45ed181b03 100644 --- a/gnu/packages/nfs.scm +++ b/gnu/packages/nfs.scm @@ -114,7 +114,7 @@ ("rpcsvc-proto" ,rpcsvc-proto) ;for 'rpcgen' ("sqlite" ,sqlite) ("lvm2" ,lvm2) - ("util-linux" ,util-linux) + ("util-linux" ,util-linux "lib") ("mit-krb5" ,mit-krb5) ("libtirpc" ,libtirpc) ("python-wrapper" ,python-wrapper))) ;for the Python based tools diff --git a/gnu/packages/nickle.scm b/gnu/packages/nickle.scm index 9cc38867b6..2353f37fb6 100644 --- a/gnu/packages/nickle.scm +++ b/gnu/packages/nickle.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2016 ng0 <ng0@n0.is> +;;; Copyright © 2016 Nikita <nikita@n0.is> ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr> ;;; ;;; This file is part of GNU Guix. diff --git a/gnu/packages/ninja.scm b/gnu/packages/ninja.scm index a8ad6430ba..11ee472d56 100644 --- a/gnu/packages/ninja.scm +++ b/gnu/packages/ninja.scm @@ -3,6 +3,7 @@ ;;; Copyright © 2015 Mark H Weaver <mhw@netris.org> ;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr> +;;; Copyright © 2020 Marius Bakke <mbakke@fastmail.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -22,7 +23,7 @@ (define-module (gnu packages ninja) #:use-module ((guix licenses) #:select (asl2.0)) #:use-module (guix packages) - #:use-module (guix download) + #:use-module (guix git-download) #:use-module (guix build-system gnu) #:use-module (gnu packages) #:use-module (gnu packages python)) @@ -30,15 +31,16 @@ (define-public ninja (package (name "ninja") - (version "1.9.0") + (version "1.10.0") (source (origin - (method url-fetch) - (uri (string-append "https://github.com/martine/ninja/" - "archive/v" version ".tar.gz")) - (file-name (string-append name "-" version ".tar.gz")) + (method git-fetch) + (uri (git-reference + (url "https://github.com/ninja-build/ninja") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) (sha256 (base32 - "1ffmzj5s9h98qhl94d9i23zcv057rsqbac9g1hdgvlzq51ccfzjx")))) + "1fbzl7mrcrwp527sgkc1npfl3k6bbpydpiq98xcf1a1hkrx0z5x4")))) (build-system gnu-build-system) (inputs `(("python" ,python-wrapper))) (arguments diff --git a/gnu/packages/node.scm b/gnu/packages/node.scm index eb8c83d831..a3cf3c9199 100644 --- a/gnu/packages/node.scm +++ b/gnu/packages/node.scm @@ -183,8 +183,8 @@ `(("c-ares" ,c-ares) ("http-parser" ,http-parser) ("icu4c" ,icu4c) - ("libuv" ,libuv/latest) - ("nghttp2" ,nghttp2-1.40 "lib") + ("libuv" ,libuv) + ("nghttp2" ,nghttp2 "lib") ("openssl" ,openssl) ("zlib" ,zlib))) (synopsis "Evented I/O for V8 JavaScript") diff --git a/gnu/packages/nss.scm b/gnu/packages/nss.scm index 9112206c81..e423bdd3a2 100644 --- a/gnu/packages/nss.scm +++ b/gnu/packages/nss.scm @@ -1,7 +1,7 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2013, 2014, 2015, 2016, 2017, 2018, 2019 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2014, 2015, 2016, 2017, 2018, 2019 Mark H Weaver <mhw@netris.org> -;;; Copyright © 2016, 2017, 2018 Efraim Flashner <efraim@flashner.co.il> +;;; Copyright © 2016, 2017, 2018, 2019 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2020 Marius Bakke <mbakke@fastmail.com> ;;; diff --git a/gnu/packages/nvi.scm b/gnu/packages/nvi.scm index 187de31720..c34b1cad72 100644 --- a/gnu/packages/nvi.scm +++ b/gnu/packages/nvi.scm @@ -1,5 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2014 Marek Benc <merkur32@gmail.com> +;;; Copyright © 2020 Marius Bakke <mbakke@fastmail.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -40,6 +41,7 @@ (patches (search-patches "nvi-assume-preserve-path.patch" "nvi-dbpagesize-binpower.patch" "nvi-db4.patch")) + (modules '((guix build utils))) (snippet ;; Create a wrapper for the configure script, make it executable. '(let ((conf-wrap (open-output-file "configure"))) @@ -51,6 +53,12 @@ (newline conf-wrap) (close-output-port conf-wrap) (chmod "configure" #o0755) + + ;; Glibc 2.30 removed the deprecated <sys/stropts.h>, so fall back + ;; to the internal PTY allocation logic. + (substitute* "ex/ex_script.c" + (("#ifdef HAVE_SYS5_PTY") + "#if defined(HAVE_SYS5_PTY) && !defined(__GLIBC__)")) #t)))) (build-system gnu-build-system) diff --git a/gnu/packages/onc-rpc.scm b/gnu/packages/onc-rpc.scm index 5849b8deb4..cd31dfd910 100644 --- a/gnu/packages/onc-rpc.scm +++ b/gnu/packages/onc-rpc.scm @@ -4,6 +4,7 @@ ;;; Copyright © 2017, 2018 Leo Famulari <leo@famulari.name> ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2019 Marius Bakke <mbakke@fastmail.com> +;;; Copyright © 2020 Ricardo Wurmus <rekado@elephly.net> ;;; ;;; This file is part of GNU Guix. ;;; @@ -30,7 +31,8 @@ #:use-module (gnu packages gettext) #:use-module (gnu packages kerberos) #:use-module (gnu packages pkg-config) - #:use-module (guix build-system gnu)) + #:use-module (guix build-system gnu) + #:use-module (guix utils)) (define-public libtirpc (package @@ -72,6 +74,21 @@ procedure calls) protocol in a transport-independent manner. It supports both IPv4 and IPv6. ONC RPC is notably used by the network file system (NFS).") (license bsd-3))) +(define-public libtirpc/hurd + (package + (inherit libtirpc) + (name "libtirpc-hurd") + (source (origin (inherit (package-source libtirpc)) + (patches (search-patches "libtirpc-hurd.patch" + "libtirpc-hurd-client.patch")))) + (arguments + (substitute-keyword-arguments (package-arguments libtirpc) + ((#:configure-flags flags ''()) + ;; When cross-building the target system's krb5-config should be used. + `(list (string-append "ac_cv_prog_KRB5_CONFIG=" + (assoc-ref %build-inputs "mit-krb5") + "/bin/krb5-config"))))))) + (define-public rpcbind (package (name "rpcbind") diff --git a/gnu/packages/openbox.scm b/gnu/packages/openbox.scm index ceca6e53e0..00c93c3864 100644 --- a/gnu/packages/openbox.scm +++ b/gnu/packages/openbox.scm @@ -1,7 +1,7 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2014 Julien Lepiller <julien@lepiller.eu> ;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il> -;;; Copyright © 2017 ng0 <ng0@n0.is> +;;; Copyright © 2017 Nikita <nikita@n0.is> ;;; ;;; This file is part of GNU Guix. ;;; diff --git a/gnu/packages/opencog.scm b/gnu/packages/opencog.scm index c3b89d41dc..18aba64aec 100644 --- a/gnu/packages/opencog.scm +++ b/gnu/packages/opencog.scm @@ -234,7 +234,7 @@ tasks.") ("cogutil" ,cogutil) ("gmp" ,gmp) ("guile" ,guile-2.2) - ("libuuid" ,util-linux) + ("libuuid" ,util-linux "lib") ("link-grammar" ,link-grammar))) (native-inputs `(("cxxtest" ,cxxtest) diff --git a/gnu/packages/openldap.scm b/gnu/packages/openldap.scm index aa51520654..14bf874f48 100644 --- a/gnu/packages/openldap.scm +++ b/gnu/packages/openldap.scm @@ -4,6 +4,7 @@ ;;; Copyright © 2016 Leo Famulari <leo@famulari.name> ;;; Copyright © 2017, 2018, 2019 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr> +;;; Copyright © 2019 Mathieu Othacehe <m.othacehe@gmail.com> ;;; Copyright © 2020 Lars-Dominik Braun <ldb@leibniz-psychology.org> ;;; Copyright © 2020 Efraim Flashner <efraim@flashner.co.il> ;;; @@ -52,15 +53,16 @@ #:use-module (gnu packages) #:use-module ((guix licenses) #:select (openldap2.8 lgpl2.1+ gpl3+ psfl expat)) #:use-module (guix packages) + #:use-module (guix utils) #:use-module (guix download) #:use-module (guix build-system gnu) #:use-module (guix build-system python)) (define-public openldap (package - (replacement openldap/fixed) (name "openldap") - (version "2.4.47") + (replacement openldap-2.4.50) + (version "2.4.49") (source (origin (method url-fetch) @@ -77,21 +79,34 @@ "openldap-release/openldap-" version ".tgz"))) (sha256 (base32 - "02sj0p1pq12hqq29b22m3f5zs2rykgvc0q3wlynxjcsjhrvmhk7m")))) + "0vp524rsngdcykf6ki7vprsyg7gj8z7hszg8xwxz50219fa1gcg3")))) (build-system gnu-build-system) (inputs `(("bdb" ,bdb-5.3) ("cyrus-sasl" ,cyrus-sasl) ("gnutls" ,gnutls) - ("groff" ,groff) - ("icu4c" ,icu4c) ("libgcrypt" ,libgcrypt) ("zlib" ,zlib))) - (native-inputs `(("libtool" ,libtool))) + (native-inputs `(("libtool" ,libtool) + ("groff" ,groff) + ("bdb" ,bdb-5.3))) (arguments `(#:tests? #f - #:configure-flags '("--disable-static") + #:configure-flags + '("--disable-static" + ,@(if (%current-target-system) + '("--with-yielding_select=yes" + "ac_cv_func_memcmp_working=yes") + '())) + ;; Disable install stripping as it breaks cross-compiling. + #:make-flags '("STRIP=") #:phases (modify-phases %standard-phases + ,@(if (%current-target-system) + '((add-before 'configure 'fix-cross-gcc + (lambda* (#:key target #:allow-other-keys) + (setenv "CC" (string-append target "-gcc")) + #t))) + '()) (add-after 'install 'patch-sasl-path ;; Give -L arguments for cyrus-sasl to avoid propagation. (lambda* (#:key inputs outputs #:allow-other-keys) @@ -112,12 +127,18 @@ (license openldap2.8) (home-page "https://www.openldap.org/"))) -(define openldap/fixed +(define openldap-2.4.50 (package (inherit openldap) - (source - (origin (inherit (package-source openldap)) - (patches (search-patches "openldap-CVE-2020-12243.patch")))))) + (version "2.4.50") + (source (origin + (method url-fetch) + (uri (string-append "https://www.openldap.org/software/download/" + "OpenLDAP/openldap-release/openldap-" version + ".tgz")) + (sha256 + (base32 + "1f46nlfwmys110j36sifm7ah8m8f3s10c3vaiikmmigmifapvdaw")))))) (define-public nss-pam-ldapd (package diff --git a/gnu/packages/openstack.scm b/gnu/packages/openstack.scm index 8dd8c1907c..a1e21d8872 100644 --- a/gnu/packages/openstack.scm +++ b/gnu/packages/openstack.scm @@ -4,6 +4,7 @@ ;;; Copyright © 2016, 2017, 2019 Clément Lassieur <clement@lassieur.org> ;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2018 Marius Bakke <mbakke@fastmail.com> +;;; Copyright © 2020 Ricardo Wurmus <rekado@elephly.net> ;;; ;;; This file is part of GNU Guix. ;;; @@ -130,21 +131,31 @@ manner.") (define-public python-hacking (package (name "python-hacking") - (version "1.0.0") + (version "1.1.0") (source (origin (method url-fetch) (uri (pypi-uri "hacking" version)) (sha256 (base32 - "0s9l99s64jsyvm28fa4hzllbdi21sb7jn4gzdf1pd5ckvy7p4b0k")))) + "1vlgh81v4vsw3q3cf7qggsp043vq16knp203lrll82h7l7rhd8r3")))) (build-system python-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-after 'unpack 'delete-broken-test + (lambda _ + ;; TODO: Just one test fails: + ;; hacking.tests.test_doctest.HackingTestCase.test_pycodestyle + ;; (H403-hacking_docstring_multiline_end-line-5) + (delete-file "hacking/tests/test_doctest.py") + #t))))) (propagated-inputs - `(("python-flake8" ,python-flake8-2.5) + `(("python-flake8" ,python-flake8-2.6) ("python-mccabe-0.2.1" ,python-mccabe-0.2.1) ("python-pbr" ,python-pbr) ("python-pep8-1.5.7" ,python-pep8-1.5.7) - ("python-pyflakes-0.8.1" ,python-pyflakes-0.8.1) + ("python-pyflakes-1.2" ,python-pyflakes-1.2) ("python-six" ,python-six))) (native-inputs `( ;; Tests diff --git a/gnu/packages/package-management.scm b/gnu/packages/package-management.scm index 44fcb514b7..3fc6fc404a 100644 --- a/gnu/packages/package-management.scm +++ b/gnu/packages/package-management.scm @@ -11,6 +11,9 @@ ;;; Copyright © 2018, 2019 Eric Bavier <bavier@member.fsf.org> ;;; Copyright © 2019, 2020 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2019 Jonathan Brielmaier <jonathan.brielmaier@web.de> +;;; Copyright © 2020 Mathieu Othacehe <m.othacehe@gmail.com> +;;; Copyright © 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org> +;;; Copyright © 2020 Giacomo Leidi <goodoldpaul@autistici.org> ;;; ;;; This file is part of GNU Guix. ;;; @@ -35,8 +38,10 @@ #:use-module (gnu packages autotools) #:use-module (gnu packages backup) #:use-module (gnu packages base) + #:use-module (gnu packages bash) #:use-module (gnu packages bdw-gc) #:use-module (gnu packages bison) + #:use-module (gnu packages boost) #:use-module (gnu packages bootstrap) ;for 'bootstrap-guile-origin' #:use-module (gnu packages check) #:use-module (gnu packages compression) @@ -54,10 +59,13 @@ #:use-module (gnu packages gtk) #:use-module (gnu packages guile) #:use-module (gnu packages guile-xyz) + #:use-module (gnu packages hurd) + #:use-module (gnu packages libedit) #:use-module (gnu packages linux) #:use-module (gnu packages lisp) #:use-module (gnu packages man) #:use-module (gnu packages nettle) + #:use-module (gnu packages networking) #:use-module (gnu packages nss) #:use-module (gnu packages patchutils) #:use-module (gnu packages perl) @@ -110,8 +118,8 @@ ;; Note: the 'update-guix-package.scm' script expects this definition to ;; start precisely like this. (let ((version "1.1.0") - (commit "619f9181a363576894a433206008b139255062dd") - (revision 2)) + (commit "bdc801e1cfa8e436890da5bd755dd7759cb0f748") + (revision 4)) (package (name "guix") @@ -127,7 +135,7 @@ (commit commit))) (sha256 (base32 - "1lk0h9zgry7m78nv70gxwb57pw1d5yzay477gxsc43v1aa7zg8sp")) + "1wf30g45kh4nmcapd4vrcl6m2wjzly7v7dv8z0r584770i2yh836")) (file-name (string-append "guix-" version "-checkout")))) (build-system gnu-build-system) (arguments @@ -147,7 +155,8 @@ ;; To avoid problems with the length of shebangs, ;; choose a fixed-width and short directory name ;; for tests. - "ac_cv_guix_test_root=/tmp/guix-tests") + "ac_cv_guix_test_root=/tmp/guix-tests" + ,@(if (hurd-target?) '("--with-courage") '())) #:parallel-tests? #f ;work around <http://bugs.gnu.org/21097> #:modules ((guix build gnu-build-system) @@ -178,10 +187,25 @@ $(prefix)/etc/init.d\n"))) (invoke "sh" "bootstrap"))) + (add-before 'build 'use-host-compressors + (lambda* (#:key inputs target #:allow-other-keys) + (when target + ;; Use host compressors. + (let ((bzip2 (assoc-ref inputs "bzip2")) + (gzip (assoc-ref inputs "gzip")) + (xz (assoc-ref inputs "xz"))) + (substitute* "guix/config.scm" + (("\"[^\"]*/bin/bzip2") + (string-append "\"" bzip2 "/bin/bzip2")) + (("\"[^\"]*/bin/gzip") gzip + (string-append "\"" gzip "/bin/gzip")) + (("\"[^\"]*/bin//xz") + (string-append "\"" xz "/bin/xz"))))) + #t)) (add-before 'check 'copy-bootstrap-guile - (lambda* (#:key system inputs #:allow-other-keys) - ;; Copy the bootstrap guile tarball in the store used - ;; by the test suite. + (lambda* (#:key system target inputs #:allow-other-keys) + ;; Copy the bootstrap guile tarball in the store + ;; used by the test suite. (define (intern file recursive?) ;; Note: don't use 'guix download' here because we ;; need to set the 'recursive?' argument. @@ -205,20 +229,21 @@ $(prefix)/etc/init.d\n"))) (invoke "./test-env" "guile" "-c" (object->string code))) - (intern (assoc-ref inputs "boot-guile") #f) + (unless target + (intern (assoc-ref inputs "boot-guile") #f) - ;; On x86_64 some tests need the i686 Guile. - ,@(if (and (not (%current-target-system)) - (string=? (%current-system) - "x86_64-linux")) - '((intern (assoc-ref inputs "boot-guile/i686") #f)) - '()) + ;; On x86_64 some tests need the i686 Guile. + ,@(if (and (not (%current-target-system)) + (string=? (%current-system) + "x86_64-linux")) + '((intern (assoc-ref inputs "boot-guile/i686") #f)) + '()) - ;; Copy the bootstrap executables. - (for-each (lambda (input) - (intern (assoc-ref inputs input) #t)) - '("bootstrap/bash" "bootstrap/mkdir" - "bootstrap/tar" "bootstrap/xz")) + ;; Copy the bootstrap executables. + (for-each (lambda (input) + (intern (assoc-ref inputs input) #t)) + '("bootstrap/bash" "bootstrap/mkdir" + "bootstrap/tar" "bootstrap/xz"))) #t)) (add-after 'unpack 'disable-failing-tests ;; XXX FIXME: These tests fail within the build container. @@ -241,11 +266,14 @@ $(prefix)/etc/init.d\n"))) (setenv "SHELL" (which "sh")) #t)) (add-after 'install 'wrap-program - (lambda* (#:key inputs outputs #:allow-other-keys) + (lambda* (#:key inputs native-inputs outputs target + #:allow-other-keys) ;; Make sure the 'guix' command finds GnuTLS, ;; Guile-JSON, and Guile-Git automatically. (let* ((out (assoc-ref outputs "out")) - (guile (assoc-ref inputs "guile")) + (guile ,@(if (%current-target-system) + '((assoc-ref native-inputs "guile")) + '((assoc-ref inputs "guile")))) (gcrypt (assoc-ref inputs "guile-gcrypt")) (json (assoc-ref inputs "guile-json")) (sqlite (assoc-ref inputs "guile-sqlite3")) @@ -281,9 +309,24 @@ $(prefix)/etc/init.d\n"))) `("GUILE_LOAD_COMPILED_PATH" ":" prefix (,gopath)) `("GUIX_LOCPATH" ":" suffix (,locpath))) + (when target + ;; XXX Touching wrap-program rebuilds world + (let ((bash (assoc-ref inputs "bash"))) + (substitute* (string-append out "/bin/guix") + (("^#!.*/bash") (string-append "#! " bash "/bin/bash"))))) #t)))))) (native-inputs `(("pkg-config" ,pkg-config) + ;; Guile libraries are needed here for + ;; cross-compilation. + ("guile" ,guile-3.0) + ("gnutls" ,gnutls) + ("guile-gcrypt" ,guile-gcrypt) + ("guile-json" ,guile-json-3) + ("guile-sqlite3" ,guile-sqlite3) + ("guile-ssh" ,guile-ssh) + ("guile-git" ,guile-git) + ;; XXX: Keep the development inputs here even though ;; they're unnecessary, just so that 'guix environment ;; guix' always contains them. @@ -303,7 +346,7 @@ $(prefix)/etc/init.d\n"))) ("sqlite" ,sqlite) ("libgcrypt" ,libgcrypt) - ("guile" ,guile-2.2) + ("guile" ,guile-3.0) ;; Some of the tests use "unshare" when it is available. ("util-linux" ,util-linux) @@ -315,6 +358,10 @@ $(prefix)/etc/init.d\n"))) (string=? (%current-system) "x86_64-linux")) `(("boot-guile/i686" ,(bootstrap-guile-origin "i686-linux"))) '()) + ,@(if (%current-target-system) + `(("bash" ,bash-minimal) + ("xz" ,xz)) + '()) ;; Tests also rely on these bootstrap executables. ("bootstrap/bash" ,(bootstrap-executable "bash" (%current-system))) @@ -324,7 +371,7 @@ $(prefix)/etc/init.d\n"))) ("glibc-utf8-locales" ,glibc-utf8-locales))) (propagated-inputs - `(("gnutls" ,gnutls) + `(("gnutls" ,(if (%current-target-system) gnutls-3.6.13 guile3.0-gnutls)) ("guile-gcrypt" ,guile-gcrypt) ("guile-json" ,guile-json-3) ("guile-sqlite3" ,guile-sqlite3) @@ -356,7 +403,7 @@ the Nix package manager.") (fold alist-delete (package-native-inputs guix) '("po4a" "graphviz" "help2man"))) (inputs - `(("gnutls" ,gnutls) + `(("gnutls" ,guile3.0-gnutls) ("guile-git" ,guile-git) ("guile-json" ,guile-json-3) ("guile-gcrypt" ,guile-gcrypt) @@ -401,20 +448,35 @@ the Nix package manager.") (invoke "make" "install-binPROGRAMS"))) (delete 'wrap-program))))))) -(define-public guile3.0-guix + +(define-public guile2.2-guix (package (inherit guix) - (name "guile3.0-guix") + (name "guile2.2-guix") + (native-inputs + `(("guile" ,guile-2.2) + ("gnutls" ,guile2.2-gnutls) + ("guile-gcrypt" ,guile2.2-gcrypt) + ("guile-json" ,guile2.2-json) + ("guile-sqlite3" ,guile2.2-sqlite3) + ("guile-ssh" ,guile2.2-ssh) + ("guile-git" ,guile2.2-git) + ,@(fold alist-delete (package-native-inputs guix) + '("guile" "gnutls" "guile-gcrypt" "guile-json" + "guile-sqlite3" "guile-ssh" "guile-git")))) (inputs - `(("guile" ,guile-3.0) + `(("guile" ,guile-2.2) ,@(alist-delete "guile" (package-inputs guix)))) (propagated-inputs - `(("gnutls" ,guile3.0-gnutls) - ("guile-gcrypt" ,guile3.0-gcrypt) - ("guile-json" ,guile3.0-json) - ("guile-sqlite3" ,guile3.0-sqlite3) - ("guile-ssh" ,guile3.0-ssh) - ("guile-git" ,guile3.0-git))))) + `(("gnutls" ,gnutls) + ("guile-gcrypt" ,guile2.2-gcrypt) + ("guile-json" ,guile2.2-json) + ("guile-sqlite3" ,guile2.2-sqlite3) + ("guile-ssh" ,guile2.2-ssh) + ("guile-git" ,guile2.2-git))))) + +(define-public guile3.0-guix + (deprecated-package "guile3.0-guix" guix)) (define-public guix-minimal ;; A version of Guix which is built with the minimal set of dependencies, as @@ -480,18 +542,21 @@ out) and returning a package that uses that as its 'source'." (define-public nix (package (name "nix") - (version "2.0.4") + (version "2.3.4") (source (origin (method url-fetch) (uri (string-append "http://nixos.org/releases/nix/nix-" version "/nix-" version ".tar.xz")) (sha256 (base32 - "0ss9svxlh1pvrdmnqjvjyqjmbqmrdbyfarvbb14i9d4bggzl0r8n")))) + "03fhbb8088sgz3709zd9n9rydavar79w87l9n4q9iimcw06nlqhw")))) (build-system gnu-build-system) (native-inputs `(("pkg-config" ,pkg-config))) - (inputs `(("curl" ,curl) + (inputs `(("boost" ,boost) + ("brotli" ,brotli) ("bzip2" ,bzip2) + ("curl" ,curl) + ("editline" ,editline) ("libgc" ,libgc) ("libseccomp" ,libseccomp) ("libsodium" ,libsodium) @@ -819,12 +884,12 @@ written entirely in Python."))) (inputs `(("guile" ,guile-3.0))) (propagated-inputs - `(("guix" ,guile3.0-guix) - ("guile-commonmark" ,guile3.0-commonmark) - ("guile-gcrypt" ,guile3.0-gcrypt) - ("guile-pfds" ,guile3.0-pfds) - ("guile-syntax-highlight" ,guile3.0-syntax-highlight) - ("guile-wisp" ,guile3.0-wisp))) + `(("guix" ,guix) + ("guile-commonmark" ,guile-commonmark) + ("guile-gcrypt" ,guile-gcrypt) + ("guile-pfds" ,guile-pfds) + ("guile-syntax-highlight" ,guile-syntax-highlight) + ("guile-wisp" ,guile-wisp))) (home-page "https://workflows.guix.info") (synopsis "Workflow management extension for GNU Guix") (description "The @dfn{Guix Workflow Language} (GWL) provides an @@ -849,6 +914,14 @@ environments.") (sha256 (base32 "01z7jjkc7r7lj6637rcgpz40v8xqqyfp6871h94yvcnwm7zy9h1n")) + (modules '((guix build utils))) + (snippet + '(begin + ;; Allow builds with Guile 3.0. + (substitute* "configure.ac" + (("^GUILE_PKG.*") + "GUILE_PKG([3.0 2.2])\n")) + #t)) (file-name (string-append "guix-jupyter-" version "-checkout")))) (build-system gnu-build-system) (arguments @@ -907,7 +980,7 @@ environments.") ("python-ipykernel" ,python-ipykernel))) (inputs `(("guix" ,guix) - ("guile" ,guile-2.2))) + ("guile" ,guile-3.0))) (propagated-inputs `(("guile-json" ,guile-json-3) ("guile-simple-zmq" ,guile-simple-zmq) @@ -975,7 +1048,7 @@ Microsoft cabinet (.@dfn{CAB}) files.") ("glib" ,glib) ("libgsf" ,libgsf) ("libxml2" ,libxml2) - ("uuid" ,util-linux))) + ("uuid" ,util-linux "lib"))) (home-page "https://wiki.gnome.org/msitools") (synopsis "Windows Installer file manipulation tool") (description @@ -1041,7 +1114,7 @@ the boot loader configuration.") (define-public flatpak (package (name "flatpak") - (version "1.4.3") + (version "1.6.3") (source (origin (method url-fetch) @@ -1049,45 +1122,78 @@ the boot loader configuration.") version "/flatpak-" version ".tar.xz")) (sha256 (base32 - "11bfxmv8pxlb5x0lb2rsl45615fzfvq5r6wldf0l6ab2ngryd7i7")))) + "17s8nqdxd4xdy7ag9bw06adxccha78jmlsa3zpqnl3qh92pg0hji")))) ;; Wrap 'flatpak' so that GIO_EXTRA_MODULES is set, thereby allowing GIO to ;; find the TLS backend in glib-networking. (build-system glib-or-gtk-build-system) (arguments - '(#:tests? #f ;; Tests fail due to trying to create files where it can't. - #:configure-flags (list - "--enable-documentation=no" ;; FIXME - "--enable-system-helper=no" - "--localstatedir=/var" - (string-append "--with-system-bubblewrap=" - (assoc-ref %build-inputs "bubblewrap") - "/bin/bwrap")))) - (native-inputs `(("bison" ,bison) - ("gettext" ,gettext-minimal) - ("glib:bin" ,glib "bin") ; for glib-mkenums + gdbus-codegen - ("gobject-introspection" ,gobject-introspection) - ("libcap" ,libcap) - ("pkg-config" ,pkg-config))) + '(#:configure-flags + (list + "--enable-documentation=no" ;; FIXME + "--enable-system-helper=no" + "--localstatedir=/var" + (string-append "--with-system-bubblewrap=" + (assoc-ref %build-inputs "bubblewrap") + "/bin/bwrap") + "--with-system-dbus-proxy") + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'fix-tests + (lambda* (#:key inputs #:allow-other-keys) + (copy-recursively + (string-append (assoc-ref inputs "glibc-utf8-locales") + "/lib/locale/") "/tmp/locale") + (for-each make-file-writable (find-files "/tmp")) + (substitute* "tests/make-test-runtime.sh" + (("cp `which.*") "echo guix\n") + (("cp -r /usr/lib/locale/C\\.\\*") + (string-append "mkdir ${DIR}/usr/lib/locale/en_US; \ +cp -r /tmp/locale/*/en_US.*"))) + (substitute* "tests/libtest.sh" + (("/bin/kill") (which "kill")) + (("/usr/bin/python3") (which "python3"))) + #t)) + ;; Many tests fail for unknown reasons, so we just run a few basic + ;; tests + (replace 'check + (lambda _ + (setenv "HOME" "/tmp") + (invoke "make" "check" + "TESTS=tests/test-basic.sh tests/test-config.sh testcommon")))))) + (native-inputs + `(("bison" ,bison) + ("dbus" ,dbus) ; for dbus-daemon + ("gettext" ,gettext-minimal) + ("glib:bin" ,glib "bin") ; for glib-mkenums + gdbus-codegen + ("glibc-utf8-locales" ,glibc-utf8-locales) + ("gobject-introspection" ,gobject-introspection) + ("libcap" ,libcap) + ("pkg-config" ,pkg-config) + ("python" ,python) + ("socat" ,socat) + ("which" ,which))) (propagated-inputs `(("glib-networking" ,glib-networking) ("gnupg" ,gnupg) ("gsettings-desktop-schemas" ,gsettings-desktop-schemas))) - (inputs `(("appstream-glib" ,appstream-glib) - ("bubblewrap" ,bubblewrap) - ("dconf" ,dconf) - ("fuse" ,fuse) - ("gdk-pixbuf" ,gdk-pixbuf) - ("gpgme" ,gpgme) - ("json-glib" ,json-glib) - ("libarchive" ,libarchive) - ("libostree" ,libostree) - ("libseccomp" ,libseccomp) - ("libsoup" ,libsoup) - ("libxau" ,libxau) - ("libxml2" ,libxml2) - ("util-linux" ,util-linux))) + (inputs + `(("appstream-glib" ,appstream-glib) + ("bubblewrap" ,bubblewrap) + ("dconf" ,dconf) + ("fuse" ,fuse) + ("gdk-pixbuf" ,gdk-pixbuf) + ("gpgme" ,gpgme) + ("json-glib" ,json-glib) + ("libarchive" ,libarchive) + ("libostree" ,libostree) + ("libseccomp" ,libseccomp) + ("libsoup" ,libsoup) + ("libxau" ,libxau) + ("libxml2" ,libxml2) + ("util-linux" ,util-linux) + ("xdg-dbus-proxy" ,xdg-dbus-proxy))) (home-page "https://flatpak.org") (synopsis "System for building, distributing, and running sandboxed desktop applications") diff --git a/gnu/packages/password-utils.scm b/gnu/packages/password-utils.scm index 2a570691a4..4f5ac1029f 100644 --- a/gnu/packages/password-utils.scm +++ b/gnu/packages/password-utils.scm @@ -26,6 +26,7 @@ ;;; Copyright © 2019 Tanguy Le Carrour <tanguy@bioneland.org> ;;; Copyright © 2020 Guillaume Le Vaillant <glv@posteo.net> ;;; Copyright © 2020 Brice Waegeneire <brice@waegenei.re> +;;; Copyright © 2020 Jean-Baptiste Note <jean-baptiste.note@m4x.org> ;;; ;;; This file is part of GNU Guix. ;;; @@ -61,6 +62,7 @@ #:use-module (gnu packages crypto) #:use-module (gnu packages cryptsetup) #:use-module (gnu packages curl) + #:use-module (gnu packages docbook) #:use-module (gnu packages file) #:use-module (gnu packages freedesktop) #:use-module (gnu packages gettext) @@ -213,7 +215,7 @@ algorithms AES or Twofish.") ("zip" ,zip))) (inputs `(("curl" ,curl) ("file" ,file) - ("libuuid" ,util-linux) + ("libuuid" ,util-linux "lib") ("libxt" ,libxt) ("libxtst" ,libxtst) ("openssl" ,openssl) @@ -1168,3 +1170,42 @@ exhaustive mode to try every password given a charset or in dictionary mode to try every password contained in a file.") (home-page "https://github.com/glv2/bruteforce-luks") (license license:gpl3+))) + +(define-public makepasswd + (let ((commit "3545d57d3a589a392d7eb0df36a5286785345c9e") + (revision "1")) + (package + (name "makepasswd") + (version (git-version "0.5.4" revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/khorben/makepasswd") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0lspqyyxbk6h28yxnp7pd5aib161vrkzgasam5jpzn35n1jacx2j")))) + (build-system gnu-build-system) + (native-inputs + `(("pkg-config" ,pkg-config) + ("libxslt" ,libxslt) + ("libxml2" ,libxml2) + ("docbook-xsl" ,docbook-xsl) + ("docbook-xml" ,docbook-xml))) + (inputs + `(("openssl" ,openssl))) + (arguments + `(#:phases + (modify-phases %standard-phases + (delete 'configure)) + #:make-flags (list "CC=gcc" + (string-append "PREFIX=" (assoc-ref %outputs "out"))) + #:tests? #f)) ;no tests + (synopsis "Generate (pseudo-)random passwords and hashes") + (description + "Makepasswd is a program that generates pseudo-random passwords of a +desired length. It can also generate their corresponding hashes for a given +encryption algorithm if so desired.") + (home-page "https://github.com/khorben/makepasswd") + (license license:gpl3)))) diff --git a/gnu/packages/patches/ableton-link-system-libraries-debian.patch b/gnu/packages/patches/ableton-link-system-libraries-debian.patch new file mode 100644 index 0000000000..184896ee61 --- /dev/null +++ b/gnu/packages/patches/ableton-link-system-libraries-debian.patch @@ -0,0 +1,29 @@ +This patch was borrowed from Debian's package: +https://salsa.debian.org/multimedia-team/ableton-link/-/blob/9c65141bf5bba0872811c179af77ac95770352cc/debian/patches/DEBIAN_system_libraries.patch +Description: Drop dependencies on included 3rd-party libs + upstream includes git-submodules for Catch and ASIO (not found in the tarball). + on Debian we want to use the system provided libraries. +Author: IOhannes m zmölnig +Origin: Debian +Forwarded: not-needed +Last-Update: 2016-10-26 +--- +This patch header follows DEP-3: http://dep.debian.net/deps/dep3/ +--- ableton-link.orig/cmake_include/AsioStandaloneConfig.cmake ++++ ableton-link/cmake_include/AsioStandaloneConfig.cmake +@@ -1,6 +1,2 @@ + add_library(AsioStandalone::AsioStandalone IMPORTED INTERFACE) + +-set_property(TARGET AsioStandalone::AsioStandalone APPEND PROPERTY +- INTERFACE_INCLUDE_DIRECTORIES +- ${CMAKE_CURRENT_LIST_DIR}/../modules/asio-standalone/asio/include +-) +--- ableton-link.orig/cmake_include/CatchConfig.cmake ++++ ableton-link/cmake_include/CatchConfig.cmake +@@ -1,6 +1,2 @@ + add_library(Catch::Catch IMPORTED INTERFACE) + +-set_property(TARGET Catch::Catch APPEND PROPERTY +- INTERFACE_INCLUDE_DIRECTORIES +- ${CMAKE_SOURCE_DIR}/third_party/catch +-) diff --git a/gnu/packages/patches/aegisub-make43.patch b/gnu/packages/patches/aegisub-make43.patch new file mode 100644 index 0000000000..32f9d7749c --- /dev/null +++ b/gnu/packages/patches/aegisub-make43.patch @@ -0,0 +1,20 @@ +Fix build with GNU Make 4.3: + +https://github.com/Aegisub/Aegisub/issues/171 + +Patch taken from upstream: + +https://github.com/Aegisub/Aegisub/commit/6bd3f4c26b8fc1f76a8b797fcee11e7611d59a39 + +diff --git a/Makefile.target b/Makefile.target +--- a/Makefile.target ++++ b/Makefile.target +@@ -112,7 +112,7 @@ POST_FLAGS = $($@_FLAGS) -c -o $@ $< + # Libraries contain all object files they depend on (but they may depend on other files) + # Not using libtool on OS X because it has an unsilenceable warning about a + # compatibility issue with BSD 4.3 (wtf) +-lib%.a: $$($$*_OBJ) ++lib%.a: $$($$(*F)_OBJ) + @$(BIN_MKDIR_P) $(dir $@) + $(BIN_AR) cru $@ $(filter %.o,$^) + $(BIN_RANLIB) $@ diff --git a/gnu/packages/patches/aspell-default-dict-dir.patch b/gnu/packages/patches/aspell-default-dict-dir.patch index 17a6ff606f..5f759a66d9 100644 --- a/gnu/packages/patches/aspell-default-dict-dir.patch +++ b/gnu/packages/patches/aspell-default-dict-dir.patch @@ -8,12 +8,34 @@ However it is necessary for applications that use libaspell since --- a/common/config.cpp +++ b/common/config.cpp +@@ -651,7 +651,20 @@ namespace acommon { + } else { // sep == '|' + assert(replace[0] == '$'); + const char * env = getenv(replace.c_str()+1); +- final_str += env ? env : second; ++ if (env) { ++ final_str += env; ++ } else if (second[0] == '$') { ++ // Expand the right-hand side of '|', which starts with a ++ // reference to an environment variable. ++ auto slash = second.find('/'); ++ String variable = second.substr(1, slash - 1); ++ const char * env = getenv(variable.c_str()); ++ String value = env ? String(env) : ""; ++ value += second.substr(slash, second.size() - slash); ++ final_str += value; ++ } else { ++ final_str += second; ++ } + } + replace = ""; + in_replace = false; @@ -1349,6 +1349,9 @@ namespace acommon { # define REPL ".aspell.<lang>.prepl" #endif +#undef DICT_DIR -+#define DICT_DIR "<$ASPELL_DICT_DIR|home-dir/.guix-profile/lib/aspell>" ++#define DICT_DIR "<$ASPELL_DICT_DIR|$HOME/.guix-profile/lib/aspell>" + static const KeyInfo config_keys[] = { // the description should be under 50 chars diff --git a/gnu/packages/patches/aspell-gcc-compat.patch b/gnu/packages/patches/aspell-gcc-compat.patch deleted file mode 100644 index 94c44f8fb6..0000000000 --- a/gnu/packages/patches/aspell-gcc-compat.patch +++ /dev/null @@ -1,31 +0,0 @@ -Fix GCC7 warnings. - -Taken from upstream: -https://git.savannah.gnu.org/cgit/aspell.git/commit/?id=8089fa02122fed0a6394eba14bbedcb1d18e2384 - -diff --git a/modules/filter/tex.cpp b/modules/filter/tex.cpp -index a979539..19ab63c 100644 ---- a/modules/filter/tex.cpp -+++ b/modules/filter/tex.cpp -@@ -174,7 +174,7 @@ namespace { - - if (c == '{') { - -- if (top.in_what == Parm || top.in_what == Opt || top.do_check == '\0') -+ if (top.in_what == Parm || top.in_what == Opt || *top.do_check == '\0') - push_command(Parm); - - top.in_what = Parm; -diff --git a/prog/check_funs.cpp b/prog/check_funs.cpp -index db54f3d..89ee09d 100644 ---- a/prog/check_funs.cpp -+++ b/prog/check_funs.cpp -@@ -647,7 +647,7 @@ static void print_truncate(FILE * out, const char * word, int width) { - } - } - if (i == width-1) { -- if (word == '\0') -+ if (*word == '\0') - put(out,' '); - else if (word[len] == '\0') - put(out, word, len); diff --git a/gnu/packages/patches/avahi-CVE-2018-1000845.patch b/gnu/packages/patches/avahi-CVE-2018-1000845.patch deleted file mode 100644 index e5b13e0bee..0000000000 --- a/gnu/packages/patches/avahi-CVE-2018-1000845.patch +++ /dev/null @@ -1,42 +0,0 @@ -From e111def44a7df4624a4aa3f85fe98054bffb6b4f Mon Sep 17 00:00:00 2001 -From: Trent Lloyd <trent@lloyd.id.au> -Date: Sat, 22 Dec 2018 09:06:07 +0800 -Subject: [PATCH] Drop legacy unicast queries from address not on local link - -When handling legacy unicast queries, ensure that the source IP is -inside a subnet on the local link, otherwise drop the packet. - -Fixes #145 -Fixes #203 -CVE-2017-6519 -CVE-2018-100084 ---- - avahi-core/server.c | 8 ++++++++ - 1 file changed, 8 insertions(+) - -diff --git a/avahi-core/server.c b/avahi-core/server.c -index a2cb19a8..a2580e38 100644 ---- a/avahi-core/server.c -+++ b/avahi-core/server.c -@@ -930,6 +930,7 @@ static void dispatch_packet(AvahiServer *s, AvahiDnsPacket *p, const AvahiAddres - - if (avahi_dns_packet_is_query(p)) { - int legacy_unicast = 0; -+ char t[AVAHI_ADDRESS_STR_MAX]; - - /* For queries EDNS0 might allow ARCOUNT != 0. We ignore the - * AR section completely here, so far. Until the day we add -@@ -947,6 +948,13 @@ static void dispatch_packet(AvahiServer *s, AvahiDnsPacket *p, const AvahiAddres - legacy_unicast = 1; - } - -+ if (!is_mdns_mcast_address(dst_address) && -+ !avahi_interface_address_on_link(i, src_address)) { -+ -+ avahi_log_debug("Received non-local unicast query from host %s on interface '%s.%i'.", avahi_address_snprint(t, sizeof(t), src_address), i->hardware->name, i->protocol); -+ return; -+ } -+ - if (legacy_unicast) - reflect_legacy_unicast_query_packet(s, p, i, src_address, port); - diff --git a/gnu/packages/patches/bash-linux-pgrp-pipe.patch b/gnu/packages/patches/bash-linux-pgrp-pipe.patch new file mode 100644 index 0000000000..234a55e897 --- /dev/null +++ b/gnu/packages/patches/bash-linux-pgrp-pipe.patch @@ -0,0 +1,32 @@ +Unconditionally enable PGRP_PIPE on Linux (the kernel), regardless of +the kernel version in use on the build machine. + +--- configure.ac.orig 2019-01-02 09:38:44.000000000 -0500 ++++ configure.ac 2019-08-15 16:40:24.271758379 -0400 +@@ -1108,10 +1108,7 @@ + solaris2*) LOCAL_CFLAGS=-DSOLARIS ;; + lynxos*) LOCAL_CFLAGS=-DRECYCLES_PIDS ;; + linux*) LOCAL_LDFLAGS=-rdynamic # allow dynamic loading +- case "`uname -r`" in +- 1.*|2.[[0123]]*) : ;; +- *) AC_DEFINE(PGRP_PIPE) ;; +- esac ;; ++ AC_DEFINE(PGRP_PIPE) ;; + netbsd*|openbsd*) LOCAL_CFLAGS="-DDEV_FD_STAT_BROKEN" ;; + *qnx[[67]]*) LOCAL_LIBS="-lncurses" ;; + *qnx*) LOCAL_CFLAGS="-Dqnx -F -3s" LOCAL_LDFLAGS="-3s" LOCAL_LIBS="-lunix -lncurses" ;; +--- configure.orig 2019-01-02 09:43:04.000000000 -0500 ++++ configure 2019-08-15 16:41:44.440155912 -0400 +@@ -16312,11 +16312,7 @@ + solaris2*) LOCAL_CFLAGS=-DSOLARIS ;; + lynxos*) LOCAL_CFLAGS=-DRECYCLES_PIDS ;; + linux*) LOCAL_LDFLAGS=-rdynamic # allow dynamic loading +- case "`uname -r`" in +- 1.*|2.[0123]*) : ;; +- *) $as_echo "#define PGRP_PIPE 1" >>confdefs.h +- ;; +- esac ;; ++ $as_echo "#define PGRP_PIPE 1" >>confdefs.h ;; + netbsd*|openbsd*) LOCAL_CFLAGS="-DDEV_FD_STAT_BROKEN" ;; + *qnx[67]*) LOCAL_LIBS="-lncurses" ;; + *qnx*) LOCAL_CFLAGS="-Dqnx -F -3s" LOCAL_LDFLAGS="-3s" LOCAL_LIBS="-lunix -lncurses" ;; diff --git a/gnu/packages/patches/bc-fix-cross-compilation.patch b/gnu/packages/patches/bc-fix-cross-compilation.patch new file mode 100644 index 0000000000..14dfecdbde --- /dev/null +++ b/gnu/packages/patches/bc-fix-cross-compilation.patch @@ -0,0 +1,171 @@ +Patch taken from nix. + +commit fdda59736ddc048cf38a2c7103f4f5d9eeaf995e +Author: Ben Gamari <ben@smart-cactus.org> +Date: Tue Oct 17 10:51:34 2017 -0400 + + Try implementing cross-compilation + +diff --git a/bc/Makefile.am b/bc/Makefile.am +index d9d412e..fdef633 100644 +--- a/bc/Makefile.am ++++ b/bc/Makefile.am +@@ -17,6 +17,7 @@ MAINTAINERCLEANFILES = Makefile.in bc.c bc.h scan.c \ + + AM_CPPFLAGS = -I$(srcdir) -I$(srcdir)/../h + LIBBC = ../lib/libbc.a ++LIBBC_HOST = ../lib/libbc_host.a + LIBL = @LEXLIB@ + LDADD = $(LIBBC) $(LIBL) @READLINELIB@ + +@@ -29,12 +30,20 @@ $(PROGRAMS): libmath.h $(LIBBC) + scan.o: bc.h + global.o: libmath.h ++ ++main_host.c : main.c ++ cp $< $@ + +-fbcOBJ = main.o bc.o scan.o execute.o load.o storage.o util.o warranty.o ++fbcOBJ = $(addsuffix _host,main.o bc.o scan.o execute.o load.o storage.o util.o warranty.o) ++ ++%.o_host : CC:=$(CC_FOR_BUILD) ++ ++%.o_host : %.c ++ $(COMPILE) -c $(CFLAGS) $(INCLUDES) -o $@ $< + +-libmath.h: libmath.b $(fbcOBJ) $(LIBBC) ++libmath.h: libmath.b $(fbcOBJ) $(LIBBC_HOST) + echo '{0}' > libmath.h +- $(MAKE) global.o +- $(LINK) -o fbc $(fbcOBJ) global.o $(LIBBC) $(LIBL) $(READLINELIB) $(LIBS) ++ $(MAKE) global.o_host ++ $(CC_FOR_BUILD) -o fbc $(fbcOBJ) global.o_host $(LIBBC_HOST) $(LIBL) ${READLINELIB} $(LIBS) + ./fbc -c $(srcdir)/libmath.b </dev/null >libmath.h + $(srcdir)/fix-libmath_h + rm -f ./fbc ./global.o +diff --git a/configure.ac b/configure.ac +index fc74573..5cabb73 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -20,6 +20,7 @@ m4_define([dc_version], 1.4.1) + + AC_INIT([bc],[bc_version]) + AC_CONFIG_SRCDIR(doc/bc.1) ++AC_CONFIG_MACRO_DIR([m4]) + AM_INIT_AUTOMAKE([dist-bzip2]) + AC_CONFIG_HEADERS(config.h) + +@@ -35,6 +36,7 @@ AC_DEFINE([DC_COPYRIGHT], + [Define the dc copyright line.]) + + AC_PROG_CC ++AX_CC_FOR_BUILD + AC_USE_SYSTEM_EXTENSIONS + + AM_PROG_LEX +diff --git a/lib/Makefile.am b/lib/Makefile.am +index ec4bf59..c670f5b 100644 +--- a/lib/Makefile.am ++++ b/lib/Makefile.am +@@ -1,5 +1,5 @@ + ## Process this file with automake to produce Makefile.in +-noinst_LIBRARIES = libbc.a ++noinst_LIBRARIES = libbc.a libbc_host.a + + AM_CPPFLAGS = -I. -I.. -I$(srcdir)/../h + +@@ -24,3 +24,11 @@ testmul: testmul.o number.o + + specialnumber: newnumber.o + cp newnumber.o number.o ++ ++%.o_host : CC:=$(CC_FOR_BUILD) ++%.o_host : %.c ++ $(COMPILE) -c $(CFLAGS) $(INCLUDES) -o $@ $< ++ ++libbc_host.a : $(addsuffix _host,$(libbc_a_OBJECTS)) ++ ar cru $@ $+ ++ ranlib $@ +diff --git a/m4/cc_for_build.m4 b/m4/cc_for_build.m4 +new file mode 100644 +index 0000000..c62ffad +--- /dev/null ++++ b/m4/cc_for_build.m4 +@@ -0,0 +1,77 @@ ++# =========================================================================== ++# https://www.gnu.org/software/autoconf-archive/ax_cc_for_build.html ++# =========================================================================== ++# ++# SYNOPSIS ++# ++# AX_CC_FOR_BUILD ++# ++# DESCRIPTION ++# ++# Find a build-time compiler. Sets CC_FOR_BUILD and EXEEXT_FOR_BUILD. ++# ++# LICENSE ++# ++# Copyright (c) 2010 Reuben Thomas <rrt@sc3d.org> ++# Copyright (c) 1999 Richard Henderson <rth@redhat.com> ++# ++# This program 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. ++# ++# This program 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 this program. If not, see <https://www.gnu.org/licenses/>. ++# ++# As a special exception, the respective Autoconf Macro's copyright owner ++# gives unlimited permission to copy, distribute and modify the configure ++# scripts that are the output of Autoconf when processing the Macro. You ++# need not follow the terms of the GNU General Public License when using ++# or distributing such scripts, even though portions of the text of the ++# Macro appear in them. The GNU General Public License (GPL) does govern ++# all other use of the material that constitutes the Autoconf Macro. ++# ++# This special exception to the GPL applies to versions of the Autoconf ++# Macro released by the Autoconf Archive. When you make and distribute a ++# modified version of the Autoconf Macro, you may extend this special ++# exception to the GPL to apply to your modified version as well. ++ ++#serial 3 ++ ++dnl Get a default for CC_FOR_BUILD to put into Makefile. ++AC_DEFUN([AX_CC_FOR_BUILD], ++[# Put a plausible default for CC_FOR_BUILD in Makefile. ++if test -z "$CC_FOR_BUILD"; then ++ if test "x$cross_compiling" = "xno"; then ++ CC_FOR_BUILD='$(CC)' ++ else ++ CC_FOR_BUILD=gcc ++ fi ++fi ++AC_SUBST(CC_FOR_BUILD) ++# Also set EXEEXT_FOR_BUILD. ++if test "x$cross_compiling" = "xno"; then ++ EXEEXT_FOR_BUILD='$(EXEEXT)' ++else ++ AC_CACHE_CHECK([for build system executable suffix], bfd_cv_build_exeext, ++ [rm -f conftest* ++ echo 'int main () { return 0; }' > conftest.c ++ bfd_cv_build_exeext= ++ ${CC_FOR_BUILD} -o conftest conftest.c 1>&5 2>&5 ++ for file in conftest.*; do ++ case $file in ++ *.c | *.o | *.obj | *.ilk | *.pdb) ;; ++ *) bfd_cv_build_exeext=`echo $file | sed -e s/conftest//` ;; ++ esac ++ done ++ rm -f conftest* ++ test x"${bfd_cv_build_exeext}" = x && bfd_cv_build_exeext=no]) ++ EXEEXT_FOR_BUILD="" ++ test x"${bfd_cv_build_exeext}" != xno && EXEEXT_FOR_BUILD=${bfd_cv_build_exeext} ++fi ++AC_SUBST(EXEEXT_FOR_BUILD)])dnl diff --git a/gnu/packages/patches/behave-skip-a-couple-of-tests.patch b/gnu/packages/patches/behave-skip-a-couple-of-tests.patch new file mode 100644 index 0000000000..e3d4e15241 --- /dev/null +++ b/gnu/packages/patches/behave-skip-a-couple-of-tests.patch @@ -0,0 +1,462 @@ +Fix build with Python 3.8, this is a patch based on upstream commit [1]. + +1: c000c88eb5239b87f299c85e83b349b0ef387ae7 + + +diff --git a/behave.ini b/behave.ini +index 45c0f0d7..952240d6 100644 +--- a/behave.ini ++++ b/behave.ini +@@ -15,8 +15,9 @@ show_skipped = false + format = rerun + progress3 + outfiles = rerun.txt +- reports/report_progress3.txt ++ build/behave.reports/report_progress3.txt + junit = true ++junit_directory = build/behave.reports + logging_level = INFO + # logging_format = LOG.%(levelname)-8s %(name)-10s: %(message)s + # logging_format = LOG.%(levelname)-8s %(asctime)s %(name)-10s: %(message)s +diff --git a/features/environment.py b/features/environment.py +index 4744e89a..3769ee40 100644 +--- a/features/environment.py ++++ b/features/environment.py +@@ -1,5 +1,7 @@ + # -*- coding: UTF-8 -*- ++# FILE: features/environemnt.py + ++from __future__ import absolute_import, print_function + from behave.tag_matcher import ActiveTagMatcher, setup_active_tag_values + from behave4cmd0.setup_command_shell import setup_command_shell_processors4behave + import platform +@@ -20,6 +22,15 @@ + } + active_tag_matcher = ActiveTagMatcher(active_tag_value_provider) + ++ ++def print_active_tags_summary(): ++ active_tag_data = active_tag_value_provider ++ print("ACTIVE-TAG SUMMARY:") ++ print("use.with_python.version=%s" % active_tag_data.get("python.version")) ++ # print("use.with_os=%s" % active_tag_data.get("os")) ++ print() ++ ++ + # ----------------------------------------------------------------------------- + # HOOKS: + # ----------------------------------------------------------------------------- +@@ -30,11 +41,14 @@ def before_all(context): + setup_python_path() + setup_context_with_global_params_test(context) + setup_command_shell_processors4behave() ++ print_active_tags_summary() ++ + + def before_feature(context, feature): + if active_tag_matcher.should_exclude_with(feature.tags): + feature.skip(reason=active_tag_matcher.exclude_reason) + ++ + def before_scenario(context, scenario): + if active_tag_matcher.should_exclude_with(scenario.effective_tags): + scenario.skip(reason=active_tag_matcher.exclude_reason) +diff --git a/features/step.duplicated_step.feature b/features/step.duplicated_step.feature +index 59888b0f..396cca27 100644 +--- a/features/step.duplicated_step.feature ++++ b/features/step.duplicated_step.feature +@@ -32,11 +32,11 @@ Feature: Duplicated Step Definitions + AmbiguousStep: @given('I call Alice') has already been defined in + existing step @given('I call Alice') at features/steps/alice_steps.py:3 + """ +- And the command output should contain: +- """ +- File "features/steps/alice_steps.py", line 7, in <module> +- @given(u'I call Alice') +- """ ++ # -- DISABLED: Python 3.8 traceback line numbers differ w/ decorators (+1). ++ # And the command output should contain: ++ # """ ++ # File "features/steps/alice_steps.py", line 7, in <module> ++ # """ + + + Scenario: Duplicated Step Definition in another File +@@ -70,11 +70,11 @@ Feature: Duplicated Step Definitions + AmbiguousStep: @given('I call Bob') has already been defined in + existing step @given('I call Bob') at features/steps/bob1_steps.py:3 + """ +- And the command output should contain: +- """ +- File "features/steps/bob2_steps.py", line 3, in <module> +- @given('I call Bob') +- """ ++ # -- DISABLED: Python 3.8 traceback line numbers differ w/ decorators (+1). ++ # And the command output should contain: ++ # """ ++ # File "features/steps/bob2_steps.py", line 3, in <module> ++ # """ + + @xfail + Scenario: Duplicated Same Step Definition via import from another File +diff --git a/issue.features/environment.py b/issue.features/environment.py +index 2dfec751..7e48ee03 100644 +--- a/issue.features/environment.py ++++ b/issue.features/environment.py +@@ -1,5 +1,5 @@ + # -*- coding: UTF-8 -*- +-# FILE: features/environment.py ++# FILE: issue.features/environemnt.py + # pylint: disable=unused-argument + """ + Functionality: +@@ -7,17 +7,20 @@ + * active tags + """ + +-from __future__ import print_function ++ ++from __future__ import absolute_import, print_function + import sys + import platform + import os.path + import six + from behave.tag_matcher import ActiveTagMatcher + from behave4cmd0.setup_command_shell import setup_command_shell_processors4behave +-# PREPARED: +-# from behave.tag_matcher import setup_active_tag_values ++# PREPARED: from behave.tag_matcher import setup_active_tag_values + + ++# --------------------------------------------------------------------------- ++# TEST SUPPORT: For Active Tags ++# --------------------------------------------------------------------------- + def require_tool(tool_name): + """Check if a tool (an executable program) is provided on this platform. + +@@ -45,12 +48,14 @@ def require_tool(tool_name): + # print("TOOL-NOT-FOUND: %s" % tool_name) + return False + ++ + def as_bool_string(value): + if bool(value): + return "yes" + else: + return "no" + ++ + def discover_ci_server(): + # pylint: disable=invalid-name + ci_server = "none" +@@ -67,11 +72,17 @@ def discover_ci_server(): + return ci_server + + ++# --------------------------------------------------------------------------- ++# BEHAVE SUPPORT: Active Tags ++# --------------------------------------------------------------------------- + # -- MATCHES ANY TAGS: @use.with_{category}={value} + # NOTE: active_tag_value_provider provides category values for active tags. ++python_version = "%s.%s" % sys.version_info[:2] + active_tag_value_provider = { ++ "platform": sys.platform, + "python2": str(six.PY2).lower(), + "python3": str(six.PY3).lower(), ++ "python.version": python_version, + # -- python.implementation: cpython, pypy, jython, ironpython + "python.implementation": platform.python_implementation().lower(), + "pypy": str("__pypy__" in sys.modules).lower(), +@@ -82,17 +92,33 @@ def discover_ci_server(): + } + active_tag_matcher = ActiveTagMatcher(active_tag_value_provider) + ++ ++def print_active_tags_summary(): ++ active_tag_data = active_tag_value_provider ++ print("ACTIVE-TAG SUMMARY:") ++ print("use.with_python.version=%s" % active_tag_data.get("python.version")) ++ # print("use.with_platform=%s" % active_tag_data.get("platform")) ++ # print("use.with_os=%s" % active_tag_data.get("os")) ++ print() ++ ++ ++# --------------------------------------------------------------------------- ++# BEHAVE HOOKS: ++# --------------------------------------------------------------------------- + def before_all(context): + # -- SETUP ACTIVE-TAG MATCHER (with userdata): + # USE: behave -D browser=safari ... +- # NOT-NEEDED: setup_active_tag_values(active_tag_value_provider, +- # context.config.userdata) ++ # NOT-NEEDED: ++ # setup_active_tag_values(active_tag_value_provider, context.config.userdata) + setup_command_shell_processors4behave() ++ print_active_tags_summary() ++ + + def before_feature(context, feature): + if active_tag_matcher.should_exclude_with(feature.tags): + feature.skip(reason=active_tag_matcher.exclude_reason) + ++ + def before_scenario(context, scenario): + if active_tag_matcher.should_exclude_with(scenario.effective_tags): + scenario.skip(reason=active_tag_matcher.exclude_reason) +diff --git a/issue.features/issue0330.feature b/issue.features/issue0330.feature +index dc1ebe75..81cb6e29 100644 +--- a/issue.features/issue0330.feature ++++ b/issue.features/issue0330.feature +@@ -70,6 +70,7 @@ Feature: Issue #330: Skipped scenarios are included in junit reports when --no-s + And note that "bob.feature is skipped" + + ++ @not.with_python.version=3.8 + Scenario: Junit report for skipped feature is created with --show-skipped + When I run "behave --junit -t @tag1 --show-skipped @alice_and_bob.featureset" + Then it should pass with: +@@ -83,6 +84,23 @@ Feature: Issue #330: Skipped scenarios are included in junit reports when --no-s + <testsuite errors="0" failures="0" name="bob.Bob" skipped="1" tests="1" time="0.0"> + """ + ++ @use.with_python.version=3.8 ++ Scenario: Junit report for skipped feature is created with --show-skipped ++ When I run "behave --junit -t @tag1 --show-skipped @alice_and_bob.featureset" ++ Then it should pass with: ++ """ ++ 1 feature passed, 0 failed, 1 skipped ++ """ ++ And a file named "test_results/TESTS-alice.xml" exists ++ And a file named "test_results/TESTS-bob.xml" exists ++ And the file "test_results/TESTS-bob.xml" should contain: ++ """ ++ <testsuite name="bob.Bob" tests="1" errors="0" failures="0" skipped="1" time="0.0"> ++ """ ++ # -- HINT FOR: Python < 3.8 ++ # <testsuite errors="0" failures="0" name="bob.Bob" skipped="1" tests="1" time="0.0"> ++ ++ @not.with_python.version=3.8 + Scenario: Junit report for skipped scenario is neither shown nor counted with --no-skipped + When I run "behave --junit -t @tag1 --no-skipped" + Then it should pass with: +@@ -102,7 +120,30 @@ Feature: Issue #330: Skipped scenarios are included in junit reports when --no-s + """ + And note that "Charly2 is the skipped scenarion in charly.feature" + ++ @use.with_python.version=3.8 ++ Scenario: Junit report for skipped scenario is neither shown nor counted with --no-skipped ++ When I run "behave --junit -t @tag1 --no-skipped" ++ Then it should pass with: ++ """ ++ 2 features passed, 0 failed, 1 skipped ++ 2 scenarios passed, 0 failed, 2 skipped ++ """ ++ And a file named "test_results/TESTS-alice.xml" exists ++ And a file named "test_results/TESTS-charly.xml" exists ++ And the file "test_results/TESTS-charly.xml" should contain: ++ """ ++ <testsuite name="charly.Charly" tests="1" errors="0" failures="0" skipped="0" ++ """ ++ # -- HINT FOR: Python < 3.8 ++ # <testsuite errors="0" failures="0" name="charly.Charly" skipped="0" tests="1" ++ And the file "test_results/TESTS-charly.xml" should not contain: ++ """ ++ <testcase classname="charly.Charly" name="Charly2" ++ """ ++ And note that "Charly2 is the skipped scenarion in charly.feature" ++ + ++ @not.with_python.version=3.8 + Scenario: Junit report for skipped scenario is shown and counted with --show-skipped + When I run "behave --junit -t @tag1 --show-skipped" + Then it should pass with: +@@ -122,3 +163,26 @@ Feature: Issue #330: Skipped scenarios are included in junit reports when --no-s + """ + And note that "Charly2 is the skipped scenarion in charly.feature" + ++ ++ @use.with_python.version=3.8 ++ Scenario: Junit report for skipped scenario is shown and counted with --show-skipped ++ When I run "behave --junit -t @tag1 --show-skipped" ++ Then it should pass with: ++ """ ++ 2 features passed, 0 failed, 1 skipped ++ 2 scenarios passed, 0 failed, 2 skipped ++ """ ++ And a file named "test_results/TESTS-alice.xml" exists ++ And a file named "test_results/TESTS-charly.xml" exists ++ And the file "test_results/TESTS-charly.xml" should contain: ++ """ ++ <testsuite name="charly.Charly" tests="2" errors="0" failures="0" skipped="1" ++ """ ++ # HINT: Python < 3.8 ++ # <testsuite errors="0" failures="0" name="charly.Charly" skipped="1" tests="2" ++ And the file "test_results/TESTS-charly.xml" should contain: ++ """ ++ <testcase classname="charly.Charly" name="Charly2" status="skipped" ++ """ ++ And note that "Charly2 is the skipped scenarion in charly.feature" ++ +diff --git a/issue.features/issue0446.feature b/issue.features/issue0446.feature +index a2ed892d..901bdec5 100644 +--- a/issue.features/issue0446.feature ++++ b/issue.features/issue0446.feature +@@ -58,6 +58,7 @@ Feature: Issue #446 -- Support scenario hook-errors with JUnitReporter + behave.reporter.junit.show_hostname = False + """ + ++ @not.with_python.version=3.8 + Scenario: Hook error in before_scenario() + When I run "behave -f plain --junit features/before_scenario_failure.feature" + Then it should fail with: +@@ -86,6 +87,40 @@ Feature: Issue #446 -- Support scenario hook-errors with JUnitReporter + And note that "the traceback is contained in the XML element <error/>" + + ++ @use.with_python.version=3.8 ++ Scenario: Hook error in before_scenario() ++ When I run "behave -f plain --junit features/before_scenario_failure.feature" ++ Then it should fail with: ++ """ ++ 0 scenarios passed, 1 failed, 0 skipped ++ """ ++ And the command output should contain: ++ """ ++ HOOK-ERROR in before_scenario: RuntimeError: OOPS ++ """ ++ And the file "reports/TESTS-before_scenario_failure.xml" should contain: ++ """ ++ <testsuite name="before_scenario_failure.Alice" tests="1" errors="1" failures="0" skipped="0" ++ """ ++ # -- HINT FOR: Python < 3.8 ++ # <testsuite errors="1" failures="0" name="before_scenario_failure.Alice" skipped="0" tests="1" ++ And the file "reports/TESTS-before_scenario_failure.xml" should contain: ++ """ ++ <error type="RuntimeError" message="HOOK-ERROR in before_scenario: RuntimeError: OOPS"> ++ """ ++ # -- HINT FOR: Python < 3.8 ++ # <error message="HOOK-ERROR in before_scenario: RuntimeError: OOPS" type="RuntimeError"> ++ And the file "reports/TESTS-before_scenario_failure.xml" should contain: ++ """ ++ File "features/environment.py", line 6, in before_scenario ++ cause_hook_failure() ++ File "features/environment.py", line 2, in cause_hook_failure ++ raise RuntimeError("OOPS") ++ """ ++ And note that "the traceback is contained in the XML element <error/>" ++ ++ ++ @not.with_python.version=3.8 + Scenario: Hook error in after_scenario() + When I run "behave -f plain --junit features/after_scenario_failure.feature" + Then it should fail with: +@@ -114,3 +149,38 @@ Feature: Issue #446 -- Support scenario hook-errors with JUnitReporter + raise RuntimeError("OOPS") + """ + And note that "the traceback is contained in the XML element <error/>" ++ ++ ++ @use.with_python.version=3.8 ++ Scenario: Hook error in after_scenario() ++ When I run "behave -f plain --junit features/after_scenario_failure.feature" ++ Then it should fail with: ++ """ ++ 0 scenarios passed, 1 failed, 0 skipped ++ """ ++ And the command output should contain: ++ """ ++ Scenario: B1 ++ Given another step passes ... passed ++ HOOK-ERROR in after_scenario: RuntimeError: OOPS ++ """ ++ And the file "reports/TESTS-after_scenario_failure.xml" should contain: ++ """ ++ <testsuite name="after_scenario_failure.Bob" tests="1" errors="1" failures="0" skipped="0" ++ """ ++ # -- HINT FOR: Python < 3.8 ++ # <testsuite errors="1" failures="0" name="after_scenario_failure.Bob" skipped="0" tests="1" ++ And the file "reports/TESTS-after_scenario_failure.xml" should contain: ++ """ ++ <error type="RuntimeError" message="HOOK-ERROR in after_scenario: RuntimeError: OOPS"> ++ """ ++ # -- HINT FOR: Python < 3.8 ++ # <error message="HOOK-ERROR in after_scenario: RuntimeError: OOPS" type="RuntimeError"> ++ And the file "reports/TESTS-after_scenario_failure.xml" should contain: ++ """ ++ File "features/environment.py", line 10, in after_scenario ++ cause_hook_failure() ++ File "features/environment.py", line 2, in cause_hook_failure ++ raise RuntimeError("OOPS") ++ """ ++ And note that "the traceback is contained in the XML element <error/>" +diff --git a/issue.features/issue0457.feature b/issue.features/issue0457.feature +index f80640e9..46f96e9c 100644 +--- a/issue.features/issue0457.feature ++++ b/issue.features/issue0457.feature +@@ -24,6 +24,7 @@ Feature: Issue #457 -- Double-quotes in error messages of JUnit XML reports + """ + + ++ @not.with_python.version=3.8 + Scenario: Use failing assertation in a JUnit XML report + Given a file named "features/fails1.feature" with: + """ +@@ -44,6 +45,31 @@ Feature: Issue #457 -- Double-quotes in error messages of JUnit XML reports + <failure message="FAILED: My name is "Alice"" + """ + ++ @use.with_python.version=3.8 ++ Scenario: Use failing assertation in a JUnit XML report ++ Given a file named "features/fails1.feature" with: ++ """ ++ Feature: ++ Scenario: Alice ++ Given a step fails with message: ++ ''' ++ My name is "Alice" ++ ''' ++ """ ++ When I run "behave --junit features/fails1.feature" ++ Then it should fail with: ++ """ ++ 0 scenarios passed, 1 failed, 0 skipped ++ """ ++ And the file "reports/TESTS-fails1.xml" should contain: ++ """ ++ <failure type="AssertionError" message="FAILED: My name is "Alice""> ++ """ ++ # -- HINT FOR: Python < 3.8 ++ # <failure message="FAILED: My name is "Alice"" ++ ++ ++ @not.with_python.version=3.8 + Scenario: Use exception in a JUnit XML report + Given a file named "features/fails2.feature" with: + """ +@@ -63,3 +89,26 @@ Feature: Issue #457 -- Double-quotes in error messages of JUnit XML reports + """ + <error message="My name is "Bob" and <here> I am" + """ ++ ++ @use.with_python.version=3.8 ++ Scenario: Use exception in a JUnit XML report ++ Given a file named "features/fails2.feature" with: ++ """ ++ Feature: ++ Scenario: Bob ++ Given a step fails with error and message: ++ ''' ++ My name is "Bob" and <here> I am ++ ''' ++ """ ++ When I run "behave --junit features/fails2.feature" ++ Then it should fail with: ++ """ ++ 0 scenarios passed, 1 failed, 0 skipped ++ """ ++ And the file "reports/TESTS-fails2.xml" should contain: ++ """ ++ <error type="RuntimeError" message="My name is "Bob" and <here> I am"> ++ """ ++ # -- HINT FOR: Python < 3.8 ++ # <error message="My name is "Bob" and <here> I am" diff --git a/gnu/packages/patches/bitcoin-core-python-compat.patch b/gnu/packages/patches/bitcoin-core-python-compat.patch new file mode 100644 index 0000000000..6bf744124d --- /dev/null +++ b/gnu/packages/patches/bitcoin-core-python-compat.patch @@ -0,0 +1,28 @@ +Get rid of deprecation warning emitted by Python 3.8, which causes a test failure(!). + +https://github.com/bitcoin/bitcoin/pull/17931 + +Taken from upstream: + +https://github.com/bitcoin/bitcoin/commit/f117fb00da747147cddfb071c1427a2754c278cd + +diff --git a/test/functional/p2p_invalid_messages.py b/test/functional/p2p_invalid_messages.py +index 20864881c165..07eacf410d88 100755 +--- a/test/functional/p2p_invalid_messages.py ++++ b/test/functional/p2p_invalid_messages.py +@@ -145,13 +145,13 @@ def run_test(self): + def test_magic_bytes(self): + conn = self.nodes[0].add_p2p_connection(P2PDataStore()) + +- def swap_magic_bytes(): ++ async def swap_magic_bytes(): + conn._on_data = lambda: None # Need to ignore all incoming messages from now, since they come with "invalid" magic bytes + conn.magic_bytes = b'\x00\x11\x22\x32' + + # Call .result() to block until the atomic swap is complete, otherwise + # we might run into races later on +- asyncio.run_coroutine_threadsafe(asyncio.coroutine(swap_magic_bytes)(), NetworkThread.network_event_loop).result() ++ asyncio.run_coroutine_threadsafe(swap_magic_bytes(), NetworkThread.network_event_loop).result() + + with self.nodes[0].assert_debug_log(['PROCESSMESSAGE: INVALID MESSAGESTART ping']): + conn.send_message(messages.msg_ping(nonce=0xff)) diff --git a/gnu/packages/patches/clang-runtime-3.8-libsanitizer-mode-field.patch b/gnu/packages/patches/clang-runtime-3.8-libsanitizer-mode-field.patch new file mode 100644 index 0000000000..f4bca3ecb1 --- /dev/null +++ b/gnu/packages/patches/clang-runtime-3.8-libsanitizer-mode-field.patch @@ -0,0 +1,50 @@ +Adjust libsanitizer to ABI change in glibc 2.31. + +Adapted to 3.x from this upstream commit: +https://github.com/llvm/llvm-project/commit/947f9692440836dcb8d88b74b69dd379d85974ce + +diff --git a/lib/sanitizer_common/sanitizer_platform_limits_posix.cc b/lib/sanitizer_common/sanitizer_platform_limits_posix.cc +--- a/lib/sanitizer_common/sanitizer_platform_limits_posix.cc ++++ b/lib/sanitizer_common/sanitizer_platform_limits_posix.cc +@@ -1130,8 +1130,9 @@ CHECK_SIZE_AND_OFFSET(ipc_perm, cgid); + #ifndef __GLIBC_PREREQ + #define __GLIBC_PREREQ(x, y) 0 + #endif +-#if !defined(__aarch64__) || !SANITIZER_LINUX || __GLIBC_PREREQ (2, 21) +-/* On aarch64 glibc 2.20 and earlier provided incorrect mode field. */ ++#if !SANITIZER_LINUX || __GLIBC_PREREQ (2, 31) ++/* glibc 2.30 and earlier provided 16-bit mode field instead of 32-bit ++ on many architectures. */ + CHECK_SIZE_AND_OFFSET(ipc_perm, mode); + #endif + +diff --git a/lib/sanitizer_common/sanitizer_platform_limits_posix.h b/lib/sanitizer_common/sanitizer_platform_limits_posix.h +--- a/lib/sanitizer_common/sanitizer_platform_limits_posix.h ++++ b/lib/sanitizer_common/sanitizer_platform_limits_posix.h +@@ -188,17 +188,16 @@ namespace __sanitizer { + unsigned __seq; + u64 __unused1; + u64 __unused2; +-#elif defined(__mips__) || defined(__aarch64__) +- unsigned int mode; +- unsigned short __seq; +- unsigned short __pad1; +- unsigned long __unused1; +- unsigned long __unused2; ++#elif defined(__sparc__) ++ unsigned mode; ++ unsigned short __pad2; ++ unsigned short __seq; ++ unsigned long long __unused1; ++ unsigned long long __unused2; + #else +- unsigned short mode; +- unsigned short __pad1; +- unsigned short __seq; +- unsigned short __pad2; ++ unsigned int mode; ++ unsigned short __seq; ++ unsigned short __pad2; + #if defined(__x86_64__) && !defined(_LP64) + u64 __unused1; + u64 __unused2; diff --git a/gnu/packages/patches/clang-runtime-3.9-libsanitizer-mode-field.patch b/gnu/packages/patches/clang-runtime-3.9-libsanitizer-mode-field.patch new file mode 100644 index 0000000000..2598a1bdeb --- /dev/null +++ b/gnu/packages/patches/clang-runtime-3.9-libsanitizer-mode-field.patch @@ -0,0 +1,50 @@ +Adjust libsanitizer to ABI change in glibc 2.31. + +Adapted to 3.x from this upstream commit: +https://github.com/llvm/llvm-project/commit/947f9692440836dcb8d88b74b69dd379d85974ce + +diff --git a/lib/sanitizer_common/sanitizer_platform_limits_posix.cc b/lib/sanitizer_common/sanitizer_platform_limits_posix.cc +--- a/lib/sanitizer_common/sanitizer_platform_limits_posix.cc ++++ b/lib/sanitizer_common/sanitizer_platform_limits_posix.cc +@@ -1139,8 +1139,9 @@ CHECK_SIZE_AND_OFFSET(ipc_perm, uid); + CHECK_SIZE_AND_OFFSET(ipc_perm, gid); + CHECK_SIZE_AND_OFFSET(ipc_perm, cuid); + CHECK_SIZE_AND_OFFSET(ipc_perm, cgid); +-#if !defined(__aarch64__) || !SANITIZER_LINUX || __GLIBC_PREREQ (2, 21) +-/* On aarch64 glibc 2.20 and earlier provided incorrect mode field. */ ++#if !SANITIZER_LINUX || __GLIBC_PREREQ (2, 31) ++/* glibc 2.30 and earlier provided 16-bit mode field instead of 32-bit ++ on many architectures. */ + CHECK_SIZE_AND_OFFSET(ipc_perm, mode); + #endif + +diff --git a/lib/sanitizer_common/sanitizer_platform_limits_posix.h b/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.h +--- a/lib/sanitizer_common/sanitizer_platform_limits_posix.h ++++ b/lib/sanitizer_common/sanitizer_platform_limits_posix.h +@@ -194,17 +194,16 @@ namespace __sanitizer { + unsigned __seq; + u64 __unused1; + u64 __unused2; +-#elif defined(__mips__) || defined(__aarch64__) || defined(__s390x__) +- unsigned int mode; +- unsigned short __seq; +- unsigned short __pad1; +- unsigned long __unused1; +- unsigned long __unused2; ++#elif defined(__sparc__) ++ unsigned mode; ++ unsigned short __pad2; ++ unsigned short __seq; ++ unsigned long long __unused1; ++ unsigned long long __unused2; + #else +- unsigned short mode; +- unsigned short __pad1; +- unsigned short __seq; +- unsigned short __pad2; ++ unsigned int mode; ++ unsigned short __seq; ++ unsigned short __pad2; + #if defined(__x86_64__) && !defined(_LP64) + u64 __unused1; + u64 __unused2; diff --git a/gnu/packages/patches/clang-runtime-9-libsanitizer-mode-field.patch b/gnu/packages/patches/clang-runtime-9-libsanitizer-mode-field.patch new file mode 100644 index 0000000000..ebb080ed9d --- /dev/null +++ b/gnu/packages/patches/clang-runtime-9-libsanitizer-mode-field.patch @@ -0,0 +1,60 @@ +Adjust libsanitizer to ABI change in glibc 2.31. + +Taken from this upstream commit: +https://github.com/llvm/llvm-project/commit/947f9692440836dcb8d88b74b69dd379d85974ce + +diff --git a/lib/sanitizer_common/sanitizer_platform_limits_posix.cc b/lib/sanitizer_common/sanitizer_platform_limits_posix.cc +--- a/lib/sanitizer_common/sanitizer_platform_limits_posix.cc ++++ b/lib/sanitizer_common/sanitizer_platform_limits_posix.cc +@@ -1126,8 +1126,9 @@ CHECK_SIZE_AND_OFFSET(ipc_perm, uid); + CHECK_SIZE_AND_OFFSET(ipc_perm, gid); + CHECK_SIZE_AND_OFFSET(ipc_perm, cuid); + CHECK_SIZE_AND_OFFSET(ipc_perm, cgid); +-#if !defined(__aarch64__) || !SANITIZER_LINUX || __GLIBC_PREREQ (2, 21) +-/* On aarch64 glibc 2.20 and earlier provided incorrect mode field. */ ++#if !SANITIZER_LINUX || __GLIBC_PREREQ (2, 31) ++/* glibc 2.30 and earlier provided 16-bit mode field instead of 32-bit ++ on many architectures. */ + CHECK_SIZE_AND_OFFSET(ipc_perm, mode); + #endif + +diff --git a/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.h b/compiler-rt/lib/sanitizer_common/sanitizer_platform_limits_posix.h +--- a/lib/sanitizer_common/sanitizer_platform_limits_posix.h ++++ b/lib/sanitizer_common/sanitizer_platform_limits_posix.h +@@ -203,28 +203,15 @@ namespace __sanitizer { + u64 __unused1; + u64 __unused2; + #elif defined(__sparc__) +-#if defined(__arch64__) +- unsigned mode; +- unsigned short __pad1; +-#else +- unsigned short __pad1; +- unsigned short mode; +- unsigned short __pad2; +-#endif +- unsigned short __seq; +- unsigned long long __unused1; +- unsigned long long __unused2; +-#elif defined(__mips__) || defined(__aarch64__) || defined(__s390x__) +- unsigned int mode; +- unsigned short __seq; +- unsigned short __pad1; +- unsigned long __unused1; +- unsigned long __unused2; ++ unsigned mode; ++ unsigned short __pad2; ++ unsigned short __seq; ++ unsigned long long __unused1; ++ unsigned long long __unused2; + #else +- unsigned short mode; +- unsigned short __pad1; +- unsigned short __seq; +- unsigned short __pad2; ++ unsigned int mode; ++ unsigned short __seq; ++ unsigned short __pad2; + #if defined(__x86_64__) && !defined(_LP64) + u64 __unused1; + u64 __unused2; diff --git a/gnu/packages/patches/cmake-curl-certificates.patch b/gnu/packages/patches/cmake-curl-certificates.patch index 36252083f8..7fe2615271 100644 --- a/gnu/packages/patches/cmake-curl-certificates.patch +++ b/gnu/packages/patches/cmake-curl-certificates.patch @@ -6,19 +6,19 @@ as well as /etc/ssl/certs. --- cmake-3.13.1/Source/cmCurl.cxx 2019-09-10 17:27:36.926907260 +0200 +++ cmake-3.13.1/Source/cmCurl.cxx 2019-09-10 17:52:35.475903919 +0200 -@@ -4,11 +4,8 @@ - - #include "cmThirdParty.h" +@@ -2,11 +2,8 @@ + file Copyright.txt or https://cmake.org/licensing for details. */ + #include "cmCurl.h" -#if !defined(CMAKE_USE_SYSTEM_CURL) && !defined(_WIN32) && \ - !defined(__APPLE__) && !defined(CURL_CA_BUNDLE) && !defined(CURL_CA_PATH) # define CMAKE_FIND_CAFILE # include "cmSystemTools.h" -#endif + #include "cmStringAlgorithms.h" // curl versions before 7.21.5 did not provide this error code - #if defined(LIBCURL_VERSION_NUM) && LIBCURL_VERSION_NUM < 0x071505 -@@ -29,6 +26,19 @@ std::string cmCurlSetCAInfo(::CURL* curl +@@ -30,6 +27,19 @@ ::CURLcode res = ::curl_easy_setopt(curl, CURLOPT_CAINFO, cafile); check_curl_result(res, "Unable to set TLS/SSL Verify CAINFO: "); } diff --git a/gnu/packages/patches/collectd-5.11.0-noinstallvar.patch b/gnu/packages/patches/collectd-5.11.0-noinstallvar.patch new file mode 100644 index 0000000000..39cd9c763e --- /dev/null +++ b/gnu/packages/patches/collectd-5.11.0-noinstallvar.patch @@ -0,0 +1,21 @@ +Disable creation of /var and /etc + +--- a/Makefile.am 2020-03-08 16:57:09.511535600 +0100 ++++ b/Makefile.am 2020-04-21 11:36:49.827182272 +0200 +@@ -2376,16 +2376,6 @@ + endif + + install-exec-hook: +- $(mkinstalldirs) $(DESTDIR)$(localstatedir)/run +- $(mkinstalldirs) $(DESTDIR)$(localstatedir)/lib/$(PACKAGE_NAME) +- $(mkinstalldirs) $(DESTDIR)$(localstatedir)/log +- $(mkinstalldirs) $(DESTDIR)$(sysconfdir) +- if test -e $(DESTDIR)$(sysconfdir)/collectd.conf; \ +- then \ +- $(INSTALL) -m 0640 $(builddir)/src/collectd.conf $(DESTDIR)$(sysconfdir)/collectd.conf.pkg-orig; \ +- else \ +- $(INSTALL) -m 0640 $(builddir)/src/collectd.conf $(DESTDIR)$(sysconfdir)/collectd.conf; \ +- fi; \ + $(mkinstalldirs) $(DESTDIR)$(cpkgdatadir) + $(INSTALL) -m 0644 $(srcdir)/src/types.db $(DESTDIR)$(cpkgdatadir)/types.db; + $(INSTALL) -m 0644 $(srcdir)/src/postgresql_default.conf \ diff --git a/gnu/packages/patches/coreutils-ls.patch b/gnu/packages/patches/coreutils-ls.patch new file mode 100644 index 0000000000..59cbbf00b5 --- /dev/null +++ b/gnu/packages/patches/coreutils-ls.patch @@ -0,0 +1,117 @@ +Patch taken from upstream to fix cross-compilation for aarch64. This can be +removed on the next coreutils release. + +From 10fcb97bd728f09d4a027eddf8ad2900f0819b0a Mon Sep 17 00:00:00 2001 +From: Paul Eggert <eggert@cs.ucla.edu> +Date: Thu, 5 Mar 2020 17:25:29 -0800 +Subject: [PATCH] ls: restore 8.31 behavior on removed directories + +* NEWS: Mention this. +* src/ls.c: Do not include <sys/sycall.h> +(print_dir): Don't worry about whether the directory is removed. +* tests/ls/removed-directory.sh: Adjust to match new (i.e., old) +behavior. +--- + NEWS | 6 ++++++ + src/ls.c | 22 ---------------------- + tests/ls/removed-directory.sh | 10 ++-------- + 3 files changed, 8 insertions(+), 30 deletions(-) + +diff --git a/NEWS b/NEWS +index fdc8bf5db..653e7178b 100644 +--- a/NEWS ++++ b/NEWS +@@ -2,6 +2,12 @@ GNU coreutils NEWS -*- outline -*- + + * Noteworthy changes in release ?.? (????-??-??) [?] + ++** Changes in behavior ++ ++ On GNU/Linux systems, ls no longer issues an error message on ++ directory merely because it was removed. This reverts a change ++ that was made in release 8.32. ++ + + * Noteworthy changes in release 8.32 (2020-03-05) [stable] + +diff --git a/src/ls.c b/src/ls.c +index 24b983287..4acf5f44d 100644 +--- a/src/ls.c ++++ b/src/ls.c +@@ -49,10 +49,6 @@ + # include <sys/ptem.h> + #endif + +-#ifdef __linux__ +-# include <sys/syscall.h> +-#endif +- + #include <stdio.h> + #include <assert.h> + #include <setjmp.h> +@@ -2896,7 +2892,6 @@ print_dir (char const *name, char const *realname, bool command_line_arg) + struct dirent *next; + uintmax_t total_blocks = 0; + static bool first = true; +- bool found_any_entries = false; + + errno = 0; + dirp = opendir (name); +@@ -2972,7 +2967,6 @@ print_dir (char const *name, char const *realname, bool command_line_arg) + next = readdir (dirp); + if (next) + { +- found_any_entries = true; + if (! file_ignored (next->d_name)) + { + enum filetype type = unknown; +@@ -3018,22 +3012,6 @@ print_dir (char const *name, char const *realname, bool command_line_arg) + if (errno != EOVERFLOW) + break; + } +-#ifdef __linux__ +- else if (! found_any_entries) +- { +- /* If readdir finds no directory entries at all, not even "." or +- "..", then double check that the directory exists. */ +- if (syscall (SYS_getdents, dirfd (dirp), NULL, 0) == -1 +- && errno != EINVAL) +- { +- /* We exclude EINVAL as that pertains to buffer handling, +- and we've passed NULL as the buffer for simplicity. +- ENOENT is returned if appropriate before buffer handling. */ +- file_failure (command_line_arg, _("reading directory %s"), name); +- } +- break; +- } +-#endif + else + break; + +diff --git a/tests/ls/removed-directory.sh b/tests/ls/removed-directory.sh +index e8c835dab..fe8f929a1 100755 +--- a/tests/ls/removed-directory.sh ++++ b/tests/ls/removed-directory.sh +@@ -26,20 +26,14 @@ case $host_triplet in + *) skip_ 'non linux kernel' ;; + esac + +-LS_FAILURE=2 +- +-cat <<\EOF >exp-err || framework_failure_ +-ls: reading directory '.': No such file or directory +-EOF +- + cwd=$(pwd) + mkdir d || framework_failure_ + cd d || framework_failure_ + rmdir ../d || framework_failure_ + +-returns_ $LS_FAILURE ls >../out 2>../err || fail=1 ++ls >../out 2>../err || fail=1 + cd "$cwd" || framework_failure_ + compare /dev/null out || fail=1 +-compare exp-err err || fail=1 ++compare /dev/null err || fail=1 + + Exit $fail diff --git a/gnu/packages/patches/curl-use-ssl-cert-env.patch b/gnu/packages/patches/curl-use-ssl-cert-env.patch new file mode 100644 index 0000000000..c8e80b4445 --- /dev/null +++ b/gnu/packages/patches/curl-use-ssl-cert-env.patch @@ -0,0 +1,64 @@ +Make libcurl respect the SSL_CERT_{DIR,FILE} variables by default. The variables +are fetched during initialization to preserve thread-safety (curl_global_init(3) +must be called when no other threads exist). + +This fixes network functionality in rust:cargo, and probably removes the need +for other future workarounds. +=================================================================== +--- curl-7.66.0.orig/lib/easy.c 2020-01-02 15:43:11.883921171 +0100 ++++ curl-7.66.0/lib/easy.c 2020-01-02 16:18:54.691882797 +0100 +@@ -134,6 +134,9 @@ + # pragma warning(default:4232) /* MSVC extension, dllimport identity */ + #endif + ++char * Curl_ssl_cert_dir = NULL; ++char * Curl_ssl_cert_file = NULL; ++ + /** + * curl_global_init() globally initializes curl given a bitwise set of the + * different features of what to initialize. +@@ -155,6 +158,9 @@ + #endif + } + ++ Curl_ssl_cert_dir = curl_getenv("SSL_CERT_DIR"); ++ Curl_ssl_cert_file = curl_getenv("SSL_CERT_FILE"); ++ + if(!Curl_ssl_init()) { + DEBUGF(fprintf(stderr, "Error: Curl_ssl_init failed\n")); + return CURLE_FAILED_INIT; +@@ -260,6 +266,9 @@ + Curl_ssl_cleanup(); + Curl_resolver_global_cleanup(); + ++ free(Curl_ssl_cert_dir); ++ free(Curl_ssl_cert_file); ++ + #ifdef WIN32 + Curl_win32_cleanup(init_flags); + #endif +diff -ur curl-7.66.0.orig/lib/url.c curl-7.66.0/lib/url.c +--- curl-7.66.0.orig/lib/url.c 2020-01-02 15:43:11.883921171 +0100 ++++ curl-7.66.0/lib/url.c 2020-01-02 16:21:11.563880346 +0100 +@@ -524,6 +524,21 @@ + if(result) + return result; + #endif ++ extern char * Curl_ssl_cert_dir; ++ extern char * Curl_ssl_cert_file; ++ if(Curl_ssl_cert_dir) { ++ if(result = Curl_setstropt(&set->str[STRING_SSL_CAPATH_ORIG], Curl_ssl_cert_dir)) ++ return result; ++ if(result = Curl_setstropt(&set->str[STRING_SSL_CAPATH_PROXY], Curl_ssl_cert_dir)) ++ return result; ++ } ++ ++ if(Curl_ssl_cert_file) { ++ if(result = Curl_setstropt(&set->str[STRING_SSL_CAFILE_ORIG], Curl_ssl_cert_file)) ++ return result; ++ if(result = Curl_setstropt(&set->str[STRING_SSL_CAFILE_PROXY], Curl_ssl_cert_file)) ++ return result; ++ } + } + + set->wildcard_enabled = FALSE; diff --git a/gnu/packages/patches/cyrus-sasl-ac-try-run-fix.patch b/gnu/packages/patches/cyrus-sasl-ac-try-run-fix.patch new file mode 100644 index 0000000000..8662e812e9 --- /dev/null +++ b/gnu/packages/patches/cyrus-sasl-ac-try-run-fix.patch @@ -0,0 +1,12 @@ +--- a/m4/sasl2.m4 2018-11-18 22:33:29.902625600 +0300 ++++ b/m4/sasl2.m4 2018-11-18 22:33:59.828746176 +0300 +@@ -339,7 +339,8 @@ + ], + [ AC_DEFINE(HAVE_GSS_SPNEGO,,[Define if your GSSAPI implementation supports SPNEGO]) + AC_MSG_RESULT(yes) ], +- AC_MSG_RESULT(no)) ++ AC_MSG_RESULT(no), ++ AC_MSG_RESULT(no)) + LIBS="$cmu_save_LIBS" + + else diff --git a/gnu/packages/patches/datefudge-gettimeofday.patch b/gnu/packages/patches/datefudge-gettimeofday.patch new file mode 100644 index 0000000000..11c7640869 --- /dev/null +++ b/gnu/packages/patches/datefudge-gettimeofday.patch @@ -0,0 +1,13 @@ +Add the 'restrict' qualifier to match the 'gettimeofday' declaration found +in glibc 2.31. + +--- datefudge-1.23/datefudge.c 2020-02-17 22:35:21.343341725 +0100 ++++ datefudge-1.23/datefudge.c 2020-02-17 22:35:49.619117874 +0100 +@@ -78,6 +78,6 @@ + return 0; + } + +-int gettimeofday(struct timeval *x, struct timezone *y) { ++int gettimeofday(struct timeval *restrict x, void *restrict y) { + return __gettimeofday(x,y); + } diff --git a/gnu/packages/patches/dconf-meson-0.52.patch b/gnu/packages/patches/dconf-meson-0.52.patch new file mode 100644 index 0000000000..c636edc108 --- /dev/null +++ b/gnu/packages/patches/dconf-meson-0.52.patch @@ -0,0 +1,19 @@ +Fix build failure with Meson 0.52. + +Taken from upstream: +https://gitlab.gnome.org/GNOME/dconf/commit/7ad890fb7a2ec90a777a756a1fa20a615ec7245e +https://gitlab.gnome.org/GNOME/dconf/merge_requests/54 + +diff --git a/client/meson.build b/client/meson.build +index f3b7122cb05bfa7bb481c487e3cd052aa1ad58e5..de6387e2cac2aba12b83f2614c277bada434fd16 100644 +--- a/client/meson.build ++++ b/client/meson.build +@@ -28,7 +28,7 @@ libdconf_client = static_library( + + libdconf_client_dep = declare_dependency( + dependencies: gio_dep, +- link_whole: libdconf_client, ++ link_with: libdconf_client, + ) + + libdconf = shared_library( diff --git a/gnu/packages/patches/doxygen-1.8.17-runtests.patch b/gnu/packages/patches/doxygen-1.8.17-runtests.patch new file mode 100644 index 0000000000..0340c72448 --- /dev/null +++ b/gnu/packages/patches/doxygen-1.8.17-runtests.patch @@ -0,0 +1,73 @@ +1.8.17 was released with a broken test runner. + +https://github.com/doxygen/doxygen/issues/7464 + +Taken from upstream: +https://github.com/doxygen/doxygen/commit/cd9dee013dc749a10bbe019c350e0e62b6635795 + +diff --git a/testing/runtests.py b/testing/runtests.py +index a4118b865..10fe50214 100755 +--- a/testing/runtests.py ++++ b/testing/runtests.py +@@ -3,6 +3,7 @@ + from __future__ import print_function + import argparse, glob, itertools, re, shutil, os, sys + import subprocess ++import shlex + + config_reg = re.compile('.*\/\/\s*(?P<name>\S+):\s*(?P<value>.*)$') + +@@ -28,10 +29,10 @@ def xpopen(cmd, cmd1="",encoding='utf-8-sig', getStderr=False): + return os.popen(cmd).read() # Python 2 without encoding + else: + if (getStderr): +- proc = subprocess.run(cmd1,encoding=encoding,capture_output=True) # Python 3 with encoding +- return proc.stderr ++ proc = subprocess.Popen(shlex.split(cmd1),stdout=subprocess.PIPE,stderr=subprocess.PIPE,encoding=encoding) # Python 3 with encoding ++ return proc.stderr.read() + else: +- proc = subprocess.Popen(cmd,stdout=subprocess.PIPE,stderr=subprocess.PIPE,encoding=encoding) # Python 3 with encoding ++ proc = subprocess.Popen(shlex.split(cmd),stdout=subprocess.PIPE,stderr=subprocess.PIPE,encoding=encoding) # Python 3 with encoding + return proc.stdout.read() + + class Tester: +@@ -137,7 +138,7 @@ def prepare_test(self): + print('GENERATE_DOCBOOK=NO', file=f) + if (self.args.xhtml): + print('GENERATE_HTML=YES', file=f) +- # HTML_OUTPUT can also be set locally ++ # HTML_OUTPUT can also have been set locally + print('HTML_OUTPUT=%s/html' % self.test_out, file=f) + print('HTML_FILE_EXTENSION=.xhtml', file=f) + if (self.args.pdf): +@@ -184,7 +185,7 @@ def update_test(self,testmgr): + print('Non-existing file %s after \'check:\' statement' % check_file) + return + # convert output to canonical form +- data = xpopen('%s --format --noblanks --nowarning %s' % (self.args.xmllint,check_file)).read() ++ data = xpopen('%s --format --noblanks --nowarning %s' % (self.args.xmllint,check_file)) + if data: + # strip version + data = re.sub(r'xsd" version="[0-9.-]+"','xsd" version=""',data).rstrip('\n') +@@ -326,7 +327,7 @@ def perform_test(self,testmgr): + tests.append(glob.glob('%s/*.xml' % (docbook_output))) + tests.append(glob.glob('%s/*/*/*.xml' % (docbook_output))) + tests = ' '.join(list(itertools.chain.from_iterable(tests))).replace(self.args.outputdir +'/','').replace('\\','/') +- exe_string = '%s --nonet --postvalid %s' % (self.args.xmllint,tests) ++ exe_string = '%s --noout --nonet --postvalid %s' % (self.args.xmllint,tests) + exe_string1 = exe_string + exe_string += ' %s' % (redirx) + exe_string += ' %s more "%s/temp"' % (separ,docbook_output) +@@ -346,7 +347,11 @@ def perform_test(self,testmgr): + redirx=' 2> %s/temp >nul:'%html_output + else: + redirx='2>%s/temp >/dev/null'%html_output +- exe_string = '%s --path dtd --nonet --postvalid %s/*xhtml' % (self.args.xmllint,html_output) ++ check_file = [] ++ check_file.append(glob.glob('%s/*.xhtml' % (html_output))) ++ check_file.append(glob.glob('%s/*/*/*.xhtml' % (html_output))) ++ check_file = ' '.join(list(itertools.chain.from_iterable(check_file))).replace(self.args.outputdir +'/','').replace('\\','/') ++ exe_string = '%s --noout --path dtd --nonet --postvalid %s' % (self.args.xmllint,check_file) + exe_string1 = exe_string + exe_string += ' %s' % (redirx) + exe_string += ' %s more "%s/temp"' % (separ,html_output) diff --git a/gnu/packages/patches/doxygen-test.patch b/gnu/packages/patches/doxygen-test.patch index 8ccb9ec3c4..1c0d4eb946 100644 --- a/gnu/packages/patches/doxygen-test.patch +++ b/gnu/packages/patches/doxygen-test.patch @@ -5,19 +5,40 @@ test. diff -u -r doxygen-1.8.7.orig/testing/012/citelist.xml doxygen-1.8.7/testing/012/citelist.xml --- doxygen-1.8.7.orig/testing/012/citelist.xml 2014-04-24 23:43:34.000000000 +0200 +++ doxygen-1.8.7/testing/012/citelist.xml 2014-04-24 23:49:43.000000000 +0200 -@@ -6,17 +6,6 @@ +@@ -6,38 +6,6 @@ <briefdescription> </briefdescription> <detaileddescription> - <para> - <variablelist> - <varlistentry> -- <term><anchor id="citelist_1CITEREF_knuth79"/>[1]</term> +- <term><anchor id="citelist_1CITEREF_Be09"/>[1]</term> +- </varlistentry> +- <listitem> +- <para>P.<nonbreakablespace/>Belotti. <ulink url="http://doi.org/10.1007/978-1-4614-1927-3_5">Disjunctive cuts for non-convex MINLP</ulink>. In <ulink url="#CITEREF_LeLe12">Lee and Leyffer</ulink> <ulink url="#CITEREF_LeLe12">[4]</ulink>, pages 117<ndash/>144.</para> +- <para/> +- </listitem> +- <varlistentry> +- <term><anchor id="citelist_1CITEREF_BertholdHeinzVigerske2009"/>[2]</term> +- </varlistentry> +- <listitem> +- <para>T.<nonbreakablespace/>Berthold, S.<nonbreakablespace/>Heinz, and S.<nonbreakablespace/>Vigerske. <ulink url="http://doi.org/10.1007/978-1-4614-1927-3_15">Extending a CIP framework to solve MIQCPs</ulink>. In <ulink url="#CITEREF_LeLe12">Lee and Leyffer</ulink> <ulink url="#CITEREF_LeLe12">[4]</ulink>, pages 427<ndash/>444.</para> +- <para/> +- </listitem> +- <varlistentry> +- <term><anchor id="citelist_1CITEREF_knuth79"/>[3]</term> - </varlistentry> - <listitem> - <para>Donald<nonbreakablespace/>E. Knuth. <emphasis>Tex and Metafont, New Directions in Typesetting</emphasis>. American Mathematical Society and Digital Press, Stanford, 1979.</para> - <para/> - </listitem> +- <varlistentry> +- <term><anchor id="citelist_1CITEREF_LeLe12"/>[4]</term> +- </varlistentry> +- <listitem> +- <para>Jon Lee and Sven Leyffer, editors. <ulink url="http://doi.org/10.1007/978-1-4614-1927-3"><emphasis>Mixed Integer Nonlinear Programming</emphasis></ulink>, volume 154 of <emphasis>The IMA Volumes in Mathematics and its Applications</emphasis>. Springer, 2012.</para> +- <para/> +- </listitem> - </variablelist> - </para> </detaileddescription> @@ -26,13 +47,14 @@ diff -u -r doxygen-1.8.7.orig/testing/012/citelist.xml doxygen-1.8.7/testing/012 diff -u -r doxygen-1.8.7.orig/testing/012/indexpage.xml doxygen-1.8.7/testing/012/indexpage.xml --- doxygen-1.8.7.orig/testing/012/indexpage.xml 2014-04-24 23:43:34.000000000 +0200 +++ doxygen-1.8.7/testing/012/indexpage.xml 2014-04-24 23:44:05.000000000 +0200 -@@ -4,7 +4,7 @@ - <compoundname>index</compoundname> - <title>My Project</title> +@@ -6,8 +6,8 @@ + <briefdescription> + </briefdescription> <detaileddescription> -- <para>See <ref refid="citelist_1CITEREF_knuth79" kindref="member">[1]</ref> for more info. </para> -+ <para>See knuth79 for more info. </para> +- <para>See <ref refid="citelist_1CITEREF_knuth79" kindref="member">[3]</ref> for more info.</para> +- <para>Other references with cross references see <ref refid="citelist_1CITEREF_Be09" kindref="member">[1]</ref> and <ref refid="citelist_1CITEREF_BertholdHeinzVigerske2009" kindref="member">[2]</ref> for more info. </para> ++ <para>See knuth79 for more info.</para> ++ <para>Other references with cross references see Be09 and BertholdHeinzVigerske2009 for more info. </para> </detaileddescription> </compounddef> </doxygen> - diff --git a/gnu/packages/patches/evolution-data-server-libical-compat.patch b/gnu/packages/patches/evolution-data-server-libical-compat.patch index a988519ea0..da4302d42e 100644 --- a/gnu/packages/patches/evolution-data-server-libical-compat.patch +++ b/gnu/packages/patches/evolution-data-server-libical-compat.patch @@ -8,29 +8,29 @@ Adapted from upstream: https://gitlab.gnome.org/GNOME/evolution-data-server/commit/77384ab552c19bf374dbeda53dc37f98d07bd4ec diff --git a/CMakeLists.txt b/CMakeLists.txt +index e16b8b225..b3c881967 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt -@@ -108,7 +108,7 @@ +@@ -111,7 +111,7 @@ add_definitions(-DSOUP_VERSION_MIN_REQUIRED=${soup_encoded_version}) set(gcr_minimum_version 3.4) set(libgdata_minimum_version 0.15.1) --set(libical_minimum_version 2.0) -+set(libical_minimum_version 3.0.7) +-set(libical_glib_minimum_version 3.0.5) ++set(libical_glib_minimum_version 3.0.7) set(libsecret_minimum_version 0.5) set(libxml_minimum_version 2.0.0) set(sqlite_minimum_version 3.7.17) diff --git a/src/calendar/libedata-cal/e-cal-meta-backend.c b/src/calendar/libedata-cal/e-cal-meta-backend.c -index 7501f2a43dcc3af91e93e89751caf76e77c2ac23..93f4806ba2c5193f746e9fae5bf74d08ad05f8bf 100644 +index 7501f2a43..93f4806ba 100644 --- a/src/calendar/libedata-cal/e-cal-meta-backend.c +++ b/src/calendar/libedata-cal/e-cal-meta-backend.c -@@ -3958,9 +3958,8 @@ +@@ -4067,8 +4067,7 @@ e_cal_meta_backend_inline_local_attachments_sync (ECalMetaBackend *meta_backend, gchar *base64; base64 = g_base64_encode ((const guchar *) content, len); -- new_attach = icalattach_new_from_data (base64, NULL, NULL); -+ new_attach = icalattach_new_from_data (base64, (GFunc) g_free, NULL); +- new_attach = i_cal_attach_new_from_data (base64, NULL, NULL); ++ new_attach = i_cal_attach_new_from_data (base64, (GFunc) g_free, NULL); g_free (content); - g_free (base64); ecmb_remove_all_but_filename_parameter (prop); - diff --git a/gnu/packages/patches/extempore-unbundle-external-dependencies.patch b/gnu/packages/patches/extempore-unbundle-external-dependencies.patch new file mode 100644 index 0000000000..e9484f7994 --- /dev/null +++ b/gnu/packages/patches/extempore-unbundle-external-dependencies.patch @@ -0,0 +1,140 @@ +Remove build machinery for bundled dependencies. + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 89e6125e..c5e90750 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -36,7 +36,7 @@ endif() + if(PACKAGE) + # this needs to be set before project() is called + set(CMAKE_OSX_DEPLOYMENT_TARGET 10.12) +- set(ASSETS ON) # necessary for packaging ++ set(ASSETS OFF) # necessary for packaging + message(STATUS "Building Extempore for binary distribution (assets directory will be downloaded)") + endif() + +@@ -134,71 +134,6 @@ else() + message(FATAL_ERROR "Sorry, Extempore isn't supported on this platform - macOS, Linux & Windows only.") + endif() + +-######## +-# PCRE # +-######## +- +-# current in-tree PCRE version: 8.38 +- +-add_library(pcre STATIC +- # headers +- src/pcre/config.h +- src/pcre/pcre.h +- src/pcre/ucp.h +- # source files +- src/pcre/pcre_chartables.c +- src/pcre/pcre_compile.c +- src/pcre/pcre_exec.c +- src/pcre/pcre_globals.c +- src/pcre/pcre_internal.h +- src/pcre/pcre_newline.c +- src/pcre/pcre_tables.c +- ) +- +-target_compile_definitions(pcre +- PRIVATE -DHAVE_CONFIG_H +- ) +- +-if(PACKAGE) +- target_compile_options(pcre +- PRIVATE -mtune=generic) +-endif() +- +-############# +-# portaudio # +-############# +- +-add_library(portaudio STATIC +- src/portaudio/src/common/pa_allocation.c +- src/portaudio/src/common/pa_allocation.h +- src/portaudio/src/common/pa_converters.c +- src/portaudio/src/common/pa_converters.h +- src/portaudio/src/common/pa_cpuload.c +- src/portaudio/src/common/pa_cpuload.h +- src/portaudio/src/common/pa_debugprint.c +- src/portaudio/src/common/pa_debugprint.h +- src/portaudio/src/common/pa_dither.c +- src/portaudio/src/common/pa_dither.h +- src/portaudio/src/common/pa_endianness.h +- src/portaudio/src/common/pa_front.c +- src/portaudio/src/common/pa_hostapi.h +- src/portaudio/src/common/pa_memorybarrier.h +- src/portaudio/src/common/pa_process.c +- src/portaudio/src/common/pa_process.h +- src/portaudio/src/common/pa_ringbuffer.c +- src/portaudio/src/common/pa_ringbuffer.h +- src/portaudio/src/common/pa_stream.c +- src/portaudio/src/common/pa_stream.h +- src/portaudio/src/common/pa_trace.c +- src/portaudio/src/common/pa_trace.h +- src/portaudio/src/common/pa_types.h +- src/portaudio/src/common/pa_util.h +- ) +- +-target_include_directories(portaudio +- PRIVATE src/portaudio/include +- PRIVATE src/portaudio/src/common) +- + # platform-specific + + if(APPLE) +@@ -224,25 +159,8 @@ if(APPLE) + + elseif(UNIX AND NOT APPLE) + # use ALSA on Linux +- target_sources(portaudio +- PRIVATE src/portaudio/src/hostapi/alsa/pa_linux_alsa.c +- PRIVATE src/portaudio/src/os/unix/pa_unix_hostapis.c +- PRIVATE src/portaudio/src/os/unix/pa_unix_util.c +- ) +- target_include_directories(portaudio +- PRIVATE src/portaudio/src/os/unix) +- target_compile_definitions(portaudio +- PRIVATE -DPA_USE_ALSA) +- target_link_libraries(portaudio +- PRIVATE asound) + + if(JACK) +- target_sources(portaudio +- PRIVATE src/portaudio/src/hostapi/jack/pa_jack.c) +- target_compile_definitions(portaudio +- PRIVATE -DPA_USE_JACK) +- target_link_libraries(portaudio +- PRIVATE jack) + endif() + + elseif(WIN32) +@@ -292,8 +210,6 @@ if(ASIO) + endif() + + if(PACKAGE) +- target_compile_options(portaudio +- PRIVATE -mtune=generic) + endif() + + ############## +@@ -411,8 +327,6 @@ endif() + + # dependencies + +-add_dependencies(extempore pcre portaudio) +- + if(BUILD_LLVM) + if(WIN32) + add_dependencies(extempore LLVM-install) +@@ -553,7 +467,7 @@ else() + install(TARGETS extempore + RUNTIME + DESTINATION ".") +- install(DIRECTORY assets runtime libs examples tests ++ install(DIRECTORY runtime libs examples + DESTINATION "." + PATTERN ".DS_Store" EXCLUDE) + endif() diff --git a/gnu/packages/patches/fifengine-swig-compat.patch b/gnu/packages/patches/fifengine-swig-compat.patch new file mode 100644 index 0000000000..85cd05f835 --- /dev/null +++ b/gnu/packages/patches/fifengine-swig-compat.patch @@ -0,0 +1,17 @@ +Fix build failure when using Swig 4. + +Taken from upstream: +https://github.com/fifengine/fifengine/commit/d14f232f4cd9a00b05d6872957070e8c020f515d + +diff --git a/CMakeLists.txt b/CMakeLists.txt +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -893,7 +893,7 @@ if(build-python) + find_package(PythonLibs ${PYTHON_VERSION_STRING} EXACT) + include_directories(${PYTHON_INCLUDE_PATH}) + +- set(CMAKE_SWIG_FLAGS -modern -fastdispatch -dirvtable -nosafecstrings -noproxydel -fastproxy -fastinit -fastunpack -fastquery -modernargs -nobuildnone -keyword -w511 -w473 -w404 -w314) ++ set(CMAKE_SWIG_FLAGS -modern -fastdispatch -dirvtable -noproxydel -fastproxy -fastinit -fastunpack -fastquery -modernargs -keyword -w511 -w473 -w404 -w314) + + set_source_files_properties("${PROJECT_BINARY_DIR}/fife.i" PROPERTIES CPLUSPLUS ON) + set(FIFE_SOURCES ${FIFE_CORE_SRC}) diff --git a/gnu/packages/patches/file-CVE-2018-10360.patch b/gnu/packages/patches/file-CVE-2018-10360.patch deleted file mode 100644 index 9285611c04..0000000000 --- a/gnu/packages/patches/file-CVE-2018-10360.patch +++ /dev/null @@ -1,27 +0,0 @@ -https://github.com/file/file/commit/a642587a9c9e2dd7feacdf513c3643ce26ad3c22.patch -The leading part of the patch starting at line 27 was trimmed off. -This patch should be OK to drop with file@5.35. - -From a642587a9c9e2dd7feacdf513c3643ce26ad3c22 Mon Sep 17 00:00:00 2001 -From: Christos Zoulas <christos@zoulas.com> -Date: Sat, 9 Jun 2018 16:00:06 +0000 -Subject: [PATCH] Avoid reading past the end of buffer (Rui Reis) - ---- - src/readelf.c | 5 +++-- - 1 file changed, 3 insertions(+), 2 deletions(-) - -diff --git a/src/readelf.c b/src/readelf.c -index 79c83f9f5..1f41b4611 100644 ---- a/src/readelf.c -+++ b/src/readelf.c -@@ -842,7 +842,8 @@ do_core_note(struct magic_set *ms, unsigned char *nbuf, uint32_t type, - - cname = (unsigned char *) - &nbuf[doff + prpsoffsets(i)]; -- for (cp = cname; *cp && isprint(*cp); cp++) -+ for (cp = cname; cp < nbuf + size && *cp -+ && isprint(*cp); cp++) - continue; - /* - * Linux apparently appends a space at the end diff --git a/gnu/packages/patches/findutils-gnulib-libio.patch b/gnu/packages/patches/findutils-gnulib-libio.patch deleted file mode 100644 index 79f9fd914d..0000000000 --- a/gnu/packages/patches/findutils-gnulib-libio.patch +++ /dev/null @@ -1,114 +0,0 @@ -Adjust to removal of libio interface in glibc 2.28. - -Based on this gnulib commit: -https://git.savannah.gnu.org/cgit/gnulib.git/commit/?id=4af4a4a71827c0bc5e0ec67af23edef4f15cee8e - -diff --git a/gl/lib/fflush.c b/gl/lib/fflush.c -index 5ae3e41..7a82470 100644 ---- a/gl/lib/fflush.c -+++ b/gl/lib/fflush.c -@@ -33,7 +33,7 @@ - #undef fflush - - --#if defined _IO_ftrylockfile || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */ -+#if defined _IO_EOF_SEEN || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */ - - /* Clear the stream's ungetc buffer, preserving the value of ftello (fp). */ - static void -@@ -72,7 +72,7 @@ clear_ungetc_buffer (FILE *fp) - - #endif - --#if ! (defined _IO_ftrylockfile || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */) -+#if ! (defined _IO_EOF_SEEN || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */) - - # if (defined __sferror || defined __DragonFly__ || defined __ANDROID__) && defined __SNPT - /* FreeBSD, NetBSD, OpenBSD, DragonFly, Mac OS X, Cygwin, Android */ -@@ -148,7 +148,7 @@ rpl_fflush (FILE *stream) - if (stream == NULL || ! freading (stream)) - return fflush (stream); - --#if defined _IO_ftrylockfile || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */ -+#if defined _IO_EOF_SEEN || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */ - - clear_ungetc_buffer_preserving_position (stream); - -diff --git a/gl/lib/fpurge.c b/gl/lib/fpurge.c -index f313b22..ecdf82d 100644 ---- a/gl/lib/fpurge.c -+++ b/gl/lib/fpurge.c -@@ -62,7 +62,7 @@ fpurge (FILE *fp) - /* Most systems provide FILE as a struct and the necessary bitmask in - <stdio.h>, because they need it for implementing getc() and putc() as - fast macros. */ --# if defined _IO_ftrylockfile || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */ -+# if defined _IO_EOF_SEEN || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */ - fp->_IO_read_end = fp->_IO_read_ptr; - fp->_IO_write_ptr = fp->_IO_write_base; - /* Avoid memory leak when there is an active ungetc buffer. */ -diff --git a/gl/lib/freadahead.c b/gl/lib/freadahead.c -index 094daab..3f8101e 100644 ---- a/gl/lib/freadahead.c -+++ b/gl/lib/freadahead.c -@@ -25,7 +25,7 @@ - size_t - freadahead (FILE *fp) - { --#if defined _IO_ftrylockfile || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */ -+#if defined _IO_EOF_SEEN || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */ - if (fp->_IO_write_ptr > fp->_IO_write_base) - return 0; - return (fp->_IO_read_end - fp->_IO_read_ptr) -diff --git a/gl/lib/freading.c b/gl/lib/freading.c -index 0512b19..8c48fe4 100644 ---- a/gl/lib/freading.c -+++ b/gl/lib/freading.c -@@ -31,7 +31,7 @@ freading (FILE *fp) - /* Most systems provide FILE as a struct and the necessary bitmask in - <stdio.h>, because they need it for implementing getc() and putc() as - fast macros. */ --# if defined _IO_ftrylockfile || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */ -+# if defined _IO_EOF_SEEN || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */ - return ((fp->_flags & _IO_NO_WRITES) != 0 - || ((fp->_flags & (_IO_NO_READS | _IO_CURRENTLY_PUTTING)) == 0 - && fp->_IO_read_base != NULL)); -diff --git a/gl/lib/fseeko.c b/gl/lib/fseeko.c -index 1c65d2a..9026408 100644 ---- a/gl/lib/fseeko.c -+++ b/gl/lib/fseeko.c -@@ -47,7 +47,7 @@ fseeko (FILE *fp, off_t offset, int whence) - #endif - - /* These tests are based on fpurge.c. */ --#if defined _IO_ftrylockfile || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */ -+#if defined _IO_EOF_SEEN || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */ - if (fp->_IO_read_end == fp->_IO_read_ptr - && fp->_IO_write_ptr == fp->_IO_write_base - && fp->_IO_save_base == NULL) -@@ -123,7 +123,7 @@ fseeko (FILE *fp, off_t offset, int whence) - return -1; - } - --#if defined _IO_ftrylockfile || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */ -+#if defined _IO_EOF_SEEN || __GNU_LIBRARY__ == 1 /* GNU libc, BeOS, Haiku, Linux libc5 */ - fp->_flags &= ~_IO_EOF_SEEN; - fp->_offset = pos; - #elif defined __sferror || defined __DragonFly__ || defined __ANDROID__ -diff --git a/gl/lib/stdio-impl.h b/gl/lib/stdio-impl.h -index 502d891..ea38ee2 100644 ---- a/gl/lib/stdio-impl.h -+++ b/gl/lib/stdio-impl.h -@@ -18,6 +18,12 @@ - the same implementation of stdio extension API, except that some fields - have different naming conventions, or their access requires some casts. */ - -+/* Glibc 2.28 made _IO_IN_BACKUP private. For now, work around this -+ problem by defining it ourselves. FIXME: Do not rely on glibc -+ internals. */ -+#if !defined _IO_IN_BACKUP && defined _IO_EOF_SEEN -+# define _IO_IN_BACKUP 0x100 -+#endif - - /* BSD stdio derived implementations. */ - diff --git a/gnu/packages/patches/findutils-makedev.patch b/gnu/packages/patches/findutils-makedev.patch deleted file mode 100644 index 2f16c625d8..0000000000 --- a/gnu/packages/patches/findutils-makedev.patch +++ /dev/null @@ -1,22 +0,0 @@ -Include <sys/sysmacros.h> for "makedev". - -Taken from this gnulib commit: -https://git.savannah.gnu.org/cgit/gnulib.git/commit/?id=4da63c5881f60f71999a943612da9112232b9161 - -diff --git a/gl/lib/mountlist.c b/gl/lib/mountlist.c -index bb4e4ee21..cf4020e2a 100644 ---- a/gl/lib/mountlist.c -+++ b/gl/lib/mountlist.c -@@ -37,6 +37,12 @@ - # include <sys/param.h> - #endif - -+#if MAJOR_IN_MKDEV -+# include <sys/mkdev.h> -+#elif MAJOR_IN_SYSMACROS -+# include <sys/sysmacros.h> -+#endif -+ - #if defined MOUNTED_GETFSSTAT /* OSF_1 and Darwin1.3.x */ - # if HAVE_SYS_UCRED_H - # include <grp.h> /* needed on OSF V4.0 for definition of NGROUPS, diff --git a/gnu/packages/patches/findutils-test-rwlock-threads.patch b/gnu/packages/patches/findutils-test-rwlock-threads.patch new file mode 100644 index 0000000000..3062577c21 --- /dev/null +++ b/gnu/packages/patches/findutils-test-rwlock-threads.patch @@ -0,0 +1,38 @@ +Skip "test-rwlock1" when multithreading is disabled, which is the case +during bootstrapping on architectures not supported by GNU Mes. + +Taken from upstream gnulib: +https://git.savannah.gnu.org/cgit/gnulib.git/commit/?id=fdff8bd09a7f053381f8bdb107ab5280b7c95959 + +diff --git a/gnulib-tests/test-rwlock1.c b/gnulib-tests/test-rwlock1.c +--- a/gnulib-tests/test-rwlock1.c ++++ b/gnulib-tests/test-rwlock1.c +@@ -21,6 +21,8 @@ + + #include <config.h> + ++#if USE_ISOC_THREADS || USE_POSIX_THREADS || USE_ISOC_AND_POSIX_THREADS || USE_WINDOWS_THREADS ++ + #include "glthread/lock.h" + + #include <errno.h> +@@ -151,3 +153,18 @@ main () + sleep (1); + } + } ++ ++#else ++ ++/* No multithreading available. */ ++ ++#include <stdio.h> ++ ++int ++main () ++{ ++ fputs ("Skipping test: multithreading not enabled\n", stderr); ++ return 77; ++} ++ ++#endif + diff --git a/gnu/packages/patches/findutils-test-xargs.patch b/gnu/packages/patches/findutils-test-xargs.patch deleted file mode 100644 index 10c7bed28d..0000000000 --- a/gnu/packages/patches/findutils-test-xargs.patch +++ /dev/null @@ -1,22 +0,0 @@ -This test relies on 'xargs' being available in $PATH, which is not -the case when we build the initial Findutils doing bootstrapping. -Reported at <https://savannah.gnu.org/bugs/index.php?46786>. - ---- findutils-4.6.0/find/testsuite/sv-34976-execdir-fd-leak.sh 2015-12-31 19:37:59.401526288 +0100 -+++ findutils-4.6.0/find/testsuite/sv-34976-execdir-fd-leak.sh 2015-12-31 19:38:36.061770693 +0100 -@@ -50,13 +50,14 @@ die() { - # Create test files, each 98 in the directories ".", "one" and "two". - make_test_data() { - d="$1" -+ xargs="`cd ../../xargs; pwd -P`/xargs" - ( - cd "$1" || exit 1 - mkdir one two || exit 1 - for i in ${three_to_hundred} ; do - printf "./%03d one/%03d two/%03d " $i $i $i - done \ -- | xargs touch || exit 1 -+ | "$xargs" touch || exit 1 - ) \ - || die "failed to set up the test in ${outdir}" - } diff --git a/gnu/packages/patches/fontconfig-hurd-path-max.patch b/gnu/packages/patches/fontconfig-hurd-path-max.patch new file mode 100644 index 0000000000..f804e6801f --- /dev/null +++ b/gnu/packages/patches/fontconfig-hurd-path-max.patch @@ -0,0 +1,17 @@ +Avoid usage of PATH_MAX. + +Taken from https://salsa.debian.org/freedesktop-team/fontconfig/-/blob/master/debian/patches/path_max.patch + +Index: fontconfig-2.13.1/src/fccfg.c +=================================================================== +--- fontconfig-2.13.1.orig/src/fccfg.c ++++ fontconfig-2.13.1/src/fccfg.c +@@ -2231,7 +2231,7 @@ FcConfigRealFilename (FcConfig *config, + + if (n) + { +- FcChar8 buf[PATH_MAX]; ++ FcChar8 buf[FC_PATH_MAX]; + ssize_t len; + + if (sysroot) diff --git a/gnu/packages/patches/fribidi-CVE-2019-18397.patch b/gnu/packages/patches/fribidi-CVE-2019-18397.patch deleted file mode 100644 index aff1a669b2..0000000000 --- a/gnu/packages/patches/fribidi-CVE-2019-18397.patch +++ /dev/null @@ -1,26 +0,0 @@ -https://github.com/fribidi/fribidi/commit/034c6e9a1d296286305f4cfd1e0072b879f52568.patch - -From 034c6e9a1d296286305f4cfd1e0072b879f52568 Mon Sep 17 00:00:00 2001 -From: Dov Grobgeld <dov.grobgeld@gmail.com> -Date: Thu, 24 Oct 2019 09:37:29 +0300 -Subject: [PATCH] Truncate isolate_level to FRIBIDI_BIDI_MAX_EXPLICIT_LEVEL - ---- - lib/fribidi-bidi.c | 4 +++- - 1 file changed, 3 insertions(+), 1 deletion(-) - -diff --git a/lib/fribidi-bidi.c b/lib/fribidi-bidi.c -index 6c84392..d384878 100644 ---- a/lib/fribidi-bidi.c -+++ b/lib/fribidi-bidi.c -@@ -747,7 +747,9 @@ fribidi_get_par_embedding_levels_ex ( - } - - RL_LEVEL (pp) = level; -- RL_ISOLATE_LEVEL (pp) = isolate_level++; -+ RL_ISOLATE_LEVEL (pp) = isolate_level; -+ if (isolate_level < FRIBIDI_BIDI_MAX_EXPLICIT_LEVEL-1) -+ isolate_level++; - base_level_per_iso_level[isolate_level] = new_level; - - if (!FRIBIDI_IS_NEUTRAL (override)) diff --git a/gnu/packages/patches/gcc-4.9-libsanitizer-mode-size.patch b/gnu/packages/patches/gcc-4.9-libsanitizer-mode-size.patch new file mode 100644 index 0000000000..7df22c21aa --- /dev/null +++ b/gnu/packages/patches/gcc-4.9-libsanitizer-mode-size.patch @@ -0,0 +1,52 @@ +Fix assertion failure in libsanitizer when using glibc 2.31 and later. + +https://gcc.gnu.org/bugzilla/show_bug.cgi?id=92154 +https://reviews.llvm.org/D69104 + +Adapted from these upstream revision: + +https://gcc.gnu.org/viewcvs/gcc?view=revision&revision=277981 +https://gcc.gnu.org/viewcvs/gcc?view=revision&revision=279653 + +diff --git a/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc b/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc +index 196eb3b3c64..b588e07e5ab 100644 +--- a/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc ++++ b/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc +@@ -928,7 +928,11 @@ CHECK_SIZE_AND_OFFSET(ipc_perm, uid); + CHECK_SIZE_AND_OFFSET(ipc_perm, gid); + CHECK_SIZE_AND_OFFSET(ipc_perm, cuid); + CHECK_SIZE_AND_OFFSET(ipc_perm, cgid); ++#if !SANITIZER_LINUX || __GLIBC_PREREQ (2, 31) ++/* glibc 2.30 and earlier provided 16-bit mode field instead of 32-bit ++ on many architectures. */ + CHECK_SIZE_AND_OFFSET(ipc_perm, mode); ++#endif + CHECK_SIZE_AND_OFFSET(ipc_perm, __seq); + + CHECK_TYPE_SIZE(shmid_ds); +diff --git a/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h b/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h +index aec950454b3..6d94fc65c28 100644 +--- a/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h ++++ b/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h +@@ -154,20 +154,13 @@ namespace __sanitizer { + u64 __unused1; + u64 __unused2; + #elif defined(__sparc__) +-# if defined(__arch64__) + unsigned mode; +- unsigned short __pad1; +-# else +- unsigned short __pad1; +- unsigned short mode; + unsigned short __pad2; +-# endif + unsigned short __seq; + unsigned long long __unused1; + unsigned long long __unused2; + #else +- unsigned short mode; +- unsigned short __pad1; ++ unsigned int mode; + unsigned short __seq; + unsigned short __pad2; + #if defined(__x86_64__) && !defined(_LP64) diff --git a/gnu/packages/patches/gcc-5-hurd.patch b/gnu/packages/patches/gcc-5-hurd.patch new file mode 100644 index 0000000000..ae66424243 --- /dev/null +++ b/gnu/packages/patches/gcc-5-hurd.patch @@ -0,0 +1,63 @@ +This patch is needed to build gcc-5.5.0 on the Hurd. + +Backported from upstream: https://gcc.gnu.org/git/?p=gcc.git;a=commit;h=6cd9cb89ebdc1e1394b81c4a418c2b3b0eb86c57 + +commit b590b96ebc3f5b42a4829170e069722dd940e2543 +Author: jason <jason@138bc75d-0d04-0410-961f-82ee72b054a4> +Date: Sat May 9 04:50:23 2015 +0000 + + * src/c++98/Makefile.am (AM_CXXFLAGS): Add -std=gnu++98. + * src/c++98/Makefile.in: Regenerate. + * src/Makefile.am (AM_CXXFLAGS): Add -std=gnu++98. + * src/Makefile.in: Regenerate. + + git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@222964 138bc75d-0d04-0410-961f-82ee72b054a4 + +diff --git a/libstdc++-v3/src/Makefile.am b/libstdc++-v3/src/Makefile.am +index a5f48b22c6d..cd07ccd81bc 100644 +--- a/libstdc++-v3/src/Makefile.am ++++ b/libstdc++-v3/src/Makefile.am +@@ -168,6 +168,7 @@ compatibility-condvar.o: compatibility-condvar.cc + # OPTIMIZE_CXXFLAGS on the compile line so that -O2 can be overridden + # as the occasion calls for it. + AM_CXXFLAGS = \ ++ -std=gnu++98 \ + $(glibcxx_compiler_pic_flag) \ + $(XTEMPLATE_FLAGS) $(VTV_CXXFLAGS) \ + $(WARN_CXXFLAGS) $(OPTIMIZE_CXXFLAGS) $(CONFIG_CXXFLAGS) +diff --git a/libstdc++-v3/src/Makefile.in b/libstdc++-v3/src/Makefile.in +index 433f9ea121a..31b56282e26 100644 +--- a/libstdc++-v3/src/Makefile.in ++++ b/libstdc++-v3/src/Makefile.in +@@ -429,6 +429,7 @@ libstdc___la_LINK = $(CXXLINK) $(libstdc___la_LDFLAGS) + # OPTIMIZE_CXXFLAGS on the compile line so that -O2 can be overridden + # as the occasion calls for it. + AM_CXXFLAGS = \ ++ -std=gnu++98 \ + $(glibcxx_compiler_pic_flag) \ + $(XTEMPLATE_FLAGS) $(VTV_CXXFLAGS) \ + $(WARN_CXXFLAGS) $(OPTIMIZE_CXXFLAGS) $(CONFIG_CXXFLAGS) +diff --git a/libstdc++-v3/src/c++98/Makefile.am b/libstdc++-v3/src/c++98/Makefile.am +index e348dfb1205..a5b68a19a8b 100644 +--- a/libstdc++-v3/src/c++98/Makefile.am ++++ b/libstdc++-v3/src/c++98/Makefile.am +@@ -215,6 +215,7 @@ parallel_settings.o: parallel_settings.cc + # OPTIMIZE_CXXFLAGS on the compile line so that -O2 can be overridden + # as the occasion calls for it. + AM_CXXFLAGS = \ ++ -std=gnu++98 \ + $(glibcxx_lt_pic_flag) $(glibcxx_compiler_shared_flag) \ + $(XTEMPLATE_FLAGS) $(VTV_CXXFLAGS) \ + $(WARN_CXXFLAGS) $(OPTIMIZE_CXXFLAGS) $(CONFIG_CXXFLAGS) +diff --git a/libstdc++-v3/src/c++98/Makefile.in b/libstdc++-v3/src/c++98/Makefile.in +index 3c69791bb66..ce86136906b 100644 +--- a/libstdc++-v3/src/c++98/Makefile.in ++++ b/libstdc++-v3/src/c++98/Makefile.in +@@ -421,6 +421,7 @@ PARALLEL_FLAGS = -D_GLIBCXX_PARALLEL + # OPTIMIZE_CXXFLAGS on the compile line so that -O2 can be overridden + # as the occasion calls for it. + AM_CXXFLAGS = \ ++ -std=gnu++98 \ + $(glibcxx_lt_pic_flag) $(glibcxx_compiler_shared_flag) \ + $(XTEMPLATE_FLAGS) $(VTV_CXXFLAGS) \ + $(WARN_CXXFLAGS) $(OPTIMIZE_CXXFLAGS) $(CONFIG_CXXFLAGS) diff --git a/gnu/packages/patches/gcc-6-libsanitizer-mode-size.patch b/gnu/packages/patches/gcc-6-libsanitizer-mode-size.patch new file mode 100644 index 0000000000..005e3c4079 --- /dev/null +++ b/gnu/packages/patches/gcc-6-libsanitizer-mode-size.patch @@ -0,0 +1,53 @@ +Fix assertion failure in libsanitizer when using glibc 2.31 and later. + +https://gcc.gnu.org/bugzilla/show_bug.cgi?id=92154 +https://reviews.llvm.org/D69104 + +Adapted from these upstream revision: + +https://gcc.gnu.org/viewcvs/gcc?view=revision&revision=277981 +https://gcc.gnu.org/viewcvs/gcc?view=revision&revision=279653 + +diff --git a/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc b/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc +index 069d8d557de..c49c28c6e07 100644 +--- a/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc ++++ b/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc +@@ -1130,8 +1130,9 @@ CHECK_SIZE_AND_OFFSET(ipc_perm, cgid); + #ifndef __GLIBC_PREREQ + #define __GLIBC_PREREQ(x, y) 0 + #endif +-#if !defined(__aarch64__) || !SANITIZER_LINUX || __GLIBC_PREREQ (2, 21) +-/* On aarch64 glibc 2.20 and earlier provided incorrect mode field. */ ++#if !SANITIZER_LINUX || __GLIBC_PREREQ (2, 31) ++/* glibc 2.30 and earlier provided 16-bit mode field instead of 32-bit ++ on many architectures. */ + CHECK_SIZE_AND_OFFSET(ipc_perm, mode); + #endif + +diff --git a/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h b/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h +index 304d04e3935..6dee89c97e1 100644 +--- a/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h ++++ b/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h +@@ -207,20 +207,13 @@ namespace __sanitizer { + unsigned long __unused1; + unsigned long __unused2; + #elif defined(__sparc__) +-# if defined(__arch64__) + unsigned mode; +- unsigned short __pad1; +-# else +- unsigned short __pad1; +- unsigned short mode; + unsigned short __pad2; +-# endif + unsigned short __seq; + unsigned long long __unused1; + unsigned long long __unused2; + #else +- unsigned short mode; +- unsigned short __pad1; ++ unsigned int mode; + unsigned short __seq; + unsigned short __pad2; + #if defined(__x86_64__) && !defined(_LP64) + diff --git a/gnu/packages/patches/gcc-7-cross-toolexeclibdir.patch b/gnu/packages/patches/gcc-7-cross-toolexeclibdir.patch new file mode 100644 index 0000000000..49982c3474 --- /dev/null +++ b/gnu/packages/patches/gcc-7-cross-toolexeclibdir.patch @@ -0,0 +1,1041 @@ +From 46339bdf619b93dfa05d5f004d062671d3dc26d2 Mon Sep 17 00:00:00 2001 +From: Mathieu Othacehe <m.othacehe@gmail.com> +Date: Tue, 24 Mar 2020 13:50:56 +0100 +Subject: [PATCH] toolexec + +--- + gcc/doc/install.texi | 4 ++++ + libatomic/configure | 33 ++++++++++++++++++++++--- + libffi/configure | 33 ++++++++++++++++++++++--- + libgcc/configure | 38 +++++++++++++++++++++++++++-- + libgomp/configure | 33 ++++++++++++++++++++++--- + libhsail-rt/configure | 33 ++++++++++++++++++++++--- + libitm/configure | 33 ++++++++++++++++++++++--- + liboffloadmic/configure | 33 ++++++++++++++++++++++--- + liboffloadmic/plugin/configure | 33 ++++++++++++++++++++++--- + libquadmath/configure | 33 ++++++++++++++++++++++--- + libsanitizer/configure | 33 ++++++++++++++++++++++--- + libssp/configure | 33 ++++++++++++++++++++++--- + libstdc++-v3/configure | 44 ++++++++++++++++++++++++++-------- + 13 files changed, 374 insertions(+), 42 deletions(-) + +diff --git a/gcc/doc/install.texi b/gcc/doc/install.texi +index 77ba08d3f21..28cb6d88da8 100644 +--- a/gcc/doc/install.texi ++++ b/gcc/doc/install.texi +@@ -2083,6 +2083,10 @@ shorthand for + The following options only apply to building cross compilers. + + @table @code ++@item --with-toolexeclibdir=@var{dir} ++Specify the installation directory for libraries built with a cross compiler. ++The default is @option{$@{gcc_tooldir@}/lib}. ++ + @item --with-sysroot + @itemx --with-sysroot=@var{dir} + Tells GCC to consider @var{dir} as the root of a tree that contains +diff --git a/libatomic/configure b/libatomic/configure +index 2ae9b8d40f3..0fa531ec4a3 100755 +--- a/libatomic/configure ++++ b/libatomic/configure +@@ -755,6 +755,7 @@ enable_option_checking + enable_version_specific_runtime_libs + enable_generated_files_in_srcdir + enable_multilib ++with_toolexeclibdir + enable_dependency_tracking + enable_shared + enable_static +@@ -1414,6 +1415,9 @@ Optional Features: + Optional Packages: + --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] + --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) ++ --with-toolexeclibdir=DIR ++ install libraries built with a cross compiler within ++ DIR + --with-pic try to use only PIC/non-PIC objects [default=use + both] + --with-gnu-ld assume the C compiler uses GNU ld [default=no] +@@ -3185,6 +3189,22 @@ fi + ac_config_commands="$ac_config_commands default-1" + + ++ ++# Check whether --with-toolexeclibdir was given. ++if test "${with_toolexeclibdir+set}" = set; then : ++ withval=$with_toolexeclibdir; case ${with_toolexeclibdir} in ++ /) ++ ;; ++ */) ++ with_toolexeclibdir=`echo $with_toolexeclibdir | sed 's,/$,,'` ++ ;; ++esac ++else ++ with_toolexeclibdir=no ++fi ++ ++ ++ + # Calculate toolexeclibdir + # Also toolexecdir, though it's only used in toolexeclibdir + case ${enable_version_specific_runtime_libs} in +@@ -3200,7 +3220,14 @@ case ${enable_version_specific_runtime_libs} in + test x"$with_cross_host" != x"no"; then + # Install a library built with a cross compiler in tooldir, not libdir. + toolexecdir='$(exec_prefix)/$(target_alias)' +- toolexeclibdir='$(toolexecdir)/lib' ++ case ${with_toolexeclibdir} in ++ no) ++ toolexeclibdir='$(toolexecdir)/lib' ++ ;; ++ *) ++ toolexeclibdir=${with_toolexeclibdir} ++ ;; ++ esac + else + toolexecdir='$(libdir)/gcc-lib/$(target_alias)' + toolexeclibdir='$(libdir)' +@@ -11115,7 +11142,7 @@ else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext <<_LT_EOF +-#line 11118 "configure" ++#line 11145 "configure" + #include "confdefs.h" + + #if HAVE_DLFCN_H +@@ -11221,7 +11248,7 @@ else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext <<_LT_EOF +-#line 11224 "configure" ++#line 11251 "configure" + #include "confdefs.h" + + #if HAVE_DLFCN_H +diff --git a/libffi/configure b/libffi/configure +index 790a291011f..6e37039e84c 100755 +--- a/libffi/configure ++++ b/libffi/configure +@@ -777,6 +777,7 @@ enable_debug + enable_structs + enable_raw_api + enable_purify_safety ++with_toolexeclibdir + enable_symvers + with_gcc_major_version_only + ' +@@ -1436,6 +1437,9 @@ Optional Packages: + --with-pic try to use only PIC/non-PIC objects [default=use + both] + --with-gnu-ld assume the C compiler uses GNU ld [default=no] ++ --with-toolexeclibdir=DIR ++ install libraries built with a cross compiler within ++ DIR + --with-gcc-major-version-only + use only GCC major number in filesystem paths + +@@ -11390,7 +11394,7 @@ else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext <<_LT_EOF +-#line 11393 "configure" ++#line 11397 "configure" + #include "confdefs.h" + + #if HAVE_DLFCN_H +@@ -11496,7 +11500,7 @@ else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext <<_LT_EOF +-#line 11499 "configure" ++#line 11507 "configure" + #include "confdefs.h" + + #if HAVE_DLFCN_H +@@ -16002,10 +16006,33 @@ $as_echo "#define USING_PURIFY 1" >>confdefs.h + fi + + ++ ++# Check whether --with-toolexeclibdir was given. ++if test "${with_toolexeclibdir+set}" = set; then : ++ withval=$with_toolexeclibdir; case ${with_toolexeclibdir} in ++ /) ++ ;; ++ */) ++ with_toolexeclibdir=`echo $with_toolexeclibdir | sed 's,/$,,'` ++ ;; ++esac ++else ++ with_toolexeclibdir=no ++fi ++ ++ ++ + if test -n "$with_cross_host" && + test x"$with_cross_host" != x"no"; then + toolexecdir='$(exec_prefix)/$(target_alias)' +- toolexeclibdir='$(toolexecdir)/lib' ++ case ${with_toolexeclibdir} in ++ no) ++ toolexeclibdir='$(toolexecdir)/lib' ++ ;; ++ *) ++ toolexeclibdir=${with_toolexeclibdir} ++ ;; ++ esac + else + toolexecdir='$(libdir)/gcc-lib/$(target_alias)' + toolexeclibdir='$(libdir)' +diff --git a/libgcc/configure b/libgcc/configure +index 441601a1f76..976827dc57e 100644 +--- a/libgcc/configure ++++ b/libgcc/configure +@@ -669,6 +669,7 @@ enable_shared + enable_vtable_verify + with_aix_soname + enable_version_specific_runtime_libs ++with_toolexeclibdir + with_slibdir + enable_maintainer_mode + with_build_libsubdir +@@ -1329,6 +1330,9 @@ Optional Packages: + --with-aix-soname=aix|svr4|both + shared library versioning (aka "SONAME") variant to + provide on AIX ++ --with-toolexeclibdir=DIR ++ install libraries built with a cross compiler within ++ DIR + --with-slibdir=DIR shared libraries in DIR LIBDIR + --with-build-libsubdir=DIR Directory where to find libraries for build system + --with-system-libunwind use installed libunwind +@@ -2403,6 +2407,22 @@ fi + $as_echo "$version_specific_libs" >&6; } + + ++# Check whether --with-toolexeclibdir was given. ++if test "${with_toolexeclibdir+set}" = set; then : ++ withval=$with_toolexeclibdir; case ${with_toolexeclibdir} in ++ /) ++ ;; ++ */) ++ with_toolexeclibdir=`echo $with_toolexeclibdir | sed 's,/$,,'` ++ ;; ++esac ++else ++ with_toolexeclibdir=no ++fi ++ ++ ++ ++ + # Check whether --with-slibdir was given. + if test "${with_slibdir+set}" = set; then : + withval=$with_slibdir; slibdir="$with_slibdir" +@@ -2410,7 +2430,14 @@ else + if test "${version_specific_libs}" = yes; then + slibdir='$(libsubdir)' + elif test -n "$with_cross_host" && test x"$with_cross_host" != x"no"; then +- slibdir='$(exec_prefix)/$(host_noncanonical)/lib' ++ case ${with_toolexeclibdir} in ++ no) ++ slibdir='$(exec_prefix)/$(host_noncanonical)/lib' ++ ;; ++ *) ++ slibdir=${with_toolexeclibdir} ++ ;; ++ esac + else + slibdir='$(libdir)' + fi +@@ -2640,7 +2667,14 @@ case ${version_specific_libs} in + test x"$with_cross_host" != x"no"; then + # Install a library built with a cross compiler in tooldir, not libdir. + toolexecdir='$(exec_prefix)/$(target_noncanonical)' +- toolexeclibdir='$(toolexecdir)/lib' ++ case ${with_toolexeclibdir} in ++ no) ++ toolexeclibdir='$(toolexecdir)/lib' ++ ;; ++ *) ++ toolexeclibdir=${with_toolexeclibdir} ++ ;; ++ esac + else + toolexecdir='$(libdir)/gcc-lib/$(target_noncanonical)' + toolexeclibdir='$(libdir)' +diff --git a/libgomp/configure b/libgomp/configure +index 06166c66120..6b3beae0f63 100755 +--- a/libgomp/configure ++++ b/libgomp/configure +@@ -782,6 +782,7 @@ enable_option_checking + enable_version_specific_runtime_libs + enable_generated_files_in_srcdir + enable_multilib ++with_toolexeclibdir + enable_dependency_tracking + enable_shared + enable_static +@@ -1455,6 +1456,9 @@ Optional Features: + Optional Packages: + --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] + --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) ++ --with-toolexeclibdir=DIR ++ install libraries built with a cross compiler within ++ DIR + --with-pic try to use only PIC/non-PIC objects [default=use + both] + --with-gnu-ld assume the C compiler uses GNU ld [default=no] +@@ -3338,6 +3342,22 @@ fi + ac_config_commands="$ac_config_commands default-1" + + ++ ++# Check whether --with-toolexeclibdir was given. ++if test "${with_toolexeclibdir+set}" = set; then : ++ withval=$with_toolexeclibdir; case ${with_toolexeclibdir} in ++ /) ++ ;; ++ */) ++ with_toolexeclibdir=`echo $with_toolexeclibdir | sed 's,/$,,'` ++ ;; ++esac ++else ++ with_toolexeclibdir=no ++fi ++ ++ ++ + # Calculate toolexeclibdir + # Also toolexecdir, though it's only used in toolexeclibdir + case ${enable_version_specific_runtime_libs} in +@@ -3353,7 +3373,14 @@ case ${enable_version_specific_runtime_libs} in + test x"$with_cross_host" != x"no"; then + # Install a library built with a cross compiler in tooldir, not libdir. + toolexecdir='$(exec_prefix)/$(target_alias)' +- toolexeclibdir='$(toolexecdir)/lib' ++ case ${with_toolexeclibdir} in ++ no) ++ toolexeclibdir='$(toolexecdir)/lib' ++ ;; ++ *) ++ toolexeclibdir=${with_toolexeclibdir} ++ ;; ++ esac + else + toolexecdir='$(libdir)/gcc-lib/$(target_alias)' + toolexeclibdir='$(libdir)' +@@ -11155,7 +11182,7 @@ else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext <<_LT_EOF +-#line 11158 "configure" ++#line 11185 "configure" + #include "confdefs.h" + + #if HAVE_DLFCN_H +@@ -11261,7 +11288,7 @@ else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext <<_LT_EOF +-#line 11264 "configure" ++#line 11295 "configure" + #include "confdefs.h" + + #if HAVE_DLFCN_H +diff --git a/libhsail-rt/configure b/libhsail-rt/configure +index a4fcc10c1f9..1b4f2a953d0 100755 +--- a/libhsail-rt/configure ++++ b/libhsail-rt/configure +@@ -737,6 +737,7 @@ enable_option_checking + enable_maintainer_mode + enable_dependency_tracking + enable_version_specific_runtime_libs ++with_toolexeclibdir + enable_shared + enable_static + with_pic +@@ -1395,6 +1396,9 @@ Optional Features: + Optional Packages: + --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] + --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) ++ --with-toolexeclibdir=DIR ++ install libraries built with a cross compiler within ++ DIR + --with-pic try to use only PIC/non-PIC objects [default=use + both] + --with-gnu-ld assume the C compiler uses GNU ld [default=no] +@@ -4418,6 +4422,22 @@ fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $enable_version_specific_runtime_libs" >&5 + $as_echo "$enable_version_specific_runtime_libs" >&6; } + ++ ++# Check whether --with-toolexeclibdir was given. ++if test "${with_toolexeclibdir+set}" = set; then : ++ withval=$with_toolexeclibdir; case ${with_toolexeclibdir} in ++ /) ++ ;; ++ */) ++ with_toolexeclibdir=`echo $with_toolexeclibdir | sed 's,/$,,'` ++ ;; ++esac ++else ++ with_toolexeclibdir=no ++fi ++ ++ ++ + # Calculate toolexeclibdir + # Also toolexecdir, though it's only used in toolexeclibdir + case ${enable_version_specific_runtime_libs} in +@@ -4433,7 +4453,14 @@ case ${enable_version_specific_runtime_libs} in + test x"$with_cross_host" != x"no"; then + # Install a library built with a cross compiler in tooldir, not libdir. + toolexecdir='$(exec_prefix)/$(target_alias)' +- toolexeclibdir='$(toolexecdir)/lib' ++ case ${with_toolexeclibdir} in ++ no) ++ toolexeclibdir='$(toolexecdir)/lib' ++ ;; ++ *) ++ toolexeclibdir=${with_toolexeclibdir} ++ ;; ++ esac + else + toolexecdir='$(libdir)/gcc-lib/$(target_alias)' + toolexeclibdir='$(libdir)' +@@ -10973,7 +11000,7 @@ else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext <<_LT_EOF +-#line 10976 "configure" ++#line 11003 "configure" + #include "confdefs.h" + + #if HAVE_DLFCN_H +@@ -11079,7 +11106,7 @@ else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext <<_LT_EOF +-#line 11082 "configure" ++#line 11113 "configure" + #include "confdefs.h" + + #if HAVE_DLFCN_H +diff --git a/libitm/configure b/libitm/configure +index 96c494d4a3f..ed47fab3c83 100644 +--- a/libitm/configure ++++ b/libitm/configure +@@ -766,6 +766,7 @@ enable_option_checking + enable_version_specific_runtime_libs + enable_generated_files_in_srcdir + enable_multilib ++with_toolexeclibdir + enable_dependency_tracking + enable_shared + enable_static +@@ -1430,6 +1431,9 @@ Optional Features: + Optional Packages: + --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] + --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) ++ --with-toolexeclibdir=DIR ++ install libraries built with a cross compiler within ++ DIR + --with-pic try to use only PIC/non-PIC objects [default=use + both] + --with-gnu-ld assume the C compiler uses GNU ld [default=no] +@@ -3371,6 +3375,22 @@ fi + ac_config_commands="$ac_config_commands default-1" + + ++ ++# Check whether --with-toolexeclibdir was given. ++if test "${with_toolexeclibdir+set}" = set; then : ++ withval=$with_toolexeclibdir; case ${with_toolexeclibdir} in ++ /) ++ ;; ++ */) ++ with_toolexeclibdir=`echo $with_toolexeclibdir | sed 's,/$,,'` ++ ;; ++esac ++else ++ with_toolexeclibdir=no ++fi ++ ++ ++ + # Calculate toolexeclibdir + # Also toolexecdir, though it's only used in toolexeclibdir + case ${enable_version_specific_runtime_libs} in +@@ -3386,7 +3406,14 @@ case ${enable_version_specific_runtime_libs} in + test x"$with_cross_host" != x"no"; then + # Install a library built with a cross compiler in tooldir, not libdir. + toolexecdir='$(exec_prefix)/$(target_alias)' +- toolexeclibdir='$(toolexecdir)/lib' ++ case ${with_toolexeclibdir} in ++ no) ++ toolexeclibdir='$(toolexecdir)/lib' ++ ;; ++ *) ++ toolexeclibdir=${with_toolexeclibdir} ++ ;; ++ esac + else + toolexecdir='$(libdir)/gcc-lib/$(target_alias)' + toolexeclibdir='$(libdir)' +@@ -11794,7 +11821,7 @@ else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext <<_LT_EOF +-#line 11797 "configure" ++#line 11824 "configure" + #include "confdefs.h" + + #if HAVE_DLFCN_H +@@ -11900,7 +11927,7 @@ else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext <<_LT_EOF +-#line 11903 "configure" ++#line 11934 "configure" + #include "confdefs.h" + + #if HAVE_DLFCN_H +diff --git a/liboffloadmic/configure b/liboffloadmic/configure +index f873716991b..6dfe9e37642 100644 +--- a/liboffloadmic/configure ++++ b/liboffloadmic/configure +@@ -739,6 +739,7 @@ enable_maintainer_mode + enable_dependency_tracking + enable_multilib + enable_version_specific_runtime_libs ++with_toolexeclibdir + enable_shared + enable_static + with_pic +@@ -1397,6 +1398,9 @@ Optional Features: + Optional Packages: + --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] + --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) ++ --with-toolexeclibdir=DIR ++ install libraries built with a cross compiler within ++ DIR + --with-pic try to use only PIC/non-PIC objects [default=use + both] + --with-gnu-ld assume the C compiler uses GNU ld [default=no] +@@ -5003,6 +5007,22 @@ else + fi + + ++ ++# Check whether --with-toolexeclibdir was given. ++if test "${with_toolexeclibdir+set}" = set; then : ++ withval=$with_toolexeclibdir; case ${with_toolexeclibdir} in ++ /) ++ ;; ++ */) ++ with_toolexeclibdir=`echo $with_toolexeclibdir | sed 's,/$,,'` ++ ;; ++esac ++else ++ with_toolexeclibdir=no ++fi ++ ++ ++ + # Calculate toolexeclibdir. + # Also toolexecdir, though it's only used in toolexeclibdir. + case ${enable_version_specific_runtime_libs} in +@@ -5018,7 +5038,14 @@ case ${enable_version_specific_runtime_libs} in + test x"$with_cross_host" != x"no"; then + # Install a library built with a cross compiler in tooldir, not libdir. + toolexecdir='$(exec_prefix)/$(target_alias)' +- toolexeclibdir='$(toolexecdir)/lib' ++ case ${with_toolexeclibdir} in ++ no) ++ toolexeclibdir='$(toolexecdir)/lib' ++ ;; ++ *) ++ toolexeclibdir=${with_toolexeclibdir} ++ ;; ++ esac + else + toolexecdir='$(libdir)/gcc-lib/$(target_alias)' + toolexeclibdir='$(libdir)' +@@ -11108,7 +11135,7 @@ else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext <<_LT_EOF +-#line 11111 "configure" ++#line 11138 "configure" + #include "confdefs.h" + + #if HAVE_DLFCN_H +@@ -11214,7 +11241,7 @@ else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext <<_LT_EOF +-#line 11217 "configure" ++#line 11248 "configure" + #include "confdefs.h" + + #if HAVE_DLFCN_H +diff --git a/liboffloadmic/plugin/configure b/liboffloadmic/plugin/configure +index c031eb3e7fa..570758344b4 100644 +--- a/liboffloadmic/plugin/configure ++++ b/liboffloadmic/plugin/configure +@@ -735,6 +735,7 @@ enable_maintainer_mode + enable_dependency_tracking + enable_multilib + enable_version_specific_runtime_libs ++with_toolexeclibdir + enable_shared + enable_static + with_pic +@@ -1394,6 +1395,9 @@ Optional Features: + Optional Packages: + --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] + --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) ++ --with-toolexeclibdir=DIR ++ install libraries built with a cross compiler within ++ DIR + --with-pic try to use only PIC/non-PIC objects [default=use + both] + --with-gnu-ld assume the C compiler uses GNU ld [default=no] +@@ -4311,6 +4315,22 @@ fi + $as_echo "$enable_version_specific_runtime_libs" >&6; } + + ++ ++# Check whether --with-toolexeclibdir was given. ++if test "${with_toolexeclibdir+set}" = set; then : ++ withval=$with_toolexeclibdir; case ${with_toolexeclibdir} in ++ /) ++ ;; ++ */) ++ with_toolexeclibdir=`echo $with_toolexeclibdir | sed 's,/$,,'` ++ ;; ++esac ++else ++ with_toolexeclibdir=no ++fi ++ ++ ++ + # Calculate toolexeclibdir. + # Also toolexecdir, though it's only used in toolexeclibdir. + case ${enable_version_specific_runtime_libs} in +@@ -4326,7 +4346,14 @@ case ${enable_version_specific_runtime_libs} in + test x"$with_cross_host" != x"no"; then + # Install a library built with a cross compiler in tooldir, not libdir. + toolexecdir='$(exec_prefix)/$(target_alias)' +- toolexeclibdir='$(toolexecdir)/lib' ++ case ${with_toolexeclibdir} in ++ no) ++ toolexeclibdir='$(toolexecdir)/lib' ++ ;; ++ *) ++ toolexeclibdir=${with_toolexeclibdir} ++ ;; ++ esac + else + toolexecdir='$(libdir)/gcc-lib/$(target_alias)' + toolexeclibdir='$(libdir)' +@@ -10815,7 +10842,7 @@ else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext <<_LT_EOF +-#line 10818 "configure" ++#line 10845 "configure" + #include "confdefs.h" + + #if HAVE_DLFCN_H +@@ -10921,7 +10948,7 @@ else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext <<_LT_EOF +-#line 10924 "configure" ++#line 10955 "configure" + #include "confdefs.h" + + #if HAVE_DLFCN_H +diff --git a/libquadmath/configure b/libquadmath/configure +index 76a2c20b7e1..e887071aeb2 100755 +--- a/libquadmath/configure ++++ b/libquadmath/configure +@@ -749,6 +749,7 @@ enable_fast_install + with_gnu_ld + enable_libtool_lock + enable_maintainer_mode ++with_toolexeclibdir + enable_symvers + enable_generated_files_in_srcdir + with_gcc_major_version_only +@@ -1408,6 +1409,9 @@ Optional Packages: + --with-pic try to use only PIC/non-PIC objects [default=use + both] + --with-gnu-ld assume the C compiler uses GNU ld [default=no] ++ --with-toolexeclibdir=DIR ++ install libraries built with a cross compiler within ++ DIR + --with-gcc-major-version-only + use only GCC major number in filesystem paths + +@@ -10572,7 +10576,7 @@ else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext <<_LT_EOF +-#line 10575 "configure" ++#line 10579 "configure" + #include "confdefs.h" + + #if HAVE_DLFCN_H +@@ -10678,7 +10682,7 @@ else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext <<_LT_EOF +-#line 10681 "configure" ++#line 10689 "configure" + #include "confdefs.h" + + #if HAVE_DLFCN_H +@@ -11917,6 +11921,22 @@ ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $ + ac_compiler_gnu=$ac_cv_c_compiler_gnu + + ++ ++# Check whether --with-toolexeclibdir was given. ++if test "${with_toolexeclibdir+set}" = set; then : ++ withval=$with_toolexeclibdir; case ${with_toolexeclibdir} in ++ /) ++ ;; ++ */) ++ with_toolexeclibdir=`echo $with_toolexeclibdir | sed 's,/$,,'` ++ ;; ++esac ++else ++ with_toolexeclibdir=no ++fi ++ ++ ++ + # Calculate toolexeclibdir + # Also toolexecdir, though it's only used in toolexeclibdir + case ${version_specific_libs} in +@@ -11932,7 +11952,14 @@ case ${version_specific_libs} in + test x"$with_cross_host" != x"no"; then + # Install a library built with a cross compiler in tooldir, not libdir. + toolexecdir='$(exec_prefix)/$(target_alias)' +- toolexeclibdir='$(toolexecdir)/lib' ++ case ${with_toolexeclibdir} in ++ no) ++ toolexeclibdir='$(toolexecdir)/lib' ++ ;; ++ *) ++ toolexeclibdir=${with_toolexeclibdir} ++ ;; ++ esac + else + toolexecdir='$(libdir)/gcc-lib/$(target_alias)' + toolexeclibdir='$(libdir)' +diff --git a/libsanitizer/configure b/libsanitizer/configure +index a3a08d635f4..5f4cdcad38d 100755 +--- a/libsanitizer/configure ++++ b/libsanitizer/configure +@@ -767,6 +767,7 @@ enable_multilib + enable_version_specific_runtime_libs + enable_dependency_tracking + enable_maintainer_mode ++with_toolexeclibdir + enable_shared + enable_static + with_pic +@@ -1425,6 +1426,9 @@ Optional Features: + Optional Packages: + --with-PACKAGE[=ARG] use PACKAGE [ARG=yes] + --without-PACKAGE do not use PACKAGE (same as --with-PACKAGE=no) ++ --with-toolexeclibdir=DIR ++ install libraries built with a cross compiler within ++ DIR + --with-pic try to use only PIC/non-PIC objects [default=use + both] + --with-gnu-ld assume the C compiler uses GNU ld [default=no] +@@ -4773,6 +4777,22 @@ fi + + + ++ ++# Check whether --with-toolexeclibdir was given. ++if test "${with_toolexeclibdir+set}" = set; then : ++ withval=$with_toolexeclibdir; case ${with_toolexeclibdir} in ++ /) ++ ;; ++ */) ++ with_toolexeclibdir=`echo $with_toolexeclibdir | sed 's,/$,,'` ++ ;; ++esac ++else ++ with_toolexeclibdir=no ++fi ++ ++ ++ + # Calculate toolexeclibdir + # Also toolexecdir, though it's only used in toolexeclibdir + case ${version_specific_libs} in +@@ -4788,7 +4808,14 @@ case ${version_specific_libs} in + test x"$with_cross_host" != x"no"; then + # Install a library built with a cross compiler in tooldir, not libdir. + toolexecdir='$(exec_prefix)/$(target_alias)' +- toolexeclibdir='$(toolexecdir)/lib' ++ case ${with_toolexeclibdir} in ++ no) ++ toolexeclibdir='$(toolexecdir)/lib' ++ ;; ++ *) ++ toolexeclibdir=${with_toolexeclibdir} ++ ;; ++ esac + else + toolexecdir='$(libdir)/gcc-lib/$(target_alias)' + toolexeclibdir='$(libdir)' +@@ -12032,7 +12059,7 @@ else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext <<_LT_EOF +-#line 12035 "configure" ++#line 12062 "configure" + #include "confdefs.h" + + #if HAVE_DLFCN_H +@@ -12138,7 +12165,7 @@ else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext <<_LT_EOF +-#line 12141 "configure" ++#line 12168 "configure" + #include "confdefs.h" + + #if HAVE_DLFCN_H +diff --git a/libssp/configure b/libssp/configure +index ee1751d20db..3273cd40ab1 100755 +--- a/libssp/configure ++++ b/libssp/configure +@@ -743,6 +743,7 @@ with_pic + enable_fast_install + with_gnu_ld + enable_libtool_lock ++with_toolexeclibdir + with_gcc_major_version_only + ' + ac_precious_vars='build_alias +@@ -1389,6 +1390,9 @@ Optional Packages: + --with-pic try to use only PIC/non-PIC objects [default=use + both] + --with-gnu-ld assume the C compiler uses GNU ld [default=no] ++ --with-toolexeclibdir=DIR ++ install libraries built with a cross compiler within ++ DIR + --with-gcc-major-version-only + use only GCC major number in filesystem paths + +@@ -10671,7 +10675,7 @@ else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext <<_LT_EOF +-#line 10674 "configure" ++#line 10678 "configure" + #include "confdefs.h" + + #if HAVE_DLFCN_H +@@ -10777,7 +10781,7 @@ else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext <<_LT_EOF +-#line 10780 "configure" ++#line 10784 "configure" + #include "confdefs.h" + + #if HAVE_DLFCN_H +@@ -11039,6 +11043,22 @@ esac + + + ++ ++# Check whether --with-toolexeclibdir was given. ++if test "${with_toolexeclibdir+set}" = set; then : ++ withval=$with_toolexeclibdir; case ${with_toolexeclibdir} in ++ /) ++ ;; ++ */) ++ with_toolexeclibdir=`echo $with_toolexeclibdir | sed 's,/$,,'` ++ ;; ++esac ++else ++ with_toolexeclibdir=no ++fi ++ ++ ++ + # Calculate toolexeclibdir + # Also toolexecdir, though it's only used in toolexeclibdir + case ${version_specific_libs} in +@@ -11054,7 +11074,14 @@ case ${version_specific_libs} in + test x"$with_cross_host" != x"no"; then + # Install a library built with a cross compiler in tooldir, not libdir. + toolexecdir='$(exec_prefix)/$(target_alias)' +- toolexeclibdir='$(toolexecdir)/lib' ++ case ${with_toolexeclibdir} in ++ no) ++ toolexeclibdir='$(toolexecdir)/lib' ++ ;; ++ *) ++ toolexeclibdir=${with_toolexeclibdir} ++ ;; ++ esac + else + toolexecdir='$(libdir)/gcc-lib/$(target_alias)' + toolexeclibdir='$(libdir)' +diff --git a/libstdc++-v3/configure b/libstdc++-v3/configure +index de8390703e2..88de3f728d4 100755 +--- a/libstdc++-v3/configure ++++ b/libstdc++-v3/configure +@@ -903,6 +903,7 @@ enable_libstdcxx_threads + enable_libstdcxx_filesystem_ts + with_gxx_include_dir + enable_version_specific_runtime_libs ++with_toolexeclibdir + with_gcc_major_version_only + ' + ac_precious_vars='build_alias +@@ -1623,6 +1624,9 @@ Optional Packages: + set the std::string ABI to use by default + --with-gxx-include-dir=DIR + installation directory for include files ++ --with-toolexeclibdir=DIR ++ install libraries built with a cross compiler within ++ DIR + --with-gcc-major-version-only + use only GCC major number in filesystem paths + +@@ -11606,7 +11610,7 @@ else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext <<_LT_EOF +-#line 11609 "configure" ++#line 11613 "configure" + #include "confdefs.h" + + #if HAVE_DLFCN_H +@@ -11712,7 +11716,7 @@ else + lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2 + lt_status=$lt_dlunknown + cat > conftest.$ac_ext <<_LT_EOF +-#line 11715 "configure" ++#line 11723 "configure" + #include "confdefs.h" + + #if HAVE_DLFCN_H +@@ -15398,7 +15402,7 @@ $as_echo "$glibcxx_cv_atomic_long_long" >&6; } + # Fake what AC_TRY_COMPILE does. + + cat > conftest.$ac_ext << EOF +-#line 15401 "configure" ++#line 15409 "configure" + int main() + { + typedef bool atomic_type; +@@ -15433,7 +15437,7 @@ $as_echo "$glibcxx_cv_atomic_bool" >&6; } + rm -f conftest* + + cat > conftest.$ac_ext << EOF +-#line 15436 "configure" ++#line 15440 "configure" + int main() + { + typedef short atomic_type; +@@ -15468,7 +15472,7 @@ $as_echo "$glibcxx_cv_atomic_short" >&6; } + rm -f conftest* + + cat > conftest.$ac_ext << EOF +-#line 15471 "configure" ++#line 15475 "configure" + int main() + { + // NB: _Atomic_word not necessarily int. +@@ -15504,7 +15508,7 @@ $as_echo "$glibcxx_cv_atomic_int" >&6; } + rm -f conftest* + + cat > conftest.$ac_ext << EOF +-#line 15507 "configure" ++#line 15511 "configure" + int main() + { + typedef long long atomic_type; +@@ -15585,7 +15589,7 @@ $as_echo "$as_me: WARNING: Performance of certain classes will degrade as a resu + # unnecessary for this test. + + cat > conftest.$ac_ext << EOF +-#line 15588 "configure" ++#line 15592 "configure" + int main() + { + _Decimal32 d1; +@@ -15627,7 +15631,7 @@ ac_compiler_gnu=$ac_cv_cxx_compiler_gnu + # unnecessary for this test. + + cat > conftest.$ac_ext << EOF +-#line 15630 "configure" ++#line 15634 "configure" + template<typename T1, typename T2> + struct same + { typedef T2 type; }; +@@ -15661,7 +15665,7 @@ $as_echo "$enable_int128" >&6; } + rm -f conftest* + + cat > conftest.$ac_ext << EOF +-#line 15664 "configure" ++#line 15668 "configure" + template<typename T1, typename T2> + struct same + { typedef T2 type; }; +@@ -81674,6 +81678,19 @@ fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $version_specific_libs" >&5 + $as_echo "$version_specific_libs" >&6; } + ++# Check whether --with-toolexeclibdir was given. ++if test "${with_toolexeclibdir+set}" = set; then : ++ withval=$with_toolexeclibdir; case ${with_toolexeclibdir} in ++ /) ++ ;; ++ */) ++ with_toolexeclibdir=`echo $with_toolexeclibdir | sed 's,/$,,'` ++ ;; ++esac ++else ++ with_toolexeclibdir=no ++fi ++ + # Default case for install directory for include files. + if test $version_specific_libs = no && test $gxx_include_dir = no; then + gxx_include_dir='include/c++/${gcc_version}' +@@ -81704,7 +81721,14 @@ $as_echo "$version_specific_libs" >&6; } + if test -n "$with_cross_host" && + test x"$with_cross_host" != x"no"; then + glibcxx_toolexecdir='${exec_prefix}/${host_alias}' +- glibcxx_toolexeclibdir='${toolexecdir}/lib' ++ case ${with_toolexeclibdir} in ++ no) ++ glibcxx_toolexeclibdir='${toolexecdir}/lib' ++ ;; ++ *) ++ glibcxx_toolexeclibdir=${with_toolexeclibdir} ++ ;; ++ esac + else + glibcxx_toolexecdir='${libdir}/gcc/${host_alias}' + glibcxx_toolexeclibdir='${libdir}' +-- +2.24.0 + diff --git a/gnu/packages/patches/gcc-7-libsanitizer-mode-size.patch b/gnu/packages/patches/gcc-7-libsanitizer-mode-size.patch new file mode 100644 index 0000000000..41b4a4cac6 --- /dev/null +++ b/gnu/packages/patches/gcc-7-libsanitizer-mode-size.patch @@ -0,0 +1,53 @@ +Fix assertion failure in libsanitizer when using glibc 2.31 and later. + +https://gcc.gnu.org/bugzilla/show_bug.cgi?id=92154 +https://reviews.llvm.org/D69104 + +Adapted from these upstream revision: + +https://gcc.gnu.org/viewcvs/gcc?view=revision&revision=277981 +https://gcc.gnu.org/viewcvs/gcc?view=revision&revision=279653 + +diff --git a/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc b/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc +index 97eae3fc7bc..4089d4695e2 100644 +--- a/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc ++++ b/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.cc +@@ -1145,8 +1145,9 @@ CHECK_SIZE_AND_OFFSET(ipc_perm, uid); + CHECK_SIZE_AND_OFFSET(ipc_perm, gid); + CHECK_SIZE_AND_OFFSET(ipc_perm, cuid); + CHECK_SIZE_AND_OFFSET(ipc_perm, cgid); +-#if !defined(__aarch64__) || !SANITIZER_LINUX || __GLIBC_PREREQ (2, 21) +-/* On aarch64 glibc 2.20 and earlier provided incorrect mode field. */ ++#if !SANITIZER_LINUX || __GLIBC_PREREQ (2, 31) ++/* glibc 2.30 and earlier provided 16-bit mode field instead of 32-bit ++ on many architectures. */ + CHECK_SIZE_AND_OFFSET(ipc_perm, mode); + #endif + +diff --git a/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h b/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h +index c139322839a..7c3c2d866e5 100644 +--- a/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h ++++ b/libsanitizer/sanitizer_common/sanitizer_platform_limits_posix.h +@@ -211,20 +211,13 @@ namespace __sanitizer { + unsigned long __unused1; + unsigned long __unused2; + #elif defined(__sparc__) +-# if defined(__arch64__) + unsigned mode; +- unsigned short __pad1; +-# else +- unsigned short __pad1; +- unsigned short mode; + unsigned short __pad2; +-# endif + unsigned short __seq; + unsigned long long __unused1; + unsigned long long __unused2; + #else +- unsigned short mode; +- unsigned short __pad1; ++ unsigned int mode; + unsigned short __seq; + unsigned short __pad2; + #if defined(__x86_64__) && !defined(_LP64) + diff --git a/gnu/packages/patches/gcc-boot-4.7.4.patch b/gnu/packages/patches/gcc-boot-4.6.4.patch index 3e51e31fdf..4ab0bf8641 100644 --- a/gnu/packages/patches/gcc-boot-4.7.4.patch +++ b/gnu/packages/patches/gcc-boot-4.6.4.patch @@ -1,4 +1,4 @@ -This patch enables building gcc-4.7.4 using gcc-2.95.3 and glibc-2.2.5 +This patch enables building gcc-4.6.4 using gcc-2.95.3 and glibc-2.2.5 * Tweak Makefile to allow overriding NATIVE_SYSTEM_HEADER_DIR using #:makeflags * Add missing limits.h include. @@ -14,12 +14,12 @@ diff --git a/gcc/Makefile.in b/gcc/Makefile.in index f3cc49fdb18..bc5718fc9a6 100644 --- a/gcc/Makefile.in +++ b/gcc/Makefile.in -@@ -458,7 +458,7 @@ LINKER_PLUGIN_API_H = $(srcdir)/../include/plugin-api.h +@@ -440,7 +440,7 @@ LINKER_PLUGIN_API_H = $(srcdir)/../include/plugin-api.h LTO_SYMTAB_H = $(srcdir)/../include/lto-symtab.h # Default native SYSTEM_HEADER_DIR, to be overridden by targets. --NATIVE_SYSTEM_HEADER_DIR = @NATIVE_SYSTEM_HEADER_DIR@ -+# NATIVE_SYSTEM_HEADER_DIR = @NATIVE_SYSTEM_HEADER_DIR@ +-NATIVE_SYSTEM_HEADER_DIR = /usr/include ++# NATIVE_SYSTEM_HEADER_DIR = /usr/include # Default cross SYSTEM_HEADER_DIR, to be overridden by targets. CROSS_SYSTEM_HEADER_DIR = @CROSS_SYSTEM_HEADER_DIR@ @@ -40,24 +40,11 @@ index 94b7a0b89a7..ab2baab55ca 100644 /* Linux has a feature called exec-shield-randomize that perturbs the address of non-fixed mapped segments by a (relatively) small amount. -diff --git a/libgcc/Makefile.in b/libgcc/Makefile.in -index c301ff03cae..f86318c3bd5 100644 ---- a/libgcc/Makefile.in -+++ b/libgcc/Makefile.in -@@ -225,7 +225,7 @@ endif - LIBGCC2_DEBUG_CFLAGS = -g - LIBGCC2_CFLAGS = -O2 $(LIBGCC2_INCLUDES) $(GCC_CFLAGS) $(HOST_LIBGCC2_CFLAGS) \ - $(LIBGCC2_DEBUG_CFLAGS) -DIN_LIBGCC2 \ -- -fbuilding-libgcc -fno-stack-protector \ -+ -fno-stack-protector \ - $(INHIBIT_LIBC_CFLAGS) - - # Additional options to use when compiling libgcc2.a. diff --git a/libgcc/generic-morestack-thread.c b/libgcc/generic-morestack-thread.c index bbe6dd12b5a..1d1d48223d7 100644 --- a/libgcc/generic-morestack-thread.c +++ b/libgcc/generic-morestack-thread.c -@@ -35,7 +35,7 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see +@@ -34,7 +34,7 @@ see the files COPYING3 and COPYING.RUNTIME respectively. If not, see will want to define inhibit_libc while building a compiler which can build glibc. */ diff --git a/gnu/packages/patches/gd-CVE-2018-1000222.patch b/gnu/packages/patches/gd-CVE-2018-1000222.patch deleted file mode 100644 index 7e94295bb6..0000000000 --- a/gnu/packages/patches/gd-CVE-2018-1000222.patch +++ /dev/null @@ -1,87 +0,0 @@ -Fix CVE-2018-1000222: - -https://github.com/libgd/libgd/issues/447 -https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-1000222 - -Patch copied from upstream source repository: - -https://github.com/libgd/libgd/commit/4b1e18a00ce7c4b7e6919c3b3109a034393b805a - -From 4b1e18a00ce7c4b7e6919c3b3109a034393b805a Mon Sep 17 00:00:00 2001 -From: Mike Frysinger <vapier@gentoo.org> -Date: Sat, 14 Jul 2018 13:54:08 -0400 -Subject: [PATCH] bmp: check return value in gdImageBmpPtr - -Closes #447. - -(cherry picked from commit ac16bdf2d41724b5a65255d4c28fb0ec46bc42f5) ---- - src/gd_bmp.c | 17 ++++++++++++++--- - 1 file changed, 14 insertions(+), 3 deletions(-) - -diff --git a/src/gd_bmp.c b/src/gd_bmp.c -index ccafdcd..d625da1 100644 ---- a/src/gd_bmp.c -+++ b/src/gd_bmp.c -@@ -48,6 +48,8 @@ static int bmp_read_4bit(gdImagePtr im, gdIOCtxPtr infile, bmp_info_t *info, bmp - static int bmp_read_8bit(gdImagePtr im, gdIOCtxPtr infile, bmp_info_t *info, bmp_hdr_t *header); - static int bmp_read_rle(gdImagePtr im, gdIOCtxPtr infile, bmp_info_t *info); - -+static int _gdImageBmpCtx(gdImagePtr im, gdIOCtxPtr out, int compression); -+ - #define BMP_DEBUG(s) - - static int gdBMPPutWord(gdIOCtx *out, int w) -@@ -88,8 +90,10 @@ BGD_DECLARE(void *) gdImageBmpPtr(gdImagePtr im, int *size, int compression) - void *rv; - gdIOCtx *out = gdNewDynamicCtx(2048, NULL); - if (out == NULL) return NULL; -- gdImageBmpCtx(im, out, compression); -- rv = gdDPExtractData(out, size); -+ if (!_gdImageBmpCtx(im, out, compression)) -+ rv = gdDPExtractData(out, size); -+ else -+ rv = NULL; - out->gd_free(out); - return rv; - } -@@ -142,6 +146,11 @@ BGD_DECLARE(void) gdImageBmp(gdImagePtr im, FILE *outFile, int compression) - compression - whether to apply RLE or not. - */ - BGD_DECLARE(void) gdImageBmpCtx(gdImagePtr im, gdIOCtxPtr out, int compression) -+{ -+ _gdImageBmpCtx(im, out, compression); -+} -+ -+static int _gdImageBmpCtx(gdImagePtr im, gdIOCtxPtr out, int compression) - { - int bitmap_size = 0, info_size, total_size, padding; - int i, row, xpos, pixel; -@@ -149,6 +158,7 @@ BGD_DECLARE(void) gdImageBmpCtx(gdImagePtr im, gdIOCtxPtr out, int compression) - unsigned char *uncompressed_row = NULL, *uncompressed_row_start = NULL; - FILE *tmpfile_for_compression = NULL; - gdIOCtxPtr out_original = NULL; -+ int ret = 1; - - /* No compression if its true colour or we don't support seek */ - if (im->trueColor) { -@@ -326,6 +336,7 @@ BGD_DECLARE(void) gdImageBmpCtx(gdImagePtr im, gdIOCtxPtr out, int compression) - out_original = NULL; - } - -+ ret = 0; - cleanup: - if (tmpfile_for_compression) { - #ifdef _WIN32 -@@ -339,7 +350,7 @@ cleanup: - if (out_original) { - out_original->gd_free(out_original); - } -- return; -+ return ret; - } - - static int compress_row(unsigned char *row, int length) --- -2.18.0 - diff --git a/gnu/packages/patches/gd-CVE-2018-5711.patch b/gnu/packages/patches/gd-CVE-2018-5711.patch deleted file mode 100644 index 83b12cde63..0000000000 --- a/gnu/packages/patches/gd-CVE-2018-5711.patch +++ /dev/null @@ -1,61 +0,0 @@ -This patch is adapted from commit a11f47475e6443b7f32d21f2271f28f417e2ac04 and -fixes CVE-2018-5711. - -From a11f47475e6443b7f32d21f2271f28f417e2ac04 Mon Sep 17 00:00:00 2001 -From: "Christoph M. Becker" <cmbecker69@gmx.de> -Date: Wed, 29 Nov 2017 19:37:38 +0100 -Subject: [PATCH] Fix #420: Potential infinite loop in gdImageCreateFromGifCtx - -Due to a signedness confusion in `GetCode_` a corrupt GIF file can -trigger an infinite loop. Furthermore we make sure that a GIF without -any palette entries is treated as invalid *after* open palette entries -have been removed. - -CVE-2018-5711 - -See also https://bugs.php.net/bug.php?id=75571. ---- - src/gd_gif_in.c | 12 ++++++------ - 1 file changed, 38 insertions(+), 6 deletions(-) - -diff --git a/src/gd_gif_in.c b/src/gd_gif_in.c -index daf26e7..0a8bd71 100644 ---- a/src/gd_gif_in.c -+++ b/src/gd_gif_in.c -@@ -335,11 +335,6 @@ terminated: - return 0; - } - -- if(!im->colorsTotal) { -- gdImageDestroy(im); -- return 0; -- } -- - /* Check for open colors at the end, so - * we can reduce colorsTotal and ultimately - * BitsPerPixel */ -@@ -351,6 +346,11 @@ terminated: - } - } - -+ if(!im->colorsTotal) { -+ gdImageDestroy(im); -+ return 0; -+ } -+ - return im; - } - -@@ -447,7 +447,7 @@ static int - GetCode_(gdIOCtx *fd, CODE_STATIC_DATA *scd, int code_size, int flag, int *ZeroDataBlockP) - { - int i, j, ret; -- unsigned char count; -+ int count; - - if(flag) { - scd->curbit = 0; - --- -2.13.6 - diff --git a/gnu/packages/patches/gd-CVE-2019-6977.patch b/gnu/packages/patches/gd-CVE-2019-6977.patch deleted file mode 100644 index b21a8ac619..0000000000 --- a/gnu/packages/patches/gd-CVE-2019-6977.patch +++ /dev/null @@ -1,36 +0,0 @@ -Fix CVE-2019-6977: - -https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-6977 - -Patch copied from Debian: - -https://salsa.debian.org/debian/libgd2/commit/2d7d3b68bb79843e5271a05543e996fd5a3a8cd1 - -Description: Heap-based buffer overflow in gdImageColorMatch -Origin: other, https://gist.github.com/cmb69/1f36d285eb297ed326f5c821d7aafced -Bug-PHP: https://bugs.php.net/bug.php?id=77270 -Bug-Debian: https://bugs.debian.org/920645 -Bug-Debian-Security: https://security-tracker.debian.org/tracker/CVE-2019-6977 -Forwarded: no -Author: "Christoph M. Becker" <cmbecker69@gmx.de> -Last-Update: 2019-02-01 - -At least some of the image reading functions may return images which -use color indexes greater than or equal to im->colorsTotal. We cater -to this by always using a buffer size which is sufficient for -`gdMaxColors` in `gdImageColorMatch()`. ---- - ---- a/src/gd_color_match.c -+++ b/src/gd_color_match.c -@@ -31,8 +31,8 @@ BGD_DECLARE(int) gdImageColorMatch (gdIm - return -4; /* At least 1 color must be allocated */ - } - -- buf = (unsigned long *)gdMalloc(sizeof(unsigned long) * 5 * im2->colorsTotal); -- memset (buf, 0, sizeof(unsigned long) * 5 * im2->colorsTotal ); -+ buf = (unsigned long *)gdMalloc(sizeof(unsigned long) * 5 * gdMaxColors); -+ memset (buf, 0, sizeof(unsigned long) * 5 * gdMaxColors ); - - for (x=0; x < im1->sx; x++) { - for( y=0; y<im1->sy; y++ ) { diff --git a/gnu/packages/patches/gd-CVE-2019-6978.patch b/gnu/packages/patches/gd-CVE-2019-6978.patch deleted file mode 100644 index 69fc5056fc..0000000000 --- a/gnu/packages/patches/gd-CVE-2019-6978.patch +++ /dev/null @@ -1,301 +0,0 @@ -Fix CVE-2019-6978: - -https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-6978 - -Patch copied from upstream source repository: - -https://github.com/libgd/libgd/commit/553702980ae89c83f2d6e254d62cf82e204956d0 - -From 553702980ae89c83f2d6e254d62cf82e204956d0 Mon Sep 17 00:00:00 2001 -From: "Christoph M. Becker" <cmbecker69@gmx.de> -Date: Thu, 17 Jan 2019 11:54:55 +0100 -Subject: [PATCH] Fix #492: Potential double-free in gdImage*Ptr() - -Whenever `gdImage*Ptr()` calls `gdImage*Ctx()` and the latter fails, we -must not call `gdDPExtractData()`; otherwise a double-free would -happen. Since `gdImage*Ctx()` are void functions, and we can't change -that for BC reasons, we're introducing static helpers which are used -internally. - -We're adding a regression test for `gdImageJpegPtr()`, but not for -`gdImageGifPtr()` and `gdImageWbmpPtr()` since we don't know how to -trigger failure of the respective `gdImage*Ctx()` calls. - -This potential security issue has been reported by Solmaz Salimi (aka. -Rooney). ---- - src/gd_gif_out.c | 18 +++++++++++++++--- - src/gd_jpeg.c | 20 ++++++++++++++++---- - src/gd_wbmp.c | 21 ++++++++++++++++++--- - tests/jpeg/.gitignore | 1 + - tests/jpeg/CMakeLists.txt | 1 + - tests/jpeg/Makemodule.am | 3 ++- - tests/jpeg/jpeg_ptr_double_free.c | 31 +++++++++++++++++++++++++++++++ - 7 files changed, 84 insertions(+), 11 deletions(-) - create mode 100644 tests/jpeg/jpeg_ptr_double_free.c - -diff --git a/src/gd_gif_out.c b/src/gd_gif_out.c -index 298a581..d5a9534 100644 ---- a/src/gd_gif_out.c -+++ b/src/gd_gif_out.c -@@ -99,6 +99,7 @@ static void char_init(GifCtx *ctx); - static void char_out(int c, GifCtx *ctx); - static void flush_char(GifCtx *ctx); - -+static int _gdImageGifCtx(gdImagePtr im, gdIOCtxPtr out); - - - -@@ -131,8 +132,11 @@ BGD_DECLARE(void *) gdImageGifPtr(gdImagePtr im, int *size) - void *rv; - gdIOCtx *out = gdNewDynamicCtx(2048, NULL); - if (out == NULL) return NULL; -- gdImageGifCtx(im, out); -- rv = gdDPExtractData(out, size); -+ if (!_gdImageGifCtx(im, out)) { -+ rv = gdDPExtractData(out, size); -+ } else { -+ rv = NULL; -+ } - out->gd_free(out); - return rv; - } -@@ -220,6 +224,12 @@ BGD_DECLARE(void) gdImageGif(gdImagePtr im, FILE *outFile) - - */ - BGD_DECLARE(void) gdImageGifCtx(gdImagePtr im, gdIOCtxPtr out) -+{ -+ _gdImageGifCtx(im, out); -+} -+ -+/* returns 0 on success, 1 on failure */ -+static int _gdImageGifCtx(gdImagePtr im, gdIOCtxPtr out) - { - gdImagePtr pim = 0, tim = im; - int interlace, BitsPerPixel; -@@ -231,7 +241,7 @@ BGD_DECLARE(void) gdImageGifCtx(gdImagePtr im, gdIOCtxPtr out) - based temporary image. */ - pim = gdImageCreatePaletteFromTrueColor(im, 1, 256); - if(!pim) { -- return; -+ return 1; - } - tim = pim; - } -@@ -247,6 +257,8 @@ BGD_DECLARE(void) gdImageGifCtx(gdImagePtr im, gdIOCtxPtr out) - /* Destroy palette based temporary image. */ - gdImageDestroy( pim); - } -+ -+ return 0; - } - - -diff --git a/src/gd_jpeg.c b/src/gd_jpeg.c -index fc05842..96ef430 100644 ---- a/src/gd_jpeg.c -+++ b/src/gd_jpeg.c -@@ -117,6 +117,8 @@ static void fatal_jpeg_error(j_common_ptr cinfo) - exit(99); - } - -+static int _gdImageJpegCtx(gdImagePtr im, gdIOCtx *outfile, int quality); -+ - /* - * Write IM to OUTFILE as a JFIF-formatted JPEG image, using quality - * QUALITY. If QUALITY is in the range 0-100, increasing values -@@ -231,8 +233,11 @@ BGD_DECLARE(void *) gdImageJpegPtr(gdImagePtr im, int *size, int quality) - void *rv; - gdIOCtx *out = gdNewDynamicCtx(2048, NULL); - if (out == NULL) return NULL; -- gdImageJpegCtx(im, out, quality); -- rv = gdDPExtractData(out, size); -+ if (!_gdImageJpegCtx(im, out, quality)) { -+ rv = gdDPExtractData(out, size); -+ } else { -+ rv = NULL; -+ } - out->gd_free(out); - return rv; - } -@@ -253,6 +258,12 @@ void jpeg_gdIOCtx_dest(j_compress_ptr cinfo, gdIOCtx *outfile); - - */ - BGD_DECLARE(void) gdImageJpegCtx(gdImagePtr im, gdIOCtx *outfile, int quality) -+{ -+ _gdImageJpegCtx(im, outfile, quality); -+} -+ -+/* returns 0 on success, 1 on failure */ -+static int _gdImageJpegCtx(gdImagePtr im, gdIOCtx *outfile, int quality) - { - struct jpeg_compress_struct cinfo; - struct jpeg_error_mgr jerr; -@@ -287,7 +298,7 @@ BGD_DECLARE(void) gdImageJpegCtx(gdImagePtr im, gdIOCtx *outfile, int quality) - if(row) { - gdFree(row); - } -- return; -+ return 1; - } - - cinfo.err->emit_message = jpeg_emit_message; -@@ -328,7 +339,7 @@ BGD_DECLARE(void) gdImageJpegCtx(gdImagePtr im, gdIOCtx *outfile, int quality) - if(row == 0) { - gd_error("gd-jpeg: error: unable to allocate JPEG row structure: gdCalloc returns NULL\n"); - jpeg_destroy_compress(&cinfo); -- return; -+ return 1; - } - - rowptr[0] = row; -@@ -405,6 +416,7 @@ BGD_DECLARE(void) gdImageJpegCtx(gdImagePtr im, gdIOCtx *outfile, int quality) - jpeg_finish_compress(&cinfo); - jpeg_destroy_compress(&cinfo); - gdFree(row); -+ return 0; - } - - -diff --git a/src/gd_wbmp.c b/src/gd_wbmp.c -index f19a1c9..a49bdbe 100644 ---- a/src/gd_wbmp.c -+++ b/src/gd_wbmp.c -@@ -88,6 +88,8 @@ int gd_getin(void *in) - return (gdGetC((gdIOCtx *)in)); - } - -+static int _gdImageWBMPCtx(gdImagePtr image, int fg, gdIOCtx *out); -+ - /* - Function: gdImageWBMPCtx - -@@ -100,6 +102,12 @@ int gd_getin(void *in) - out - the stream where to write - */ - BGD_DECLARE(void) gdImageWBMPCtx(gdImagePtr image, int fg, gdIOCtx *out) -+{ -+ _gdImageWBMPCtx(image, fg, out); -+} -+ -+/* returns 0 on success, 1 on failure */ -+static int _gdImageWBMPCtx(gdImagePtr image, int fg, gdIOCtx *out) - { - int x, y, pos; - Wbmp *wbmp; -@@ -107,7 +115,7 @@ BGD_DECLARE(void) gdImageWBMPCtx(gdImagePtr image, int fg, gdIOCtx *out) - /* create the WBMP */ - if((wbmp = createwbmp(gdImageSX(image), gdImageSY(image), WBMP_WHITE)) == NULL) { - gd_error("Could not create WBMP\n"); -- return; -+ return 1; - } - - /* fill up the WBMP structure */ -@@ -123,11 +131,15 @@ BGD_DECLARE(void) gdImageWBMPCtx(gdImagePtr image, int fg, gdIOCtx *out) - - /* write the WBMP to a gd file descriptor */ - if(writewbmp(wbmp, &gd_putout, out)) { -+ freewbmp(wbmp); - gd_error("Could not save WBMP\n"); -+ return 1; - } - - /* des submitted this bugfix: gdFree the memory. */ - freewbmp(wbmp); -+ -+ return 0; - } - - /* -@@ -271,8 +283,11 @@ BGD_DECLARE(void *) gdImageWBMPPtr(gdImagePtr im, int *size, int fg) - void *rv; - gdIOCtx *out = gdNewDynamicCtx(2048, NULL); - if (out == NULL) return NULL; -- gdImageWBMPCtx(im, fg, out); -- rv = gdDPExtractData(out, size); -+ if (!_gdImageWBMPCtx(im, fg, out)) { -+ rv = gdDPExtractData(out, size); -+ } else { -+ rv = NULL; -+ } - out->gd_free(out); - return rv; - } -#diff --git a/tests/jpeg/.gitignore b/tests/jpeg/.gitignore -#index c28aa87..13bcf04 100644 -#--- a/tests/jpeg/.gitignore -#+++ b/tests/jpeg/.gitignore -#@@ -3,5 +3,6 @@ -# /jpeg_empty_file -# /jpeg_im2im -# /jpeg_null -#+/jpeg_ptr_double_free -# /jpeg_read -# /jpeg_resolution -diff --git a/tests/jpeg/CMakeLists.txt b/tests/jpeg/CMakeLists.txt -index 19964b0..a8d8162 100644 ---- a/tests/jpeg/CMakeLists.txt -+++ b/tests/jpeg/CMakeLists.txt -@@ -2,6 +2,7 @@ IF(JPEG_FOUND) - LIST(APPEND TESTS_FILES - jpeg_empty_file - jpeg_im2im -+ jpeg_ptr_double_free - jpeg_null - ) - -diff --git a/tests/jpeg/Makemodule.am b/tests/jpeg/Makemodule.am -index 7e5d317..b89e169 100644 ---- a/tests/jpeg/Makemodule.am -+++ b/tests/jpeg/Makemodule.am -@@ -2,7 +2,8 @@ if HAVE_LIBJPEG - libgd_test_programs += \ - jpeg/jpeg_empty_file \ - jpeg/jpeg_im2im \ -- jpeg/jpeg_null -+ jpeg/jpeg_null \ -+ jpeg/jpeg_ptr_double_free - - if HAVE_LIBPNG - libgd_test_programs += \ -diff --git a/tests/jpeg/jpeg_ptr_double_free.c b/tests/jpeg/jpeg_ptr_double_free.c -new file mode 100644 -index 0000000..df5a510 ---- /dev/null -+++ b/tests/jpeg/jpeg_ptr_double_free.c -@@ -0,0 +1,31 @@ -+/** -+ * Test that failure to convert to JPEG returns NULL -+ * -+ * We are creating an image, set its width to zero, and pass this image to -+ * `gdImageJpegPtr()` which is supposed to fail, and as such should return NULL. -+ * -+ * See also <https://github.com/libgd/libgd/issues/381> -+ */ -+ -+ -+#include "gd.h" -+#include "gdtest.h" -+ -+ -+int main() -+{ -+ gdImagePtr src, dst; -+ int size; -+ -+ src = gdImageCreateTrueColor(1, 10); -+ gdTestAssert(src != NULL); -+ -+ src->sx = 0; /* this hack forces gdImageJpegPtr() to fail */ -+ -+ dst = gdImageJpegPtr(src, &size, 0); -+ gdTestAssert(dst == NULL); -+ -+ gdImageDestroy(src); -+ -+ return gdNumFailures(); -+} --- -2.20.1 - diff --git a/gnu/packages/patches/gd-brect-bounds.patch b/gnu/packages/patches/gd-brect-bounds.patch new file mode 100644 index 0000000000..575e4dc2ad --- /dev/null +++ b/gnu/packages/patches/gd-brect-bounds.patch @@ -0,0 +1,63 @@ +Revert upstream commit 04bb9a08b3c25f8e3c0c235f9cefc0f94df59a5a because it +causes a test failure on i686 and possibly other architectures. + +See <https://github.com/libgd/libgd/issues/613>. + +diff --git a/src/gdft.c b/src/gdft.c +--- a/src/gdft.c ++++ b/src/gdft.c +@@ -1579,6 +1579,12 @@ BGD_DECLARE(char *) gdImageStringFTEx (gdImage * im, int *brect, int fg, const c + double scalex = (double)hdpi / (64 * METRIC_RES); + double scaley = (double)vdpi / (64 * METRIC_RES); + ++ /* increase by 1 pixel to allow for rounding */ ++ total_min.x -= METRIC_RES; ++ total_min.y -= METRIC_RES; ++ total_max.x += METRIC_RES; ++ total_max.y += METRIC_RES; ++ + /* rotate bounding rectangle, scale and round to int pixels, and translate */ + brect[0] = x + (total_min.x * cos_a + total_max.y * sin_a)*scalex; + brect[1] = y - (total_min.x * sin_a - total_max.y * cos_a)*scaley; +diff --git a/tests/gdimagestringft/gdimagestringft_bbox.c b/tests/gdimagestringft/gdimagestringft_bbox.c +--- a/tests/gdimagestringft/gdimagestringft_bbox.c ++++ b/tests/gdimagestringft/gdimagestringft_bbox.c +@@ -8,22 +8,22 @@ + #define DELTA (PI/8) + + static int EXPECT[16][8] = { +- {500, 400, 628, 400, 628, 376, 500, 376}, +- {492, 362, 611, 312, 601, 290, 483, 339}, +- {470, 330, 561, 239, 544, 221, 453, 312}, +- {437, 308, 486, 189, 464, 180, 414, 299}, +- {400, 301, 400, 173, 376, 173, 376, 301}, +- {363, 309, 313, 190, 291, 200, 340, 318}, +- {332, 331, 241, 240, 223, 257, 314, 348}, +- {311, 363, 192, 314, 183, 336, 302, 386}, +- {304, 399, 176, 399, 176, 423, 304, 423}, +- {312, 435, 193, 485, 203, 507, 321, 458}, +- {333, 465, 242, 556, 259, 574, 350, 483}, +- {364, 486, 315, 605, 337, 614, 387, 495}, +- {399, 492, 399, 620, 423, 620, 423, 492}, +- {434, 484, 484, 603, 506, 593, 457, 475}, +- {463, 464, 554, 555, 572, 538, 481, 447}, +- {483, 434, 602, 483, 611, 461, 492, 411}, ++ {498, 401, 630, 401, 630, 374, 498, 374}, ++ {491, 364, 613, 313, 602, 288, 481, 338}, ++ {470, 332, 563, 239, 544, 219, 451, 312}, ++ {438, 310, 488, 189, 463, 178, 412, 300}, ++ {401, 303, 401, 171, 374, 171, 374, 303}, ++ {365, 310, 314, 188, 289, 199, 339, 320}, ++ {334, 331, 241, 238, 221, 257, 314, 350}, ++ {313, 362, 192, 312, 181, 337, 303, 388}, ++ {306, 398, 174, 398, 174, 425, 306, 425}, ++ {313, 433, 191, 484, 202, 509, 323, 459}, ++ {333, 463, 240, 556, 259, 576, 352, 483}, ++ {363, 484, 313, 605, 338, 616, 389, 494}, ++ {398, 490, 398, 622, 425, 622, 425, 490}, ++ {432, 483, 483, 605, 508, 594, 458, 473}, ++ {461, 464, 554, 557, 574, 538, 481, 445}, ++ {481, 435, 602, 485, 613, 460, 491, 409}, + }; + + int main() diff --git a/gnu/packages/patches/gd-fix-tests-on-i686.patch b/gnu/packages/patches/gd-fix-tests-on-i686.patch index 280893c1d4..7ec8e7fee9 100644 --- a/gnu/packages/patches/gd-fix-tests-on-i686.patch +++ b/gnu/packages/patches/gd-fix-tests-on-i686.patch @@ -38,7 +38,7 @@ diff -ru libgd-2.2.3.orig/tests/gdimagecopyresampled/bug00201.c libgd-2.2.3/test @@ -65,7 +66,8 @@ gdImageDestroy(background); gdImageDestroy(scaled_logo); - + - gdAssertImageEqualsToFile("gdimagecopyresampled/bug00201_exp.png", img); + if (FLT_EVAL_METHOD != 2) + gdAssertImageEqualsToFile("gdimagecopyresampled/bug00201_exp.png", img); diff --git a/gnu/packages/patches/gd-freetype-test-failure.patch b/gnu/packages/patches/gd-freetype-test-failure.patch deleted file mode 100644 index 49c16ca089..0000000000 --- a/gnu/packages/patches/gd-freetype-test-failure.patch +++ /dev/null @@ -1,59 +0,0 @@ -Fix a test failure with freetype 2.7: - -https://github.com/libgd/libgd/commit/a5570d3ed30ff76c2a8bdd54f4ab1825acca0143 - -Patch copied from upstream source repository: - -https://github.com/libgd/libgd/commit/a5570d3ed30ff76c2a8bdd54f4ab1825acca0143 - -From a5570d3ed30ff76c2a8bdd54f4ab1825acca0143 Mon Sep 17 00:00:00 2001 -From: "Christoph M. Becker" <cmbecker69@gmx.de> -Date: Sun, 29 Jan 2017 17:07:50 +0100 -Subject: [PATCH] Fix #302: Test suite fails with freetype 2.7 - -Actually, the test failures are not necessarily related to freetype -2.7, but rather are caused by subpixel hinting which is enabled by -default in freetype 2.7. Subpixel hinting is, however, already -available in freetype 2.5 and in versions having the "Infinality" -patch. - -To get the expected results in all environments, we have to disable -subpixel hinting, what is easily done by setting a respective -environment variable. - -See also: -* https://www.freetype.org/freetype2/docs/subpixel-hinting.html -* https://www.freetype.org/freetype2/docs/reference/ft2-tt_driver.html ---- - tests/freetype/bug00132.c | 3 +++ - tests/gdimagestringft/gdimagestringft_bbox.c | 3 +++ - 2 files changed, 6 insertions(+) - -diff --git a/tests/freetype/bug00132.c b/tests/freetype/bug00132.c -index 713dd2d..42ed5b1 100644 ---- a/tests/freetype/bug00132.c -+++ b/tests/freetype/bug00132.c -@@ -11,6 +11,9 @@ int main() - char *path; - char *ret = NULL; - -+ /* disable subpixel hinting */ -+ putenv("FREETYPE_PROPERTIES=truetype:interpreter-version=35"); -+ - im = gdImageCreateTrueColor(50, 30); - - if (!im) { -diff --git a/tests/gdimagestringft/gdimagestringft_bbox.c b/tests/gdimagestringft/gdimagestringft_bbox.c -index 0161ec8..1596a9e 100644 ---- a/tests/gdimagestringft/gdimagestringft_bbox.c -+++ b/tests/gdimagestringft/gdimagestringft_bbox.c -@@ -38,6 +38,9 @@ int main() - int error = 0; - FILE *fp; - -+ /* disable subpixel hinting */ -+ putenv("FREETYPE_PROPERTIES=truetype:interpreter-version=35"); -+ - path = gdTestFilePath("freetype/DejaVuSans.ttf"); - im = gdImageCreate(800, 800); - gdImageColorAllocate(im, 0xFF, 0xFF, 0xFF); /* allocate white for background color */ diff --git a/gnu/packages/patches/gdm-default-session.patch b/gnu/packages/patches/gdm-default-session.patch index 4839a04de4..9ab2829cdb 100644 --- a/gnu/packages/patches/gdm-default-session.patch +++ b/gnu/packages/patches/gdm-default-session.patch @@ -5,11 +5,10 @@ and not in the directories listed in $XDG_DATA_DIRS. The latter includes Fixes <https://bugs.gnu.org/37831>. -diff --git a/daemon/gdm-session.c b/daemon/gdm-session.c -index 6a116a8..02c1458 100644 ---- a/daemon/gdm-session.c -+++ b/daemon/gdm-session.c -@@ -348,24 +348,18 @@ get_system_session_dirs (GdmSession *self) +diff -ur a/daemon/gdm-session.c b/daemon/gdm-session.c +--- a/daemon/gdm-session.c 2019-09-25 10:40:24.000000000 -0400 ++++ b/daemon/gdm-session.c 2020-04-18 18:30:02.671856808 -0400 +@@ -348,24 +348,18 @@ GArray *search_array = NULL; char **search_dirs; int i; @@ -35,7 +34,7 @@ index 6a116a8..02c1458 100644 g_array_append_vals (search_array, x_search_dirs, G_N_ELEMENTS (x_search_dirs)); #ifdef ENABLE_WAYLAND_SUPPORT -@@ -373,16 +367,7 @@ get_system_session_dirs (GdmSession *self) +@@ -373,16 +367,7 @@ #ifdef ENABLE_USER_DISPLAY_SERVER g_array_prepend_val (search_array, wayland_search_dir); @@ -52,40 +51,39 @@ index 6a116a8..02c1458 100644 g_array_append_val (search_array, wayland_search_dir); #endif } -diff --git a/libgdm/gdm-sessions.c b/libgdm/gdm-sessions.c -index afbc5c0..bb5e3e6 100644 ---- a/libgdm/gdm-sessions.c -+++ b/libgdm/gdm-sessions.c -@@ -238,19 +238,11 @@ collect_sessions (void) +diff -ur a/libgdm/gdm-sessions.c b/libgdm/gdm-sessions.c +--- a/libgdm/gdm-sessions.c 2019-10-07 04:53:35.000000000 -0400 ++++ b/libgdm/gdm-sessions.c 2020-04-18 18:31:42.491348691 -0400 +@@ -245,19 +245,12 @@ "/etc/X11/sessions/", DMCONFDIR "/Sessions/", DATADIR "/gdm/BuiltInSessions/", - DATADIR "/xsessions/", -- NULL + "/run/current-system/profile/share/xsessions/" }; - xorg_search_array = g_array_new (TRUE, TRUE, sizeof (char *)); + names_seen_before = g_hash_table_new (g_str_hash, g_str_equal); + xorg_search_array = g_ptr_array_new_with_free_func (g_free); - const gchar * const *system_data_dirs = g_get_system_data_dirs (); - - for (i = 0; system_data_dirs[i]; i++) { - session_dir = g_build_filename (system_data_dirs[i], "xsessions", NULL); -- g_array_append_val (xorg_search_array, session_dir); +- g_ptr_array_add (xorg_search_array, session_dir); - } - - g_array_append_vals (xorg_search_array, xorg_search_dirs, G_N_ELEMENTS (xorg_search_dirs)); - - #ifdef ENABLE_WAYLAND_SUPPORT -@@ -261,11 +253,6 @@ collect_sessions (void) + for (i = 0; i < G_N_ELEMENTS (xorg_search_dirs); i++) { + g_ptr_array_add (xorg_search_array, g_strdup (xorg_search_dirs[i])); + } +@@ -269,11 +262,6 @@ - wayland_search_array = g_array_new (TRUE, TRUE, sizeof (char *)); + wayland_search_array = g_ptr_array_new_with_free_func (g_free); - for (i = 0; system_data_dirs[i]; i++) { - session_dir = g_build_filename (system_data_dirs[i], "wayland-sessions", NULL); -- g_array_append_val (wayland_search_array, session_dir); +- g_ptr_array_add (wayland_search_array, session_dir); - } - - g_array_append_vals (wayland_search_array, wayland_search_dirs, G_N_ELEMENTS (wayland_search_dirs)); - #endif - + for (i = 0; i < G_N_ELEMENTS (wayland_search_dirs); i++) { + g_ptr_array_add (wayland_search_array, g_strdup (wayland_search_dirs[i])); + } diff --git a/gnu/packages/patches/ghc-dont-pass-linker-flags-via-response-files.patch b/gnu/packages/patches/ghc-dont-pass-linker-flags-via-response-files.patch deleted file mode 100644 index 40aae7a9d7..0000000000 --- a/gnu/packages/patches/ghc-dont-pass-linker-flags-via-response-files.patch +++ /dev/null @@ -1,27 +0,0 @@ -Don’t add linker flags via ‘response files’ since ld-wrapper -doesn’t handle them. -See https://github.com/NixOS/nixpkgs/commit/a421e7bd4a28c69bded8b17888325e31554f61a1 -https://gcc.gnu.org/ml/gcc/2016-10/msg00151.html - -diff --git a/compiler/main/SysTools.hs.orig b/compiler/main/SysTools.hs -index 1ab5b13..99270fc 100644 ---- a/compiler/main/SysTools.hs.orig -+++ b/compiler/main/SysTools.hs -@@ -424,7 +424,7 @@ runCc dflags args = do - args1 = map Option (getOpts dflags opt_c) - args2 = args0 ++ args1 ++ args - mb_env <- getGccEnv args2 -- runSomethingResponseFile dflags cc_filter "C Compiler" p args2 mb_env -+ runSomethingFiltered dflags cc_filter "C Compiler" p args2 mb_env - where - -- discard some harmless warnings from gcc that we can't turn off - cc_filter = unlines . doFilter . lines -@@ -945,7 +945,7 @@ runLink dflags args = do - args1 = map Option (getOpts dflags opt_l) - args2 = args0 ++ linkargs ++ args1 ++ args - mb_env <- getGccEnv args2 -- runSomethingResponseFile dflags ld_filter "Linker" p args2 mb_env -+ runSomethingFiltered dflags ld_filter "Linker" p args2 mb_env - where - ld_filter = case (platformOS (targetPlatform dflags)) of - OSSolaris2 -> sunos_ld_filter diff --git a/gnu/packages/patches/ghc-testsuite-dlopen-pie.patch b/gnu/packages/patches/ghc-testsuite-dlopen-pie.patch new file mode 100644 index 0000000000..99ba3ac42f --- /dev/null +++ b/gnu/packages/patches/ghc-testsuite-dlopen-pie.patch @@ -0,0 +1,54 @@ +Do not attempt to dlopen PIE objects, which was disallowed with glibc 2.30. + +https://gitlab.haskell.org/ghc/ghc/issues/17952 +https://sourceware.org/bugzilla/show_bug.cgi?id=24323 + +Patch submitted upstream: +https://gitlab.haskell.org/ghc/ghc/-/merge_requests/2947 + +diff --git a/testsuite/tests/dynlibs/Makefile b/testsuite/tests/dynlibs/Makefile +--- a/testsuite/tests/dynlibs/Makefile ++++ b/testsuite/tests/dynlibs/Makefile +@@ -60,6 +60,4 @@ T5373: + .PHONY: T13702 + T13702: + '$(TEST_HC)' -v0 -dynamic -rdynamic -fPIC -pie T13702.hs +- '$(TEST_HC)' -v0 -dynamic T13702a.hs +- ./T13702 # first make sure executable itself works +- ./T13702a # then try dynamically loading it as library ++ ./T13702 +diff --git a/testsuite/tests/dynlibs/T13702.hs b/testsuite/tests/dynlibs/T13702.hs +--- a/testsuite/tests/dynlibs/T13702.hs ++++ b/testsuite/tests/dynlibs/T13702.hs +@@ -2,8 +2,3 @@ + + main :: IO () + main = putStrLn "hello world" +- +-foreign export ccall "hello" hello :: IO () +- +-hello :: IO () +-hello = putStrLn "hello world again" +diff --git a/testsuite/tests/dynlibs/T13702.stdout b/testsuite/tests/dynlibs/T13702.stdout +--- a/testsuite/tests/dynlibs/T13702.stdout ++++ b/testsuite/tests/dynlibs/T13702.stdout +@@ -1,2 +1 @@ + hello world +-hello world again +diff --git a/testsuite/tests/dynlibs/T13702a.hs b/testsuite/tests/dynlibs/T13702a.hs +deleted file mode 100644 +--- a/testsuite/tests/dynlibs/T13702a.hs ++++ /dev/null +@@ -1,12 +0,0 @@ +-{-# LANGUAGE ForeignFunctionInterface #-} +- +-import Foreign +-import System.Posix.DynamicLinker +- +-main :: IO () +-main = do +- dl <- dlopen "./T13702" [RTLD_NOW] +- funptr <- dlsym dl "hello" :: IO (FunPtr (IO ())) +- mkAction funptr +- +-foreign import ccall "dynamic" mkAction :: FunPtr (IO ()) -> IO () diff --git a/gnu/packages/patches/ghostscript-no-header-id.patch b/gnu/packages/patches/ghostscript-no-header-id.patch index da1aa5530f..45fc95fd6e 100644 --- a/gnu/packages/patches/ghostscript-no-header-id.patch +++ b/gnu/packages/patches/ghostscript-no-header-id.patch @@ -9,10 +9,10 @@ See: https://bugs.ghostscript.com/show_bug.cgi?id=698208 diff -ur orig/gnu-ghostscript-9.14.0/devices/vector/gdevpdf.c gnu-ghostscript-9.14.0/devices/vector/gdevpdf.c --- orig/gnu-ghostscript-9.14.0/devices/vector/gdevpdf.c 2017-07-09 23:30:28.960479189 +0200 +++ gnu-ghostscript-9.14.0/devices/vector/gdevpdf.c 2017-07-09 23:34:34.306524488 +0200 -@@ -1785,8 +1785,11 @@ +@@ -1810,8 +1810,11 @@ * +1 for the linearisation dict and +1 for the primary hint stream. */ - linear_params->FirsttrailerOffset = gp_ftell_64(linear_params->Lin_File.file); + linear_params->FirsttrailerOffset = gp_ftell(linear_params->Lin_File.file); - gs_sprintf(LDict, "\ntrailer\n<</Size %ld/Info %d 0 R/Root %d 0 R/ID[%s%s]/Prev %d>>\nstartxref\r\n0\n%%%%EOF\n \n", - linear_params->LastResource + 3, pdev->ResourceUsage[linear_params->Info_id].NewObjectNumber, pdev->ResourceUsage[linear_params->Catalog_id].NewObjectNumber, fileID, fileID, 0); + gs_sprintf(LDict, "\ntrailer\n<</Size %ld/Info %d 0 R/Root %d 0 R", @@ -20,10 +20,10 @@ diff -ur orig/gnu-ghostscript-9.14.0/devices/vector/gdevpdf.c gnu-ghostscript-9. + if (pdev->OwnerPassword.size > 0 || !(!getenv("GS_GENERATE_UUIDS") || (strcasecmp(getenv("GS_GENERATE_UUIDS"), "0") != 0 && strcasecmp(getenv("GS_GENERATE_UUIDS"), "no") != 0))) /* ID is mandatory when encrypting */ + gs_sprintf(LDict, "/ID[%s%s]", fileID, fileID); + gs_sprintf(LDict, "/Prev %d>>\nstartxref\r\n0\n%%%%EOF\n \n", 0); - fwrite(LDict, strlen(LDict), 1, linear_params->Lin_File.file); + gp_fwrite(LDict, strlen(LDict), 1, linear_params->Lin_File.file); /* Write document catalog (Part 4) */ -@@ -2321,8 +2324,11 @@ +@@ -2346,8 +2349,11 @@ if (code != 0) return_error(gs_error_ioerror); @@ -34,10 +34,10 @@ diff -ur orig/gnu-ghostscript-9.14.0/devices/vector/gdevpdf.c gnu-ghostscript-9. + if (pdev->OwnerPassword.size > 0 || !(!getenv("GS_GENERATE_UUIDS") || (strcasecmp(getenv("GS_GENERATE_UUIDS"), "0") != 0 || strcasecmp(getenv("GS_GENERATE_UUIDS"), "no") != 0))) /* ID is mandatory when encrypting */ + gs_sprintf(LDict, "/ID[%s%s]", fileID, fileID); + gs_sprintf(LDict, "/Prev %"PRId64">>\nstartxref\r\n0\n%%%%EOF\n", mainxref); - fwrite(LDict, strlen(LDict), 1, linear_params->sfile); + gp_fwrite(LDict, strlen(LDict), 1, linear_params->sfile); - code = gp_fseek_64(linear_params->sfile, pdev->ResourceUsage[HintStreamObj].LinearisedOffset, SEEK_SET); -@@ -3016,10 +3022,12 @@ + code = gp_fseek(linear_params->sfile, pdev->ResourceUsage[HintStreamObj].LinearisedOffset, SEEK_SET); +@@ -3012,10 +3018,12 @@ stream_puts(s, "trailer\n"); pprintld3(s, "<< /Size %ld /Root %ld 0 R /Info %ld 0 R\n", pdev->next_id, Catalog_id, Info_id); diff --git a/gnu/packages/patches/ghostscript-no-header-uuid.patch b/gnu/packages/patches/ghostscript-no-header-uuid.patch index 473531220c..f4b55764c8 100644 --- a/gnu/packages/patches/ghostscript-no-header-uuid.patch +++ b/gnu/packages/patches/ghostscript-no-header-uuid.patch @@ -11,7 +11,7 @@ See: https://bugs.ghostscript.com/show_bug.cgi?id=698208 diff -ur orig/gnu-ghostscript-9.14.0/devices/vector/gdevpdfe.c aa/gnu-ghostscript-9.14.0/devices/vector/gdevpdfe.c --- orig/gnu-ghostscript-9.14.0/devices/vector/gdevpdfe.c 2017-07-09 23:30:28.960479189 +0200 +++ gnu-ghostscript-9.14.0/devices/vector/gdevpdfe.c 2017-07-10 01:04:12.252478276 +0200 -@@ -617,7 +617,7 @@ +@@ -620,7 +620,7 @@ return code; /* PDF/A XMP reference recommends setting UUID to empty. If not empty must be a URI */ @@ -20,13 +20,12 @@ diff -ur orig/gnu-ghostscript-9.14.0/devices/vector/gdevpdfe.c aa/gnu-ghostscrip instance_uuid[0] = 0x00; cre_date_time_len = pdf_get_docinfo_item(pdev, "/CreationDate", cre_date_time, sizeof(cre_date_time)); -@@ -719,15 +719,18 @@ +@@ -720,14 +720,17 @@ pdf_xml_tag_close(s, "rdf:Description"); pdf_xml_newline(s); - pdf_xml_tag_open_beg(s, "rdf:Description"); -- pdf_xml_attribute_name(s, "rdf:about"); -- pdf_xml_attribute_value(s, instance_uuid); +- pdf_xml_copy(s, " rdf:about=\"\""); - pdf_xml_attribute_name(s, "xmlns:xapMM"); - pdf_xml_attribute_value(s, "http://ns.adobe.com/xap/1.0/mm/"); - pdf_xml_attribute_name(s, "xapMM:DocumentID"); @@ -36,8 +35,7 @@ diff -ur orig/gnu-ghostscript-9.14.0/devices/vector/gdevpdfe.c aa/gnu-ghostscrip + if (!getenv("GS_GENERATE_UUIDS") || (strcasecmp(getenv("GS_GENERATE_UUIDS"), "0") != 0 && strcasecmp(getenv("GS_GENERATE_UUIDS"), "no") != 0)) + { + pdf_xml_tag_open_beg(s, "rdf:Description"); -+ pdf_xml_attribute_name(s, "rdf:about"); -+ pdf_xml_attribute_value(s, instance_uuid); ++ pdf_xml_copy(s, " rdf:about=\"\""); + pdf_xml_attribute_name(s, "xmlns:xapMM"); + pdf_xml_attribute_value(s, "http://ns.adobe.com/xap/1.0/mm/"); + pdf_xml_attribute_name(s, "xapMM:DocumentID"); @@ -47,4 +45,4 @@ diff -ur orig/gnu-ghostscript-9.14.0/devices/vector/gdevpdfe.c aa/gnu-ghostscrip + } pdf_xml_tag_open_beg(s, "rdf:Description"); - pdf_xml_attribute_name(s, "rdf:about"); + pdf_xml_copy(s, " rdf:about=\"\""); diff --git a/gnu/packages/patches/giflib-make-reallocarray-private.patch b/gnu/packages/patches/giflib-make-reallocarray-private.patch deleted file mode 100644 index 69228c5be8..0000000000 --- a/gnu/packages/patches/giflib-make-reallocarray-private.patch +++ /dev/null @@ -1,120 +0,0 @@ -Move the declaration from gif_lib.h to gif_lib_private.h to solve -conflicts when some .c-file #includes both stdlib.h and gif_lib.h. -See also https://sourceforge.net/p/giflib/bugs/110/ - -diff -ur giflib-5.1.4.orig/lib/dgif_lib.c giflib-5.1.4/lib/dgif_lib.c ---- giflib-5.1.4.orig/lib/dgif_lib.c 2018-02-28 20:31:02.294682673 +0100 -+++ giflib-5.1.4/lib/dgif_lib.c 2018-02-28 22:38:11.659126414 +0100 -@@ -396,7 +396,7 @@ - - if (GifFile->SavedImages) { - SavedImage* new_saved_images = -- (SavedImage *)reallocarray(GifFile->SavedImages, -+ (SavedImage *)giflib_private_reallocarray(GifFile->SavedImages, - (GifFile->ImageCount + 1), sizeof(SavedImage)); - if (new_saved_images == NULL) { - GifFile->Error = D_GIF_ERR_NOT_ENOUGH_MEM; -@@ -1108,7 +1108,7 @@ - if (ImageSize > (SIZE_MAX / sizeof(GifPixelType))) { - return GIF_ERROR; - } -- sp->RasterBits = (unsigned char *)reallocarray(NULL, ImageSize, -+ sp->RasterBits = (unsigned char *)giflib_private_reallocarray(NULL, ImageSize, - sizeof(GifPixelType)); - - if (sp->RasterBits == NULL) { -diff -ur giflib-5.1.4.orig/lib/gifalloc.c giflib-5.1.4/lib/gifalloc.c ---- giflib-5.1.4.orig/lib/gifalloc.c 2018-02-28 20:31:02.294682673 +0100 -+++ giflib-5.1.4/lib/gifalloc.c 2018-02-28 22:38:11.657126423 +0100 -@@ -8,7 +8,7 @@ - #include <stdio.h> - #include <string.h> - --#include "gif_lib.h" -+#include "gif_lib_private.h" - - #define MAX(x, y) (((x) > (y)) ? (x) : (y)) - -@@ -188,7 +188,7 @@ - - /* perhaps we can shrink the map? */ - if (RoundUpTo < ColorUnion->ColorCount) { -- GifColorType *new_map = (GifColorType *)reallocarray(Map, -+ GifColorType *new_map = (GifColorType *)giflib_private_reallocarray(Map, - RoundUpTo, sizeof(GifColorType)); - if( new_map == NULL ) { - GifFreeMapObject(ColorUnion); -@@ -232,7 +232,7 @@ - if (*ExtensionBlocks == NULL) - *ExtensionBlocks=(ExtensionBlock *)malloc(sizeof(ExtensionBlock)); - else { -- ExtensionBlock* ep_new = (ExtensionBlock *)reallocarray -+ ExtensionBlock* ep_new = (ExtensionBlock *)giflib_private_reallocarray - (*ExtensionBlocks, (*ExtensionBlockCount + 1), - sizeof(ExtensionBlock)); - if( ep_new == NULL ) -@@ -325,7 +325,7 @@ - if (GifFile->SavedImages == NULL) - GifFile->SavedImages = (SavedImage *)malloc(sizeof(SavedImage)); - else -- GifFile->SavedImages = (SavedImage *)reallocarray(GifFile->SavedImages, -+ GifFile->SavedImages = (SavedImage *)giflib_private_reallocarray(GifFile->SavedImages, - (GifFile->ImageCount + 1), sizeof(SavedImage)); - - if (GifFile->SavedImages == NULL) -@@ -355,7 +355,7 @@ - } - - /* next, the raster */ -- sp->RasterBits = (unsigned char *)reallocarray(NULL, -+ sp->RasterBits = (unsigned char *)giflib_private_reallocarray(NULL, - (CopyFrom->ImageDesc.Height * - CopyFrom->ImageDesc.Width), - sizeof(GifPixelType)); -@@ -369,7 +369,7 @@ - - /* finally, the extension blocks */ - if (sp->ExtensionBlocks != NULL) { -- sp->ExtensionBlocks = (ExtensionBlock *)reallocarray(NULL, -+ sp->ExtensionBlocks = (ExtensionBlock *)giflib_private_reallocarray(NULL, - CopyFrom->ExtensionBlockCount, - sizeof(ExtensionBlock)); - if (sp->ExtensionBlocks == NULL) { -diff -ur giflib-5.1.4.orig/lib/gif_lib.h giflib-5.1.4/lib/gif_lib.h ---- giflib-5.1.4.orig/lib/gif_lib.h 2018-02-28 20:31:02.294682673 +0100 -+++ giflib-5.1.4/lib/gif_lib.h 2018-02-28 20:31:43.135716712 +0100 -@@ -244,9 +244,6 @@ - GifPixelType ColorTransIn2[]); - extern int GifBitSize(int n); - --extern void * --reallocarray(void *optr, size_t nmemb, size_t size); -- - /****************************************************************************** - Support for the in-core structures allocation (slurp mode). - ******************************************************************************/ -diff -ur giflib-5.1.4.orig/lib/gif_lib_private.h giflib-5.1.4/lib/gif_lib_private.h ---- giflib-5.1.4.orig/lib/gif_lib_private.h 2018-02-28 20:31:02.294682673 +0100 -+++ giflib-5.1.4/lib/gif_lib_private.h 2018-02-28 22:38:11.657126423 +0100 -@@ -54,6 +54,9 @@ - bool gif89; - } GifFilePrivateType; - -+extern void * -+giflib_private_reallocarray(void *optr, size_t nmemb, size_t size); -+ - #endif /* _GIF_LIB_PRIVATE_H */ - - /* end */ -diff -ur giflib-5.1.4.orig/lib/openbsd-reallocarray.c giflib-5.1.4/lib/openbsd-reallocarray.c ---- giflib-5.1.4.orig/lib/openbsd-reallocarray.c 2018-02-28 20:31:02.295682659 +0100 -+++ giflib-5.1.4/lib/openbsd-reallocarray.c 2018-02-28 22:38:11.656126428 +0100 -@@ -27,7 +27,7 @@ - #define MUL_NO_OVERFLOW ((size_t)1 << (sizeof(size_t) * 4)) - - void * --reallocarray(void *optr, size_t nmemb, size_t size) -+giflib_private_reallocarray(void *optr, size_t nmemb, size_t size) - { - if ((nmemb >= MUL_NO_OVERFLOW || size >= MUL_NO_OVERFLOW) && - nmemb > 0 && SIZE_MAX / nmemb < size) { diff --git a/gnu/packages/patches/git-annex-S3v4.patch b/gnu/packages/patches/git-annex-S3v4.patch new file mode 100644 index 0000000000..9f7cea329e --- /dev/null +++ b/gnu/packages/patches/git-annex-S3v4.patch @@ -0,0 +1,77 @@ +From the upstream commit, with the changes to CHANGELOG and the docs +folder removed. + +From 1532d67c3ecf452b8c86bcc5928525398755cd01 Mon Sep 17 00:00:00 2001 +From: Joey Hess <joeyh@joeyh.name> +Date: Thu, 7 May 2020 13:18:11 -0400 +Subject: [PATCH] S3: Support signature=v4 + +To use S3 Signature Version 4. Some S3 services seem to require v4, while +others may only support v2, which remains the default. + +I'm also not sure if v4 works correctly in all cases, there is this +upstream bug report: https://github.com/aristidb/aws/issues/262 +I've only tested it against the default S3 endpoint. +--- + CHANGELOG | 3 +++ + Remote/S3.hs | 23 ++++++++++++++++++- + ..._3bbdf23c8a4a480f4f6b8e8a2f8ddecd._comment | 13 +++++++++++ + ..._854390b9a781da82ecb85ad85eecad04._comment | 13 +++++++++++ + doc/special_remotes/S3.mdwn | 4 ++++ + ..._cf57e8dbd9fdc7c487565b61808b6bb2._comment | 10 ++++++++ + 6 files changed, 65 insertions(+), 1 deletion(-) + create mode 100644 doc/bugs/S3_special_remote_support_for_DigitalOcean_Spaces/comment_2_3bbdf23c8a4a480f4f6b8e8a2f8ddecd._comment + create mode 100644 doc/forum/backblaze_s3/comment_1_854390b9a781da82ecb85ad85eecad04._comment + create mode 100644 doc/special_remotes/S3/comment_34_cf57e8dbd9fdc7c487565b61808b6bb2._comment + +diff --git a/Remote/S3.hs b/Remote/S3.hs +index cb345d1f8..e3ea492f2 100644 +--- a/Remote/S3.hs ++++ b/Remote/S3.hs +@@ -99,6 +99,8 @@ remote = specialRemoteType $ RemoteType + (FieldDesc "port to connect to") + , optionalStringParser requeststyleField + (FieldDesc "for path-style requests, set to \"path\"") ++ , signatureVersionParser signatureField ++ (FieldDesc "S3 signature version") + , optionalStringParser mungekeysField HiddenField + , optionalStringParser AWS.s3credsField HiddenField + ] +@@ -148,6 +150,22 @@ protocolField = Accepted "protocol" + requeststyleField :: RemoteConfigField + requeststyleField = Accepted "requeststyle" + ++signatureField :: RemoteConfigField ++signatureField = Accepted "signature" ++ ++newtype SignatureVersion = SignatureVersion Int ++ ++signatureVersionParser :: RemoteConfigField -> FieldDesc -> RemoteConfigFieldParser ++signatureVersionParser f fd = ++ genParser go f defver fd ++ (Just (ValueDesc "v2 or v4")) ++ where ++ go "v2" = Just (SignatureVersion 2) ++ go "v4" = Just (SignatureVersion 4) ++ go _ = Nothing ++ ++ defver = SignatureVersion 2 ++ + portField :: RemoteConfigField + portField = Accepted "port" + +@@ -877,7 +895,10 @@ s3Configuration c = cfg + Nothing + | port == 443 -> AWS.HTTPS + | otherwise -> AWS.HTTP +- cfg = S3.s3 proto endpoint False ++ cfg = case getRemoteConfigValue signatureField c of ++ Just (SignatureVersion 4) -> ++ S3.s3v4 proto endpoint False S3.SignWithEffort ++ _ -> S3.s3 proto endpoint False + + data S3Info = S3Info + { bucket :: S3.Bucket +-- +2.26.2 + diff --git a/gnu/packages/patches/glibc-2.29-supported-locales.patch b/gnu/packages/patches/glibc-2.29-supported-locales.patch new file mode 100644 index 0000000000..05865dc7be --- /dev/null +++ b/gnu/packages/patches/glibc-2.29-supported-locales.patch @@ -0,0 +1,33 @@ +This patch is taken from debian's glibc package (generate-supported.mk). +It install the localedata/SUPPORTED file of the glibc. This file lists +all the supported locales of the glibc. + +diff --git a/localedata/Makefile b/localedata/Makefile +index 65079f9eb8..14818f84e0 100644 +--- a/localedata/Makefile ++++ b/localedata/Makefile +@@ -169,7 +169,8 @@ endif + # Files to install. + install-others := $(addprefix $(inst_i18ndir)/, \ + $(addsuffix .gz, $(charmaps)) \ +- $(locales)) ++ $(locales)) \ ++ $(inst_i18ndir)/SUPPORTED + + tests: $(objdir)/iconvdata/gconv-modules + +@@ -380,6 +381,14 @@ endif + + include SUPPORTED + ++$(inst_i18ndir)/SUPPORTED: SUPPORTED $(+force) ++ for locale in $(SUPPORTED-LOCALES); do \ ++ [ $$locale = true ] && continue; \ ++ echo $$locale | sed 's,/, ,' >> LOCALES; \ ++ done ++ $(make-target-directory) ++ $(INSTALL_DATA) LOCALES $@ ++ + INSTALL-SUPPORTED-LOCALE-ARCHIVE=$(addprefix install-archive-, $(SUPPORTED-LOCALES)) + INSTALL-SUPPORTED-LOCALE-FILES=$(addprefix install-files-, $(SUPPORTED-LOCALES)) + \ No newline at end of file diff --git a/gnu/packages/patches/glibc-CVE-2019-19126.patch b/gnu/packages/patches/glibc-CVE-2019-19126.patch new file mode 100644 index 0000000000..5b9ac58ab7 --- /dev/null +++ b/gnu/packages/patches/glibc-CVE-2019-19126.patch @@ -0,0 +1,22 @@ +Fix CVE-2019-19126: + +https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2019-19126 +https://sourceware.org/bugzilla/show_bug.cgi?id=25204 + +Taken from upstream: +https://sourceware.org/git/?p=glibc.git;a=commit;h=37c90e117310728a4ad1eb998c0bbe7d79c4a398 + +diff --git a/sysdeps/unix/sysv/linux/x86_64/64/dl-librecon.h b/sysdeps/unix/sysv/linux/x86_64/64/dl-librecon.h +index 975cbe2..df2cdfd 100644 +--- a/sysdeps/unix/sysv/linux/x86_64/64/dl-librecon.h ++++ b/sysdeps/unix/sysv/linux/x86_64/64/dl-librecon.h +@@ -31,7 +31,8 @@ + environment variable, LD_PREFER_MAP_32BIT_EXEC. */ + #define EXTRA_LD_ENVVARS \ + case 21: \ +- if (memcmp (envline, "PREFER_MAP_32BIT_EXEC", 21) == 0) \ ++ if (!__libc_enable_secure \ ++ && memcmp (envline, "PREFER_MAP_32BIT_EXEC", 21) == 0) \ + GLRO(dl_x86_cpu_features).feature[index_arch_Prefer_MAP_32BIT_EXEC] \ + |= bit_arch_Prefer_MAP_32BIT_EXEC; \ + break; diff --git a/gnu/packages/patches/glibc-bootstrap-system-2.2.5.patch b/gnu/packages/patches/glibc-bootstrap-system-2.2.5.patch new file mode 100644 index 0000000000..d11fc00c75 --- /dev/null +++ b/gnu/packages/patches/glibc-bootstrap-system-2.2.5.patch @@ -0,0 +1,30 @@ +We want to allow builds in chroots that lack /bin/sh. Thus, system(3) +and popen(3) need to be tweaked to use the right shell. For the bootstrap +glibc, we just use whatever `sh' can be found in $PATH. The final glibc +instead uses the hard-coded absolute file name of `bash'. + +--- a/sysdeps/posix/system.c ++++ b/sysdeps/posix/system.c +@@ -106,8 +106,8 @@ do_system (const char *line) + (void) UNBLOCK; + + /* Exec the shell. */ +- (void) __execve (SHELL_PATH, (char *const *) new_argv, __environ); ++ (void) execvp (SHELL_NAME, (char *const *) new_argv); + _exit (127); + } + else if (pid < (pid_t) 0) + /* The fork failed. */ +--- a/libio/iopopen.c ++++ b/libio/iopopen.c +@@ -170,7 +170,7 @@ _IO_new_proc_open (fp, command, mode) + for (p = proc_file_chain; p; p = p->next) + _IO_close (_IO_fileno ((_IO_FILE *) p)); + +- _IO_execl ("/bin/sh", "sh", "-c", command, (char *) 0); ++ execlp ("sh", "sh", "-c", command, (char *) 0); + _IO__exit (127); + } + _IO_close (child_end); + + diff --git a/gnu/packages/patches/glibc-hurd-clock_gettime_monotonic.patch b/gnu/packages/patches/glibc-hurd-clock_gettime_monotonic.patch new file mode 100644 index 0000000000..1c3fe427f9 --- /dev/null +++ b/gnu/packages/patches/glibc-hurd-clock_gettime_monotonic.patch @@ -0,0 +1,84 @@ +This is needed to run Python on the Hurd, especially during the build of +python-boot0. + +Adapted from https://salsa.debian.org/glibc-team/glibc/-/blob/glibc-2.31/debian/patches/hurd-i386/unsubmitted-clock_t_centiseconds.diff + +Use the realtime clock for the monotonic clock. This is of course not a proper +implementation (which is being done in Mach), but will permit to fix at least +the iceweasel stack. + +vlc however doesn't build when _POSIX_CLOCK_SELECTION is enabled but +_POSIX_TIMERS is not, and they refuse to fix that (see #765578), so disable the +former. + +From 0aa1dfd580cf9ad7b812c307b128decb782b825f Mon Sep 17 00:00:00 2001 +From: Jan Nieuwenhuizen <janneke@gnu.org> +Date: Mon, 2 Mar 2020 18:59:04 +0100 +Subject: [PATCH 2/2] Use realtime clock for the monotonic clock. + +--- + sysdeps/mach/clock_gettime.c | 2 +- + sysdeps/mach/hurd/bits/posix_opt.h | 6 +++--- + sysdeps/posix/clock_getres.c | 1 + + sysdeps/pthread/timer_create.c | 2 +- + 4 files changed, 6 insertions(+), 5 deletions(-) + +diff --git a/sysdeps/mach/clock_gettime.c b/sysdeps/mach/clock_gettime.c +index ac3547df3c..af8681ba4e 100644 +--- a/sysdeps/mach/clock_gettime.c ++++ b/sysdeps/mach/clock_gettime.c +@@ -25,7 +25,7 @@ + int + __clock_gettime (clockid_t clock_id, struct timespec *ts) + { +- if (clock_id != CLOCK_REALTIME) ++ if (clock_id != CLOCK_MONOTONIC && clock_id != CLOCK_REALTIME) + { + errno = EINVAL; + return -1; +diff --git a/sysdeps/mach/hurd/bits/posix_opt.h b/sysdeps/mach/hurd/bits/posix_opt.h +index 0050151332..27b3a28ab7 100644 +--- a/sysdeps/mach/hurd/bits/posix_opt.h ++++ b/sysdeps/mach/hurd/bits/posix_opt.h +@@ -163,10 +163,10 @@ + #define _POSIX_THREAD_PROCESS_SHARED -1 + + /* The monotonic clock might be available. */ +-#define _POSIX_MONOTONIC_CLOCK 0 ++#define _POSIX_MONOTONIC_CLOCK 200809L + +-/* The clock selection interfaces are available. */ +-#define _POSIX_CLOCK_SELECTION 200809L ++/* The clock selection interfaces are not really available yet. */ ++#define _POSIX_CLOCK_SELECTION -1 + + /* Advisory information interfaces could be available in future. */ + #define _POSIX_ADVISORY_INFO 0 +diff --git a/sysdeps/posix/clock_getres.c b/sysdeps/posix/clock_getres.c +index fcd79fd554..1dd02aa449 100644 +--- a/sysdeps/posix/clock_getres.c ++++ b/sysdeps/posix/clock_getres.c +@@ -52,6 +52,7 @@ __clock_getres (clockid_t clock_id, struct timespec *res) + switch (clock_id) + { + case CLOCK_REALTIME: ++ case CLOCK_MONOTONIC: + retval = realtime_getres (res); + break; + +diff --git a/sysdeps/pthread/timer_create.c b/sysdeps/pthread/timer_create.c +index 9d8a9ea8ae..3430582c09 100644 +--- a/sysdeps/pthread/timer_create.c ++++ b/sysdeps/pthread/timer_create.c +@@ -48,7 +48,7 @@ timer_create (clockid_t clock_id, struct sigevent *evp, timer_t *timerid) + return -1; + } + +- if (clock_id != CLOCK_REALTIME) ++ if (clock_id != CLOCK_REALTIME && clock_id != CLOCK_MONOTONIC) + { + __set_errno (EINVAL); + return -1; +-- +2.24.0 + diff --git a/gnu/packages/patches/glibc-hurd-clock_t_centiseconds.patch b/gnu/packages/patches/glibc-hurd-clock_t_centiseconds.patch new file mode 100644 index 0000000000..8f9676c873 --- /dev/null +++ b/gnu/packages/patches/glibc-hurd-clock_t_centiseconds.patch @@ -0,0 +1,90 @@ +This is needed to run Python on the Hurd, especially during the build of +python-boot0. + +Adapted from https://salsa.debian.org/glibc-team/glibc/-/blob/glibc-2.31/debian/patches/hurd-i386/unsubmitted-clock_t_centiseconds.diff + + commit d57f2f9b4bd007846af2fb4217486ea572579010 + Author: Richard Braun <rbraun@sceen.net> + Date: Tue Aug 27 11:35:31 2013 +0200 + + Express CPU time (clock_t of times(2)) in centiseconds + +From 170c292b643fdc1eb56881e6592b07c0c019993e Mon Sep 17 00:00:00 2001 +From: Jan Nieuwenhuizen <janneke@gnu.org> +Date: Mon, 2 Mar 2020 18:28:54 +0100 +Subject: [PATCH 1/2] Express CPU time (clock_t) in centiseconds + +--- + sysdeps/mach/hurd/clock.c | 8 ++++---- + sysdeps/mach/hurd/getclktck.c | 5 ++--- + sysdeps/mach/hurd/setitimer.c | 2 +- + sysdeps/mach/hurd/times.c | 2 +- + 4 files changed, 8 insertions(+), 9 deletions(-) + +diff --git a/sysdeps/mach/hurd/clock.c b/sysdeps/mach/hurd/clock.c +index 7cb42df786..4db49b579d 100644 +--- a/sysdeps/mach/hurd/clock.c ++++ b/sysdeps/mach/hurd/clock.c +@@ -44,10 +44,10 @@ clock (void) + if (err) + return __hurd_fail (err); + +- total = bi.user_time.seconds * 1000000 + bi.user_time.microseconds; +- total += tti.user_time.seconds * 1000000 + tti.user_time.microseconds; +- total += bi.system_time.seconds * 1000000 + bi.system_time.microseconds; +- total += tti.system_time.seconds * 1000000 + tti.system_time.microseconds; ++ total = bi.user_time.seconds * 100 + bi.user_time.microseconds / 10000; ++ total += tti.user_time.seconds * 100 + tti.user_time.microseconds / 10000; ++ total += bi.system_time.seconds * 100 + bi.system_time.microseconds / 10000; ++ total += tti.system_time.seconds * 100 + tti.system_time.microseconds / 10000; + + return total; + } +diff --git a/sysdeps/mach/hurd/getclktck.c b/sysdeps/mach/hurd/getclktck.c +index 943e36e805..5a3cf0930b 100644 +--- a/sysdeps/mach/hurd/getclktck.c ++++ b/sysdeps/mach/hurd/getclktck.c +@@ -18,12 +18,11 @@ + + #include <time.h> + +-/* Return frequency of `times'. +- Since Mach reports CPU times in microseconds, we always use 1 million. */ ++/* Return frequency of `times'. */ + int + __getclktck (void) + { +- return 1000000; ++ return 100; + } + + /* Before glibc 2.2, the Hurd actually did this differently, so we +diff --git a/sysdeps/mach/hurd/setitimer.c b/sysdeps/mach/hurd/setitimer.c +index b16f4ddd5d..8bf1464830 100644 +--- a/sysdeps/mach/hurd/setitimer.c ++++ b/sysdeps/mach/hurd/setitimer.c +@@ -43,7 +43,7 @@ quantize_timeval (struct timeval *tv) + static time_t quantum = -1; + + if (quantum == -1) +- quantum = 1000000 / __getclktck (); ++ quantum = 100 / __getclktck (); + + tv->tv_usec = ((tv->tv_usec + (quantum - 1)) / quantum) * quantum; + if (tv->tv_usec >= 1000000) +diff --git a/sysdeps/mach/hurd/times.c b/sysdeps/mach/hurd/times.c +index 23ed992783..cbf6039b19 100644 +--- a/sysdeps/mach/hurd/times.c ++++ b/sysdeps/mach/hurd/times.c +@@ -29,7 +29,7 @@ + static inline clock_t + clock_from_time_value (const time_value_t *t) + { +- return t->seconds * 1000000 + t->microseconds; ++ return t->seconds * 100 + t->microseconds / 10000; + } + + /* Store the CPU time used by this process and all its +-- +2.24.0 + diff --git a/gnu/packages/patches/glibc-hurd-gettyent.patch b/gnu/packages/patches/glibc-hurd-gettyent.patch new file mode 100644 index 0000000000..721a8d4fa8 --- /dev/null +++ b/gnu/packages/patches/glibc-hurd-gettyent.patch @@ -0,0 +1,34 @@ +From d6d2caef3e44d0713bb6625f697a1ec615abae70 Mon Sep 17 00:00:00 2001 +From: "Jan (janneke) Nieuwenhuizen" <janneke@gnu.org> +Date: Sun, 5 Apr 2020 16:29:54 +0200 +Subject: [PATCH 4/4] misc: Choose a longer arbitrary line length. +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +This allows running specifying a `getty' in the GNU Guix store. + +* misc/getttyent.c (MAXLINELENGTH): Use 512 (instead of 100) as +another "great" arbitrary limit. + +Co-Authored-By: Ludovic Courtès <ludo@gnu.org> +--- + misc/getttyent.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/misc/getttyent.c b/misc/getttyent.c +index 92d92b026f..508d296291 100644 +--- a/misc/getttyent.c ++++ b/misc/getttyent.c +@@ -66,7 +66,7 @@ __getttyent (void) + static struct ttyent tty; + int c; + char *p; +-#define MAXLINELENGTH 100 ++#define MAXLINELENGTH 512 + static char line[MAXLINELENGTH]; + + if (!tf && !__setttyent()) +-- +2.26.0 + diff --git a/gnu/packages/patches/glibc-hurd-mach-print.patch b/gnu/packages/patches/glibc-hurd-mach-print.patch new file mode 100644 index 0000000000..7fdf6733d0 --- /dev/null +++ b/gnu/packages/patches/glibc-hurd-mach-print.patch @@ -0,0 +1,23 @@ +Provide a 'mach_print' symbol in libc. + +--- a/sysdeps/mach/hurd/i386/libc.abilist 2020-04-01 19:22:44.710088821 +0200 ++++ b/sysdeps/mach/hurd/i386/libc.abilist 2020-04-01 19:22:52.062051161 +0200 +@@ -338,6 +338,7 @@ + GLIBC_2.2.6 __mach_port_allocate F + GLIBC_2.2.6 __mach_port_deallocate F + GLIBC_2.2.6 __mach_port_insert_right F ++GLIBC_2.21 __mach_print F + GLIBC_2.2.6 __mach_reply_port F + GLIBC_2.2.6 __mach_task_self_ D 0x4 + GLIBC_2.2.6 __mach_thread_self F + +--- a/mach/Versions ++++ b/mach/Versions +@@ -56,6 +56,7 @@ + } + GLIBC_2.21 { + __mach_host_self_; ++ mach_print; + } + + HURD_CTHREADS_0.3 { diff --git a/gnu/packages/patches/glibc-hurd-signal-sa-siginfo.patch b/gnu/packages/patches/glibc-hurd-signal-sa-siginfo.patch new file mode 100644 index 0000000000..36ea55e188 --- /dev/null +++ b/gnu/packages/patches/glibc-hurd-signal-sa-siginfo.patch @@ -0,0 +1,637 @@ +This patch is needed to build e2fsprogs, util-linux. + +Taken from https://salsa.debian.org/glibc-team/glibc/-/blob/glibc-2.31/debian/patches/hurd-i386/tg-hurdsig-SA_SIGINFO.diff + +From: Jeremie Koenig <jk@jk.fr.eu.org> +Subject: [PATCH] implement SA_SIGINFO signal handlers. + + 52baaca Hurd signals: Copy bits/sigaction.h + 4232c66 Hurd signals: SA_SIGINFO support + 1831cfe Hurd signals: Use POSIX sigcodes + +--- + hurd/hurd/signal.h | 5 + + hurd/hurdfault.c | 2 + hurd/hurdinit.c | 2 + hurd/hurdsig.c | 6 - + sysdeps/mach/hurd/bits/sigaction.h | 86 +++++++++++++++++++++ + sysdeps/mach/hurd/i386/bits/sigcontext.h | 4 + sysdeps/mach/hurd/i386/exc2signal.c | 123 +++++++++++++++++++----------- + sysdeps/mach/hurd/i386/trampoline.c | 125 ++++++++++++++++++++++++++++--- + sysdeps/mach/hurd/kill.c | 2 + sysdeps/mach/hurd/setitimer.c | 2 + 10 files changed, 293 insertions(+), 64 deletions(-) + +Index: glibc-2.31/hurd/hurd/signal.h +=================================================================== +--- glibc-2.31.orig/hurd/hurd/signal.h ++++ glibc-2.31/hurd/hurd/signal.h +@@ -290,6 +290,11 @@ extern int _hurd_raise_signal (struct hu + extern void _hurd_exception2signal (struct hurd_signal_detail *detail, + int *signo); + ++/* Translate a Mach exception into a signal with a legacy sigcode. */ ++ ++extern void _hurd_exception2signal_legacy (struct hurd_signal_detail *detail, ++ int *signo); ++ + + /* Make the thread described by SS take the signal described by SIGNO and + DETAIL. If the process is traced, this will in fact stop with a SIGNO +Index: glibc-2.31/hurd/hurdfault.c +=================================================================== +--- glibc-2.31.orig/hurd/hurdfault.c ++++ glibc-2.31/hurd/hurdfault.c +@@ -70,7 +70,7 @@ _hurdsig_fault_catch_exception_raise (ma + codes into a signal number and subcode. */ + _hurd_exception2signal (&d, &signo); + +- return HURD_PREEMPT_SIGNAL_P (&_hurdsig_fault_preemptor, signo, d.code) ++ return HURD_PREEMPT_SIGNAL_P (&_hurdsig_fault_preemptor, signo, d.exc_subcode) + ? 0 : EGREGIOUS; + } + +Index: glibc-2.31/hurd/hurdinit.c +=================================================================== +--- glibc-2.31.orig/hurd/hurdinit.c ++++ glibc-2.31/hurd/hurdinit.c +@@ -177,7 +177,7 @@ _hurd_new_proc_init (char **argv, + /* This process is "traced", meaning it should stop on signals or exec. + We are all set up now to handle signals. Stop ourselves, to inform + our parent (presumably a debugger) that the exec has completed. */ +- __msg_sig_post (_hurd_msgport, SIGTRAP, 0, __mach_task_self ()); ++ __msg_sig_post (_hurd_msgport, SIGTRAP, TRAP_TRACE, __mach_task_self ()); + } + + #include <shlib-compat.h> +Index: glibc-2.31/hurd/hurdsig.c +=================================================================== +--- glibc-2.31.orig/hurd/hurdsig.c ++++ glibc-2.31/hurd/hurdsig.c +@@ -730,7 +730,7 @@ post_signal (struct hurd_sigstate *ss, + { /* PE cannot be null. */ + do + { +- if (HURD_PREEMPT_SIGNAL_P (pe, signo, detail->code)) ++ if (HURD_PREEMPT_SIGNAL_P (pe, signo, detail->exc_subcode)) + { + if (pe->preemptor) + { +@@ -1374,7 +1374,7 @@ _S_msg_sig_post (mach_port_t me, + if (err = signal_allowed (signo, refport)) + return err; + +- d.code = sigcode; ++ d.code = d.exc_subcode = sigcode; + d.exc = 0; + + /* Post the signal to a global receiver thread (or mark it pending in +@@ -1403,7 +1403,7 @@ _S_msg_sig_post_untraced (mach_port_t me + if (err = signal_allowed (signo, refport)) + return err; + +- d.code = sigcode; ++ d.code = d.exc_subcode = sigcode; + d.exc = 0; + + /* Post the signal to the designated signal-receiving thread. This will +Index: glibc-2.31/sysdeps/mach/hurd/bits/sigaction.h +=================================================================== +--- /dev/null ++++ glibc-2.31/sysdeps/mach/hurd/bits/sigaction.h +@@ -0,0 +1,86 @@ ++/* Copyright (C) 1991-2015 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ ++ The GNU C Library is free software; you can redistribute it and/or ++ modify it under the terms of the GNU Lesser General Public ++ License as published by the Free Software Foundation; either ++ version 2.1 of the License, or (at your option) any later version. ++ ++ The GNU C Library 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 ++ Lesser General Public License for more details. ++ ++ You should have received a copy of the GNU Lesser General Public ++ License along with the GNU C Library; if not, write to the Free ++ Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA ++ 02111-1307 USA. */ ++ ++#ifndef _BITS_SIGACTION_H ++#define _BITS_SIGACTION_H 1 ++ ++#ifndef _SIGNAL_H ++# error "Never include <bits/sigaction.h> directly; use <signal.h> instead." ++#endif ++ ++/* These definitions match those used by the 4.4 BSD kernel. ++ If the operating system has a `sigaction' system call that correctly ++ implements the POSIX.1 behavior, there should be a system-dependent ++ version of this file that defines `struct sigaction' and the `SA_*' ++ constants appropriately. */ ++ ++/* Structure describing the action to be taken when a signal arrives. */ ++struct sigaction ++ { ++ /* Signal handler. */ ++#if defined __USE_POSIX199309 || defined __USE_XOPEN_EXTENDED ++ union ++ { ++ /* Used if SA_SIGINFO is not set. */ ++ __sighandler_t sa_handler; ++ /* Used if SA_SIGINFO is set. */ ++ void (*sa_sigaction) (int, siginfo_t *, void *); ++ } ++ __sigaction_handler; ++# define sa_handler __sigaction_handler.sa_handler ++# define sa_sigaction __sigaction_handler.sa_sigaction ++#else ++ __sighandler_t sa_handler; ++#endif ++ ++ /* Additional set of signals to be blocked. */ ++ __sigset_t sa_mask; ++ ++ /* Special flags. */ ++ int sa_flags; ++ }; ++ ++/* Bits in `sa_flags'. */ ++#if defined __USE_XOPEN_EXTENDED || defined __USE_MISC ++# define SA_ONSTACK 0x0001 /* Take signal on signal stack. */ ++#endif ++#if defined __USE_XOPEN_EXTENDED || defined __USE_XOPEN2K8 ++# define SA_RESTART 0x0002 /* Restart syscall on signal return. */ ++# define SA_NODEFER 0x0010 /* Don't automatically block the signal when ++ its handler is being executed. */ ++# define SA_RESETHAND 0x0004 /* Reset to SIG_DFL on entry to handler. */ ++#endif ++#define SA_NOCLDSTOP 0x0008 /* Don't send SIGCHLD when children stop. */ ++#define SA_SIGINFO 0x0040 /* Signal handler with SA_SIGINFO args */ ++ ++#ifdef __USE_MISC ++# define SA_INTERRUPT 0 /* Historical no-op ("not SA_RESTART"). */ ++ ++/* Some aliases for the SA_ constants. */ ++# define SA_NOMASK SA_NODEFER ++# define SA_ONESHOT SA_RESETHAND ++# define SA_STACK SA_ONSTACK ++#endif ++ ++ ++/* Values for the HOW argument to `sigprocmask'. */ ++#define SIG_BLOCK 1 /* Block signals. */ ++#define SIG_UNBLOCK 2 /* Unblock signals. */ ++#define SIG_SETMASK 3 /* Set the set of blocked signals. */ ++ ++#endif +Index: glibc-2.31/sysdeps/mach/hurd/i386/bits/sigcontext.h +=================================================================== +--- glibc-2.31.orig/sysdeps/mach/hurd/i386/bits/sigcontext.h ++++ glibc-2.31/sysdeps/mach/hurd/i386/bits/sigcontext.h +@@ -97,6 +97,10 @@ struct sigcontext + #define sc_ps sc_efl + + ++/* The deprecated sigcode values below are passed as an extra, non-portable ++ argument to regular signal handlers. You should use SA_SIGINFO handlers ++ instead, which use the standard POSIX signal codes. */ ++ + /* Codes for SIGFPE. */ + #define FPE_INTOVF_TRAP 0x1 /* integer overflow */ + #define FPE_INTDIV_FAULT 0x2 /* integer divide by zero */ +Index: glibc-2.31/sysdeps/mach/hurd/i386/exc2signal.c +=================================================================== +--- glibc-2.31.orig/sysdeps/mach/hurd/i386/exc2signal.c ++++ glibc-2.31/sysdeps/mach/hurd/i386/exc2signal.c +@@ -23,8 +23,8 @@ + /* Translate the Mach exception codes, as received in an `exception_raise' RPC, + into a signal number and signal subcode. */ + +-void +-_hurd_exception2signal (struct hurd_signal_detail *detail, int *signo) ++static void ++exception2signal (struct hurd_signal_detail *detail, int *signo, int posix) + { + detail->error = 0; + +@@ -36,44 +36,62 @@ _hurd_exception2signal (struct hurd_sign + break; + + case EXC_BAD_ACCESS: +- if (detail->exc_code == KERN_INVALID_ADDRESS +- || detail->exc_code == KERN_PROTECTION_FAILURE +- || detail->exc_code == KERN_WRITE_PROTECTION_FAILURE) +- *signo = SIGSEGV; +- else +- *signo = SIGBUS; +- detail->code = detail->exc_subcode; ++ switch (detail->exc_code) ++ { ++ case KERN_INVALID_ADDRESS: ++ case KERN_MEMORY_FAILURE: ++ *signo = SIGSEGV; ++ detail->code = posix ? SEGV_MAPERR : detail->exc_subcode; ++ break; ++ ++ case KERN_PROTECTION_FAILURE: ++ case KERN_WRITE_PROTECTION_FAILURE: ++ *signo = SIGSEGV; ++ detail->code = posix ? SEGV_ACCERR : detail->exc_subcode; ++ break; ++ ++ default: ++ *signo = SIGBUS; ++ detail->code = posix ? BUS_ADRERR : detail->exc_subcode; ++ break; ++ } + detail->error = detail->exc_code; + break; + + case EXC_BAD_INSTRUCTION: + *signo = SIGILL; +- if (detail->exc_code == EXC_I386_INVOP) +- detail->code = ILL_INVOPR_FAULT; +- else if (detail->exc_code == EXC_I386_STKFLT) +- detail->code = ILL_STACK_FAULT; +- else +- detail->code = 0; ++ switch (detail->exc_code) ++ { ++ case EXC_I386_INVOP: ++ detail->code = posix ? ILL_ILLOPC : ILL_INVOPR_FAULT; ++ break; ++ ++ case EXC_I386_STKFLT: ++ detail->code = posix ? ILL_BADSTK : ILL_STACK_FAULT; ++ break; ++ ++ default: ++ detail->code = 0; ++ break; ++ } + break; + + case EXC_ARITHMETIC: ++ *signo = SIGFPE; + switch (detail->exc_code) + { + case EXC_I386_DIV: /* integer divide by zero */ +- *signo = SIGFPE; +- detail->code = FPE_INTDIV_FAULT; ++ detail->code = posix ? FPE_INTDIV : FPE_INTDIV_FAULT; + break; + + case EXC_I386_INTO: /* integer overflow */ +- *signo = SIGFPE; +- detail->code = FPE_INTOVF_TRAP; ++ detail->code = posix ? FPE_INTOVF : FPE_INTOVF_TRAP; + break; + + /* These aren't anywhere documented or used in Mach 3.0. */ + case EXC_I386_NOEXT: + case EXC_I386_EXTOVR: + default: +- *signo = SIGFPE; + detail->code = 0; + break; + +@@ -82,51 +100,43 @@ _hurd_exception2signal (struct hurd_sign + Give an error code corresponding to the first bit set. */ + if (detail->exc_subcode & FPS_IE) + { +- *signo = SIGILL; +- detail->code = ILL_FPEOPR_FAULT; ++ /* NB: We used to send SIGILL here but we can't distinguish ++ POSIX vs. legacy with respect to what signal we send. */ ++ detail->code = posix ? FPE_FLTINV : 0 /*ILL_FPEOPR_FAULT*/; + } + else if (detail->exc_subcode & FPS_DE) + { +- *signo = SIGFPE; +- detail->code = FPE_FLTDNR_FAULT; ++ detail->code = posix ? FPE_FLTUND : FPE_FLTDNR_FAULT; + } + else if (detail->exc_subcode & FPS_ZE) + { +- *signo = SIGFPE; +- detail->code = FPE_FLTDIV_FAULT; ++ detail->code = posix ? FPE_FLTDIV : FPE_FLTDIV_FAULT; + } + else if (detail->exc_subcode & FPS_OE) + { +- *signo = SIGFPE; +- detail->code = FPE_FLTOVF_FAULT; ++ detail->code = posix ? FPE_FLTOVF : FPE_FLTOVF_FAULT; + } + else if (detail->exc_subcode & FPS_UE) + { +- *signo = SIGFPE; +- detail->code = FPE_FLTUND_FAULT; ++ detail->code = posix ? FPE_FLTUND : FPE_FLTUND_FAULT; + } + else if (detail->exc_subcode & FPS_PE) + { +- *signo = SIGFPE; +- detail->code = FPE_FLTINX_FAULT; ++ detail->code = posix ? FPE_FLTRES : FPE_FLTINX_FAULT; + } + else + { +- *signo = SIGFPE; + detail->code = 0; + } + break; + + /* These two can only be arithmetic exceptions if we +- are in V86 mode, which sounds like emulation to me. +- (See Mach 3.0 i386/trap.c.) */ ++ are in V86 mode. (See Mach 3.0 i386/trap.c.) */ + case EXC_I386_EMERR: +- *signo = SIGFPE; +- detail->code = FPE_EMERR_FAULT; ++ detail->code = posix ? 0 : FPE_EMERR_FAULT; + break; + case EXC_I386_BOUND: +- *signo = SIGFPE; +- detail->code = FPE_EMBND_FAULT; ++ detail->code = posix ? FPE_FLTSUB : FPE_EMBND_FAULT; + break; + } + break; +@@ -143,7 +153,7 @@ _hurd_exception2signal (struct hurd_sign + if (detail->exc_code == EXC_I386_BOUND) + { + *signo = SIGFPE; +- detail->code = FPE_SUBRNG_FAULT; ++ detail->code = posix ? FPE_FLTSUB : FPE_SUBRNG_FAULT; + } + else + { +@@ -154,13 +164,34 @@ _hurd_exception2signal (struct hurd_sign + + case EXC_BREAKPOINT: + *signo = SIGTRAP; +- if (detail->exc_code == EXC_I386_SGL) +- detail->code = DBG_SINGLE_TRAP; +- else if (detail->exc_code == EXC_I386_BPT) +- detail->code = DBG_BRKPNT_FAULT; +- else +- detail->code = 0; ++ switch (detail->exc_code) ++ { ++ case EXC_I386_SGL: ++ detail->code = posix ? TRAP_BRKPT : DBG_SINGLE_TRAP; ++ break; ++ ++ case EXC_I386_BPT: ++ detail->code = posix ? TRAP_BRKPT : DBG_BRKPNT_FAULT; ++ break; ++ ++ default: ++ detail->code = 0; ++ break; ++ } + break; + } + } + libc_hidden_def (_hurd_exception2signal) ++ ++void ++_hurd_exception2signal (struct hurd_signal_detail *detail, int *signo) ++{ ++ exception2signal (detail, signo, 1); ++} ++ ++void ++_hurd_exception2signal_legacy (struct hurd_signal_detail *detail, int *signo) ++{ ++ exception2signal (detail, signo, 0); ++} ++ +Index: glibc-2.31/sysdeps/mach/hurd/i386/trampoline.c +=================================================================== +--- glibc-2.31.orig/sysdeps/mach/hurd/i386/trampoline.c ++++ glibc-2.31/sysdeps/mach/hurd/i386/trampoline.c +@@ -19,13 +19,66 @@ + #include <hurd/signal.h> + #include <hurd/userlink.h> + #include <thread_state.h> ++#include <mach/exception.h> + #include <mach/machine/eflags.h> + #include <assert.h> + #include <errno.h> + #include "hurdfault.h" + #include <intr-msg.h> ++#include <sys/ucontext.h> + + ++/* Fill in a siginfo_t structure for SA_SIGINFO-enabled handlers. */ ++static void fill_siginfo (siginfo_t *si, int signo, ++ const struct hurd_signal_detail *detail, ++ const struct machine_thread_all_state *state) ++{ ++ si->si_signo = signo; ++ si->si_errno = detail->error; ++ si->si_code = detail->code; ++ ++ /* XXX We would need a protocol change for sig_post to include ++ * this information. */ ++ si->si_pid = -1; ++ si->si_uid = -1; ++ ++ /* Address of the faulting instruction or memory access. */ ++ if (detail->exc == EXC_BAD_ACCESS) ++ si->si_addr = (void *) detail->exc_subcode; ++ else ++ si->si_addr = (void *) state->basic.eip; ++ ++ /* XXX On SIGCHLD, this should be the exit status of the child ++ * process. We would need a protocol change for the proc server ++ * to send this information along with the signal. */ ++ si->si_status = 0; ++ ++ si->si_band = 0; /* SIGPOLL is not supported yet. */ ++ si->si_value.sival_int = 0; /* sigqueue() is not supported yet. */ ++} ++ ++/* Fill in a ucontext_t structure SA_SIGINFO-enabled handlers. */ ++static void fill_ucontext (ucontext_t *uc, const struct sigcontext *sc) ++{ ++ uc->uc_flags = 0; ++ uc->uc_link = NULL; ++ uc->uc_sigmask = sc->sc_mask; ++ uc->uc_stack.ss_sp = (__ptr_t) sc->sc_esp; ++ uc->uc_stack.ss_size = 0; ++ uc->uc_stack.ss_flags = 0; ++ ++ /* Registers. */ ++ memcpy (&uc->uc_mcontext.gregs[REG_GS], &sc->sc_gs, ++ (REG_TRAPNO - REG_GS) * sizeof (int)); ++ uc->uc_mcontext.gregs[REG_TRAPNO] = 0; ++ uc->uc_mcontext.gregs[REG_ERR] = 0; ++ memcpy (&uc->uc_mcontext.gregs[REG_EIP], &sc->sc_eip, ++ (NGREG - REG_EIP) * sizeof (int)); ++ ++ /* XXX FPU state. */ ++ memset (&uc->uc_mcontext.fpregs, 0, sizeof (fpregset_t)); ++} ++ + struct sigcontext * + _hurd_setup_sighandler (struct hurd_sigstate *ss, __sighandler_t handler, + int signo, struct hurd_signal_detail *detail, +@@ -43,15 +96,38 @@ _hurd_setup_sighandler (struct hurd_sigs + struct + { + int signo; +- long int sigcode; +- struct sigcontext *scp; /* Points to ctx, below. */ ++ union ++ { ++ /* Extra arguments for traditional signal handlers */ ++ struct ++ { ++ long int sigcode; ++ struct sigcontext *scp; /* Points to ctx, below. */ ++ } legacy; ++ ++ /* Extra arguments for SA_SIGINFO handlers */ ++ struct ++ { ++ siginfo_t *siginfop; /* Points to siginfo, below. */ ++ ucontext_t *uctxp; /* Points to uctx, below. */ ++ } posix; ++ }; + void *sigreturn_addr; + void *sigreturn_returns_here; + struct sigcontext *return_scp; /* Same; arg to sigreturn. */ ++ ++ /* NB: sigreturn assumes link is next to ctx. */ + struct sigcontext ctx; + struct hurd_userlink link; ++ ucontext_t ucontext; ++ siginfo_t siginfo; + } *stackframe; + ++ /* sigaction for preemptors */ ++ static const struct sigaction legacy_sigaction = { ++ .sa_flags = SA_RESTART ++ }; ++ + if (ss->context) + { + /* We have a previous sigcontext that sigreturn was about +@@ -94,9 +170,13 @@ _hurd_setup_sighandler (struct hurd_sigs + the SP on sigreturn. */ + state->basic.uesp = state->basic.ecx; + +- /* XXX what if handler != action->handler (for instance, if a signal +- * preemptor took over) ? */ + action = & _hurd_sigstate_actions (ss) [signo]; ++ if ( (action->sa_flags & SA_SIGINFO) ++ && handler != (__sighandler_t) action->sa_sigaction ++ || !(action->sa_flags & SA_SIGINFO) ++ && handler != action->sa_handler) ++ /* A signal preemptor took over, use legacy semantic. */ ++ action = &legacy_sigaction; + + if ((action->sa_flags & SA_ONSTACK) + && !(ss->sigaltstack.ss_flags & (SS_DISABLE|SS_ONSTACK))) +@@ -140,15 +220,9 @@ _hurd_setup_sighandler (struct hurd_sigs + = &stackframe->link.thread.next; + ss->active_resources = &stackframe->link; + +- /* Set up the arguments for the signal handler. */ +- stackframe->signo = signo; +- stackframe->sigcode = detail->code; +- stackframe->scp = stackframe->return_scp = scp = &stackframe->ctx; +- stackframe->sigreturn_addr = &__sigreturn; +- stackframe->sigreturn_returns_here = firewall; /* Crash on return. */ +- + /* Set up the sigcontext from the current state of the thread. */ + ++ scp = &stackframe->ctx; + scp->sc_onstack = ss->sigaltstack.ss_flags & SS_ONSTACK ? 1 : 0; + + /* struct sigcontext is laid out so that starting at sc_gs mimics a +@@ -162,6 +236,35 @@ _hurd_setup_sighandler (struct hurd_sigs + &state->fpu, &scp->sc_i386_float_state, + sizeof (state->fpu)); + ++ /* Set up the arguments for the signal handler. */ ++ stackframe->signo = signo; ++ if (action->sa_flags & SA_SIGINFO) ++ { ++ stackframe->posix.siginfop = &stackframe->siginfo; ++ stackframe->posix.uctxp = &stackframe->ucontext; ++ fill_siginfo (&stackframe->siginfo, signo, detail, state); ++ fill_ucontext (&stackframe->ucontext, scp); ++ } ++ else ++ { ++ if (detail->exc) ++ { ++ int nsigno; ++ _hurd_exception2signal_legacy (detail, &nsigno); ++ assert (nsigno == signo); ++ } ++ else ++ detail->code = 0; ++ ++ stackframe->legacy.sigcode = detail->code; ++ stackframe->legacy.scp = &stackframe->ctx; ++ } ++ ++ /* Set up the bottom of the stack. */ ++ stackframe->sigreturn_addr = &__sigreturn; ++ stackframe->sigreturn_returns_here = firewall; /* Crash on return. */ ++ stackframe->return_scp = &stackframe->ctx; ++ + _hurdsig_end_catch_fault (); + + if (! ok) +Index: glibc-2.31/sysdeps/mach/hurd/kill.c +=================================================================== +--- glibc-2.31.orig/sysdeps/mach/hurd/kill.c ++++ glibc-2.31/sysdeps/mach/hurd/kill.c +@@ -64,7 +64,7 @@ __kill (pid_t pid, int sig) + { + if (msgport != MACH_PORT_NULL) + /* Send a signal message to his message port. */ +- return __msg_sig_post (msgport, sig, 0, refport); ++ return __msg_sig_post (msgport, sig, SI_USER, refport); + + /* The process has no message port. Perhaps try direct + frobnication of the task. */ +Index: glibc-2.31/sysdeps/mach/hurd/setitimer.c +=================================================================== +--- glibc-2.31.orig/sysdeps/mach/hurd/setitimer.c ++++ glibc-2.31/sysdeps/mach/hurd/setitimer.c +@@ -105,7 +105,7 @@ timer_thread (void) + __msg_sig_post_request (_hurd_msgport, + _hurd_itimer_port, + MACH_MSG_TYPE_MAKE_SEND_ONCE, +- SIGALRM, 0, __mach_task_self ()); ++ SIGALRM, SI_TIMER, __mach_task_self ()); + break; + + case MACH_RCV_INTERRUPTED: +Index: glibc-2.31/sysdeps/mach/hurd/i386/sigcontextinfo.h +=================================================================== +--- glibc-2.31.orig/sysdeps/mach/hurd/i386/sigcontextinfo.h ++++ glibc-2.31/sysdeps/mach/hurd/i386/sigcontextinfo.h +@@ -18,11 +18,10 @@ + #ifndef _SIGCONTEXTINFO_H + #define _SIGCONTEXTINFO_H + +-#define SIGCONTEXT struct sigcontext + static inline uintptr_t +-sigcontext_get_pc (struct sigcontext ctx) ++sigcontext_get_pc (struct ucontext_t *ctx) + { +- return ctx.sc_eip; ++ return ctx->uc_mcontext.gregs[REG_EIP]; + } + + #endif diff --git a/gnu/packages/patches/glibc-supported-locales.patch b/gnu/packages/patches/glibc-supported-locales.patch index 05865dc7be..28577c75c0 100644 --- a/gnu/packages/patches/glibc-supported-locales.patch +++ b/gnu/packages/patches/glibc-supported-locales.patch @@ -3,20 +3,19 @@ It install the localedata/SUPPORTED file of the glibc. This file lists all the supported locales of the glibc. diff --git a/localedata/Makefile b/localedata/Makefile -index 65079f9eb8..14818f84e0 100644 --- a/localedata/Makefile +++ b/localedata/Makefile -@@ -169,7 +169,8 @@ endif - # Files to install. +@@ -176,7 +176,8 @@ + else install-others := $(addprefix $(inst_i18ndir)/, \ $(addsuffix .gz, $(charmaps)) \ - $(locales)) + $(locales)) \ + $(inst_i18ndir)/SUPPORTED + endif tests: $(objdir)/iconvdata/gconv-modules - -@@ -380,6 +381,14 @@ endif +@@ -401,6 +402,14 @@ include SUPPORTED @@ -30,4 +29,4 @@ index 65079f9eb8..14818f84e0 100644 + INSTALL-SUPPORTED-LOCALE-ARCHIVE=$(addprefix install-archive-, $(SUPPORTED-LOCALES)) INSTALL-SUPPORTED-LOCALE-FILES=$(addprefix install-files-, $(SUPPORTED-LOCALES)) - \ No newline at end of file + diff --git a/gnu/packages/patches/glm-restore-install-target.patch b/gnu/packages/patches/glm-restore-install-target.patch deleted file mode 100644 index a628030f6f..0000000000 --- a/gnu/packages/patches/glm-restore-install-target.patch +++ /dev/null @@ -1,574 +0,0 @@ -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) diff --git a/gnu/packages/patches/gnome-shell-disable-test.patch b/gnu/packages/patches/gnome-shell-disable-test.patch new file mode 100644 index 0000000000..b4c7e73cd7 --- /dev/null +++ b/gnu/packages/patches/gnome-shell-disable-test.patch @@ -0,0 +1,25 @@ +This test seems to require a D-Bus connection not available in the build +environment. + +diff -ur /tmp/guix-build-gnome-shell-3.34.2.drv-0/gnome-shell-3.34.2/src/st/meson.build b/src/st/meson.build +--- /tmp/guix-build-gnome-shell-3.34.2.drv-0/gnome-shell-3.34.2/src/st/meson.build 1969-12-31 19:00:00.000000000 -0500 ++++ b/src/st/meson.build 2019-12-23 00:46:14.721198022 -0500 +@@ -132,18 +132,6 @@ + sources: st_enums[1] + ) + +-test_theme = executable('test-theme', +- sources: 'test-theme.c', +- c_args: st_cflags, +- dependencies: [mutter_dep, gtk_dep], +- build_rpath: mutter_typelibdir, +- link_with: libst +-) +- +-test('CSS styling support', test_theme, +- workdir: meson.current_source_dir() +-) +- + libst_gir = gnome.generate_gir(libst, + sources: st_gir_sources, + nsversion: '1.0', diff --git a/gnu/packages/patches/gnome-shell-theme.patch b/gnu/packages/patches/gnome-shell-theme.patch index fc7f7caf0f..3fa0670c43 100644 --- a/gnu/packages/patches/gnome-shell-theme.patch +++ b/gnu/packages/patches/gnome-shell-theme.patch @@ -2,25 +2,23 @@ Adjust GNOME-Shell so that it uses a Guix theme by default. Patch by Ludovic Courtès <ludo@gnu.org>. -diff --git a/data/gnome-shell-theme.gresource.xml b/data/gnome-shell-theme.gresource.xml -index 76aeaa5..8eaf32e 100644 ---- a/data/gnome-shell-theme.gresource.xml -+++ b/data/gnome-shell-theme.gresource.xml -@@ -22,6 +22,8 @@ +diff -ur a/data/gnome-shell-theme.gresource.xml b/data/gnome-shell-theme.gresource.xml +--- a/data/gnome-shell-theme.gresource.xml 2019-12-11 15:06:31.000000000 -0500 ++++ b/data/gnome-shell-theme.gresource.xml 2019-12-21 00:31:55.895866241 -0500 +@@ -19,6 +19,8 @@ <file>no-events.svg</file> <file>no-notifications.svg</file> <file>noise-texture.png</file> + <file>guix-background.png</file> + <file>guix-logo.png</file> <file>pad-osd.css</file> - <file>page-indicator-active.svg</file> - <file>page-indicator-inactive.svg</file> -diff --git a/data/theme/gnome-shell-sass/_common.scss b/data/theme/gnome-shell-sass/_common.scss -index 54d9f39..b9badd0 100644 ---- a/data/theme/gnome-shell-sass/_common.scss -+++ b/data/theme/gnome-shell-sass/_common.scss -@@ -1742,7 +1742,16 @@ $legacy_icon_size: 24px; - + <file alias="icons/pointer-double-click-symbolic.svg">pointer-double-click-symbolic.svg</file> + <file alias="icons/pointer-drag-symbolic.svg">pointer-drag-symbolic.svg</file> +diff -ur a/data/theme/gnome-shell-sass/_common.scss b/data/theme/gnome-shell-sass/_common.scss +--- a/data/theme/gnome-shell-sass/_common.scss 2019-12-11 15:06:31.000000000 -0500 ++++ b/data/theme/gnome-shell-sass/_common.scss 2019-12-21 00:33:49.495832135 -0500 +@@ -1994,7 +1994,16 @@ + } } - .login-dialog-logo-bin { padding: 24px 0px; } @@ -37,14 +35,14 @@ index 54d9f39..b9badd0 100644 .login-dialog-banner { color: darken($osd_fg_color,10%); } .login-dialog-button-box { spacing: 5px; } .login-dialog-message-warning { color: $warning_color; } -@@ -1889,9 +1898,10 @@ $legacy_icon_size: 24px; +@@ -2143,9 +2152,10 @@ } #lockDialogGroup { -- background: #2e3436 url(resource:///org/gnome/shell/theme/noise-texture.png); +- background: lighten(#2e3436, 8%) url(resource:///org/gnome/shell/theme/noise-texture.png); - background-repeat: repeat; -} -+ background: #2e3436 url(resource:///org/gnome/shell/theme/guix-background.png); ++ background: lighten(#2e3436, 8%) url(resource:///org/gnome/shell/theme/guix-background.png); + background-repeat: no-repeat; + background-size: cover; + background-position: center; } diff --git a/gnu/packages/patches/gnome-todo-delete-esource-duplicate.patch b/gnu/packages/patches/gnome-todo-delete-esource-duplicate.patch new file mode 100644 index 0000000000..c680e86495 --- /dev/null +++ b/gnu/packages/patches/gnome-todo-delete-esource-duplicate.patch @@ -0,0 +1,10 @@ +From: Emmanuele Bassi <ebassi@gnome.org> + +See also: https://gitlab.gnome.org/GNOME/gnome-todo/commit/6cdabc4dd0c6c804a093b94c269461ce376fed4f +--- gnome-todo-3.28.1/plugins/eds/gtd-eds-autoptr.h.orig 2020-05-06 14:20:49.589902539 +0200 ++++ gnome-todo-3.28.1/plugins/eds/gtd-eds-autoptr.h 2020-05-06 14:20:54.593919721 +0200 +@@ -25,4 +25,3 @@ + G_DEFINE_AUTOPTR_CLEANUP_FUNC (ECalComponent, g_object_unref); + G_DEFINE_AUTOPTR_CLEANUP_FUNC (ECalComponentId, e_cal_component_free_id); + G_DEFINE_AUTOPTR_CLEANUP_FUNC (ECalClient, g_object_unref); +-G_DEFINE_AUTOPTR_CLEANUP_FUNC (ESource, g_object_unref); diff --git a/gnu/packages/patches/gnutls-cross.patch b/gnu/packages/patches/gnutls-cross.patch new file mode 100644 index 0000000000..82d08da24e --- /dev/null +++ b/gnu/packages/patches/gnutls-cross.patch @@ -0,0 +1,82 @@ +Not sent upstream. + +From e23de62e28f64599148ff06e439fac116a391299 Mon Sep 17 00:00:00 2001 +From: "Jan (janneke) Nieuwenhuizen" <janneke@gnu.org> +Date: Fri, 10 Apr 2020 07:24:48 +0200 +Subject: [PATCH] guile: Cross build fix. + +To cross-build, both the host guile and the native guile-for-build +must be available. If the native guile is not available, no snarfing +is done and the guile cross build is skipped. + +During the cross-build gnutls.scm does not load when compliling +extra.scm, becase of missing definitions from guile-gnutls-v-2. + +* guile/modules/gnutls.in (protocol/ssl-3 protocol/tls-1.0, +protocol/tls-1.1, credentials/anonymous, cipher/rijndael-256-cbc, +cipher/rijndael-128-cbc, cipher/rijndael-cbc, cipher/arcfour-128, +certificate-verify/allow-any-x509-v1-ca-certificate, +certificate-verify/allow-x509-v1-ca-certificate): Define to #f +initially. When "GNUTLS_GUILE_CROSS_COMPILING" not set, set! to value +from "guile-gnutls-v-2" load-extension C module. +--- + guile/modules/gnutls.in | 40 +++++++++++++++++++++++++++------------- + 1 file changed, 27 insertions(+), 13 deletions(-) + +diff --git a/guile/modules/gnutls.in b/guile/modules/gnutls.in +index 6461c404a..954e315de 100644 +--- a/guile/modules/gnutls.in ++++ b/guile/modules/gnutls.in +@@ -564,22 +564,36 @@ This defines 'variable' as an alias for 'alias', and emits a warning when + (identifier? #'id) + #'alias)))))))))) + +- + ;; Renaming. +-(define protocol/ssl-3 protocol/ssl3) +-(define protocol/tls-1.0 protocol/tls1-0) +-(define protocol/tls-1.1 protocol/tls1-1) ++(define protocol/ssl-3 #f) ++(define protocol/tls-1.0 #f) ++(define protocol/tls-1.1 #f) + + ;; Aliases. +-(define credentials/anonymous credentials/anon) +-(define cipher/rijndael-256-cbc cipher/aes-256-cbc) +-(define cipher/rijndael-128-cbc cipher/aes-128-cbc) +-(define cipher/rijndael-cbc cipher/aes-128-cbc) +-(define cipher/arcfour-128 cipher/arcfour) +-(define certificate-verify/allow-any-x509-v1-ca-certificate +- certificate-verify/allow-any-x509-v1-ca-crt) +-(define certificate-verify/allow-x509-v1-ca-certificate +- certificate-verify/allow-x509-v1-ca-crt) ++(define credentials/anonymous #f) ++(define cipher/rijndael-256-cbc #f) ++(define cipher/rijndael-128-cbc #f) ++(define cipher/rijndael-cbc #f) ++(define cipher/arcfour-128 #f) ++(define certificate-verify/allow-any-x509-v1-ca-certificate #f) ++(define certificate-verify/allow-x509-v1-ca-certificate #f) ++ ++(unless (getenv "GNUTLS_GUILE_CROSS_COMPILING") ++ ;; Renaming. ++ (set! protocol/ssl-3 protocol/ssl3) ++ (set! protocol/tls-1.0 protocol/tls1-0) ++ (set! protocol/tls-1.1 protocol/tls1-1) ++ ++ ;; Aliases. ++ (set! credentials/anonymous credentials/anon) ++ (set! cipher/rijndael-256-cbc cipher/aes-256-cbc) ++ (set! cipher/rijndael-128-cbc cipher/aes-128-cbc) ++ (set! cipher/rijndael-cbc cipher/aes-128-cbc) ++ (set! cipher/arcfour-128 cipher/arcfour) ++ (set! certificate-verify/allow-any-x509-v1-ca-certificate ++ certificate-verify/allow-any-x509-v1-ca-crt) ++ (set! certificate-verify/allow-x509-v1-ca-certificate ++ certificate-verify/allow-x509-v1-ca-crt)) + + ;; Deprecated OpenPGP bindings. + (define-deprecated certificate-type/openpgp) +-- +2.26.0 + diff --git a/gnu/packages/patches/grocsvs-dont-use-admiral.patch b/gnu/packages/patches/grocsvs-dont-use-admiral.patch new file mode 100644 index 0000000000..cb976e19b0 --- /dev/null +++ b/gnu/packages/patches/grocsvs-dont-use-admiral.patch @@ -0,0 +1,69 @@ +python-admiral doesn't have a license +https://github.com/nspies/admiral/issues/3 + +diff --git a/setup.py b/setup.py +index 692b6a0..568f381 100755 +--- a/setup.py ++++ b/setup.py +@@ -20,7 +20,7 @@ setup( + 'console_scripts' : ["grocsvs = grocsvs.main:main"] + }, + +- install_requires = ["admiral", "h5py", "networkx>=2.0", "pandas", "pybedtools", ++ install_requires = ["h5py", "networkx>=2.0", "pandas", "pybedtools", + "pyfaidx", "pysam>=0.10.0", "scipy", "ipython-cluster-helper", + "pygraphviz", "psutil"], + +diff --git a/src/grocsvs/jobmanagers.py b/src/grocsvs/jobmanagers.py +index 6da0b58..112d7ff 100755 +--- a/src/grocsvs/jobmanagers.py ++++ b/src/grocsvs/jobmanagers.py +@@ -41,34 +41,3 @@ class MultiprocessingCluster(Cluster): + pool = multiprocessing.Pool(processes=self.processes) + return pool.map_async(fn, args).get(999999) + +- +-class AdmiralCluster(Cluster): +- def map(self, fn, args): +- from admiral import jobmanagers, remote +- +- cluster_options = self.cluster_settings.cluster_options.copy() +- +- scheduler = cluster_options.pop("scheduler") +- +- jobmanager_class = jobmanagers.get_jobmanager(scheduler) +- jobmanager = jobmanager_class( +- batch_dir=self.batch_dir, log_dir=self.batch_dir) +- +- +- if not "mem" in cluster_options: +- cluster_options["mem"] = "16g" +- if not "time" in cluster_options: +- cluster_options["time"] = "12h" +- +- jobs = [] +- #for i, arg in enumerate(args): +- +- job_name = args[0].__class__.__name__ +- args = [[arg] for arg in args] +- job = remote.run_remote(fn, jobmanager, job_name, args=args, +- array=True, overwrite=True, **cluster_options) +- +- result = jobmanagers.wait_for_jobs([job], wait=5, progress=True) +- +- if not result: +- raise Exception("Some chunks failed to complete") +diff --git a/src/grocsvs/pipeline.py b/src/grocsvs/pipeline.py +index ab1bb2d..350976f 100755 +--- a/src/grocsvs/pipeline.py ++++ b/src/grocsvs/pipeline.py +@@ -8,8 +8,7 @@ from grocsvs import utilities + def make_jobmanager(jobmanager_settings, processes, batch_dir): + jobmanager_classes = {"IPCluster":jobmanagers.IPCluster, + "local": jobmanagers.LocalCluster, +- "multiprocessing": jobmanagers.MultiprocessingCluster, +- "admiral": jobmanagers.AdmiralCluster} ++ "multiprocessing": jobmanagers.MultiprocessingCluster} + + cls = jobmanager_classes[jobmanager_settings.cluster_type] + return cls(processes, jobmanager_settings, batch_dir) diff --git a/gnu/packages/patches/gromacs-tinyxml2.patch b/gnu/packages/patches/gromacs-tinyxml2.patch new file mode 100644 index 0000000000..cc7d7459a8 --- /dev/null +++ b/gnu/packages/patches/gromacs-tinyxml2.patch @@ -0,0 +1,67 @@ +Unbundling tinyxml2 from gromacs and using our own, which is newer, broke gromacs +build. + +This patch fixes three issues: + +- cmake now errors out if using multiple target_link_libraries with mixed styles + of signatures. + +- Error handling API changed, fix the testutils/refdata_xml.cpp code by using the + new API: document.ErrorStr() & tinyxml2::XML_SUCCESS. + +Those fixes will be submitted for inclusion to upstream, but may not be suitable +there as long as they still keep the old version bundled. + +First hunk has already been requested for merging. Third is in discussion. Second +will only be sent if third is OK'ed. + +diff -ruN gromacs-2020.2/src/testutils/CMakeLists.txt gromacs-2020.2-fixed/src/testutils/CMakeLists.txt +--- gromacs-2020.2/src/testutils/CMakeLists.txt 2020-04-30 18:33:44.000000000 +0200 ++++ gromacs-2020.2-fixed/src/testutils/CMakeLists.txt 2020-05-01 22:52:16.356000000 +0200 +@@ -73,7 +73,7 @@ + + if(HAVE_TINYXML2) + include_directories(SYSTEM ${TinyXML2_INCLUDE_DIR}) +- target_link_libraries(testutils ${TinyXML2_LIBRARIES}) ++ target_link_libraries(testutils PRIVATE ${TinyXML2_LIBRARIES}) + else() + include_directories(BEFORE SYSTEM "../external/tinyxml2") + endif() +diff -ruN gromacs-2020.2/src/testutils/refdata_xml.cpp gromacs-2020.2-fixed/src/testutils/refdata_xml.cpp +--- gromacs-2020.2/src/testutils/refdata_xml.cpp 2020-04-30 18:33:44.000000000 +0200 ++++ gromacs-2020.2-fixed/src/testutils/refdata_xml.cpp 2020-05-01 23:17:09.556000000 +0200 +@@ -206,21 +206,12 @@ + document.LoadFile(path.c_str()); + if (document.Error()) + { +- const char* errorStr1 = document.GetErrorStr1(); +- const char* errorStr2 = document.GetErrorStr2(); ++ const char* errorStr = document.ErrorStr(); + std::string errorString("Error was "); +- if (errorStr1) +- { +- errorString += errorStr1; +- } +- if (errorStr2) +- { +- errorString += errorStr2; +- } +- if (!errorStr1 && !errorStr2) +- { ++ if (errorStr) ++ errorString += errorStr; ++ else + errorString += "not specified."; +- } + GMX_THROW(TestException("Reference data not parsed successfully: " + path + "\n." + + errorString + "\n")); + } +@@ -371,7 +362,7 @@ + XMLElementPtr rootElement = createRootElement(&document); + createChildElements(rootElement, rootEntry); + +- if (document.SaveFile(path.c_str()) != tinyxml2::XML_NO_ERROR) ++ if (document.SaveFile(path.c_str()) != tinyxml2::XML_SUCCESS) + { + GMX_THROW(TestException("Reference data saving failed in " + path)); + } diff --git a/gnu/packages/patches/grub-verifiers-Blocklist-fallout-cleanup.patch b/gnu/packages/patches/grub-verifiers-Blocklist-fallout-cleanup.patch new file mode 100644 index 0000000000..2bea74ea95 --- /dev/null +++ b/gnu/packages/patches/grub-verifiers-Blocklist-fallout-cleanup.patch @@ -0,0 +1,41 @@ +This patch is needed to build Grub on the Hurd. + +Taken from upstream: https://git.savannah.gnu.org/cgit/grub.git/commit//?id=dabdfa1c6a80639197d05f683a445fa8615517fe + +From 7606547586b2d6ca1b384e15e0358d3a3ddc48a6 Mon Sep 17 00:00:00 2001 +From: David Michael <fedora.dm0@gmail.com> +Date: Fri, 5 Jul 2019 07:45:59 -0400 +Subject: verifiers: Blocklist fallout cleanup + +Blocklist fallout cleanup after commit 5c6f9bc15 (generic/blocklist: Fix +implicit declaration of function grub_file_filter_disable_compression()). + +Signed-off-by: David Michael <fedora.dm0@gmail.com> +Reviewed-by: Daniel Kiper <daniel.kiper@oracle.com> + +--- + grub-core/osdep/generic/blocklist.c | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/grub-core/osdep/generic/blocklist.c b/grub-core/osdep/generic/blocklist.c +index ea2a511b6..2d9040302 100644 +--- a/grub-core/osdep/generic/blocklist.c ++++ b/grub-core/osdep/generic/blocklist.c +@@ -59,7 +59,7 @@ grub_install_get_blocklist (grub_device_t root_dev, + + grub_disk_cache_invalidate_all (); + +- file = grub_file_open (core_path_dev, GRUB_FILE_TYPE_NONE | FILE_TYPE_NO_DECOMPRESS); ++ file = grub_file_open (core_path_dev, GRUB_FILE_TYPE_NONE | GRUB_FILE_TYPE_NO_DECOMPRESS); + if (file) + { + if (grub_file_size (file) != core_size) +@@ -116,7 +116,7 @@ grub_install_get_blocklist (grub_device_t root_dev, + + grub_file_t file; + /* Now read the core image to determine where the sectors are. */ +- file = grub_file_open (core_path_dev, GRUB_FILE_TYPE_NONE | FILE_TYPE_NO_DECOMPRESS); ++ file = grub_file_open (core_path_dev, GRUB_FILE_TYPE_NONE | GRUB_FILE_TYPE_NO_DECOMPRESS); + if (! file) + grub_util_error ("%s", grub_errmsg); + diff --git a/gnu/packages/patches/gsl-test-i686.patch b/gnu/packages/patches/gsl-test-i686.patch deleted file mode 100644 index 8828c08614..0000000000 --- a/gnu/packages/patches/gsl-test-i686.patch +++ /dev/null @@ -1,17 +0,0 @@ -Work around a test failure due to a rounding issue on 32-bit -platforms, as reported at: - - https://lists.gnu.org/archive/html/bug-gsl/2016-10/msg00000.html - ---- gsl-2.2.1/linalg/test.c 2016-10-05 13:27:42.464059730 +0200 -+++ gsl-2.2.1/linalg/test.c 2016-10-05 13:27:46.988095882 +0200 -@@ -4843,9 +4843,6 @@ main(void) - gsl_test(test_cholesky_decomp_unit(), "Cholesky Decomposition [unit triangular]"); - gsl_test(test_cholesky_solve(), "Cholesky Solve"); - -- gsl_test(test_cholesky_decomp(r), "Cholesky Decomposition"); -- gsl_test(test_cholesky_invert(r), "Cholesky Inverse"); -- gsl_test(test_pcholesky_decomp(r), "Pivoted Cholesky Decomposition"); - gsl_test(test_pcholesky_solve(r), "Pivoted Cholesky Solve"); - gsl_test(test_pcholesky_invert(r), "Pivoted Cholesky Inverse"); - gsl_test(test_mcholesky_decomp(r), "Modified Cholesky Decomposition"); diff --git a/gnu/packages/patches/guile-3.0-linux-syscalls.patch b/gnu/packages/patches/guile-3.0-linux-syscalls.patch new file mode 100644 index 0000000000..0d27f77ee2 --- /dev/null +++ b/gnu/packages/patches/guile-3.0-linux-syscalls.patch @@ -0,0 +1,345 @@ +This patch adds bindings to Linux syscalls for which glibc has symbols. + +Using the FFI would have been nice, but that's not an option when using +a statically-linked Guile in an initrd that doesn't have libc.so around. + +diff --git a/libguile/posix.c b/libguile/posix.c +--- a/libguile/posix.c ++++ b/libguile/posix.c +@@ -2375,6 +2375,336 @@ scm_init_popen (void) + } + #endif /* HAVE_START_CHILD */ + ++ ++/* Linux! */ ++#ifdef __linux__ ++ ++#include <sys/mount.h> ++#include <sys/syscall.h> ++ ++#include "libguile/foreign.h" ++#include "libguile/bytevectors.h" ++#include <libguile/variable.h> ++ ++SCM_DEFINE (scm_mount, "mount", 3, 2, 0, ++ (SCM source, SCM target, SCM type, SCM flags, SCM data), ++ "Mount file system of @var{type} specified by @var{source} " ++ "on @var{target}.") ++#define FUNC_NAME s_scm_mount ++{ ++ int err; ++ char *c_source, *c_target, *c_type, *c_data; ++ unsigned long c_flags; ++ ++ c_source = scm_to_locale_string (source); ++ c_target = scm_to_locale_string (target); ++ c_type = scm_to_locale_string (type); ++ c_flags = SCM_UNBNDP (flags) ? 0 : scm_to_ulong (flags); ++ ++ if (SCM_UNBNDP (data) || scm_is_false (data)) ++ c_data = NULL; ++ else ++ c_data = scm_to_locale_string (data); ++ ++ err = mount (c_source, c_target, c_type, c_flags, c_data); ++ if (err != 0) ++ err = errno; ++ ++ free (c_source); ++ free (c_target); ++ free (c_type); ++ ++ if (c_data != NULL) ++ free (c_data); ++ ++ if (err != 0) ++ { ++ errno = err; ++ SCM_SYSERROR; ++ } ++ ++ return SCM_UNSPECIFIED; ++} ++#undef FUNC_NAME ++ ++SCM_DEFINE (scm_umount, "umount", 1, 0, 0, ++ (SCM target), ++ "Unmount the file system on @var{target}.") ++#define FUNC_NAME s_scm_umount ++{ ++ int err; ++ char *c_target; ++ ++ c_target = scm_to_locale_string (target); ++ ++ err = umount (c_target); ++ if (err != 0) ++ err = errno; ++ ++ free (c_target); ++ ++ if (err != 0) ++ { ++ errno = err; ++ SCM_SYSERROR; ++ } ++ ++ return SCM_UNSPECIFIED; ++} ++#undef FUNC_NAME ++ ++/* Linux's module installation syscall. See `kernel/module.c' in Linux; ++ the function itself is part of the GNU libc. ++ ++ Load the LEN bytes at MODULE as a kernel module, with arguments from ++ ARGS, a space-separated list of options. */ ++extern long init_module (void *module, unsigned long len, const char *args); ++ ++/* Load a kernel module from FD. FLAGS must be a bitwise or of ++ MODULE_INIT_* constants. The GNU libc doesn't provide a wrapper for ++ this one so we use 'syscall'. */ ++static int ++finit_module (int fd, const char *args, int flags) ++{ ++ return syscall (SYS_finit_module, fd, args, flags); ++} ++ ++ ++SCM_DEFINE (scm_load_linux_module, "load-linux-module", 1, 1, 0, ++ (SCM data, SCM options), ++ "Load the Linux kernel module whose contents are in bytevector " ++ "DATA (the contents of a @code{.ko} file), with the arguments " ++ "from the OPTIONS string.") ++#define FUNC_NAME s_scm_load_linux_module ++{ ++ long err; ++ void *c_data; ++ unsigned long c_len; ++ char *c_options; ++ ++ SCM_VALIDATE_BYTEVECTOR (SCM_ARG1, data); ++ ++ c_data = SCM_BYTEVECTOR_CONTENTS (data); ++ c_len = SCM_BYTEVECTOR_LENGTH (data); ++ c_options = ++ scm_to_locale_string (SCM_UNBNDP (options) ? scm_nullstr : options); ++ ++ err = init_module (c_data, c_len, c_options); ++ ++ free (c_options); ++ ++ if (err != 0) ++ SCM_SYSERROR; ++ ++ return SCM_UNSPECIFIED; ++} ++#undef FUNC_NAME ++ ++SCM_DEFINE (scm_load_linux_module_fd, "load-linux-module/fd", 1, 2, 0, ++ (SCM fd, SCM options, SCM flags), ++ "Load the Linux kernel module from the file at FD, " ++ "with the arguments from the OPTIONS string, and " ++ "optionally the given FLAGS.") ++#define FUNC_NAME s_scm_load_linux_module_fd ++{ ++ long err; ++ int c_fd, c_flags; ++ char *c_options; ++ ++ c_fd = scm_to_int (fd); ++ c_options = ++ scm_to_locale_string (SCM_UNBNDP (options) ? scm_nullstr : options); ++ c_flags = SCM_UNBNDP (flags) ? 0 : scm_to_int (flags); ++ ++ err = finit_module (c_fd, c_options, c_flags); ++ ++ free (c_options); ++ ++ if (err != 0) ++ SCM_SYSERROR; ++ ++ return SCM_UNSPECIFIED; ++} ++#undef FUNC_NAME ++ ++ ++/* Rebooting, halting, and all that. */ ++ ++#include <sys/reboot.h> ++ ++SCM_VARIABLE_INIT (flag_RB_AUTOBOOT, "RB_AUTOBOOT", ++ scm_from_int (RB_AUTOBOOT)); ++SCM_VARIABLE_INIT (flag_RB_HALT_SYSTEM, "RB_HALT_SYSTEM", ++ scm_from_int (RB_HALT_SYSTEM)); ++SCM_VARIABLE_INIT (flag_RB_ENABLE_CAD, "RB_ENABLE_CAD", ++ scm_from_int (RB_ENABLE_CAD)); ++SCM_VARIABLE_INIT (flag_RB_DISABLE_CAD, "RB_DISABLE_CAD", ++ scm_from_int (RB_DISABLE_CAD)); ++SCM_VARIABLE_INIT (flag_RB_POWER_OFF, "RB_POWER_OFF", ++ scm_from_int (RB_POWER_OFF)); ++SCM_VARIABLE_INIT (flag_RB_SW_SUSPEND, "RB_SW_SUSPEND", ++ scm_from_int (RB_SW_SUSPEND)); ++SCM_VARIABLE_INIT (flag_RB_KEXEC, "RB_KEXEC", ++ scm_from_int (RB_KEXEC)); ++ ++SCM_DEFINE (scm_reboot, "reboot", 0, 1, 0, ++ (SCM command), ++ "Reboot the system. @var{command} must be one of the @code{RB_} " ++ "constants; if omitted, @var{RB_AUTOBOOT} is used, thus " ++ "performing a hard reset.") ++#define FUNC_NAME s_scm_reboot ++{ ++ int c_command; ++ ++ if (SCM_UNBNDP (command)) ++ c_command = RB_AUTOBOOT; ++ else ++ c_command = scm_to_int (command); ++ ++ reboot (c_command); ++ ++ return SCM_UNSPECIFIED; /* likely unreached */ ++} ++#undef FUNC_NAME ++ ++/* Linux network interfaces. See <linux/if.h>. */ ++ ++#include <linux/if.h> ++#include <linux/sockios.h> ++#include "libguile/socket.h" ++ ++SCM_VARIABLE_INIT (flag_IFF_UP, "IFF_UP", ++ scm_from_int (IFF_UP)); ++SCM_VARIABLE_INIT (flag_IFF_BROADCAST, "IFF_BROADCAST", ++ scm_from_int (IFF_BROADCAST)); ++SCM_VARIABLE_INIT (flag_IFF_DEBUG, "IFF_DEBUG", ++ scm_from_int (IFF_DEBUG)); ++SCM_VARIABLE_INIT (flag_IFF_LOOPBACK, "IFF_LOOPBACK", ++ scm_from_int (IFF_LOOPBACK)); ++SCM_VARIABLE_INIT (flag_IFF_POINTOPOINT, "IFF_POINTOPOINT", ++ scm_from_int (IFF_POINTOPOINT)); ++SCM_VARIABLE_INIT (flag_IFF_NOTRAILERS, "IFF_NOTRAILERS", ++ scm_from_int (IFF_NOTRAILERS)); ++SCM_VARIABLE_INIT (flag_IFF_RUNNING, "IFF_RUNNING", ++ scm_from_int (IFF_RUNNING)); ++SCM_VARIABLE_INIT (flag_IFF_NOARP, "IFF_NOARP", ++ scm_from_int (IFF_NOARP)); ++SCM_VARIABLE_INIT (flag_IFF_PROMISC, "IFF_PROMISC", ++ scm_from_int (IFF_PROMISC)); ++SCM_VARIABLE_INIT (flag_IFF_ALLMULTI, "IFF_ALLMULTI", ++ scm_from_int (IFF_ALLMULTI)); ++ ++SCM_DEFINE (scm_set_network_interface_address, "set-network-interface-address", ++ 3, 0, 0, ++ (SCM socket, SCM name, SCM address), ++ "Configure network interface @var{name}.") ++#define FUNC_NAME s_scm_set_network_interface_address ++{ ++ char *c_name; ++ struct ifreq ifr; ++ struct sockaddr *c_address; ++ size_t sa_len; ++ int fd, err; ++ ++ socket = SCM_COERCE_OUTPORT (socket); ++ SCM_VALIDATE_OPFPORT (1, socket); ++ fd = SCM_FPORT_FDES (socket); ++ ++ memset (&ifr, 0, sizeof ifr); ++ c_name = scm_to_locale_string (name); ++ c_address = scm_to_sockaddr (address, &sa_len); ++ ++ strncpy (ifr.ifr_name, c_name, sizeof ifr.ifr_name - 1); ++ memcpy (&ifr.ifr_addr, c_address, sa_len); ++ ++ err = ioctl (fd, SIOCSIFADDR, &ifr); ++ if (err != 0) ++ err = errno; ++ ++ free (c_name); ++ free (c_address); ++ ++ if (err != 0) ++ { ++ errno = err; ++ SCM_SYSERROR; ++ } ++ ++ return SCM_UNSPECIFIED; ++} ++#undef FUNC_NAME ++ ++SCM_DEFINE (scm_set_network_interface_flags, "set-network-interface-flags", ++ 3, 0, 0, ++ (SCM socket, SCM name, SCM flags), ++ "Change the flags of network interface @var{name} to " ++ "@var{flags}.") ++#define FUNC_NAME s_scm_set_network_interface_flags ++{ ++ struct ifreq ifr; ++ char *c_name; ++ int fd, err; ++ ++ socket = SCM_COERCE_OUTPORT (socket); ++ SCM_VALIDATE_OPFPORT (1, socket); ++ fd = SCM_FPORT_FDES (socket); ++ ++ memset (&ifr, 0, sizeof ifr); ++ c_name = scm_to_locale_string (name); ++ strncpy (ifr.ifr_name, c_name, sizeof ifr.ifr_name - 1); ++ ifr.ifr_flags = scm_to_short (flags); ++ ++ err = ioctl (fd, SIOCSIFFLAGS, &ifr); ++ if (err != 0) ++ err = errno; ++ ++ free (c_name); ++ ++ if (err != 0) ++ { ++ errno = err; ++ SCM_SYSERROR; ++ } ++ ++ return SCM_UNSPECIFIED; ++} ++#undef FUNC_NAME ++ ++SCM_DEFINE (scm_network_interface_flags, "network-interface-flags", ++ 2, 0, 0, ++ (SCM socket, SCM name), ++ "Return the flags of network interface @var{name}.") ++#define FUNC_NAME s_scm_network_interface_flags ++{ ++ struct ifreq ifr; ++ char *c_name; ++ int fd, err; ++ ++ socket = SCM_COERCE_OUTPORT (socket); ++ SCM_VALIDATE_OPFPORT (1, socket); ++ fd = SCM_FPORT_FDES (socket); ++ ++ memset (&ifr, 0, sizeof ifr); ++ c_name = scm_to_locale_string (name); ++ strncpy (ifr.ifr_name, c_name, sizeof ifr.ifr_name - 1); ++ ++ err = ioctl (fd, SIOCGIFFLAGS, &ifr); ++ if (err != 0) ++ err = errno; ++ ++ free (c_name); ++ ++ if (err != 0) ++ { ++ errno = err; ++ SCM_SYSERROR; ++ } ++ ++ return scm_from_short (ifr.ifr_flags); ++} ++#undef FUNC_NAME ++#endif ++ + void + scm_init_posix () + { diff --git a/gnu/packages/patches/guile-3.0-relocatable.patch b/gnu/packages/patches/guile-3.0-relocatable.patch new file mode 100644 index 0000000000..3d101636dc --- /dev/null +++ b/gnu/packages/patches/guile-3.0-relocatable.patch @@ -0,0 +1,69 @@ +This patch changes Guile to use a default search path relative to the +location of the `guile' binary, allowing it to be relocated. + +diff --git a/libguile/load.c b/libguile/load.c +--- a/libguile/load.c ++++ b/libguile/load.c +@@ -27,6 +27,7 @@ + #include <stat-time.h> + #include <string.h> + #include <stdio.h> ++#include <libgen.h> + #include <sys/types.h> + #include <sys/stat.h> + #include <unistd.h> +@@ -334,6 +335,32 @@ scm_init_load_path () + SCM cpath = SCM_EOL; + + #ifdef SCM_LIBRARY_DIR ++ char *program, *bin_dir, *prefix, *module_dir, *ccache_dir; ++ ++ /* Determine the source and compiled module directories at run-time, ++ relative to the executable's location. ++ ++ Note: Use /proc/self/exe instead of argv[0] because the latter is ++ not necessarily an absolute, nor a valid file name. */ ++ ++ program = scm_gc_malloc_pointerless (256, "string"); ++ readlink ("/proc/self/exe", program, 256); ++ ++ bin_dir = dirname (strdupa (program)); ++ ++ prefix = scm_gc_malloc_pointerless (strlen (bin_dir) + 4, "string"); ++ strcpy (prefix, bin_dir); ++ strcat (prefix, "/.."); ++ prefix = canonicalize_file_name (prefix); ++ ++ module_dir = scm_gc_malloc_pointerless (strlen (prefix) + 50, "string"); ++ strcpy (module_dir, prefix); ++ strcat (module_dir, "/share/guile/" SCM_EFFECTIVE_VERSION); ++ ++ ccache_dir = scm_gc_malloc_pointerless (strlen (prefix) + 50, "string"); ++ strcpy (ccache_dir, prefix); ++ strcat (ccache_dir, "/lib/guile/" SCM_EFFECTIVE_VERSION "/ccache"); ++ + env = scm_i_mirror_backslashes (getenv ("GUILE_SYSTEM_PATH")); + if (env && strcmp (env, "") == 0) + /* special-case interpret system-path=="" as meaning no system path instead +@@ -342,10 +369,7 @@ scm_init_load_path () + else if (env) + path = scm_parse_path (scm_from_locale_string (env), path); + else +- path = scm_list_4 (scm_from_utf8_string (SCM_LIBRARY_DIR), +- scm_from_utf8_string (SCM_SITE_DIR), +- scm_from_utf8_string (SCM_GLOBAL_SITE_DIR), +- scm_from_utf8_string (SCM_PKGDATA_DIR)); ++ path = scm_list_1 (scm_from_locale_string (module_dir)); + + env = scm_i_mirror_backslashes (getenv ("GUILE_SYSTEM_COMPILED_PATH")); + if (env && strcmp (env, "") == 0) +@@ -355,8 +379,7 @@ scm_init_load_path () + cpath = scm_parse_path (scm_from_locale_string (env), cpath); + else + { +- cpath = scm_list_2 (scm_from_utf8_string (SCM_CCACHE_DIR), +- scm_from_utf8_string (SCM_SITE_CCACHE_DIR)); ++ cpath = scm_list_1 (scm_from_locale_string (ccache_dir)); + } + + #endif /* SCM_LIBRARY_DIR */ diff --git a/gnu/packages/patches/guile-relocatable.patch b/gnu/packages/patches/guile-relocatable.patch index 464333880c..d8726b4807 100644 --- a/gnu/packages/patches/guile-relocatable.patch +++ b/gnu/packages/patches/guile-relocatable.patch @@ -1,6 +1,17 @@ -This patch changes Guile to use a default search path relative to the -location of the `guile' binary, allowing it to be relocated. +From 501ad55982a8f92a7a95c76c75944d644870181d Mon Sep 17 00:00:00 2001 +From: Ludovic Courtès <ludo@gnu.org> +Date: Thu, 12 Mar 2020 15:16:04 +0100 +Subject: [PATCH] load: Make Guile run-time relocatable using /proc/self/exe. +Import from + + http://git.savannah.gnu.org/cgit/guix.git/commit/?id=920f2c42ce3345dc1355a41377ebf01a33fdae51 +--- + libguile/load.c | 35 +++++++++++++++++++++++++++++------ + 1 file changed, 29 insertions(+), 6 deletions(-) + +diff --git a/libguile/load.c b/libguile/load.c +index c2ee5093a..128cdf95a 100644 --- a/libguile/load.c +++ b/libguile/load.c @@ -26,6 +26,7 @@ @@ -11,7 +22,7 @@ location of the `guile' binary, allowing it to be relocated. #include "libguile/_scm.h" #include "libguile/alist.h" -@@ -326,6 +327,32 @@ scm_init_load_path () +@@ -325,6 +326,32 @@ scm_init_load_path () SCM cpath = SCM_EOL; #ifdef SCM_LIBRARY_DIR @@ -44,25 +55,28 @@ location of the `guile' binary, allowing it to be relocated. env = scm_i_mirror_backslashes (getenv ("GUILE_SYSTEM_PATH")); if (env && strcmp (env, "") == 0) /* special-case interpret system-path=="" as meaning no system path instead -@@ -334,10 +361,7 @@ scm_init_load_path () +@@ -333,10 +360,7 @@ scm_init_load_path () else if (env) path = scm_parse_path (scm_from_locale_string (env), path); else -- path = scm_list_4 (scm_from_utf8_string (SCM_LIBRARY_DIR), -- scm_from_utf8_string (SCM_SITE_DIR), -- scm_from_utf8_string (SCM_GLOBAL_SITE_DIR), -- scm_from_utf8_string (SCM_PKGDATA_DIR)); +- path = scm_list_4 (scm_from_locale_string (SCM_LIBRARY_DIR), +- scm_from_locale_string (SCM_SITE_DIR), +- scm_from_locale_string (SCM_GLOBAL_SITE_DIR), +- scm_from_locale_string (SCM_PKGDATA_DIR)); + path = scm_list_1 (scm_from_locale_string (module_dir)); env = scm_i_mirror_backslashes (getenv ("GUILE_SYSTEM_COMPILED_PATH")); if (env && strcmp (env, "") == 0) -@@ -347,8 +371,7 @@ scm_init_load_path () +@@ -346,8 +370,7 @@ scm_init_load_path () cpath = scm_parse_path (scm_from_locale_string (env), cpath); else { -- cpath = scm_list_2 (scm_from_utf8_string (SCM_CCACHE_DIR), -- scm_from_utf8_string (SCM_SITE_CCACHE_DIR)); +- cpath = scm_list_2 (scm_from_locale_string (SCM_CCACHE_DIR), +- scm_from_locale_string (SCM_SITE_CCACHE_DIR)); + cpath = scm_list_1 (scm_from_locale_string (ccache_dir)); } #endif /* SCM_LIBRARY_DIR */ +-- +2.24.0 + diff --git a/gnu/packages/patches/guile-sqlite3-fix-cross-compilation.patch b/gnu/packages/patches/guile-sqlite3-fix-cross-compilation.patch new file mode 100644 index 0000000000..9ea9a47677 --- /dev/null +++ b/gnu/packages/patches/guile-sqlite3-fix-cross-compilation.patch @@ -0,0 +1,55 @@ +From a6e9e62a77ecc5012929613e20da23b2636450a5 Mon Sep 17 00:00:00 2001 +From: Mathieu Othacehe <mathieu.othacehe@parrot.com> +Date: Mon, 25 Mar 2019 11:00:38 +0100 +Subject: [PATCH] cross compile + +--- + build-aux/guile.am | 2 +- + configure.ac | 19 ++++++++++++------- + 2 files changed, 13 insertions(+), 8 deletions(-) + +diff --git a/build-aux/guile.am b/build-aux/guile.am +index dc1e63f..3126372 100644 +--- a/build-aux/guile.am ++++ b/build-aux/guile.am +@@ -16,4 +16,4 @@ EXTRA_DIST = $(SOURCES) $(NOCOMP_SOURCES) + GUILE_WARNINGS = -Wunbound-variable -Warity-mismatch -Wformat + SUFFIXES = .scm .go + .scm.go: +- $(AM_V_GEN)$(top_builddir)/env $(GUILE_TOOLS) compile $(GUILE_WARNINGS) -o "$@" "$<" ++ $(AM_V_GEN)$(top_builddir)/env $(GUILE_TOOLS) compile $(GUILE_TARGET) $(GUILE_WARNINGS) -o "$@" "$<" +diff --git a/configure.ac b/configure.ac +index f648fcb..2d34d0a 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -21,15 +21,20 @@ PKG_CHECK_MODULES([SQLITE], [sqlite3]) + SQLITE_LIBDIR="`"$PKG_CONFIG" sqlite3 --variable libdir`" + AC_SUBST([SQLITE_LIBDIR]) + +-AC_MSG_CHECKING([whether '$SQLITE_LIBDIR/libsqlite3' is usable]) +-GUILE_CHECK([retval], +- [(dynamic-func \"sqlite3_open_v2\" ++if test "$cross_compiling" = "no"; then ++ AC_MSG_CHECKING([whether '$SQLITE_LIBDIR/libsqlite3' is usable]) ++ GUILE_CHECK([retval], ++ [(dynamic-func \"sqlite3_open_v2\" + (dynamic-link \"$SQLITE_LIBDIR/libsqlite3\"))]) +-if test "$retval" != 0; then +- AC_MSG_RESULT([no]) +- AC_MSG_ERROR([failed to load '$SQLITE_LIBDIR/libsqlite3']) ++ if test "$retval" != 0; then ++ AC_MSG_RESULT([no]) ++ AC_MSG_ERROR([failed to load '$SQLITE_LIBDIR/libsqlite3']) ++ else ++ AC_MSG_RESULT([yes]) ++ fi + else +- AC_MSG_RESULT([yes]) ++ GUILE_TARGET="--target=$host_alias" ++ AC_SUBST([GUILE_TARGET]) + fi + + AC_CONFIG_FILES([Makefile sqlite3.scm]) +-- +2.17.1 + diff --git a/gnu/packages/patches/hurd-cross.patch b/gnu/packages/patches/hurd-cross.patch new file mode 100644 index 0000000000..cc95dddccc --- /dev/null +++ b/gnu/packages/patches/hurd-cross.patch @@ -0,0 +1,33 @@ +This fixes linking libfstest/test-fcntl (and others). + +As discussed with upstream: https://lists.gnu.org/archive/html/bug-hurd/2020-03/msg00018.html + +From 96a9f67a8685e713f25259c18306797d54cc27a5 Mon Sep 17 00:00:00 2001 +From: Jan Nieuwenhuizen <janneke@gnu.org> +Date: Sat, 14 Mar 2020 11:28:31 +0100 +Subject: [PATCH] build: Fix cross build on Guix. + +As discussed in https://lists.gnu.org/archive/html/bug-hurd/2020-03/msg00018.html. + +* Makeconf (lpath): Add -Wl,-rpath-link=<dir> next to -L<dir>. +--- + Makeconf | 3 ++- + 1 file changed, 2 insertions(+), 1 deletion(-) + +diff --git a/Makeconf b/Makeconf +index 67f7ab1c..f68ff6e3 100644 +--- a/Makeconf ++++ b/Makeconf +@@ -325,7 +325,8 @@ _libsubst=${libsubst$(patsubst %,-override,${libsubst-override})} + + # Direct the linker where to find shared objects specified in the + # dependencies of other shared objects it encounters. +-lpath := -L. $(patsubst %,-L%,$(dir $(wildcard ../lib*/lib*.so))) ++lib_dirs := $(dir $(wildcard ../lib*/lib*.so)) ++lpath := -L. $(lib_dirs:%=-L%) $(lib_dirs:%=-Wl,-rpath-link=%) + + # Main rule to link executables + # +-- +2.24.0 + diff --git a/gnu/packages/patches/hurd-fix-eth-multiplexer-dependency.patch b/gnu/packages/patches/hurd-fix-eth-multiplexer-dependency.patch deleted file mode 100644 index 5f0da3eab3..0000000000 --- a/gnu/packages/patches/hurd-fix-eth-multiplexer-dependency.patch +++ /dev/null @@ -1,26 +0,0 @@ -From ef0399bad41e60cb30d5073129abeb206076394a Mon Sep 17 00:00:00 2001 -From: Manolis Ragkousis <manolis837@gmail.com> -Date: Sat, 8 Apr 2017 16:44:52 +0300 -Subject: [PATCH] eth-multiplexer: Fix iohelp missing dependency. - -* eth-multiplexer/Makefile (HURDLIBS): Add iohelp. ---- - eth-multiplexer/Makefile | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/eth-multiplexer/Makefile b/eth-multiplexer/Makefile -index 07f909e7..cefa0abd 100644 ---- a/eth-multiplexer/Makefile -+++ b/eth-multiplexer/Makefile -@@ -26,7 +26,7 @@ MIGSFLAGS = -imacros $(srcdir)/mig-mutate.h - device-MIGSFLAGS="-DMACH_PAYLOAD_TO_PORT=ports_payload_get_name" - OBJS = $(SRCS:.c=.o) $(MIGSTUBS) - LCLHDRS = ethernet.h util.h vdev.h netfs_impl.h --HURDLIBS = ports ihash fshelp shouldbeinlibc netfs bpf -+HURDLIBS = ports ihash iohelp fshelp shouldbeinlibc netfs bpf - LDLIBS = -lpthread - - CFLAGS += -I$(top_srcdir)/libbpf --- -2.12.2 - diff --git a/gnu/packages/patches/icecat-makeicecat.patch b/gnu/packages/patches/icecat-makeicecat.patch index c2c59ec855..2978a5789e 100644 --- a/gnu/packages/patches/icecat-makeicecat.patch +++ b/gnu/packages/patches/icecat-makeicecat.patch @@ -25,7 +25,7 @@ index 8be2362..48716f2 100755 -wget -N https://ftp.mozilla.org/pub/mozilla.org/firefox/releases/${FFVERSION}esr/source/firefox-${FFVERSION}esr.source.tar.xz.asc -gpg --recv-keys --keyserver keyserver.ubuntu.com 14F26682D0916CDD81E37B6D61B7B526D98F0353 -gpg --verify firefox-${FFVERSION}esr.source.tar.xz.asc --echo -n ad3ea069c3d23aab360ad04ff4d0f5e556d3538f7dd4eae0690c4e9241537570 firefox-${FFVERSION}esr.source.tar.xz |sha256sum -c - +-echo -n fa5b2266d225878d4b35694678f79fd7e7a6d3c62759a40326129bd90f63e842 firefox-${FFVERSION}esr.source.tar.xz |sha256sum -c - - -echo Extracting Firefox tarball -tar -xf firefox-${FFVERSION}esr.source.tar.xz @@ -37,7 +37,7 @@ index 8be2362..48716f2 100755 +# wget -N https://ftp.mozilla.org/pub/mozilla.org/firefox/releases/${FFVERSION}esr/source/firefox-${FFVERSION}esr.source.tar.xz.asc +# gpg --recv-keys --keyserver keyserver.ubuntu.com 14F26682D0916CDD81E37B6D61B7B526D98F0353 +# gpg --verify firefox-${FFVERSION}esr.source.tar.xz.asc -+# echo -n ad3ea069c3d23aab360ad04ff4d0f5e556d3538f7dd4eae0690c4e9241537570 firefox-${FFVERSION}esr.source.tar.xz |sha256sum -c - ++# echo -n fa5b2266d225878d4b35694678f79fd7e7a6d3c62759a40326129bd90f63e842 firefox-${FFVERSION}esr.source.tar.xz |sha256sum -c - +# +# echo Extracting Firefox tarball +# tar -xf firefox-${FFVERSION}esr.source.tar.xz diff --git a/gnu/packages/patches/icecat-use-older-reveal-hidden-html.patch b/gnu/packages/patches/icecat-use-older-reveal-hidden-html.patch new file mode 100644 index 0000000000..228adc23f1 --- /dev/null +++ b/gnu/packages/patches/icecat-use-older-reveal-hidden-html.patch @@ -0,0 +1,70 @@ +From 2e8618d22568b6e00892a17303d437dd700eca98 Mon Sep 17 00:00:00 2001 +From: Mark H Weaver <mhw@netris.org> +Date: Tue, 5 May 2020 21:27:41 -0400 +Subject: [PATCH] Revert "Update Reveal hidden HTML." + +I prefer the user interface of the old version. + +This reverts commit f6e3adb6b2344ee2c7bb453a305fd2d6fb4c194c. +--- + .../passive_improve_css.js | 23 ++++++++++++++----- + 1 file changed, 17 insertions(+), 6 deletions(-) + +diff --git a/data/extensions/SubmitMe@0xbeef.coffee/passive_improve_css.js b/data/extensions/SubmitMe@0xbeef.coffee/passive_improve_css.js +index 7692990..ca57982 100644 +--- a/data/extensions/SubmitMe@0xbeef.coffee/passive_improve_css.js ++++ b/data/extensions/SubmitMe@0xbeef.coffee/passive_improve_css.js +@@ -10,6 +10,8 @@ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI + */ + + ++var bad = []; ++ + function escapeHTML (unsafe_str) { + return unsafe_str + .replace(/&/g, '&') +@@ -20,9 +22,14 @@ function escapeHTML (unsafe_str) { + .replace(/\//g, '/') + } + ++function dounhide(){ ++ for(var i = 0; i < bad.length; i++){ ++ bad[i].remove(); ++ } ++} ++ + console.log("passive_improve_css.js"); + function reveal_css(){ +- var bad = []; + + var elements = document.getElementsByTagName("style"); + for(var i = 0; i < elements.length; i++){ +@@ -41,16 +48,20 @@ function reveal_css(){ + + } + } +- if(bad.length > 0 && window.confirm("Hidden HTML detected, would you like to reveal it?")){ +- for(var i = 0; i < bad.length; i++){ +- bad[i].remove(); +- } ++ if(bad.length > 0){ ++ const insertedDiv = document.createElement('div'); ++ insertedDiv.innerHTML= '<p id="unhide" class="button white" style="text-decoration:none!important; color:#000!important; font-size:1em !important; font-family:\'sans-serif\'!important; font-weight:normal !important; background-color:transparent!important; margin:0!important; padding:0!important; font-size:10px!important; line-height:1!important"' + ++ 'alt="Click to reveal hidden elements in this page">' + ++ '<span>Reveal hidden elements</span>' + ++ '</a>'; ++ insertedDiv.style="position:fixed; bottom:1em; right:1em; opacity:0.8; z-index: 2147483647 !important; border-radius: 3px !important; background-color: #fff !important; padding: 0.5em !important; box-shadow: 0 0 3px grey !important; font-color:#bbb!important; cursor: pointer!important;"; ++ insertedDiv.addEventListener("click", dounhide, false); ++ document.body.insertBefore(insertedDiv, document.body.firstChild); + } + } + + reveal_css(); + +- + /* + var a = document.getElementsByTagName("style")[2]; + var btn = document.createElement("style"); // Create a <button> element +-- +2.26.2 + diff --git a/gnu/packages/patches/ilmbase-fix-test-arm.patch b/gnu/packages/patches/ilmbase-fix-test-arm.patch new file mode 100644 index 0000000000..2dbc55e8c4 --- /dev/null +++ b/gnu/packages/patches/ilmbase-fix-test-arm.patch @@ -0,0 +1,60 @@ +Fix a test failure on ARM platforms: + +https://github.com/AcademySoftwareFoundation/openexr/issues/713 + +Taken from upstream: + +https://github.com/AcademySoftwareFoundation/openexr/commit/76d9839cd1b300398f8b801dfcb4bcf2f8c0096f + +diff --git a/OpenEXR/IlmImfTest/testHuf.cpp b/OpenEXR/IlmImfTest/testHuf.cpp +index 4c887ee8..a93b8ea9 100644 +--- a/OpenEXR/IlmImfTest/testHuf.cpp ++++ b/OpenEXR/IlmImfTest/testHuf.cpp +@@ -181,9 +181,9 @@ compressUncompressSubset(const unsigned short raw[], int n) + // This DEK hash is determined from an aprior initial run of this + // test noting its value from the assert message compressVerify(). + // +-#define HUF_COMPRESS_DEK_HASH_FOR_FILL4_USHRT_MAX_PLUS_ONE 2956869585U +-#define HUF_COMPRESS_DEK_HASH_FOR_FILL4_N 3414126535U +-#define HUF_COMPRESS_DEK_HASH_FOR_FILL5_N 169791374U ++#define HUF_COMPRESS_DEK_HASH_FOR_FILL4_USHRT_MAX_PLUS_ONE 2013380646U ++#define HUF_COMPRESS_DEK_HASH_FOR_FILL4_N 213880353U ++#define HUF_COMPRESS_DEK_HASH_FOR_FILL5_N 2492982090U + + void + compressVerify (const unsigned short raw[], +@@ -200,7 +200,7 @@ compressVerify (const unsigned short raw[], + // under the topic of sorting and search chapter 6.4. + // + unsigned int compressedHash = nCompressed; +- const char* cptr = compressed; ++ const unsigned char* cptr = reinterpret_cast<const unsigned char*>( (const char*) compressed); + for (int i = 0; i < nCompressed; ++i) + { + compressedHash = +@@ -210,6 +210,25 @@ compressVerify (const unsigned short raw[], + cout << "verifying compressed checksum hash = " + << compressedHash << std::endl; + ++ if (compressedHash != dekHash) ++ { ++ cout << "hash verification failed. Got " << compressedHash << " expected " << dekHash << std::endl; ++ const unsigned char* cptr = reinterpret_cast<const unsigned char*>( (const char*) compressed); ++ for(int i = 0 ; i < nCompressed ; ++i ) ++ { ++ cout << std::hex << (0xFF & (int) (*cptr++)); ++ if ( (i & 0xF) ==0 ) ++ { ++ cout << '\n'; ++ } ++ else ++ { ++ cout << ' '; ++ } ++ } ++ cout << "\n"; ++ } ++ + assert (compressedHash == dekHash); + } + diff --git a/gnu/packages/patches/ilmbase-openexr-pkg-config.patch b/gnu/packages/patches/ilmbase-openexr-pkg-config.patch deleted file mode 100644 index 99613080d8..0000000000 --- a/gnu/packages/patches/ilmbase-openexr-pkg-config.patch +++ /dev/null @@ -1,40 +0,0 @@ -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 - diff --git a/gnu/packages/patches/inetutils-hurd.patch b/gnu/packages/patches/inetutils-hurd.patch new file mode 100644 index 0000000000..bd65c4feb1 --- /dev/null +++ b/gnu/packages/patches/inetutils-hurd.patch @@ -0,0 +1,583 @@ +Support compiling on the Hurd. + +Taken from https://git.hadrons.org/cgit/debian/pkgs/inetutils.git/tree/debian/patches/0002-ifconfig-Improve-the-support-for-GNU-Hurd.patch + +From 9a90d9b9119906df23cb2db1503cb0f099942dd9 Mon Sep 17 00:00:00 2001 +From: Mats Erik Andersson <gnu@gisladisker.se> +Date: Sat, 18 Jul 2015 01:12:41 +0200 +Subject: [PATCH 02/35] ifconfig: Improve the support for GNU/Hurd. + +Use system specific code instead of generic code. +This provides abilities similar to other systems. +--- + ChangeLog | 17 +++ + ifconfig/system.c | 10 +- + ifconfig/system.h | 2 + + ifconfig/system/Makefile.am | 4 +- + ifconfig/system/generic.c | 14 +- + ifconfig/system/hurd.c | 292 ++++++++++++++++++++++++++++++++++++ + ifconfig/system/hurd.h | 50 ++++++ + 7 files changed, 381 insertions(+), 8 deletions(-) + create mode 100644 ifconfig/system/hurd.c + create mode 100644 ifconfig/system/hurd.h + +diff --git a/ifconfig/system.c b/ifconfig/system.c +index 30677e41..e108dc2e 100644 +--- a/ifconfig/system.c ++++ b/ifconfig/system.c +@@ -25,10 +25,12 @@ + # include "system/solaris.c" + #elif defined __QNX__ + # include "system/qnx.c" +-# elif defined __DragonFly__ || defined __FreeBSD__ || \ +- defined __FreeBSD_kernel__ || \ +- defined __NetBSD__ || defined __OpenBSD__ +-# include "system/bsd.c" ++#elif defined __DragonFly__ || defined __FreeBSD__ || \ ++ defined __FreeBSD_kernel__ || \ ++ defined __NetBSD__ || defined __OpenBSD__ ++# include "system/bsd.c" ++#elif defined __GNU__ ++# include "system/hurd.c" + #else + # include "system/generic.c" + #endif +diff --git a/ifconfig/system.h b/ifconfig/system.h +index 8521ad95..66878d3a 100644 +--- a/ifconfig/system.h ++++ b/ifconfig/system.h +@@ -97,6 +97,8 @@ extern struct if_nameindex* (*system_if_nameindex) (void); + defined __FreeBSD_kernel__ || \ + defined __NetBSD__ || defined __OpenBSD__ + # include "system/bsd.h" ++# elif defined __GNU__ ++# include "system/hurd.h" + # else + # include "system/generic.h" + # endif +diff --git a/ifconfig/system/Makefile.am b/ifconfig/system/Makefile.am +index 954c6774..62a9f1c4 100644 +--- a/ifconfig/system/Makefile.am ++++ b/ifconfig/system/Makefile.am +@@ -26,8 +26,10 @@ noinst_HEADERS = \ + linux.h \ + solaris.h \ + qnx.h \ ++ hurd.h \ + bsd.c \ + generic.c \ + linux.c \ + solaris.c \ +- qnx.c ++ qnx.c \ ++ hurd.c +diff --git a/ifconfig/system/generic.c b/ifconfig/system/generic.c +index 9a2bda55..20a78bde 100644 +--- a/ifconfig/system/generic.c ++++ b/ifconfig/system/generic.c +@@ -22,6 +22,8 @@ + #include <config.h> + + #include "../ifconfig.h" ++ ++#include <unused-parameter.h> + + + /* Output format stuff. */ +@@ -36,19 +38,25 @@ const char *system_help; + struct argp_child system_argp_child; + + int +-system_parse_opt (struct ifconfig **ifp, char option, char *optarg) ++system_parse_opt (struct ifconfig **ifp _GL_UNUSED_PARAMETER, ++ char option _GL_UNUSED_PARAMETER, ++ char *optarg _GL_UNUSED_PARAMETER) + { + return 0; + } + + int +-system_parse_opt_rest (struct ifconfig **ifp, int argc, char *argv[]) ++system_parse_opt_rest (struct ifconfig **ifp _GL_UNUSED_PARAMETER, ++ int argc _GL_UNUSED_PARAMETER, ++ char *argv[] _GL_UNUSED_PARAMETER) + { + return 0; + } + + int +-system_configure (int sfd, struct ifreq *ifr, struct system_ifconfig *ifs) ++system_configure (int sfd _GL_UNUSED_PARAMETER, ++ struct ifreq *ifr _GL_UNUSED_PARAMETER, ++ struct system_ifconfig *ifs _GL_UNUSED_PARAMETER) + { + return 0; + } +diff --git a/ifconfig/system/hurd.c b/ifconfig/system/hurd.c +new file mode 100644 +index 00000000..3bd19775 +--- /dev/null ++++ b/ifconfig/system/hurd.c +@@ -0,0 +1,292 @@ ++/* hurd.c -- Code for ifconfig specific to GNU/Hurd. ++ Copyright (C) 2015 Free Software Foundation, Inc. ++ ++ This file is part of GNU Inetutils. ++ ++ GNU Inetutils 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 Inetutils 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 this program. If not, see `http://www.gnu.org/licenses/'. */ ++ ++/* Mostly written by Marcus Brinkmann. ++ Adaptions to GNU/Hurd by Mats Erik Andersson. */ ++ ++#include <config.h> ++ ++#include <stdlib.h> ++#include <sys/ioctl.h> ++#include <net/if_arp.h> ++#include "../ifconfig.h" ++ ++#include <unused-parameter.h> ++ ++ ++/* Output format stuff. */ ++ ++const char *system_default_format = "gnu"; ++ ++ ++/* Argument parsing stuff. */ ++ ++const char *system_help = "NAME [ADDR]\ ++ [broadcast BRDADDR] [netmask MASK]\ ++ [mtu N] [up|down] [FLAGS]"; ++ ++struct argp_child system_argp_child; ++ ++int ++system_parse_opt (struct ifconfig **ifp _GL_UNUSED_PARAMETER, ++ char option _GL_UNUSED_PARAMETER, ++ char *optarg _GL_UNUSED_PARAMETER) ++{ ++ return 0; ++} ++ ++int ++system_parse_opt_rest (struct ifconfig **ifp, int argc, char *argv[]) ++{ ++ int i = 0, mask, rev; ++ enum { ++ EXPECT_NOTHING, ++ EXPECT_AF, ++ EXPECT_BROADCAST, ++ EXPECT_NETMASK, ++ EXPECT_METRIC, ++ EXPECT_MTU ++ } expect = EXPECT_AF; ++ ++ *ifp = parse_opt_new_ifs (argv[0]); ++ ++ while (++i < argc) ++ { ++ switch (expect) ++ { ++ case EXPECT_BROADCAST: ++ parse_opt_set_brdaddr (*ifp, argv[i]); ++ break; ++ ++ case EXPECT_NETMASK: ++ parse_opt_set_netmask (*ifp, argv[i]); ++ break; ++ ++ case EXPECT_MTU: ++ parse_opt_set_mtu (*ifp, argv[i]); ++ break; ++ ++ /* XXX: 2015-07-18, GNU/Hurd does not yet support ++ ioctl(SIOCSIFMETRIC), but we let the code ++ handle this standard ability anyway! ++ */ ++ case EXPECT_METRIC: ++ parse_opt_set_metric (*ifp, argv[i]); ++ break; ++ ++ case EXPECT_AF: ++ expect = EXPECT_NOTHING; ++ if (!strcmp (argv[i], "inet")) ++ continue; ++ else if (!strcmp (argv[i], "inet6")) ++ { ++ error (0, 0, "%s is not a supported address family", argv[i]); ++ return 0; ++ } ++ break; ++ ++ case EXPECT_NOTHING: ++ break; ++ } ++ ++ if (expect != EXPECT_NOTHING) ++ expect = EXPECT_NOTHING; ++ else if (!strcmp (argv[i], "broadcast")) ++ expect = EXPECT_BROADCAST; ++ else if (!strcmp (argv[i], "netmask")) ++ expect = EXPECT_NETMASK; ++ else if (!strcmp (argv[i], "metric")) ++ expect = EXPECT_METRIC; ++ else if (!strcmp (argv[i], "mtu")) ++ expect = EXPECT_MTU; ++ else if (!strcmp (argv[i], "up")) ++ parse_opt_set_flag (*ifp, IFF_UP | IFF_RUNNING, 0); ++ else if (!strcmp (argv[i], "down")) ++ parse_opt_set_flag (*ifp, IFF_UP, 1); ++ else if (((mask = if_nameztoflag (argv[i], &rev)) ++ & ~IU_IFF_CANTCHANGE) != 0) ++ parse_opt_set_flag (*ifp, mask, rev); ++ else ++ { ++ if (!((*ifp)->valid & IF_VALID_ADDR)) ++ parse_opt_set_address (*ifp, argv[i]); ++ else if (!((*ifp)->valid & IF_VALID_DSTADDR)) ++ parse_opt_set_dstaddr (*ifp, argv[i]); ++ } ++ } ++ ++ switch (expect) ++ { ++ case EXPECT_BROADCAST: ++ error (0, 0, "option `broadcast' requires an argument"); ++ break; ++ ++ case EXPECT_NETMASK: ++ error (0, 0, "option `netmask' requires an argument"); ++ break; ++ ++ case EXPECT_METRIC: ++ error (0, 0, "option `metric' requires an argument"); ++ break; ++ ++ case EXPECT_MTU: ++ error (0, 0, "option `mtu' requires an argument"); ++ break; ++ ++ case EXPECT_AF: ++ case EXPECT_NOTHING: ++ return 1; ++ } ++ ++ return 0; ++} ++ ++int ++system_configure (int sfd _GL_UNUSED_PARAMETER, ++ struct ifreq *ifr _GL_UNUSED_PARAMETER, ++ struct system_ifconfig *ifs _GL_UNUSED_PARAMETER) ++{ ++ return 0; ++} ++ ++struct if_nameindex* (*system_if_nameindex) (void) = if_nameindex; ++ ++static void ++print_hwaddr_ether (format_data_t form _GL_UNUSED_PARAMETER, ++ unsigned char *data) ++{ ++ *column += printf ("%02X:%02X:%02X:%02X:%02X:%02X", ++ data[0], data[1], data[2], data[3], data[4], data[5]); ++ had_output = 1; ++} ++ ++struct arphrd_symbol ++{ ++ const char *name; ++ const char *title; ++ int value; ++ void (*print_hwaddr) (format_data_t form, unsigned char *data); ++} arphrd_symbols[] = ++ { ++#ifdef ARPHRD_ETHER /* Ethernet 10/100Mbps. */ ++ { "ETHER", "Ethernet", ARPHRD_ETHER, print_hwaddr_ether}, ++#endif ++#ifdef ARPHRD_LOOPBACK /* Loopback device. */ ++ { "LOOPBACK", "Local Loopback", ARPHRD_LOOPBACK, NULL}, ++#endif ++ /* XXX: The image debian-hurd-20150424 returns the value 4 ++ instead of expected ARPHRD_LOOPBACK. This has been ++ discussed in the list debian-hurd, where I was asked ++ to resist the temptation of a work around! ++ */ ++ { NULL, NULL, 0, NULL} ++ }; ++ ++struct arphrd_symbol * ++arphrd_findvalue (int value) ++{ ++ struct arphrd_symbol *arp = arphrd_symbols; ++ while (arp->name != NULL) ++ { ++ if (arp->value == value) ++ break; ++ arp++; ++ } ++ if (arp->name) ++ return arp; ++ else ++ return NULL; ++} ++ ++void ++system_fh_hwaddr_query (format_data_t form, int argc, char *argv[]) ++{ ++#ifdef SIOCGIFHWADDR ++ struct arphrd_symbol *arp; ++ ++ if (ioctl (form->sfd, SIOCGIFHWADDR, form->ifr) < 0) ++ select_arg (form, argc, argv, 1); ++ ++ arp = arphrd_findvalue (form->ifr->ifr_hwaddr.sa_family); ++ select_arg (form, argc, argv, (arp && arp->print_hwaddr) ? 0 : 1); ++#else ++ select_arg (form, argc, argv, 1); ++#endif ++} ++ ++void ++system_fh_hwaddr (format_data_t form, int argc _GL_UNUSED_PARAMETER, ++ char *argv[] _GL_UNUSED_PARAMETER) ++{ ++#ifdef SIOCGIFHWADDR ++ if (ioctl (form->sfd, SIOCGIFHWADDR, form->ifr) < 0) ++ error (EXIT_FAILURE, errno, ++ "SIOCGIFHWADDR failed for interface `%s'", ++ form->ifr->ifr_name); ++ else ++ { ++ struct arphrd_symbol *arp; ++ ++ arp = arphrd_findvalue (form->ifr->ifr_hwaddr.sa_family); ++ if (arp && arp->print_hwaddr) ++ arp->print_hwaddr (form, ++ (unsigned char *) form->ifr->ifr_hwaddr.sa_data); ++ else ++ put_string (form, "(hwaddr unknown)"); ++ } ++#else ++ *column += printf ("(not available)"); ++ had_output = 1; ++#endif ++} ++ ++void ++system_fh_hwtype_query (format_data_t form, int argc, char *argv[]) ++{ ++#ifdef SIOCGIFHWADDR ++ if (ioctl (form->sfd, SIOCGIFHWADDR, form->ifr) >= 0) ++ select_arg (form, argc, argv, 0); ++ else ++#endif ++ select_arg (form, argc, argv, 1); ++} ++ ++void ++system_fh_hwtype (format_data_t form, int argc _GL_UNUSED_PARAMETER, ++ char *argv[] _GL_UNUSED_PARAMETER) ++{ ++#ifdef SIOCGIFHWADDR ++ if (ioctl (form->sfd, SIOCGIFHWADDR, form->ifr) < 0) ++ error (EXIT_FAILURE, errno, ++ "SIOCGIFHWADDR failed for interface `%s'", ++ form->ifr->ifr_name); ++ else ++ { ++ struct arphrd_symbol *arp; ++ ++ arp = arphrd_findvalue (form->ifr->ifr_hwaddr.sa_family); ++ if (arp) ++ put_string (form, arp->title); ++ else ++ put_string (form, "(hwtype unknown)"); ++ } ++#else ++ *column += printf ("(not available)"); ++ had_output = 1; ++#endif ++} +diff --git a/ifconfig/system/hurd.h b/ifconfig/system/hurd.h +new file mode 100644 +index 00000000..bab14565 +--- /dev/null ++++ b/ifconfig/system/hurd.h +@@ -0,0 +1,50 @@ ++/* ++ Copyright (C) 2015 Free Software Foundation, Inc. ++ ++ This file is part of GNU Inetutils. ++ ++ GNU Inetutils 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 Inetutils 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 this program. If not, see `http://www.gnu.org/licenses/'. */ ++ ++/* Written by Mats Erik Andersson. */ ++ ++#ifndef IFCONFIG_SYSTEM_HURD_H ++# define IFCONFIG_SYSTEM_HURD_H ++ ++# include "../printif.h" ++# include "../options.h" ++ ++ ++/* Option support. */ ++ ++struct system_ifconfig ++{ ++ int valid; ++}; ++ ++ ++/* Output format support. */ ++ ++# define SYSTEM_FORMAT_HANDLER \ ++ { "hurd", fh_nothing}, \ ++ { "hwaddr?", system_fh_hwaddr_query}, \ ++ { "hwaddr", system_fh_hwaddr}, \ ++ { "hwtype?", system_fh_hwtype_query}, \ ++ { "hwtype", system_fh_hwtype}, ++ ++void system_fh_hwaddr_query (format_data_t form, int argc, char *argv[]); ++void system_fh_hwaddr (format_data_t form, int argc, char *argv[]); ++void system_fh_hwtype_query (format_data_t form, int argc, char *argv[]); ++void system_fh_hwtype (format_data_t form, int argc, char *argv[]); ++ ++#endif /* !IFCONFIG_SYSTEM_HURD_H */ +-- +2.23.0.rc1.170.gbd704faa3e + +From 589dab9c7d3119da82837dabae34c8a3d16cbe49 Mon Sep 17 00:00:00 2001 +From: Mats Erik Andersson <gnu@gisladisker.se> +Date: Thu, 30 Jul 2015 01:06:42 +0200 +Subject: [PATCH 07/35] ifconfig: Hardware detection in GNU/Hurd. + +A work-around needed to distinguish hardware type. +--- + ChangeLog | 10 ++++++++++ + ifconfig/system/hurd.c | 19 ++++++++++++------- + 2 files changed, 22 insertions(+), 7 deletions(-) + +diff --git a/ifconfig/system/hurd.c b/ifconfig/system/hurd.c +index 3bd19775..b6261a00 100644 +--- a/ifconfig/system/hurd.c ++++ b/ifconfig/system/hurd.c +@@ -175,6 +175,16 @@ print_hwaddr_ether (format_data_t form _GL_UNUSED_PARAMETER, + had_output = 1; + } + ++/* GNU/Hurd and Mach are using a mixture of BSD definitions ++ * and GNU/Linux interface headers, which in this situation ++ * means that sa_family_t is an unsigned char, from BSD, while ++ * all ARPHRD_* come from GNU/Linux and are thus 16 bits wide. ++ * We must account for this. The following bitmask will ++ * adapt to any future change! ++ */ ++ ++#define _ARP_MASK ((sizeof (sa_family_t) == 1) ? 0xff : 0xffff) ++ + struct arphrd_symbol + { + const char *name; +@@ -184,16 +194,11 @@ struct arphrd_symbol + } arphrd_symbols[] = + { + #ifdef ARPHRD_ETHER /* Ethernet 10/100Mbps. */ +- { "ETHER", "Ethernet", ARPHRD_ETHER, print_hwaddr_ether}, ++ { "ETHER", "Ethernet", ARPHRD_ETHER & _ARP_MASK, print_hwaddr_ether}, + #endif + #ifdef ARPHRD_LOOPBACK /* Loopback device. */ +- { "LOOPBACK", "Local Loopback", ARPHRD_LOOPBACK, NULL}, ++ { "LOOPBACK", "Local Loopback", ARPHRD_LOOPBACK & _ARP_MASK, NULL}, + #endif +- /* XXX: The image debian-hurd-20150424 returns the value 4 +- instead of expected ARPHRD_LOOPBACK. This has been +- discussed in the list debian-hurd, where I was asked +- to resist the temptation of a work around! +- */ + { NULL, NULL, 0, NULL} + }; + +-- +2.23.0.rc1.170.gbd704faa3e + +From d379784b4461d17b2536effd1b52bae21cd28a32 Mon Sep 17 00:00:00 2001 +From: Guillem Jover <guillem@hadrons.org> +Date: Fri, 16 Aug 2019 00:34:03 +0200 +Subject: [PATCH 35/35] telnet: Several ioctls have been disabled in the Hurd's + glibc + +But not the related option macros. inetutils uses those macros to decide +whether the ioctls are available, so it is FTBFS now. The Hurd's glibc +is being fixed, but we'll use this for now to get the builds going. +--- + telnet/sys_bsd.c | 7 ++++++- + 1 file changed, 6 insertions(+), 1 deletion(-) + +diff --git a/telnet/sys_bsd.c b/telnet/sys_bsd.c +index 662536ab..5eb35cb5 100644 +--- a/telnet/sys_bsd.c ++++ b/telnet/sys_bsd.c +@@ -63,6 +63,7 @@ + #include <errno.h> + #include <arpa/telnet.h> + #include <sys/select.h> ++#include <sys/ioctl.h> + #include <unused-parameter.h> + + #include "ring.h" +@@ -157,7 +158,7 @@ TerminalRead (char *buf, int n) + int + TerminalAutoFlush (void) + { +-#if defined LNOFLSH ++#if defined TIOCLGET && defined LNOFLSH + int flush; + + ioctl (0, TIOCLGET, (char *) &flush); +@@ -260,7 +261,9 @@ TerminalSaveState (void) + ioctl (0, TIOCGETP, (char *) &ottyb); + ioctl (0, TIOCGETC, (char *) &otc); + ioctl (0, TIOCGLTC, (char *) &oltc); ++#ifdef TIOCLGET + ioctl (0, TIOCLGET, (char *) &olmode); ++#endif + + ntc = otc; + nltc = oltc; +@@ -755,7 +758,9 @@ TerminalNewMode (register int f) + #endif + } + #ifndef USE_TERMIO ++#ifdef TIOCLSET + ioctl (tin, TIOCLSET, (char *) &lmode); ++#endif + ioctl (tin, TIOCSLTC, (char *) <c); + ioctl (tin, TIOCSETC, (char *) &tc); + ioctl (tin, TIOCSETN, (char *) &sb); +-- +2.23.0.rc1.170.gbd704faa3e + diff --git a/gnu/packages/patches/jbig2dec-ignore-testtest.patch b/gnu/packages/patches/jbig2dec-ignore-testtest.patch deleted file mode 100644 index 7c80c545e9..0000000000 --- a/gnu/packages/patches/jbig2dec-ignore-testtest.patch +++ /dev/null @@ -1,16 +0,0 @@ -Do not run the test 'test_jbig2dec.py'. It doesn't seem to do anything -and reports failure. TODO: Actually fix the test instead of ignoring it. - -diff --git a/Makefile.in b/Makefile.in -index 63982d4..8af1d61 100644 ---- a/Makefile.in -+++ b/Makefile.in -@@ -93,7 +93,7 @@ host_triplet = @host@ - bin_PROGRAMS = jbig2dec$(EXEEXT) - noinst_PROGRAMS = test_sha1$(EXEEXT) test_huffman$(EXEEXT) \ - test_arith$(EXEEXT) --TESTS = test_sha1$(EXEEXT) test_jbig2dec.py test_huffman$(EXEEXT) \ -+TESTS = test_sha1$(EXEEXT) test_huffman$(EXEEXT) \ - test_arith$(EXEEXT) - subdir = . - ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 diff --git a/gnu/packages/patches/julia-SOURCE_DATE_EPOCH-mtime.patch b/gnu/packages/patches/julia-SOURCE_DATE_EPOCH-mtime.patch index 32dfd7b856..b60f284923 100644 --- a/gnu/packages/patches/julia-SOURCE_DATE_EPOCH-mtime.patch +++ b/gnu/packages/patches/julia-SOURCE_DATE_EPOCH-mtime.patch @@ -1,28 +1,22 @@ ---- /dev/null -+++ b/gnu/packages/patches/julia-SOURCE_DATE_EPOCH-mtime.patch -@@ -0,0 +1,22 @@ -+Fix one of upstream non-determinism, tracked here: -+ -+https://github.com/JuliaLang/julia/issues/34115 -+https://github.com/JuliaLang/julia/issues/25900 -+ -+ -+Patch by Nicoló Balzarotti <nicolo@nixo.xyz>. -+ -+--- a/base/loading.jl -++++ b/base/loading.jl -+@@ -807,7 +807,10 @@ -+ path = normpath(joinpath(dirname(prev), _path)) -+ end -+ if _track_dependencies[] -+- push!(_require_dependencies, (mod, path, mtime(path))) -++ push!(_require_dependencies, -++ (mod, path, -++ haskey(ENV, "SOURCE_DATE_EPOCH") ? -++ parse(Float64, ENV["SOURCE_DATE_EPOCH"]) : mtime(path))) -+ end -+ return path, prev -+ end --- -2.26.0 +Fix one of upstream non-determinism, tracked here: +https://github.com/JuliaLang/julia/issues/34115 +https://github.com/JuliaLang/julia/issues/25900 + + +Patch by Nicoló Balzarotti <nicolo@nixo.xyz>. + +--- a/base/loading.jl ++++ b/base/loading.jl +@@ -807,7 +807,10 @@ + path = normpath(joinpath(dirname(prev), _path)) + end + if _track_dependencies[] +- push!(_require_dependencies, (mod, path, mtime(path))) ++ push!(_require_dependencies, ++ (mod, path, ++ haskey(ENV, "SOURCE_DATE_EPOCH") ? ++ parse(Float64, ENV["SOURCE_DATE_EPOCH"]) : mtime(path))) + end + return path, prev + end diff --git a/gnu/packages/patches/less-hurd-path-max.patch b/gnu/packages/patches/less-hurd-path-max.patch new file mode 100644 index 0000000000..4d23a08788 --- /dev/null +++ b/gnu/packages/patches/less-hurd-path-max.patch @@ -0,0 +1,36 @@ +Avoid usage of PATH_MAX. + +Submitted to bug-less@gnu.org. + +From ef652341ed8b2c14ac40312ccd4ed329cb69fd0c Mon Sep 17 00:00:00 2001 +From: Jan Nieuwenhuizen <janneke@gnu.org> +Date: Sat, 7 Mar 2020 14:57:19 +0100 +Subject: [PATCH] Avoid usage of PATH_MAX. + +* filename.c (lrealpath): Have realpath allocate the buffer. Fixes +compilation on the Hurd and avoids possible buffer overflow on other +systems. +--- + filename.c | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +diff --git a/filename.c b/filename.c +index e420837..faa71b0 100644 +--- a/filename.c ++++ b/filename.c +@@ -795,9 +795,9 @@ lrealpath(path) + char *path; + { + #if HAVE_REALPATH +- char rpath[PATH_MAX]; +- if (realpath(path, rpath) != NULL) +- return (save(rpath)); ++ char *rpath = NULL; ++ if ((rpath = realpath(path, rpath)) != NULL) ++ return (rpath); + #endif + return (save(path)); + } +-- +2.24.0 + diff --git a/gnu/packages/patches/libffi-3.2.1-complex-alpha.patch b/gnu/packages/patches/libffi-3.2.1-complex-alpha.patch deleted file mode 100644 index ebbc0635a5..0000000000 --- a/gnu/packages/patches/libffi-3.2.1-complex-alpha.patch +++ /dev/null @@ -1,28 +0,0 @@ -The patch fixes build failure of form: - ../src/alpha/osf.S:298:2: error: #error "osf.S out of sync with ffi.h" -Upstream fixed the bug in a more invasive way -but didn't have releases since 3.2.1. - -The patch is taken from Gentoo: -https://gitweb.gentoo.org/repo/gentoo.git/tree/dev-libs/libffi/files/libffi-3.2.1-complex_alpha.patch - ---- libffi-3.2.1/src/alpha/osf.S 2015-01-16 10:46:15.000000000 +0100 -+++ libffi-3.2.1/src/alpha/osf.S 2015-01-16 10:46:24.000000000 +0100 -@@ -279,6 +279,7 @@ - .gprel32 $load_64 # FFI_TYPE_SINT64 - .gprel32 $load_none # FFI_TYPE_STRUCT - .gprel32 $load_64 # FFI_TYPE_POINTER -+ .gprel32 $load_none # FFI_TYPE_COMPLEX - - /* Assert that the table above is in sync with ffi.h. */ - -@@ -294,7 +295,8 @@ - || FFI_TYPE_SINT64 != 12 \ - || FFI_TYPE_STRUCT != 13 \ - || FFI_TYPE_POINTER != 14 \ -- || FFI_TYPE_LAST != 14 -+ || FFI_TYPE_COMPLEX != 15 \ -+ || FFI_TYPE_LAST != 15 - #error "osf.S out of sync with ffi.h" - #endif - diff --git a/gnu/packages/patches/libgpg-error-gawk-compat.patch b/gnu/packages/patches/libgpg-error-gawk-compat.patch deleted file mode 100644 index 85477b0be6..0000000000 --- a/gnu/packages/patches/libgpg-error-gawk-compat.patch +++ /dev/null @@ -1,155 +0,0 @@ -From 7865041c77f4f7005282f10f9b6666b19072fbdf Mon Sep 17 00:00:00 2001 -From: NIIBE Yutaka <gniibe@fsij.org> -Date: Mon, 15 Apr 2019 15:10:44 +0900 -Subject: [PATCH] awk: Prepare for Gawk 5.0. - -* src/Makefile.am: Use pkg_namespace (instead of namespace). -* src/mkerrnos.awk: Likewise. -* lang/cl/mkerrcodes.awk: Don't escape # in regexp. -* src/mkerrcodes.awk, src/mkerrcodes1.awk, src/mkerrcodes2.awk: Ditto. - --- - -In Gawk 5.0, regexp routines are replaced by Gnulib implementation, -which only allows escaping specific characters. - -GnuPG-bug-id: 4459 -Reported-by: Marius Schamschula -Signed-off-by: NIIBE Yutaka <gniibe@fsij.org> ---- - lang/cl/mkerrcodes.awk | 2 +- - src/Makefile.am | 2 +- - src/mkerrcodes.awk | 2 +- - src/mkerrcodes1.awk | 2 +- - src/mkerrcodes2.awk | 2 +- - src/mkerrnos.awk | 2 +- - src/mkstrtable.awk | 10 +++++----- - 7 files changed, 11 insertions(+), 11 deletions(-) - -diff --git a/lang/cl/mkerrcodes.awk b/lang/cl/mkerrcodes.awk -index ae29043..9a1fc18 100644 ---- a/lang/cl/mkerrcodes.awk -+++ b/lang/cl/mkerrcodes.awk -@@ -122,7 +122,7 @@ header { - } - - !header { -- sub (/\#.+/, ""); -+ sub (/#.+/, ""); - sub (/[ ]+$/, ""); # Strip trailing space and tab characters. - - if (/^$/) -diff --git a/src/Makefile.am b/src/Makefile.am -index ce1b882..f2590cb 100644 ---- a/src/Makefile.am -+++ b/src/Makefile.am -@@ -293,7 +293,7 @@ code-from-errno.h: mkerrcodes$(EXEEXT_FOR_BUILD) Makefile - - errnos-sym.h: Makefile mkstrtable.awk errnos.in - $(AWK) -f $(srcdir)/mkstrtable.awk -v textidx=2 -v nogettext=1 \ -- -v prefix=GPG_ERR_ -v namespace=errnos_ \ -+ -v prefix=GPG_ERR_ -v pkg_namespace=errnos_ \ - $(srcdir)/errnos.in >$@ - - -diff --git a/src/mkerrcodes.awk b/src/mkerrcodes.awk -index 46d436c..e9c857c 100644 ---- a/src/mkerrcodes.awk -+++ b/src/mkerrcodes.awk -@@ -85,7 +85,7 @@ header { - } - - !header { -- sub (/\#.+/, ""); -+ sub (/#.+/, ""); - sub (/[ ]+$/, ""); # Strip trailing space and tab characters. - - if (/^$/) -diff --git a/src/mkerrcodes1.awk b/src/mkerrcodes1.awk -index a771a73..4578e29 100644 ---- a/src/mkerrcodes1.awk -+++ b/src/mkerrcodes1.awk -@@ -81,7 +81,7 @@ header { - } - - !header { -- sub (/\#.+/, ""); -+ sub (/#.+/, ""); - sub (/[ ]+$/, ""); # Strip trailing space and tab characters. - - if (/^$/) -diff --git a/src/mkerrcodes2.awk b/src/mkerrcodes2.awk -index ea58503..188f7a4 100644 ---- a/src/mkerrcodes2.awk -+++ b/src/mkerrcodes2.awk -@@ -91,7 +91,7 @@ header { - } - - !header { -- sub (/\#.+/, ""); -+ sub (/#.+/, ""); - sub (/[ ]+$/, ""); # Strip trailing space and tab characters. - - if (/^$/) -diff --git a/src/mkerrnos.awk b/src/mkerrnos.awk -index f79df66..15b1aad 100644 ---- a/src/mkerrnos.awk -+++ b/src/mkerrnos.awk -@@ -83,7 +83,7 @@ header { - } - - !header { -- sub (/\#.+/, ""); -+ sub (/#.+/, ""); - sub (/[ ]+$/, ""); # Strip trailing space and tab characters. - - if (/^$/) -diff --git a/src/mkstrtable.awk b/src/mkstrtable.awk -index c9de9c1..285e45f 100644 ---- a/src/mkstrtable.awk -+++ b/src/mkstrtable.awk -@@ -77,7 +77,7 @@ - # - # The variable prefix can be used to prepend a string to each message. - # --# The variable namespace can be used to prepend a string to each -+# The variable pkg_namespace can be used to prepend a string to each - # variable and macro name. - - BEGIN { -@@ -102,7 +102,7 @@ header { - print "/* The purpose of this complex string table is to produce"; - print " optimal code with a minimum of relocations. */"; - print ""; -- print "static const char " namespace "msgstr[] = "; -+ print "static const char " pkg_namespace "msgstr[] = "; - header = 0; - } - else -@@ -110,7 +110,7 @@ header { - } - - !header { -- sub (/\#.+/, ""); -+ sub (/#.+/, ""); - sub (/[ ]+$/, ""); # Strip trailing space and tab characters. - - if (/^$/) -@@ -150,7 +150,7 @@ END { - else - print " gettext_noop (\"" last_msgstr "\");"; - print ""; -- print "static const int " namespace "msgidx[] ="; -+ print "static const int " pkg_namespace "msgidx[] ="; - print " {"; - for (i = 0; i < coded_msgs; i++) - print " " pos[i] ","; -@@ -158,7 +158,7 @@ END { - print " };"; - print ""; - print "static GPG_ERR_INLINE int"; -- print namespace "msgidxof (int code)"; -+ print pkg_namespace "msgidxof (int code)"; - print "{"; - print " return (0 ? 0"; - diff --git a/gnu/packages/patches/libjpeg-turbo-CVE-2019-2201.patch b/gnu/packages/patches/libjpeg-turbo-CVE-2019-2201.patch deleted file mode 100644 index 35f2bf5963..0000000000 --- a/gnu/packages/patches/libjpeg-turbo-CVE-2019-2201.patch +++ /dev/null @@ -1,31 +0,0 @@ -Fix integer overflow which can potentially lead to RCE. - -https://www.openwall.com/lists/oss-security/2019/11/11/1 -https://nvd.nist.gov/vuln/detail/CVE-2019-2201 - -The problem was partially fixed in 2.0.3. This patch is a follow-up. -https://github.com/libjpeg-turbo/libjpeg-turbo/issues/388 -https://github.com/libjpeg-turbo/libjpeg-turbo/commit/c30b1e72dac76343ef9029833d1561de07d29bad - -diff --git a/tjbench.c b/tjbench.c -index a7d397318..13a5bde62 100644 ---- a/tjbench.c -+++ b/tjbench.c -@@ -171,7 +171,7 @@ static int decomp(unsigned char *srcBuf, unsigned char **jpegBuf, - } - /* Set the destination buffer to gray so we know whether the decompressor - attempted to write to it */ -- memset(dstBuf, 127, pitch * scaledh); -+ memset(dstBuf, 127, (size_t)pitch * scaledh); - - if (doYUV) { - int width = doTile ? tilew : scaledw; -@@ -193,7 +193,7 @@ static int decomp(unsigned char *srcBuf, unsigned char **jpegBuf, - double start = getTime(); - - for (row = 0, dstPtr = dstBuf; row < ntilesh; -- row++, dstPtr += pitch * tileh) { -+ row++, dstPtr += (size_t)pitch * tileh) { - for (col = 0, dstPtr2 = dstPtr; col < ntilesw; - col++, tile++, dstPtr2 += ps * tilew) { - int width = doTile ? min(tilew, w - col * tilew) : scaledw; diff --git a/gnu/packages/patches/libreoffice-poppler-compat.patch b/gnu/packages/patches/libreoffice-poppler-compat.patch new file mode 100644 index 0000000000..8dc0b60a12 --- /dev/null +++ b/gnu/packages/patches/libreoffice-poppler-compat.patch @@ -0,0 +1,19 @@ +Fix type mismatch with Poppler 0.86. + +Taken from Arch Linux: +https://git.archlinux.org/svntogit/packages.git/tree/trunk/libreoffice-poppler-0.86.patch?h=packages/libreoffice-fresh + +diff --git a/sdext/source/pdfimport/xpdfwrapper/pdfioutdev_gpl.cxx b/sdext/source/pdfimport/xpdfwrapper/pdfioutdev_gpl.cxx +--- a/sdext/source/pdfimport/xpdfwrapper/pdfioutdev_gpl.cxx ++++ b/sdext/source/pdfimport/xpdfwrapper/pdfioutdev_gpl.cxx +@@ -563,7 +563,9 @@ void PDFOutDev::processLink(Link* link, Catalog*) + if (!(pAction && pAction->getKind() == actionURI)) + return; + +-#if POPPLER_CHECK_VERSION(0, 72, 0) ++#if POPPLER_CHECK_VERSION(0, 86, 0) ++ const char* pURI = static_cast<LinkURI*>(pAction)->getURI().c_str(); ++#elif POPPLER_CHECK_VERSION(0, 72, 0) + const char* pURI = static_cast<LinkURI*>(pAction)->getURI()->c_str(); + #else + const char* pURI = static_cast<LinkURI*>(pAction)->getURI()->getCString(); diff --git a/gnu/packages/patches/libtirpc-hurd-client.patch b/gnu/packages/patches/libtirpc-hurd-client.patch new file mode 100644 index 0000000000..526ad262d2 --- /dev/null +++ b/gnu/packages/patches/libtirpc-hurd-client.patch @@ -0,0 +1,50 @@ +Taken from https://salsa.debian.org/debian/libtirpc/-/raw/master/debian/patches/06-hurd-client-port.diff + +Description: Fix client code for hurd, avoiding malloc overflow + When trying to setup a inet connection, it happens the following: + - in libtirp, src/clnt_vc.c, clnt_vc_create gets called + - when trying to allocate vc_fd_locks, __rpc_dtbsize() is used as size + for that array of fd locks + - __rpc_dtbsize(), in src/rpc_generic.c, queries using rlimit the + maximum (rlim_max) number of file descriptors (RLIMIT_NOFILE): + - on Linux, the default is { rlim_cur = 1024, rlim_max = 4096 } + - on kFreeBSD, the default is { rlim_cur = 1024, rlim_max = 1024 } + - on Hurd, the default is { rlim_cur = 1024, rlim_max = RLIM_INFINITY } + meaning that on Hurd the memory allocation fails (as + __rpc_dtbsize() * sizeof(int) overflows and is negative) + + Change libtiprc so __rpc_dtbsize falls back on rlim_cur if rlim_max + is unlimited. + + This patch fixes the client connection using inet sockets; local unix + sockets are not working, for two reasons so far: + - getpeername on them gives EOPNOTSUPP + - SO_REUSEADDR is not implemented for them +Author: Pino Toscano <pino@debian.org> + +Bug-Debian: http://bugs.debian.org/739674 +Forwarded: no +Reviewed-By: Petter Reinholdtsen +Last-Update: 2014-03-03 + +--- a/src/rpc_generic.c ++++ b/src/rpc_generic.c +@@ -107,12 +107,17 @@ + { + static int tbsize; + struct rlimit rl; ++ rlim_t lim; + + if (tbsize) { + return (tbsize); + } + if (getrlimit(RLIMIT_NOFILE, &rl) == 0) { +- return (tbsize = (int)rl.rlim_max); ++ lim = rl.rlim_max; ++ if (lim == RLIM_INFINITY) { ++ lim = rl.rlim_cur; ++ } ++ return (tbsize = (int)lim); + } + /* + * Something wrong. I'll try to save face by returning a diff --git a/gnu/packages/patches/libtirpc-hurd.patch b/gnu/packages/patches/libtirpc-hurd.patch new file mode 100644 index 0000000000..cd625d696f --- /dev/null +++ b/gnu/packages/patches/libtirpc-hurd.patch @@ -0,0 +1,172 @@ +This is a combination of two patches: + +1) Taken from https://salsa.debian.org/debian/libtirpc/-/raw/master/debian/patches/03-kfreebsd.diff + +Description: Fix build on non Linux architectures +Author: Andreas Beckmann <anbe@debian.org> +Last-Update: 2019-09-01 + +2) Taken from https://salsa.debian.org/debian/libtirpc/-/raw/master/debian/patches/05-hurd-port.diff + +Description: Get source building on Hurd + - Look for <sys/user.h> before using it. + - Define MAXHOSTNAMELEN to 64 if missing. + - Bind sockets on Hurd like on Linux. +Author: Petter Reinholdtsen <pere@hungry.com> + +--- a/src/svc_dg.c ++++ b/src/svc_dg.c +@@ -648,6 +648,7 @@ + void + svc_dg_enable_pktinfo(int fd, const struct __rpc_sockinfo *si) + { ++#ifdef __linux__ + int val = 1; + + switch (si->si_af) { +@@ -660,6 +661,7 @@ + break; + #endif + } ++#endif + } + + /* +@@ -670,6 +672,7 @@ + int + svc_dg_valid_pktinfo(struct msghdr *msg) + { ++#ifdef __linux__ + struct cmsghdr *cmsg; + + if (!msg->msg_name) +@@ -716,4 +719,7 @@ + } + + return 1; ++#else ++ return 0; ++#endif + } +--- a/src/clnt_vc.c ++++ b/src/clnt_vc.c +@@ -71,10 +71,12 @@ + #define MCALL_MSG_SIZE 24 + + #define CMGROUP_MAX 16 +-#define SCM_CREDS 0x03 /* process creds (struct cmsgcred) */ + + #undef rpc_createerr /* make it clear it is a thread safe variable */ + ++#ifndef SCM_CREDS ++#define SCM_CREDS 0x03 /* process creds (struct cmsgcred) */ ++ + /* + * Credentials structure, used to verify the identity of a peer + * process that has sent us a message. This is allocated by the +@@ -90,6 +92,7 @@ + short cmcred_ngroups; /* number or groups */ + gid_t cmcred_groups[CMGROUP_MAX]; /* groups */ + }; ++#endif + + struct cmessage { + struct cmsghdr cmsg; +--- a/src/getpeereid.c ++++ b/src/getpeereid.c +@@ -25,9 +25,14 @@ + */ + + ++#include "config.h" ++ + #include <sys/param.h> + #include <sys/socket.h> + #include <sys/un.h> ++#ifdef HAVE_SYS_USER_H ++# include <sys/user.h> ++#endif /* HAVE_SYS_USER_H */ + + #include <errno.h> + #include <unistd.h> +--- a/src/getpeereid.c ++++ b/src/getpeereid.c +@@ -35,12 +36,25 @@ + int + getpeereid(int s, uid_t *euid, gid_t *egid) + { ++#ifndef HAVE_SYS_USER_H ++ return(-1); ++#else ++#ifdef XUCRED_VERSION ++ struct xucred uc; ++#define uid cr_uid ++#define gid cr_gid ++#else + struct ucred uc; ++#endif + socklen_t uclen; + int error; + + uclen = sizeof(uc); ++#ifdef XUCRED_VERSION ++ error = getsockopt(s, 0, LOCAL_PEERCRED, &uc, &uclen); ++#else + error = getsockopt(s, SOL_SOCKET, SO_PEERCRED, &uc, &uclen); /* SCM_CREDENTIALS */ ++#endif + if (error != 0) + return (error); + // if (uc.cr_version != XUCRED_VERSION) +@@ -59,4 +66,5 @@ + *euid = uc.uid; + *egid = uc.gid; + return (0); ++#endif /* HAVE_SYS_USER_H */ + } +--- a/tirpc/reentrant.h ++++ b/tirpc/reentrant.h +@@ -36,7 +36,7 @@ + * These definitions are only guaranteed to be valid on Linux. + */ + +-#if defined(__linux__) ++#if defined(__linux__) || defined(__GLIBC__) + + #include <pthread.h> + +--- a/configure.ac ++++ b/configure.ac +@@ -93,7 +93,7 @@ + AC_PROG_LIBTOOL + AC_HEADER_DIRENT + AC_PREFIX_DEFAULT(/usr) +-AC_CHECK_HEADERS([arpa/inet.h fcntl.h libintl.h limits.h locale.h netdb.h netinet/in.h stddef.h stdint.h stdlib.h string.h sys/ioctl.h sys/param.h sys/socket.h sys/time.h syslog.h unistd.h features.h gssapi/gssapi_ext.h]) ++AC_CHECK_HEADERS([arpa/inet.h fcntl.h libintl.h limits.h locale.h netdb.h netinet/in.h stddef.h stdint.h stdlib.h string.h sys/ioctl.h sys/param.h sys/socket.h sys/time.h syslog.h unistd.h features.h gssapi/gssapi_ext.h sys/user.h]) + AC_CHECK_LIB([pthread], [pthread_create]) + AC_CHECK_FUNCS([getrpcbyname getrpcbynumber setrpcent endrpcent getrpcent]) + +--- a/src/auth_unix.c ++++ b/src/auth_unix.c +@@ -56,6 +56,11 @@ + #include <rpc/auth.h> + #include <rpc/auth_unix.h> + ++/* Workaround for Hurd */ ++#ifndef MAXHOSTNAMELEN ++# define MAXHOSTNAMELEN 64 ++#endif ++ + /* auth_unix.c */ + static void authunix_nextverf (AUTH *); + static bool_t authunix_marshal (AUTH *, XDR *); +--- a/src/bindresvport.c ++++ b/src/bindresvport.c +@@ -64,7 +64,7 @@ + return bindresvport_sa(sd, (struct sockaddr *)sin); + } + +-#ifdef __linux__ ++#if defined(__linux__) || defined(__GNU__) + + #define STARTPORT 600 + #define LOWPORT 512 diff --git a/gnu/packages/patches/libxslt-generated-ids.patch b/gnu/packages/patches/libxslt-generated-ids.patch index 4273875c7c..1cd2363d6a 100644 --- a/gnu/packages/patches/libxslt-generated-ids.patch +++ b/gnu/packages/patches/libxslt-generated-ids.patch @@ -162,10 +162,10 @@ diff --git a/libxslt/xsltInternals.h b/libxslt/xsltInternals.h index 95e8fe6..8eedae4 100644 --- a/libxslt/xsltInternals.h +++ b/libxslt/xsltInternals.h -@@ -1786,6 +1786,8 @@ struct _xsltTransformContext { - int funcLevel; /* Needed to catch recursive functions issues */ - int maxTemplateDepth; +@@ -1782,6 +1782,8 @@ struct _xsltTransformContext { int maxTemplateVars; + unsigned long opLimit; + unsigned long opCount; + + unsigned long nextid;/* for generating stable ids */ }; diff --git a/gnu/packages/patches/linphoneqt-tabbutton.patch b/gnu/packages/patches/linphoneqt-tabbutton.patch new file mode 100644 index 0000000000..6b3214026e --- /dev/null +++ b/gnu/packages/patches/linphoneqt-tabbutton.patch @@ -0,0 +1,96 @@ +From ecaab0f73d0b74bbfbf150286305fa6e12970037 Mon Sep 17 00:00:00 2001 +From: Ronan Abhamon <ronan.abhamon@belledonne-communications.com> +Date: Fri, 19 Jan 2018 14:42:01 +0100 +Subject: [PATCH] fix(SettingsWindow): rename icon property of TabButton to + iconName (issue with Qt 5.10 and new icon property) + +--- + ui/modules/Common/Form/Tab/TabButton.qml | 8 ++++---- + ui/views/App/Settings/SettingsWindow.qml | 14 +++++++------- + 2 files changed, 11 insertions(+), 11 deletions(-) + +diff --git a/ui/modules/Common/Form/Tab/TabButton.qml b/ui/modules/Common/Form/Tab/TabButton.qml +index ad220ab2..a47bb20b 100644 +--- a/ui/modules/Common/Form/Tab/TabButton.qml ++++ b/ui/modules/Common/Form/Tab/TabButton.qml +@@ -12,8 +12,8 @@ Controls.TabButton { + + // --------------------------------------------------------------------------- + +- property string icon + property int iconSize: TabButtonStyle.icon.size ++ property string iconName + + readonly property bool _isSelected: parent.parent.currentItem === button + +@@ -66,9 +66,9 @@ Controls.TabButton { + Layout.leftMargin: TabButtonStyle.text.leftPadding + + icon: { +- var icon = button.icon +- return icon.length +- ? (icon + '_' + (button._isSelected ? 'selected' : 'normal')) ++ var iconName = button.iconName ++ return iconName.length ++ ? (iconName + '_' + (button._isSelected ? 'selected' : 'normal')) + : '' + } + iconSize: button.iconSize +diff --git a/ui/views/App/Settings/SettingsWindow.qml b/ui/views/App/Settings/SettingsWindow.qml +index b8f5a80f..58909544 100644 +--- a/ui/views/App/Settings/SettingsWindow.qml ++++ b/ui/views/App/Settings/SettingsWindow.qml +@@ -48,43 +48,43 @@ ApplicationWindow { + id: tabBar + + TabButton { +- icon: 'settings_sip_accounts' ++ iconName: 'settings_sip_accounts' + text: qsTr('sipAccountsTab') + width: implicitWidth + } + + TabButton { +- icon: 'settings_audio' ++ iconName: 'settings_audio' + text: qsTr('audioTab') + width: implicitWidth + } + + TabButton { +- icon: 'settings_video' ++ iconName: 'settings_video' + text: qsTr('videoTab') + width: implicitWidth + } + + TabButton { +- icon: 'settings_call' ++ iconName: 'settings_call' + text: qsTr('callsAndChatTab') + width: implicitWidth + } + + TabButton { +- icon: 'settings_network' ++ iconName: 'settings_network' + text: qsTr('networkTab') + width: implicitWidth + } + + TabButton { +- icon: 'settings_advanced' ++ iconName: 'settings_advanced' + text: qsTr('uiTab') + width: implicitWidth + } + + TabButton { +- icon: 'settings_advanced' ++ iconName: 'settings_advanced' + text: qsTr('uiAdvanced') + width: implicitWidth + } +-- +2.21.0 + diff --git a/gnu/packages/patches/llvm-for-extempore.patch b/gnu/packages/patches/llvm-for-extempore.patch deleted file mode 100644 index 614682c6cb..0000000000 --- a/gnu/packages/patches/llvm-for-extempore.patch +++ /dev/null @@ -1,118 +0,0 @@ -This patch to LLVM is required by the developers of the Extempore language. -The following explanation was posted to the extemporelang@googlegroups.com -mailing list: - -"There is an assumption in the parser that all definitions occur within the -same compilation unit - i.e. the parser has local state about what has been -parsed in this unit of work. Extempore obviously does lots of little units -rather than one big unit and this causes problems for named types that were -defined in another unit - which they always are. The patch simply checks the -current module to see if the type has been previously defined, and intervenes -appropriately if it has." - -Message-ID: <CAOjrPOqoreXuZo4ZpDBvHE7M_tgAR_V8Txq5JFjh1HnGRn2EsA@mail.gmail.com> - ---- llvm-3.7.1.src/include/llvm/MC/MCSectionCOFF.h 2015-04-11 12:11:45.000000000 +1000 -+++ llvm-3.7.1.src/include/llvm/MC/MCSectionCOFF.h 2015-09-14 09:22:56.000000000 +1000 -@@ -16,7 +16,6 @@ - - #include "llvm/ADT/StringRef.h" - #include "llvm/MC/MCSection.h" --#include "llvm/Support/COFF.h" - - namespace llvm { - class MCSymbol; - ---- llvm-3.7.1.src/lib/AsmParser/LLParser.cpp 2015-07-11 20:30:36.000000000 +1000 -+++ llvm-3.7.1.src/lib/AsmParser/LLParser.cpp 2015-09-14 09:20:57.000000000 +1000 -@@ -1754,8 +1754,14 @@ - // If the type hasn't been defined yet, create a forward definition and - // remember where that forward def'n was seen (in case it never is defined). - if (!Entry.first) { -- Entry.first = StructType::create(Context, Lex.getStrVal()); -- Entry.second = Lex.getLoc(); -+ // this here for extempore -+ if (M->getTypeByName(Lex.getStrVal())) { -+ Entry.first = M->getTypeByName(Lex.getStrVal()); -+ Entry.second = SMLoc(); -+ } else { -+ Entry.first = StructType::create(Context, Lex.getStrVal()); -+ Entry.second = Lex.getLoc(); -+ } - } - Result = Entry.first; - Lex.Lex(); - ---- llvm-3.7.1.src/lib/CodeGen/TargetLoweringObjectFileImpl.cpp 2015-07-01 05:10:31.000000000 +1000 -+++ llvm-3.7.1.src/lib/CodeGen/TargetLoweringObjectFileImpl.cpp 2015-09-14 09:23:40.000000000 +1000 -@@ -32,6 +32,7 @@ - #include "llvm/MC/MCStreamer.h" - #include "llvm/MC/MCSymbolELF.h" - #include "llvm/MC/MCValue.h" -+#include "llvm/Support/COFF.h" - #include "llvm/Support/Dwarf.h" - #include "llvm/Support/ELF.h" - #include "llvm/Support/ErrorHandling.h" - ---- llvm-3.7.1.src/lib/ExecutionEngine/MCJIT/MCJIT.cpp 2015-07-31 02:31:16.000000000 +1000 -+++ llvm-3.7.1.src/lib/ExecutionEngine/MCJIT/MCJIT.cpp 2015-09-14 09:21:28.000000000 +1000 -@@ -524,6 +524,17 @@ - rv.IntVal = APInt(32, PF(ArgValues[0].IntVal.getZExtValue())); - return rv; - } -+ if (FTy->getNumParams() == 1 && -+ RetTy->isVoidTy() && -+ FTy->getParamType(0)->isPointerTy()) { -+ GenericValue rv; -+ //void (*PF)(char *) = (void(*)(char *))(intptr_t)FPtr; -+ //printf("are symbols available: %d\n",isSymbolSearchingDisabled()); -+ void (*PF)(char *) = (void(*)(char *))FPtr; -+ char* mzone = (char*) GVTOP(ArgValues[0]); -+ PF(mzone); -+ return rv; -+ } - break; - } - } - ---- llvm-3.7.1.src/lib/MC/MCContext.cpp 2015-06-23 21:31:32.000000000 +1000 -+++ llvm-3.7.1.src/lib/MC/MCContext.cpp 2015-09-14 09:24:01.000000000 +1000 -@@ -23,6 +23,7 @@ - #include "llvm/MC/MCSymbolCOFF.h" - #include "llvm/MC/MCSymbolELF.h" - #include "llvm/MC/MCSymbolMachO.h" -+#include "llvm/Support/COFF.h" - #include "llvm/Support/ELF.h" - #include "llvm/Support/ErrorHandling.h" - #include "llvm/Support/FileSystem.h" - ---- llvm-3.7.1.src/lib/MC/MCObjectFileInfo.cpp 2015-06-25 10:28:42.000000000 +1000 -+++ llvm-3.7.1.src/lib/MC/MCObjectFileInfo.cpp 2015-09-14 09:24:17.000000000 +1000 -@@ -16,6 +16,7 @@ - #include "llvm/MC/MCSectionCOFF.h" - #include "llvm/MC/MCSectionELF.h" - #include "llvm/MC/MCSectionMachO.h" -+#include "llvm/Support/COFF.h" - using namespace llvm; - - static bool useCompactUnwind(const Triple &T) { - ---- llvm-3.7.1.src/lib/MC/MCSectionCOFF.cpp 2015-06-09 10:31:39.000000000 +1000 -+++ llvm-3.7.1.src/lib/MC/MCSectionCOFF.cpp 2015-09-14 09:24:25.000000000 +1000 -@@ -11,6 +11,7 @@ - #include "llvm/MC/MCAsmInfo.h" - #include "llvm/MC/MCContext.h" - #include "llvm/MC/MCSymbol.h" -+#include "llvm/Support/COFF.h" - #include "llvm/Support/raw_ostream.h" - using namespace llvm; - ---- llvm-3.7.1.src/lib/Target/X86/X86TargetObjectFile.cpp 2015-06-27 04:55:48.000000000 +1000 -+++ llvm-3.7.1.src/lib/Target/X86/X86TargetObjectFile.cpp 2015-09-14 09:25:03.000000000 +1000 -@@ -16,6 +16,7 @@ - #include "llvm/MC/MCSectionCOFF.h" - #include "llvm/MC/MCSectionELF.h" - #include "llvm/MC/MCValue.h" -+#include "llvm/Support/COFF.h" - #include "llvm/Support/Dwarf.h" - #include "llvm/Target/TargetLowering.h" diff --git a/gnu/packages/patches/make-glibc-compat.patch b/gnu/packages/patches/make-glibc-compat.patch deleted file mode 100644 index 9ce7f2b5bf..0000000000 --- a/gnu/packages/patches/make-glibc-compat.patch +++ /dev/null @@ -1,52 +0,0 @@ -Work with the new glob interface in glibc 2.27. - -Taken from this upstream commit: -https://git.savannah.gnu.org/cgit/make.git/commit/?id=193f1e81edd6b1b56b0eb0ff8aa4b41c7b4257b4 - -diff --git a/dir.c b/dir.c -index adbb8a9..c343e4c 100644 ---- a/dir.c -+++ b/dir.c -@@ -1299,15 +1299,40 @@ local_stat (const char *path, struct stat *buf) - } - #endif - -+/* Similarly for lstat. */ -+#if !defined(lstat) && !defined(WINDOWS32) || defined(VMS) -+# ifndef VMS -+# ifndef HAVE_SYS_STAT_H -+int lstat (const char *path, struct stat *sbuf); -+# endif -+# else -+ /* We are done with the fake lstat. Go back to the real lstat */ -+# ifdef lstat -+# undef lstat -+# endif -+# endif -+# define local_lstat lstat -+#elif defined(WINDOWS32) -+/* Windows doesn't support lstat(). */ -+# define local_lstat local_stat -+#else -+static int -+local_lstat (const char *path, struct stat *buf) -+{ -+ int e; -+ EINTRLOOP (e, lstat (path, buf)); -+ return e; -+} -+#endif -+ - void - dir_setup_glob (glob_t *gl) - { - gl->gl_opendir = open_dirstream; - gl->gl_readdir = read_dirstream; - gl->gl_closedir = free; -+ gl->gl_lstat = local_lstat; - gl->gl_stat = local_stat; -- /* We don't bother setting gl_lstat, since glob never calls it. -- The slot is only there for compatibility with 4.4 BSD. */ - } - - void diff --git a/gnu/packages/patches/make-impure-dirs.patch b/gnu/packages/patches/make-impure-dirs.patch index 83a5fbe3a5..89595b06ec 100644 --- a/gnu/packages/patches/make-impure-dirs.patch +++ b/gnu/packages/patches/make-impure-dirs.patch @@ -4,9 +4,9 @@ don't look in /usr/include and friends. Patch from Nixpkgs, by Eelco Dolstra. -diff -rc make-3.81-orig/read.c make-3.81/read.c -*** make-3.81-orig/read.c 2006-03-17 15:24:20.000000000 +0100 ---- make-3.81/read.c 2007-05-24 17:16:31.000000000 +0200 +diff -rc make-3.81-orig/src/read.c make-3.81/src/read.c +*** make-3.81-orig/src/read.c 2006-03-17 15:24:20.000000000 +0100 +--- make-3.81/src/read.c 2007-05-24 17:16:31.000000000 +0200 *************** *** 99,107 **** --- 99,109 ---- @@ -21,9 +21,9 @@ diff -rc make-3.81-orig/read.c make-3.81/read.c #endif 0 }; -diff -rc make-3.81-orig/remake.c make-3.81/remake.c -*** make-3.81-orig/remake.c 2006-03-20 03:36:37.000000000 +0100 ---- make-3.81/remake.c 2007-05-24 17:06:54.000000000 +0200 +diff -rc make-3.81-orig/src/remake.c make-3.81/src/remake.c +*** make-3.81-orig/src/remake.c 2006-03-20 03:36:37.000000000 +0100 +--- make-3.81/src/remake.c 2007-05-24 17:06:54.000000000 +0200 *************** *** 1452,1460 **** --- 1452,1462 ---- diff --git a/gnu/packages/patches/mit-krb5-hurd.patch b/gnu/packages/patches/mit-krb5-hurd.patch new file mode 100644 index 0000000000..d4962b1e60 --- /dev/null +++ b/gnu/packages/patches/mit-krb5-hurd.patch @@ -0,0 +1,165 @@ +Avoid using MAXPATHLEN and MAXHOSTLEN on the Hurd. + +Taken from https://salsa.debian.org/debian/krb5/-/blob/master/debian/patches/debian-local/0001-Debian-HURD-compatibility.patch + +From: Sam Hartman <hartmans@debian.org> +Date: Mon, 26 Dec 2011 18:05:13 -0500 +Subject: Debian: HURD compatibility + +HURD has no MAXPATHLEN or MAXHOSTLEN. + +Patch-Category: debian-local +--- + src/clients/ksu/ksu.h | 4 ++++ + src/include/k5-int.h | 3 +++ + src/kadmin/ktutil/ktutil_funcs.c | 4 ++++ + src/kprop/kprop_util.c | 4 ++++ + src/lib/gssapi/spnego/spnego_mech.c | 3 +++ + src/lib/krb5/os/sn2princ.c | 4 ++++ + src/plugins/kdb/db2/libdb2/include/db-int.h | 4 ++++ + src/tests/resolve/resolve.c | 4 ++++ + 8 files changed, 30 insertions(+) + +$ diff -u krb5-1.18/src/util/ss/help.c.orig krb5-1.18/src/util/ss/help.c +--- krb5-1.18/src/util/ss/help.c.orig 2020-03-07 23:25:52.712418587 +0100 ++++ krb5-1.18/src/util/ss/help.c 2020-03-07 23:26:25.764941122 +0100 +@@ -6,6 +6,9 @@ + */ + + #include <sys/param.h> ++#ifndef MAXPATHLEN ++# define MAXPATHLEN 4096 ++#endif + #include <sys/types.h> + #include <errno.h> + #include <sys/file.h> +$ diff -u krb5-1.18/src/lib/krb5/os/hostrealm.c.orig krb5-1.18/src/lib/krb5/os/hostrealm.c +--- krb5-1.18/src/lib/krb5/os/hostrealm.c.orig 2020-03-07 23:33:19.931420994 +0100 ++++ krb5-1.18/src/lib/krb5/os/hostrealm.c 2020-03-07 23:33:58.628026424 +0100 +@@ -42,6 +42,10 @@ + #endif + #endif + ++#ifndef MAXHOSTNAMELEN ++#define MAXHOSTNAMELEN 256 ++#endif ++ + struct hostrealm_module_handle { + struct krb5_hostrealm_vtable_st vt; + krb5_hostrealm_moddata data; +diff --git a/src/clients/ksu/ksu.h b/src/clients/ksu/ksu.h +index 3bf0bd4..f680b33 100644 +--- a/src/clients/ksu/ksu.h ++++ b/src/clients/ksu/ksu.h +@@ -56,6 +56,10 @@ + #define MAX_CMD 2048 /* this is temp, should use realloc instead, + as done in most of the code */ + ++#ifndef MAXPATHLEN ++# define MAXPATHLEN 4096 ++#endif ++ + + extern int optind; + extern char * optarg; +diff --git a/src/include/k5-int.h b/src/include/k5-int.h +index 6522422..e4f1678 100644 +--- a/src/include/k5-int.h ++++ b/src/include/k5-int.h +@@ -589,6 +589,9 @@ extern char *strdup (const char *); + #ifdef HAVE_SYS_PARAM_H + #include <sys/param.h> /* MAXPATHLEN */ + #endif ++#ifndef MAXPATHLEN ++# define MAXPATHLEN 4096 ++#endif + + #ifdef HAVE_SYS_FILE_H + #include <sys/file.h> /* prototypes for file-related +diff --git a/src/kadmin/ktutil/ktutil_funcs.c b/src/kadmin/ktutil/ktutil_funcs.c +index 6d119a2..fb7fa22 100644 +--- a/src/kadmin/ktutil/ktutil_funcs.c ++++ b/src/kadmin/ktutil/ktutil_funcs.c +@@ -34,6 +34,10 @@ + #include <string.h> + #include <ctype.h> + ++#ifndef MAXPATHLEN ++# define MAXPATHLEN 4096 ++#endif ++ + /* + * Free a kt_list + */ +diff --git a/src/kprop/kprop_util.c b/src/kprop/kprop_util.c +index c32d174..d72ab18 100644 +--- a/src/kprop/kprop_util.c ++++ b/src/kprop/kprop_util.c +@@ -32,6 +32,10 @@ + #include <sys/types.h> + #include <sys/socket.h> + ++#ifndef MAXHOSTNAMELEN ++#define MAXHOSTNAMELEN 256 ++#endif ++ + /* + * Convert an IPv4 or IPv6 socket address to a newly allocated krb5_address. + * There is similar code elsewhere in the tree, so this should possibly become +diff --git a/src/lib/gssapi/spnego/spnego_mech.c b/src/lib/gssapi/spnego/spnego_mech.c +index 9d6027c..585d8a6 100644 +--- a/src/lib/gssapi/spnego/spnego_mech.c ++++ b/src/lib/gssapi/spnego/spnego_mech.c +@@ -65,6 +65,9 @@ + #include "gssapiP_spnego.h" + #include <gssapi_err_generic.h> + ++#ifndef MAXHOSTNAMELEN ++#define MAXHOSTNAMELEN 256 ++#endif + + #undef g_token_size + #undef g_verify_token_header +diff --git a/src/lib/krb5/os/sn2princ.c b/src/lib/krb5/os/sn2princ.c +index 5932fd9..187daa8 100644 +--- a/src/lib/krb5/os/sn2princ.c ++++ b/src/lib/krb5/os/sn2princ.c +@@ -126,6 +126,10 @@ find_trailer(const char *hostname) + return p; + } + ++#ifndef MAXHOSTNAMELEN ++# define MAXHOSTNAMELEN 256 ++#endif ++ + krb5_error_code KRB5_CALLCONV + krb5_sname_to_principal(krb5_context context, const char *hostname, + const char *sname, krb5_int32 type, +diff --git a/src/plugins/kdb/db2/libdb2/include/db-int.h b/src/plugins/kdb/db2/libdb2/include/db-int.h +index 7e981d4..d83b3b6 100644 +--- a/src/plugins/kdb/db2/libdb2/include/db-int.h ++++ b/src/plugins/kdb/db2/libdb2/include/db-int.h +@@ -280,4 +280,8 @@ void __dbpanic __P((DB *dbp)); + #ifndef O_BINARY + #define O_BINARY 0 /* Needed for Win32 compiles */ + #endif ++ ++#ifndef MAXPATHLEN ++# define MAXPATHLEN 4096 ++#endif + #endif /* _DB_INT_H_ */ +diff --git a/src/tests/resolve/resolve.c b/src/tests/resolve/resolve.c +index 7339d21..38f7253 100644 +--- a/src/tests/resolve/resolve.c ++++ b/src/tests/resolve/resolve.c +@@ -73,6 +73,10 @@ char *strchr(); + #include <netinet/in.h> + #include <netdb.h> + ++#ifndef MAXHOSTNAMELEN ++# define MAXHOSTNAMELEN 256 ++#endif ++ + int + main(argc, argv) + int argc; diff --git a/gnu/packages/patches/mit-krb5-qualify-short-hostnames.patch b/gnu/packages/patches/mit-krb5-qualify-short-hostnames.patch new file mode 100644 index 0000000000..491a358731 --- /dev/null +++ b/gnu/packages/patches/mit-krb5-qualify-short-hostnames.patch @@ -0,0 +1,29 @@ +Fix a null pointer dereference when no DNS search path is configured. +This showed up as a segfault while running the gsasl test suite. + +Taken from upstream: +https://github.com/krb5/krb5/commit/cd82bf377e7fad2409c76bf8b241920692f34fda + +diff --git a/src/lib/krb5/os/dnsglue.c b/src/lib/krb5/os/dnsglue.c +index e35ca9d76c..0cd213fdd7 100644 +--- a/src/lib/krb5/os/dnsglue.c ++++ b/src/lib/krb5/os/dnsglue.c +@@ -91,7 +91,7 @@ static int initparse(struct krb5int_dns_state *); + #define DECLARE_HANDLE(h) struct __res_state h + #define INIT_HANDLE(h) (memset(&h, 0, sizeof(h)), res_ninit(&h) == 0) + #define SEARCH(h, n, c, t, a, l) res_nsearch(&h, n, c, t, a, l) +-#define PRIMARY_DOMAIN(h) strdup(h.dnsrch[0]) ++#define PRIMARY_DOMAIN(h) ((h.dnsrch[0] == NULL) ? NULL : strdup(h.dnsrch[0])) + #if HAVE_RES_NDESTROY + #define DESTROY_HANDLE(h) res_ndestroy(&h) + #else +@@ -104,7 +104,8 @@ static int initparse(struct krb5int_dns_state *); + #define DECLARE_HANDLE(h) + #define INIT_HANDLE(h) (res_init() == 0) + #define SEARCH(h, n, c, t, a, l) res_search(n, c, t, a, l) +-#define PRIMARY_DOMAIN(h) strdup(_res.defdname) ++#define PRIMARY_DOMAIN(h) \ ++ ((_res.defdname == NULL) ? NULL : strdup(_res.defdname)) + #define DESTROY_HANDLE(h) + + #endif diff --git a/gnu/packages/patches/musl-cross-locale.patch b/gnu/packages/patches/musl-cross-locale.patch new file mode 100644 index 0000000000..7634eda381 --- /dev/null +++ b/gnu/packages/patches/musl-cross-locale.patch @@ -0,0 +1,20 @@ +Disable locales other than C and POSIX because of a compilation error. +By Danny Milosavljevic <dannym@scratchpost.org> +This patch is distributed under BSD-3 license. +See https://github.com/osresearch/heads/pull/610 +diff -ruN b/source/patches/gcc-5.3.0-locale.diff guix-build-musl-cross-0.1-3.a8a6649.drv-12/source/patches/gcc-5.3.0-locale.diff +--- a/patches/gcc-5.3.0-locale.diff 1970-01-01 01:00:00.000000000 +0100 ++++ b/patches/gcc-5.3.0-locale.diff 2020-05-02 14:20:47.213564509 +0200 +@@ -0,0 +1,12 @@ ++--- gcc-5.3.0/libstdc++-v3/config/locale/gnu/ctype_members.cc.orig 2020-05-02 14:16:31.376147000 +0200 +++++ gcc-5.3.0/libstdc++-v3/config/locale/gnu/ctype_members.cc 2020-05-02 14:16:56.716279576 +0200 ++@@ -47,7 +47,8 @@ ++ this->_S_create_c_locale(this->_M_c_locale_ctype, __s); ++ this->_M_toupper = this->_M_c_locale_ctype->__ctype_toupper; ++ this->_M_tolower = this->_M_c_locale_ctype->__ctype_tolower; ++- this->_M_table = this->_M_c_locale_ctype->__ctype_b; +++ //this->_M_table = this->_M_c_locale_ctype->__ctype_b; +++ throw 3; ++ } ++ } ++ diff --git a/gnu/packages/patches/openldap-CVE-2020-12243.patch b/gnu/packages/patches/openldap-CVE-2020-12243.patch deleted file mode 100644 index 6321998198..0000000000 --- a/gnu/packages/patches/openldap-CVE-2020-12243.patch +++ /dev/null @@ -1,125 +0,0 @@ -From 98464c11df8247d6a11b52e294ba5dd4f0380440 Mon Sep 17 00:00:00 2001 -From: Howard Chu <hyc@openldap.org> -Date: Thu, 16 Apr 2020 01:08:19 +0100 -Subject: [PATCH] ITS#9202 limit depth of nested filters - -Using a hardcoded limit for now; no reasonable apps -should ever run into it. ---- - servers/slapd/filter.c | 41 ++++++++++++++++++++++++++++++++--------- - 1 file changed, 32 insertions(+), 9 deletions(-) - -diff --git a/servers/slapd/filter.c b/servers/slapd/filter.c -index 3252cf2a7..ed57bbd7b 100644 ---- a/servers/slapd/filter.c -+++ b/servers/slapd/filter.c -@@ -37,11 +37,16 @@ - const Filter *slap_filter_objectClass_pres; - const struct berval *slap_filterstr_objectClass_pres; - -+#ifndef SLAPD_MAX_FILTER_DEPTH -+#define SLAPD_MAX_FILTER_DEPTH 5000 -+#endif -+ - static int get_filter_list( - Operation *op, - BerElement *ber, - Filter **f, -- const char **text ); -+ const char **text, -+ int depth ); - - static int get_ssa( - Operation *op, -@@ -80,12 +85,13 @@ filter_destroy( void ) - return; - } - --int --get_filter( -+static int -+get_filter0( - Operation *op, - BerElement *ber, - Filter **filt, -- const char **text ) -+ const char **text, -+ int depth ) - { - ber_tag_t tag; - ber_len_t len; -@@ -126,6 +132,11 @@ get_filter( - * - */ - -+ if( depth > SLAPD_MAX_FILTER_DEPTH ) { -+ *text = "filter nested too deeply"; -+ return SLAPD_DISCONNECT; -+ } -+ - tag = ber_peek_tag( ber, &len ); - - if( tag == LBER_ERROR ) { -@@ -221,7 +232,7 @@ get_filter( - - case LDAP_FILTER_AND: - Debug( LDAP_DEBUG_FILTER, "AND\n", 0, 0, 0 ); -- err = get_filter_list( op, ber, &f.f_and, text ); -+ err = get_filter_list( op, ber, &f.f_and, text, depth+1 ); - if ( err != LDAP_SUCCESS ) { - break; - } -@@ -234,7 +245,7 @@ get_filter( - - case LDAP_FILTER_OR: - Debug( LDAP_DEBUG_FILTER, "OR\n", 0, 0, 0 ); -- err = get_filter_list( op, ber, &f.f_or, text ); -+ err = get_filter_list( op, ber, &f.f_or, text, depth+1 ); - if ( err != LDAP_SUCCESS ) { - break; - } -@@ -248,7 +259,7 @@ get_filter( - case LDAP_FILTER_NOT: - Debug( LDAP_DEBUG_FILTER, "NOT\n", 0, 0, 0 ); - (void) ber_skip_tag( ber, &len ); -- err = get_filter( op, ber, &f.f_not, text ); -+ err = get_filter0( op, ber, &f.f_not, text, depth+1 ); - if ( err != LDAP_SUCCESS ) { - break; - } -@@ -311,10 +322,22 @@ get_filter( - return( err ); - } - -+int -+get_filter( -+ Operation *op, -+ BerElement *ber, -+ Filter **filt, -+ const char **text ) -+{ -+ return get_filter0( op, ber, filt, text, 0 ); -+} -+ -+ - static int - get_filter_list( Operation *op, BerElement *ber, - Filter **f, -- const char **text ) -+ const char **text, -+ int depth ) - { - Filter **new; - int err; -@@ -328,7 +351,7 @@ get_filter_list( Operation *op, BerElement *ber, - tag != LBER_DEFAULT; - tag = ber_next_element( ber, &len, last ) ) - { -- err = get_filter( op, ber, new, text ); -+ err = get_filter0( op, ber, new, text, depth ); - if ( err != LDAP_SUCCESS ) - return( err ); - new = &(*new)->f_next; --- -2.26.2 - diff --git a/gnu/packages/patches/openresolv-restartcmd-guix.patch b/gnu/packages/patches/openresolv-restartcmd-guix.patch new file mode 100644 index 0000000000..ad70ebd6f2 --- /dev/null +++ b/gnu/packages/patches/openresolv-restartcmd-guix.patch @@ -0,0 +1,34 @@ +From 7f0ce36828ec1e130bee857b8236ca091e4d8a2c Mon Sep 17 00:00:00 2001 +From: Brice Waegeneire <brice@waegenei.re> +Date: Sat, 9 May 2020 15:52:06 +0200 +Subject: [PATCH] Add RESTARTCMD for Guix System. + +--- + +openresolv need to know how to restart the nscd service, this patch teach it +to do it on Guix System by using shepherd. + + resolvconf.in | 7 +++++++ + 1 file changed, 7 insertions(+) + +diff --git a/resolvconf.in b/resolvconf.in +index 3cad04d..5ef5294 100644 +--- a/resolvconf.in ++++ b/resolvconf.in +@@ -369,6 +369,13 @@ detect_init() + then + /etc/rc.d/$1 restart + fi' ++ elif [ -e /gnu/store ] && [ -e /run/current-system/profile ]; then ++ # Guix System ++ RESTARTCMD=' ++ if /run/current-system/profile/bin/herd status $1 2>&1 ++ then ++ /run/current-system/profile/bin/herd restart $1 ++ fi' + else + for x in /etc/init.d/rc.d /etc/rc.d /etc/init.d; do + [ -d $x ] || continue +-- +2.26.0 + diff --git a/gnu/packages/patches/openssh-hurd.patch b/gnu/packages/patches/openssh-hurd.patch new file mode 100644 index 0000000000..1ad09a7ee6 --- /dev/null +++ b/gnu/packages/patches/openssh-hurd.patch @@ -0,0 +1,30 @@ +Author: Jan (janneke) Nieuwenhuizen" <janneke@gnu.org> +Not upstreamed. + +From 1ddae040d67e9a4ebcc3e1b95af1bff12c0f086b Mon Sep 17 00:00:00 2001 +From: "Jan (janneke) Nieuwenhuizen" <janneke@gnu.org> +Date: Tue, 7 Apr 2020 17:41:05 +0200 +Subject: [PATCH] Build fix for the Hurd. + +* gss-serv.c (ssh_gssapi_acquire_cred): Use HOST_NAME_MAX instead of +MAXHOSTNAMELEN. +--- + gss-serv.c | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/gss-serv.c b/gss-serv.c +index 1d47870e7..22081c6f1 100644 +--- a/gss-serv.c ++++ b/gss-serv.c +@@ -107,7 +107,7 @@ ssh_gssapi_acquire_cred(Gssctxt *ctx) + gss_create_empty_oid_set(&status, &oidset); + gss_add_oid_set_member(&status, ctx->oid, &oidset); + +- if (gethostname(lname, MAXHOSTNAMELEN)) { ++ if (gethostname(lname, HOST_NAME_MAX)) { + gss_release_oid_set(&status, &oidset); + return (-1); + } +-- +2.26.0 + diff --git a/gnu/packages/patches/pango-skip-libthai-test.patch b/gnu/packages/patches/pango-skip-libthai-test.patch new file mode 100644 index 0000000000..98732b5391 --- /dev/null +++ b/gnu/packages/patches/pango-skip-libthai-test.patch @@ -0,0 +1,23 @@ +Skip Thai character test when libthai is unavailable. + +Taken from upstream bug tracker: +https://gitlab.gnome.org/GNOME/pango/merge_requests/161 +https://gitlab.gnome.org/GNOME/pango/commit/b73284747ac937e31dc9191f84ed6e24284c88ee + +diff --git a/tests/test-break.c b/tests/test-break.c +index 8549b678bba69360d07dce3af21d915412f20d51..47fa3009165e19a331aa04a0df4351ae2323933b 100644 +--- a/tests/test-break.c ++++ b/tests/test-break.c +@@ -305,6 +305,12 @@ main (int argc, char *argv[]) + if (!strstr (name, "break")) + continue; + ++#ifndef HAVE_LIBTHAI ++ /* four.break involves Thai, so only test it when we have libthai */ ++ if (strstr (name, "four.break")) ++ continue; ++#endif ++ + path = g_strdup_printf ("/break/%s", name); + g_test_add_data_func_full (path, g_test_build_filename (G_TEST_DIST, "breaks", name, NULL), + test_break, g_free); diff --git a/gnu/packages/patches/pciutils-hurd-configure.patch b/gnu/packages/patches/pciutils-hurd-configure.patch new file mode 100644 index 0000000000..226891a995 --- /dev/null +++ b/gnu/packages/patches/pciutils-hurd-configure.patch @@ -0,0 +1,35 @@ +Add ability to detect GNU/Hurd when configuring. + +Adapted from https://git.hadrons.org/cgit/debian/pkgs/pciutils.git/tree/debian/patches/00-configure-hurd.patch + +From e39a3af22501234a91cf28e8c57b45f9379f9101 Mon Sep 17 00:00:00 2001 +From: Damien Zammit <damien@zamaudio.com> +Date: Fri, 26 Oct 2018 09:24:04 -0400 +Subject: [PATCH 2/2] Add ability to detect GNU/Hurd when configuring + +--- + lib/configure | 6 +++++- + 1 file changed, 5 insertions(+), 1 deletion(-) + +--- a/lib/configure ++++ b/lib/configure +@@ -25,7 +25,7 @@ if [ -z "$HOST" ] ; then + proc=`/usr/sbin/lsdev -C -c processor -S available -F name | head -1` + cpu=`/usr/sbin/lsattr -F value -l $proc -a type | sed 's/_.*//'` + else +- cpu=`uname -m | sed 's/^i.86$/i386/;s/^sun4u$/sparc64/;s/^i86pc$/i386/;s/^BePC$/i386/;s/^BeMac$/powerpc/;s/^BeBox$/powerpc/'` ++ cpu=`uname -m | sed 's/^i.86-AT386/i386/;s/^i.86$/i386/;s/^sun4u$/sparc64/;s/^i86pc$/i386/;s/^BePC$/i386/;s/^BeMac$/powerpc/;s/^BeBox$/powerpc/'` + fi + if [ "$sys" = "DragonFly" ] + then +@@ -39,6 +39,10 @@ if [ -z "$HOST" ] ; then + then + sys=cygwin + fi ++ if [ "$sys" = "GNU" ] ++ then ++ sys=gnu ++ fi + HOST=${3:-$cpu-$sys} + fi + [ -n "$RELEASE" ] && rel="${RELEASE}" diff --git a/gnu/packages/patches/perl-cross.patch b/gnu/packages/patches/perl-cross.patch new file mode 100644 index 0000000000..a7d10b4e1f --- /dev/null +++ b/gnu/packages/patches/perl-cross.patch @@ -0,0 +1,60 @@ +Submitted upstream. + +From 4c3eb19a11dfe5c88c902481a8294c4f675fcd03 Mon Sep 17 00:00:00 2001 +From: "Jan (janneke) Nieuwenhuizen" <janneke@gnu.org> +Date: Sun, 19 Apr 2020 23:33:28 +0200 +Subject: [PATCH] Support cross-compiling to the Hurd. + +* cnf/hints/gnu: New file. +* cnf/configure_tool.sh: Guess it. +--- + cnf/configure_tool.sh | 4 ++++ + cnf/hints/gnu | 21 +++++++++++++++++++++ + 2 files changed, 25 insertions(+) + create mode 100644 cnf/hints/gnu + +diff --git a/cnf/configure_tool.sh b/cnf/configure_tool.sh +index 32201c0..7b0baa4 100644 +--- a/cnf/configure_tool.sh ++++ b/cnf/configure_tool.sh +@@ -266,6 +266,10 @@ if not hinted 'osname'; then + define osname "bsd" + result "BSD" + ;; ++ *-gnu*) ++ define osname "gnu" ++ result "GNU" ++ ;; + *) + result "no" + ;; +diff --git a/cnf/hints/gnu b/cnf/hints/gnu +new file mode 100644 +index 0000000..a0583a2 +--- /dev/null ++++ b/cnf/hints/gnu +@@ -0,0 +1,21 @@ ++# Hurd syscalls ++d_voidsig='define' ++d_nanosleep='undef' ++d_clock_gettime='define' ++d_clock_getres='define' ++d_clock_nanosleep='define' ++d_clock='define' ++ ++# From the original linux.sh ++usemallocwrap='define' ++ ++# libraries to test ++libswanted='m crypt pthread nm ndbm gdbm dbm db dl gdbm_compat' ++ ++d_procselfexe='undef' ++procselfexe='"undef"' ++ ++st_ino_sign=1 ++st_ino_size=8 ++ ++d_fcntl_can_lock='define' +-- +2.26.0 + diff --git a/gnu/packages/patches/potrace-tests.patch b/gnu/packages/patches/potrace-tests.patch deleted file mode 100644 index 407be98dab..0000000000 --- a/gnu/packages/patches/potrace-tests.patch +++ /dev/null @@ -1,50 +0,0 @@ -This relaxes the comparison threshold between the reference data -and the bitmaps produced by Ghostscript interpreting the vectorized -image. Apparently the threshold has become too low with the switch -to from Ghostscript 2.21 to 2.22. - ---- potrace-1.15/check/postscript-check.sh 2018-01-06 19:47:26.194900686 +0100 -+++ potrace-1.15/check/postscript-check.sh 2018-01-06 19:51:35.937503739 +0100 -@@ -70,15 +70,15 @@ if test $? -ne 0; then - echo "Something is wrong with $GS; skipping this test" >& 2 - exit 77 - fi --actiondiff "$TMP2" "$REFDATA" 1000 -+actiondiff "$TMP2" "$REFDATA" 1500 - - action $POTRACE -r50 -p -L 0 -B 0 --opaque -o "$TMP1" "$DATA" - action "$GS" -q -dNOPAUSE -sDEVICE=pbmraw -g460x394 -r100x100 -sOutputFile="$TMP2" -- "$TMP1" --actiondiff "$TMP2" "$REFDATA" 1200 -+actiondiff "$TMP2" "$REFDATA" 1500 - - action $POTRACE -r50 -p -L 0 -B 0 -A 160 -o "$TMP1" "$DATA" - action "$GS" -q -dNOPAUSE -sDEVICE=pbmraw -g568x528 -r100x100 -sOutputFile="$TMP2" -- "$TMP1" --actiondiff "$TMP2" "$REFDATAROT" 1200 -+actiondiff "$TMP2" "$REFDATAROT" 1500 - - action rm -f "$TMP1" - action rm -f "$TMP2" - ---- potrace-1.15/check/pdf-check.sh 2018-01-06 19:47:28.698886663 +0100 -+++ potrace-1.15/check/pdf-check.sh 2018-01-06 20:54:14.895460329 +0100 -@@ -72,15 +72,15 @@ if test $? -ne 0 -o ! -f "$TMP2"; then - echo "GS does not understand PDF; skipping this test" >& 2 - exit 77 - fi --actiondiff "$TMP2" "$REFDATA" 1000 -+actiondiff "$TMP2" "$REFDATA" 1500 - - action $POTRACE -r50 -p -L 0 -B 0 --opaque -b pdf -o "$TMP1" "$DATA" - action "$GS" -q -dNOPAUSE -sDEVICE=pbmraw -g460x394 -r100x100 -sOutputFile="$TMP2" -- "$TMP1" --actiondiff "$TMP2" "$REFDATA" 1200 -+actiondiff "$TMP2" "$REFDATA" 1500 - - action $POTRACE -r50 -p -L 0 -B 0 -A 160 -b pdf -o "$TMP1" "$DATA" - action "$GS" -q -dNOPAUSE -sDEVICE=pbmraw -g568x528 -r100x100 -sOutputFile="$TMP2" -- "$TMP1" --actiondiff "$TMP2" "$REFDATAROT" 1200 -+actiondiff "$TMP2" "$REFDATAROT" 1500 - - action rm -f "$TMP1" - action rm -f "$TMP2" - -Diff finished. Sat Jan 6 20:54:50 2018 diff --git a/gnu/packages/patches/purescript-relax-dependencies.patch b/gnu/packages/patches/purescript-relax-dependencies.patch new file mode 100644 index 0000000000..11c4a3c3fc --- /dev/null +++ b/gnu/packages/patches/purescript-relax-dependencies.patch @@ -0,0 +1,42 @@ +Allow the purescript dependencies to better match the available packages in +Guix. + +diff --git purescript-0.13.6/purescript.cabal purescript-0.13.6/purescript.cabal.orig +index 7e38070..0724a0b 100644 +--- purescript-0.13.6/purescript.cabal ++++ purescript-0.13.6/purescript.cabal.orig +@@ -1167,1 +1167,1 @@ library +- Glob ==0.9.*, ++ Glob ==0.10.*, +@@ -1171,1 +1171,1 @@ library +- ansi-terminal >=0.7.1 && <0.9, ++ ansi-terminal ==0.9.*, +@@ -1180,1 +1180,1 @@ library +- clock <0.8, ++ clock ==0.8.*, +@@ -1246,1 +1246,1 @@ executable purs +- Glob ==0.9.*, ++ Glob ==0.10.*, +@@ -1250,1 +1250,1 @@ executable purs +- ansi-terminal >=0.7.1 && <0.9, ++ ansi-terminal ==0.9.*, +@@ -1260,1 +1260,1 @@ executable purs +- clock <0.8, ++ clock ==0.8.*, +@@ -1281,1 +1281,1 @@ executable purs +- network >=3.0.1.1 && <3.1, ++ network >=2.8 && <3.1, +@@ -1358,1 +1358,1 @@ test-suite tests +- Glob ==0.9.*, ++ Glob ==0.10.*, +@@ -1363,1 +1363,1 @@ test-suite tests +- ansi-terminal >=0.7.1 && <0.9, ++ ansi-terminal ==0.9.*, +@@ -1372,1 +1372,1 @@ test-suite tests +- clock <0.8, ++ clock ==0.8.*, +@@ -1384,2 +1384,2 @@ test-suite tests +- hspec <2.7, +- hspec-discover <2.7, ++ hspec ==2.7.*, ++ hspec-discover ==2.7.*, diff --git a/gnu/packages/patches/python-2.7-search-paths.patch b/gnu/packages/patches/python-2.7-search-paths.patch index a012bc8fe0..3318f44d23 100644 --- a/gnu/packages/patches/python-2.7-search-paths.patch +++ b/gnu/packages/patches/python-2.7-search-paths.patch @@ -1,15 +1,19 @@ -Make sure the build system honors CPATH and LIBRARY_PATH when +Make sure the build system honors C_INCLUDE_PATH and LIBRARY_PATH when looking for headers and libraries. --- Python-2.7.10/setup.py 2015-10-07 18:33:18.125153186 +0200 +++ Python-2.7.10/setup.py 2015-10-07 18:33:47.497347552 +0200 -@@ -526,6 +526,10 @@ class PyBuildExt(build_ext): +@@ -526,6 +526,14 @@ class PyBuildExt(build_ext): inc_dirs += ['/system/include', '/atheos/autolnk/include'] inc_dirs += os.getenv('C_INCLUDE_PATH', '').split(os.pathsep) + # Always honor these variables. -+ lib_dirs += os.getenv('LIBRARY_PATH', '').split(os.pathsep) -+ inc_dirs += os.getenv('CPATH', '').split(os.pathsep) ++ if not cross_compiling: ++ lib_dirs += os.getenv('LIBRARY_PATH', '').split(os.pathsep) ++ inc_dirs += os.getenv('C_INCLUDE_PATH', '').split(os.pathsep) ++ else: ++ lib_dirs = os.getenv('CROSS_LIBRARY_PATH', '').split(os.pathsep) ++ inc_dirs = os.getenv('CROSS_CPATH', '').split(os.pathsep) + # OSF/1 and Unixware have some stuff in /usr/ccs/lib (like -ldb) if host_platform in ['osf1', 'unixware7', 'openunix8']: diff --git a/gnu/packages/patches/python-3-arm-alignment.patch b/gnu/packages/patches/python-3-arm-alignment.patch new file mode 100644 index 0000000000..065c1a7bb2 --- /dev/null +++ b/gnu/packages/patches/python-3-arm-alignment.patch @@ -0,0 +1,21 @@ +Ensure memory accesses in the sha3 module are aligned on ARM as it causes +problems when running 32-bit code on a 64-bit kernel. + +Patch taken from upstream bug report: +https://bugs.python.org/issue36515 + +--- a/Modules/_sha3/sha3module.c ++++ b/Modules/_sha3/sha3module.c +@@ -64,6 +64,12 @@ + #define PLATFORM_BYTE_ORDER IS_BIG_ENDIAN + #endif + ++/* Bus error on 32-bit ARM due to un-aligned memory accesses; 64-bit ARM ++ * doesn't complain but un-aligned memory accesses are sub-optimal */ ++#if defined(__arm__) || defined(__aarch64__) ++#define NO_MISALIGNED_ACCESSES ++#endif ++ + /* mangle names */ + #define KeccakF1600_FastLoop_Absorb _PySHA3_KeccakF1600_FastLoop_Absorb + #define Keccak_HashFinal _PySHA3_Keccak_HashFinal diff --git a/gnu/packages/patches/python-3-search-paths.patch b/gnu/packages/patches/python-3-search-paths.patch index 5fea9c66b6..df01d3b933 100644 --- a/gnu/packages/patches/python-3-search-paths.patch +++ b/gnu/packages/patches/python-3-search-paths.patch @@ -1,16 +1,25 @@ -Make sure the build system honors CPATH and LIBRARY_PATH when +Make sure the build system honors C_INCLUDE_PATH and LIBRARY_PATH when looking for headers and libraries. --- a/setup.py 2015-10-07 23:32:58.891329173 +0200 +++ b/setup.py 2015-10-07 23:46:29.653349924 +0200 -@@ -575,8 +575,8 @@ +@@ -676,15 +676,15 @@ # if a file is found in one of those directories, it can # be assumed that no additional -I,-L directives are needed. - if not cross_compiling: -- lib_dirs = self.compiler.library_dirs + system_lib_dirs -- inc_dirs = self.compiler.include_dirs + system_include_dirs -+ lib_dirs = os.getenv('LIBRARY_PATH', '').split(os.pathsep) -+ inc_dirs = os.getenv('CPATH', '').split(os.pathsep) + if not CROSS_COMPILING: +- self.lib_dirs = self.compiler.library_dirs + system_lib_dirs +- self.inc_dirs = self.compiler.include_dirs + system_include_dirs ++ self.lib_dirs = os.getenv('LIBRARY_PATH', '').split(os.pathsep) ++ self.inc_dirs = os.getenv('C_INCLUDE_PATH', '').split(os.pathsep) else: # Add the sysroot paths. 'sysroot' is a compiler option used to # set the logical path of the standard system headers and + # libraries. +- self.lib_dirs = (self.compiler.library_dirs + ++ self.lib_dirs = (os.getenv('CROSS_LIBRARY_PATH', '').split(os.pathsep) + + sysroot_paths(('LDFLAGS', 'CC'), system_lib_dirs)) +- self.inc_dirs = (self.compiler.include_dirs + ++ self.inc_dirs = (os.getenv('CROSS_C_INCLUDE_PATH', '').split(os.pathsep) + + sysroot_paths(('CPPFLAGS', 'CFLAGS', 'CC'), + system_include_dirs)) + diff --git a/gnu/packages/patches/python-3.8-search-paths.patch b/gnu/packages/patches/python-3.8-search-paths.patch deleted file mode 100644 index 88f19850bf..0000000000 --- a/gnu/packages/patches/python-3.8-search-paths.patch +++ /dev/null @@ -1,17 +0,0 @@ -diff --git a/setup.py b/setup.py -index 20d7f35..5751083 100644 ---- a/setup.py -+++ b/setup.py -@@ -676,8 +676,8 @@ class PyBuildExt(build_ext): - # if a file is found in one of those directories, it can - # be assumed that no additional -I,-L directives are needed. - if not CROSS_COMPILING: -- self.lib_dirs = self.compiler.library_dirs + system_lib_dirs -- self.inc_dirs = self.compiler.include_dirs + system_include_dirs -+ self.lib_dirs = os.getenv('LIBRARY_PATH', '').split(os.pathsep) -+ self.inc_dirs = os.getenv('CPATH', '').split(os.pathsep) - else: - # Add the sysroot paths. 'sysroot' is a compiler option used to - # set the logical path of the standard system headers and --- -2.23.0 diff --git a/gnu/packages/patches/python-cffi-x87-stack-clean.patch b/gnu/packages/patches/python-cffi-x87-stack-clean.patch deleted file mode 100644 index 50243505ee..0000000000 --- a/gnu/packages/patches/python-cffi-x87-stack-clean.patch +++ /dev/null @@ -1,29 +0,0 @@ -Fix test that fails on i686: - -https://bitbucket.org/cffi/cffi/issues/382 - -This is a squashed version of these commits: -https://bitbucket.org/cffi/cffi/commits/ef09637b2314 -https://bitbucket.org/cffi/cffi/commits/7a76a3815340 - -diff -r 99940f1f5402 testing/cffi0/test_function.py ---- a/testing/cffi0/test_function.py Tue Feb 27 21:18:33 2018 +0100 -+++ b/testing/cffi0/test_function.py Sun Nov 11 16:26:23 2018 +0100 -@@ -45,14 +45,14 @@ - assert x != math.sin(1.23) # rounding effects - assert abs(x - math.sin(1.23)) < 1E-6 - -- def test_sin_no_return_value(self): -+ def test_lround_no_return_value(self): - # check that 'void'-returning functions work too - ffi = FFI(backend=self.Backend()) - ffi.cdef(""" -- void sin(double x); -+ void lround(double x); - """) - m = ffi.dlopen(lib_m) -- x = m.sin(1.23) -+ x = m.lround(1.23) - assert x is None - - def test_dlopen_filename(self): diff --git a/gnu/packages/patches/python-cross-compile.patch b/gnu/packages/patches/python-cross-compile.patch new file mode 100644 index 0000000000..5a470e1852 --- /dev/null +++ b/gnu/packages/patches/python-cross-compile.patch @@ -0,0 +1,145 @@ +Patch taken from https://bugs.python.org/issue22724 and augmented with +following Nix patch +https://github.com/NixOS/nixpkgs/blob/master/pkgs/development/interpreters/python/cpython/2.7/cross-compile.patch +to fix the whole cross-compilation circus. + +--- + Makefile.pre.in | 14 +++++++------- + configure | 5 ++++- + setup.py | 9 ++++++--- + 3 files changed, 17 insertions(+), 11 deletions(-) + +diff --git a/Makefile.pre.in b/Makefile.pre.in +index 2a14f3323b..6239fc32fc 100644 +--- a/Makefile.pre.in ++++ b/Makefile.pre.in +@@ -492,7 +492,7 @@ $(BUILDPYTHON): Modules/python.o $(LIBRARY) $(LDLIBRARY) + $(BLDLIBRARY) $(LIBS) $(MODLIBS) $(SYSLIBS) $(LDLAST) + + platform: $(BUILDPYTHON) pybuilddir.txt +- $(RUNSHARED) $(PYTHON_FOR_BUILD) -c 'import sys ; from sysconfig import get_platform ; print get_platform()+"-"+sys.version[0:3]' >platform ++ $(RUNSHARED) $(PY_BUILD_ENVIRON) $(PYTHON_FOR_BUILD) -c 'import sys ; from sysconfig import get_platform ; print get_platform()+"-"+sys.version[0:3]' >platform + + # Create build directory and generate the sysconfig build-time data there. + # pybuilddir.txt contains the name of the build dir and is used for +@@ -503,7 +503,7 @@ platform: $(BUILDPYTHON) pybuilddir.txt + # or removed in case of failure. + pybuilddir.txt: $(BUILDPYTHON) + @echo "none" > ./pybuilddir.txt +- $(RUNSHARED) $(PYTHON_FOR_BUILD) -S -m sysconfig --generate-posix-vars ;\ ++ $(RUNSHARED) $(PY_BUILD_ENVIRON) $(PYTHON_FOR_BUILD) -S -m sysconfig --generate-posix-vars ;\ + if test $$? -ne 0 ; then \ + echo "generate-posix-vars failed" ; \ + rm -f ./pybuilddir.txt ; \ +@@ -525,7 +525,7 @@ sharedmods: $(BUILDPYTHON) pybuilddir.txt Modules/_math.o + esac; \ + $(RUNSHARED) CC='$(CC)' LDSHARED='$(BLDSHARED)' OPT='$(OPT)' \ + _TCLTK_INCLUDES='$(TCLTK_INCLUDES)' _TCLTK_LIBS='$(TCLTK_LIBS)' \ +- $(PYTHON_FOR_BUILD) $(srcdir)/setup.py $$quiet build ++ $(PY_BUILD_ENVIRON) $(PYTHON_FOR_BUILD) $(srcdir)/setup.py $$quiet build + + # Build static library + # avoid long command lines, same as LIBRARY_OBJS +@@ -928,7 +928,7 @@ install: @FRAMEWORKINSTALLFIRST@ commoninstall bininstall maninstall @FRAMEWORKI + upgrade) ensurepip="--upgrade" ;; \ + install|*) ensurepip="" ;; \ + esac; \ +- $(RUNSHARED) $(PYTHON_FOR_BUILD) -m ensurepip \ ++ $(RUNSHARED) $(PY_BUILD_ENVIRON) $(PYTHON_FOR_BUILD) -m ensurepip \ + $$ensurepip --root=$(DESTDIR)/ ; \ + fi + +@@ -939,7 +939,7 @@ altinstall: commoninstall + upgrade) ensurepip="--altinstall --upgrade --no-default-pip" ;; \ + install|*) ensurepip="--altinstall --no-default-pip" ;; \ + esac; \ +- $(RUNSHARED) $(PYTHON_FOR_BUILD) -m ensurepip \ ++ $(RUNSHARED) $(PY_BUILD_ENVIRON) $(PYTHON_FOR_BUILD) -m ensurepip \ + $$ensurepip --root=$(DESTDIR)/ ; \ + fi + +@@ -1270,7 +1270,7 @@ libainstall: @DEF_MAKE_RULE@ python-config + # Install the dynamically loadable modules + # This goes into $(exec_prefix) + sharedinstall: sharedmods +- $(RUNSHARED) $(PYTHON_FOR_BUILD) $(srcdir)/setup.py install \ ++ $(RUNSHARED) $(PY_BUILD_ENVIRON) $(PYTHON_FOR_BUILD) $(srcdir)/setup.py install \ + --prefix=$(prefix) \ + --install-scripts=$(BINDIR) \ + --install-platlib=$(DESTSHARED) \ +@@ -1344,7 +1344,7 @@ frameworkinstallextras: + # This installs a few of the useful scripts in Tools/scripts + scriptsinstall: + SRCDIR=$(srcdir) $(RUNSHARED) \ +- $(PYTHON_FOR_BUILD) $(srcdir)/Tools/scripts/setup.py install \ ++ $(PY_BUILD_ENVIRON) $(PYTHON_FOR_BUILD) $(srcdir)/Tools/scripts/setup.py install \ + --prefix=$(prefix) \ + --install-scripts=$(BINDIR) \ + --root=$(DESTDIR)/ +diff --git a/configure b/configure +index 67300fe2b6..6050f588c5 100755 +--- a/configure ++++ b/configure +@@ -741,6 +741,7 @@ CONFIG_ARGS + SOVERSION + VERSION + PYTHON_FOR_BUILD ++PY_BUILD_ENVIRON + PYTHON_FOR_REGEN + host_os + host_vendor +@@ -2964,7 +2965,8 @@ $as_echo_n "checking for python interpreter for cross build... " >&6; } + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $interp" >&5 + $as_echo "$interp" >&6; } +- PYTHON_FOR_BUILD='_PYTHON_PROJECT_BASE=$(abs_builddir) _PYTHON_HOST_PLATFORM=$(_PYTHON_HOST_PLATFORM) PYTHONPATH=$(shell test -f pybuilddir.txt && echo $(abs_builddir)/`cat pybuilddir.txt`:)$(srcdir)/Lib:$(srcdir)/Lib/$(PLATDIR) '$interp ++ PY_BUILD_ENVIRON='_PYTHON_PROJECT_BASE=$(abs_builddir) _PYTHON_HOST_PLATFORM=$(_PYTHON_HOST_PLATFORM) PYTHONPATH=$(shell test -f pybuilddir.txt && echo $(abs_builddir)/`cat pybuilddir.txt`:)$(srcdir)/Lib:$(srcdir)/Lib/$(PLATDIR)' ++ PYTHON_FOR_BUILD=$interp + fi + elif test "$cross_compiling" = maybe; then + as_fn_error $? "Cross compiling required --host=HOST-TUPLE and --build=ARCH" "$LINENO" 5 +@@ -2974,6 +2976,7 @@ fi + + + ++ + if test "$prefix" != "/"; then + prefix=`echo "$prefix" | sed -e 's/\/$//g'` + fi +diff --git a/setup.py b/setup.py +index cb47a2339c..472e7e2b26 100644 +--- a/setup.py ++++ b/setup.py +@@ -497,8 +497,6 @@ class PyBuildExt(build_ext): + if not cross_compiling: + add_dir_to_list(self.compiler.library_dirs, '/usr/local/lib') + add_dir_to_list(self.compiler.include_dirs, '/usr/local/include') +- if cross_compiling: +- self.add_gcc_paths() + self.add_multiarch_paths() + + # Add paths specified in the environment variables LDFLAGS and +@@ -556,7 +554,10 @@ class PyBuildExt(build_ext): + # be assumed that no additional -I,-L directives are needed. + inc_dirs = self.compiler.include_dirs[:] + lib_dirs = self.compiler.library_dirs[:] +- if not cross_compiling: ++ if cross_compiling: ++ inc_dirs = [] ++ lib_dirs = [] ++ else: + for d in ( + '/usr/include', + ): +@@ -621,6 +622,8 @@ class PyBuildExt(build_ext): + # Some modules that are normally always on: + #exts.append( Extension('_weakref', ['_weakref.c']) ) + ++ self.compiler.library_dirs = lib_dirs + [ '.' ] ++ + # array objects + exts.append( Extension('array', ['arraymodule.c']) ) + +-- +2.17.1 + diff --git a/gnu/packages/patches/python-gst-fix-build-with-python-3.8.patch b/gnu/packages/patches/python-gst-fix-build-with-python-3.8.patch new file mode 100644 index 0000000000..affa0e1317 --- /dev/null +++ b/gnu/packages/patches/python-gst-fix-build-with-python-3.8.patch @@ -0,0 +1,36 @@ +Fix build with Python 3.8 by also checking for python-3.X-embed.pc. Since +Python 3.8 the normal checks don't include the Python libraries anymore and +linking of the gst-python module would fail. + +See also https://github.com/mesonbuild/meson/issues/5629 +Fixes https://gitlab.freedesktop.org/gstreamer/gst-python/issues/28 + +Patch based on upstream commit: + +https://gitlab.freedesktop.org/gstreamer/gst-python/-/commit/10707f437f2fc3632067c6a0efa4432f7ebaf362 + +diff --git a/meson.build b/meson.build +index 5f13b48..d7c7e66 100644 +--- a/meson.build ++++ b/meson.build +@@ -23,7 +23,17 @@ pygobject_dep = dependency('pygobject-3.0', fallback: ['pygobject', 'pygobject_d + + pymod = import('python') + python = pymod.find_installation(get_option('python')) +-python_dep = python.dependency(required : true) ++pythonver = python.language_version() ++if pythonver.version_compare('<3.0') ++ error('Python2 is not supported anymore, please port your code to python3 (@0@ specified)'.format(python.language_version())) ++endif ++ ++# Workaround for https://github.com/mesonbuild/meson/issues/5629 ++# https://gitlab.freedesktop.org/gstreamer/gst-python/issues/28 ++python_dep = dependency('python-@0@-embed'.format(pythonver), version: '>=3', required: false) ++if not python_dep.found() ++ python_dep = python.dependency(required : true) ++endif + + python_abi_flags = python.get_variable('ABIFLAGS', '') + pylib_loc = get_option('libpython-dir') +-- +2.26.2 diff --git a/gnu/packages/patches/python-pycrypto-time-clock.patch b/gnu/packages/patches/python-pycrypto-time-clock.patch new file mode 100644 index 0000000000..9b7a8232a2 --- /dev/null +++ b/gnu/packages/patches/python-pycrypto-time-clock.patch @@ -0,0 +1,23 @@ +Drop use of the deprecated time.clock which was removed in Python 3.8. + +Adapted from upstream pull request: + +https://github.com/dlitz/pycrypto/pull/296 + +diff --git a/lib/Crypto/Random/_UserFriendlyRNG.py b/lib/Crypto/Random/_UserFriendlyRNG.py +--- a/lib/Crypto/Random/_UserFriendlyRNG.py ++++ b/lib/Crypto/Random/_UserFriendlyRNG.py +@@ -73,8 +73,11 @@ class _EntropyCollector(object): + t = time.time() + self._time_es.feed(struct.pack("@I", int(2**30 * (t - floor(t))))) + +- # Add the fractional part of time.clock() +- t = time.clock() ++ # Add the fractional part of time.process_time() ++ try: ++ t = time.process_time() ++ except AttributeError: ++ t = time.clock() + self._clock_es.feed(struct.pack("@I", int(2**30 * (t - floor(t))))) + + diff --git a/gnu/packages/patches/qemu-CVE-2020-1711.patch b/gnu/packages/patches/qemu-CVE-2020-1711.patch deleted file mode 100644 index 32d04f61dd..0000000000 --- a/gnu/packages/patches/qemu-CVE-2020-1711.patch +++ /dev/null @@ -1,69 +0,0 @@ -Fix CVE-2020-1711: - -https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2020-1711 - -Patch copied from upstream source repository: - -https://git.qemu.org/?p=qemu.git;a=commitdiff;h=693fd2acdf14dd86c0bf852610f1c2cca80a74dc - -From 693fd2acdf14dd86c0bf852610f1c2cca80a74dc Mon Sep 17 00:00:00 2001 -From: Felipe Franciosi <felipe@nutanix.com> -Date: Thu, 23 Jan 2020 12:44:59 +0000 -Subject: [PATCH] iscsi: Cap block count from GET LBA STATUS (CVE-2020-1711) - -When querying an iSCSI server for the provisioning status of blocks (via -GET LBA STATUS), Qemu only validates that the response descriptor zero's -LBA matches the one requested. Given the SCSI spec allows servers to -respond with the status of blocks beyond the end of the LUN, Qemu may -have its heap corrupted by clearing/setting too many bits at the end of -its allocmap for the LUN. - -A malicious guest in control of the iSCSI server could carefully program -Qemu's heap (by selectively setting the bitmap) and then smash it. - -This limits the number of bits that iscsi_co_block_status() will try to -update in the allocmap so it can't overflow the bitmap. - -Fixes: CVE-2020-1711 -Cc: qemu-stable@nongnu.org -Signed-off-by: Felipe Franciosi <felipe@nutanix.com> -Signed-off-by: Peter Turschmid <peter.turschm@nutanix.com> -Signed-off-by: Raphael Norwitz <raphael.norwitz@nutanix.com> -Signed-off-by: Kevin Wolf <kwolf@redhat.com> ---- - block/iscsi.c | 5 +++-- - 1 file changed, 3 insertions(+), 2 deletions(-) - -diff --git a/block/iscsi.c b/block/iscsi.c -index 2aea7e3f13..cbd57294ab 100644 ---- a/block/iscsi.c -+++ b/block/iscsi.c -@@ -701,7 +701,7 @@ static int coroutine_fn iscsi_co_block_status(BlockDriverState *bs, - struct scsi_get_lba_status *lbas = NULL; - struct scsi_lba_status_descriptor *lbasd = NULL; - struct IscsiTask iTask; -- uint64_t lba; -+ uint64_t lba, max_bytes; - int ret; - - iscsi_co_init_iscsitask(iscsilun, &iTask); -@@ -721,6 +721,7 @@ static int coroutine_fn iscsi_co_block_status(BlockDriverState *bs, - } - - lba = offset / iscsilun->block_size; -+ max_bytes = (iscsilun->num_blocks - lba) * iscsilun->block_size; - - qemu_mutex_lock(&iscsilun->mutex); - retry: -@@ -764,7 +765,7 @@ retry: - goto out_unlock; - } - -- *pnum = (int64_t) lbasd->num_blocks * iscsilun->block_size; -+ *pnum = MIN((int64_t) lbasd->num_blocks * iscsilun->block_size, max_bytes); - - if (lbasd->provisioning == SCSI_PROVISIONING_TYPE_DEALLOCATED || - lbasd->provisioning == SCSI_PROVISIONING_TYPE_ANCHORED) { --- -2.25.0 - diff --git a/gnu/packages/patches/qemu-CVE-2020-7039.patch b/gnu/packages/patches/qemu-CVE-2020-7039.patch deleted file mode 100644 index ffebda68ab..0000000000 --- a/gnu/packages/patches/qemu-CVE-2020-7039.patch +++ /dev/null @@ -1,173 +0,0 @@ -Fix CVE-2020-7039: - -https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2020-7039 - -Patches copied from upstream dependency repository: - -https://gitlab.freedesktop.org/slirp/libslirp/commit/2655fffed7a9e765bcb4701dd876e9dab975f289 -https://gitlab.freedesktop.org/slirp/libslirp/commit/ce131029d6d4a405cb7d3ac6716d03e58fb4a5d9 -https://gitlab.freedesktop.org/slirp/libslirp/commit/82ebe9c370a0e2970fb5695aa19aa5214a6a1c80 - -From 2655fffed7a9e765bcb4701dd876e9dab975f289 Mon Sep 17 00:00:00 2001 -From: Samuel Thibault <samuel.thibault@ens-lyon.org> -Date: Wed, 8 Jan 2020 00:58:48 +0100 -Subject: [PATCH] tcp_emu: Fix oob access - -The main loop only checks for one available byte, while we sometimes -need two bytes. ---- - CHANGELOG.md | 1 + - src/tcp_subr.c | 7 +++++++ - 2 files changed, 8 insertions(+) - -#diff --git a/CHANGELOG.md b/CHANGELOG.md -#index 00d0ce2..5cf94a8 100644 -#--- a/CHANGELOG.md -#+++ b/CHANGELOG.md -#@@ -20,6 +20,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 -# ### Fixed -# -# - ncsi: fix checksum OOB memory access -#+ - `tcp_emu()`: fix OOB accesses -# -# ## [4.1.0] - 2019-12-02 -# -diff --git a/src/tcp_subr.c b/src/tcp_subr.c -index 382aa38..9c1bdec 100644 ---- a/slirp/src/tcp_subr.c -+++ b/slirp/src/tcp_subr.c -@@ -871,6 +871,9 @@ int tcp_emu(struct socket *so, struct mbuf *m) - break; - - case 5: -+ if (bptr == m->m_data + m->m_len - 1) -+ return 1; /* We need two bytes */ -+ - /* - * The difference between versions 1.0 and - * 2.0 is here. For future versions of -@@ -886,6 +889,10 @@ int tcp_emu(struct socket *so, struct mbuf *m) - /* This is the field containing the port - * number that RA-player is listening to. - */ -+ -+ if (bptr == m->m_data + m->m_len - 1) -+ return 1; /* We need two bytes */ -+ - lport = (((uint8_t *)bptr)[0] << 8) + ((uint8_t *)bptr)[1]; - if (lport < 6970) - lport += 256; /* don't know why */ --- -2.24.1 - -From ce131029d6d4a405cb7d3ac6716d03e58fb4a5d9 Mon Sep 17 00:00:00 2001 -From: Prasad J Pandit <pjp@fedoraproject.org> -Date: Thu, 9 Jan 2020 15:12:27 +0530 -Subject: [PATCH] slirp: use correct size while emulating IRC commands - -While emulating IRC DCC commands, tcp_emu() uses 'mbuf' size -'m->m_size' to write DCC commands via snprintf(3). This may -lead to OOB write access, because 'bptr' points somewhere in -the middle of 'mbuf' buffer, not at the start. Use M_FREEROOM(m) -size to avoid OOB access. - -Reported-by: Vishnu Dev TJ <vishnudevtj@gmail.com> -Signed-off-by: Prasad J Pandit <pjp@fedoraproject.org> -Reviewed-by: Samuel Thibault <samuel.thibault@ens-lyon.org> -Message-Id: <20200109094228.79764-2-ppandit@redhat.com> ---- - src/tcp_subr.c | 11 ++++++----- - 1 file changed, 6 insertions(+), 5 deletions(-) - -diff --git a/src/tcp_subr.c b/src/tcp_subr.c -index 9c1bdec..ee7a938 100644 ---- a/slirp/src/tcp_subr.c -+++ b/slirp/src/tcp_subr.c -@@ -763,7 +763,8 @@ int tcp_emu(struct socket *so, struct mbuf *m) - return 1; - } - m->m_len = bptr - m->m_data; /* Adjust length */ -- m->m_len += snprintf(bptr, m->m_size, "DCC CHAT chat %lu %u%c\n", -+ m->m_len += snprintf(bptr, M_FREEROOM(m), -+ "DCC CHAT chat %lu %u%c\n", - (unsigned long)ntohl(so->so_faddr.s_addr), - ntohs(so->so_fport), 1); - } else if (sscanf(bptr, "DCC SEND %256s %u %u %u", buff, &laddr, &lport, -@@ -773,8 +774,8 @@ int tcp_emu(struct socket *so, struct mbuf *m) - return 1; - } - m->m_len = bptr - m->m_data; /* Adjust length */ -- m->m_len += -- snprintf(bptr, m->m_size, "DCC SEND %s %lu %u %u%c\n", buff, -+ m->m_len += snprintf(bptr, M_FREEROOM(m), -+ "DCC SEND %s %lu %u %u%c\n", buff, - (unsigned long)ntohl(so->so_faddr.s_addr), - ntohs(so->so_fport), n1, 1); - } else if (sscanf(bptr, "DCC MOVE %256s %u %u %u", buff, &laddr, &lport, -@@ -784,8 +785,8 @@ int tcp_emu(struct socket *so, struct mbuf *m) - return 1; - } - m->m_len = bptr - m->m_data; /* Adjust length */ -- m->m_len += -- snprintf(bptr, m->m_size, "DCC MOVE %s %lu %u %u%c\n", buff, -+ m->m_len += snprintf(bptr, M_FREEROOM(m), -+ "DCC MOVE %s %lu %u %u%c\n", buff, - (unsigned long)ntohl(so->so_faddr.s_addr), - ntohs(so->so_fport), n1, 1); - } --- -2.24.1 - -From 82ebe9c370a0e2970fb5695aa19aa5214a6a1c80 Mon Sep 17 00:00:00 2001 -From: Prasad J Pandit <pjp@fedoraproject.org> -Date: Thu, 9 Jan 2020 15:12:28 +0530 -Subject: [PATCH] slirp: use correct size while emulating commands - -While emulating services in tcp_emu(), it uses 'mbuf' size -'m->m_size' to write commands via snprintf(3). Use M_FREEROOM(m) -size to avoid possible OOB access. - -Signed-off-by: Prasad J Pandit <pjp@fedoraproject.org> -Signed-off-by: Samuel Thibault <samuel.thibault@ens-lyon.org> -Message-Id: <20200109094228.79764-3-ppandit@redhat.com> ---- - src/tcp_subr.c | 9 ++++----- - 1 file changed, 4 insertions(+), 5 deletions(-) - -diff --git a/src/tcp_subr.c b/src/tcp_subr.c -index ee7a938..177dfd2 100644 ---- a/slirp/src/tcp_subr.c -+++ b/slirp/src/tcp_subr.c -@@ -681,7 +681,7 @@ int tcp_emu(struct socket *so, struct mbuf *m) - n4 = (laddr & 0xff); - - m->m_len = bptr - m->m_data; /* Adjust length */ -- m->m_len += snprintf(bptr, m->m_size - m->m_len, -+ m->m_len += snprintf(bptr, M_FREEROOM(m), - "ORT %d,%d,%d,%d,%d,%d\r\n%s", n1, n2, n3, n4, - n5, n6, x == 7 ? buff : ""); - return 1; -@@ -716,8 +716,7 @@ int tcp_emu(struct socket *so, struct mbuf *m) - n4 = (laddr & 0xff); - - m->m_len = bptr - m->m_data; /* Adjust length */ -- m->m_len += -- snprintf(bptr, m->m_size - m->m_len, -+ m->m_len += snprintf(bptr, M_FREEROOM(m), - "27 Entering Passive Mode (%d,%d,%d,%d,%d,%d)\r\n%s", - n1, n2, n3, n4, n5, n6, x == 7 ? buff : ""); - -@@ -743,8 +742,8 @@ int tcp_emu(struct socket *so, struct mbuf *m) - if (m->m_data[m->m_len - 1] == '\0' && lport != 0 && - (so = tcp_listen(slirp, INADDR_ANY, 0, so->so_laddr.s_addr, - htons(lport), SS_FACCEPTONCE)) != NULL) -- m->m_len = -- snprintf(m->m_data, m->m_size, "%d", ntohs(so->so_fport)) + 1; -+ m->m_len = snprintf(m->m_data, M_ROOM(m), -+ "%d", ntohs(so->so_fport)) + 1; - return 1; - - case EMU_IRC: --- -2.24.1 - diff --git a/gnu/packages/patches/qemu-CVE-2020-7211.patch b/gnu/packages/patches/qemu-CVE-2020-7211.patch deleted file mode 100644 index 2885dda411..0000000000 --- a/gnu/packages/patches/qemu-CVE-2020-7211.patch +++ /dev/null @@ -1,49 +0,0 @@ -Fix CVE-2020-7211: - -https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2020-7211 - -Patch copied from upstream dependency repository: - -https://gitlab.freedesktop.org/slirp/libslirp/commit/14ec36e107a8c9af7d0a80c3571fe39b291ff1d4 - -From 14ec36e107a8c9af7d0a80c3571fe39b291ff1d4 Mon Sep 17 00:00:00 2001 -From: Prasad J Pandit <pjp@fedoraproject.org> -Date: Mon, 13 Jan 2020 17:44:31 +0530 -Subject: [PATCH] slirp: tftp: restrict relative path access - -tftp restricts relative or directory path access on Linux systems. -Apply same restrictions on Windows systems too. It helps to avoid -directory traversal issue. - -Fixes: https://bugs.launchpad.net/qemu/+bug/1812451 -Reported-by: Peter Maydell <peter.maydell@linaro.org> -Signed-off-by: Prasad J Pandit <pjp@fedoraproject.org> -Reviewed-by: Samuel Thibault <samuel.thibault@ens-lyon.org> -Message-Id: <20200113121431.156708-1-ppandit@redhat.com> ---- - src/tftp.c | 9 +++++++-- - 1 file changed, 7 insertions(+), 2 deletions(-) - -diff --git a/src/tftp.c b/src/tftp.c -index 093c2e0..e52e71b 100644 ---- a/slirp/src/tftp.c -+++ b/slirp/src/tftp.c -@@ -344,8 +344,13 @@ static void tftp_handle_rrq(Slirp *slirp, struct sockaddr_storage *srcsas, - k += 6; /* skipping octet */ - - /* do sanity checks on the filename */ -- if (!strncmp(req_fname, "../", 3) || -- req_fname[strlen(req_fname) - 1] == '/' || strstr(req_fname, "/../")) { -+ if ( -+#ifdef G_OS_WIN32 -+ strstr(req_fname, "..\\") || -+ req_fname[strlen(req_fname) - 1] == '\\' || -+#endif -+ strstr(req_fname, "../") || -+ req_fname[strlen(req_fname) - 1] == '/') { - tftp_send_error(spt, 2, "Access violation", tp); - return; - } --- -2.24.1 - diff --git a/gnu/packages/patches/qemu-CVE-2020-8608.patch b/gnu/packages/patches/qemu-CVE-2020-8608.patch deleted file mode 100644 index 4cb017c795..0000000000 --- a/gnu/packages/patches/qemu-CVE-2020-8608.patch +++ /dev/null @@ -1,269 +0,0 @@ -Fix CVE-2020-8608: - -https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2020-8608 -https://www.openwall.com/lists/oss-security/2020/02/06/2 - -Patches copied from upstream dependency repository: - -https://gitlab.freedesktop.org/slirp/libslirp/commit/68ccb8021a838066f0951d4b2817eb6b6f10a843 -https://gitlab.freedesktop.org/slirp/libslirp/commit/30648c03b27fb8d9611b723184216cd3174b6775 - -From 68ccb8021a838066f0951d4b2817eb6b6f10a843 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= <marcandre.lureau@redhat.com> -Date: Mon, 27 Jan 2020 10:24:14 +0100 -Subject: [PATCH] tcp_emu: fix unsafe snprintf() usages -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Various calls to snprintf() assume that snprintf() returns "only" the -number of bytes written (excluding terminating NUL). - -https://pubs.opengroup.org/onlinepubs/9699919799/functions/snprintf.html#tag_16_159_04 - -"Upon successful completion, the snprintf() function shall return the -number of bytes that would be written to s had n been sufficiently -large excluding the terminating null byte." - -Before patch ce131029, if there isn't enough room in "m_data" for the -"DCC ..." message, we overflow "m_data". - -After the patch, if there isn't enough room for the same, we don't -overflow "m_data", but we set "m_len" out-of-bounds. The next time an -access is bounded by "m_len", we'll have a buffer overflow then. - -Use slirp_fmt*() to fix potential OOB memory access. - -Reported-by: Laszlo Ersek <lersek@redhat.com> -Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com> -Reviewed-by: Samuel Thibault <samuel.thibault@ens-lyon.org> -Message-Id: <20200127092414.169796-7-marcandre.lureau@redhat.com> ---- - src/tcp_subr.c | 44 +++++++++++++++++++++----------------------- - 1 file changed, 21 insertions(+), 23 deletions(-) - -diff --git a/src/tcp_subr.c b/src/tcp_subr.c -index a699117..a72c86b 100644 ---- a/slirp/src/tcp_subr.c -+++ b/slirp/src/tcp_subr.c -@@ -643,8 +643,7 @@ int tcp_emu(struct socket *so, struct mbuf *m) - NTOHS(n1); - NTOHS(n2); - m_inc(m, snprintf(NULL, 0, "%d,%d\r\n", n1, n2) + 1); -- m->m_len = snprintf(m->m_data, M_ROOM(m), "%d,%d\r\n", n1, n2); -- assert(m->m_len < M_ROOM(m)); -+ m->m_len = slirp_fmt(m->m_data, M_ROOM(m), "%d,%d\r\n", n1, n2); - } else { - *eol = '\r'; - } -@@ -684,9 +683,9 @@ int tcp_emu(struct socket *so, struct mbuf *m) - n4 = (laddr & 0xff); - - m->m_len = bptr - m->m_data; /* Adjust length */ -- m->m_len += snprintf(bptr, M_FREEROOM(m), -- "ORT %d,%d,%d,%d,%d,%d\r\n%s", n1, n2, n3, n4, -- n5, n6, x == 7 ? buff : ""); -+ m->m_len += slirp_fmt(bptr, M_FREEROOM(m), -+ "ORT %d,%d,%d,%d,%d,%d\r\n%s", -+ n1, n2, n3, n4, n5, n6, x == 7 ? buff : ""); - return 1; - } else if ((bptr = (char *)strstr(m->m_data, "27 Entering")) != NULL) { - /* -@@ -719,10 +718,9 @@ int tcp_emu(struct socket *so, struct mbuf *m) - n4 = (laddr & 0xff); - - m->m_len = bptr - m->m_data; /* Adjust length */ -- m->m_len += snprintf(bptr, M_FREEROOM(m), -- "27 Entering Passive Mode (%d,%d,%d,%d,%d,%d)\r\n%s", -- n1, n2, n3, n4, n5, n6, x == 7 ? buff : ""); -- -+ m->m_len += slirp_fmt(bptr, M_FREEROOM(m), -+ "27 Entering Passive Mode (%d,%d,%d,%d,%d,%d)\r\n%s", -+ n1, n2, n3, n4, n5, n6, x == 7 ? buff : ""); - return 1; - } - -@@ -745,8 +743,8 @@ int tcp_emu(struct socket *so, struct mbuf *m) - if (m->m_data[m->m_len - 1] == '\0' && lport != 0 && - (so = tcp_listen(slirp, INADDR_ANY, 0, so->so_laddr.s_addr, - htons(lport), SS_FACCEPTONCE)) != NULL) -- m->m_len = snprintf(m->m_data, M_ROOM(m), -- "%d", ntohs(so->so_fport)) + 1; -+ m->m_len = slirp_fmt0(m->m_data, M_ROOM(m), -+ "%d", ntohs(so->so_fport)); - return 1; - - case EMU_IRC: -@@ -765,10 +763,10 @@ int tcp_emu(struct socket *so, struct mbuf *m) - return 1; - } - m->m_len = bptr - m->m_data; /* Adjust length */ -- m->m_len += snprintf(bptr, M_FREEROOM(m), -- "DCC CHAT chat %lu %u%c\n", -- (unsigned long)ntohl(so->so_faddr.s_addr), -- ntohs(so->so_fport), 1); -+ m->m_len += slirp_fmt(bptr, M_FREEROOM(m), -+ "DCC CHAT chat %lu %u%c\n", -+ (unsigned long)ntohl(so->so_faddr.s_addr), -+ ntohs(so->so_fport), 1); - } else if (sscanf(bptr, "DCC SEND %256s %u %u %u", buff, &laddr, &lport, - &n1) == 4) { - if ((so = tcp_listen(slirp, INADDR_ANY, 0, htonl(laddr), -@@ -776,10 +774,10 @@ int tcp_emu(struct socket *so, struct mbuf *m) - return 1; - } - m->m_len = bptr - m->m_data; /* Adjust length */ -- m->m_len += snprintf(bptr, M_FREEROOM(m), -- "DCC SEND %s %lu %u %u%c\n", buff, -- (unsigned long)ntohl(so->so_faddr.s_addr), -- ntohs(so->so_fport), n1, 1); -+ m->m_len += slirp_fmt(bptr, M_FREEROOM(m), -+ "DCC SEND %s %lu %u %u%c\n", buff, -+ (unsigned long)ntohl(so->so_faddr.s_addr), -+ ntohs(so->so_fport), n1, 1); - } else if (sscanf(bptr, "DCC MOVE %256s %u %u %u", buff, &laddr, &lport, - &n1) == 4) { - if ((so = tcp_listen(slirp, INADDR_ANY, 0, htonl(laddr), -@@ -787,10 +785,10 @@ int tcp_emu(struct socket *so, struct mbuf *m) - return 1; - } - m->m_len = bptr - m->m_data; /* Adjust length */ -- m->m_len += snprintf(bptr, M_FREEROOM(m), -- "DCC MOVE %s %lu %u %u%c\n", buff, -- (unsigned long)ntohl(so->so_faddr.s_addr), -- ntohs(so->so_fport), n1, 1); -+ m->m_len += slirp_fmt(bptr, M_FREEROOM(m), -+ "DCC MOVE %s %lu %u %u%c\n", buff, -+ (unsigned long)ntohl(so->so_faddr.s_addr), -+ ntohs(so->so_fport), n1, 1); - } - return 1; - --- -2.25.1 - -From 30648c03b27fb8d9611b723184216cd3174b6775 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= <marcandre.lureau@redhat.com> -Date: Mon, 27 Jan 2020 10:24:09 +0100 -Subject: [PATCH] util: add slirp_fmt() helpers -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -Various calls to snprintf() in libslirp assume that snprintf() returns -"only" the number of bytes written (excluding terminating NUL). - -https://pubs.opengroup.org/onlinepubs/9699919799/functions/snprintf.html#tag_16_159_04 - -"Upon successful completion, the snprintf() function shall return the -number of bytes that would be written to s had n been sufficiently -large excluding the terminating null byte." - -Introduce slirp_fmt() that handles several pathological cases the -way libslirp usually expect: - -- treat error as fatal (instead of silently returning -1) - -- fmt0() will always \0 end - -- return the number of bytes actually written (instead of what would -have been written, which would usually result in OOB later), including -the ending \0 for fmt0() - -- warn if truncation happened (instead of ignoring) - -Other less common cases can still be handled with strcpy/snprintf() etc. - -Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com> -Reviewed-by: Samuel Thibault <samuel.thibault@ens-lyon.org> -Message-Id: <20200127092414.169796-2-marcandre.lureau@redhat.com> ---- - src/util.c | 62 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ - src/util.h | 3 +++ - 2 files changed, 65 insertions(+) - -diff --git a/src/util.c b/src/util.c -index e596087..e3b6257 100644 ---- a/slirp/src/util.c -+++ b/slirp/src/util.c -@@ -364,3 +364,65 @@ void slirp_pstrcpy(char *buf, int buf_size, const char *str) - } - *q = '\0'; - } -+ -+static int slirp_vsnprintf(char *str, size_t size, -+ const char *format, va_list args) -+{ -+ int rv = vsnprintf(str, size, format, args); -+ -+ if (rv < 0) { -+ g_error("vsnprintf() failed: %s", g_strerror(errno)); -+ } -+ -+ return rv; -+} -+ -+/* -+ * A snprintf()-like function that: -+ * - returns the number of bytes written (excluding optional \0-ending) -+ * - dies on error -+ * - warn on truncation -+ */ -+int slirp_fmt(char *str, size_t size, const char *format, ...) -+{ -+ va_list args; -+ int rv; -+ -+ va_start(args, format); -+ rv = slirp_vsnprintf(str, size, format, args); -+ va_end(args); -+ -+ if (rv > size) { -+ g_critical("vsnprintf() truncation"); -+ } -+ -+ return MIN(rv, size); -+} -+ -+/* -+ * A snprintf()-like function that: -+ * - always \0-end (unless size == 0) -+ * - returns the number of bytes actually written, including \0 ending -+ * - dies on error -+ * - warn on truncation -+ */ -+int slirp_fmt0(char *str, size_t size, const char *format, ...) -+{ -+ va_list args; -+ int rv; -+ -+ va_start(args, format); -+ rv = slirp_vsnprintf(str, size, format, args); -+ va_end(args); -+ -+ if (rv >= size) { -+ g_critical("vsnprintf() truncation"); -+ if (size > 0) -+ str[size - 1] = '\0'; -+ rv = size; -+ } else { -+ rv += 1; /* include \0 */ -+ } -+ -+ return rv; -+} -diff --git a/src/util.h b/src/util.h -index e9c3073..5530c46 100644 ---- a/slirp/src/util.h -+++ b/slirp/src/util.h -@@ -181,4 +181,7 @@ static inline int slirp_socket_set_fast_reuse(int fd) - - void slirp_pstrcpy(char *buf, int buf_size, const char *str); - -+int slirp_fmt(char *str, size_t size, const char *format, ...); -+int slirp_fmt0(char *str, size_t size, const char *format, ...); -+ - #endif --- -2.25.1 - diff --git a/gnu/packages/patches/qemu-fix-documentation-build-failure.patch b/gnu/packages/patches/qemu-fix-documentation-build-failure.patch deleted file mode 100644 index c913c553b2..0000000000 --- a/gnu/packages/patches/qemu-fix-documentation-build-failure.patch +++ /dev/null @@ -1,43 +0,0 @@ -Fix a build failure caused by a texinfo bug: - -qemu-doc.texi:41: @menu reference to nonexistent node `QEMU Guest Agent' - -Patch copied from upstream source repository: - -https://git.qemu.org/?p=qemu.git;a=commitdiff;h=80bc935eaaf93e5b9a4efe97abd7c51d645f2612 - -From 80bc935eaaf93e5b9a4efe97abd7c51d645f2612 Mon Sep 17 00:00:00 2001 -From: Thomas Huth <thuth@redhat.com> -Date: Mon, 16 Dec 2019 14:29:41 +0100 -Subject: [PATCH] qemu-doc: Remove the unused "Guest Agent" node -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -The node has been removed from the texi file some months ago, so we -should remove it from the menu section, too. - -Fixes: 27a296fce982 ("qemu-ga: Convert invocation documentation to rST") -Signed-off-by: Thomas Huth <thuth@redhat.com> -Reviewed-by: Philippe Mathieu-Daudé <philmd@redhat.com> -Message-Id: <20191216132941.25729-1-thuth@redhat.com> -Signed-off-by: Laurent Vivier <laurent@vivier.eu> ---- - qemu-doc.texi | 1 - - 1 file changed, 1 deletion(-) - -diff --git a/qemu-doc.texi b/qemu-doc.texi -index eea91a2d1e..39f950471f 100644 ---- a/qemu-doc.texi -+++ b/qemu-doc.texi -@@ -38,7 +38,6 @@ - * Introduction:: - * QEMU PC System emulator:: - * QEMU System emulator for non PC targets:: --* QEMU Guest Agent:: - * QEMU User space emulator:: - * System requirements:: - * Security:: --- -2.24.1 - diff --git a/gnu/packages/patches/qtbase-moc-ignore-gcc-macro.patch b/gnu/packages/patches/qtbase-moc-ignore-gcc-macro.patch new file mode 100644 index 0000000000..b296cf0b72 --- /dev/null +++ b/gnu/packages/patches/qtbase-moc-ignore-gcc-macro.patch @@ -0,0 +1,17 @@ +The moc executable loops through headers on CPLUS_INCLUDE_PATH and stumbles +on the GCC internal _GLIBCXX_VISIBILITY macro. Tell it to ignore it as it is +not supposed to be looking there to begin with. + +Upstream report: https://bugreports.qt.io/browse/QTBUG-83160 + +diff --git a/src/tools/moc/main.cpp b/src/tools/moc/main.cpp +--- a/src/tools/moc/main.cpp ++++ b/src/tools/moc/main.cpp +@@ -188,6 +188,7 @@ int runMoc(int argc, char **argv) + dummyVariadicFunctionMacro.arguments += Symbol(0, PP_IDENTIFIER, "__VA_ARGS__"); + pp.macros["__attribute__"] = dummyVariadicFunctionMacro; + pp.macros["__declspec"] = dummyVariadicFunctionMacro; ++ pp.macros["_GLIBCXX_VISIBILITY"] = dummyVariadicFunctionMacro; + + QString filename; + QString output; diff --git a/gnu/packages/patches/ruby-rubygems-276-for-ruby24.patch b/gnu/packages/patches/ruby-rubygems-276-for-ruby24.patch deleted file mode 100644 index 0d0ed6b204..0000000000 --- a/gnu/packages/patches/ruby-rubygems-276-for-ruby24.patch +++ /dev/null @@ -1,605 +0,0 @@ -diff --git lib/rubygems.rb lib/rubygems.rb -index 0685bcb3c6..a5a9202e56 100644 ---- ruby-2.4.3/lib/rubygems.rb -+++ ruby-2.4.3/lib/rubygems.rb -@@ -10,7 +10,7 @@ - require 'thread' - - module Gem -- VERSION = "2.6.14" -+ VERSION = "2.6.14.1" - end - - # Must be first since it unloads the prelude from 1.9.2 -diff --git lib/rubygems/commands/owner_command.rb lib/rubygems/commands/owner_command.rb -index 4b99434e87..2ee7f84462 100644 ---- ruby-2.4.3/lib/rubygems/commands/owner_command.rb -+++ ruby-2.4.3/lib/rubygems/commands/owner_command.rb -@@ -62,7 +62,7 @@ def show_owners name - end - - with_response response do |resp| -- owners = YAML.load resp.body -+ owners = Gem::SafeYAML.load resp.body - - say "Owners for gem: #{name}" - owners.each do |owner| -diff --git lib/rubygems/package.rb lib/rubygems/package.rb -index 77811ed5ec..b5a5fe2a26 100644 ---- ruby-2.4.3/lib/rubygems/package.rb -+++ ruby-2.4.3/lib/rubygems/package.rb -@@ -378,7 +378,7 @@ def extract_tar_gz io, destination_dir, pattern = "*" # :nodoc: - File.dirname destination - end - -- FileUtils.mkdir_p mkdir, mkdir_options -+ mkdir_p_safe mkdir, mkdir_options, destination_dir, entry.full_name - - open destination, 'wb' do |out| - out.write entry.read -@@ -416,20 +416,35 @@ def install_location filename, destination_dir # :nodoc: - raise Gem::Package::PathError.new(filename, destination_dir) if - filename.start_with? '/' - -- destination_dir = File.realpath destination_dir if -- File.respond_to? :realpath -+ destination_dir = realpath destination_dir - destination_dir = File.expand_path destination_dir - - destination = File.join destination_dir, filename - destination = File.expand_path destination - - raise Gem::Package::PathError.new(destination, destination_dir) unless -- destination.start_with? destination_dir -+ destination.start_with? destination_dir + '/' - - destination.untaint - destination - end - -+ def mkdir_p_safe mkdir, mkdir_options, destination_dir, file_name -+ destination_dir = realpath File.expand_path(destination_dir) -+ parts = mkdir.split(File::SEPARATOR) -+ parts.reduce do |path, basename| -+ path = realpath path unless path == "" -+ path = File.expand_path(path + File::SEPARATOR + basename) -+ lstat = File.lstat path rescue nil -+ if !lstat || !lstat.directory? -+ unless path.start_with? destination_dir and (FileUtils.mkdir path, mkdir_options rescue false) -+ raise Gem::Package::PathError.new(file_name, destination_dir) -+ end -+ end -+ path -+ end -+ end -+ - ## - # Loads a Gem::Specification from the TarEntry +entry+ - -@@ -603,6 +618,10 @@ def verify_files gem - raise Gem::Package::FormatError.new \ - 'package content (data.tar.gz) is missing', @gem - end -+ -+ if duplicates = @files.group_by {|f| f }.select {|k,v| v.size > 1 }.map(&:first) and duplicates.any? -+ raise Gem::Security::Exception, "duplicate files in the package: (#{duplicates.map(&:inspect).join(', ')})" -+ end - end - - ## -@@ -616,6 +635,16 @@ def verify_gz entry # :nodoc: - raise Gem::Package::FormatError.new(e.message, entry.full_name) - end - -+ if File.respond_to? :realpath -+ def realpath file -+ File.realpath file -+ end -+ else -+ def realpath file -+ file -+ end -+ end -+ - end - - require 'rubygems/package/digest_io' -diff --git lib/rubygems/package/tar_header.rb lib/rubygems/package/tar_header.rb -index c54bd14d57..d557357114 100644 ---- ruby-2.4.3/lib/rubygems/package/tar_header.rb -+++ ruby-2.4.3/lib/rubygems/package/tar_header.rb -@@ -104,25 +104,30 @@ def self.from(stream) - fields = header.unpack UNPACK_FORMAT - - new :name => fields.shift, -- :mode => fields.shift.oct, -- :uid => fields.shift.oct, -- :gid => fields.shift.oct, -- :size => fields.shift.oct, -- :mtime => fields.shift.oct, -- :checksum => fields.shift.oct, -+ :mode => strict_oct(fields.shift), -+ :uid => strict_oct(fields.shift), -+ :gid => strict_oct(fields.shift), -+ :size => strict_oct(fields.shift), -+ :mtime => strict_oct(fields.shift), -+ :checksum => strict_oct(fields.shift), - :typeflag => fields.shift, - :linkname => fields.shift, - :magic => fields.shift, -- :version => fields.shift.oct, -+ :version => strict_oct(fields.shift), - :uname => fields.shift, - :gname => fields.shift, -- :devmajor => fields.shift.oct, -- :devminor => fields.shift.oct, -+ :devmajor => strict_oct(fields.shift), -+ :devminor => strict_oct(fields.shift), - :prefix => fields.shift, - - :empty => empty - end - -+ def self.strict_oct(str) -+ return str.oct if str =~ /\A[0-7]*\z/ -+ raise ArgumentError, "#{str.inspect} is not an octal string" -+ end -+ - ## - # Creates a new TarHeader using +vals+ - -diff --git lib/rubygems/package/tar_writer.rb lib/rubygems/package/tar_writer.rb -index f68b8d4c5e..390f7851a3 100644 ---- ruby-2.4.3/lib/rubygems/package/tar_writer.rb -+++ ruby-2.4.3/lib/rubygems/package/tar_writer.rb -@@ -196,6 +196,8 @@ def add_file_signed name, mode, signer - digest_name == signer.digest_name - end - -+ raise "no #{signer.digest_name} in #{digests.values.compact}" unless signature_digest -+ - if signer.key then - signature = signer.sign signature_digest.digest - -diff --git lib/rubygems/server.rb lib/rubygems/server.rb -index df4eb566d3..a7b5243ba0 100644 ---- ruby-2.4.3/lib/rubygems/server.rb -+++ ruby-2.4.3/lib/rubygems/server.rb -@@ -631,6 +631,18 @@ def root(req, res) - executables = nil if executables.empty? - executables.last["is_last"] = true if executables - -+ # Pre-process spec homepage for safety reasons -+ begin -+ homepage_uri = URI.parse(spec.homepage) -+ if [URI::HTTP, URI::HTTPS].member? homepage_uri.class -+ homepage_uri = spec.homepage -+ else -+ homepage_uri = "." -+ end -+ rescue URI::InvalidURIError -+ homepage_uri = "." -+ end -+ - specs << { - "authors" => spec.authors.sort.join(", "), - "date" => spec.date.to_s, -@@ -640,7 +652,7 @@ def root(req, res) - "only_one_executable" => (executables && executables.size == 1), - "full_name" => spec.full_name, - "has_deps" => !deps.empty?, -- "homepage" => spec.homepage, -+ "homepage" => homepage_uri, - "name" => spec.name, - "rdoc_installed" => Gem::RDoc.new(spec).rdoc_installed?, - "ri_installed" => Gem::RDoc.new(spec).ri_installed?, -diff --git lib/rubygems/specification.rb lib/rubygems/specification.rb -index 40e3a70d47..0a154b9001 100644 ---- ruby-2.4.3/lib/rubygems/specification.rb -+++ ruby-2.4.3/lib/rubygems/specification.rb -@@ -15,6 +15,7 @@ - require 'rubygems/stub_specification' - require 'rubygems/util/list' - require 'stringio' -+require 'uri' - - ## - # The Specification class contains the information for a Gem. Typically -@@ -2813,10 +2814,16 @@ def validate packaging = true - raise Gem::InvalidSpecificationException, "#{lazy} is not a summary" - end - -- if homepage and not homepage.empty? and -- homepage !~ /\A[a-z][a-z\d+.-]*:/i then -- raise Gem::InvalidSpecificationException, -- "\"#{homepage}\" is not a URI" -+ # Make sure a homepage is valid HTTP/HTTPS URI -+ if homepage and not homepage.empty? -+ begin -+ homepage_uri = URI.parse(homepage) -+ unless [URI::HTTP, URI::HTTPS].member? homepage_uri.class -+ raise Gem::InvalidSpecificationException, "\"#{homepage}\" is not a valid HTTP URI" -+ end -+ rescue URI::InvalidURIError -+ raise Gem::InvalidSpecificationException, "\"#{homepage}\" is not a valid HTTP URI" -+ end - end - - # Warnings -diff --git test/rubygems/test_gem_commands_owner_command.rb test/rubygems/test_gem_commands_owner_command.rb -index 44652c1093..53cac4ce87 100644 ---- ruby-2.4.3/test/rubygems/test_gem_commands_owner_command.rb -+++ ruby-2.4.3/test/rubygems/test_gem_commands_owner_command.rb -@@ -43,6 +43,31 @@ def test_show_owners - assert_match %r{- 4}, @ui.output - end - -+ def test_show_owners_dont_load_objects -+ skip "testing a psych-only API" unless defined?(::Psych::DisallowedClass) -+ -+ response = <<EOF -+--- -+- email: !ruby/object:Object {} -+ id: 1 -+ handle: user1 -+- email: user2@example.com -+- id: 3 -+ handle: user3 -+- id: 4 -+EOF -+ -+ @fetcher.data["#{Gem.host}/api/v1/gems/freewill/owners.yaml"] = [response, 200, 'OK'] -+ -+ assert_raises Psych::DisallowedClass do -+ use_ui @ui do -+ @cmd.show_owners("freewill") -+ end -+ end -+ -+ end -+ -+ - def test_show_owners_setting_up_host_through_env_var - response = "- email: user1@example.com\n" - host = "http://rubygems.example" -diff --git test/rubygems/test_gem_package.rb test/rubygems/test_gem_package.rb -index 9d47f0dea4..5b93475314 100644 ---- ruby-2.4.3/test/rubygems/test_gem_package.rb -+++ ruby-2.4.3/test/rubygems/test_gem_package.rb -@@ -455,6 +455,31 @@ def test_extract_tar_gz_symlink_relative_path - File.read(extracted) - end - -+ def test_extract_symlink_parent -+ skip 'symlink not supported' if Gem.win_platform? -+ -+ package = Gem::Package.new @gem -+ -+ tgz_io = util_tar_gz do |tar| -+ tar.mkdir 'lib', 0755 -+ tar.add_symlink 'lib/link', '../..', 0644 -+ tar.add_file 'lib/link/outside.txt', 0644 do |io| io.write 'hi' end -+ end -+ -+ # Extract into a subdirectory of @destination; if this test fails it writes -+ # a file outside destination_subdir, but we want the file to remain inside -+ # @destination so it will be cleaned up. -+ destination_subdir = File.join @destination, 'subdir' -+ FileUtils.mkdir_p destination_subdir -+ -+ e = assert_raises Gem::Package::PathError do -+ package.extract_tar_gz tgz_io, destination_subdir -+ end -+ -+ assert_equal("installing into parent path lib/link/outside.txt of " + -+ "#{destination_subdir} is not allowed", e.message) -+ end -+ - def test_extract_tar_gz_directory - package = Gem::Package.new @gem - -@@ -566,6 +591,21 @@ def test_install_location_relative - "#{@destination} is not allowed", e.message) - end - -+ def test_install_location_suffix -+ package = Gem::Package.new @gem -+ -+ filename = "../#{File.basename(@destination)}suffix.rb" -+ -+ e = assert_raises Gem::Package::PathError do -+ package.install_location filename, @destination -+ end -+ -+ parent = File.expand_path File.join @destination, filename -+ -+ assert_equal("installing into parent path #{parent} of " + -+ "#{@destination} is not allowed", e.message) -+ end -+ - def test_load_spec - entry = StringIO.new Gem.gzip @spec.to_yaml - def entry.full_name() 'metadata.gz' end -@@ -723,6 +763,32 @@ def test_verify_nonexistent - assert_match %r%nonexistent.gem$%, e.message - end - -+ def test_verify_duplicate_file -+ FileUtils.mkdir_p 'lib' -+ FileUtils.touch 'lib/code.rb' -+ -+ build = Gem::Package.new @gem -+ build.spec = @spec -+ build.setup_signer -+ open @gem, 'wb' do |gem_io| -+ Gem::Package::TarWriter.new gem_io do |gem| -+ build.add_metadata gem -+ build.add_contents gem -+ -+ gem.add_file_simple 'a.sig', 0444, 0 -+ gem.add_file_simple 'a.sig', 0444, 0 -+ end -+ end -+ -+ package = Gem::Package.new @gem -+ -+ e = assert_raises Gem::Security::Exception do -+ package.verify -+ end -+ -+ assert_equal 'duplicate files in the package: ("a.sig")', e.message -+ end -+ - def test_verify_security_policy - skip 'openssl is missing' unless defined?(OpenSSL::SSL) - -@@ -780,7 +846,13 @@ def test_verify_security_policy_checksum_missing - - # write bogus data.tar.gz to foil signature - bogus_data = Gem.gzip 'hello' -- gem.add_file_simple 'data.tar.gz', 0444, bogus_data.length do |io| -+ fake_signer = Class.new do -+ def digest_name; 'SHA512'; end -+ def digest_algorithm; Digest(:SHA512); end -+ def key; 'key'; end -+ def sign(*); 'fake_sig'; end -+ end -+ gem.add_file_signed 'data2.tar.gz', 0444, fake_signer.new do |io| - io.write bogus_data - end - -diff --git test/rubygems/test_gem_package_tar_header.rb test/rubygems/test_gem_package_tar_header.rb -index d33877057d..43f508df45 100644 ---- ruby-2.4.3/test/rubygems/test_gem_package_tar_header.rb -+++ ruby-2.4.3/test/rubygems/test_gem_package_tar_header.rb -@@ -143,5 +143,26 @@ def test_update_checksum - assert_equal '012467', @tar_header.checksum - end - -+ def test_from_bad_octal -+ test_cases = [ -+ "00000006,44\000", # bogus character -+ "00000006789\000", # non-octal digit -+ "+0000001234\000", # positive sign -+ "-0000001000\000", # negative sign -+ "0x000123abc\000", # radix prefix -+ ] -+ -+ test_cases.each do |val| -+ header_s = @tar_header.to_s -+ # overwrite the size field -+ header_s[124, 12] = val -+ io = TempIO.new header_s -+ assert_raises ArgumentError do -+ new_header = Gem::Package::TarHeader.from io -+ end -+ io.close! if io.respond_to? :close! -+ end -+ end -+ - end - -diff --git test/rubygems/test_gem_server.rb test/rubygems/test_gem_server.rb -index 4873fac5b6..96ed9194e9 100644 ---- ruby-2.4.3/test/rubygems/test_gem_server.rb -+++ ruby-2.4.3/test/rubygems/test_gem_server.rb -@@ -336,6 +336,171 @@ def test_root_gemdirs - assert_match 'z 9', @res.body - end - -+ -+ def test_xss_homepage_fix_289313 -+ data = StringIO.new "GET / HTTP/1.0\r\n\r\n" -+ dir = "#{@gemhome}2" -+ -+ spec = util_spec 'xsshomepagegem', 1 -+ spec.homepage = "javascript:confirm(document.domain)" -+ -+ specs_dir = File.join dir, 'specifications' -+ FileUtils.mkdir_p specs_dir -+ -+ open File.join(specs_dir, spec.spec_name), 'w' do |io| -+ io.write spec.to_ruby -+ end -+ -+ server = Gem::Server.new dir, process_based_port, false -+ -+ @req.parse data -+ -+ server.root @req, @res -+ -+ assert_equal 200, @res.status -+ assert_match 'xsshomepagegem 1', @res.body -+ -+ # This verifies that the homepage for this spec is not displayed and is set to ".", because it's not a -+ # valid HTTP/HTTPS URL and could be unsafe in an HTML context. We would prefer to throw an exception here, -+ # but spec.homepage is currently free form and not currently required to be a URL, this behavior may be -+ # validated in future versions of Gem::Specification. -+ # -+ # There are two variant we're checking here, one where rdoc is not present, and one where rdoc is present in the same regex: -+ # -+ # Variant #1 - rdoc not installed -+ # -+ # <b>xsshomepagegem 1</b> -+ # -+ # -+ # <span title="rdoc not installed">[rdoc]</span> -+ # -+ # -+ # -+ # <a href="." title=".">[www]</a> -+ # -+ # Variant #2 - rdoc installed -+ # -+ # <b>xsshomepagegem 1</b> -+ # -+ # -+ # <a href="\/doc_root\/xsshomepagegem-1\/">\[rdoc\]<\/a> -+ # -+ # -+ # -+ # <a href="." title=".">[www]</a> -+ regex_match = /xsshomepagegem 1<\/b>[\n\s]+(<span title="rdoc not installed">\[rdoc\]<\/span>|<a href="\/doc_root\/xsshomepagegem-1\/">\[rdoc\]<\/a>)[\n\s]+<a href="\." title="\.">\[www\]<\/a>/ -+ assert_match regex_match, @res.body -+ end -+ -+ def test_invalid_homepage -+ data = StringIO.new "GET / HTTP/1.0\r\n\r\n" -+ dir = "#{@gemhome}2" -+ -+ spec = util_spec 'invalidhomepagegem', 1 -+ spec.homepage = "notavalidhomepageurl" -+ -+ specs_dir = File.join dir, 'specifications' -+ FileUtils.mkdir_p specs_dir -+ -+ open File.join(specs_dir, spec.spec_name), 'w' do |io| -+ io.write spec.to_ruby -+ end -+ -+ server = Gem::Server.new dir, process_based_port, false -+ -+ @req.parse data -+ -+ server.root @req, @res -+ -+ assert_equal 200, @res.status -+ assert_match 'invalidhomepagegem 1', @res.body -+ -+ # This verifies that the homepage for this spec is not displayed and is set to ".", because it's not a -+ # valid HTTP/HTTPS URL and could be unsafe in an HTML context. We would prefer to throw an exception here, -+ # but spec.homepage is currently free form and not currently required to be a URL, this behavior may be -+ # validated in future versions of Gem::Specification. -+ # -+ # There are two variant we're checking here, one where rdoc is not present, and one where rdoc is present in the same regex: -+ # -+ # Variant #1 - rdoc not installed -+ # -+ # <b>invalidhomepagegem 1</b> -+ # -+ # -+ # <span title="rdoc not installed">[rdoc]</span> -+ # -+ # -+ # -+ # <a href="." title=".">[www]</a> -+ # -+ # Variant #2 - rdoc installed -+ # -+ # <b>invalidhomepagegem 1</b> -+ # -+ # -+ # <a href="\/doc_root\/invalidhomepagegem-1\/">\[rdoc\]<\/a> -+ # -+ # -+ # -+ # <a href="." title=".">[www]</a> -+ regex_match = /invalidhomepagegem 1<\/b>[\n\s]+(<span title="rdoc not installed">\[rdoc\]<\/span>|<a href="\/doc_root\/invalidhomepagegem-1\/">\[rdoc\]<\/a>)[\n\s]+<a href="\." title="\.">\[www\]<\/a>/ -+ assert_match regex_match, @res.body -+ end -+ -+ def test_valid_homepage_http -+ data = StringIO.new "GET / HTTP/1.0\r\n\r\n" -+ dir = "#{@gemhome}2" -+ -+ spec = util_spec 'validhomepagegemhttp', 1 -+ spec.homepage = "http://rubygems.org" -+ -+ specs_dir = File.join dir, 'specifications' -+ FileUtils.mkdir_p specs_dir -+ -+ open File.join(specs_dir, spec.spec_name), 'w' do |io| -+ io.write spec.to_ruby -+ end -+ -+ server = Gem::Server.new dir, process_based_port, false -+ -+ @req.parse data -+ -+ server.root @req, @res -+ -+ assert_equal 200, @res.status -+ assert_match 'validhomepagegemhttp 1', @res.body -+ -+ regex_match = /validhomepagegemhttp 1<\/b>[\n\s]+(<span title="rdoc not installed">\[rdoc\]<\/span>|<a href="\/doc_root\/validhomepagegemhttp-1\/">\[rdoc\]<\/a>)[\n\s]+<a href="http:\/\/rubygems\.org" title="http:\/\/rubygems\.org">\[www\]<\/a>/ -+ assert_match regex_match, @res.body -+ end -+ -+ def test_valid_homepage_https -+ data = StringIO.new "GET / HTTP/1.0\r\n\r\n" -+ dir = "#{@gemhome}2" -+ -+ spec = util_spec 'validhomepagegemhttps', 1 -+ spec.homepage = "https://rubygems.org" -+ -+ specs_dir = File.join dir, 'specifications' -+ FileUtils.mkdir_p specs_dir -+ -+ open File.join(specs_dir, spec.spec_name), 'w' do |io| -+ io.write spec.to_ruby -+ end -+ -+ server = Gem::Server.new dir, process_based_port, false -+ -+ @req.parse data -+ -+ server.root @req, @res -+ -+ assert_equal 200, @res.status -+ assert_match 'validhomepagegemhttps 1', @res.body -+ -+ regex_match = /validhomepagegemhttps 1<\/b>[\n\s]+(<span title="rdoc not installed">\[rdoc\]<\/span>|<a href="\/doc_root\/validhomepagegemhttps-1\/">\[rdoc\]<\/a>)[\n\s]+<a href="https:\/\/rubygems\.org" title="https:\/\/rubygems\.org">\[www\]<\/a>/ -+ assert_match regex_match, @res.body -+ end -+ - def test_specs - data = StringIO.new "GET /specs.#{Gem.marshal_version} HTTP/1.0\r\n\r\n" - @req.parse data -diff --git test/rubygems/test_gem_specification.rb test/rubygems/test_gem_specification.rb -index 0fcc11e78f..1c68826fb3 100644 ---- ruby-2.4.3/test/rubygems/test_gem_specification.rb -+++ ruby-2.4.3/test/rubygems/test_gem_specification.rb -@@ -2890,7 +2890,22 @@ def test_validate_homepage - @a1.validate - end - -- assert_equal '"over at my cool site" is not a URI', e.message -+ assert_equal '"over at my cool site" is not a valid HTTP URI', e.message -+ -+ @a1.homepage = 'ftp://rubygems.org' -+ -+ e = assert_raises Gem::InvalidSpecificationException do -+ @a1.validate -+ end -+ -+ assert_equal '"ftp://rubygems.org" is not a valid HTTP URI', e.message -+ -+ @a1.homepage = 'http://rubygems.org' -+ assert_equal true, @a1.validate -+ -+ @a1.homepage = 'https://rubygems.org' -+ assert_equal true, @a1.validate -+ - end - end - diff --git a/gnu/packages/patches/rust-nettle-disable-vendor.patch b/gnu/packages/patches/rust-nettle-disable-vendor.patch new file mode 100644 index 0000000000..5b52821cdb --- /dev/null +++ b/gnu/packages/patches/rust-nettle-disable-vendor.patch @@ -0,0 +1,13 @@ +Subject: nettle: clear out "vendored" feature cruft from build.rs +From: Daniel Kahn Gillmor's avatarDaniel Kahn Gillmor <dkg@fifthhorseman.net> + +https://salsa.debian.org/rust-team/debcargo-conf/-/commit/b608e6beaa1d38c14fc16ad53780d94954a91900 +https://sources.debian.org/src/rust-nettle/7.0.0-1/debian/patches/disable-vendor.diff/ +--- a/Cargo.toml 1969-12-31 19:00:00.000000000 -0500 ++++ b/Cargo.toml 2019-10-23 19:12:01.076181971 -0400 +@@ -35,4 +35,4 @@ + version = "1" + + [features] +-vendored = ["nettle-sys/vendored"] ++vendored = [] diff --git a/gnu/packages/patches/rust-nettle-sys-disable-vendor.patch b/gnu/packages/patches/rust-nettle-sys-disable-vendor.patch new file mode 100644 index 0000000000..ae5ef5ebe0 --- /dev/null +++ b/gnu/packages/patches/rust-nettle-sys-disable-vendor.patch @@ -0,0 +1,48 @@ +Subject: nettle-sys: clear out "vendored" feature cruft from build.rs +From: Daniel Kahn Gillmor's avatarDaniel Kahn Gillmor <dkg@fifthhorseman.net> + +https://salsa.debian.org/rust-team/debcargo-conf/-/commit/0c71150ad26bb66a8396dcdab055181af232ddc5 +https://sources.debian.org/src/rust-nettle-sys/2.0.4-3/debian/patches/disable-vendor.diff/ +--- a/Cargo.toml 2019-10-23 13:08:07.000000000 -0400 ++++ b/Cargo.toml 2019-10-23 14:08:46.644064014 -0400 +@@ -29,12 +29,9 @@ + version = "0.51.1" + default-features = false + +-[build-dependencies.nettle-src] +-version = "3.5.1-0" +-optional = true +- + [build-dependencies.pkg-config] + version = "0.3" + + [features] + vendored = ["nettle-src"] ++nettle-src = [] +diff --git a/build.rs b/build.rs +index 44f7af3..ede4b2f 100644 +--- a/build.rs ++++ b/build.rs +@@ -1,7 +1,5 @@ + extern crate bindgen; + extern crate pkg_config; +-#[cfg(feature = "vendored")] +-extern crate nettle_src; + + use std::env; + use std::fs; +@@ -36,14 +34,6 @@ fn main() { + println!("cargo:rerun-if-env-changed=NETTLE_STATIC"); + println!("cargo:rerun-if-env-changed={}", NETTLE_PREGENERATED_BINDINGS); + +- #[cfg(feature = "vendored")] +- { +- let artifacts = nettle_src::Build::new().build(); +- println!("cargo:vendored=1"); +- env::set_var("PKG_CONFIG_PATH", +- artifacts.lib_dir().join("pkgconfig")); +- } +- + let nettle = pkg_config::probe_library("nettle hogweed").unwrap(); + + let mode = match env::var_os("NETTLE_STATIC") { diff --git a/gnu/packages/patches/screen-hurd-path-max.patch b/gnu/packages/patches/screen-hurd-path-max.patch new file mode 100644 index 0000000000..e906f154f3 --- /dev/null +++ b/gnu/packages/patches/screen-hurd-path-max.patch @@ -0,0 +1,42 @@ +Workaround for PATH_MAX usage on the Hurd. + +Taken from https://salsa.debian.org/debian/screen/-/blob/master/debian/patches/61-default-PATH_MAX-if-undefined-for-hurd.patch + +Description: Set PATH_MAX to 4096 if undefined + Fixes FTBFS since 4.4.0 on GNU/Hurd. Updated to add one more occurrence for 4.5.0. +Author: Axel Beckert <abe@debian.org> +Bug: https://savannah.gnu.org/bugs/?50089 +Last-Updated: 2017-01-18 + +--- a/tty.sh ++++ b/tty.sh +@@ -1478,6 +1478,13 @@ + return 0; + } + ++/* ++ * Define PATH_MAX to 4096 if it's not defined, like on GNU/Hurd ++ */ ++ ++#ifndef PATH_MAX ++#define PATH_MAX 4096 ++#endif + + int CheckTtyname (char *tty) + { +--- a/screen.h ++++ b/screen.h +@@ -109,6 +109,13 @@ + # define DEFAULT_BUFFERFILE "/tmp/screen-exchange" + #endif + ++/* ++ * Define PATH_MAX to 4096 if it's not defined, like on GNU/Hurd ++ */ ++ ++#ifndef PATH_MAX ++#define PATH_MAX 4096 ++#endif + + #if defined(hpux) && !(defined(VSUSP) && defined(VDSUSP) && defined(VWERASE) && defined(VLNEXT)) + # define HPUX_LTCHARS_HACK diff --git a/gnu/packages/patches/scribus-1.5.5-poppler-0.86-build-fix.patch b/gnu/packages/patches/scribus-1.5.5-poppler-0.86-build-fix.patch new file mode 100644 index 0000000000..39008cba5c --- /dev/null +++ b/gnu/packages/patches/scribus-1.5.5-poppler-0.86-build-fix.patch @@ -0,0 +1,642 @@ +Fix build with Poppler 0.86. + +The original series of patches authored by Craig Bradney <mrb@scribus.info> +and Jean Ghali <jghali@libertysurf.fr>, taken from +https://gitweb.gentoo.org/repo/gentoo.git/tree/app-office/scribus/files + +diff --git a/scribus/plugins/import/pdf/importpdf.cpp b/scribus/plugins/import/pdf/importpdf.cpp +--- a/scribus/plugins/import/pdf/importpdf.cpp ++++ b/scribus/plugins/import/pdf/importpdf.cpp +@@ -75,7 +75,11 @@ PdfPlug::PdfPlug(ScribusDoc* doc, int flags) + QImage PdfPlug::readThumbnail(const QString& fName) + { + QString pdfFile = QDir::toNativeSeparators(fName); ++#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 83, 0) ++ globalParams.reset(new GlobalParams()); ++#else + globalParams = new GlobalParams(); ++#endif + if (globalParams) + { + #if defined(Q_OS_WIN32) && POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 62, 0) +@@ -90,7 +94,9 @@ QImage PdfPlug::readThumbnail(const QString& fName) + if (pdfDoc->getErrorCode() == errEncrypted) + { + delete pdfDoc; ++#if POPPLER_ENCODED_VERSION < POPPLER_VERSION_ENCODE(0, 83, 0) + delete globalParams; ++#endif + return QImage(); + } + if (pdfDoc->isOk()) +@@ -134,11 +140,15 @@ QImage PdfPlug::readThumbnail(const QString& fName) + image.setText("YSize", QString("%1").arg(h)); + delete dev; + delete pdfDoc; ++#if POPPLER_ENCODED_VERSION < POPPLER_VERSION_ENCODE(0, 83, 0) + delete globalParams; ++#endif + return image; + } + delete pdfDoc; ++#if POPPLER_ENCODED_VERSION < POPPLER_VERSION_ENCODE(0, 83, 0) + delete globalParams; ++#endif + } + } + return QImage(); +@@ -387,7 +397,11 @@ bool PdfPlug::convert(const QString& fn) + qApp->processEvents(); + } + ++#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 83, 0) ++ globalParams.reset(new GlobalParams()); ++#else + globalParams = new GlobalParams(); ++#endif + GooString *userPW = nullptr; + if (globalParams) + { +@@ -429,7 +443,9 @@ bool PdfPlug::convert(const QString& fn) + if (progressDialog) + progressDialog->close(); + delete pdfDoc; ++#if POPPLER_ENCODED_VERSION < POPPLER_VERSION_ENCODE(0, 83, 0) + delete globalParams; ++#endif + return false; + } + if (progressDialog) +@@ -474,7 +490,9 @@ bool PdfPlug::convert(const QString& fn) + progressDialog->close(); + delete optImp; + delete pdfDoc; ++#if POPPLER_ENCODED_VERSION < POPPLER_VERSION_ENCODE(0, 83, 0) + delete globalParams; ++#endif + return false; + } + pageString = optImp->getPagesString(); +@@ -838,11 +856,20 @@ bool PdfPlug::convert(const QString& fn) + names = catDict.dictLookup("OpenAction"); + if (names.isDict()) + { ++#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 86, 0) ++ std::unique_ptr<LinkAction> linkAction; ++ linkAction = LinkAction::parseAction(&names, pdfDoc->getCatalog()->getBaseURI()); ++#else + LinkAction *linkAction = nullptr; + linkAction = LinkAction::parseAction(&names, pdfDoc->getCatalog()->getBaseURI()); ++#endif + if (linkAction) + { +- LinkJavaScript *jsa = (LinkJavaScript*)linkAction; ++#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 86, 0) ++ LinkJavaScript *jsa = (LinkJavaScript*) linkAction.get(); ++#else ++ LinkJavaScript *jsa = (LinkJavaScript*) linkAction; ++#endif + if (jsa->isOk()) + { + QString script = UnicodeParsedString(jsa->getScript()); +@@ -908,8 +935,12 @@ bool PdfPlug::convert(const QString& fn) + } + delete pdfDoc; + } ++#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 83, 0) ++ globalParams.release(); ++#else + delete globalParams; + globalParams = nullptr; ++#endif + + // qDebug() << "converting finished"; + // qDebug() << "Imported" << Elements.count() << "Elements"; +@@ -1046,3 +1077,43 @@ QString PdfPlug::UnicodeParsedString(POPPLER_CONST GooString *s1) + } + return result; + } ++ ++QString PdfPlug::UnicodeParsedString(const std::string& s1) ++{ ++ if (s1.length() == 0) ++ return QString(); ++ GBool isUnicode; ++ int i; ++ Unicode u; ++ QString result; ++ if ((s1.at(0) & 0xff) == 0xfe && (s1.length() > 1 && (s1.at(1) & 0xff) == 0xff)) ++ { ++ isUnicode = gTrue; ++ i = 2; ++ result.reserve((s1.length() - 2) / 2); ++ } ++ else ++ { ++ isUnicode = gFalse; ++ i = 0; ++ result.reserve(s1.length()); ++ } ++ while (i < s1.length()) ++ { ++ if (isUnicode) ++ { ++ u = ((s1.at(i) & 0xff) << 8) | (s1.at(i+1) & 0xff); ++ i += 2; ++ } ++ else ++ { ++ u = s1.at(i) & 0xff; ++ ++i; ++ } ++ // #15616: imagemagick may write unicode strings incorrectly in PDF ++ if (u == 0) ++ continue; ++ result += QChar( u ); ++ } ++ return result; ++} +diff --git a/scribus/plugins/import/pdf/importpdf.h b/scribus/plugins/import/pdf/importpdf.h +--- a/scribus/plugins/import/pdf/importpdf.h ++++ b/scribus/plugins/import/pdf/importpdf.h +@@ -82,6 +82,7 @@ private: + bool convert(const QString& fn); + QRectF getCBox(int box, int pgNum); + QString UnicodeParsedString(POPPLER_CONST GooString *s1); ++ QString UnicodeParsedString(const std::string& s1); + + QList<PageItem*> Elements; + double baseX, baseY; +diff --git a/scribus/plugins/import/pdf/importpdfconfig.h b/scribus/plugins/import/pdf/importpdfconfig.h +--- a/scribus/plugins/import/pdf/importpdfconfig.h ++++ b/scribus/plugins/import/pdf/importpdfconfig.h +@@ -52,4 +52,16 @@ for which a new license (GPL+exception) is in place. + #define POPPLER_REF + #endif + ++#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 82, 0) ++#define POPPLER_CONST_082 const ++#else ++#define POPPLER_CONST_082 ++#endif ++ ++#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 83, 0) ++#define POPPLER_CONST_083 const ++#else ++#define POPPLER_CONST_083 ++#endif ++ + #endif +diff --git a/scribus/plugins/import/pdf/slaoutput.cpp b/scribus/plugins/import/pdf/slaoutput.cpp +--- a/scribus/plugins/import/pdf/slaoutput.cpp ++++ b/scribus/plugins/import/pdf/slaoutput.cpp +@@ -308,9 +308,15 @@ LinkAction* SlaOutputDev::SC_getAction(AnnotWidget *ano) + } + + /* Replacement for the crippled Poppler function LinkAction* AnnotWidget::getAdditionalAction(AdditionalActionsType type) */ ++#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 86, 0) ++std::unique_ptr<LinkAction> SlaOutputDev::SC_getAdditionalAction(const char *key, AnnotWidget *ano) ++{ ++ std::unique_ptr<LinkAction> linkAction; ++#else + LinkAction* SlaOutputDev::SC_getAdditionalAction(const char *key, AnnotWidget *ano) + { + LinkAction *linkAction = nullptr; ++#endif + Object obj; + Ref refa = ano->getRef(); + +@@ -455,7 +461,11 @@ bool SlaOutputDev::handleLinkAnnot(Annot* annota, double xCoor, double yCoor, do + POPPLER_CONST GooString *ndst = gto->getNamedDest(); + if (ndst) + { ++#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 86, 0) ++ std::unique_ptr<LinkDest> dstn = pdfDoc->findDest(ndst); ++#else + LinkDest *dstn = pdfDoc->findDest(ndst); ++#endif + if (dstn) + { + if (dstn->getKind() == destXYZ) +@@ -499,7 +509,11 @@ bool SlaOutputDev::handleLinkAnnot(Annot* annota, double xCoor, double yCoor, do + POPPLER_CONST GooString *ndst = gto->getNamedDest(); + if (ndst) + { ++#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 86, 0) ++ std::unique_ptr<LinkDest> dstn = pdfDoc->findDest(ndst); ++#else + LinkDest *dstn = pdfDoc->findDest(ndst); ++#endif + if (dstn) + { + if (dstn->getKind() == destXYZ) +@@ -967,7 +981,11 @@ void SlaOutputDev::handleActions(PageItem* ite, AnnotWidget *ano) + POPPLER_CONST GooString *ndst = gto->getNamedDest(); + if (ndst) + { ++#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 86, 0) ++ std::unique_ptr<LinkDest> dstn = pdfDoc->findDest(ndst); ++#else + LinkDest *dstn = pdfDoc->findDest(ndst); ++#endif + if (dstn) + { + if (dstn->getKind() == destXYZ) +@@ -1019,7 +1037,11 @@ void SlaOutputDev::handleActions(PageItem* ite, AnnotWidget *ano) + POPPLER_CONST GooString *ndst = gto->getNamedDest(); + if (ndst) + { ++#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 86, 0) ++ std::unique_ptr<LinkDest> dstn = pdfDoc->findDest(ndst); ++#else + LinkDest *dstn = pdfDoc->findDest(ndst); ++#endif + if (dstn) + { + if (dstn->getKind() == destXYZ) +@@ -1088,96 +1110,148 @@ void SlaOutputDev::handleActions(PageItem* ite, AnnotWidget *ano) + else + qDebug() << "Found unsupported Action of type" << Lact->getKind(); + } +- LinkAction *Aact = SC_getAdditionalAction("D", ano); ++ auto Aact = SC_getAdditionalAction("D", ano); + if (Aact) + { + if (Aact->getKind() == actionJavaScript) + { +- LinkJavaScript *jsa = (LinkJavaScript*)Aact; ++#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 86, 0) ++ LinkJavaScript *jsa = (LinkJavaScript*) Aact.get(); ++#else ++ LinkJavaScript *jsa = (LinkJavaScript*) Aact; ++#endif + if (jsa->isOk()) + { + ite->annotation().setD_act(UnicodeParsedString(jsa->getScript())); + ite->annotation().setAAact(true); + } + } ++#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 86, 0) ++ Aact.reset(); ++#else + Aact = nullptr; ++#endif + } + Aact = SC_getAdditionalAction("E", ano); + if (Aact) + { + if (Aact->getKind() == actionJavaScript) + { +- LinkJavaScript *jsa = (LinkJavaScript*)Aact; ++#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 86, 0) ++ LinkJavaScript *jsa = (LinkJavaScript*) Aact.get(); ++#else ++ LinkJavaScript *jsa = (LinkJavaScript*) Aact; ++#endif + if (jsa->isOk()) + { + ite->annotation().setE_act(UnicodeParsedString(jsa->getScript())); + ite->annotation().setAAact(true); + } + } ++#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 86, 0) ++ Aact.reset(); ++#else + Aact = nullptr; ++#endif + } + Aact = SC_getAdditionalAction("X", ano); + if (Aact) + { + if (Aact->getKind() == actionJavaScript) + { +- LinkJavaScript *jsa = (LinkJavaScript*)Aact; ++#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 86, 0) ++ LinkJavaScript *jsa = (LinkJavaScript*) Aact.get(); ++#else ++ LinkJavaScript *jsa = (LinkJavaScript*) Aact; ++#endif + if (jsa->isOk()) + { + ite->annotation().setX_act(UnicodeParsedString(jsa->getScript())); + ite->annotation().setAAact(true); + } + } ++#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 86, 0) ++ Aact.reset(); ++#else + Aact = nullptr; ++#endif + } + Aact = SC_getAdditionalAction("Fo", ano); + if (Aact) + { + if (Aact->getKind() == actionJavaScript) + { +- LinkJavaScript *jsa = (LinkJavaScript*)Aact; ++#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 86, 0) ++ LinkJavaScript *jsa = (LinkJavaScript*) Aact.get(); ++#else ++ LinkJavaScript *jsa = (LinkJavaScript*) Aact; ++#endif + if (jsa->isOk()) + { + ite->annotation().setFo_act(UnicodeParsedString(jsa->getScript())); + ite->annotation().setAAact(true); + } + } ++#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 86, 0) ++ Aact.reset(); ++#else + Aact = nullptr; ++#endif + } + Aact = SC_getAdditionalAction("Bl", ano); + if (Aact) + { + if (Aact->getKind() == actionJavaScript) + { +- LinkJavaScript *jsa = (LinkJavaScript*)Aact; ++#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 86, 0) ++ LinkJavaScript *jsa = (LinkJavaScript*) Aact.get(); ++#else ++ LinkJavaScript *jsa = (LinkJavaScript*) Aact; ++#endif + if (jsa->isOk()) + { + ite->annotation().setBl_act(UnicodeParsedString(jsa->getScript())); + ite->annotation().setAAact(true); + } + } ++#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 86, 0) ++ Aact.reset(); ++#else + Aact = nullptr; ++#endif + } + Aact = SC_getAdditionalAction("C", ano); + if (Aact) + { + if (Aact->getKind() == actionJavaScript) + { +- LinkJavaScript *jsa = (LinkJavaScript*)Aact; ++#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 86, 0) ++ LinkJavaScript *jsa = (LinkJavaScript*) Aact.get(); ++#else ++ LinkJavaScript *jsa = (LinkJavaScript*) Aact; ++#endif + if (jsa->isOk()) + { + ite->annotation().setC_act(UnicodeParsedString(jsa->getScript())); + ite->annotation().setAAact(true); + } + } ++#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 86, 0) ++ Aact.reset(); ++#else + Aact = nullptr; ++#endif + } + Aact = SC_getAdditionalAction("F", ano); + if (Aact) + { + if (Aact->getKind() == actionJavaScript) + { +- LinkJavaScript *jsa = (LinkJavaScript*)Aact; ++#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 86, 0) ++ LinkJavaScript *jsa = (LinkJavaScript*) Aact.get(); ++#else ++ LinkJavaScript *jsa = (LinkJavaScript*) Aact; ++#endif + if (jsa->isOk()) + { + ite->annotation().setF_act(UnicodeParsedString(jsa->getScript())); +@@ -1185,14 +1259,22 @@ void SlaOutputDev::handleActions(PageItem* ite, AnnotWidget *ano) + ite->annotation().setFormat(5); + } + } ++#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 86, 0) ++ Aact.reset(); ++#else + Aact = nullptr; ++#endif + } + Aact = SC_getAdditionalAction("K", ano); + if (Aact) + { + if (Aact->getKind() == actionJavaScript) + { +- LinkJavaScript *jsa = (LinkJavaScript*)Aact; ++#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 86, 0) ++ LinkJavaScript *jsa = (LinkJavaScript*) Aact.get(); ++#else ++ LinkJavaScript *jsa = (LinkJavaScript*) Aact; ++#endif + if (jsa->isOk()) + { + ite->annotation().setK_act(UnicodeParsedString(jsa->getScript())); +@@ -1200,21 +1282,33 @@ void SlaOutputDev::handleActions(PageItem* ite, AnnotWidget *ano) + ite->annotation().setFormat(5); + } + } ++#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 86, 0) ++ Aact.reset(); ++#else + Aact = nullptr; ++#endif + } + Aact = SC_getAdditionalAction("V", ano); + if (Aact) + { + if (Aact->getKind() == actionJavaScript) + { +- LinkJavaScript *jsa = (LinkJavaScript*)Aact; ++#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 86, 0) ++ LinkJavaScript *jsa = (LinkJavaScript*) Aact.get(); ++#else ++ LinkJavaScript *jsa = (LinkJavaScript*) Aact; ++#endif + if (jsa->isOk()) + { + ite->annotation().setV_act(UnicodeParsedString(jsa->getScript())); + ite->annotation().setAAact(true); + } + } ++#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 86, 0) ++ Aact.reset(); ++#else + Aact = nullptr; ++#endif + } + } + +@@ -1224,6 +1318,11 @@ void SlaOutputDev::startDoc(PDFDoc *doc, XRef *xrefA, Catalog *catA) + catalog = catA; + pdfDoc = doc; + updateGUICounter = 0; ++#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 84, 0) ++ m_fontEngine = new SplashFontEngine(true, true, true, true); ++#elif POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 61, 0) ++ m_fontEngine = new SplashFontEngine(globalParams->getEnableFreeType(), true, true, true); ++#else + m_fontEngine = new SplashFontEngine( + #if HAVE_T1LIB_H + globalParams->getEnableT1lib(), +@@ -1234,6 +1333,7 @@ void SlaOutputDev::startDoc(PDFDoc *doc, XRef *xrefA, Catalog *catA) + true, + #endif + true); ++#endif + } + + void SlaOutputDev::startPage(int pageNum, GfxState *, XRef *) +@@ -2784,7 +2884,7 @@ void SlaOutputDev::drawMaskedImage(GfxState *state, Object *ref, Stream *str, i + delete[] mbuffer; + } + +-void SlaOutputDev::drawImage(GfxState *state, Object *ref, Stream *str, int width, int height, GfxImageColorMap *colorMap, GBool interpolate, int *maskColors, GBool inlineImg) ++void SlaOutputDev::drawImage(GfxState *state, Object *ref, Stream *str, int width, int height, GfxImageColorMap *colorMap, GBool interpolate, POPPLER_CONST_082 int* maskColors, GBool inlineImg) + { + ImageStream * imgStr = new ImageStream(str, width, colorMap->getNumPixelComps(), colorMap->getBits()); + // qDebug() << "Image Components" << colorMap->getNumPixelComps() << "Mask" << maskColors; +@@ -3365,7 +3465,7 @@ err1: + fontsrc->unref(); + } + +-void SlaOutputDev::drawChar(GfxState *state, double x, double y, double dx, double dy, double originX, double originY, CharCode code, int nBytes, Unicode *u, int uLen) ++void SlaOutputDev::drawChar(GfxState *state, double x, double y, double dx, double dy, double originX, double originY, CharCode code, int nBytes, POPPLER_CONST_082 Unicode *u, int uLen) + { + double x1, y1, x2, y2; + int render; +@@ -3452,7 +3552,7 @@ void SlaOutputDev::drawChar(GfxState *state, double x, double y, double dx, doub + } + } + +-GBool SlaOutputDev::beginType3Char(GfxState *state, double x, double y, double dx, double dy, CharCode code, Unicode *u, int uLen) ++GBool SlaOutputDev::beginType3Char(GfxState *state, double x, double y, double dx, double dy, CharCode code, POPPLER_CONST_082 Unicode *u, int uLen) + { + // qDebug() << "beginType3Char"; + GfxFont *gfxFont; +@@ -3705,7 +3805,7 @@ QString SlaOutputDev::getAnnotationColor(const AnnotColor *color) + return fNam; + } + +-QString SlaOutputDev::convertPath(GfxPath *path) ++QString SlaOutputDev::convertPath(POPPLER_CONST_083 GfxPath *path) + { + if (! path) + return QString(); +@@ -3715,7 +3815,7 @@ QString SlaOutputDev::convertPath(GfxPath *path) + + for (int i = 0; i < path->getNumSubpaths(); ++i) + { +- GfxSubpath * subpath = path->getSubpath(i); ++ POPPLER_CONST_083 GfxSubpath * subpath = path->getSubpath(i); + if (subpath->getNumPoints() > 0) + { + output += QString("M %1 %2").arg(subpath->getX(0)).arg(subpath->getY(0)); +@@ -3922,6 +4022,46 @@ QString SlaOutputDev::UnicodeParsedString(POPPLER_CONST GooString *s1) + return result; + } + ++QString SlaOutputDev::UnicodeParsedString(const std::string& s1) ++{ ++ if (s1.length() == 0) ++ return QString(); ++ GBool isUnicode; ++ int i; ++ Unicode u; ++ QString result; ++ if ((s1.at(0) & 0xff) == 0xfe && (s1.length() > 1 && (s1.at(1) & 0xff) == 0xff)) ++ { ++ isUnicode = gTrue; ++ i = 2; ++ result.reserve((s1.length() - 2) / 2); ++ } ++ else ++ { ++ isUnicode = gFalse; ++ i = 0; ++ result.reserve(s1.length()); ++ } ++ while (i < s1.length()) ++ { ++ if (isUnicode) ++ { ++ u = ((s1.at(i) & 0xff) << 8) | (s1.at(i+1) & 0xff); ++ i += 2; ++ } ++ else ++ { ++ u = s1.at(i) & 0xff; ++ ++i; ++ } ++ // #15616: imagemagick may write unicode strings incorrectly in PDF ++ if (u == 0) ++ continue; ++ result += QChar( u ); ++ } ++ return result; ++} ++ + bool SlaOutputDev::checkClip() + { + bool ret = false; +diff --git a/scribus/plugins/import/pdf/slaoutput.h b/scribus/plugins/import/pdf/slaoutput.h +--- a/scribus/plugins/import/pdf/slaoutput.h ++++ b/scribus/plugins/import/pdf/slaoutput.h +@@ -20,6 +20,8 @@ for which a new license (GPL+exception) is in place. + #include <QTextStream> + #include <QTransform> + ++#include <memory> ++ + #include "fpointarray.h" + #include "importpdfconfig.h" + #include "pageitem.h" +@@ -159,7 +161,11 @@ public: + virtual ~SlaOutputDev(); + + LinkAction* SC_getAction(AnnotWidget *ano); ++#if POPPLER_ENCODED_VERSION >= POPPLER_VERSION_ENCODE(0, 86, 0) ++ std::unique_ptr<LinkAction> SC_getAdditionalAction(const char *key, AnnotWidget *ano); ++#else + LinkAction* SC_getAdditionalAction(const char *key, AnnotWidget *ano); ++#endif + static GBool annotations_callback(Annot *annota, void *user_data); + bool handleTextAnnot(Annot* annota, double xCoor, double yCoor, double width, double height); + bool handleLinkAnnot(Annot* annota, double xCoor, double yCoor, double width, double height); +@@ -229,7 +235,7 @@ public: + + //----- image drawing + void drawImageMask(GfxState *state, Object *ref, Stream *str, int width, int height, GBool invert, GBool interpolate, GBool inlineImg) override; +- void drawImage(GfxState *state, Object *ref, Stream *str, int width, int height, GfxImageColorMap *colorMap, GBool interpolate, int *maskColors, GBool inlineImg) override; ++ void drawImage(GfxState *state, Object *ref, Stream *str, int width, int height, GfxImageColorMap *colorMap, GBool interpolate, POPPLER_CONST_082 int *maskColors, GBool inlineImg) override; + void drawSoftMaskedImage(GfxState *state, Object *ref, Stream *str, + int width, int height, + GfxImageColorMap *colorMap, +@@ -261,8 +267,8 @@ public: + //----- text drawing + void beginTextObject(GfxState *state) override; + void endTextObject(GfxState *state) override; +- void drawChar(GfxState *state, double /*x*/, double /*y*/, double /*dx*/, double /*dy*/, double /*originX*/, double /*originY*/, CharCode /*code*/, int /*nBytes*/, Unicode * /*u*/, int /*uLen*/) override; +- GBool beginType3Char(GfxState * /*state*/, double /*x*/, double /*y*/, double /*dx*/, double /*dy*/, CharCode /*code*/, Unicode * /*u*/, int /*uLen*/) override; ++ void drawChar(GfxState *state, double /*x*/, double /*y*/, double /*dx*/, double /*dy*/, double /*originX*/, double /*originY*/, CharCode /*code*/, int /*nBytes*/, POPPLER_CONST_082 Unicode * /*u*/, int /*uLen*/) override; ++ GBool beginType3Char(GfxState * /*state*/, double /*x*/, double /*y*/, double /*dx*/, double /*dy*/, CharCode /*code*/, POPPLER_CONST_082 Unicode * /*u*/, int /*uLen*/) override; + void endType3Char(GfxState * /*state*/) override; + void type3D0(GfxState * /*state*/, double /*wx*/, double /*wy*/) override; + void type3D1(GfxState * /*state*/, double /*wx*/, double /*wy*/, double /*llx*/, double /*lly*/, double /*urx*/, double /*ury*/) override; +@@ -282,11 +288,12 @@ private: + void getPenState(GfxState *state); + QString getColor(GfxColorSpace *color_space, POPPLER_CONST_070 GfxColor *color, int *shade); + QString getAnnotationColor(const AnnotColor *color); +- QString convertPath(GfxPath *path); ++ QString convertPath(POPPLER_CONST_083 GfxPath *path); + int getBlendMode(GfxState *state); + void applyMask(PageItem *ite); + void pushGroup(const QString& maskName = "", GBool forSoftMask = gFalse, GBool alpha = gFalse, bool inverted = false); + QString UnicodeParsedString(POPPLER_CONST GooString *s1); ++ QString UnicodeParsedString(const std::string& s1); + bool checkClip(); + bool pathIsClosed; + QString CurrColorFill; diff --git a/gnu/packages/patches/seahorse-gkr-use-0-on-empty-flags.patch b/gnu/packages/patches/seahorse-gkr-use-0-on-empty-flags.patch deleted file mode 100644 index 55866d2973..0000000000 --- a/gnu/packages/patches/seahorse-gkr-use-0-on-empty-flags.patch +++ /dev/null @@ -1,32 +0,0 @@ -Patch from <https://gitlab.gnome.org/GNOME/seahorse/commit/d9db29db567012b7c72e85e1be1fbf55fcc9b667>. - -From d9db29db567012b7c72e85e1be1fbf55fcc9b667 Mon Sep 17 00:00:00 2001 -From: Niels De Graef <nielsdegraef@gmail.com> -Date: Sat, 11 May 2019 09:02:34 +0200 -Subject: [PATCH] gkr: Use 0 on empty flags - -A Flags-type variable without any flag set can be replaced with 0, so -this is a safe thing to do. It also prevents us from having to deal with -the accidental API break in libsecret (see -https://gitlab.gnome.org/GNOME/libsecret/merge_requests/19) ---- - gkr/gkr-keyring-add.vala | 3 +-- - 1 file changed, 1 insertion(+), 2 deletions(-) - -diff --git a/gkr/gkr-keyring-add.vala b/gkr/gkr-keyring-add.vala -index 4e92a520..f60c9a22 100644 ---- a/gkr/gkr-keyring-add.vala -+++ b/gkr/gkr-keyring-add.vala -@@ -41,8 +41,7 @@ public class Seahorse.Gkr.KeyringAdd : Gtk.Dialog { - - var cancellable = Dialog.begin_request(this); - var service = Backend.instance().service; -- Secret.Collection.create.begin(service, this.name_entry.text, null, -- Secret.CollectionCreateFlags.COLLECTION_CREATE_NONE, -+ Secret.Collection.create.begin(service, this.name_entry.text, null, 0, - cancellable, (obj, res) => { - /* Clear the operation without cancelling it since it is complete */ - Dialog.complete_request(this, false); --- -2.23.0 - diff --git a/gnu/packages/patches/shadow-hurd-pctrl.patch b/gnu/packages/patches/shadow-hurd-pctrl.patch new file mode 100644 index 0000000000..2e376e19a9 --- /dev/null +++ b/gnu/packages/patches/shadow-hurd-pctrl.patch @@ -0,0 +1,16 @@ +Avoid including sys/prctl.h on the Hurd. + +Upstream status: Not submitted. + +--- shadow-4.8.1/libmisc/idmapping.c.orig 2020-03-07 16:32:05.000000000 -0500 ++++ shadow-4.8.1/libmisc/idmapping.c 2020-03-07 16:32:27.000000000 -0500 +@@ -36,8 +36,8 @@ + #include <stdio.h> + #include "prototypes.h" + #include "idmapping.h" +-#include <sys/prctl.h> + #if HAVE_SYS_CAPABILITY_H ++#include <sys/prctl.h> + #include <sys/capability.h> + #endif + diff --git a/gnu/packages/patches/swig-guile-gc.patch b/gnu/packages/patches/swig-guile-gc.patch deleted file mode 100644 index 0e745a6247..0000000000 --- a/gnu/packages/patches/swig-guile-gc.patch +++ /dev/null @@ -1,76 +0,0 @@ -Fix garbage collection for Guile versions >= 2.0.12. This issue showed -up when running the tests on i686-linux. - -Taken from this upstream commit: -https://github.com/swig/swig/commit/38f2ab0c30e369e63bbd0a6152108488d0de68e1 - -diff --git a/Lib/guile/guile_scm_run.swg b/Lib/guile/guile_scm_run.swg -index 274f197158..0d04cb7c62 100644 ---- a/Lib/guile/guile_scm_run.swg -+++ b/Lib/guile/guile_scm_run.swg -@@ -99,6 +99,7 @@ SWIG_Guile_scm2newstr(SCM str, size_t *len) { - static int swig_initialized = 0; - static scm_t_bits swig_tag = 0; - static scm_t_bits swig_collectable_tag = 0; -+static scm_t_bits swig_finalized_tag = 0; - static scm_t_bits swig_destroyed_tag = 0; - static scm_t_bits swig_member_function_tag = 0; - static SCM swig_make_func = SCM_EOL; -@@ -163,7 +164,19 @@ SWIG_Guile_PointerType(SCM object) - } - else scm_wrong_type_arg("SWIG-Guile-PointerType", 1, object); - } -- -+ -+SWIGINTERN int -+SWIG_Guile_IsValidSmob(SCM smob) -+{ -+ /* We do not accept smobs representing destroyed pointers, but we have to -+ allow finalized smobs because Guile >= 2.0.12 sets all smob instances -+ to the 'finalized' type before calling their 'free' function. This change -+ was introduced to Guile in commit 8dff3af087c6eaa83ae0d72aa8b22aef5c65d65d */ -+ return SCM_SMOB_PREDICATE(swig_tag, smob) -+ || SCM_SMOB_PREDICATE(swig_collectable_tag, smob) -+ || SCM_SMOB_PREDICATE(swig_finalized_tag, smob); -+} -+ - SWIGINTERN int - SWIG_Guile_ConvertPtr(SCM s, void **result, swig_type_info *type, int flags) - { -@@ -179,8 +192,7 @@ SWIG_Guile_ConvertPtr(SCM s, void **result, swig_type_info *type, int flags) - *result = SCM_POINTER_VALUE(s); - return SWIG_OK; - #endif /* if SCM_MAJOR_VERSION >= 2 */ -- } else if (SCM_SMOB_PREDICATE(swig_tag, smob) || SCM_SMOB_PREDICATE(swig_collectable_tag, smob)) { -- /* we do not accept smobs representing destroyed pointers */ -+ } else if (SWIG_Guile_IsValidSmob(smob)) { - from = (swig_type_info *) SCM_CELL_WORD_2(smob); - if (!from) return SWIG_ERROR; - if (type) { -@@ -239,7 +251,7 @@ SWIG_Guile_MarkPointerNoncollectable(SCM s) - { - SCM smob = SWIG_Guile_GetSmob(s); - if (!SCM_NULLP(smob)) { -- if (SCM_SMOB_PREDICATE(swig_tag, smob) || SCM_SMOB_PREDICATE(swig_collectable_tag, smob)) { -+ if (SWIG_Guile_IsValidSmob(smob)) { - SCM_SET_CELL_TYPE(smob, swig_tag); - } - else scm_wrong_type_arg(NULL, 0, s); -@@ -252,7 +264,7 @@ SWIG_Guile_MarkPointerDestroyed(SCM s) - { - SCM smob = SWIG_Guile_GetSmob(s); - if (!SCM_NULLP(smob)) { -- if (SCM_SMOB_PREDICATE(swig_tag, smob) || SCM_SMOB_PREDICATE(swig_collectable_tag, smob)) { -+ if (SWIG_Guile_IsValidSmob(smob)) { - SCM_SET_CELL_TYPE(smob, swig_destroyed_tag); - } - else scm_wrong_type_arg(NULL, 0, s); -@@ -419,6 +431,8 @@ SWIG_Guile_Init () - scm_set_smob_print(swig_collectable_tag, print_collectable_swig); - scm_set_smob_equalp(swig_collectable_tag, equalp_swig); - scm_set_smob_free(swig_collectable_tag, free_swig); -+ /* For Guile >= 2.0.12. See libguile/smob.c:clear_smobnum */ -+ swig_finalized_tag = swig_collectable_tag & ~0xff00; - } - if (ensure_smob_tag(swig_module, &swig_destroyed_tag, - "destroyed-swig-pointer", "destroyed-swig-pointer-tag")) { diff --git a/gnu/packages/patches/tcl-fix-cross-compilation.patch b/gnu/packages/patches/tcl-fix-cross-compilation.patch new file mode 100644 index 0000000000..00c36b8f27 --- /dev/null +++ b/gnu/packages/patches/tcl-fix-cross-compilation.patch @@ -0,0 +1,39 @@ +From f7fa48c4c75a1e748dc5071e709c0b62ff739eaa Mon Sep 17 00:00:00 2001 +From: "jan.nijtmans" <nijtmans@users.sourceforge.net> +Date: Mon, 9 Dec 2019 10:02:20 +0000 +Subject: [PATCH] Fix [abd4abedd2]: Failed to build tk 8.6.10 with cross + compile + +Patch taken from upstream to fix cross-compilation. To be removed on next Tcl release. + +--- + compat/strtol.c | 2 +- + compat/strtoul.c | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/compat/strtol.c b/compat/strtol.c +index b7f69196ce2..811006a64c3 100644 +--- a/compat/strtol.c ++++ b/compat/strtol.c +@@ -53,7 +53,7 @@ strtol( + */ + + p = string; +- while (TclIsSpaceProc(*p)) { ++ while (isspace(UCHAR(*p))) { + p += 1; + } + +diff --git a/compat/strtoul.c b/compat/strtoul.c +index e37eb05f823..15587f1da1a 100644 +--- a/compat/strtoul.c ++++ b/compat/strtoul.c +@@ -74,7 +74,7 @@ strtoul( + */ + + p = string; +- while (TclIsSpaceProc(*p)) { ++ while (isspace(UCHAR(*p))) { + p += 1; + } + if (*p == '-') { diff --git a/gnu/packages/patches/tcsh-fix-autotest.patch b/gnu/packages/patches/tcsh-fix-autotest.patch index 78444a1b2a..200867cb9b 100644 --- a/gnu/packages/patches/tcsh-fix-autotest.patch +++ b/gnu/packages/patches/tcsh-fix-autotest.patch @@ -63,38 +63,14 @@ AT_DATA([comment2.csh], [[echo testing...@%:@\ -@@ -567,10 +567,10 @@ run=3 -# Adapt to changes in sed 4.3: -# https://github.com/tcsh-org/tcsh/commit/2ad4fc1705893207598ed5cd21713ddf3f17bba0 - ]]) - AT_DATA([uniformity_test.csh], - [[ --set SERVICE_NAME_LOG = `cat batchsystem.properties | grep '^jdbc_url' | sed -ne 's/^[^=]*=[^@]*@[:blank:]*\([^$]*\)$/\1/p' | perl -pe 's/\s//g' | perl -pe 's/\)/\\\)/g' | perl -pe 's/\(/\\\(/g'` -+set SERVICE_NAME_LOG = `cat batchsystem.properties | grep '^jdbc_url' | sed -ne 's/^[^=]*=[^@]*@[[:blank:]]*\([^$]*\)$/\1/p' | perl -pe 's/\s//g' | perl -pe 's/\)/\\\)/g' | perl -pe 's/\(/\\\(/g'` - echo -n "$SERVICE_NAME_LOG" > ./output1 - --cat batchsystem.properties | grep '^jdbc_url' | sed -ne 's/^[^=]*=[^@]*@[:blank:]*\([^$]*\)$/\1/p' | perl -pe 's/\s//g' | perl -pe 's/\)/\\\)/g' | perl -pe 's/\(/\\\(/g' > ./output2 -+cat batchsystem.properties | grep '^jdbc_url' | sed -ne 's/^[^=]*=[^@]*@[[:blank:]]*\([^$]*\)$/\1/p' | perl -pe 's/\s//g' | perl -pe 's/\)/\\\)/g' | perl -pe 's/\(/\\\(/g' > ./output2 - - diff -uprN ./output1 ./output2 >& /dev/null - -@@ -587,7 +587,7 @@ AT_DATA([quoting_result_test.csh], - echo "(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP\)(HOST=db\)(PORT=1521\)\)(CONNECT_DATA=(SERVER=DEDICATED\)(SERVICE_NAME=bns03\)\)\)" > ./expected_result - - set string = "jdbc_url=jdbc:oracle:thin:@(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)(HOST=db)(PORT=1521))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=bns03)))" --set SERVICE_NAME_LOG = `echo "$string" | grep '^jdbc_url' | sed -ne 's/^[^=]*=[^@]*@[:blank:]*\([^$]*\)$/\1/p' | perl -pe 's/\)/\\\)/g'` -+set SERVICE_NAME_LOG = `echo "$string" | grep '^jdbc_url' | sed -ne 's/^[^=]*=[^@]*@[[:blank:]]*\([^$]*\)$/\1/p' | perl -pe 's/\)/\\\)/g'` - - echo "$SERVICE_NAME_LOG" > ./actual_result - --- tests/subst.at +++ tests/subst.at -@@ -54,7 +54,7 @@ AT_CHECK([echo 'echo ~; echo "$HOME"' | tcsh -f | uniq | wc -l | tr -d ' \t'], +@@ -54,7 +54,7 @@ AT_CHECK([export HOME=$(getent passwd $(id -un) | awk -F: '{ print $(NF - 1) }') , [1 ]) --AT_CHECK([echo "echo ~$(id -un)/foo; echo \"$HOME/foo\"" | tcsh -f | uniq dnl -+AT_CHECK([echo "echo ~$(id -un)/foo; echo \"$HOME/foo\"" | tcsh -f | grep -v "/homeless-shelter" | uniq dnl +-AT_CHECK([export HOME=$(getent passwd $(id -un) | awk -F: '{ print $(NF - 1) }'); echo "echo ~$(id -un)/foo; echo \"\$HOME/foo\"" | tcsh -f | uniq dnl ++AT_CHECK([export HOME=$(getent passwd $(id -un) | awk -F: '{ print $(NF - 1) }'); echo "echo ~$(id -un)//foo; echo \"\$HOME/foo\"" | tcsh -f | uniq dnl | wc -l | tr -d ' \t'], , [1 ]) @@ -110,21 +86,6 @@ ]]) chmod a+x args.sh AT_CHECK([tcsh -f listflags.csh], , -@@ -704,9 +705,9 @@ AT_CHECK([tcsh -f mail.csh], , -# This test fails by trying to change to the build user's home -# directory, which does not exist. - AT_CLEANUP - - --AT_SETUP([$ cdtohome]) --AT_CHECK([tcsh -f -c 'cd'], 0) --AT_CLEANUP -+#AT_SETUP([$ cdtohome]) -+#AT_CHECK([tcsh -f -c 'cd'], 0) -+#AT_CLEANUP - AT_SETUP([$ noimplicithome]) - AT_CHECK([tcsh -f -c 'unset cdtohome; cd'], 1, , [cd: Too few arguments. - ]) @@ -728,55 +729,57 @@ TCSH_UNTESTED([$ oid]) AT_SETUP([$ owd]) diff --git a/gnu/packages/patches/tcsh-fix-out-of-bounds-read.patch b/gnu/packages/patches/tcsh-fix-out-of-bounds-read.patch deleted file mode 100644 index 48c294f78e..0000000000 --- a/gnu/packages/patches/tcsh-fix-out-of-bounds-read.patch +++ /dev/null @@ -1,31 +0,0 @@ -Fix out-of-bounds read in c_substitute(): - -http://seclists.org/oss-sec/2016/q4/612 - -Patch copied from upstream source repository: - -https://github.com/tcsh-org/tcsh/commit/6a542dc4fb2ba26518a47e9b3a9bcd6a91b94596 - -From 6a542dc4fb2ba26518a47e9b3a9bcd6a91b94596 Mon Sep 17 00:00:00 2001 -From: christos <christos> -Date: Fri, 2 Dec 2016 16:59:28 +0000 -Subject: [PATCH] Fix out of bounds read (Brooks Davis) (reproduce by starting - tcsh and hitting tab at the prompt) - ---- - ed.chared.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/ed.chared.c b/ed.chared.c -index 1277e53..310393e 100644 ---- ed.chared.c -+++ ed.chared.c -@@ -750,7 +750,7 @@ c_substitute(void) - /* - * If we found a history character, go expand it. - */ -- if (HIST != '\0' && *p == HIST) -+ if (p >= InputBuf && HIST != '\0' && *p == HIST) - nr_exp = c_excl(p); - else - nr_exp = 0; diff --git a/gnu/packages/patches/telepathy-glib-channel-memory-leak.patch b/gnu/packages/patches/telepathy-glib-channel-memory-leak.patch new file mode 100644 index 0000000000..fe07548ec0 --- /dev/null +++ b/gnu/packages/patches/telepathy-glib-channel-memory-leak.patch @@ -0,0 +1,19 @@ +Prevent a memory leak in call-channel, which otherwise would cause a +test failure in file-transfer-channel.c. + +Taken from upstream: +https://gitlab.freedesktop.org/telepathy/telepathy-glib/commit/2e8b2cc0db09b781d99e3755bb6d01548037fe7b + +diff --git a/telepathy-glib/call-channel.c b/telepathy-glib/call-channel.c +index 8ed76323be32f83c5f4d6045a50bc1698d8093fd..2a1fa203d4be9f0c8b99344225f4ba9900666ffc 100644 +--- a/telepathy-glib/call-channel.c ++++ b/telepathy-glib/call-channel.c +@@ -525,6 +525,8 @@ update_call_members (TpCallChannel *self, + + _tp_channel_contacts_queue_prepare_async ((TpChannel *) self, + contacts, update_call_members_prepared_cb, data); ++ ++ g_ptr_array_unref (contacts); + } + + static void diff --git a/gnu/packages/patches/texlive-bin-CVE-2018-17407.patch b/gnu/packages/patches/texlive-bin-CVE-2018-17407.patch deleted file mode 100644 index 63646d420c..0000000000 --- a/gnu/packages/patches/texlive-bin-CVE-2018-17407.patch +++ /dev/null @@ -1,249 +0,0 @@ -This patch adds support for newer versions of Poppler and some upstream -TexLive fixes, including one for CVE-2018-17407. - -It is taken from Linux From Scratch: -<http://www.linuxfromscratch.org/patches/blfs/svn/texlive-20180414-source-upstream_fixes-3.patch>. - -Submitted By: Ken Moffat <ken at linuxfromscratch dot org> -Date: 2018-12-26 -Initial Package Version: 20180414 -Upstream Status: Applied -Origin: Upstream -Description: Two fixes, cherry-picked from svn plus a CVE fix. -I have removed the partial fixes for various system versions of poppler. - -r47469 Fix segfault in dvipdfm-x (XeTeX) on 1/2/4-bit transparent indexed PNGs. - -r47477 Fix a ptex regression for discontinuous kinsoku table. - -Also, via fedora (I got lost in svn) a critical fix for CVE-2018-17407 - -"A buffer overflow in the handling of Type 1 fonts allows arbitrary code -execution when a malicious font is loaded by one of the vulnerable tools: -pdflatex, pdftex, dvips, or luatex." - -diff -Naur a/texk/dvipdfm-x/pngimage.c b/texk/dvipdfm-x/pngimage.c ---- a/texk/dvipdfm-x/pngimage.c 2018-02-17 08:41:35.000000000 +0000 -+++ b/texk/dvipdfm-x/pngimage.c 2018-10-09 01:52:01.648670875 +0100 -@@ -964,12 +964,16 @@ - png_bytep trans; - int num_trans; - png_uint_32 i; -+ png_byte bpc, mask, shift; - - if (!png_get_valid(png_ptr, info_ptr, PNG_INFO_tRNS) || - !png_get_tRNS(png_ptr, info_ptr, &trans, &num_trans, NULL)) { - WARN("%s: PNG does not have valid tRNS chunk but tRNS is requested.", PNG_DEBUG_STR); - return NULL; - } -+ bpc = png_get_bit_depth(png_ptr, info_ptr); -+ mask = 0xff >> (8 - bpc); -+ shift = 8 - bpc; - - smask = pdf_new_stream(STREAM_COMPRESS); - dict = pdf_stream_dict(smask); -@@ -981,7 +985,8 @@ - pdf_add_dict(dict, pdf_new_name("ColorSpace"), pdf_new_name("DeviceGray")); - pdf_add_dict(dict, pdf_new_name("BitsPerComponent"), pdf_new_number(8)); - for (i = 0; i < width*height; i++) { -- png_byte idx = image_data_ptr[i]; -+ /* data is packed for 1/2/4 bpc formats, msb first */ -+ png_byte idx = (image_data_ptr[bpc * i / 8] >> (shift - bpc * i % 8)) & mask; - smask_data_ptr[i] = (idx < num_trans) ? trans[idx] : 0xff; - } - pdf_add_stream(smask, (char *)smask_data_ptr, width*height); -diff -Naur a/texk/dvipsk/writet1.c b/texk/dvipsk/writet1.c ---- a/texk/dvipsk/writet1.c 2016-11-25 18:24:26.000000000 +0000 -+++ b/texk/dvipsk/writet1.c 2018-10-09 01:52:01.648670875 +0100 -@@ -1449,7 +1449,9 @@ - *(strend(t1_buf_array) - 1) = ' '; - - t1_getline(); -+ alloc_array(t1_buf, strlen(t1_line_array) + strlen(t1_buf_array) + 1, T1_BUF_SIZE); - strcat(t1_buf_array, t1_line_array); -+ alloc_array(t1_line, strlen(t1_buf_array) + 1, T1_BUF_SIZE); - strcpy(t1_line_array, t1_buf_array); - t1_line_ptr = eol(t1_line_array); - } -diff -Naur a/texk/web2c/luatexdir/font/writet1.w b/texk/web2c/luatexdir/font/writet1.w ---- a/texk/web2c/luatexdir/font/writet1.w 2016-11-25 18:24:34.000000000 +0000 -+++ b/texk/web2c/luatexdir/font/writet1.w 2018-10-09 01:52:01.648670875 +0100 -@@ -1625,7 +1625,9 @@ - if (sscanf(p, "%i", &i) != 1) { - strcpy(t1_buf_array, t1_line_array); - t1_getline(); -+ alloc_array(t1_buf, strlen(t1_line_array) + strlen(t1_buf_array) + 1, T1_BUF_SIZE); - strcat(t1_buf_array, t1_line_array); -+ alloc_array(t1_line, strlen(t1_buf_array) + 1, T1_BUF_SIZE); - strcpy(t1_line_array, t1_buf_array); - t1_line_ptr = eol(t1_line_array); - } -diff -Naur a/texk/web2c/luatexdir/image/pdftoepdf.w b/texk/web2c/luatexdir/image/pdftoepdf.w ---- a/texk/web2c/luatexdir/image/pdftoepdf.w 2018-01-17 18:00:12.000000000 +0000 -+++ b/texk/web2c/luatexdir/image/pdftoepdf.w 2018-10-09 01:52:01.648670875 +0100 -@@ -472,10 +472,10 @@ - break; - */ - case objString: -- copyString(pdf, obj->getString()); -+ copyString(pdf, (GooString *)obj->getString()); - break; - case objName: -- copyName(pdf, obj->getName()); -+ copyName(pdf, (char *)obj->getName()); - break; - case objNull: - pdf_add_null(pdf); -diff -Naur a/texk/web2c/luatexdir/lua/lepdflib.cc b/texk/web2c/luatexdir/lua/lepdflib.cc ---- a/texk/web2c/luatexdir/lua/lepdflib.cc 2018-02-14 14:44:38.000000000 +0000 -+++ b/texk/web2c/luatexdir/lua/lepdflib.cc 2018-10-09 01:52:01.649670868 +0100 -@@ -674,7 +674,7 @@ - uin = (udstruct *) luaL_checkudata(L, 1, M_##in); \ - if (uin->pd != NULL && uin->pd->pc != uin->pc) \ - pdfdoc_changed_error(L); \ -- gs = ((in *) uin->d)->function(); \ -+ gs = (GooString *)((in *) uin->d)->function(); \ - if (gs != NULL) \ - lua_pushlstring(L, gs->getCString(), gs->getLength()); \ - else \ -@@ -1813,7 +1813,7 @@ - if (uin->pd != NULL && uin->pd->pc != uin->pc) - pdfdoc_changed_error(L); - if (((Object *) uin->d)->isString()) { -- gs = ((Object *) uin->d)->getString(); -+ gs = (GooString *)((Object *) uin->d)->getString(); - lua_pushlstring(L, gs->getCString(), gs->getLength()); - } else - lua_pushnil(L); -diff -Naur a/texk/web2c/pdftexdir/writet1.c b/texk/web2c/pdftexdir/writet1.c ---- a/texk/web2c/pdftexdir/writet1.c 2016-11-25 18:24:37.000000000 +0000 -+++ b/texk/web2c/pdftexdir/writet1.c 2018-10-09 01:52:01.649670868 +0100 -@@ -1598,7 +1598,9 @@ - *(strend(t1_buf_array) - 1) = ' '; - - t1_getline(); -+ alloc_array(t1_buf, strlen(t1_line_array) + strlen(t1_buf_array) + 1, T1_BUF_SIZE); - strcat(t1_buf_array, t1_line_array); -+ alloc_array(t1_line, strlen(t1_buf_array) + 1, T1_BUF_SIZE); - strcpy(t1_line_array, t1_buf_array); - t1_line_ptr = eol(t1_line_array); - } -diff -Naur a/texk/web2c/ptexdir/ptex_version.h b/texk/web2c/ptexdir/ptex_version.h ---- a/texk/web2c/ptexdir/ptex_version.h 2018-01-21 03:48:06.000000000 +0000 -+++ b/texk/web2c/ptexdir/ptex_version.h 2018-10-09 01:52:01.649670868 +0100 -@@ -1 +1 @@ --#define PTEX_VERSION "p3.8.0" -+#define PTEX_VERSION "p3.8.1" -diff -Naur a/texk/web2c/ptexdir/tests/free_ixsp.tex b/texk/web2c/ptexdir/tests/free_ixsp.tex ---- a/texk/web2c/ptexdir/tests/free_ixsp.tex 1970-01-01 01:00:00.000000000 +0100 -+++ b/texk/web2c/ptexdir/tests/free_ixsp.tex 2018-10-09 01:52:01.649670868 +0100 -@@ -0,0 +1,53 @@ -+%#!eptex -ini -etex -+\let\dump\relax -+\batchmode -+\input plain -+ -+\errorstopmode -+\catcode`@=11 -+\newcount\@tempcnta -+\newcount\@tempcntb -+\newcount\@tempcntc -+\mathchardef\LIM=256 -+ -+\def\MYCHAR#1{% -+ \@tempcntc=\numexpr7*#1+"101\relax -+ \@tempcnta=\@tempcntc\divide\@tempcnta 94 -+ \@tempcntb=\numexpr\@tempcntc-94*\@tempcnta+1\relax -+ \ifnum\@tempcntb<0\advance\@tempcntb94 \advance\@tempcnta-1\fi -+ \advance\@tempcnta18 % 18区以降 -+ \CNTA=\kuten\numexpr"100*\@tempcnta+\@tempcntb\relax -+} -+ -+\newcount\CNT\newcount\CNTA -+\CNT=0 -+\loop -+ \MYCHAR\CNT -+ \message{\the\CNT.} -+ \inhibitxspcode\CNTA=1\relax -+ \advance\CNT1\relax -+ \ifnum\CNT<\LIM -+\repeat -+ -+\newcount\CNTB -+ -+\loop -+ \MYCHAR\CNTB -+ \global\inhibitxspcode\CNTA=3 -+{% -+\CNT=0 -+\loop -+ \MYCHAR\CNT -+ \count@=\numexpr 1-\inhibitxspcode\CNTA\relax -+ \ifnum\count@=0\else\ifnum\CNTB=\CNT\else -+ \errmessage{<\the\CNTB, \the\CNT, \the\inhibitxspcode\CNTA>}\fi\fi -+ \advance\CNT1\relax -+ \ifnum\CNT<\LIM -+\repeat -+} -+ \MYCHAR\CNTB -+ \global\inhibitxspcode\CNTA=1\relax -+ \advance\CNTB1\relax -+ \ifnum\CNTB<\LIM -+\repeat -+\bye -diff -Naur a/texk/web2c/ptexdir/tests/free_pena.tex b/texk/web2c/ptexdir/tests/free_pena.tex ---- a/texk/web2c/ptexdir/tests/free_pena.tex 1970-01-01 01:00:00.000000000 +0100 -+++ b/texk/web2c/ptexdir/tests/free_pena.tex 2018-10-09 01:52:01.649670868 +0100 -@@ -0,0 +1,52 @@ -+%#!eptex -ini -etex -+\let\dump\relax -+\batchmode -+\input plain -+ -+\errorstopmode -+\catcode`@=11 -+\newcount\@tempcnta -+\newcount\@tempcntb -+\newcount\@tempcntc -+\mathchardef\LIM=256 -+ -+\def\MYCHAR#1{% -+ \@tempcntc=\numexpr7*#1+"101\relax -+ \@tempcnta=\@tempcntc\divide\@tempcnta 94 -+ \@tempcntb=\numexpr\@tempcntc-94*\@tempcnta+1\relax -+ \ifnum\@tempcntb<0\advance\@tempcntb94 \advance\@tempcnta-1\fi -+ \advance\@tempcnta18 % 18区以降 -+ \CNTA=\kuten\numexpr"100*\@tempcnta+\@tempcntb\relax -+} -+ -+\newcount\CNT\newcount\CNTA -+\CNT=0 -+\loop -+ \MYCHAR\CNT -+ \message{\the\CNT.} -+ \prebreakpenalty\CNTA=\numexpr\CNT+1\relax -+ \advance\CNT1\relax -+ \ifnum\CNT<\LIM -+\repeat -+ -+\newcount\CNTB -+ -+\loop -+ \MYCHAR\CNTB -+ \global\prebreakpenalty\CNTA=0 -+{% -+\CNT=0 -+\loop -+ \MYCHAR\CNT -+ \count@=\numexpr -\CNT-1+\prebreakpenalty\CNTA\relax -+ \ifnum\count@=0\else\ifnum\CNTB=\CNT\else\errmessage{<\the\CNTB, \the\CNT>}\fi\fi -+ \advance\CNT1\relax -+ \ifnum\CNT<\LIM -+\repeat -+} -+ \MYCHAR\CNTB -+ \global\prebreakpenalty\CNTA=\numexpr\CNTB+1\relax -+ \advance\CNTB1\relax -+ \ifnum\CNTB<\LIM -+\repeat -+\bye diff --git a/gnu/packages/patches/texlive-bin-luatex-poppler-compat.patch b/gnu/packages/patches/texlive-bin-luatex-poppler-compat.patch deleted file mode 100644 index 024ff416af..0000000000 --- a/gnu/packages/patches/texlive-bin-luatex-poppler-compat.patch +++ /dev/null @@ -1,293 +0,0 @@ -Fix LuaTeX compatibility with Poppler 0.75. - -Upstream LuaTeX have moved from Poppler to "pplib" and thus upstream -fixes are unavailable. This is based on Archs patch, with minor -tweaks to comply with texlive-bin-CVE-2018-17407.patch. -https://git.archlinux.org/svntogit/packages.git/tree/trunk?h=packages/texlive-bin&id=418dd6f008c3d41a461353fdb60f2d73d87c58ed - -diff --git a/texk/web2c/luatexdir/image/pdftoepdf.w b/texk/web2c/luatexdir/image/pdftoepdf.w ---- a/texk/web2c/luatexdir/image/pdftoepdf.w -+++ b/texk/web2c/luatexdir/image/pdftoepdf.w -@@ -363,7 +363,7 @@ void copyReal(PDF pdf, double d) - - static void copyString(PDF pdf, GooString * string) - { -- char *p; -+ const char *p; - unsigned char c; - size_t i, l; - p = string->getCString(); -@@ -393,7 +393,7 @@ static void copyString(PDF pdf, GooString * string) - pdf->cave = true; - } - --static void copyName(PDF pdf, char *s) -+static void copyName(PDF pdf, const char *s) - { - pdf_out(pdf, '/'); - for (; *s != 0; s++) { -@@ -412,7 +412,7 @@ static void copyArray(PDF pdf, PdfDocument * pdf_doc, Array * array) - Object obj1; - pdf_begin_array(pdf); - for (i = 0, l = array->getLength(); i < l; ++i) { -- obj1 = array->getNF(i); -+ obj1 = array->getNF(i).copy(); - copyObject(pdf, pdf_doc, &obj1); - } - pdf_end_array(pdf); -@@ -425,7 +425,7 @@ static void copyDict(PDF pdf, PdfDocument * pdf_doc, Dict * dict) - pdf_begin_dict(pdf); - for (i = 0, l = dict->getLength(); i < l; ++i) { - copyName(pdf, dict->getKey(i)); -- obj1 = dict->getValNF(i); -+ obj1 = dict->getValNF(i).copy(); - copyObject(pdf, pdf_doc, &obj1); - } - pdf_end_dict(pdf); -@@ -475,7 +475,7 @@ static void copyObject(PDF pdf, PdfDocument * pdf_doc, Object * obj) - copyString(pdf, (GooString *)obj->getString()); - break; - case objName: -- copyName(pdf, (char *)obj->getName()); -+ copyName(pdf, obj->getName()); - break; - case objNull: - pdf_add_null(pdf); -@@ -531,22 +531,22 @@ static PDFRectangle *get_pagebox(Page * page, int pagebox_spec) - { - switch (pagebox_spec) { - case PDF_BOX_SPEC_MEDIA: -- return page->getMediaBox(); -+ return (PDFRectangle *) page->getMediaBox(); - break; - case PDF_BOX_SPEC_CROP: -- return page->getCropBox(); -+ return (PDFRectangle *) page->getCropBox(); - break; - case PDF_BOX_SPEC_BLEED: -- return page->getBleedBox(); -+ return (PDFRectangle *) page->getBleedBox(); - break; - case PDF_BOX_SPEC_TRIM: -- return page->getTrimBox(); -+ return (PDFRectangle *) page->getTrimBox(); - break; - case PDF_BOX_SPEC_ART: -- return page->getArtBox(); -+ return (PDFRectangle *) page->getArtBox(); - break; - default: -- return page->getMediaBox(); -+ return (PDFRectangle *) page->getMediaBox(); - break; - } - } -@@ -788,12 +788,12 @@ void write_epdf(PDF pdf, image_dict * idict, int suppress_optional_info) - Now all relevant parts of the Page dictionary are copied. Metadata validity - check is needed(as a stream it must be indirect). - */ -- obj1 = pageDict->lookupNF("Metadata"); -+ obj1 = pageDict->lookupNF("Metadata").copy(); - if (!obj1.isNull() && !obj1.isRef()) - formatted_warning("pdf inclusion","/Metadata must be indirect object"); - /* copy selected items in Page dictionary */ - for (i = 0; pagedictkeys[i] != NULL; i++) { -- obj1 = pageDict->lookupNF(pagedictkeys[i]); -+ obj1 = pageDict->lookupNF(pagedictkeys[i]).copy(); - if (!obj1.isNull()) { - pdf_add_name(pdf, pagedictkeys[i]); - /* preserves indirection */ -@@ -806,13 +806,13 @@ void write_epdf(PDF pdf, image_dict * idict, int suppress_optional_info) - PDF file, climbing up the tree until the Resources are found. - (This fixes a problem with Scribus 1.3.3.14.) - */ -- obj1 = pageDict->lookupNF("Resources"); -+ obj1 = pageDict->lookupNF("Resources").copy(); - if (obj1.isNull()) { - op1 = &pagesobj1; - op2 = &pagesobj2; - *op1 = pageDict->lookup("Parent"); - while (op1->isDict()) { -- obj1 = op1->dictLookupNF("Resources"); -+ obj1 = op1->dictLookupNF("Resources").copy(); - if (!obj1.isNull()) { - pdf_add_name(pdf, "Resources"); - copyObject(pdf, pdf_doc, &obj1); -diff --git a/texk/web2c/luatexdir/lua/lepdflib.cc b/texk/web2c/luatexdir/lua/lepdflib.cc ---- a/texk/web2c/luatexdir/lua/lepdflib.cc -+++ b/texk/web2c/luatexdir/lua/lepdflib.cc -@@ -240,7 +240,7 @@ static int l_new_Attribute(lua_State * L) - if (uobj->pd != NULL && uobj->pd->pc != uobj->pc) - pdfdoc_changed_error(L); - uout = new_Attribute_userdata(L); -- uout->d = new Attribute(n, nlen, (Object *)uobj->d); -+ uout->d = new Attribute((GooString)n, (Object *)uobj->d); - uout->atype = ALLOC_LEPDF; - uout->pc = uobj->pc; - uout->pd = uobj->pd; -@@ -496,7 +496,7 @@ static int l_new_Object(lua_State * L) - double numA = lua_tonumber(L,1); - double genA = lua_tonumber(L,2); - if ( ((numA)==(int)(numA)) && ((genA)==(int)(genA)) ){ -- uout->d = new Object((int)(numA), (int)(genA)); -+ uout->d = new Object({(int)(numA), (int)(genA)}); - uout->atype = ALLOC_LEPDF; - uout->pc = 0; - uout->pd = NULL; -@@ -596,7 +596,7 @@ static int m_##in##_##function(lua_State * L) \ - uin = (udstruct *) luaL_checkudata(L, 1, M_##in); \ - if (uin->pd != NULL && uin->pd->pc != uin->pc) \ - pdfdoc_changed_error(L); \ -- o = ((in *) uin->d)->function(); \ -+ o = (out *) ((in *) uin->d)->function(); \ - if (o != NULL) { \ - uout = new_##out##_userdata(L); \ - uout->d = o; \ -@@ -889,7 +889,7 @@ static int m_Array_getNF(lua_State * L) - if (i > 0 && i <= len) { - uout = new_Object_userdata(L); - uout->d = new Object(); -- *((Object *) uout->d) = ((Array *) uin->d)->getNF(i - 1); -+ *((Object *) uout->d) = ((Array *) uin->d)->getNF(i - 1).copy(); - uout->atype = ALLOC_LEPDF; - uout->pc = uin->pc; - uout->pd = uin->pd; -@@ -1125,12 +1125,12 @@ m_poppler_get_INT(Dict, getLength); - - static int m_Dict_add(lua_State * L) - { -- char *s; -+ const char *s; - udstruct *uin, *uobj; - uin = (udstruct *) luaL_checkudata(L, 1, M_Dict); - if (uin->pd != NULL && uin->pd->pc != uin->pc) - pdfdoc_changed_error(L); -- s = copyString(luaL_checkstring(L, 2)); -+ s = luaL_checkstring(L, 2); - uobj = (udstruct *) luaL_checkudata(L, 3, M_Object); - ((Dict *) uin->d)->add(s, std::move(*((Object *) uobj->d))); - return 0; -@@ -1190,7 +1190,7 @@ static int m_Dict_lookupNF(lua_State * L) - s = luaL_checkstring(L, 2); - uout = new_Object_userdata(L); - uout->d = new Object(); -- *((Object *) uout->d) = ((Dict *) uin->d)->lookupNF(s); -+ *((Object *) uout->d) = ((Dict *) uin->d)->lookupNF(s).copy(); - uout->atype = ALLOC_LEPDF; - uout->pc = uin->pc; - uout->pd = uin->pd; -@@ -1263,7 +1263,7 @@ static int m_Dict_getValNF(lua_State * L) - if (i > 0 && i <= len) { - uout = new_Object_userdata(L); - uout->d = new Object(); -- *((Object *) uout->d) = ((Dict *) uin->d)->getValNF(i - 1); -+ *((Object *) uout->d) = ((Dict *) uin->d)->getValNF(i - 1).copy(); - uout->atype = ALLOC_LEPDF; - uout->pc = uin->pc; - uout->pd = uin->pd; -@@ -1653,7 +1653,7 @@ static int m_Object_initRef(lua_State * L) - pdfdoc_changed_error(L); - num = luaL_checkint(L, 2); - gen = luaL_checkint(L, 3); -- *((Object *) uin->d) = Object(num, gen); -+ *((Object *) uin->d) = Object({num, gen}); - return 0; - } - -@@ -2011,7 +2011,7 @@ static int m_Object_arrayGetNF(lua_State * L) - if (i > 0 && i <= len) { - uout = new_Object_userdata(L); - uout->d = new Object(); -- *((Object *) uout->d) = ((Object *) uin->d)->arrayGetNF(i - 1); -+ *((Object *) uout->d) = ((Object *) uin->d)->arrayGetNF(i - 1).copy(); - uout->atype = ALLOC_LEPDF; - uout->pc = uin->pc; - uout->pd = uin->pd; -@@ -2051,7 +2051,7 @@ static int m_Object_dictAdd(lua_State * L) - pdfdoc_changed_error(L); - if (!((Object *) uin->d)->isDict()) - luaL_error(L, "Object is not a Dict"); -- ((Object *) uin->d)->dictAdd(copyString(s), std::move(*((Object *) uobj->d))); -+ ((Object *) uin->d)->dictAdd(s, std::move(*((Object *) uobj->d))); - return 0; - } - -@@ -2104,7 +2104,7 @@ static int m_Object_dictLookupNF(lua_State * L) - if (((Object *) uin->d)->isDict()) { - uout = new_Object_userdata(L); - uout->d = new Object(); -- *((Object *) uout->d) = ((Object *) uin->d)->dictLookupNF(s); -+ *((Object *) uout->d) = ((Object *) uin->d)->dictLookupNF(s).copy(); - uout->atype = ALLOC_LEPDF; - uout->pc = uin->pc; - uout->pd = uin->pd; -@@ -2169,7 +2169,7 @@ static int m_Object_dictGetValNF(lua_State * L) - if (i > 0 && i <= len) { - uout = new_Object_userdata(L); - uout->d = new Object(); -- *((Object *) uout->d) = ((Object *) uin->d)->dictGetValNF(i - 1); -+ *((Object *) uout->d) = ((Object *) uin->d)->dictGetValNF(i - 1).copy(); - uout->atype = ALLOC_LEPDF; - uout->pc = uin->pc; - uout->pd = uin->pd; -@@ -2470,7 +2470,7 @@ static int m_PDFDoc_getFileName(lua_State * L) - uin = (udstruct *) luaL_checkudata(L, 1, M_PDFDoc); - if (uin->pd != NULL && uin->pd->pc != uin->pc) - pdfdoc_changed_error(L); -- gs = ((PdfDocument *) uin->d)->doc->getFileName(); -+ gs = (GooString *) ((PdfDocument *) uin->d)->doc->getFileName(); - if (gs != NULL) - lua_pushlstring(L, gs->getCString(), gs->getLength()); - else -@@ -2559,7 +2559,7 @@ static int m_PDFDoc_readMetadata(lua_State * L) - if (uin->pd != NULL && uin->pd->pc != uin->pc) - pdfdoc_changed_error(L); - if (((PdfDocument *) uin->d)->doc->getCatalog()->isOk()) { -- gs = ((PdfDocument *) uin->d)->doc->readMetadata(); -+ gs = (GooString *) ((PdfDocument *) uin->d)->doc->readMetadata(); - if (gs != NULL) - lua_pushlstring(L, gs->getCString(), gs->getLength()); - else -@@ -2577,7 +2577,7 @@ static int m_PDFDoc_getStructTreeRoot(lua_State * L) - if (uin->pd != NULL && uin->pd->pc != uin->pc) - pdfdoc_changed_error(L); - if (((PdfDocument *) uin->d)->doc->getCatalog()->isOk()) { -- obj = ((PdfDocument *) uin->d)->doc->getStructTreeRoot(); -+ obj = (StructTreeRoot *) ((PdfDocument *) uin->d)->doc->getStructTreeRoot(); - uout = new_StructTreeRoot_userdata(L); - uout->d = obj; - uout->pc = uin->pc; ---- texlive-source/texk/web2c/luatexdir/lua/lepdflib.cc.orig 2019-04-24 09:41:05.090522664 +0000 -+++ texlive-source/texk/web2c/luatexdir/lua/lepdflib.cc 2019-04-24 09:43:37.119184926 +0000 -@@ -994,7 +994,8 @@ - pdfdoc_changed_error(L); - num = luaL_checkint(L, 2); - gen = luaL_checkint(L, 3); -- i = ((Catalog *) uin->d)->findPage(num, gen); -+ Ref numgen = {num, gen}; -+ i = ((Catalog *) uin->d)->findPage(numgen); - if (i > 0) - lua_pushinteger(L, i); - else -@@ -2596,8 +2597,9 @@ - pdfdoc_changed_error(L); - num = luaL_checkint(L, 2); - gen = luaL_checkint(L, 3); -+ Ref numgen = {num, gen}; - if (((PdfDocument *) uin->d)->doc->getCatalog()->isOk()) { -- i = ((PdfDocument *) uin->d)->doc->findPage(num, gen); -+ i = ((PdfDocument *) uin->d)->doc->findPage(numgen); - if (i > 0) - lua_pushinteger(L, i); - else ---- texlive-source/texk/web2c/luatexdir/image/pdftoepdf.w.orig 2019-04-24 09:56:38.406498975 +0000 -+++ texlive-source/texk/web2c/luatexdir/image/pdftoepdf.w 2019-04-24 09:56:57.020081327 +0000 -@@ -630,7 +630,7 @@ - if (link == NULL || !link->isOk()) - formatted_error("pdf inclusion","invalid destination '%s'",img_pagename(idict)); - Ref ref = link->getPageRef(); -- img_pagenum(idict) = catalog->findPage(ref.num, ref.gen); -+ img_pagenum(idict) = catalog->findPage(ref); - if (img_pagenum(idict) == 0) - formatted_error("pdf inclusion","destination is not a page '%s'",img_pagename(idict)); - delete link; diff --git a/gnu/packages/patches/texlive-bin-poppler-0.83.patch b/gnu/packages/patches/texlive-bin-poppler-0.83.patch new file mode 100644 index 0000000000..5e57e3efac --- /dev/null +++ b/gnu/packages/patches/texlive-bin-poppler-0.83.patch @@ -0,0 +1,52 @@ +Fix build with Poppler 0.83 and later. + +Taken from Arch Linux, but adjusted to patch the versioned Poppler +files, as upstream applies it after copying them in place. +https://git.archlinux.org/svntogit/packages.git/tree/trunk/texlive-poppler-0.83.patch?h=packages/texlive-bin + +diff -ru texlive-source-orig/texk/web2c/pdftexdir/pdftoepdf-poppler0.76.0.cc texlive-source/texk/web2c/pdftexdir/pdftoepdf-poppler0.76.0.cc +--- texlive-source-orig/texk/web2c/pdftexdir/pdftoepdf-poppler0.76.0.cc ++++ texlive-source/texk/web2c/pdftexdir/pdftoepdf-poppler0.76.0.cc +@@ -723,7 +723,7 @@ + #endif + // initialize + if (!isInit) { +- globalParams = new GlobalParams(); ++ globalParams.reset(new GlobalParams()); + globalParams->setErrQuiet(false); + isInit = true; + } +@@ -1108,6 +1108,5 @@ + delete_document(p); + } + // see above for globalParams +- delete globalParams; + } + } +diff -ru texlive-source-orig/texk/web2c/pdftexdir/pdftosrc-poppler0.76.0.cc texlive-source/texk/web2c/pdftexdir/pdftosrc-poppler0.76.0.cc +--- texlive-source-orig/texk/web2c/pdftexdir/pdftosrc-poppler0.76.0.cc ++++ texlive-source/texk/web2c/pdftexdir/pdftosrc-poppler0.76.0.cc +@@ -79,7 +79,7 @@ + exit(1); + } + fileName = new GString(argv[1]); +- globalParams = new GlobalParams(); ++ globalParams.reset(new GlobalParams()); + doc = new PDFDoc(fileName); + if (!doc->isOk()) { + fprintf(stderr, "Invalid PDF file\n"); +@@ -100,7 +100,7 @@ + if (objnum == 0) { + srcStream = catalogDict.dictLookup("SourceObject"); + static char const_SourceFile[] = "SourceFile"; +- if (!srcStream.isStream(const_SourceFile)) { ++ if (!srcStream.isDict(const_SourceFile)) { + fprintf(stderr, "No SourceObject found\n"); + exit(1); + } +@@ -202,5 +202,4 @@ + fprintf(stderr, "Cross-reference table extracted to %s\n", outname); + fclose(outfile); + delete doc; +- delete globalParams; + } diff --git a/gnu/packages/patches/texlive-bin-poppler-0.86.patch b/gnu/packages/patches/texlive-bin-poppler-0.86.patch new file mode 100644 index 0000000000..b1adca657b --- /dev/null +++ b/gnu/packages/patches/texlive-bin-poppler-0.86.patch @@ -0,0 +1,17 @@ +Fix build with Poppler 0.86 and later. + +Taken from Arch Linux, but adjusted to patch the versioned Poppler +files, as upstream applies it after copying them in place. +https://git.archlinux.org/svntogit/packages.git/tree/trunk/texlive-poppler-0.86.patch?h=packages/texlive-bin + +--- a/texk/web2c/pdftexdir/pdftoepdf-poppler0.76.0.cc 2020-03-03 21:11:35.102711802 +0000 ++++ b/texk/web2c/pdftexdir/pdftoepdf-poppler0.76.0.cc 2020-03-03 21:13:13.057420111 +0000 +@@ -757,7 +757,7 @@ + if (page_name) { + // get page by name + GString name(page_name); +- LinkDest *link = pdf_doc->doc->findDest(&name); ++ LinkDest *link = pdf_doc->doc->findDest(&name).get(); + if (link == 0 || !link->isOk()) + pdftex_fail("PDF inclusion: invalid destination <%s>", page_name); + Ref ref = link->getPageRef(); diff --git a/gnu/packages/patches/twinkle-bcg729.patch b/gnu/packages/patches/twinkle-bcg729.patch new file mode 100644 index 0000000000..eb8667b679 --- /dev/null +++ b/gnu/packages/patches/twinkle-bcg729.patch @@ -0,0 +1,176 @@ +From 46bee14d3cc49d4fb49eaf36a29dbcc7a11a5ab7 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20Bri=C3=A8re?= <fbriere@fbriere.net> +Date: Sat, 6 Jul 2019 15:40:56 -0400 +Subject: [PATCH] Add support for the new bcg729 API, introduced in version + 1.0.2 + +Starting with version 1.0.2, bcg729 has changed its API to add support +for G.729B, thus requiring us to adjust our function calls depending on +which version is installed. + +When dealing with the new API, we merely need to add a few parameters to +disable all G.729B features, namely: + +* On the decoder side: When `SIDFrameFlag` is not set, the decoder will + behave just like before, decoding the payload as a standard G.729A + voice frame (or concealing an erased frame). The other parameters, + `rfc3389PayloadFlag` and `bitStreamLength`, are only of use when + dealing with a SID frame sent as per RFC 3389, and are ignored if + `SIDFrameFlag` is not set. + +* On the encoder side: When `enableVAD` is disabled, the encoder will + behave just like before, producing only standard G.729A voice frames. + The only API difference is the introduction of `*bitStreamLength`, to + return the length of the encoded frame (0, 2 or 10 bytes). In our + case, this will always be 10 bytes just like before; an assert() was + added to guarantee this. + +Closes #104 +--- + CMakeLists.txt | 4 ++++ + cmake/FindG729.cmake | 36 ++++++++++++++++++++++++++++++++++++ + src/audio/audio_decoder.cpp | 8 ++++++++ + src/audio/audio_encoder.cpp | 10 ++++++++++ + twinkle_config.h.in | 1 + + 5 files changed, 59 insertions(+) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 1dafe55..7e3fde0 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -116,6 +116,10 @@ if (WITH_G729) + if (G729_FOUND) + message(STATUS "bcg729 OK") + set(HAVE_BCG729 TRUE) ++ ++ if (G729_ANNEX_B) ++ set(HAVE_BCG729_ANNEX_B TRUE) ++ endif (G729_ANNEX_B) + + include_directories(${G729_INCLUDE_DIR}) + else (G729_FOUND) +diff --git a/cmake/FindG729.cmake b/cmake/FindG729.cmake +index 4a30ba0..1fbfeeb 100644 +--- a/cmake/FindG729.cmake ++++ b/cmake/FindG729.cmake +@@ -1,14 +1,50 @@ ++INCLUDE(CMakePushCheckState) ++INCLUDE(CheckCSourceCompiles) ++ + FIND_PATH(G729_INCLUDE_DIR bcg729/decoder.h) + FIND_LIBRARY(G729_LIBRARY NAMES bcg729) + + IF(G729_INCLUDE_DIR AND G729_LIBRARY) + SET(G729_FOUND TRUE) ++ ++ # The bcg729 API was changed in 1.0.2 to add support for G.729 Annex B. ++ # This checks whether we are dealing with the old or new API. ++ CMAKE_PUSH_CHECK_STATE() ++ SET(CMAKE_REQUIRED_INCLUDES "${INCLUDE_DIRECTORIES}" "${G729_INCLUDE_DIR}") ++ SET(CMAKE_REQUIRED_LIBRARIES "${G729_LIBRARY}") ++ SET(CMAKE_REQUIRED_QUIET TRUE) ++ # Try to compile something using the old (pre-1.0.2) API. ++ # ++ # We cannot do it the other way around, as initBcg729EncoderChannel() ++ # did not have a prototype before 1.0.2, thus compilation would not fail ++ # when passing it an extra argument. ++ CHECK_C_SOURCE_COMPILES(" ++ #include <bcg729/encoder.h> ++ ++ int main() { ++ /* This function requires an argument since 1.0.2 */ ++ initBcg729EncoderChannel(); ++ return 0; ++ } ++ " G729_OLD_API) ++ CMAKE_POP_CHECK_STATE() ++ ++ IF (G729_OLD_API) ++ SET(G729_ANNEX_B FALSE) ++ ELSE (G729_OLD_API) ++ SET(G729_ANNEX_B TRUE) ++ ENDIF (G729_OLD_API) + ENDIF(G729_INCLUDE_DIR AND G729_LIBRARY) + + IF(G729_FOUND) + IF (NOT G729_FIND_QUIETLY) + MESSAGE(STATUS "Found bcg729 includes: ${G729_INCLUDE_DIR}/bcg729/decoder.h") + MESSAGE(STATUS "Found bcg729 library: ${G729_LIBRARY}") ++ IF (G729_ANNEX_B) ++ MESSAGE(STATUS "bcg729 supports Annex B; using the new (1.0.2) API") ++ ELSE (G729_ANNEX_B) ++ MESSAGE(STATUS "bcg729 does not support Annex B; using the old (pre-1.0.2) API") ++ ENDIF (G729_ANNEX_B) + ENDIF (NOT G729_FIND_QUIETLY) + ELSE(G729_FOUND) + IF (G729_FIND_REQUIRED) +diff --git a/src/audio/audio_decoder.cpp b/src/audio/audio_decoder.cpp +index 65935dd..c661910 100644 +--- a/src/audio/audio_decoder.cpp ++++ b/src/audio/audio_decoder.cpp +@@ -547,7 +547,11 @@ uint16 t_g729a_audio_decoder::decode(uint8 *payload, uint16 payload_size, + + for (uint16 done = 0; done < payload_size; done += 10) + { ++#ifdef HAVE_BCG729_ANNEX_B ++ bcg729Decoder(_context, &payload[done], 0, false, false, false, &pcm_buf[done * 8]); ++#else + bcg729Decoder(_context, &payload[done], false, &pcm_buf[done * 8]); ++#endif + } + + return payload_size * 8; +@@ -562,7 +566,11 @@ uint16 t_g729a_audio_decoder::conceal(int16 *pcm_buf, uint16 pcm_buf_size) + { + assert(pcm_buf_size >= 80); + ++#ifdef HAVE_BCG729_ANNEX_B ++ bcg729Decoder(_context, nullptr, 0, true, false, false, pcm_buf); ++#else + bcg729Decoder(_context, nullptr, true, pcm_buf); ++#endif + return 80; + } + +diff --git a/src/audio/audio_encoder.cpp b/src/audio/audio_encoder.cpp +index d6ff356..952b1ee 100644 +--- a/src/audio/audio_encoder.cpp ++++ b/src/audio/audio_encoder.cpp +@@ -433,7 +433,11 @@ uint16 t_g726_audio_encoder::encode(int16 *sample_buf, uint16 nsamples, + t_g729a_audio_encoder::t_g729a_audio_encoder(uint16 payload_id, uint16 ptime, t_user *user_config) + : t_audio_encoder(payload_id, ptime, user_config) + { ++#ifdef HAVE_BCG729_ANNEX_B ++ _context = initBcg729EncoderChannel(false); ++#else + _context = initBcg729EncoderChannel(); ++#endif + } + + t_g729a_audio_encoder::~t_g729a_audio_encoder() +@@ -451,7 +455,13 @@ uint16 t_g729a_audio_encoder::encode(int16 *sample_buf, uint16 nsamples, + + for (uint16 done = 0; done < nsamples; done += 80) + { ++#ifdef HAVE_BCG729_ANNEX_B ++ uint8 frame_size = 10; ++ bcg729Encoder(_context, &sample_buf[done], &payload[done / 8], &frame_size); ++ assert(frame_size == 10); ++#else + bcg729Encoder(_context, &sample_buf[done], &payload[done / 8]); ++#endif + } + + return nsamples / 8; +diff --git a/twinkle_config.h.in b/twinkle_config.h.in +index a1aa3b4..53a0426 100644 +--- a/twinkle_config.h.in ++++ b/twinkle_config.h.in +@@ -4,6 +4,7 @@ + #cmakedefine HAVE_ILBC_CPP + #cmakedefine HAVE_ZRTP + #cmakedefine HAVE_BCG729 ++#cmakedefine HAVE_BCG729_ANNEX_B + #cmakedefine HAVE_GSM + + #cmakedefine HAVE_UNISTD_H diff --git a/gnu/packages/patches/vigra-python-compat.patch b/gnu/packages/patches/vigra-python-compat.patch new file mode 100644 index 0000000000..63c6abb326 --- /dev/null +++ b/gnu/packages/patches/vigra-python-compat.patch @@ -0,0 +1,18 @@ +Fix build with Boost + Python 3.7. + +Taken from upstream: +https://github.com/ukoethe/vigra/commit/a6fa62663c6a6b752ed0707e95f643e25867a0f9 + +diff --git a/vigranumpy/src/core/vigranumpycore.cxx b/vigranumpy/src/core/vigranumpycore.cxx +index ec38d3636..c81c6ae52 100644 +--- a/vigranumpy/src/core/vigranumpycore.cxx ++++ b/vigranumpy/src/core/vigranumpycore.cxx +@@ -61,7 +61,7 @@ UInt32 pychecksum(python::str const & s) + return checksum(data, size); + #else + Py_ssize_t size = 0; +- char * data = PyUnicode_AsUTF8AndSize(s.ptr(), &size); ++ const char * data = PyUnicode_AsUTF8AndSize(s.ptr(), &size); + return checksum(data, size); + #endif + } diff --git a/gnu/packages/patches/vlc-fix-test_libvlc_slaves.patch b/gnu/packages/patches/vlc-fix-test_libvlc_slaves.patch deleted file mode 100644 index 9bc6d35f18..0000000000 --- a/gnu/packages/patches/vlc-fix-test_libvlc_slaves.patch +++ /dev/null @@ -1,35 +0,0 @@ -From 4186c94104ee528abd6860611b49515f3e6ec644 Mon Sep 17 00:00:00 2001 -From: Thomas Guillem <thomas@gllm.fr> -Date: Fri, 18 Oct 2019 10:34:07 +0200 -Subject: [PATCH] input/item: sort before attaching slaves - -The order of readdir() is completely filesystem dependent. - -Slaves should be attached using the same order across multiple OSses/access -modules. - -This fixes the test_libvlc_slaves on some system when the entry order from -readdir() is different. - -This patch need to be backported to VLC 3.0. ---- - src/input/item.c | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/src/input/item.c b/src/input/item.c -index e8db39ca28..fbd74cc95f 100644 ---- a/src/input/item.c -+++ b/src/input/item.c -@@ -1809,8 +1809,8 @@ void vlc_readdir_helper_finish(struct vlc_readdir_helper *p_rdh, bool b_success) - { - if (b_success) - { -- rdh_attach_slaves(p_rdh, p_rdh->p_node); - rdh_sort(p_rdh->p_node); -+ rdh_attach_slaves(p_rdh, p_rdh->p_node); - } - free(p_rdh->psz_ignored_exts); - --- -2.20.1 - diff --git a/gnu/packages/patches/warsow-qfusion-fix-bool-return-type.patch b/gnu/packages/patches/warsow-qfusion-fix-bool-return-type.patch new file mode 100644 index 0000000000..ec22377446 --- /dev/null +++ b/gnu/packages/patches/warsow-qfusion-fix-bool-return-type.patch @@ -0,0 +1,22 @@ +diff --git a/source/ref_gl/r_imagelib.cpp b/source/ref_gl/r_imagelib.cpp +index 418028a..f76916b 100644 +--- a/source/ref_gl/r_imagelib.cpp ++++ b/source/ref_gl/r_imagelib.cpp +@@ -762,7 +762,7 @@ static void q_jpg_noop( j_decompress_ptr cinfo ) { + + static boolean q_jpg_fill_input_buffer( j_decompress_ptr cinfo ) { + Com_DPrintf( "Premature end of jpeg file\n" ); +- return 1; ++ return TRUE; + } + + static void q_jpg_skip_input_data( j_decompress_ptr cinfo, long num_bytes ) { +@@ -955,7 +955,7 @@ bool WriteJPG( const char *name, r_imginfo_t *info, int quality ) { + } + + // start compression +- qjpeg_start_compress( &cinfo, true ); ++ qjpeg_start_compress( &cinfo, TRUE ); + + // feed scanline data + w3 = cinfo.image_width * info->samples; diff --git a/gnu/packages/patches/webkitgtk-share-store.patch b/gnu/packages/patches/webkitgtk-share-store.patch new file mode 100644 index 0000000000..053d86fcf4 --- /dev/null +++ b/gnu/packages/patches/webkitgtk-share-store.patch @@ -0,0 +1,19 @@ +Tell bubblewrap to share the store. Required for programs that use the +sandboxing features such as Epiphany. + +See <https://bugs.gnu.org/40837>. +Author: Jack Hill <jackhill@jackhill.us> +--- +diff --git a/Source/WebKit/UIProcess/Launcher/glib/BubblewrapLauncher.cpp b/Source/WebKit/UIProcess/Launcher/glib/BubblewrapLauncher.cpp +--- a/Source/WebKit/UIProcess/Launcher/glib/BubblewrapLauncher.cpp ++++ b/Source/WebKit/UIProcess/Launcher/glib/BubblewrapLauncher.cpp +@@ -737,6 +737,9 @@ GRefPtr<GSubprocess> bubblewrapSpawn(GSubprocessLauncher* launcher, const Proces + "--ro-bind-try", "/usr/local/share", "/usr/local/share", + "--ro-bind-try", DATADIR, DATADIR, + ++ // Bind mount the store inside the WebKitGTK sandbox. ++ "--ro-bind", "@storedir@", "@storedir@", ++ + // We only grant access to the libdirs webkit is built with and + // guess system libdirs. This will always have some edge cases. + "--ro-bind-try", "/lib", "/lib", diff --git a/gnu/packages/pciutils.scm b/gnu/packages/pciutils.scm index dbec76715d..c992988437 100644 --- a/gnu/packages/pciutils.scm +++ b/gnu/packages/pciutils.scm @@ -2,6 +2,8 @@ ;;; Copyright © 2014, 2015, 2017 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr> +;;; Copyright © 2019 Mathieu Othacehe <m.othacehe@gmail.com> +;;; Copyright © 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org> ;;; ;;; This file is part of GNU Guix. ;;; @@ -22,9 +24,12 @@ #:use-module (guix packages) #:use-module (guix download) #:use-module ((guix licenses) #:prefix license:) + #:use-module (guix utils) #:use-module (guix build-system gnu) + #:use-module (gnu packages) #:use-module (gnu packages compression) #:use-module (gnu packages pkg-config) + #:use-module (gnu packages hurd) #:use-module (gnu packages linux) #:use-module (gnu packages base)) @@ -37,17 +42,32 @@ (uri (string-append "mirror://kernel.org/software/utils/pciutils/pciutils-" version ".tar.xz")) + (patches (search-patches "pciutils-hurd-configure.patch")) (sha256 (base32 "0mb0f2phdcmp4kfiqsszn2k6nlln0w160ffzrjjv4bbfjwrgfzzn")))) (build-system gnu-build-system) (arguments - '(#:phases + `(#:phases (modify-phases %standard-phases (replace 'configure (lambda* (#:key outputs #:allow-other-keys) ;; There's no 'configure' script, just a raw makefile. (substitute* "Makefile" + ,@(if (%current-target-system) + `((("^CROSS_COMPILE=.*$") + (string-append "CROSS_COMPILE=" + ,(%current-target-system) "-" + "\n")) + (("^HOST=.*$") + (string-append "HOST=" + ,(gnu-triplet->nix-system + (%current-target-system)) "\n")) + ;; Disable 'install' strip option, that would fail when + ;; we are cross-compiling. + (("^STRIP=.*$") + "STRIP=\n")) + '()) (("^PREFIX=.*$") (string-append "PREFIX := " (assoc-ref outputs "out") "\n")) @@ -84,7 +104,11 @@ `(("which" ,which) ("pkg-config" ,pkg-config))) (inputs - `(("kmod" ,kmod) + `(,@(if (member (or (%current-target-system) + (%current-system)) + (package-supported-systems kmod)) + `(("kmod" ,kmod)) + '()) ("zlib" ,zlib))) (home-page "https://mj.ucw.cz/sw/pciutils/") (synopsis "Programs for inspecting and manipulating PCI devices") diff --git a/gnu/packages/pcre.scm b/gnu/packages/pcre.scm index ea45a3d06b..ce2a6e91db 100644 --- a/gnu/packages/pcre.scm +++ b/gnu/packages/pcre.scm @@ -35,7 +35,7 @@ (define-public pcre (package (name "pcre") - (version "8.43") + (version "8.44") (source (origin (method url-fetch) (uri (list @@ -46,7 +46,7 @@ version "/pcre-" version ".tar.bz2"))) (sha256 (base32 - "0sxg1wlknq05ryq63h21cchjmcjkin9lmnqsmhs3h08301965rwi")))) + "0v9nk51wh55pcbnf2jr36yarz8ayajn6d7ywiq2wagivn9c8c40r")))) (build-system gnu-build-system) (outputs '("out" ;library & headers "bin" ;depends on Readline (adds 20MiB to the closure) diff --git a/gnu/packages/pdf.scm b/gnu/packages/pdf.scm index 71b8177582..7906fd28da 100644 --- a/gnu/packages/pdf.scm +++ b/gnu/packages/pdf.scm @@ -4,7 +4,7 @@ ;;; Copyright © 2014, 2015, 2016, 2018, 2019 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2015 Paul van der Walt <paul@denknerd.org> ;;; Copyright © 2016 Roel Janssen <roel@gnu.org> -;;; Copyright © 2016 ng0 <ng0@n0.is> +;;; Copyright © 2016 Nikita <nikita@n0.is> ;;; Copyright © 2016, 2017, 2018, 2019, 2020 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2016, 2017 Marius Bakke <mbakke@fastmail.com> ;;; Copyright © 2016, 2017, 2019 Ludovic Courtès <ludo@gnu.org> @@ -168,14 +168,14 @@ please install the @code{flyer-composer-gui} package."))) (define-public poppler (package (name "poppler") - (version "0.79.0") + (version "0.86.1") (source (origin (method url-fetch) (uri (string-append "https://poppler.freedesktop.org/poppler-" version ".tar.xz")) (sha256 (base32 - "1j18jlv1q6h21azb939gqjsgcbsh5qcd8dwxdmad54p5ixha91gr")))) + "0v3z4mk1rr8i0c4cfkab7pnxdbil30j4cm4w6cqlq6cfghkhlqxg")))) (build-system cmake-build-system) ;; FIXME: ;; use libcurl: no @@ -512,7 +512,7 @@ using the DjVuLibre library.") (native-inputs `(("pkg-config" ,pkg-config))) (inputs `(("jbig2dec" ,jbig2dec) - ("libjpeg" ,libjpeg) + ("libjpeg" ,libjpeg-turbo) ("mujs" ,mujs) ("mupdf" ,mupdf) ("openjpeg" ,openjpeg) @@ -652,7 +652,7 @@ interaction.") `(("cppunit" ,cppunit) ("pkg-config" ,pkg-config))) (inputs - `(("libjpeg" ,libjpeg) + `(("libjpeg" ,libjpeg-turbo) ("libtiff" ,libtiff) ("fontconfig" ,fontconfig) ("freetype" ,freetype) @@ -711,7 +711,7 @@ extracting content or merging files.") ("freetype" ,freetype) ("harfbuzz" ,harfbuzz) ("jbig2dec" ,jbig2dec) - ("libjpeg" ,libjpeg) + ("libjpeg" ,libjpeg-turbo) ("libx11" ,libx11) ("libxext" ,libxext) ("mujs" ,mujs) @@ -1032,7 +1032,7 @@ the PDF pages.") #:tests? #f #:make-flags (list "CC=gcc" (string-append "prefix=" (assoc-ref %outputs "out"))))) - (inputs `(("libjpeg" ,libjpeg) + (inputs `(("libjpeg" ,libjpeg-turbo) ("curl" ,curl) ("libtiff" ,libtiff) ("libudev" ,eudev) diff --git a/gnu/packages/perl-check.scm b/gnu/packages/perl-check.scm index 6af240a40a..0031b46948 100644 --- a/gnu/packages/perl-check.scm +++ b/gnu/packages/perl-check.scm @@ -3,7 +3,7 @@ ;;; Copyright © 2016 Danny Milosavljevic <dannym@scratchpost.org> ;;; Copyright © 2016 Ben Woodcroft <donttrustben@gmail.com> ;;; Copyright © 2016 Ricardo Wurmus <rekado@elephly.net> -;;; Copyright © 2016 ng0 <ng0@n0.is> +;;; Copyright © 2016 Nikita <nikita@n0.is> ;;; Copyright © 2016, 2017, 2019 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2016, 2017 Alex Sassmannshausen <alex@pompo.co> ;;; Copyright © 2016, 2017 Marius Bakke <mbakke@fastmail.com> diff --git a/gnu/packages/perl-compression.scm b/gnu/packages/perl-compression.scm index 6bb67bcb59..bb47a90f8f 100644 --- a/gnu/packages/perl-compression.scm +++ b/gnu/packages/perl-compression.scm @@ -4,6 +4,7 @@ ;;; Copyright © 2016, 2017, 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2017 Petter <petter@mykolab.ch> ;;; Copyright © 2017, 2019 Efraim Flashner <efraim@flashner.co.il> +;;; Copyright © 2020 Maxim Cournoyer <maxim.cournoyer@gmail.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -107,6 +108,31 @@ compression library.") writing of compressed data created with the zlib and bzip2 libraries.") (license license:perl-license))) +(define-public perl-perlio-gzip + (package + (name "perl-perlio-gzip") + (version "0.20") + (source (origin + (method url-fetch) + (uri (string-append + "mirror://cpan/authors/id/N/NW/NWCLARK/PerlIO-gzip-" + version ".tar.gz")) + (sha256 + (base32 + "1idxsdmpinsp6qm1lizs7y955bq2wqk9avsz1hxky7i07yd6fj28")))) + (build-system perl-build-system) + (arguments + `(#:make-maker-flags + ;; MakeMaker doesn't honor LIBRARY_PATH. + (let ((zlib (assoc-ref %build-inputs "zlib"))) + (list (format #f "LIBS=-L~a/lib/ -lz" zlib))))) + (inputs `(("zlib" ,zlib))) + (home-page "https://metacpan.org/pod/PerlIO::gzip") + (synopsis "Perl extension to provide a PerlIO layer to gzip/gunzip") + (description "PerlIO::gzip provides a PerlIO layer that manipulates files +in the format used by the @command{gzip} program.") + (license license:perl-license))) + (define-public perl-archive-extract (package (name "perl-archive-extract") diff --git a/gnu/packages/perl.scm b/gnu/packages/perl.scm index 7c9a1d37ca..d32e7b6ece 100644 --- a/gnu/packages/perl.scm +++ b/gnu/packages/perl.scm @@ -7,11 +7,11 @@ ;;; Copyright © 2016, 2018 Mark H Weaver <mhw@netris.org> ;;; Copyright © 2016 Jochem Raat <jchmrt@riseup.net> ;;; Copyright © 2016, 2017, 2018, 2019, 2020 Efraim Flashner <efraim@flashner.co.il> -;;; Copyright © 2016 ng0 <ng0@n0.is> +;;; Copyright © 2016 Nikita <nikita@n0.is> ;;; Copyright © 2016 Alex Sassmannshausen <alex@pompo.co> ;;; Copyright © 2016, 2018, 2020 Roel Janssen <roel@gnu.org> ;;; Copyright © 2016 Ben Woodcroft <donttrustben@gmail.com> -;;; Copyright © 2016 Jan Nieuwenhuizen <janneke@gnu.org> +;;; Copyright © 2016, 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org> ;;; Copyright © 2017 Raoul J.P. Bonnal <ilpuccio.febo@gmail.com> ;;; Copyright © 2017, 2018 Marius Bakke <mbakke@fastmail.com> ;;; Copyright © 2017 Adriano Peluso <catonano@gmail.com> @@ -22,6 +22,7 @@ ;;; Copyright © 2018, 2019 Pierre Neidhardt <mail@ambrevar.xyz> ;;; Copyright © 2018 Kei Kebreau <kkebreau@posteo.net> ;;; Copyright © 2019 Alex Griffin <a@ajgrf.com> +;;; Copyright © 2019 Mathieu Othacehe <m.othacehe@gmail.com> ;;; Copyright © 2019 Stephen J. Scheck <sscheck@cpan.org> ;;; Copyright © 2020 Vincent Legoll <vincent.legoll@gmail.com> ;;; Copyright © 2020 Paul Garlick <pgarlick@tourbillion-technology.com> @@ -47,14 +48,17 @@ #:use-module (gnu packages) #:use-module (guix packages) #:use-module (guix download) + #:use-module (guix git-download) #:use-module (guix utils) #:use-module (guix build-system gnu) #:use-module (guix build-system perl) #:use-module (gnu packages base) + #:use-module (gnu packages bash) #:use-module (gnu packages compression) #:use-module (gnu packages databases) #:use-module (gnu packages freedesktop) #:use-module (gnu packages gd) + #:use-module (gnu packages hurd) #:use-module (gnu packages less) #:use-module (gnu packages ncurses) #:use-module (gnu packages perl-check) @@ -74,14 +78,14 @@ ;; Yeah, Perl... It is required early in the bootstrap process by Linux. (package (name "perl") - (version "5.30.0") + (version "5.30.2") (source (origin (method url-fetch) (uri (string-append "mirror://cpan/src/5.0/perl-" version ".tar.gz")) (sha256 (base32 - "1wkmz6xn3fswpqhz29akiklcxclnlykhp96a8bqcz36rak3i64l5")) + "128nfdxcvxfn5kq55qcfrx2851ys8hv794dcdxbyny8rm7w7vnv6")) (patches (search-patches "perl-no-sys-dirs.patch" "perl-autosplit-default-time.patch" @@ -89,7 +93,7 @@ "perl-reproducible-build-date.patch")))) (build-system gnu-build-system) (arguments - '(#:tests? #f + `(#:tests? #f #:configure-flags (let ((out (assoc-ref %outputs "out")) (libc (assoc-ref %build-inputs "libc"))) @@ -109,6 +113,8 @@ (add-before 'configure 'setup-configure (lambda _ ;; Use the right path for `pwd'. + ;; TODO: use coreutils from INPUTS instead of 'which' + ;; in next rebuild cycle, see fixup below. (substitute* "dist/PathTools/Cwd.pm" (("/bin/pwd") (which "pwd"))) @@ -119,26 +125,86 @@ (("-std=c89") "-std=gnu89")) #t)) - (replace 'configure - (lambda* (#:key configure-flags #:allow-other-keys) - (format #t "Perl configure flags: ~s~%" configure-flags) - (apply invoke "./Configure" configure-flags))) - (add-before - 'strip 'make-shared-objects-writable - (lambda* (#:key outputs #:allow-other-keys) - ;; The 'lib/perl5' directory contains ~50 MiB of .so. Make them - ;; writable so that 'strip' actually strips them. - (let* ((out (assoc-ref outputs "out")) - (lib (string-append out "/lib"))) - (for-each (lambda (dso) - (chmod dso #o755)) - (find-files lib "\\.so$")) - #t))) - + ,@(if (%current-target-system) + `((add-after 'unpack 'unpack-cross + (lambda* (#:key native-inputs inputs #:allow-other-keys) + (let ((cross-checkout + (assoc-ref native-inputs "perl-cross")) + (cross-patch + (assoc-ref native-inputs "perl-cross-patch"))) + (rename-file "Artistic" "Artistic.perl") + (rename-file "Copying" "Copying.perl") + (copy-recursively cross-checkout ".") + (format #t "Applying ~a\n" cross-patch) + (invoke "patch" "-p1" "-i" cross-patch)) + (let ((bash (assoc-ref inputs "bash"))) + (substitute* '("Makefile.config.SH" + "cnf/config.guess" + "cnf/config.sub" + "cnf/configure" + "cnf/configure_misc.sh" + "miniperl_top") + (("! */bin/sh") (string-append "! " bash "/bin/bash")) + ((" /bin/sh") (string-append bash "/bin/bash"))) + (substitute* '("ext/Errno/Errno_pm.PL") + (("\\$cpp < errno.c") "$Config{cc} -E errno.c"))) + #t)) + (replace 'configure + (lambda* (#:key configure-flags outputs inputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (store-directory (%store-directory)) + (configure-flags + (cons* + ;; `perl-cross' confuses target and host + (string-append "--target=" ,(%current-target-system)) + (string-append "--prefix=" out) + (string-append "-Dcc=" ,(%current-target-system) "-gcc") + "-Dbyteorder=1234" + (filter (negate + (lambda (x) (or (string-prefix? "-d" x) + (string-prefix? "-Dcc=" x)))) + configure-flags))) + (bash (assoc-ref inputs "bash")) + (coreutils (assoc-ref inputs "coreutils"))) + (format (current-error-port) + "running ./configure ~a\n" (string-join configure-flags)) + (apply invoke (cons "./configure" configure-flags)) + (substitute* "config.sh" + (((string-append store-directory "/[^/]*-bash-[^/]*")) + bash)) + (substitute* '("config.h") + (("^#define SH_PATH .*") + (string-append "#define SH_PATH \"" bash "/bin/bash\"\n"))) + ;;TODO: fix this in setup-configure next rebuild cycle + (substitute* "dist/PathTools/Cwd.pm" + (((string-append store-directory "/[^/]*-coreutils-[^/]*")) + coreutils)) + #t))) + (add-after 'build 'touch-non-built-files-for-install + (lambda _ + ;; `make install' wants to install these although they do + ;; not get built... + (with-directory-excursion "cpan" + (mkdir-p "Pod-Usage/blib/script") + (mkdir-p "Pod-Parser/blib/script") + (for-each (lambda (file) + (call-with-output-file file + (lambda (port) (display "" port)))) + '("Pod-Usage/blib/script/pod2text" + "Pod-Usage/blib/script/pod2usage" + "Pod-Checker/blib/script/podchecker" + "Pod-Parser/blib/script/podselect"))) + #t))) + `((replace 'configure + (lambda* (#:key configure-flags #:allow-other-keys) + (format #t "Perl configure flags: ~s~%" configure-flags) + (apply invoke "./Configure" configure-flags))))) (add-after 'install 'remove-extra-references (lambda* (#:key inputs outputs #:allow-other-keys) (let* ((out (assoc-ref outputs "out")) - (libc (assoc-ref inputs "libc")) + (libc (assoc-ref inputs + ,(if (%current-target-system) + "cross-libc" "libc"))) (config1 (car (find-files (string-append out "/lib/perl5") "^Config_heavy\\.pl$"))) (config2 (find-files (string-append out "/lib/perl5") @@ -161,6 +227,24 @@ "/lib',\n")))) config2) #t)))))) + (inputs + (if (%current-target-system) + `(("bash" ,bash-minimal) + ("coreutils" ,coreutils)) + '())) + (native-inputs + (if (%current-target-system) + `(("perl-cross" + ,(origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/arsv/perl-cross") + (commit "1.3.3"))) + (file-name (git-file-name "perl-cross" "1.3.3")) + (sha256 + (base32 "065qbl1x44maykaj8p8za0b6qxj74bz7fi2zsrlydir1mqb1js3d")))) + ("perl-cross-patch" ,@(search-patches "perl-cross.patch"))) + '())) (native-search-paths (list (search-path-specification (variable "PERL5LIB") (files '("lib/perl5/site_perl"))))) diff --git a/gnu/packages/perl6.scm b/gnu/packages/perl6.scm index ef46c00385..04e37a3b85 100644 --- a/gnu/packages/perl6.scm +++ b/gnu/packages/perl6.scm @@ -74,10 +74,9 @@ ;; These should be inputs but moar.h can't find them when building rakudo (propagated-inputs `(("libatomic-ops" ,libatomic-ops) + ("libffi" ,libffi) ("libtommath" ,libtommath-1.0) ("libuv" ,libuv))) - (inputs - `(("libffi" ,libffi))) (native-inputs `(("pkg-config" ,pkg-config))) (synopsis "VM for NQP And Rakudo Perl 6") diff --git a/gnu/packages/photo.scm b/gnu/packages/photo.scm index 1e9fab6ef3..59947964a3 100644 --- a/gnu/packages/photo.scm +++ b/gnu/packages/photo.scm @@ -177,7 +177,7 @@ cards and generate meaningful file and folder names.") (native-inputs `(("pkg-config" ,pkg-config))) (inputs - `(("libjpeg" ,libjpeg))) ;for lossy DNGs and old Kodak cameras + `(("libjpeg" ,libjpeg-turbo))) ;for lossy DNGs and old Kodak cameras (propagated-inputs `(("lcms" ,lcms))) ;for color profiles (home-page "https://www.libraw.org") @@ -354,7 +354,7 @@ and a wide variety of other metadata.") "1a4m3plmfcrrplqs9zfzhc5apibn10m5sajpizm1sd3q74w5fwq3")))) (build-system cmake-build-system) (inputs - `(("libjpeg" ,libjpeg) + `(("libjpeg" ,libjpeg-turbo) ("libpng" ,libpng) ("libtiff" ,libtiff) ("zlib" ,zlib))) @@ -396,7 +396,7 @@ overlapping images, as well as some command line tools.") `(("boost" ,boost) ("gsl" ,gsl) ("lcms" ,lcms) - ("libjpeg" ,libjpeg) + ("libjpeg" ,libjpeg-turbo) ("libpng" ,libpng) ("libtiff" ,libtiff) ("openexr" ,openexr) @@ -494,7 +494,7 @@ photographic equipment.") ("pugixml" ,pugixml) ("gtk+" ,gtk+) ("sqlite" ,sqlite) - ("libjpeg" ,libjpeg) + ("libjpeg" ,libjpeg-turbo) ("libpng" ,libpng) ("cairo" ,cairo) ("lcms" ,lcms) @@ -547,7 +547,7 @@ and enhance them.") ("freeglut" ,freeglut) ("glew" ,glew) ("lcms" ,lcms) - ("libjpeg" ,libjpeg) + ("libjpeg" ,libjpeg-turbo) ("libpano13" ,libpano13) ("libpng" ,libpng) ("libtiff" ,libtiff) @@ -632,7 +632,7 @@ a complete panorama and stitch any series of overlapping pictures.") ("lensfun" ,lensfun) ("libcanberra" ,libcanberra) ("libiptcdata" ,libiptcdata) - ("libjpeg" ,libjpeg) + ("libjpeg" ,libjpeg-turbo) ("libpng" ,libpng) ("librsvg" ,librsvg) ("libsigc++" ,libsigc++) diff --git a/gnu/packages/php.scm b/gnu/packages/php.scm index 438e9fca83..8cd8cace8c 100644 --- a/gnu/packages/php.scm +++ b/gnu/packages/php.scm @@ -4,6 +4,7 @@ ;;; Copyright © 2018, 2020 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2018 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2019 Oleg Pykhalov <go.wigust@gmail.com> +;;; Copyright © 2020 Maxim Cournoyer <maxim.cournoyer@gmail.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -59,7 +60,7 @@ (define-public php (package (name "php") - (version "7.4.5") + (version "7.4.6") (home-page "https://secure.php.net/") (source (origin (method url-fetch) @@ -67,7 +68,7 @@ "php-" version ".tar.xz")) (sha256 (base32 - "0b1wybhqjlnc94qzixhycg9i0w39fqlhm80mvbmd5i5xamzzsnfh")) + "0ck8s3zlqnkswwmz3p1bgma7ddjsx9j9sdlz5di1jc7nhhpk4h6p")) (modules '((guix build utils))) (snippet '(with-directory-excursion "ext" @@ -210,6 +211,13 @@ "ext/standard/tests/strings/setlocale_basic2.phpt" "ext/standard/tests/strings/setlocale_basic3.phpt" "ext/standard/tests/strings/setlocale_variation1.phpt" + ;; This failing test is skipped on PHP's Travis CI as it is + ;; supposedly inaccurate. + "ext/standard/tests/file/disk_free_space_basic.phpt" + ;; The following test erroneously expect the link + ;; count of a sub-directory to increase compared to + ;; its parent. + "ext/standard/tests/file/lstat_stat_variation8.phpt" ;; XXX: These gd tests fails. Likely because our version ;; is different from the (patched) bundled one. @@ -224,6 +232,21 @@ ;; This bug should have been fixed in gd 2.2.2. ;; Is it a regression? "ext/gd/tests/bug65148.phpt" + ;; This bug should have been fixed in the gd 2.2 + ;; series. Perhaps a regression introduced by gd + ;; 2.3.0? + "ext/gd/tests/bug66590.phpt" + ;; This bug should have been fixed in the php-5.5 + ;; series. Perhaps a regression introduced by gd + ;; 2.3.0? + "ext/gd/tests/bug70102.phpt" + ;; This bug should have been fixed in the php-5.6 + ;; series. Perhaps a regression introduced by gd + ;; 2.3.0? + "ext/gd/tests/bug73869.phpt" + ;; Some WebP related tests fail. + "ext/gd/tests/webp_basic.phpt" + "ext/gd/tests/imagecreatefromstring_webp.phpt" ;; Expected error message, but from the wrong function "ext/gd/tests/bug77269.phpt" ;; TODO: Enable these when libgd is built with xpm support. @@ -237,8 +260,11 @@ ;; complete. It's a warning in both cases and test ;; result is the same. "ext/gd/tests/bug77973.phpt" - ;; New test failures added with 7.4.3 + ;; Test expects uninitialized value to be false, but + ;; instead gets "resource(5) of type (gd)". "ext/gd/tests/bug79067.phpt" + ;; The following test fails with "The image size + ;; differs: expected 114x115, got 117x117". "ext/gd/tests/bug79068.phpt" ;; XXX: These iconv tests have the expected outcome, diff --git a/gnu/packages/pkg-config.scm b/gnu/packages/pkg-config.scm index c3bc3025a3..9c632532be 100644 --- a/gnu/packages/pkg-config.scm +++ b/gnu/packages/pkg-config.scm @@ -1,5 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2012, 2013, 2014, 2016 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2019 Mathieu Othacehe <m.othacehe@gmail.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -49,7 +50,17 @@ (base32 "14fmwzki1rlz8bs2p810lk6jqdxsk966d8drgsjmi54cd00rrikg")))) (build-system gnu-build-system) - (arguments `(#:configure-flags '("--with-internal-glib"))) + (arguments + `(#:configure-flags + '("--with-internal-glib" + ;; Those variables are guessed incorrectly when cross-compiling. + ;; See: https://developer.gimp.org/api/2.0/glib/glib-cross-compiling.html. + ,@(if (%current-target-system) + '("glib_cv_stack_grows=no" + "glib_cv_uscore=no" + "ac_cv_func_posix_getpwuid_r=yes" + "ac_cv_func_posix_getgrgid_r=yes") + '())))) (native-search-paths (list (search-path-specification (variable "PKG_CONFIG_PATH") diff --git a/gnu/packages/plotutils.scm b/gnu/packages/plotutils.scm index 09fe2cb36e..edd492c711 100644 --- a/gnu/packages/plotutils.scm +++ b/gnu/packages/plotutils.scm @@ -112,7 +112,7 @@ scientific data.") #t)))) (build-system gnu-build-system) (native-inputs `(("pkg-config" ,pkg-config))) - (inputs `(("guile" ,guile-2.2))) + (inputs `(("guile" ,guile-3.0))) (propagated-inputs `(("guile-cairo" ,guile-cairo))) (home-page "http://wingolog.org/software/guile-charting/") (synopsis "Create charts and graphs in Guile") @@ -121,12 +121,15 @@ scientific data.") using the Cairo drawing library.") (license license:lgpl2.1+))) -(define-public guile3.0-charting +(define-public guile2.2-charting (package (inherit guile-charting) - (name "guile3.0-charting") - (inputs `(("guile" ,guile-3.0))) - (propagated-inputs `(("guile-cairo" ,guile3.0-cairo))))) + (name "guile2.2-charting") + (inputs `(("guile" ,guile-2.2))) + (propagated-inputs `(("guile-cairo" ,guile2.2-cairo))))) + +(define-public guile3.0-charting + (deprecated-package "guile3.0-charting" guile-charting)) (define-public ploticus (package @@ -214,6 +217,7 @@ colors, styles, options and details.") ;; For the manual and the tests. ("texlive" ,(texlive-union (list texlive-amsfonts texlive-epsf + texlive-etoolbox texlive-latex-base texlive-latex-geometry texlive-latex-graphics diff --git a/gnu/packages/prolog.scm b/gnu/packages/prolog.scm index 00b471fb6a..bf992f6bd6 100644 --- a/gnu/packages/prolog.scm +++ b/gnu/packages/prolog.scm @@ -137,7 +137,7 @@ manner. It also features an interactive interpreter.") ("texinfo" ,texinfo) ("libarchive" ,libarchive) ("libunwind" ,libunwind) - ("libjpeg", libjpeg) + ("libjpeg", libjpeg-turbo) ("libxft" ,libxft) ("fontconfig" ,fontconfig) ("perl" ,perl) diff --git a/gnu/packages/pulseaudio.scm b/gnu/packages/pulseaudio.scm index a1500392fc..b4a8d981a2 100644 --- a/gnu/packages/pulseaudio.scm +++ b/gnu/packages/pulseaudio.scm @@ -9,6 +9,7 @@ ;;; Copyright © 2017 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2018 Pierre Langlois <pierre.langlois@gmx.com> ;;; Copyright © 2019 Alex Griffin <a@ajgrf.com> +;;; Copyright © 2019 Mathieu Othacehe <m.othacehe@gmail.com> ;;; Copyright © 2020 Amin Bandali <bandali@gnu.org> ;;; ;;; This file is part of GNU Guix. @@ -30,6 +31,7 @@ #:use-module (guix packages) #:use-module (guix download) #:use-module (guix git-download) + #:use-module (guix utils) #:use-module ((guix licenses) #:prefix l:) #:use-module (guix build-system glib-or-gtk) #:use-module (guix build-system gnu) @@ -43,12 +45,14 @@ #:use-module (gnu packages check) #:use-module (gnu packages dbm) #:use-module (gnu packages glib) + #:use-module (gnu packages gettext) #:use-module (gnu packages gnome) #:use-module (gnu packages gtk) #:use-module (gnu packages libcanberra) #:use-module (gnu packages web) #:use-module (gnu packages linux) #:use-module (gnu packages m4) + #:use-module (gnu packages perl) #:use-module (gnu packages protobuf) #:use-module (gnu packages python) #:use-module (gnu packages python-xyz) @@ -108,10 +112,28 @@ for reading and writing new sound file formats.") "1ha46i0nbibq0pl0pjwcqiyny4hj8lp1bnl4dpxm64zjw9lb2zha")))) (build-system gnu-build-system) (native-inputs - `(("pkg-config" ,pkg-config))) + `(("pkg-config" ,pkg-config) + ("automake" ,automake))) ;For up to date 'config.guess' and 'config.sub'. (propagated-inputs `(("libsndfile" ,libsndfile) ("fftw" ,fftw))) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-after 'unpack 'fix-configure + (lambda* (#:key inputs native-inputs #:allow-other-keys) + ;; Replace outdated config.sub and config.guess: + (with-directory-excursion "Cfg" + (for-each (lambda (file) + (install-file (string-append + (assoc-ref + (or native-inputs inputs) "automake") + "/share/automake-" + ,(version-major+minor + (package-version automake)) + "/" file) ".")) + '("config.sub" "config.guess"))) + #t))))) (home-page "http://www.mega-nerd.com/SRC/index.html") (synopsis "Audio sample rate conversion library") (description @@ -198,9 +220,11 @@ rates.") ("eudev" ,eudev))) ;for the detection of hardware audio devices (native-inputs `(("check" ,check) + ("gettext" ,gettext-minimal) ("glib:bin" ,glib "bin") - ("intltool" ,intltool) ("m4" ,m4) + ("perl" ,perl) + ("perl-xml-parser" ,perl-xml-parser) ("pkg-config" ,pkg-config))) (propagated-inputs ;; 'libpulse*.la' contain `-lgdbm' and `-lcap', so propagate them. diff --git a/gnu/packages/purescript.scm b/gnu/packages/purescript.scm new file mode 100644 index 0000000000..13cd773839 --- /dev/null +++ b/gnu/packages/purescript.scm @@ -0,0 +1,133 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2020 John Soo <jsoo1@asu.edu> +;;; +;;; 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 purescript) + #:use-module (gnu packages) + #:use-module (gnu packages haskell-xyz) + #:use-module (gnu packages haskell-check) + #:use-module (gnu packages haskell-crypto) + #:use-module (gnu packages haskell-web) + #:use-module ((gnu packages python) #:select (python)) + #:use-module (guix download) + #:use-module (guix git-download) + #:use-module (guix packages) + #:use-module (guix build-system haskell) + #:use-module ((guix licenses) #:prefix license:)) + +(define ghc-happy-1.19.9 + (package + (inherit ghc-happy) + (version "1.19.9") + (source + (origin + (method url-fetch) + (uri (string-append + "https://hackage.haskell.org/package/happy/happy-" + version + ".tar.gz")) + (sha256 + (base32 + "138xpxdb7x62lpmgmb6b3v3vgdqqvqn4273jaap3mjmc2gla709y")))))) + +(define-public purescript + (package + (name "purescript") + (version "0.13.6") + (source + (origin + (method url-fetch) + (uri (string-append + "mirror://hackage/package/purescript/purescript-" + version + ".tar.gz")) + (sha256 + (base32 + "1xss3wpv6wb38gsh9r635s09cxzmiz81hhssdxzdba2pw6ifzx8j")) + (patches (search-patches "purescript-relax-dependencies.patch")))) + (build-system haskell-build-system) + (inputs + `(("ghc-glob" ,ghc-glob) + ("ghc-aeson" ,ghc-aeson) + ("ghc-aeson-better-errors" ,ghc-aeson-better-errors) + ("ghc-aeson-pretty" ,ghc-aeson-pretty) + ("ghc-ansi-terminal" ,ghc-ansi-terminal) + ("ghc-base-compat" ,ghc-base-compat) + ("ghc-blaze-html" ,ghc-blaze-html) + ("ghc-bower-json" ,ghc-bower-json) + ("ghc-boxes" ,ghc-boxes) + ("ghc-cheapskate" ,ghc-cheapskate) + ("ghc-clock" ,ghc-clock) + ("ghc-cryptonite" ,ghc-cryptonite) + ("ghc-data-ordlist" ,ghc-data-ordlist) + ("ghc-dlist" ,ghc-dlist) + ("ghc-edit-distance" ,ghc-edit-distance) + ("ghc-file-embed" ,ghc-file-embed) + ("ghc-fsnotify" ,ghc-fsnotify) + ("ghc-happy" ,ghc-happy) + ("ghc-language-javascript" ,ghc-language-javascript) + ("ghc-lifted-async" ,ghc-lifted-async) + ("ghc-lifted-base" ,ghc-lifted-base) + ("ghc-memory" ,ghc-memory) + ("ghc-microlens-platform" ,ghc-microlens-platform) + ("ghc-monad-control" ,ghc-monad-control) + ("ghc-monad-logger" ,ghc-monad-logger) + ("ghc-network" ,ghc-network) + ("ghc-parallel" ,ghc-parallel) + ("ghc-pattern-arrows" ,ghc-pattern-arrows) + ("ghc-protolude" ,ghc-protolude) + ("ghc-regex-tdfa" ,ghc-regex-tdfa) + ("ghc-safe" ,ghc-safe) + ("ghc-scientific" ,ghc-scientific) + ("ghc-semialign" ,ghc-semialign) + ("ghc-semigroups" ,ghc-semigroups) + ("ghc-sourcemap" ,ghc-sourcemap) + ("ghc-split" ,ghc-split) + ("ghc-stringsearch" ,ghc-stringsearch) + ("ghc-syb" ,ghc-syb) + ("ghc-these" ,ghc-these) + ("ghc-transformers-base" ,ghc-transformers-base) + ("ghc-transformers-compat" ,ghc-transformers-compat) + ("ghc-unordered-containers" ,ghc-unordered-containers) + ("ghc-utf8-string" ,ghc-utf8-string) + ("ghc-vector" ,ghc-vector) + ("ghc-ansi-wl-pprint" ,ghc-ansi-wl-pprint) + ("ghc-http-types" ,ghc-http-types) + ("ghc-network" ,ghc-network) + ("ghc-optparse-applicative" ,ghc-optparse-applicative) + ("ghc-wai" ,ghc-wai) + ("ghc-wai-websockets" ,ghc-wai-websockets) + ("ghc-warp" ,ghc-warp) + ("ghc-websockets" ,ghc-websockets))) + (native-inputs + `(("ghc-happy" ,ghc-happy-1.19.9) ; build fails with 1.19.12 + ("ghc-hunit" ,ghc-hunit) + ("ghc-hspec" ,ghc-hspec) + ("hspec-discover" ,hspec-discover) + ("ghc-tasty" ,ghc-tasty) + ("ghc-tasty-golden" ,ghc-tasty-golden) + ("ghc-tasty-hspec" ,ghc-tasty-hspec))) + (arguments + `(;; Tests require npm + #:tests? #f + #:configure-flags '("--flags=release"))) + (home-page "https://www.purescript.org/") + (synopsis "Haskell inspired programming language compiling to JavaScript") + (description + "Purescript is a small strongly, statically typed programming language with +expressive types, inspired by Haskell and compiling to JavaScript.") + (license license:bsd-3))) diff --git a/gnu/packages/python-compression.scm b/gnu/packages/python-compression.scm index 7a0f3ae6ac..42855f0298 100644 --- a/gnu/packages/python-compression.scm +++ b/gnu/packages/python-compression.scm @@ -1,7 +1,7 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2017, 2019 Ricardo Wurmus <rekado@elephly.net> -;;; Copyright © 2017 ng0 <ng0@n0.is> +;;; Copyright © 2017 Nikita <nikita@n0.is> ;;; Copyright © 2017 Julien Lepiller <julien@lepiller.eu> ;;; Copyright © 2018, 2019 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2020 Nicolas Goaziou <mail@nicolasgoaziou.fr> @@ -254,6 +254,17 @@ wrapper. It provides a backport of the @code{Path} object.") ("python-unittest2" ,python2-unittest2) ,@(package-native-inputs base)))))) +;; This package is used to bootstrap pytest, via importlib-metadata. +(define-public python2-zipp-bootstrap + (hidden-package + (package/inherit + python2-zipp + (arguments + `(#:tests? #f + ,@(package-arguments python2-zipp))) + (native-inputs + `(("python-setuptools-scm" ,python2-setuptools-scm)))))) + (define-public python-zstandard (package (name "python-zstandard") diff --git a/gnu/packages/python-crypto.scm b/gnu/packages/python-crypto.scm index 80160301dd..e6208ab3d9 100644 --- a/gnu/packages/python-crypto.scm +++ b/gnu/packages/python-crypto.scm @@ -9,7 +9,7 @@ ;;; Copyright © 2014, 2017 Eric Bavier <bavier@member.fsf.org> ;;; Copyright © 2015, 2016 David Thompson <davet@gnu.org> ;;; Copyright © 2016, 2017, 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr> -;;; Copyright © 2016, 2017 ng0 <ng0@n0.is> +;;; Copyright © 2016, 2017 Nikita <nikita@n0.is> ;;; Copyright © 2014, 2015 Mark H Weaver <mhw@netris.org> ;;; Copyright © 2015, 2016, 2017, 2019 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2016 Danny Milosavljevic <dannym+a@scratchpost.org> @@ -280,7 +280,8 @@ making them easy to handle and incorporate into other protocols.") (origin (method url-fetch) (uri (pypi-uri "pycrypto" version)) - (patches (search-patches "python-pycrypto-CVE-2013-7459.patch")) + (patches (search-patches "python-pycrypto-CVE-2013-7459.patch" + "python-pycrypto-time-clock.patch")) (sha256 (base32 "0g0ayql5b9mkjam8hym6zyg6bv77lbh66rv1fyvgqb17kfc1xkpj")))) diff --git a/gnu/packages/python-science.scm b/gnu/packages/python-science.scm index 530a2478f3..2f7516b9f6 100644 --- a/gnu/packages/python-science.scm +++ b/gnu/packages/python-science.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2015, 2016 Ricardo Wurmus <rekado@elephly.net> +;;; Copyright © 2015, 2016, 2020 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2015 Federico Beffa <beffa@fbengineering.ch> ;;; Copyright © 2016 Ben Woodcroft <donttrustben@gmail.com> ;;; Copyright © 2016 Hartmut Goebel <h.goebel@crazy-compilers.com> @@ -162,6 +162,39 @@ routines such as routines for numerical integration and optimization.") (base32 "1cgvgin8fvckv96hjh3ikmwkra5rif51bdb75ifzf7xbil5iwcx4")))))) +(define-public python2-weave + (package + (name "python2-weave") + (version "0.16.0") + (source + (origin + (method url-fetch) + (uri (pypi-uri "weave" version)) + (sha256 + (base32 "0jnm3584mfichgwgrd1gk5i42ll9c08nkw9716n947n4338f6ghs")))) + (build-system python-build-system) + (arguments + `(#:python ,python-2 + #:phases + (modify-phases %standard-phases + (replace 'check + (lambda _ + (invoke "nosetests" "-v" + "--exclude" + "test_(user|incorrect_ownership|char_fail|obj_fail)")))))) + (propagated-inputs + `(("python-numpy" ,python2-numpy))) + (native-inputs + `(("python-nose" ,python2-nose))) + (home-page "https://www.scipy.org/") + (synopsis "Tools for including C/C++ code within Python code") + (description "Weave is the stand-alone version of the obsolete Scipy +submodule @code{scipy.weave}. It is Python 2.x only, and is provided for +users that need new versions of Scipy but have existing code that still +depends on @code{scipy.weave}. For new code, users are recommended to use +Cython.") + (license license:bsd-3))) + (define-public python-scikit-image (package (name "python-scikit-image") diff --git a/gnu/packages/python-web.scm b/gnu/packages/python-web.scm index 6b77a9d949..88ba88e2e2 100644 --- a/gnu/packages/python-web.scm +++ b/gnu/packages/python-web.scm @@ -4,11 +4,11 @@ ;;; Copyright © 2017 Christopher Baines <mail@cbaines.net> ;;; Copyright © 2016, 2017 Danny Milosavljevic <dannym+a@scratchpost.org> ;;; Copyright © 2013, 2014, 2015, 2016 Andreas Enge <andreas@enge.fr> -;;; Copyright © 2016, 2017 Marius Bakke <mbakke@fastmail.com> +;;; Copyright © 2016, 2017, 2020 Marius Bakke <mbakke@fastmail.com> ;;; Copyright © 2015, 2016, 2017, 2018, 2019, 2020 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2017 Roel Janssen <roel@gnu.org> ;;; Copyright © 2016, 2017, 2020 Julien Lepiller <julien@lepiller.eu> -;;; Copyright © 2016, 2017 ng0 <ng0@n0.is> +;;; Copyright © 2016, 2017 Nikita <nikita@n0.is> ;;; Copyright © 2014, 2017 Eric Bavier <bavier@member.fsf.org> ;;; Copyright © 2014, 2015 Mark H Weaver <mhw@netris.org> ;;; Copyright © 2015 Cyril Roelandt <tipecaml@gmail.com> @@ -35,6 +35,8 @@ ;;; Copyright © 2020 Evan Straw <evan.straw99@gmail.com> ;;; Copyright © 2020 Alexandros Theodotou <alex@zrythm.org> ;;; Copyright © 2020 Holger Peters <holger.peters@posteo.de> +;;; Copyright © 2020 Noisytoot <noisytoot@gmail.com> +;;; Copyright © 2020 Edouard Klein <edk@beaver-labs.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -93,7 +95,6 @@ (base32 "09pkw6f1790prnrq0k8cqgnf1qy57ll8lpmc6kld09q7zw4vi6i5")) (patches (search-patches "python-aiohttp-3.6.2-no-warning-fail.patch")))) - (build-system python-build-system) (arguments '(#:phases @@ -107,6 +108,17 @@ ;; make sure the timestamp of this file is > 1990, because a few ;; tests like test_static_file_if_modified_since_past_date depend on it (invoke "touch" "-d" "2020-01-01" "tests/data.unknown_mime_type") + + ;; FIXME: These tests are failing due to deprecation warnings + ;; in Python 3.8. Remove this when updating to aiohttp >= 3.7. + ;; https://github.com/aio-libs/aiohttp/issues/4477 + ;; https://github.com/aio-libs/aiohttp/issues/4525 + (with-directory-excursion "tests" + (for-each delete-file '("test_client_session.py" + "test_multipart.py" + "test_web_middleware.py" + "test_web_protocol.py" + "test_web_urldispatcher.py"))) #t))))) (propagated-inputs `(("python-aiodns" ,python-aiodns) @@ -869,6 +881,37 @@ connection to each user.") (license license:asl2.0) (properties `((python2-variant . ,(delay python2-tornado)))))) +(define-public python-tornado-6 + (package + (name "python-tornado") + (version "6.0.4") + (source + (origin + (method url-fetch) + (uri (pypi-uri "tornado" version)) + (sha256 + (base32 + "1p5n7sw4580pkybywg93p8ddqdj9lhhy72rzswfa801vlidx9qhg")))) + (build-system python-build-system) + (arguments + '(#:phases + (modify-phases %standard-phases + (replace 'check + (lambda _ + (invoke "python" "-m" "tornado.test.runtests") + #t))))) + (native-inputs + `(("python-certifi" ,python-certifi))) + (home-page "https://www.tornadoweb.org/") + (synopsis "Python web framework and asynchronous networking library") + (description + "Tornado is a Python web framework and asynchronous networking library, +originally developed at FriendFeed. By using non-blocking network I/O, +Tornado can scale to tens of thousands of open connections, making it ideal +for long polling, WebSockets, and other applications that require a long-lived +connection to each user.") + (license license:asl2.0))) + (define-public python2-tornado (let ((tornado (package-with-python2 (strip-python2-variant python-tornado)))) (package (inherit tornado) @@ -1971,14 +2014,16 @@ library.") (lambda _ (delete-file "src/geventhttpclient/tests/test_client.py") #t)) - (delete 'check) - (add-after 'install 'check + (replace 'check (lambda* (#:key inputs outputs #:allow-other-keys) (add-installed-pythonpath inputs outputs) (invoke "py.test" "src/geventhttpclient/tests" "-v" ;; Append the test modules to sys.path to avoid ;; namespace conflict which breaks SSL tests. - "--import-mode=append") + "--import-mode=append" + ;; XXX: Disable test fails with Python 3.8: + ;; https://github.com/gwik/geventhttpclient/issues/119 + "-k" (string-append "not test_cookielib_compatibility")) #t))))) (native-inputs `(("python-pytest" ,python-pytest))) @@ -2161,6 +2206,15 @@ Betamax.") (arguments `(#:phases (modify-phases %standard-phases + (add-after 'unpack 'patch + (lambda _ + ;; There's a small issue with one test with Python 3.8, this + ;; change has been suggested upstream: + ;; https://github.com/boto/s3transfer/pull/164 + (substitute* "tests/unit/test_s3transfer.py" + (("super\\(FailedDownloadParts, self\\)\\.submit\\(function\\)") + "futures.Future()")) + #t)) (replace 'check (lambda _ ;; Some of the 'integration' tests require network access or @@ -3268,32 +3322,6 @@ such as IoT applications or multi-user database-driven business applications.") Python.") (license license:bsd-3))) -;; kaldi-gstreamer-server does not yet work with python-ws4py > 0.3.2 -(define-public python2-ws4py-for-kaldi-gstreamer-server - (package (inherit python-ws4py) - (name "python2-ws4py") - (version "0.3.2") - (source - (origin - (method url-fetch) - (uri (pypi-uri "ws4py" version)) - (sha256 - (base32 - "12ys3dv98awhrxd570vla3hqgzq3avjhq4yafhghhq3a942y1928")))) - (build-system python-build-system) - (arguments - `(#:python ,python-2 - #:phases - (modify-phases %standard-phases - ;; We don't have a package for cherrypy. - (add-after 'unpack 'remove-cherrypy-support - (lambda _ - (delete-file "ws4py/server/cherrypyserver.py") - #t))))) - (propagated-inputs - `(("python-gevent" ,python2-gevent) - ("python-tornado" ,python2-tornado))))) - (define-public python-slugify (package (name "python-slugify") @@ -3621,3 +3649,100 @@ and rendering come directly from GitHub, so you'll know exactly how it will appear. Changes you make to the file will be instantly reflected in the browser without requiring a page refresh.") (license license:expat)))) + +(define-public python-port-for + (package + (name "python-port-for") + (version "0.4") + (source + (origin + (method url-fetch) + (uri (pypi-uri "port-for" version)) + (sha256 + (base32 + "1pncxlj25ggw99r0ijfbkq70gd7cbhqdx5ivsxy4jdp0z14cpda7")))) + (build-system python-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-after 'unpack 'use-urllib3 + (lambda _ + (substitute* "port_for/_download_ranges.py" + (("urllib2") "urllib3")) + #t))))) + (propagated-inputs + `(("python-urllib3" ,python-urllib3))) + (native-inputs + `(("python-mock" ,python-mock))) + (home-page "https://github.com/kmike/port-for/") + (synopsis "TCP localhost port finder and association manager") + (description + "This package provides a utility that helps with local TCP ports +management. It can find an unused TCP localhost port and remember the +association.") + (license license:expat))) + +(define-public python-livereload + (package + (name "python-livereload") + (version "2.6.1") + (source + (origin + (method url-fetch) + (uri (pypi-uri "livereload" version)) + (sha256 + (base32 + "0rhggz185bxc3zjnfpmhcvibyzi86i624za1lfh7x7ajsxw4y9c9")))) + (build-system python-build-system) + (propagated-inputs + `(("python-six" ,python-six) + ("python-tornado" ,python-tornado))) + (home-page "https://github.com/lepture/python-livereload") + (synopsis "Python LiveReload") + (description + "Python LiveReload provides a command line utility, @command{livereload}, +for starting a web server in a directory. It can trigger arbitrary commands +and serve updated contents upon changes to the directory.") + (license license:bsd-3))) + +(define-public python-vf-1 + (package + (name "python-vf-1") + (version "0.0.11") + (source + (origin + (method url-fetch) + (uri (pypi-uri "VF-1" version)) + (sha256 + (base32 + "0xlqsaxsiayk1sd07kpz8abbcnab582y29a1y4882fq6j4gma5xi")))) + (build-system python-build-system) + (home-page "https://github.com/solderpunk/VF-1") + (synopsis "Command line gopher client") + (description "@code{VF-1} is a command line gopher client with +@acronym{TLS, Transport Layer Security} support.") + (license license:bsd-2))) + +(define-public python-websockets + (package + (name "python-websockets") + (version "8.1") + (source + (origin + (method url-fetch) + (uri (pypi-uri "websockets" version)) + (sha256 + (base32 + "03s3ml6sbki24aajllf8aily0xzrn929zxi84p50zkkbikdd4raw")))) + (build-system python-build-system) + (arguments '(#:tests? #f)) ; Tests not included in release tarball. + (home-page "https://github.com/aaugustin/websockets") + (synopsis + "Python implementation of the WebSocket Protocol (RFC 6455 & 7692)") + (description + "@code{websockets} is a library for building WebSocket servers and clients +in Python with a focus on correctness and simplicity. + +Built on top of @code{asyncio}, Python's standard asynchronous I/O framework, +it provides an elegant coroutine-based API.") + (license license:bsd-3))) diff --git a/gnu/packages/python-xyz.scm b/gnu/packages/python-xyz.scm index 31cafd47d1..657ebabe93 100644 --- a/gnu/packages/python-xyz.scm +++ b/gnu/packages/python-xyz.scm @@ -23,7 +23,7 @@ ;;; Copyright © 2016 Daniel Pimentel <d4n1@d4n1.org> ;;; Copyright © 2016 Sou Bunnbu <iyzsong@gmail.com> ;;; Copyright © 2016, 2017 Troy Sankey <sankeytms@gmail.com> -;;; Copyright © 2016, 2017 ng0 <ng0@n0.is> +;;; Copyright © 2016, 2017 Nikita <nikita@n0.is> ;;; Copyright © 2016 Dylan Jeffers <sapientech@sapientech@openmailbox.org> ;;; Copyright © 2016 David Craven <david@craven.ch> ;;; Copyright © 2016, 2017, 2018, 2019, 2020 Marius Bakke <mbakke@fastmail.com> @@ -67,6 +67,7 @@ ;;; Copyright © 2019 Wiktor Żelazny <wzelazny@vurv.cz> ;;; Copyright © 2019, 2020 Tanguy Le Carrour <tanguy@bioneland.org> ;;; Copyright © 2019 Mădălin Ionel Patrașcu <madalinionel.patrascu@mdc-berlin.de> +;;; Copyright © 2020 Riku Viitanen <riku.viitanen@protonmail.com> ;;; Copyright © 2020 Jakub Kądziołka <kuba@kadziolka.net> ;;; Copyright © 2020 sirgazil <sirgazil@zoho.com> ;;; Copyright © 2020 Sebastian Schott <sschott@mailbox.org> @@ -412,16 +413,17 @@ data for video and audio files.") (define-public python-psutil (package (name "python-psutil") - (version "5.6.5") + (version "5.7.0") (source (origin (method url-fetch) (uri (pypi-uri "psutil" version)) (sha256 - (base32 "0isil5jxwwd8awz54qk28rpgjg43i5l6yl70g40vxwa4r4m56lfh")))) + (base32 "03jykdi3dgf1cdal9bv4fq9zjvzj9l9bs99gi5ar81sdl5nc2pk8")))) (build-system python-build-system) (arguments - ;; FIXME: some tests does not return and times out. + ;; FIXME: some tests do not return and time out. Some tests fail because + ;; some processes survive kill(). '(#:tests? #f)) (home-page "https://www.github.com/giampaolo/psutil") (synopsis "Library for retrieving information on running processes") @@ -706,7 +708,7 @@ Expressions are constructed from parsed strings or directly in Python.") (propagated-inputs `(("numpy" ,python-numpy))) (inputs `(("hdf4" ,hdf4) - ("libjpeg" ,libjpeg) + ("libjpeg" ,libjpeg-turbo) ("zlib" ,zlib))) (arguments `(#:phases @@ -1587,14 +1589,14 @@ from the Python interpreter, or as a small part of a larger application.") (define-public python-six (package (name "python-six") - (version "1.12.0") + (version "1.14.0") (source (origin (method url-fetch) (uri (pypi-uri "six" version)) (sha256 (base32 - "0wxs1q74v07ssjywbbm7x6h5v9qx209ld2yfsif4060sxi0h2sni")))) + "02lw67hprv57hyg3cfy02y3ixjk3nzwc0dx3c4ynlvkfwkfdnsr3")))) (build-system python-build-system) (arguments `(#:phases @@ -1603,8 +1605,7 @@ from the Python interpreter, or as a small part of a larger application.") (lambda _ (invoke "py.test" "-v")))))) (native-inputs - `(("python-py" ,python-py) - ("python-pytest" ,python-pytest-bootstrap))) + `(("python-pytest" ,python-pytest-bootstrap))) (home-page "https://pypi.org/project/six/") (synopsis "Python 2 and 3 compatibility utilities") (description @@ -2186,14 +2187,14 @@ server.") (define-public python-py (package (name "python-py") - (version "1.8.0") + (version "1.8.1") (source (origin (method url-fetch) (uri (pypi-uri "py" version)) (sha256 (base32 - "0lsy1gajva083pzc7csj1cvbmminb7b4l6a0prdzyb3fd829nqyw")))) + "1ajjazg3913n0sp3vjyva9c2qh5anx8ziryng935f89604a0h9sy")))) (build-system python-build-system) (arguments ;; FIXME: "ImportError: 'test' module incorrectly imported from @@ -2288,6 +2289,16 @@ from git information. (base32 "1lrsjgblnapfimd0alsi1as5nz2lfqv97131l7d6anbjzq2rjri8")))) (build-system python-build-system) + (arguments + '(#:phases (modify-phases %standard-phases + ;; The package works fine with newer Pytest and Hypothesis, but + ;; has pinned older versions to stay compatible with Python 2. + (add-before 'check 'loosen-pytest-requirement + (lambda _ + (substitute* "setup.py" + (("pytest<5") "pytest") + (("hypothesis<5") "hypothesis")) + #t))))) (native-inputs `(("python-hypothesis" ,python-hypothesis) ("python-pytest" ,python-pytest) @@ -2679,10 +2690,20 @@ memory usage and transliteration quality.") (find-files "." "\\.pyc$")) #t)))) (build-system python-build-system) + (arguments + '(#:phases (modify-phases %standard-phases + (replace 'check + (lambda _ + ;; Mimic upstream commit 3a20892442b34c7 to get + ;; rid of dependency on pytest-runner < 5.0. + ;; Remove substitution for PyJWT > 1.7.1. + (substitute* "setup.py" + ((".*pytest-runner.*") + "")) + (invoke "pytest" "-vv")))))) (native-inputs `(("python-pytest" ,python-pytest) - ("python-pytest-cov" ,python-pytest-cov) - ("python-pytest-runner" ,python-pytest-runner))) + ("python-pytest-cov" ,python-pytest-cov))) (home-page "https://github.com/progrium/pyjwt") (synopsis "JSON Web Token implementation in Python") (description @@ -3212,6 +3233,77 @@ reStructuredText.") (base32 "0x22fs3pdmr42kvz6c654756wja305qv6cx1zbhwlagvxgr4xrji")))))) +(define-public python-restructuredtext-lint + (package + (name "python-restructuredtext-lint") + (version "1.3.0") + (source + (origin + (method url-fetch) + (uri (pypi-uri "restructuredtext-lint" version)) + (sha256 + (base32 + "026rdy5h82ng4vqxk8fnprii9d6qxf7hkygiv0a8afjvdlsxmcwp")))) + (build-system python-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (delete 'check) + (add-after 'install 'check + (lambda* (#:key inputs outputs tests? #:allow-other-keys) + (when tests? + (add-installed-pythonpath inputs outputs) + (invoke "nosetests" "-v")) + #t))))) + (propagated-inputs + `(("python-docutils" ,python-docutils))) + (native-inputs + `(("python-nose" ,python-nose))) + (home-page "https://github.com/twolfson/restructuredtext-lint") + (synopsis "reStructuredText linter") + (description "This package provides a linter for the reStructuredText +format.") + (license license:unlicense))) + +(define-public python-doc8 + (package + (name "python-doc8") + (version "0.8.0") + (source + (origin + (method url-fetch) + (uri (pypi-uri "doc8" version)) + (sha256 + (base32 + "0hw5w8mpgsp51qg8nnq28p7y1jiksvz7a0axnn5bkgss3af9zy1d")))) + (build-system python-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (delete 'check) + (add-after 'install 'check + (lambda* (#:key inputs outputs tests? #:allow-other-keys) + (when tests? + (add-installed-pythonpath inputs outputs) + (invoke "pytest" "-v")) + #t))))) + (propagated-inputs + `(("python-chardet" ,python-chardet) + ("python-docutils" ,python-docutils) + ("python-restructuredtext-lint" ,python-restructuredtext-lint) + ("python-six" ,python-six) + ("python-stevedore" ,python-stevedore))) + (native-inputs + `(("python-testtools" ,python-testtools) + ("python-pytest" ,python-pytest))) + (home-page "https://launchpad.net/doc8") + (synopsis + "Style checker for Sphinx (or other) RST documentation") + (description + "Doc8 is an opinionated style checker for reStructured Text and plain +text styles of documentation.") + (license license:asl2.0))) + (define-public python-pygments (package (name "python-pygments") @@ -3675,21 +3767,21 @@ Server (PLS).") (define-public python-language-server (package (name "python-language-server") - (version "0.31.7") + (version "0.32.0") (source (origin (method url-fetch) (uri (pypi-uri "python-language-server" version)) (sha256 (base32 - "0f8rljff4h2ay9m2n9ang7axai37nzd39zd7m6c90rci5wh8cmxh")))) + "0j5swacmjps9sas1gfwg0xi84rmjhfhz20cwg3k4058d20rs20ip")))) (build-system python-build-system) (propagated-inputs `(("python-pluggy" ,python-pluggy) ("python-jsonrpc-server" ,python-jsonrpc-server) ;; Note: Remove the special versions of Jedi and Parso when updating ;; this package. - ("python-jedi" ,python-jedi-0.15) + ("python-jedi" ,python-jedi) ("python-yapf" ,python-yapf) ("python-pyflakes" ,python-pyflakes) ("python-pydocstyle" ,python-pydocstyle) @@ -3903,7 +3995,13 @@ provides additional functionality on the produced Mallard documents.") (setenv "CFLAGS" "-O0") (invoke "python" "runtests.py" "-vv" - "-j" (number->string (parallel-job-count)))))))) + "-j" (number->string (parallel-job-count)) + ;; XXX: On 32-bit architectures, running the parallel tests + ;; fails on many-core systems, see + ;; <https://github.com/cython/cython/issues/2807>. + ,@(if (not (target-64bit?)) + '("-x" "run.parallel") + '()))))))) (home-page "https://cython.org/") (synopsis "C extensions for Python") (description "Cython is an optimising static compiler for both the Python @@ -3923,18 +4021,6 @@ writing C extensions for Python as easy as Python itself.") (substitute-keyword-arguments (package-arguments base) ((#:phases phases) `(modify-phases ,phases - ;; XXX: On i686-linux, running the parallel tests fails on many-core - ;; systems, see <https://github.com/cython/cython/issues/2807>. - ;; TODO: Move this logic to the regular check phase in a future - ;; rebuild cycle. - ,@(if (string-prefix? "i686" (%current-system)) - '((replace 'check - (lambda _ - (setenv "CFLAGS" "-O0") - (invoke "python" "runtests.py" "-vv" - "-j" (number->string (parallel-job-count)) - "-x" "run.parallel")))) - '()) (add-before 'check 'adjust-test_embed (lambda _ (substitute* "runtests.py" @@ -4356,13 +4442,13 @@ library, libgit2 implements Git plumbing.") (define-public python-pyparsing (package (name "python-pyparsing") - (version "2.3.1") + (version "2.4.6") (source (origin (method url-fetch) (uri (pypi-uri "pyparsing" version)) (sha256 - (base32 "0yk6xl885b91dmlhlsap7x78hk2rdr879fln9anbq6k4ca42djb6")))) + (base32 "17wn5zlijc9m9zj26gy3f541y7smpj8rfhl51d025c2gm210b0sc")))) (build-system python-build-system) (outputs '("out" "doc")) (arguments @@ -4804,27 +4890,38 @@ toolkits.") three-way Venn diagrams in @code{matplotlib}.") (license license:expat))) -(define-public python2-pysnptools +(define-public python-pysnptools (package - (name "python2-pysnptools") - (version "0.3.13") + (name "python-pysnptools") + (version "0.4.11") (source (origin (method url-fetch) (uri (pypi-uri "pysnptools" version)) (sha256 (base32 - "0lnis5xsl7bi0hz4f7gbicahzi5zlxkc21nk3g374xv8fb5hb3qm")))) + "0gxr0bjix307wvk0qh7vkafbxbzfpdmq0wlswpxyyaymy0fwcypv")))) (build-system python-build-system) (arguments - `(#:python ,python-2 ; only Python 2.7 is supported - #:tests? #f)) ; test files (e.g. examples/toydata.bim) not included + `(#:tests? #f ; no test data are included + #:phases + (modify-phases %standard-phases + (replace 'check + (lambda* (#:key inputs outputs tests? #:allow-other-keys) + (if tests? + (begin + (add-installed-pythonpath inputs outputs) + (invoke "python3" "pysnptools/test.py")) + #t)))))) (propagated-inputs - `(("python2-numpy" ,python2-numpy) - ("python2-scipy" ,python2-scipy) - ("python2-pandas" ,python2-pandas))) + `(("python-dill" ,python-dill) + ("python-h5py" ,python-h5py) + ("python-numpy" ,python-numpy) + ("python-pandas" ,python-pandas) + ("python-psutil" ,python-psutil) + ("python-scipy" ,python-scipy))) (native-inputs - `(("python2-cython" ,python2-cython))) + `(("python-cython" ,python-cython))) (home-page "http://microsoftgenomics.github.io/PySnpTools/") (synopsis "Library for reading and manipulating genetic data") (description @@ -4834,6 +4931,9 @@ those files. It can also efficiently manipulate ranges of integers using set operators such as union, intersection, and difference.") (license license:asl2.0))) +(define-public python2-pysnptools + (package-with-python2 python-pysnptools)) + (define-public python-socksipy-branch (package (name "python-socksipy-branch") @@ -5147,7 +5247,7 @@ the OleFileIO module from PIL, the Python Image Library.") (inputs `(("freetype" ,freetype) ("lcms" ,lcms) - ("libjpeg" ,libjpeg) + ("libjpeg" ,libjpeg-turbo) ("libtiff" ,libtiff) ("libwebp" ,libwebp) ("openjpeg" ,openjpeg) @@ -5649,13 +5749,13 @@ child application and control it as if a human were typing commands.") (define-public python-setuptools-scm (package (name "python-setuptools-scm") - (version "3.2.0") + (version "3.4.3") (source (origin (method url-fetch) (uri (pypi-uri "setuptools_scm" version)) (sha256 (base32 - "0n3knn3p1sqlx31k2lahn7z9bacvlv8nhlfidj77vz50bxqlgasj")))) + "083k93wi7mrmp1cn28hcbnr6sivbgls0y7zz2m5qzn1wg04a3f16")))) (build-system python-build-system) (home-page "https://github.com/pypa/setuptools_scm/") (synopsis "Manage Python package versions in SCM metadata") @@ -5665,18 +5765,6 @@ child application and control it as if a human were typing commands.") them as the version argument or in a SCM managed file.") (license license:expat))) -;; Needed by python-lazy-object-proxy, remove on next update cycle. -(define-public python-setuptools-scm-3.3 - (package - (inherit python-setuptools-scm) - (version "3.3.3") - (source (origin - (method url-fetch) - (uri (pypi-uri "setuptools_scm" version)) - (sha256 - (base32 - "19cyndx23xmpbhz4qrwmfwsmnnaczd0dw7qg977ksq2dbvxy29dx")))))) - (define-public python2-setuptools-scm (package-with-python2 python-setuptools-scm)) @@ -5715,9 +5803,17 @@ older Python versions.") "0y3hg12iby1qyaspnbisz4s4vxax7syikk3skznwqizqyv89y9yk")))) (build-system python-build-system) (arguments - `(#:python ,python-2)) - (native-inputs - `(("python-wheel" ,python2-wheel))) + `(#:python ,python-2 + #:phases (modify-phases %standard-phases + ;; The build system tests for python-wheel, but it is + ;; not required for Guix nor the test suite. Just drop + ;; it to make bootstrapping pytest easier. + (add-after 'unpack 'drop-wheel-dependency + (lambda _ + (substitute* "setup.cfg" + (("^[[:blank:]]+wheel") + "")) + #t))))) (propagated-inputs `(("python-pathlib2" ,python2-pathlib2) ("python-typing" ,python2-typing))) @@ -5728,21 +5824,33 @@ older Python versions.") for older versions of Python.") (license license:asl2.0))) +;; For importlib-metadata-bootstrap below. +(define-public python2-importlib-resources-bootstrap + (hidden-package + (package/inherit + python2-importlib-resources + (name "python2-importlib-resources-bootstrap") + (propagated-inputs + `(("python-pathlib2-bootstrap" ,python2-pathlib2-bootstrap) + ("python-typing" ,python2-typing)))))) + (define-public python-importlib-metadata (package (name "python-importlib-metadata") - (version "1.4.0") + (version "1.5.0") (source (origin (method url-fetch) (uri (pypi-uri "importlib_metadata" version)) (sha256 - (base32 "1n76444v7zn910xrhh8954jdn4byxbn9f1jck6b85a716mbh2z7i")))) + (base32 + "00ikdj4gjhankdljnz7g5ggak4k9lql2926x0x117ir9j2lv7x86")))) (build-system python-build-system) (propagated-inputs `(("python-zipp" ,python-zipp))) (native-inputs `(("python-setuptools-scm" ,python-setuptools-scm) + ("python-pyfakefs" ,python-pyfakefs) ("python-packaging" ,python-packaging))) (home-page "https://importlib-metadata.readthedocs.io/") (synopsis "Read metadata from Python packages") @@ -5762,6 +5870,10 @@ need to use the older and less efficient @code{pkg_resources} package.") (package/inherit base (name "python2-importlib-metadata") + (native-inputs + `(("python-setuptools-scm" ,python2-setuptools-scm) + ("python-pyfakefs" ,python2-pyfakefs-bootstrap) + ("python-packaging" ,python2-packaging-bootstrap))) (propagated-inputs `(("python-configparser" ,python2-configparser) ("python-contextlib2" ,python2-contextlib2) @@ -5769,6 +5881,22 @@ need to use the older and less efficient @code{pkg_resources} package.") ("python-pathlib2" ,python2-pathlib2) ,@(package-propagated-inputs base)))))) +;; This package is used by python2-pytest, and thus must not depend on it. +(define-public python2-importlib-metadata-bootstrap + (hidden-package + (package/inherit + python2-importlib-metadata + (name "python2-importlib-metadata-bootstrap") + (arguments + `(#:tests? #f + ,@(package-arguments python2-importlib-metadata))) + (propagated-inputs + `(("python-zipp" ,python2-zipp-bootstrap) + ("python-pathlib2" ,python2-pathlib2-bootstrap) + ("python-configparser" ,python2-configparser) + ("python-contextlib2" ,python2-contextlib2-bootstrap) + ("python-importlib-resources" ,python2-importlib-resources-bootstrap)))))) + (define-public python-jaraco-packaging (package (name "python-jaraco-packaging") @@ -7174,6 +7302,8 @@ Python 2 and Python 3.") (modify-phases %standard-phases (replace 'check (lambda _ + (setenv "PYTHONPATH" (string-append "./build/lib:" + (getenv "PYTHONPATH"))) (invoke "py.test" "-v")))))) (native-inputs `(("python2-pytest" ,python2-pytest))) @@ -7308,6 +7438,27 @@ PEP 8.") (define-public python2-pyflakes (package-with-python2 python-pyflakes)) +;; Flake8 2.6 requires an older version of pyflakes. +;; This should be removed ASAP. +(define-public python-pyflakes-1.2 + (package (inherit python-pyflakes) + (version "1.2.3") + (source + (origin + (method url-fetch) + (uri (pypi-uri "pyflakes" version)) + (sha256 + (base32 + "17hkw8yd44cr8fz13phy4aih3r5j2p7ild4zlvqdh2c8dmiinjif")))) + (arguments + '(#:phases + (modify-phases %standard-phases + ;; This one test fails. + (replace 'check + (lambda _ (invoke "pytest" "-vv" "-k" "not test_f_string")))))) + (native-inputs + `(("python-pytest" ,python-pytest))))) + (define-public python-mccabe (package (name "python-mccabe") @@ -7366,35 +7517,16 @@ complexity of Python source code.") (define-public python2-pep8-1.5.7 (package-with-python2 python-pep8-1.5.7)) -;; Flake8 2.4.1 requires an older version of pyflakes. -;; This should be removed ASAP. -(define-public python-pyflakes-0.8.1 - (package (inherit python-pyflakes) - (version "0.8.1") - (source - (origin - (method url-fetch) - (uri (pypi-uri "pyflakes" version)) - (sha256 - (base32 - "0sbpq6pqm1i9wqi41mlfrsc5rk92jv4mskvlyxmnhlbdnc80ma1z")))) - (arguments - ;; XXX Tests not compatible with Python 3.5. - '(#:tests? #f)))) - -(define-public python2-pyflakes-0.8.1 - (package-with-python2 python-pyflakes-0.8.1)) - (define-public python-flake8 (package (name "python-flake8") - (version "3.7.7") + (version "3.7.9") (source (origin (method url-fetch) (uri (pypi-uri "flake8" version)) (sha256 (base32 - "0qg6zggqigrd4k3gv88shd1a27d0cwgfql8vfiq2c7rl7w3rd6c5")))) + "1yscj6avirm6m12bjh4fn2lfgxaamqsjh9pirdqfi0fcgq8ils25")))) (build-system python-build-system) (arguments `(#:phases @@ -7412,8 +7544,7 @@ complexity of Python source code.") ("python-mccabe" ,python-mccabe))) (native-inputs `(("python-mock" ,python-mock) - ("python-pytest" ,python-pytest-bootstrap) - ("python-pytest-runner" ,python-pytest-runner))) + ("python-pytest" ,python-pytest-bootstrap))) (home-page "https://gitlab.com/pycqa/flake8") (synopsis "The modular source code checker: pep8, pyflakes and co") @@ -7432,31 +7563,39 @@ complexity of Python source code.") ("python2-typing" ,python2-typing) ,@(package-propagated-inputs base)))))) -;; python-hacking requires flake8 <2.6.0. -(define-public python-flake8-2.5 +;; python-hacking requires flake8 <2.7.0. +(define-public python-flake8-2.6 (package (inherit python-flake8) - (version "2.5.5") + (version "2.6.2") (source (origin (method url-fetch) (uri (pypi-uri "flake8" version)) (sha256 (base32 - "1snylqwbmrylbx3r1wpz8ggk98f6bcag4441ag8mm2l7wyn58sij")))) + "0y57hzal0j84dh9i1g1g6dc4aywvrnhy2fjmmbglpv5ajihxh713")))) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-after 'unpack 'use-later-pycodestyles + (lambda __ + (substitute* '("flake8.egg-info/requires.txt" + "setup.py") + (("pycodestyle >= 2.0, < 2.1") + "pycodestyle >= 2.0")) + #t)) + (delete 'check) + (add-after 'install 'check + (lambda* (#:key inputs outputs #:allow-other-keys) + (add-installed-pythonpath inputs outputs) + (invoke "pytest" "-v") + #t))))) (propagated-inputs `(("python-pep8" ,python-pep8) - ,@(package-propagated-inputs python-flake8))) - (properties `((python2-variant . ,(delay python2-flake8-2.5)))))) - -(define-public python2-flake8-2.5 - (package - (inherit python2-flake8) - (version (package-version python-flake8-2.5)) - (source (origin - (inherit (package-source python-flake8-2.5)))) - (propagated-inputs - `(("python2-pep8" ,python2-pep8) - ,@(package-propagated-inputs python2-flake8))))) + ("python-pycodestyle" ,python-pycodestyle) + ("python-entrypoints" ,python-entrypoints) + ("python-pyflakes" ,python-pyflakes-1.2) + ("python-mccabe" ,python-mccabe))))) (define-public python-flake8-polyfill (package @@ -7680,13 +7819,13 @@ add functionality and customization to your projects with their own plugins.") (define-public python-fonttools (package (name "python-fonttools") - (version "3.38.0") + (version "4.6.0") (source (origin (method url-fetch) (uri (pypi-uri "fonttools" version ".zip")) (sha256 (base32 - "12ripk3s7skgxr1bs9r8n13r94ym3s8iir7ivfixls9fa4dabmlh")))) + "1mq9kdzhcsp96bhv7smnrpdg1s4z5wh70bsl99c0jmcrahqdisqq")))) (build-system python-build-system) (native-inputs `(("unzip" ,unzip) @@ -7702,8 +7841,18 @@ also contains a tool called “TTX” which converts TrueType/OpenType fonts to from an XML-based format.") (license license:expat))) +;; Fonttools 4.x dropped support for Python 2, so stick with 3.x here. (define-public python2-fonttools - (package-with-python2 python-fonttools)) + (let ((base (package-with-python2 (strip-python2-variant python-fonttools)))) + (package/inherit + base + (version "3.44.0") + (source (origin + (method url-fetch) + (uri (pypi-uri "fonttools" version ".zip")) + (sha256 + (base32 + "0v6399g755f2hn1ry62i5b6gdinf2fpx2966v3bxh6bjw1accb5p"))))))) (define-public python-ly (package @@ -9229,6 +9378,18 @@ the standard library.") (native-inputs `(("python2-unittest2" ,python2-unittest2)))))) +;; This package is used by python2-pytest via python2-importlib-metadata, +;; and thus can not depend on python-unittest2 (which depends on pytest). +(define-public python2-contextlib2-bootstrap + (hidden-package + (package/inherit + python2-contextlib2 + (name "python2-contextlib2-bootstrap") + (arguments + `(#:tests? #f + ,@(package-arguments python2-contextlib2))) + (native-inputs '())))) + (define-public python-texttable (package (name "python-texttable") @@ -9702,14 +9863,14 @@ library as well as on the command line.") (define-public python-pluggy (package (name "python-pluggy") - (version "0.11.0") + (version "0.13.1") (source (origin (method url-fetch) (uri (pypi-uri "pluggy" version)) (sha256 (base32 - "10511a54dvafw1jrk75mrhml53c7b7w4yaw7241696lc2hfvr895")))) + "1c35qyhvy27q9ih9n899f3h4sdnpgq027dbiilly2qb5cvgarchm")))) (build-system python-build-system) (native-inputs `(("python-setuptools-scm" ,python-setuptools-scm))) @@ -9717,10 +9878,30 @@ library as well as on the command line.") (description "Pluggy is an extraction of the plugin manager as used by Pytest but stripped of Pytest specific details.") (home-page "https://pypi.org/project/pluggy/") + (properties `((python2-variant . ,(delay python2-pluggy)))) (license license:expat))) (define-public python2-pluggy - (package-with-python2 python-pluggy)) + (let ((base (package-with-python2 (strip-python2-variant + python-pluggy)))) + (package/inherit + base + (propagated-inputs + `(("python-importlib-metadata" ,python2-importlib-metadata)))))) + +;; This package requires python2-importlib-metadata, but that package +;; ends up needing python2-pluggy via python2-pytest, so we need this +;; variant to solve the circular dependency. +(define-public python2-pluggy-bootstrap + (hidden-package + (package/inherit + python2-pluggy + (name "python2-pluggy-bootstrap") + (arguments + `(#:tests? #f + ,@(package-arguments python2-pluggy))) + (propagated-inputs + `(("python-importlib-metadata" ,python2-importlib-metadata-bootstrap)))))) (define-public python-tox (package @@ -9874,13 +10055,16 @@ python-xdo for newer bindings.)") (arguments `(#:phases (modify-phases %standard-phases (replace 'check - (lambda _ - (invoke "pytest" "-vv")))))) + (lambda* (#:key tests? #:allow-other-keys) + (if tests? + (invoke "nosetests" "-v") + (format #t "test suite not run~%")) + #t))))) (propagated-inputs `(("python-markupsafe" ,python-markupsafe))) (native-inputs `(("python-mock" ,python-mock) - ("python-pytest" ,python-pytest))) + ("python-nose" ,python-nose))) (home-page "https://www.makotemplates.org/") (synopsis "Templating language for Python") (description "Mako is a templating language for Python that compiles @@ -10405,13 +10589,13 @@ anymore.") (define-public python2-pathlib2 (package (name "python2-pathlib2") - (version "2.3.3") + (version "2.3.5") (source (origin (method url-fetch) (uri (pypi-uri "pathlib2" version)) (sha256 (base32 - "0hpp92vqqgcd8h92msm9slv161b1q160igjwnkf2ag6cx0c96695")))) + "0s4qa8c082fdkb17izh4mfgwrjd1n5pya18wvrbwqdvvb5xs9nbc")))) (build-system python-build-system) ;; We only need the the Python 2 variant, since for Python 3 our minimum ;; version is 3.4 which already includes this package as part of the @@ -10978,13 +11162,13 @@ graphviz.") (define-public python-gevent (package (name "python-gevent") - (version "1.4.0") + (version "20.5.0") (source (origin (method url-fetch) (uri (pypi-uri "gevent" version)) (sha256 (base32 - "1lchr4akw2jkm5v4kz7bdm4wv3knkfhbfn9vkkz4s5yrkcxzmdqy")) + "1yppsrs0ccld9j9zfbsd0bxb987b2zkh2ar7whjxcrqzpkvg3iqx")) (modules '((guix build utils))) (snippet '(begin @@ -11010,14 +11194,16 @@ graphviz.") (find-files "src/greentest" "\\.py$")) #t)) (add-before 'build 'do-not-use-bundled-sources - (lambda* (#:key inputs #:allow-other-keys) + (lambda _ (setenv "GEVENTSETUP_EMBED" "0") ;; Prevent building bundled libev. (substitute* "setup.py" (("run_make=_BUILDING") "run_make=False")) - + #t)) + (add-before 'build 'add-greenlet-on-C_INCLUDE_PATH + (lambda* (#:key inputs #:allow-other-keys) (let ((greenlet (string-append (assoc-ref inputs "python-greenlet") "/include"))) @@ -11068,9 +11254,6 @@ graphviz.") "test_thread.py" "test_threading.py" "test__threading_2.py" - ;; FIXME: test_patch_twice_warning_events fails for - ;; no apparent reason. Needs more investigation! - "test__monkey.py" ;; These tests rely on KeyboardInterrupts which do not ;; work inside the build container for some reason ;; (lack of controlling terminal?). @@ -11078,12 +11261,15 @@ graphviz.") "test__issues461_471.py" ;; TODO: Patch out the tests that use getprotobyname, etc ;; instead of disabling all the tests from these files. + "test__resolver_dnspython.py" + "test__doctests.py" "test__all__.py" "test___config.py" "test__execmodules.py"))) (call-with-output-file "skipped_tests.txt" (lambda (port) - (display (string-join disabled-tests "\n") port))) + (format port "~a~%" + (string-join disabled-tests "\n")))) #t))) (replace 'check (lambda _ @@ -11666,7 +11852,7 @@ it will manage (install/update) them for you.") (base32 "1w1aaay424ciz8fz3fkzxb0pxzfxn184f2whpyn4fx72bn50x47k")))) (native-inputs - `(("python-setuptools-scm" ,python-setuptools-scm-3.3))) + `(("python-setuptools-scm" ,python-setuptools-scm))) (build-system python-build-system) (home-page "https://github.com/ionelmc/python-lazy-object-proxy") (synopsis "Lazy object proxy for python") @@ -11932,6 +12118,14 @@ characters, mouse support, and auto suggestions.") (arguments `(#:phases (modify-phases %standard-phases + (add-before 'check 'adjust-test-for-python-3.8 + (lambda _ + ;; Mimic upstream commit e7feeef64 to allow for extra output lines + ;; in TestSetupReadline on Python 3.8. Remove for jedi > 0.17.0. + (substitute* "test/test_utils.py" + (("assert len\\(difference\\) < 20") + "assert len(difference) < 22")) + #t)) (replace 'check (lambda _ (setenv "HOME" "/tmp") @@ -11955,20 +12149,6 @@ well.") (define-public python2-jedi (package-with-python2 python-jedi)) -;; python-language-server requires 0.15 specifically. Remove once unused. -(define-public python-jedi-0.15 - (package - (inherit python-jedi) - (version "0.15.2") - (source (origin - (method url-fetch) - (uri (pypi-uri "jedi" version)) - (sha256 - (base32 - "01zqasl690x1i6dq4mvh13pz0cw8i276xsivsrnn00x90iqm42g9")))) - (propagated-inputs - `(("python-parso" ,python-parso-0.5))))) - (define-public ptpython (package (name "ptpython") @@ -12915,14 +13095,14 @@ possible on all supported Python versions.") (define-public python-cheetah (package (name "python-cheetah") - (version "3.1.0") + (version "3.2.4") (source (origin (method url-fetch) (uri (pypi-uri "Cheetah3" version)) (sha256 (base32 - "1ihag9cxll6b86fc8v5lkhmr3brdbi4yiz16zpgw79yylmv8fgr9")))) + "0ar5dqjnqaw0c17mymd6xgd81jn9br9fblawr0x438v1571bkaya")))) (build-system python-build-system) (arguments `(#:modules ((guix build utils) @@ -12937,6 +13117,12 @@ possible on all supported Python versions.") (("#!/usr/bin/env python") (string-append "#!" (which "python")))) #t)) + (add-after 'unpack 'fix-tests + (lambda _ + (substitute* "Cheetah/Tests/ImportHooks.py" + (("os.path.dirname\\(__file__\\)") + (string-append "'" (getcwd) "/Cheetah/Tests'"))) + #t)) (replace 'check (lambda _ (let ((cwd (getcwd))) @@ -12992,7 +13178,7 @@ Features: (define-public python-dulwich (package (name "python-dulwich") - (version "0.18.6") + (version "0.19.16") (source (origin (method url-fetch) @@ -13001,7 +13187,7 @@ Features: (pypi-uri "dulwich" version))) (sha256 (base32 - "1aa1xfrxkc3j9s4xi0llhf5gndyi9ryprcxsqfa5fcb8ph34981q")))) + "0l589jl0lxx59yq0p6vmgw0q0hmfh48iqwyy0x6g1dmz93262igp")))) (build-system python-build-system) (arguments `(#:phases @@ -13021,7 +13207,8 @@ Features: (setenv "PYTHONHASHSEED" "random") #t))))) (propagated-inputs - `(("python-fastimport" ,python-fastimport))) + `(("python-fastimport" ,python-fastimport) + ("python-urllib3" ,python-urllib3))) (native-inputs `(("python-mock" ,python-mock) ("python-geventhttpclient" ,python-geventhttpclient) @@ -13346,13 +13533,13 @@ instead of servers and network commands.") (define-public python-automat (package (name "python-automat") - (version "0.7.0") + (version "20.2.0") (source (origin (method url-fetch) (uri (pypi-uri "Automat" version)) (sha256 (base32 - "03ivg70n3b1cbcd2zvjhk8y4kmqxcvhmili39lmgx09dza1qpmyb")))) + "0cyzrcqiibwdsp4y0djkllnzab8m5faa4s0d1kpi23k1fhy80ybr")))) (build-system python-build-system) ;; We disable the tests because they require python-twisted, while ;; python-twisted depends on python-automat. Twisted is optional, but the @@ -13426,13 +13613,13 @@ and bit flag values.") (define-public python-attrs (package (name "python-attrs") - (version "19.1.0") + (version "19.3.0") (source (origin (method url-fetch) (uri (pypi-uri "attrs" version)) (sha256 (base32 - "16g33zr5f449lqc5wgvzpknxryfzrfsxcr6kpgxwn7l5fkv71f7h")))) + "0wky4h28n7xnr6xv69p9z6kv8bzn50d10c3drmd9ds8gawbcxdzp")))) (build-system python-build-system) (arguments `(#:modules ((guix build utils) @@ -13774,14 +13961,16 @@ of @code{functools.lru_cache} from python 3.3.") (define-public python-configparser (package (name "python-configparser") - (version "3.7.1") + (version "4.0.2") (source (origin (method url-fetch) (uri (pypi-uri "configparser" version)) (sha256 (base32 - "0cnz213il9lhgda6x70fw7mfqr8da43s3wm343lwzhqx94mgmmav")))) + "1priacxym85yjcf68hh38w55nqswaxp71ryjyfdk222kg9l85ln7")))) + (native-inputs + `(("python-setuptools_scm" ,python-setuptools-scm))) (build-system python-build-system) (home-page "https://github.com/jaraco/configparser/") (synopsis "Backport of configparser from python 3.5") @@ -14006,13 +14195,13 @@ It supports both normal and Unicode strings.") (define-public python-scandir (package (name "python-scandir") - (version "1.9.0") + (version "1.10.0") (source (origin (method url-fetch) (uri (pypi-uri "scandir" version)) (sha256 - (base32 "0r3hvf1a9jm1rkqgx40gxkmccknkaiqjavs8lccgq9s8khh5x5s4")))) + (base32 "1bkqwmf056pkchf05ywbnf659wqlp6lljcdb0y88wr9f0vv32ijd")))) (build-system python-build-system) (arguments `(#:phases (modify-phases %standard-phases @@ -14147,7 +14336,11 @@ several utilities, as well as an API for building localization tools.") (arguments `(#:phases (modify-phases %standard-phases (replace 'check - (lambda _ (invoke "py.test" "-vv")))))) + (lambda* (#:key tests? #:allow-other-keys) + (if tests? + (invoke "py.test" "-vv") + (format #t "test suite not run~%")) + #t))))) (native-inputs `(("python-pretend" ,python-pretend) ("python-pytest" ,python-pytest))) @@ -14168,6 +14361,29 @@ information.") (define-public python2-packaging (package-with-python2 python-packaging)) +;; Variants with minimal dependencies, for bootstrapping Pytest. +(define-public python-packaging-bootstrap + (hidden-package + (package/inherit + python-packaging + (name "python-packaging-bootstrap") + (native-inputs '()) + (propagated-inputs + `(("python-pyparsing" ,python-pyparsing))) + (arguments '(#:tests? #f))))) + +(define-public python2-packaging-bootstrap + (hidden-package + (package/inherit + python2-packaging + (name "python2-packaging-bootstrap") + (native-inputs '()) + (propagated-inputs + `(("python-pyparsing" ,python2-pyparsing))) + (arguments + `(#:tests? #f + ,@(package-arguments python2-packaging)))))) + (define-public python-relatorio (package (name "python-relatorio") @@ -15930,14 +16146,14 @@ based on the CPython 2.7 and 3.7 parsers.") (define-public python-typing (package (name "python-typing") - (version "3.6.6") + (version "3.7.4.1") (source (origin (method url-fetch) (uri (pypi-uri "typing" version)) (sha256 (base32 - "0ba9acs4awx15bf9v3nrs781msbd2nx826906nj6fqks2bvca9s0")))) + "08xs7s5pyq99hbrzw23inczmidz90krvpv9q5p1qrvh6yzrydpwi")))) (build-system python-build-system) (home-page "https://docs.python.org/3/library/typing.html") (synopsis "Type hints for Python") @@ -16158,14 +16374,14 @@ file system events on Linux.") (define-public python-more-itertools (package (name "python-more-itertools") - (version "7.1.0") + (version "8.2.0") (source (origin (method url-fetch) (uri (pypi-uri "more-itertools" version)) (sha256 (base32 - "16phg2f2dvm6ci5wr49ncha5lmc0m2in3bsl33c61vzca4gkvd4b")))) + "01x5nwm1zxmnd06cllbdd095xxc2nd25ing1a726m2kd30rbkpdi")))) (build-system python-build-system) (home-page "https://github.com/erikrose/more-itertools") (synopsis "More routines for operating on iterables, beyond itertools") @@ -16189,7 +16405,7 @@ working with iterables.") (base32 "1r12cm6mcdwdzz7d47a6g4l437xsvapdlgyhqay3i2nrlv03da9q")))) (arguments - `(#:python ,python2-minimal)) + `(#:python ,python-2)) (propagated-inputs `(("python2-six" ,python2-six-bootstrap))))) @@ -16282,19 +16498,6 @@ Parso is also able to list multiple syntax errors in your Python file.") (define-public python2-parso (package-with-python2 python-parso)) -;; This version is required for Jedi@0.15, which in turn is needed for -;; python-language-server. -(define-public python-parso-0.5 - (package - (inherit python-parso) - (version "0.5.2") - (source (origin - (method url-fetch) - (uri (pypi-uri "parso" version)) - (sha256 - (base32 - "1qgvrkpma7vylrk047mxxvqd66nwqk978n3ig2w8iz9m3bgjbksm")))))) - (define-public python-async-generator (package (name "python-async-generator") @@ -17111,14 +17314,15 @@ that is accessible to other projects developed in Cython.") (base32 "0fm0w5id2yhqld95hg2m636vjgkz377rvgdfqaxc25vbylr9lklp")))) (build-system python-build-system) - (native-inputs - `(("python-tox" ,python-tox))) + (arguments + ;; FIXME: Tests require many extra dependencies, and would introduce + ;; a circular dependency on hypothesis, which uses this package. + '(#:tests? #f)) (propagated-inputs `(("python-appdirs" ,python-appdirs) ("python-distlib" ,python-distlib) ("python-filelock" ,python-filelock) - ("python-importlib-metadata" ,python-importlib-metadata) ;; python < 3.8 - ("python-six" ,python-six))) + ("python-six" ,python-six-bootstrap))) (home-page "http://www.grantjenks.com/docs/sortedcontainers/") (synopsis "Sorted List, Sorted Dict, Sorted Set") (description @@ -17126,6 +17330,9 @@ that is accessible to other projects developed in Cython.") pure-Python.") (license license:asl2.0))) +(define-public python2-sortedcontainers + (package-with-python2 python-sortedcontainers)) + (define-public python-cloudpickle (package (name "python-cloudpickle") @@ -19588,3 +19795,70 @@ workspace...") dependencies. It implements the @uref{http://opensoundcontrol.org/spec-1_0, Open Sound Control 1.0} specification.") (license license:unlicense))) + +(define-public python-voluptuous + (package + (name "python-voluptuous") + (version "0.11.7") + (source + (origin + (method url-fetch) + (uri (pypi-uri "voluptuous" version)) + (sha256 + (base32 + "0mplkcpb5d8wjf8vk195fys4y6a3wbibiyf708imw33lphfk9g1a")))) + (build-system python-build-system) + (native-inputs + `(("python-nose" ,python-nose))) + (home-page "https://github.com/alecthomas/voluptuous") + (synopsis "Python data validation library") + (description + "Voluptuous is a Python data validation library. It is primarily +intended for validating data coming into Python as JSON, YAML, etc.") + (license license:bsd-3))) + +(define-public python-cmd2 + (package + (name "python-cmd2") + (version "1.0.2") + (source + (origin + (method url-fetch) + (uri (pypi-uri "cmd2" version)) + (sha256 + (base32 + "1f18plbc9yyvhn0js3d2bii9yld8zfl775gxsaw9jza5pmlg9ss2")))) + (build-system python-build-system) + (propagated-inputs + `(("python-attrs" ,python-attrs) + ("python-colorama" ,python-colorama) + ("python-pyperclip" ,python-pyperclip) + ("python-wcwidth" ,python-wcwidth))) + (native-inputs + `(("python-codecov" ,python-codecov) + ("python-coverage" ,python-coverage) + ("python-doc8" ,python-doc8) + ("python-flake8" ,python-flake8) + ("python-invoke" ,python-invoke) + ("python-mock" ,python-mock) + ("python-pytest" ,python-pytest) + ("python-pytest-cov" ,python-pytest-cov) + ("python-pytest-mock" ,python-pytest-mock) + ("python-setuptools-scm" ,python-setuptools-scm) + ("python-sphinx" ,python-sphinx) + ("python-sphinx-autobuild" ,python-sphinx-autobuild) + ("python-sphinx-rtd-theme" ,python-sphinx-rtd-theme) + ("python-tox" ,python-tox) + ("python-twine" ,python-twine) + ("which" ,which))) + (home-page "https://github.com/python-cmd2/cmd2") + (synopsis "Tool for building interactive command line applications") + (description + "Cmd2 is a tool for building interactive command line applications in +Python. Its goal is to make it quick and easy for developers to build +feature-rich and user-friendly interactive command line applications. It +provides a simple API which is an extension of Python's built-in @code{cmd} +module. @code{cmd2} provides a wealth of features on top of @code{cmd} to +make your life easier and eliminates much of the boilerplate code which would +be necessary when using @code{cmd}.") + (license license:expat))) diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm index 048941e8a9..1ec002df73 100644 --- a/gnu/packages/python.scm +++ b/gnu/packages/python.scm @@ -23,10 +23,10 @@ ;;; Copyright © 2016 Daniel Pimentel <d4n1@d4n1.org> ;;; Copyright © 2016 Sou Bunnbu <iyzsong@gmail.com> ;;; Copyright © 2016, 2017 Troy Sankey <sankeytms@gmail.com> -;;; Copyright © 2016, 2017 ng0 <ng0@n0.is> +;;; Copyright © 2016, 2017 Nikita <nikita@n0.is> ;;; Copyright © 2016 Dylan Jeffers <sapientech@sapientech@openmailbox.org> ;;; Copyright © 2016 David Craven <david@craven.ch> -;;; Copyright © 2016, 2017, 2018, 2019 Marius Bakke <mbakke@fastmail.com> +;;; Copyright © 2016, 2017, 2018, 2019, 2020 Marius Bakke <mbakke@fastmail.com> ;;; Copyright © 2016, 2017 Stefan Reichör <stefan@xsteve.at> ;;; Copyright © 2016 Dylan Jeffers <sapientech@sapientech@openmailbox.org> ;;; Copyright © 2016, 2017 Alex Vong <alexvong1995@gmail.com> @@ -38,7 +38,7 @@ ;;; Copyright © 2017 Frederick M. Muriithi <fredmanglis@gmail.com> ;;; Copyright © 2017, 2018 Adriano Peluso <catonano@gmail.com> ;;; Copyright © 2017 Ben Sturmfels <ben@sturm.com.au> -;;; Copyright © 2017, 2018 Mathieu Othacehe <m.othacehe@gmail.com> +;;; Copyright © 2017, 2018, 2019 Mathieu Othacehe <m.othacehe@gmail.com> ;;; Copyright © 2017 José Miguel Sánchez García <jmi2k@openmailbox.org> ;;; Copyright © 2017 Roel Janssen <roel@gnu.org> ;;; Copyright © 2017, 2018 Kei Kebreau <kkebreau@posteo.net> @@ -58,6 +58,7 @@ ;;; Copyright © 2018 Luther Thompson <lutheroto@gmail.com> ;;; Copyright © 2018 Vagrant Cascadian <vagrant@debian.org> ;;; Copyright © 2019 Tanguy Le Carrour <tanguy@bioneland.org> +;;; Copyright © 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org> ;;; ;;; This file is part of GNU Guix. ;;; @@ -81,6 +82,7 @@ #:use-module (gnu packages bash) #:use-module (gnu packages compression) #:use-module (gnu packages dbm) + #:use-module (gnu packages hurd) #:use-module (gnu packages libffi) #:use-module (gnu packages pkg-config) #:use-module (gnu packages readline) @@ -92,12 +94,14 @@ #:use-module (guix download) #:use-module (guix utils) #:use-module (guix build-system gnu) - #:use-module (guix build-system trivial)) + #:use-module (guix build-system trivial) + #:use-module (srfi srfi-1) + #:use-module (srfi srfi-26)) (define-public python-2.7 (package (name "python2") - (version "2.7.16") + (version "2.7.17") (source (origin (method url-fetch) @@ -105,12 +109,13 @@ version "/Python-" version ".tar.xz")) (sha256 (base32 - "1mqfcqp5y8r0bfyr7ppl74n0lig45p9mc4b8adlcpvj74rhfy8pj")) + "0hds28cg226m8j8sr394nm9yc4gxhvlv109w0avsf2mxrlrz0hsd")) (patches (search-patches "python-2.7-search-paths.patch" "python-2-deterministic-build-info.patch" "python-2.7-site-prefixes.patch" "python-2.7-source-date-epoch.patch" - "python-2.7-adjust-tests.patch")) + "python-2.7-adjust-tests.patch" + "python-cross-compile.patch")) (modules '((guix build utils))) (snippet '(begin @@ -151,6 +156,13 @@ "INSTALL=install -c" "MKDIR_P=mkdir -p" + ;; Disable runtime check failing if cross-compiling, see: + ;; https://lists.yoctoproject.org/pipermail/poky/2013-June/008997.html + ,@(if (%current-target-system) + '("ac_cv_buggy_getaddrinfo=no" + "ac_cv_file__dev_ptmx=no" + "ac_cv_file__dev_ptc=no") + '()) (string-append "LDFLAGS=-Wl,-rpath=" (assoc-ref %outputs "out") "/lib")) ;; With no -j argument tests use all available cpus, so provide one. @@ -171,6 +183,12 @@ (add-before 'configure 'patch-lib-shells (lambda _ + ;; This variable is used in setup.py to enable cross compilation + ;; specific switches. As it is not set properly by configure + ;; script, set it manually. + ,@(if (%current-target-system) + '((setenv "_PYTHON_HOST_PLATFORM" "")) + '()) ;; Filter for existing files, since some may not exist in all ;; versions of python that are built with this recipe. (substitute* (filter file-exists? @@ -181,6 +199,14 @@ "Lib/test/test_subprocess.py")) (("/bin/sh") (which "sh"))) #t)) + ,@(if (hurd-system?) + `((add-before 'build 'patch-regen-for-hurd + (lambda* (#:key inputs #:allow-other-keys) + (let ((libc (assoc-ref inputs "libc"))) + (substitute* "Lib/plat-generic/regen" + (("/usr/include/") (string-append libc "/include/"))) + #t)))) + '()) (add-before 'configure 'do-not-record-configure-flags (lambda* (#:key configure-flags #:allow-other-keys) ;; Remove configure flags from the installed '_sysconfigdata.py' @@ -250,7 +276,9 @@ (if (null? opt) "none" (car opt))) (for-each (lambda (file) (apply invoke - `(,(string-append out "/bin/python") + `(,,(if (%current-target-system) + "python2" + '(string-append out "/bin/python")) ,@opt "-m" "compileall" "-f" ; force rebuild @@ -293,7 +321,12 @@ ("tcl" ,tcl) ("tk" ,tk))) ; for tkinter (native-inputs - `(("pkg-config" ,pkg-config))) + `(("pkg-config" ,pkg-config) + ;; When cross-compiling, a native version of Python itself is needed. + ,@(if (%current-target-system) + `(("python2" ,this-package) + ("which" ,which)) + '()))) (native-search-paths (list (search-path-specification (variable "PYTHONPATH") @@ -323,27 +356,28 @@ data types.") (name "python") (properties `((superseded . ,python-2))))) -(define-public python-3.7 +(define-public python-3.8 (package (inherit python-2) (name "python") - (version "3.7.4") + (version "3.8.2") (source (origin (method url-fetch) (uri (string-append "https://www.python.org/ftp/python/" version "/Python-" version ".tar.xz")) (patches (search-patches "python-3-fix-tests.patch" + "python-3.8-fix-tests.patch" "python-3-deterministic-build-info.patch" "python-3-search-paths.patch")) (sha256 (base32 - "0gxiv5617zd7dnqm5k9r4q2188lk327nf9jznwq9j6b8p0s92ygv")) + "1ps5v323cp5czfshqjmbsqw7nvrdpcbk06f62jbzaqik4gfffii6")) (modules '((guix build utils))) (snippet '(begin ;; Delete the bundled copy of libexpat. (delete-file-recursively "Modules/expat") - (substitute* "Modules/Setup.dist" + (substitute* "Modules/Setup" ;; Link Expat instead of embedding the bundled one. (("^#pyexpat.*") "pyexpat pyexpat.c -lexpat\n")) #t)))) @@ -356,19 +390,18 @@ data types.") " --exclude test_mmap" ;; test_socket may hang and eventually run out of memory ;; on some systems: <https://bugs.python.org/issue34587>. - " test_socket" - ;; XXX: test_ctypes fails on some platforms due to a problem in - ;; libffi 3.2.1: <https://bugs.python.org/issue23249>. - ,@(if (string-prefix? "aarch64" (%current-system)) - '(" test_ctypes") - '())))) + " test_socket"))) ((#:phases phases) `(modify-phases ,phases + ,@(if (hurd-system?) + `((delete 'patch-regen-for-hurd)) ;regen was removed after 3.5.9 + '()) (add-before 'check 'set-TZDIR - (lambda* (#:key inputs #:allow-other-keys) + (lambda* (#:key inputs native-inputs #:allow-other-keys) ;; test_email requires the Olson time zone database. (setenv "TZDIR" - (string-append (assoc-ref inputs "tzdata") + (string-append (assoc-ref + (or native-inputs inputs) "tzdata") "/share/zoneinfo")) #t)) ;; Unset SOURCE_DATE_EPOCH while running the test-suite and set it @@ -389,18 +422,48 @@ data types.") (if (null? opt) "none" (car opt))) (for-each (lambda (file) (apply invoke - `(,(string-append out "/bin/python3") - ,@opt - "-m" "compileall" - "-f" ; force rebuild - ;; Don't build lib2to3, because it's Python 2 code. - "-x" "lib2to3/.*" - ,file))) + `(,,(if (%current-target-system) + "python3" + '(string-append out + "/bin/python3")) + ,@opt + "-m" "compileall" + "-f" ; force rebuild + ;; Don't build lib2to3, because it's Python 2 code. + "-x" "lib2to3/.*" + ,file))) (find-files out "\\.py$"))) (list '() '("-O") '("-OO"))) - #t))))))) + #t))) + ;; XXX: Apply patch on ARM platforms only to avoid a full rebuild. + ;; Remove this phase in the next rebuild cycle. + ,@(let ((system (or (%current-target-system) + (%current-system)))) + (if (any (cute string-prefix? <> system) + '("arm" "aarch64")) + '((add-after 'unpack 'apply-alignment-patch + (lambda* (#:key native-inputs inputs #:allow-other-keys) + (invoke "patch" "-p1" "--force" "--input" + (assoc-ref (or native-inputs inputs) + "arm-alignment.patch"))))) + '())))))) (native-inputs `(("tzdata" ,tzdata-for-tests) + + ;; Disable unaligned accesses in the sha3 module on ARM as + ;; it causes a test failure when building 32-bit Python on a + ;; 64-bit kernel. See <https://bugs.python.org/issue36515>. + ;; TODO: make this a regular patch in the next rebuild cycle. + ,@(let ((system (or (%current-target-system) + (%current-system)))) + (if (any (cute string-prefix? <> system) + '("arm" "aarch64")) + `(("arm-alignment.patch" ,(search-patch "python-3-arm-alignment.patch"))) + '())) + + ,@(if (%current-target-system) + `(("python3" ,this-package)) + '()) ,@(package-native-inputs python-2))) (native-search-paths (list (search-path-specification @@ -409,33 +472,8 @@ data types.") (version-major+minor version) "/site-packages")))))))) -(define-public python-3.8 - (package - (inherit python-3.7) - (name "python-next") - (version "3.8.0") - (source - (origin - (inherit (package-source python-3.7)) - (uri (string-append "https://www.python.org/ftp/python/" - version "/Python-" version ".tar.xz")) - (sha256 (base32 "110d0did9rxn7rg85kf2fwli5hqq44xv2d8bi7d92m7v2d728mmk")) - (patches (search-patches - "python-3.8-search-paths.patch" - "python-3-fix-tests.patch" - "python-3.8-fix-tests.patch" - "python-3-deterministic-build-info.patch")) - (snippet - '(begin - ;; Delete the bundled copy of libexpat. - (delete-file-recursively "Modules/expat") - (substitute* "Modules/Setup" - ;; Link Expat instead of embedding the bundled one. - (("^#pyexpat.*") "pyexpat pyexpat.c -lexpat\n")) - #t)))))) - ;; Current 3.x version. -(define-public python-3 python-3.7) +(define-public python-3 python-3.8) ;; Current major version. (define-public python python-3) diff --git a/gnu/packages/qt.scm b/gnu/packages/qt.scm index c9ac750cc5..c312efa1f9 100644 --- a/gnu/packages/qt.scm +++ b/gnu/packages/qt.scm @@ -3,7 +3,7 @@ ;;; Copyright © 2015 Sou Bunnbu <iyzsong@gmail.com> ;;; Copyright © 2015, 2018, 2019, 2020 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2015, 2016, 2017, 2018, 2019 Efraim Flashner <efraim@flashner.co.il> -;;; Copyright © 2016, 2017 ng0 <ng0@n0.is> +;;; Copyright © 2016, 2017 Nikita <nikita@n0.is> ;;; Copyright © 2016 Thomas Danckaert <post@thomasdanckaert.be> ;;; Copyright © 2017, 2018, 2019 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2017 Quiliro <quiliro@fsfla.org> @@ -15,6 +15,7 @@ ;;; Copyright © 2018 John Soo <jsoo1@asu.edu> ;;; Copyright © 2020 Mike Rosset <mike.rosset@gmail.com> ;;; Copyright © 2020 Jakub Kądziołka <kuba@kadziolka.net> +;;; Copyright © 2020 Kei Kebreau <kkebreau@posteo.net> ;;; ;;; This file is part of GNU Guix. ;;; @@ -206,7 +207,7 @@ system, and the core design of Django is reused in Grantlee.") ("postgresql" ,postgresql) ("pulseaudio" ,pulseaudio) ("pcre2" ,pcre2) - ("sqlite" ,sqlite-with-column-metadata) + ("sqlite" ,sqlite) ("udev" ,eudev) ("unixodbc" ,unixodbc) ("wayland" ,wayland) @@ -223,7 +224,7 @@ system, and the core design of Django is reused in Grantlee.") `(;; XXX: The JavaScriptCore engine does not build with the C++11 standard. ;; We could build it with -std=gnu++98, but then we'll get in trouble with ;; ICU later. Just keep using GCC 5 for now. - ("gcc" ,gcc-5) + ("gcc@5" ,gcc-5) ("bison" ,bison) ("flex" ,flex) ("gperf" ,gperf) @@ -240,6 +241,17 @@ system, and the core design of Django is reused in Grantlee.") (arguments `(#:phases (modify-phases %standard-phases + (add-after 'set-paths 'hide-default-gcc + (lambda* (#:key inputs #:allow-other-keys) + (let ((gcc (assoc-ref inputs "gcc"))) + ;; Remove the default GCC from CPLUS_INCLUDE_PATH to prevent + ;; conflicts with the GCC 5 input. + (setenv "CPLUS_INCLUDE_PATH" + (string-join + (delete (string-append gcc "/include/c++") + (string-split (getenv "CPLUS_INCLUDE_PATH") #\:)) + ":")) + #t))) (replace 'configure (lambda* (#:key outputs #:allow-other-keys) @@ -352,6 +364,7 @@ developers using C++ or QML, a CSS & JavaScript like language.") "0pb68d30clksdhgy8n6rrs838bb3qcsfq4pv463yy2nr4p5kk2di")) ;; Use TZDIR to avoid depending on package "tzdata". (patches (search-patches "qtbase-use-TZDIR.patch" + "qtbase-moc-ignore-gcc-macro.patch" "qtbase-QTBUG-81715.patch")) (modules '((guix build utils))) (snippet @@ -381,7 +394,7 @@ developers using C++ or QML, a CSS & JavaScript like language.") ("harfbuzz" ,harfbuzz) ("icu4c" ,icu4c) ("libinput" ,libinput-minimal) - ("libjpeg" ,libjpeg) + ("libjpeg" ,libjpeg-turbo) ("libmng" ,libmng) ("libpng" ,libpng) ("libx11" ,libx11) @@ -404,7 +417,7 @@ developers using C++ or QML, a CSS & JavaScript like language.") ("pcre2" ,pcre2) ("postgresql" ,postgresql) ("pulseaudio" ,pulseaudio) - ("sqlite" ,sqlite-with-column-metadata) + ("sqlite" ,sqlite) ("unixodbc" ,unixodbc) ("xcb-util" ,xcb-util) ("xcb-util-image" ,xcb-util-image) @@ -1798,6 +1811,23 @@ message."))) (substitute-keyword-arguments (package-arguments qtsvg) ((#:phases phases) `(modify-phases ,phases + (add-after 'unpack 'fix-build-with-newer-re2 + (lambda _ + ;; Adjust for API change in re2, taken from + ;; https://chromium-review.googlesource.com/c/chromium/src/+/2145261 + (substitute* "src/3rdparty/chromium/components/autofill/core\ +/browser/address_rewriter.cc" + (("options\\.set_utf8\\(true\\)") + "options.set_encoding(RE2::Options::EncodingUTF8)")) + #t)) + (add-after 'unpack 'patch-ninja-version-check + (lambda _ + ;; The build system assumes the system Ninja is too old because + ;; it only checks for versions 1.7 through 1.9. We have 1.10. + (substitute* "configure.pri" + (("1\\.\\[7-9\\]\\.\\*") + "1.([7-9]|1[0-9]).*")) + #t)) (add-before 'configure 'substitute-source (lambda* (#:key inputs outputs #:allow-other-keys) (let ((out (assoc-ref outputs "out")) @@ -2396,10 +2426,10 @@ different kinds of sliders, and much more.") `(("icu" ,icu4c) ("glib" ,glib) ("gst-plugins-base" ,gst-plugins-base) - ("libjpeg" ,libjpeg) + ("libjpeg" ,libjpeg-turbo) ("libpng" ,libpng) ("libwebp" ,libwebp) - ("sqlite" ,sqlite-with-column-metadata) + ("sqlite" ,sqlite) ("fontconfig" ,fontconfig) ("libxrender" ,libxrender) ("qtbase" ,qtbase) @@ -2669,3 +2699,47 @@ generate Python bindings for your C or C++ code.") (description "Contains lupdate, rcc and uic tools for PySide2") (license license:gpl2))) + +(define-public libqglviewer + (package + (name "libqglviewer") + (version "2.7.2") + (source (origin + (method url-fetch) + (uri + (string-append "http://libqglviewer.com/src/libQGLViewer-" + version ".tar.gz")) + (sha256 + (base32 + "023w7da1fyn2z69nbkp2rndiv886zahmc5cmira79zswxjfpklp2")))) + (build-system gnu-build-system) + (arguments + '(#:tests? #f ; no check target + #:make-flags + (list (string-append "PREFIX=" + (assoc-ref %outputs "out"))) + #:phases + (modify-phases %standard-phases + (replace 'configure + (lambda* (#:key make-flags #:allow-other-keys) + (apply invoke (cons "qmake" make-flags))))))) + (native-inputs + `(("qtbase" ,qtbase) + ("qttools" ,qttools))) + (inputs + `(("glu" ,glu))) + (home-page "http://libqglviewer.com") + (synopsis "Qt-based C++ library for the creation of OpenGL 3D viewers") + (description + "@code{libQGLViewer} is a C++ library based on Qt that eases the creation +of OpenGL 3D viewers. + +It provides some of the typical 3D viewer functionalities, such as the +possibility to move the camera using the mouse, which lacks in most of the +other APIs. Other features include mouse manipulated frames, interpolated +keyFrames, object selection, stereo display, screenshot saving and much more. +It can be used by OpenGL beginners as well as to create complex applications, +being fully customizable and easy to extend.") + ;; According to LICENSE, either version 2 or version 3 of the GNU GPL may + ;; be used. + (license (list license:gpl2 license:gpl3)))) diff --git a/gnu/packages/radio.scm b/gnu/packages/radio.scm index 935880780f..123357a2bc 100644 --- a/gnu/packages/radio.scm +++ b/gnu/packages/radio.scm @@ -26,6 +26,7 @@ #:use-module (guix packages) #:use-module (guix download) #:use-module (guix git-download) + #:use-module (guix utils) #:use-module (gnu packages algebra) #:use-module (gnu packages audio) #:use-module (gnu packages autotools) @@ -49,6 +50,7 @@ #:use-module (gnu packages lua) #:use-module (gnu packages maths) #:use-module (gnu packages multiprecision) + #:use-module (gnu packages ncurses) #:use-module (gnu packages networking) #:use-module (gnu packages pkg-config) #:use-module (gnu packages pulseaudio) @@ -122,13 +124,36 @@ mathematical operations, and much more.") (native-inputs `(("pkg-config" ,pkg-config))) (arguments - `(#:configure-flags '("-DDETACH_KERNEL_DRIVER=ON") - #:tests? #f)) ; No tests + `(#:configure-flags '("-DDETACH_KERNEL_DRIVER=ON" + "-DINSTALL_UDEV_RULES=ON") + #:tests? #f ; No tests + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'fix-paths + (lambda* (#:key outputs #:allow-other-keys) + (substitute* "CMakeLists.txt" + (("DESTINATION \"/etc/udev/") + (string-append "DESTINATION \"" + (assoc-ref outputs "out") + "/lib/udev/"))) + #t))))) (home-page "https://osmocom.org/projects/sdr/wiki/rtl-sdr") (synopsis "Software defined radio driver for Realtek RTL2832U") (description "DVB-T dongles based on the Realtek RTL2832U can be used as a cheap software defined radio, since the chip allows transferring the raw I/Q -samples to the host. @code{rtl-sdr} provides drivers for this purpose.") +samples to the host. @code{rtl-sdr} provides drivers for this purpose. + +The default Linux driver managing DVB-T dongles as TV devices doesn't work for +SDR purposes and clashes with this package. Therefore you must prevent the +kernel from loading it automatically by adding the following line to your +system configuration: + +@lisp +(kernel-arguments '(\"modprobe.blacklist=dvb_usb_rtl28xxu\")) +@end lisp + +To install the rtl-sdr udev rules, you must extend 'udev-service-type' with +this package. E.g.: @code{(udev-rules-service 'rtl-sdr rtl-sdr)}") (license license:gpl2+))) (define-public chirp @@ -266,7 +291,6 @@ used by RDS Spy, and audio files containing @dfn{multiplex} signals (MPX).") ("ghostscript" ,ghostscript) ("orc" ,orc) ("pkg-config" ,pkg-config) - ("python" ,python) ("python-cheetah" ,python-cheetah) ("python-mako" ,python-mako) ("python-pyzmq" ,python-pyzmq) @@ -293,6 +317,7 @@ used by RDS Spy, and audio files containing @dfn{multiplex} signals (MPX).") ("log4cpp" ,log4cpp) ("pango" ,pango) ("portaudio" ,portaudio) + ("python" ,python) ("python-click" ,python-click) ("python-click-plugins" ,python-click-plugins) ("python-lxml" ,python-lxml) @@ -364,9 +389,16 @@ used by RDS Spy, and audio files containing @dfn{multiplex} signals (MPX).") `("GI_TYPELIB_PATH" ":" prefix ,(filter identity paths)))) #t))))) (native-search-paths + ;; Variables required to find third-party plugins at runtime. (list (search-path-specification (variable "GRC_BLOCKS_PATH") - (files '("/share/gnuradio/grc/blocks"))))) + (files '("share/gnuradio/grc/blocks"))) + (search-path-specification + (variable "PYTHONPATH") + (files (list (string-append "lib/python" + (version-major+minor + (package-version python)) + "/site-packages")))))) (synopsis "Toolkit for software-defined radios") (description "GNU Radio is a development toolkit that provides signal processing blocks @@ -709,20 +741,10 @@ for correctness.") (synopsis "User-space library and utilities for HackRF SDR") (description "Command line utilities and a C library for controlling the HackRF -Software Defined Radio (SDR) over USB. Installing this package installs -the userspace hackrf utilities and C library. To install the hackrf -udev rules, you must add this package as a system service via -modify-services. E.g.: - -@lisp -(services - (modify-services - %desktop-services - (udev-service-type config => - (udev-configuration (inherit config) - (rules (cons hackrf - (udev-configuration-rules config))))))) -@end lisp") +Software Defined Radio (SDR) over USB. Installing this package installs the +userspace hackrf utilities and C library. To install the hackrf udev rules, +you must extend 'udev-service-type' with this package. E.g.: +@code{(udev-rules-service 'hackrf hackrf #:groups '(\"dialout\"))}.") (license license:gpl2)))) (define-public hamlib @@ -823,7 +845,20 @@ users.") ("qtmultimedia" ,qtmultimedia) ("qtserialport" ,qtserialport))) (arguments - `(#:tests? #f)) ; No test suite + `(#:tests? #f ; No test suite + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'work-around-runtime-bug + (lambda _ + ;; Some of the programs in this package fail to find symbols + ;; in libm at runtime. Adding libm manually at the end of the + ;; library lists when linking the programs seems to help. + ;; TODO: find exactly what is wrong in the way the programs + ;; are built. + (substitute* "CMakeLists.txt" + (("target_link_libraries \\((.*)\\)" all libs) + (string-append "target_link_libraries (" libs " m)"))) + #t))))) (synopsis "Weak-signal ham radio communication program") (description "WSJT-X implements communication protocols or modes called FT4, FT8, @@ -834,6 +869,82 @@ weak-signal conditions.") (home-page "https://www.physics.princeton.edu/pulsar/k1jt/wsjtx.html") (license license:gpl3))) +(define-public js8call + (package + (inherit wsjtx) + (name "js8call") + (version "2.1.1") + (source + (origin + (method url-fetch) + (uri (string-append "http://files.js8call.com/" version + "/js8call-" version ".tgz")) + (sha256 + (base32 "034jnv6h172znn9ijl6wpmzx0rqibb69ppg52ndvkxhqlgrbsvyc")) + (modules '((guix build utils))) + (snippet + '(begin + ;; Delete bundled boost to use the shared one. + (delete-file-recursively "boost") + #t)))) + (build-system qt-build-system) + (native-inputs + `(("asciidoc" ,asciidoc) + ("gfortran" ,gfortran) + ("pkg-config" ,pkg-config) + ("qttools" ,qttools) + ("ruby-asciidoctor" ,ruby-asciidoctor))) + (inputs + `(("boost" ,boost) + ("fftw" ,fftw) + ("fftwf" ,fftwf) + ("hamlib" ,wsjtx-hamlib) + ("libusb" ,libusb) + ("qtbase" ,qtbase) + ("qtmultimedia" ,qtmultimedia) + ("qtserialport" ,qtserialport))) + (arguments + `(#:tests? #f ; No test suite + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'fix-paths + (lambda* (#:key outputs #:allow-other-keys) + (substitute* "CMakeLists.txt" + (("DESTINATION /usr/share") + (string-append "DESTINATION " + (assoc-ref outputs "out") + "/share"))) + #t)) + (add-after 'fix-paths 'work-around-runtime-bug + (lambda _ + ;; Some of the programs in this package fail to find symbols + ;; in libm at runtime. Adding libm manually at the end of the + ;; library lists when linking the programs seems to help. + ;; TODO: find exactly what is wrong in the way the programs + ;; are built. + (substitute* "CMakeLists.txt" + (("target_link_libraries \\((.*)\\)" all libs) + (string-append "target_link_libraries (" libs " m)"))) + #t)) + (add-after 'unpack 'fix-hamlib + (lambda _ + (substitute* "CMake/Modules/Findhamlib.cmake" + (("set \\(ENV\\{PKG_CONFIG_PATH\\}.*\\)") + "set (__pc_path $ENV{PKG_CONFIG_PATH}) + list (APPEND __pc_path \"${__hamlib_pc_path}\") + set (ENV{PKG_CONFIG_PATH} \"${__pc_path}\")")) + (substitute* "HamlibTransceiver.hpp" + (("#ifdef JS8_USE_LEGACY_HAMLIB") + "#if 1")) + #t))))) + (synopsis "Weak-signal ham radio communication program") + (description + "JS8Call is a software using the JS8 digital mode (a derivative of the FT8 +mode) providing weak signal keyboard to keyboard messaging to amateur radio +operators.") + (home-page "http://js8call.com/") + (license license:gpl3))) + (define-public xnec2c (package (name "xnec2c") @@ -882,3 +993,74 @@ an antenna, and then plot the radiation pattern or frequency-related data like gain and standing wave ratio.") (home-page "http://www.5b4az.org/") (license license:gpl3+))) + +(define-public dump1090 + (package + (name "dump1090") + (version "3.8.1") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/flightaware/dump1090.git") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0xg8rzrxqklx1m9ncxsd96dlkbjcsxfi2mrb859v50f07xysdyd8")))) + (build-system gnu-build-system) + (native-inputs + `(("pkg-config" ,pkg-config))) + (inputs + `(("libusb" ,libusb) + ("ncurses" ,ncurses) + ("rtl-sdr" ,rtl-sdr))) + (arguments + `(#:test-target "test" + #:make-flags + (let ((target ,(%current-target-system))) + (list (string-append "CC=" (if target + (string-append target "-gcc") + "gcc")) + "BLADERF=no")) + #:phases + (modify-phases %standard-phases + (delete 'configure) + (replace 'install + (lambda* (#:key outputs #:allow-other-keys) + (let ((bin (string-append (assoc-ref outputs "out") "/bin/"))) + (install-file "dump1090" bin) + (install-file "view1090" bin) + #t)))))) + (synopsis "Mode S decoder for rtl-sdr devices") + (description + "Dump1090 is a Mode S decoder specifically designed for rtl-sdr devices. +It can be used to decode the ADS-B signals that planes emit to indicate +their position, altitude, speed, etc.") + (home-page "https://github.com/flightaware/dump1090") + (license license:bsd-3))) + +(define-public rtl-433 + (package + (name "rtl-433") + (version "20.02") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/merbanan/rtl_433.git") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 "11991xky9gawkragdyg27qsf7kw5bhlg7ygvf3fn7ng00x4xbh1z")))) + (build-system cmake-build-system) + (native-inputs + `(("pkg-config" ,pkg-config))) + (inputs + `(("libusb" ,libusb) + ("rtl-sdr" ,rtl-sdr))) + (synopsis "Decoder for radio transmissions in ISM bands") + (description + "This is a generic data receiver, mainly for decoding radio transmissions +from devices on the 433 MHz, 868 MHz, 315 MHz, 345 MHz and 915 MHz ISM bands.") + (home-page "https://github.com/merbanan/rtl_433") + (license license:gpl2+))) diff --git a/gnu/packages/rdesktop.scm b/gnu/packages/rdesktop.scm index 71464237f4..2e364b2b8e 100644 --- a/gnu/packages/rdesktop.scm +++ b/gnu/packages/rdesktop.scm @@ -103,7 +103,7 @@ to remotely control a user's Windows desktop.") `(("alsa-lib" ,alsa-lib) ("cups" ,cups) ("ffmpeg" ,ffmpeg) - ("libjpeg" ,libjpeg) + ("libjpeg" ,libjpeg-turbo) ("libx11" ,libx11) ("libxkbcommon" ,libxkbcommon) ("libxkbfile" ,libxkbfile) diff --git a/gnu/packages/rdf.scm b/gnu/packages/rdf.scm index 089e31b252..999c1e10f0 100644 --- a/gnu/packages/rdf.scm +++ b/gnu/packages/rdf.scm @@ -219,7 +219,7 @@ taxonomic inference capability.") ("libxml2" ,libxml2) ("mpfr" ,mpfr) ("pcre" ,pcre) - ("util-linux" ,util-linux))) + ("util-linux" ,util-linux "lib"))) (propagated-inputs `(("raptor2" ,raptor2))) ; stipulated by rasqal.pc (arguments @@ -267,14 +267,14 @@ and triple stores.") (define-public serd (package (name "serd") - (version "0.30.2") + (version "0.30.4") (source (origin (method url-fetch) (uri (string-append "https://download.drobilla.net/serd-" version ".tar.bz2")) (sha256 (base32 - "00kjjgs5a8r72khgpya14scvl3n58wqwl5927y14z03j25q04ccx")))) + "168rn3m32c59qbar120f83ibcnnd987ij9p053kybgl7cmm6358c")))) (build-system waf-build-system) (arguments `(#:tests? #f ; no check target diff --git a/gnu/packages/readline.scm b/gnu/packages/readline.scm index 57d550d67f..5f61dcb735 100644 --- a/gnu/packages/readline.scm +++ b/gnu/packages/readline.scm @@ -3,6 +3,7 @@ ;;; Copyright © 2016, 2019 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2016 Jan Nieuwenhuizen <janneke@gnu.org> ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr> +;;; Copyright © 2019 Marius Bakke <mbakke@fastmail.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -30,22 +31,32 @@ #:use-module (guix utils) #:use-module (ice-9 format)) -(define (patch-url seqno) - (format #f "mirror://gnu/readline/readline-7.0-patches/readline70-~3,'0d" seqno)) +(define (patch-url version seqno) + (format #f "mirror://gnu/readline/readline-~a-patches/readline~a-~3,'0d" + version (string-join (string-split version #\.) "") seqno)) -(define (readline-patch seqno sha256) +(define (readline-patch version seqno sha256) "Return the origin of Readline patch SEQNO, with expected hash SHA256" (origin (method url-fetch) - (uri (patch-url seqno)) + (uri (patch-url version seqno)) (sha256 sha256))) -(define-syntax-rule (patch-series (seqno hash) ...) - (list (readline-patch seqno (base32 hash)) +(define-syntax-rule (patch-series version (seqno hash) ...) + (list (readline-patch version seqno (base32 hash)) ...)) +(define %patch-series-8.0 + (patch-series + "8.0" + (1 "0sfh7wn0pr743xspnb1zndxndlv9rc0hcg14cbw5cmyg6f4ykrfq") + (2 "1xy8mv8xm8hsfixwp3ci9kfx3dii3y92cq27wwd0jq75y6zzxc1n") + (3 "1vza7sxjcsr2z295ij12nzgncdil1vb6as3mqy4m7svi1chv5pcl") + (4 "0k1rfx9w32lglxg564yvp0mw6jg6883p8ac2f2lxxqpf80m3vami"))) + (define %patch-series-7.0 (patch-series + "7.0" (1 "0xm3sxvwmss7ddyfb11n6pgcqd1aglnpy15g143vzcf75snb7hcs") (2 "0n1dxmqsbjgrfxb1hgk5c6lsraw4ncbnzxlsx7m35nym6lncjiw7") (3 "1027kmymniizcy0zbdlrczxfx3clxcdln5yq05q9yzlc6y9slhwy") @@ -55,7 +66,8 @@ (define-public readline (package (name "readline") - (version "8.0") + (version (string-append "8.0." + (number->string (length %patch-series-8.0)))) (source (origin (method url-fetch) (uri (string-append "mirror://gnu/readline/readline-" @@ -63,7 +75,8 @@ (sha256 (base32 "0qg4924hf4hg0r0wbx2chswsr08734536fh5iagkd3a7f4czafg3")) - (patches (search-patches "readline-link-ncurses.patch")) + (patches (append %patch-series-8.0 + (search-patches "readline-link-ncurses.patch"))) (patch-flags '("-p0")))) (build-system gnu-build-system) (propagated-inputs `(("ncurses" ,ncurses))) diff --git a/gnu/packages/regex.scm b/gnu/packages/regex.scm index 5654104bcf..c90ab88db1 100644 --- a/gnu/packages/regex.scm +++ b/gnu/packages/regex.scm @@ -1,7 +1,7 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2014 John Darrington ;;; Copyright © 2015 Mark H Weaver <mhw@netris.org> -;;; Copyright © 2016 Marius Bakke <mbakke@fastmail.com> +;;; Copyright © 2016, 2020 Marius Bakke <mbakke@fastmail.com> ;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr> ;;; ;;; This file is part of GNU Guix. @@ -30,7 +30,7 @@ (define-public re2 (package (name "re2") - (version "2020-03-03") + (version "2020-05-01") (home-page "https://github.com/google/re2") (source (origin (method git-fetch) @@ -38,7 +38,16 @@ (file-name (git-file-name name version)) (sha256 (base32 - "0f1fncvg41dg9k06jiqbd7k51ljihk7rjb0kvxkbrlvgbzlpb860")))) + "0daav6ja99v5hdlwh1xzmja950y7767yw0phcbd0wpn42km39i20")) + (modules '((guix build utils))) + (snippet + '(begin + ;; Fix test failure on 32-bit platforms, see + ;; <https://github.com/google/re2/issues/256>. + (substitute* "re2/testing/compile_test.cc" + (("re->CompileToProg\\(920\\)") + "re->CompileToProg(850)")) + #t)))) (build-system gnu-build-system) (arguments `(#:modules ((guix build gnu-build-system) diff --git a/gnu/packages/rpc.scm b/gnu/packages/rpc.scm index e73695b613..28c61b54f9 100644 --- a/gnu/packages/rpc.scm +++ b/gnu/packages/rpc.scm @@ -23,6 +23,7 @@ #:use-module (guix packages) #:use-module (guix git-download) #:use-module (guix download) + #:use-module (guix utils) #:use-module (guix build-system cmake) #:use-module (guix build-system python) #:use-module (gnu packages adns) @@ -122,7 +123,23 @@ browsers to backend services.") (file-name (git-file-name "grpc" version)) (sha256 (base32 - "1jimqz3115f9pli5w6ik9wi7mjc7ix6y7yrq4a1ab9fc3dalj7p2")))))) + "1jimqz3115f9pli5w6ik9wi7mjc7ix6y7yrq4a1ab9fc3dalj7p2")))) + (arguments + (substitute-keyword-arguments (package-arguments grpc) + ((#:phases phases) + `(modify-phases ,phases + ;; Note: This would be nicer as a snippet, but that creates a tarball + ;; instead of a checkout and breaks assumptions made by the builder. + (add-after 'unpack 'rename-gettid + (lambda _ + ;; Rename custom gettid() syscall wrapper to avoid conflict + ;; with gettid() from glibc 2.30. + (substitute* '("src/core/lib/gpr/log_linux.cc" + "src/core/lib/gpr/log_posix.cc" + "src/core/lib/iomgr/ev_epollex_linux.cc") + (("gettid\\(") + "sys_gettid(")) + #t)))))))) (define-public python-grpcio (package diff --git a/gnu/packages/ruby.scm b/gnu/packages/ruby.scm index 4d6d323442..4ce42f90bf 100644 --- a/gnu/packages/ruby.scm +++ b/gnu/packages/ruby.scm @@ -5,8 +5,8 @@ ;;; Copyright © 2014, 2015 David Thompson <davet@gnu.org> ;;; Copyright © 2015, 2019 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2015, 2016, 2017 Ben Woodcroft <donttrustben@gmail.com> -;;; Copyright © 2017 ng0 <ng0@n0.is> -;;; Copyright © 2017, 2019 Marius Bakke <mbakke@fastmail.com> +;;; Copyright © 2017 Nikita <nikita@n0.is> +;;; Copyright © 2017, 2019, 2020 Marius Bakke <mbakke@fastmail.com> ;;; Copyright © 2017, 2018, 2019 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2017, 2018, 2020 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2017 Clément Lassieur <clement@lassieur.org> @@ -19,6 +19,7 @@ ;;; Copyright © 2019 Brian Leung <bkleung89@gmail.com> ;;; Copyright © 2019 Collin J. Doering <collin@rekahsoft.ca> ;;; Copyright © 2019 Diego N. Barbato <dnbarbato@posteo.de> +;;; Copyright © 2019 Brett Gilio <brettg@posteo.de> ;;; ;;; This file is part of GNU Guix. ;;; @@ -77,7 +78,7 @@ (define-public ruby (package (name "ruby") - (version "2.5.3") + (version "2.6.5") (source (origin (method url-fetch) @@ -86,7 +87,7 @@ "/ruby-" version ".tar.xz")) (sha256 (base32 - "0vrhrw7kcz9mg0jkqnihkcxqy5k05v8k1j0y2735z8wfk8sx1j8w")) + "0qhsw2mr04f3lqinkh557msr35pb5rdaqy4vdxcj91flgxqxmmnm")) (modules '((guix build utils))) (snippet `(begin ;; Remove bundled libffi @@ -95,6 +96,7 @@ (build-system gnu-build-system) (arguments `(#:test-target "test" + #:configure-flags '("--enable-shared") ; dynamic linking #:phases (modify-phases %standard-phases (add-before 'configure 'replace-bin-sh-and-remove-libffi @@ -116,8 +118,9 @@ `(("readline" ,readline) ("openssl" ,openssl) ("libffi" ,libffi) - ("gdbm" ,gdbm) - ("zlib" ,zlib))) + ("gdbm" ,gdbm))) + (propagated-inputs + `(("zlib" ,zlib))) (native-search-paths (list (search-path-specification (variable "GEM_PATH") @@ -128,10 +131,53 @@ a focus on simplicity and productivity.") (home-page "https://www.ruby-lang.org") (license license:ruby))) -(define-public ruby-2.4 +(define-public ruby-2.7 + (package + (inherit ruby) + (version "2.7.1") + (source + (origin + (method url-fetch) + (uri (string-append "http://cache.ruby-lang.org/pub/ruby/" + (version-major+minor version) + "/ruby-" version ".tar.gz")) + (sha256 + (base32 + "0674x98f542y02r7n2yv2qhmh97blqhi2mvh2dn5f000vlxlh66l")) + (modules '((guix build utils))) + (snippet `(begin + ;; Remove bundled libffi + (delete-file-recursively "ext/fiddle/libffi-3.2.1") + #t)))) + (arguments + `(#:test-target "test" + #:configure-flags '("--enable-shared") ; dynamic linking + #:phases + (modify-phases %standard-phases + (add-before 'configure 'replace-bin-sh-and-remove-libffi + (lambda _ + (substitute* '("configure.ac" + "template/Makefile.in" + "lib/rubygems/installer.rb" + "ext/pty/pty.c" + "io.c" + "lib/mkmf.rb" + "process.c" + "test/rubygems/test_gem_ext_configure_builder.rb" + "test/rdoc/test_rdoc_parser.rb" + "test/ruby/test_rubyoptions.rb" + "test/ruby/test_process.rb" + "test/ruby/test_system.rb" + "tool/rbinstall.rb") + (("/bin/sh") (which "sh"))) + #t))))) + (native-inputs + `(("autoconf" ,autoconf))))) + +(define-public ruby-2.5 (package (inherit ruby) - (version "2.4.3") + (version "2.5.8") (source (origin (method url-fetch) @@ -140,18 +186,17 @@ a focus on simplicity and productivity.") "/ruby-" version ".tar.xz")) (sha256 (base32 - "0l9bv67dgsphk42lmiskhrnh47hbyj6rfg2rcjx22xivpx07srr3")) - (patches (search-patches "ruby-rubygems-276-for-ruby24.patch")) + "0vad5ah1lrdhxsyqr5iqc8c7r7qczpmm76cz8rsf4crimpzv5483")) (modules '((guix build utils))) (snippet `(begin ;; Remove bundled libffi (delete-file-recursively "ext/fiddle/libffi-3.2.1") #t)))))) -(define-public ruby-2.3 +(define-public ruby-2.4 (package (inherit ruby) - (version "2.3.8") + (version "2.4.10") (source (origin (method url-fetch) @@ -160,7 +205,7 @@ a focus on simplicity and productivity.") "/ruby-" version ".tar.xz")) (sha256 (base32 - "1zhxbjff08pvbnxvn58krns6q0p6g4977q6ykfn823gxhifn63wi")) + "1prhqlgik1zmw9lakl6hkriqslspw48pvhxff17h7ns42p8qwrnm")) (modules '((guix build utils))) (snippet `(begin ;; Remove bundled libffi @@ -297,14 +342,32 @@ a menu system for providing multiple options to the user.") (define-public ruby-hoe (package (name "ruby-hoe") - (version "3.16.2") + (version "3.21.0") (source (origin (method url-fetch) (uri (rubygems-uri "hoe" version)) (sha256 (base32 - "12q6dn2irsfamdbjpqvs0dwl4i1vl7wflxrcg972h9jw0ds38f3a")))) + "0qid0n56mgsjvq5ksxajv0gb92akky8imwgvw22ajms5g4fd6nf4")))) (build-system ruby-build-system) + (arguments + '(#:phases + (modify-phases %standard-phases + ;; One of the tests fails if the SOURCE_DATE_EPOCH environment + ;; variable is set, so unset it for the duration of the tests. + ;; + ;; TestHoe#test_possibly_better + ;; [/tmp/guix-build-ruby-hoe-3.20.0.drv-0/gem/test/test_hoe.rb:250]: + ;; Expected: 2019-11-12 00:00:00 UTC + ;; Actual: 1970-01-01 00:00:00 UTC + (add-before 'check 'unset-SOURCE-DATE-EPOCH + (lambda _ + (unsetenv "SOURCE_DATE_EPOCH") + #t)) + (add-after 'check 'set-SOURCE-DATE-EPOCH-again + (lambda _ + (setenv "SOURCE_DATE_EPOCH" "1") + #t))))) (synopsis "Ruby project management helper") (description "Hoe is a rake/rubygems helper for project Rakefiles. It helps manage, @@ -1950,6 +2013,40 @@ two hashes.") (home-page "https://github.com/liufengyun/hashdiff") (license license:expat))) +(define-public ruby-hydra + ;; No releases yet. + (let ((commit "5abfa378743756ae4d9306cc134bcc482f5c9525") + (revision "0")) + (package + (name "ruby-hydra") + (version (git-version "0.0" revision commit)) + (home-page "https://github.com/hyphenation/hydra") + (source (origin + (method git-fetch) + (uri (git-reference (url home-page) (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1cik398l2765y3d9sdhjzki3303hkry58ac6jlkiy7iy62nm529f")))) + (build-system ruby-build-system) + (arguments + '(#:phases (modify-phases %standard-phases + (add-after 'unpack 'make-files-writable + (lambda _ + (for-each make-file-writable (find-files ".")) + #t)) + (replace 'check + (lambda _ + (invoke "rspec")))))) + (native-inputs + `(("ruby-rspec" ,ruby-rspec))) + (propagated-inputs + `(("ruby-byebug" ,ruby-byebug))) + (synopsis "Ruby hyphenation patterns") + (description + "ruby-hydra is a Ruby library for working with hyphenation patterns.") + (license license:expat)))) + (define-public ruby-shindo (package (name "ruby-shindo") @@ -2237,14 +2334,16 @@ using Net::HTTP, supporting reconnection and retry according to RFC 2616.") (define-public ruby-power-assert (package (name "ruby-power-assert") - (version "0.2.7") + (version "1.1.5") (source (origin (method url-fetch) (uri (rubygems-uri "power_assert" version)) (sha256 (base32 - "0ka6w71lcan4wgf111xi3pcn9ma9lhakv31jg8w007nwzi0xfjbi")))) + "1dii0wkfa0jm8sk9b20zl1z4980dmrjh0zqnii058485pp3ws10s")))) (build-system ruby-build-system) + (arguments + '(#:tests? #f)) ; No included tests (native-inputs `(("bundler" ,bundler))) (synopsis "Assert library with descriptive assertion messages") @@ -4051,6 +4150,16 @@ utilities for Ruby.") (base32 "09dpbrih054mn42flbbcdpzk2727mzfvjrgqb12zdafhx7p9rrzp")))) (build-system ruby-build-system) + (arguments + '(#:phases + (modify-phases %standard-phases + (add-after 'unpack 'skip-safe-tests + (lambda _ + (substitute* "test/test_utils.rb" + (("def safe_test\\(options = \\{\\}\\)") + "def safe_test(options = {}) + skip('The Guix build environment has an unsafe load path')")) + #t))))) (propagated-inputs `(("ruby-thread-safe" ,ruby-thread-safe))) (synopsis "Time zone library for Ruby") @@ -4441,13 +4550,13 @@ a native C extension.") (define-public ruby-json-pure (package (name "ruby-json-pure") - (version "2.1.0") + (version "2.2.0") (source (origin (method url-fetch) (uri (rubygems-uri "json_pure" version)) (sha256 (base32 - "12yf9fmhr4c2jm3xl20vf1qyz5i63vc8a6ngz9j0f86nqwhmi2as")))) + "0m0j1mfwv0mvw72kzqisb26xjl236ivqypw1741dkis7s63b8439")))) (build-system ruby-build-system) (arguments `(#:phases @@ -4481,7 +4590,7 @@ a native C extension.") (synopsis "JSON implementation in pure Ruby") (description "This package provides a JSON implementation written in pure Ruby.") - (home-page "https://flori.github.com/json") + (home-page "https://flori.github.com/json/") (license license:ruby))) (define-public ruby-jwt @@ -4547,7 +4656,7 @@ a native C extension.") (define-public ruby-listen (package (name "ruby-listen") - (version "3.1.5") + (version "3.2.0") (source (origin ;; The gem does not include a Rakefile, so fetch from the Git @@ -4559,7 +4668,7 @@ a native C extension.") (file-name (git-file-name name version)) (sha256 (base32 - "1hqmkfa9f2xb5jlvqbafdxjd5ax75jm8gqj5nh3k22xq0kacsvgg")))) + "1hkp1g6hk5clsmbd001gkc12ma6s459x820piajyasv61m87if24")))) (build-system ruby-build-system) (arguments `(#:test-target "spec" @@ -5411,14 +5520,14 @@ It is intended be used by all Cucumber implementations to parse (define-public ruby-aruba (package (name "ruby-aruba") - (version "0.14.8") + (version "0.14.14") (source (origin (method url-fetch) (uri (rubygems-uri "aruba" version)) (sha256 (base32 - "0zdd81l1lp0x78sxa6kkfqclpj5il3xl70nz05wqv2sfzzhqydxh")))) + "0l2mfpdxc03gdrbwc2hv4vdhjhqhfcdp6d02j05j64ncpi9srlqn")))) (build-system ruby-build-system) (arguments '(#:test-target "spec" @@ -5450,11 +5559,7 @@ It is intended be used by all Cucumber implementations to parse ((".*cucumber.*") "\n") ((".*license_finder.*") "\n") ((".*rake.*") "gem 'rake'\n") - ((".*simplecov.*") "\n") ((".*relish.*") "\n")) - (substitute* "spec/spec_helper.rb" - ((".*simplecov.*") "") - (("^SimpleCov.*") "")) (substitute* "aruba.gemspec" (("spec\\.add\\_runtime\\_dependency 'cucumber'.*") "spec.add_runtime_dependency 'cucumber'")) @@ -5464,7 +5569,8 @@ It is intended be used by all Cucumber implementations to parse (native-inputs `(("bundler" ,bundler) ("ruby-rspec" ,ruby-rspec) - ("ruby-fuubar" ,ruby-fuubar))) + ("ruby-fuubar" ,ruby-fuubar) + ("ruby-simplecov" ,ruby-simplecov))) (propagated-inputs `(("ruby-childprocess" ,ruby-childprocess) ("ruby-contracts" ,ruby-contracts) @@ -5756,7 +5862,7 @@ A modified copy of yajl is used, and included in the package.") (define-public ruby-yard (package (name "ruby-yard") - (version "0.9.16") + (version "0.9.20") (source (origin (method git-fetch) @@ -5767,20 +5873,24 @@ A modified copy of yajl is used, and included in the package.") (file-name (git-file-name name version)) (sha256 (base32 - "0a4r1pfs0ms4vlccsf1x2jckx35lqm8b8lh6rdjxqfr5fia5izpf")))) + "1v48zz8hzazrg79jksj9siys21d2axvzijvkxw2j42zh86syi1wi")))) (build-system ruby-build-system) (arguments `(#:phases (modify-phases %standard-phases (replace 'check (lambda _ + ;; Delete the Gemfile to avoid errors relating to it + (delete-file "Gemfile") ;; $HOME needs to be set to somewhere writeable for tests to run (setenv "HOME" "/tmp") ;; Run tests without using 'rake' to avoid dependencies. (invoke "rspec")))))) (native-inputs `(("ruby-rspec" ,ruby-rspec) - ("ruby-rack" ,ruby-rack))) + ("ruby-rack" ,ruby-rack) + ("ruby-redcloth" ,ruby-redcloth) + ("ruby-asciidoc" ,ruby-asciidoctor))) (synopsis "Documentation generation tool for Ruby") (description "YARD is a documentation generation tool for the Ruby programming @@ -6094,13 +6204,6 @@ neither too verbose nor too minimal.") (arguments `(#:phases (modify-phases %standard-phases - (add-before 'check 'adjust-failing-test - (lambda _ - ;; XXX: This test fails with SQLite versions >= 3.21. - ;; See <https://github.com/sparklemotion/sqlite3-ruby/issues/226>. - (substitute* "test/test_integration_resultset.rb" - (("\"integer\", \"text\"") "\"INTEGER\", \"text\"")) - #t)) (add-before 'check 'add-gemtest-file ;; This file exists in the repository but is not distributed. (lambda _ (invoke "touch" ".gemtest")))))) @@ -7433,17 +7536,17 @@ in standard Ruby syntax.") (home-page "https://github.com/ruby/rake") (license license:expat))) -(define-public ruby-childprocess-0.6 +(define-public ruby-childprocess (package (name "ruby-childprocess") - (version "0.6.3") + (version "3.0.0") (source (origin (method url-fetch) (uri (rubygems-uri "childprocess" version)) (sha256 (base32 - "1p3f43scdzx9zxmy2kw5zsc3az6v46nq4brwcxmnscjy4w4racbv")))) + "1ic028k8xgm2dds9mqnvwwx3ibaz32j8455zxr9f4bcnviyahya5")))) (build-system ruby-build-system) (arguments `(#:tests? #f)) @@ -7455,22 +7558,9 @@ in standard Ruby syntax.") (synopsis "Control external programs running in the background, in Ruby") (description "@code{childprocess} provides a gem to control external programs running in the background, in Ruby.") - (home-page "http://github.com/enkessler/childprocess") + (home-page "https://github.com/enkessler/childprocess") (license license:expat))) -(define-public ruby-childprocess - (package - (inherit ruby-childprocess-0.6) - (name "ruby-childprocess") - (version "0.9.0") - (source - (origin - (method url-fetch) - (uri (rubygems-uri "childprocess" version)) - (sha256 - (base32 - "0a61922kmvcxyj5l70fycapr87gz1dzzlkfpq85rfqk5vdh3d28p")))))) - (define-public ruby-public-suffix (package (name "ruby-public-suffix") diff --git a/gnu/packages/rust.scm b/gnu/packages/rust.scm index 621962b935..d139657f39 100644 --- a/gnu/packages/rust.scm +++ b/gnu/packages/rust.scm @@ -1,7 +1,7 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2016 David Craven <david@craven.ch> ;;; Copyright © 2016 Eric Le Bihan <eric.le.bihan.dev@free.fr> -;;; Copyright © 2016 ng0 <ng0@n0.is> +;;; Copyright © 2016 Nikita <nikita@n0.is> ;;; Copyright © 2017 Ben Woodcroft <donttrustben@gmail.com> ;;; Copyright © 2017, 2018 Nikolai Merinov <nikolai.merinov@member.fsf.org> ;;; Copyright © 2017, 2019 Efraim Flashner <efraim@flashner.co.il> @@ -439,9 +439,12 @@ test = { path = \"../libtest\" } ;; modules (see <https://bugs.gnu.org/31392>). (native-search-paths (list (search-path-specification - (variable "CPATH") + (variable "C_INCLUDE_PATH") (files '("include"))) (search-path-specification + (variable "CPLUS_INCLUDE_PATH") + (files '("include/c++" "include"))) + (search-path-specification (variable "LIBRARY_PATH") (files '("lib" "lib64"))))) @@ -466,6 +469,10 @@ safety and thread safety guarantees.") (delete-file-recursively "src/llvm") #t)) (patches '()))) + (native-inputs + `(;; The tests fail with newer versions of GNU Make. + ("make" ,gnu-make-4.2) + ,@(package-native-inputs base-rust))) (outputs '("out" "doc" "cargo")) ;; Since rust-1.19 is local, it's quite probable that Hydra ;; will build rust-1.19 only as a dependency of rust-1.20. diff --git a/gnu/packages/samba.scm b/gnu/packages/samba.scm index 2fec3c2a43..b58788719e 100644 --- a/gnu/packages/samba.scm +++ b/gnu/packages/samba.scm @@ -5,7 +5,7 @@ ;;; Copyright © 2016 Adonay "adfeno" Felipe Nogueira <https://libreplanet.org/wiki/User:Adfeno> <adfeno@openmailbox.org> ;;; Copyright © 2017 Thomas Danckaert <post@thomasdanckaert.be> ;;; Copyright © 2017, 2018, 2020 Marius Bakke <mbakke@fastmail.com> -;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr> +;;; Copyright © 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2018 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2019 Rutger Helling <rhelling@mykolab.com> ;;; @@ -51,6 +51,7 @@ #:use-module (gnu packages popt) #:use-module (gnu packages python) #:use-module (gnu packages readline) + #:use-module (gnu packages time) #:use-module (gnu packages tls) #:use-module (gnu packages web) #:use-module (gnu packages xml)) @@ -168,14 +169,20 @@ anywhere.") (define-public samba (package (name "samba") - (version "4.11.6") + (version "4.12.2") (source (origin (method url-fetch) (uri (string-append "https://download.samba.org/pub/samba/stable/" "samba-" version ".tar.gz")) (sha256 (base32 - "0f7g17zw4nzk1bjnqqrr84hkyq9vn0k7zyim2i177xkigd6qyhwi")))) + "0l514s2xhsy1lspzgvibbzs80zi84zxr2wx4d40hq85yb2lg5434")) + (modules '((guix build utils))) + (snippet + '(begin + ;; TODO: also remove the bundled ‘third_party/popt’. + (delete-file-recursively "third_party/pyiso8601") + #t)))) (build-system gnu-build-system) (arguments `(#:phases @@ -222,13 +229,13 @@ anywhere.") ;; ("gamin" ,gamin) ("gpgme" ,gpgme) ("gnutls" ,gnutls) - ("iniparser" ,iniparser) ("jansson" ,jansson) - ("libaio" ,libaio) ("libarchive" ,libarchive) ("linux-pam" ,linux-pam) ("lmdb" ,lmdb) ("openldap" ,openldap) + ("perl" ,perl) + ("python" ,python) ("popt" ,popt) ("readline" ,readline) ("tdb" ,tdb))) @@ -238,12 +245,15 @@ anywhere.") ("talloc" ,talloc) ("tevent" ,tevent))) (native-inputs - `(("docbook-xsl" ,docbook-xsl) ;for generating manpages - ("xsltproc" ,libxslt) ;ditto - ("rpcsvc-proto" ,rpcsvc-proto) ;for 'rpcgen' - ("perl" ,perl) + `(("perl-parse-yapp" ,perl-parse-yapp) ("pkg-config" ,pkg-config) - ("python" ,python))) + ("python-iso8601" ,python-iso8601) + ("rpcsvc-proto" ,rpcsvc-proto) ; for 'rpcgen' + + ;; For generating man pages. + ("docbook-xml" ,docbook-xml-4.2) + ("docbook-xsl" ,docbook-xsl) + ("xsltproc" ,libxslt))) (home-page "https://www.samba.org/") (synopsis "The standard Windows interoperability suite of programs for GNU and Unix") diff --git a/gnu/packages/scanner.scm b/gnu/packages/scanner.scm index 1e4231b7e7..55a642241d 100644 --- a/gnu/packages/scanner.scm +++ b/gnu/packages/scanner.scm @@ -123,7 +123,7 @@ package contains the library, but no drivers.") (name "sane-backends") (inputs `(("hplip" ,(@ (gnu packages cups) hplip-minimal)) - ("libjpeg" ,libjpeg) ; wanted by pixma, epsonds, others + ("libjpeg" ,libjpeg-turbo) ; wanted by pixma, epsonds, others ("libpng" ,libpng) ; support ‘scanimage --format=png’ ,@(package-inputs sane-backends-minimal))) (arguments @@ -226,7 +226,7 @@ package contains the library and drivers."))) (inputs `(("gtk+" ,gtk+-2) ("lcms" ,lcms) - ("libjpeg" ,libjpeg) + ("libjpeg" ,libjpeg-turbo) ("libtiff" ,libtiff) ("sane-backends" ,sane-backends) diff --git a/gnu/packages/scheme.scm b/gnu/packages/scheme.scm index e36564f030..46f1826ba1 100644 --- a/gnu/packages/scheme.scm +++ b/gnu/packages/scheme.scm @@ -5,7 +5,7 @@ ;;; Copyright © 2016 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2016, 2017 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2016 Jan Nieuwenhuizen <janneke@gnu.org> -;;; Copyright © 2016, 2017 ng0 <ng0@n0.is> +;;; Copyright © 2016, 2017 Nikita <nikita@n0.is> ;;; Copyright © 2017 John Darrington <jmd@gnu.org> ;;; Copyright © 2017 Clément Lassieur <clement@lassieur.org> ;;; Copyright © 2017, 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr> @@ -503,7 +503,7 @@ implementation techniques and as an expository tool.") ("glu" ,glu) ("gmp" ,gmp) ("gtk+" ,gtk+) ; propagates gdk-pixbuf+svg - ("libjpeg" ,libjpeg) + ("libjpeg" ,libjpeg-turbo) ("libpng" ,libpng) ("libx11" ,libx11) ("mesa" ,mesa) diff --git a/gnu/packages/screen.scm b/gnu/packages/screen.scm index 51168903a9..c03e2e5e5e 100644 --- a/gnu/packages/screen.scm +++ b/gnu/packages/screen.scm @@ -29,6 +29,7 @@ #:use-module (guix git-download) #:use-module (guix build-system gnu) #:use-module (gnu packages) + #:use-module (gnu packages hurd) #:use-module (gnu packages ncurses) #:use-module (gnu packages perl) #:use-module (gnu packages python) @@ -43,6 +44,7 @@ (method url-fetch) (uri (string-append "mirror://gnu/screen/screen-" version ".tar.gz")) + (patches (search-patches "screen-hurd-path-max.patch")) (sha256 (base32 "18ascpjzsy70h6hk7wpg8zmzjwgdyrdr7c6z4pg5z4l9hhyv24bf")))) (build-system gnu-build-system) diff --git a/gnu/packages/scribus.scm b/gnu/packages/scribus.scm index e9c998c7b6..6519ce7a7f 100644 --- a/gnu/packages/scribus.scm +++ b/gnu/packages/scribus.scm @@ -54,6 +54,7 @@ (method url-fetch) (uri (string-append "mirror://sourceforge/scribus/scribus-devel/" version "/scribus-" version ".tar.xz")) + (patches (search-patches "scribus-1.5.5-poppler-0.86-build-fix.patch")) (sha256 (base32 "0w9zzsiaq3f7vpxybk01c9z2b4qqg67mzpyfb2gjchz8dhdb423r")))) @@ -87,7 +88,7 @@ ("lcms" ,lcms) ("libcdr" ,libcdr) ("libfreehand" ,libfreehand) - ("libjpeg" ,libjpeg) + ("libjpeg" ,libjpeg-turbo) ("libmspub" ,libmspub) ("libpagemaker" ,libpagemaker) ("librevenge" ,librevenge) diff --git a/gnu/packages/sdl.scm b/gnu/packages/sdl.scm index 105296cd0f..6d91727809 100644 --- a/gnu/packages/sdl.scm +++ b/gnu/packages/sdl.scm @@ -132,12 +132,6 @@ joystick, and graphics hardware.") ,flags)) ((#:make-flags flags ''()) `(cons* - ;; Add the Fcitx header files to GCCs "system header" search path - ;; in order to suppress compiler warnings induced by those: - ;; .../include/fcitx-utils/utarray.h:178:9: error: ISO C90 forbids - ;; mixed declarations and code [-Werror=declaration-after-statement] - (string-append "C_INCLUDE_PATH=" - (assoc-ref %build-inputs "fcitx") "/include") ;; SDL dlopens libudev, so make sure it is in rpath. This overrides ;; the LDFLAG set in sdl’s configure-flags, which isn’t necessary ;; as sdl2 includes Mesa by default. @@ -245,7 +239,7 @@ other supporting functions for SDL.") ;; propagated input because the pkg-config file refers to SDL's pkg-config ;; file. (propagated-inputs `(("sdl" ,sdl) - ("libjpeg" ,libjpeg) + ("libjpeg" ,libjpeg-turbo) ("libpng" ,libpng) ("libtiff" ,libtiff) ("libwebp" ,libwebp))) @@ -560,7 +554,7 @@ directory.") `(("pkg-config" ,pkg-config) ;; Required by test suite. ("xorg-server" ,xorg-server) - ("libjpeg" ,libjpeg))) + ("libjpeg" ,libjpeg-turbo))) (inputs `(("guile" ,guile-2.2) ("sdl-union" ,(sdl-union)))) diff --git a/gnu/packages/search.scm b/gnu/packages/search.scm index dcfd1ec1bd..a87e1e74b6 100644 --- a/gnu/packages/search.scm +++ b/gnu/packages/search.scm @@ -59,7 +59,7 @@ (base32 "1sjhz6vgql801rdgl6vrsjj0vy1mwlkcxjx6nr7h27m031cyjs5i")))) (build-system gnu-build-system) (inputs `(("zlib" ,zlib) - ("util-linux" ,util-linux))) + ("util-linux" ,util-linux "lib"))) (arguments `(#:phases (modify-phases %standard-phases diff --git a/gnu/packages/security-token.scm b/gnu/packages/security-token.scm index c5cbb758da..2ab8a85702 100644 --- a/gnu/packages/security-token.scm +++ b/gnu/packages/security-token.scm @@ -65,7 +65,7 @@ (define-public ccid (package (name "ccid") - (version "1.4.31") + (version "1.4.32") (source (origin (method url-fetch) (uri (string-append @@ -73,7 +73,7 @@ name "-" version ".tar.bz2")) (sha256 (base32 - "1xz8ikr6vk73w3xnwb931yq8lqc1zrj8c3v34n6h63irwjvdfj3b")))) + "0f8nzk7379ip4x2ii5vn6h67jyx733pq0ywnnsj2llbxi2vllpsl")))) (build-system gnu-build-system) (arguments `(#:configure-flags (list (string-append "--enable-usbdropdir=" %output @@ -167,6 +167,34 @@ the low-level development kit for the Yubico YubiKey authentication device.") (home-page "https://developers.yubico.com/yubico-c/") (license license:bsd-2))) +(define-public softhsm + (package + (name "softhsm") + (version "2.6.1") + (source (origin + (method url-fetch) + (uri (string-append + "https://dist.opendnssec.org/source/" + "softhsm-" version ".tar.gz")) + (sha256 + (base32 + "1wkmyi6n3z2pak1cj5yk6v6bv9w0m24skycya48iikab0mrr8931")))) + (build-system gnu-build-system) + (arguments + '(#:configure-flags '("--disable-gost"))) ; TODO Missing the OpenSSL + ; engine for GOST + (inputs + `(("openssl" ,openssl))) + (native-inputs + `(("pkg-config" ,pkg-config) + ("cppunit" ,cppunit))) + (synopsis "Software implementation of a generic cryptographic device") + (description + "SoftHSM 2 is a software implementation of a generic cryptographic device +with a PKCS #11 Cryptographic Token Interface.") + (home-page "https://www.opendnssec.org/softhsm/") + (license license:bsd-2))) + (define-public pcsc-lite (package (name "pcsc-lite") diff --git a/gnu/packages/selinux.scm b/gnu/packages/selinux.scm index 1c45cb8c7e..1502d167c4 100644 --- a/gnu/packages/selinux.scm +++ b/gnu/packages/selinux.scm @@ -1,6 +1,7 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2016, 2017, 2018 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr> +;;; Copyright © 2019, 2020 Marius Bakke <mbakke@fastmail.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -39,7 +40,6 @@ #:use-module (gnu packages python) #:use-module (gnu packages python-xyz) #:use-module (gnu packages swig) - #:use-module (gnu packages textutils) #:use-module (gnu packages xml)) ;; Update the SELinux packages together! @@ -47,8 +47,8 @@ (define-public libsepol (package (name "libsepol") - (version "2.7") - (source (let ((release "20170804")) + (version "3.0") + (source (let ((release "20191204")) (origin (method git-fetch) (uri (git-reference @@ -57,20 +57,25 @@ (file-name (string-append "selinux-" release "-checkout")) (sha256 (base32 - "1l1nn8bx08v4cxkw5kb0wgr61rfqj5ra9dh1dy5jslillj93vivq"))))) + "05rpzm72cgprd0ccr6lvx9hm8j8b5nkqi4avshlsyg7s3sdlcxjs"))))) (build-system gnu-build-system) (arguments `(#:tests? #f ; tests require checkpolicy, which requires libsepol #:test-target "test" #:make-flags - (let ((out (assoc-ref %outputs "out"))) + (let ((out (assoc-ref %outputs "out")) + (target ,(%current-target-system))) (list (string-append "PREFIX=" out) - (string-append "DESTDIR=" out) + (string-append "SHLIBDIR=" out "/lib") (string-append "MAN3DIR=" out "/share/man/man3") (string-append "MAN5DIR=" out "/share/man/man5") (string-append "MAN8DIR=" out "/share/man/man8") (string-append "LDFLAGS=-Wl,-rpath=" out "/lib") - "CC=gcc")) + (string-append "CC=" + (if target + (string-append (assoc-ref %build-inputs "cross-gcc") + "/bin/" target "-gcc") + "gcc")))) #:phases (modify-phases %standard-phases (delete 'configure) @@ -101,12 +106,17 @@ boolean settings).") (arguments `(#:tests? #f ; there is no check target #:make-flags - (let ((out (assoc-ref %outputs "out"))) + (let ((out (assoc-ref %outputs "out")) + (target ,(%current-target-system))) (list (string-append "PREFIX=" out) (string-append "LIBSEPOLA=" (assoc-ref %build-inputs "libsepol") "/lib/libsepol.a") - "CC=gcc")) + (string-append "CC=" + (if target + (string-append (assoc-ref %build-inputs "cross-gcc") + "/bin/" target "-gcc") + "gcc")))) #:phases (modify-phases %standard-phases (delete 'configure) @@ -139,7 +149,7 @@ module into a binary representation.") (string-append "LIBSEPOLA=" (assoc-ref %build-inputs "libsepol") "/lib/libsepol.a") - (string-append "PYSITEDIR=" + (string-append "PYTHONLIBDIR=" (assoc-ref %outputs "python") "/lib/python" ,(version-major+minor (package-version python)) @@ -150,19 +160,17 @@ module into a binary representation.") (delete 'portability) (replace 'enter-dir (lambda _ (chdir ,name) #t)) - (add-after 'enter-dir 'remove-Werror - (lambda _ - ;; GCC complains about the fact that the output does not (yet) - ;; have an "include" directory, even though it is referenced. - (substitute* '("src/Makefile" - "utils/Makefile") - (("-Werror ") "")) - #t)) (add-after 'build 'pywrap (lambda* (#:key make-flags #:allow-other-keys) (apply invoke "make" "pywrap" make-flags))) (add-after 'install 'install-pywrap - (lambda* (#:key make-flags #:allow-other-keys) + (lambda* (#:key make-flags outputs #:allow-other-keys) + ;; The build system uses "python setup.py install" to install + ;; Python bindings. Instruct it to use the correct output. + (substitute* "src/Makefile" + (("--prefix=\\$\\(PREFIX\\)") + (string-append "--prefix=" (assoc-ref outputs "python")))) + (apply invoke "make" "install-pywrap" make-flags))))))) ;; These libraries are in "Requires.private" in libselinux.pc. (propagated-inputs @@ -191,7 +199,7 @@ the core SELinux management utilities.") (substitute-keyword-arguments (package-arguments libsepol) ((#:make-flags flags) `(cons* "PYTHON=python3" - (string-append "PYSITEDIR=" + (string-append "PYTHONLIBDIR=" (assoc-ref %outputs "out") "/lib/python" ,(version-major+minor (package-version python)) @@ -202,6 +210,12 @@ the core SELinux management utilities.") (delete 'portability) (replace 'enter-dir (lambda _ (chdir ,name) #t)) + (add-before 'install 'adjust-semanage-conf-location + (lambda _ + (substitute* "src/Makefile" + (("DEFAULT_SEMANAGE_CONF_LOCATION=/etc") + "DEFAULT_SEMANAGE_CONF_LOCATION=$(PREFIX)/etc")) + #t)) (add-after 'build 'pywrap (lambda* (#:key make-flags #:allow-other-keys) (apply invoke "make" "pywrap" make-flags))) @@ -212,7 +226,6 @@ the core SELinux management utilities.") `(("libsepol" ,libsepol) ("libselinux" ,libselinux) ("audit" ,audit) - ("ustr" ,ustr) ;; For pywrap phase ("python" ,python-wrapper))) (native-inputs @@ -393,11 +406,6 @@ tools, and libraries designed to facilitate SELinux policy analysis.") (lambda _ (chdir ,name) #t)) (add-after 'enter-dir 'ignore-/usr-tests (lambda* (#:key inputs #:allow-other-keys) - ;; The Makefile decides to build restorecond only if it finds the - ;; inotify header somewhere under /usr. - (substitute* "Makefile" - (("ifeq.*") "") - (("endif.*") "")) ;; Rewrite lookup paths for header files. (substitute* '("newrole/Makefile" "setfiles/Makefile" diff --git a/gnu/packages/sequoia.scm b/gnu/packages/sequoia.scm new file mode 100644 index 0000000000..91c1dcd98d --- /dev/null +++ b/gnu/packages/sequoia.scm @@ -0,0 +1,171 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2019, 2020 Hartmut Goebel <h.goebel@crazy-compilers.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 sequoia) + #:use-module (guix build-system cargo) + #:use-module (guix download) + #:use-module (guix git-download) + #:use-module ((guix licenses) #:prefix license:) + #:use-module (guix packages) + #:use-module (gnu packages) + #:use-module (gnu packages check) ;; python-pytest + #:use-module (gnu packages crates-io) + #:use-module (gnu packages libffi) ;; python-cffi + #:use-module (gnu packages llvm) + #:use-module (gnu packages multiprecision) + #:use-module (gnu packages nettle) + #:use-module (gnu packages pkg-config) + #:use-module (gnu packages python) + #:use-module (gnu packages python-xyz) ;; python-setuptools + #:use-module (gnu packages serialization) + #:use-module (gnu packages sqlite) + #:use-module (gnu packages tls)) + +(define-public sequoia + (package + (name "sequoia") + (version "0.16.0") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://gitlab.com/sequoia-pgp/sequoia.git") + (commit (string-append "v" version)))) + (sha256 + (base32 "0iwzi2ylrwz56s77cd4vcf89ig6ipy4w6kp2pfwqvd2d00x54dhk")) + (file-name (git-file-name name version)))) + (build-system cargo-build-system) + (outputs '("out" "python")) + (native-inputs + `(("clang" ,clang) + ("pkg-config" ,pkg-config) + ("python-pytest" ,python-pytest) + ("python-pytest-runner" ,python-pytest-runner))) + (inputs + `(("capnproto" ,capnproto) + ("gmp" ,gmp) + ("nettle" ,nettle) + ("openssl" ,openssl) + ("python" ,python) + ("python-cffi" ,python-cffi) + ("sqlite" ,sqlite))) + (arguments + `(#:tests? #f ;; building the tests requires 9.7GB total + #:cargo-inputs + (("rust-assert-cli" ,rust-assert-cli-0.6) + ("rust-anyhow" ,rust-anyhow-1.0) + ("rust-base64", rust-base64-0.11) + ;;("rust-buffered-reader" included + ("rust-bzip2", rust-bzip2-0.3) + ("rust-capnp" ,rust-capnp-0.10) + ("rust-capnp-rpc" ,rust-capnp-rpc-0.10) + ("rust-capnpc" ,rust-capnpc-0.10) + ("rust-chrono" ,rust-chrono-0.4) + ("rust-clap" ,rust-clap-2) + ("rust-clap" ,rust-clap-2) + ("rust-colored" ,rust-colored-1.9.1) + ("rust-crossterm" ,rust-crossterm-0.13) + ("rust-ctor", rust-ctor-0.1) + ("rust-dirs" ,rust-dirs-2.0) + ;;("rust-failure" included + ("rust-filetime" ,rust-filetime-0.2) + ("rust-flate2", rust-flate2-1.0) + ("rust-fs2" ,rust-fs2-0.4) + ("rust-futures" ,rust-futures-0.1) + ("rust-http" ,rust-http-0.1) + ("rust-hyper" ,rust-hyper-0.12) + ("rust-hyper-tls" ,rust-hyper-tls-0.3) + ("rust-idna", rust-idna-0.2) + ("rust-itertools" ,rust-itertools-0.8) + ("rust-lalrpop-util", rust-lalrpop-util-0.17) + ("rust-lazy-static", rust-lazy-static-1.3) + ("rust-libc" ,rust-libc-0.2) + ("rust-memsec", rust-memsec-0.5) + ("rust-native-tls" ,rust-native-tls-0.2) + ("rust-nettle", rust-nettle-7) + ("rust-parity-tokio-ipc" ,rust-parity-tokio-ipc-0.4) + ("rust-percent-encoding" ,rust-percent-encoding-2.1) + ("rust-prettytable-rs" ,rust-prettytable-rs-0.8) + ("rust-proc-macro2" ,rust-proc-macro2-1.0) + ("rust-quickcheck", rust-quickcheck-0.9) + ("rust-rand", rust-rand-0.7) + ("rust-regex", rust-regex-1.3) + ("rust-rusqlite" ,rust-rusqlite-0.19) + ("rust-tempfile" ,rust-tempfile-3.1) + ("rust-thiserror" ,rust-thiserror-1.0) + ("rust-tokio" ,rust-tokio-0.1) + ("rust-tokio-core" ,rust-tokio-core-0.1) + ("rust-unicode-normalization", rust-unicode-normalization-0.1) + ("rust-url" ,rust-url-2.1) + ("rust-zbase32" ,rust-zbase32-0.1)) + #:cargo-development-inputs + (("rust-bindgen" ,rust-bindgen-0.51) ;; FIXME for nettle-sys and rusqlite + ("rust-lalrpop" ,rust-lalrpop-0.17) + ("rust-rpassword" ,rust-rpassword-4)) + #:phases + (modify-phases %standard-phases + ;; Run make instead of using the rust build system, as + ;; suggested by the installation instructions + (replace 'build (lambda _ (invoke "make" "build-release") #t)) + (replace 'check + (lambda* (#:key tests? #:allow-other-keys) + (if tests? + (invoke "make" "check") + #t))) + (replace 'install (lambda _ (invoke "make" "install") #t)) + (add-after 'unpack 'adjust-prefix + (lambda* (#:key outputs #:allow-other-keys) + (setenv "PREFIX" (assoc-ref outputs "out")) + #t)) + (add-after 'unpack 'fix-fo-python-output + (lambda* (#:key outputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out")) + (pyout (assoc-ref outputs "python"))) + (substitute* "ffi/lang/python/Makefile" + ;; adjust prefix for python package + (("PREFIX\\s*\\??=.*") + (string-append "PREFIX = " pyout "\n")) + ;; fix rpath to include the main package + (("\\WLDFLAGS=" text) + (string-append text "'-Wl,-rpath=" out "/lib '")) + ;; make setuptools install into the prefix, see + ;; guix/build/python-build-system.scm for explanation + (("\\ssetup.py\\s+install\\s") + " setup.py install --root=/ --single-version-externally-managed ")) + #t))) + (add-after 'unpack 'fix-pkgconfig-file-substitutes + ;; preempt Makefiles replacing PREFIX by pwd + (lambda* (#:key outputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out"))) + (substitute* "ffi/sequoia.pc.in" + (("PREFIX") out)) + (substitute* "openpgp-ffi/sequoia-openpgp.pc.in" + (("PREFIX") out)) + #t))) + (add-after 'unpack 'set-missing-env-vars + (lambda* (#:key inputs #:allow-other-keys) + ;; FIXME: why do we need to set this here? + (setenv "LIBCLANG_PATH" + (string-append (assoc-ref inputs "clang") "/lib")) + #t))))) + (home-page "https://sequoia-pgp.org") + (synopsis "New OpenPGP implementation") + (description "Sequoia is a new OpenPGP implementation. It consists of +several crates, providing both a low-level and a high-level API for dealing +with OpenPGP data.") + (license license:gpl2+))) diff --git a/gnu/packages/serialization.scm b/gnu/packages/serialization.scm index 861d11a9ed..bee7a2e917 100644 --- a/gnu/packages/serialization.scm +++ b/gnu/packages/serialization.scm @@ -2,12 +2,12 @@ ;;; Copyright © 2015, 2017, 2019 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2016 Lukas Gradl <lgradl@openmailbox.org> ;;; Copyright © 2016 David Craven <david@craven.ch> -;;; Copyright © 2016, 2019 Marius Bakke <mbakke@fastmail.com> +;;; Copyright © 2016, 2019, 2020 Marius Bakke <mbakke@fastmail.com> ;;; Copyright © 2016, 2018, 2019 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2017 Corentin Bocquillon <corentin@nybble.fr> ;;; Copyright © 2017 Gregor Giesen <giesen@zaehlwerk.net> ;;; Copyright © 2017 Frederick M. Muriithi <fredmanglis@gmail.com> -;;; Copyright © 2017 ng0 <ng0@n0.is> +;;; Copyright © 2017 Nikita <nikita@n0.is> ;;; Copyright © 2017, 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2018 Joshua Sierles, Nextjournal <joshua@nextjournal.com> ;;; @@ -40,6 +40,7 @@ #:use-module (gnu packages boost) #:use-module (gnu packages check) #:use-module (gnu packages compression) + #:use-module (gnu packages cmake) #:use-module (gnu packages cpp) #:use-module (gnu packages databases) #:use-module (gnu packages documentation) @@ -296,7 +297,13 @@ that implements both the msgpack and msgpack-rpc specifications.") "037d1b1qdmn3rksmn1j71j26bv4hkjv7sn7da261k853xb5899sg")))) (build-system cmake-build-system) (arguments - `(#:configure-flags '("-DBUILD_SHARED_LIBS:BOOL=YES"))) + `(#:configure-flags '("-DBUILD_SHARED_LIBS:BOOL=YES" + ,@(if (%current-target-system) + `("-DJSONCPP_WITH_POST_BUILD_UNITTEST=OFF") + '())) + ,@(if (%current-target-system) + '() + `(#:cmake ,cmake-bootstrap)))) (synopsis "C++ library for interacting with JSON") (description "JsonCpp is a C++ library that allows manipulating JSON values, including serialization and deserialization to and from strings. It can also @@ -324,7 +331,7 @@ it a convenient format to store user input files.") (define-public capnproto (package (name "capnproto") - (version "0.7.0") + (version "0.8.0") (source (origin (method url-fetch) (uri (string-append @@ -332,7 +339,7 @@ it a convenient format to store user input files.") version ".tar.gz")) (sha256 (base32 - "0hfdnhlbskagzgvby8wy6lrxj53zfzpfqimbhga68c0ji2yw1969")))) + "03f1862ljdshg7d0rg3j7jzgm3ip55kzd2y91q7p0racax3hxx6i")))) (build-system gnu-build-system) (arguments `(#:phases diff --git a/gnu/packages/shells.scm b/gnu/packages/shells.scm index c71e6399ea..b752fb4a90 100644 --- a/gnu/packages/shells.scm +++ b/gnu/packages/shells.scm @@ -6,11 +6,12 @@ ;;; Copyright © 2016, 2017, 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2016 Stefan Reichör <stefan@xsteve.at> ;;; Copyright © 2017, 2018 Ricardo Wurmus <rekado@elephly.net> -;;; Copyright © 2017, 2018 ng0 <ng0@n0.is> +;;; Copyright © 2017, 2018 Nikita <nikita@n0.is> ;;; Copyright © 2017, 2018 Leo Famulari <leo@famulari.name> ;;; Copyright © 2017 Arun Isaac <arunisaac@systemreboot.net> ;;; Copyright © 2019 Meiyo Peng <meiyo.peng@gmail.com> ;;; Copyright © 2019 Timothy Sample <samplet@ngyro.com> +;;; Copyright © 2019 Mathieu Othacehe <m.othacehe@gmail.com> ;;; Copyright © 2019, 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org> ;;; Copyright © 2020 Brice Waegeneire <brice@waegenei.re> ;;; @@ -40,6 +41,7 @@ #:use-module (gnu packages guile) #:use-module (gnu packages libbsd) #:use-module (gnu packages libedit) + #:use-module (gnu packages linux) #:use-module (gnu packages ncurses) #:use-module (gnu packages pcre) #:use-module (gnu packages perl) @@ -48,13 +50,15 @@ #:use-module (gnu packages python-xyz) #:use-module (gnu packages readline) #:use-module (gnu packages scheme) + #:use-module (guix build-system cmake) #:use-module (guix build-system gnu) #:use-module (guix build-system python) #:use-module (guix build-system trivial) #:use-module (guix download) #:use-module (guix git-download) #:use-module (guix licenses) - #:use-module (guix packages)) + #:use-module (guix packages) + #:use-module (guix utils)) (define-public dash (package @@ -95,7 +99,7 @@ direct descendant of NetBSD's Almquist Shell (@command{ash}).") (define-public fish (package (name "fish") - (version "3.0.2") + (version "3.1.0") (source (origin (method url-fetch) @@ -103,38 +107,53 @@ direct descendant of NetBSD's Almquist Shell (@command{ash}).") "releases/download/" version "/" "fish-" version ".tar.gz")) (sha256 - (base32 "03j3jl9jzlnhq4p86zj8wqsh5sx45j1d1fvfa80ks1cfdg68qwhl")))) - (build-system gnu-build-system) + (base32 "0s2356mlx7fp9kgqgw91lm5ds2i9iq9hq071fbqmcp3875l1xnz5")))) + (build-system cmake-build-system) (inputs `(("fish-foreign-env" ,fish-foreign-env) - ("groff" ,groff) ; for 'fish --help' ("ncurses" ,ncurses) ("pcre2" ,pcre2) ; don't use the bundled PCRE2 ("python" ,python))) ; for fish_config and manpage completions (native-inputs - `(("doxygen" ,doxygen))) + `(("doxygen" ,doxygen) + ; for 'fish --help' + ("groff" ,groff))) (arguments - '(#:tests? #f ; no check target - #:phases + '(#:phases (modify-phases %standard-phases - (add-after 'unpack 'patch-source - (lambda _ - (substitute* '("build_tools/build_commands_hdr.sh" - "build_tools/build_user_doc.sh") - (("/usr/bin/env") "env")) - #t)) - ;; Embed absolute paths. - (add-before 'install 'embed-absolute-paths - (lambda _ - (substitute* '("share/functions/__fish_config_interactive.fish" - "share/functions/fish_config.fish" - "share/functions/fish_update_completions.fish") - (("python3") (which "python3"))) - (substitute* "share/functions/__fish_print_help.fish" - (("nroff") (which "nroff"))) - #t)) + (add-after 'unpack 'patch-tests + (lambda* (#:key inputs #:allow-other-keys) + (let ((coreutils (assoc-ref inputs "coreutils")) + (bash (assoc-ref inputs "bash"))) + ;; These try to open a terminal + (delete-file "tests/checks/interactive.fish") + (delete-file "tests/checks/login-interactive.fish") + ;; These contain absolute path references + (substitute* "src/fish_tests.cpp" + (("/bin/echo" echo) (string-append coreutils echo)) + (("/bin/ca" ca) (string-append coreutils ca)) + (("\"(/bin/c)\"" _ c) (string-append "\"" coreutils c "\"")) + (("/bin/ls_not_a_path" ls-not-a-path) + (string-append coreutils ls-not-a-path)) + (("/bin/ls" ls) (string-append coreutils ls)) + (("(/bin/)\"" _ bin) (string-append coreutils bin "\"")) + (("/bin -" bin) (string-append coreutils bin)) + (((string-append + "do_test\\(is_potential_path\\(" + "L\"/usr\", wds, vars, PATH_REQUIRE_DIR\\)\\);")) + "")) + (substitute* + (append (find-files "tests" ".*\\.(in|out|err)$") + (find-files "tests/checks" ".*\\.fish")) + (("/bin/pwd" pwd) (string-append coreutils pwd)) + (("/bin/echo" echo) (string-append coreutils echo)) + (("/bin/sh" sh) (string-append bash sh)) + (("/bin/ls" ls) (string-append coreutils ls))) + (substitute* (find-files "tests" ".*\\.(in|out|err)$") + (("/usr/bin") (string-append coreutils "/bin"))) + #t))) ;; Source /etc/fish/config.fish from $__fish_sysconf_dir/config.fish. - (add-before 'install 'patch-fish-config + (add-after 'patch-tests 'patch-fish-config (lambda _ (let ((port (open-file "etc/config.fish" "a"))) (display (string-append @@ -147,6 +166,12 @@ direct descendant of NetBSD's Almquist Shell (@command{ash}).") port) (close-port port)) #t)) + ;; Embed absolute paths. + (add-before 'install 'embed-absolute-paths + (lambda _ + (substitute* "share/functions/__fish_print_help.fish" + (("nroff") (which "nroff"))) + #t)) ;; Enable completions, functions and configurations in user's and ;; system's guix profiles by adding them to __extra_* variables. (add-before 'install 'patch-fish-extra-paths @@ -335,7 +360,7 @@ written by Paul Haahr and Byron Rakitzis.") (define-public tcsh (package (name "tcsh") - (version "6.20.00") + (version "6.22.02") (source (origin (method url-fetch) ;; Old tarballs are moved to old/. @@ -345,9 +370,8 @@ written by Paul Haahr and Byron Rakitzis.") "old/tcsh-" version ".tar.gz"))) (sha256 (base32 - "17ggxkkn5skl0v1x0j6hbv5l0sgnidfzwv16992sqkdm983fg7dq")) - (patches (search-patches "tcsh-fix-autotest.patch" - "tcsh-fix-out-of-bounds-read.patch")) + "0nw8prz1n0lmr82wnpyhrzmki630afn7p9cfgr3vl00vr9c72a7d")) + (patches (search-patches "tcsh-fix-autotest.patch")) (patch-flags '("-p0")))) (build-system gnu-build-system) (native-inputs @@ -358,6 +382,14 @@ written by Paul Haahr and Byron Rakitzis.") (arguments `(#:phases (modify-phases %standard-phases + ,@(if (%current-target-system) + '((add-before 'configure 'set-cross-cc + (lambda _ + (substitute* "configure" + (("CC_FOR_GETHOST=\"cc\"") + "CC_FOR_GETHOST=\"gcc\"")) + #t))) + '()) (add-before 'check 'patch-test-scripts (lambda _ ;; Take care of pwd @@ -847,3 +879,4 @@ designed to be capable of bootstrapping their standard GNU counterparts. Underpinning these utilities are many Scheme interfaces for manipulating files and text.") (license gpl3+))) + diff --git a/gnu/packages/shellutils.scm b/gnu/packages/shellutils.scm index a5d2601de9..7496dd12dc 100644 --- a/gnu/packages/shellutils.scm +++ b/gnu/packages/shellutils.scm @@ -6,6 +6,7 @@ ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2018 Benjamin Slade <slade@jnanam.net> ;;; Copyright © 2019 Collin J. Doering <collin@rekahsoft.ca> +;;; Copyright © 2020 Michael Rohleder <mike@rohleder.de> ;;; ;;; This file is part of GNU Guix. ;;; @@ -277,7 +278,7 @@ below the current cursor position, scrolling the screen if necessary.") (define-public hstr (package (name "hstr") - (version "2.0") + (version "2.2") (source (origin (method git-fetch) (uri (git-reference @@ -286,7 +287,7 @@ below the current cursor position, scrolling the screen if necessary.") (file-name (git-file-name name version)) (sha256 (base32 - "1y9vsfbg07gbic0daqy569d9pb9i1d07fym3q7a0a99hbng85s20")))) + "07fkilqlkpygvf9kvxyvl58g3lfq0bwwdp3wczy4hk8qlbhmgihn")))) (build-system gnu-build-system) (arguments `(#:phases diff --git a/gnu/packages/simulation.scm b/gnu/packages/simulation.scm index 2f07e996a2..8d5788545f 100644 --- a/gnu/packages/simulation.scm +++ b/gnu/packages/simulation.scm @@ -479,8 +479,7 @@ FFC is part of the FEniCS Project.") ("petsc" ,petsc-openmpi) ("slepc" ,slepc-openmpi))) (arguments - `(#:cmake ,cmake-3.15.5 - #:configure-flags + `(#:configure-flags `("-DDOLFIN_ENABLE_DOCS:BOOL=OFF" "-DDOLFIN_ENABLE_HDF5:BOOL=ON" "-DDOLFIN_ENABLE_MPI:BOOL=ON" diff --git a/gnu/packages/sphinx.scm b/gnu/packages/sphinx.scm index ff5d8e5de7..f27f9d0176 100644 --- a/gnu/packages/sphinx.scm +++ b/gnu/packages/sphinx.scm @@ -1,6 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2014 David Thompson <davet@gnu.org> -;;; Copyright © 2015, 2017, 2019 Ricardo Wurmus <rekado@elephly.net> +;;; Copyright © 2015, 2017, 2019, 2020 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2015, 2016, 2017 Leo Famulari <leo@famulari.name> ;;; Copyright © 2016 Hartmut Goebel <h.goebel@crazy-compilers.com> ;;; Copyright © 2016, 2017, 2018, 2019 Marius Bakke <mbakke@fastmail.com> @@ -597,3 +597,49 @@ to be able to read and render the Doxygen xml output.") "A utility tool that provides several features that make it easy to translate and to apply translation to Sphinx generated document.") (license license:bsd-2))) + +(define-public python-sphinx-autobuild + (package + (name "python-sphinx-autobuild") + (version "0.7.1") + (source + (origin + (method url-fetch) + (uri (pypi-uri "sphinx-autobuild" version)) + (sha256 + (base32 + "0kn753dyh3b1s0h77lbk704niyqc7bamvq6v3s1f6rj6i20qyf36")))) + (build-system python-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + ;; See https://github.com/GaretJax/sphinx-autobuild/pull/72 + (add-after 'unpack 'use-later-port-for + (lambda _ + (substitute* "requirements.txt" + (("port_for==.*") "port_for\n")) + #t)) + (delete 'check) + (add-after 'install 'check + (lambda* (#:key inputs outputs tests? #:allow-other-keys) + (when tests? + (add-installed-pythonpath inputs outputs) + (invoke "pytest" "-v")) + #t))))) + (propagated-inputs + `(("python-argh" ,python-argh) + ("python-livereload" ,python-livereload) + ("python-pathtools" ,python-pathtools) + ("python-port-for" ,python-port-for) + ("python-pyyaml" ,python-pyyaml) + ("python-tornado" ,python-tornado) + ("python-watchdog" ,python-watchdog))) + (native-inputs + `(("python-pytest" ,python-pytest))) + (home-page "https://github.com/GaretJax/sphinx-autobuild") + (synopsis "Rebuild Sphinx documentation when a change is detected") + (description + "This package lets you watch a Sphinx directory and rebuild the +documentation when a change is detected. It also includes a livereload +enabled web server.") + (license license:expat))) diff --git a/gnu/packages/spice.scm b/gnu/packages/spice.scm index 3445c64924..29a024c8a9 100644 --- a/gnu/packages/spice.scm +++ b/gnu/packages/spice.scm @@ -2,7 +2,7 @@ ;;; Copyright © 2016 David Craven <david@craven.ch> ;;; Copyright © 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2019 Rutger Helling <rhelling@mykolab.com> -;;; Copyright © 2019 Marius Bakke <mbakke@fastmail.com> +;;; Copyright © 2019, 2020 Marius Bakke <mbakke@fastmail.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -21,6 +21,7 @@ (define-module (gnu packages spice) #:use-module (gnu packages) + #:use-module (gnu packages base) #:use-module (gnu packages compression) #:use-module (gnu packages cyrus-sasl) #:use-module (gnu packages gl) @@ -31,9 +32,11 @@ #:use-module (gnu packages image) #:use-module (gnu packages libusb) #:use-module (gnu packages linux) + #:use-module (gnu packages nss) #:use-module (gnu packages pkg-config) #:use-module (gnu packages pulseaudio) #:use-module (gnu packages python) + #:use-module (gnu packages security-token) #:use-module (gnu packages tls) #:use-module (gnu packages xorg) #:use-module (gnu packages xdisorg) @@ -146,7 +149,7 @@ which allows users to view a desktop computing environment.") ("gobject-introspection" ,gobject-introspection) ("json-glib" ,json-glib) ("libepoxy" ,libepoxy) - ("libjpeg" ,libjpeg) + ("libjpeg" ,libjpeg-turbo) ("libxcb" ,libxcb) ("lz4" ,lz4) ("mesa" ,mesa) @@ -175,6 +178,16 @@ which allows users to view a desktop computing environment.") (substitute* "tests/Makefile" (("test-session\\$\\(EXEEXT\\) ") "")) #t)) + (add-after 'install 'patch-la-files + (lambda* (#:key inputs outputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out")) + (libjpeg (assoc-ref inputs "libjpeg"))) + ;; Add an absolute reference for libjpeg in the .la files + ;; so it does not have to be propagated. + (substitute* (find-files (string-append out "/lib") "\\.la$") + (("-ljpeg") + (string-append "-L" libjpeg "/lib -ljpeg"))) + #t))) (add-after 'install 'wrap-spicy (lambda* (#:key inputs outputs #:allow-other-keys) @@ -209,6 +222,7 @@ which allows users to view a desktop computing environment.") `(("cyrus-sasl" ,cyrus-sasl) ("glib" ,glib) ("libjpeg-turbo" ,libjpeg-turbo) + ("libcacard" ,libcacard) ; smartcard support ("lz4" ,lz4) ("opus" ,opus) ("orc" ,orc) @@ -287,6 +301,51 @@ resolution scaling on graphical console window resize.") (home-page "https://www.spice-space.org") (license license:gpl3+))) +(define-public libcacard + (package + (name "libcacard") + (version "2.7.0") + (source (origin + (method url-fetch) + (uri (string-append + "https://gitlab.freedesktop.org/spice/libcacard/uploads/" + "56cb2499198e78e560a1d4c716cd8ab1" + "/libcacard-" version ".tar.xz")) + (sha256 + (base32 + "0vyvkk4b6xjwq1ccggql13c1x7g4y90clpkqw28257azgn2a1c8n")))) + (build-system gnu-build-system) + (arguments + '(#:tests? #f ; TODO Tests require gnutls built with + ; p11-kit + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'patch-tests + (lambda* (#:key inputs #:allow-other-keys) + (substitute* "tests/setup-softhsm2.sh" + (("\\/usr\\/lib64\\/pkcs11\\/libsofthsm2\\.so") + (string-append (assoc-ref inputs "softhsm") + "/lib/softhsm/libsofthsm2.so"))) + #t))))) + (propagated-inputs + `(("glib" ,glib) ; Requires: in the pkg-config file + ("nss" ,nss))) ; Requires.private: in the pkg-config + ; file + (native-inputs + `(("openssl" ,openssl) + ("nss" ,nss "bin") + ("opensc" ,opensc) + ("softhsm" ,softhsm) + ("gnutls" ,gnutls) + ("pkg-config" ,pkg-config) + ("which" ,which))) + (synopsis "Emulate and share smart cards with virtual machines") + (description + "The @acronym{CAC,Common Access Card} library can be used to emulate and +share smart cards from client system to local or remote virtual machines.") + (home-page "https://gitlab.freedesktop.org/spice/libcacard") + (license license:lgpl2.1+))) + (define-public virt-viewer (package (name "virt-viewer") diff --git a/gnu/packages/sqlite.scm b/gnu/packages/sqlite.scm index 6d6df17f90..8468131ddf 100644 --- a/gnu/packages/sqlite.scm +++ b/gnu/packages/sqlite.scm @@ -6,7 +6,7 @@ ;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2016 Ben Woodcroft <donttrustben@gmail.com> ;;; Copyright © 2016 David Craven <david@craven.ch> -;;; Copyright © 2016, 2017, 2018 Marius Bakke <mbakke@fastmail.com> +;;; Copyright © 2016, 2017, 2018, 2019, 2020 Marius Bakke <mbakke@fastmail.com> ;;; Copyright © 2017 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2017 Jelle Licht <jlicht@fsfe.org> ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr> @@ -46,7 +46,7 @@ (define-public sqlite (package (name "sqlite") - (version "3.28.0") + (version "3.31.1") (source (origin (method url-fetch) (uri (let ((numeric-version @@ -58,13 +58,14 @@ (map (cut string-pad <> 2 #\0) other-digits)) 6 #\0)))))) - (string-append "https://sqlite.org/2019/sqlite-autoconf-" + (string-append "https://sqlite.org/2020/sqlite-autoconf-" numeric-version ".tar.gz"))) (sha256 (base32 - "1hxpi45crbqp6lacl7z611lna02k956m9bsy2bjzrbb2y23546yn")))) + "1bj936svd8i5g25xd1bj52hj4zca01fgl3sqkj86z9q5pkz4wa32")))) (build-system gnu-build-system) (inputs `(("readline" ,readline))) + (outputs '("out" "static")) (arguments `(#:configure-flags ;; Add -DSQLITE_SECURE_DELETE, -DSQLITE_ENABLE_FTS3, @@ -74,7 +75,25 @@ (list (string-append "CFLAGS=-O2 -DSQLITE_SECURE_DELETE " "-DSQLITE_ENABLE_FTS3 " "-DSQLITE_ENABLE_UNLOCK_NOTIFY " - "-DSQLITE_ENABLE_DBSTAT_VTAB")))) + "-DSQLITE_ENABLE_DBSTAT_VTAB " + ;; Column metadata is required by GNU Jami and Qt, et.al. + "-DSQLITE_ENABLE_COLUMN_METADATA")) + #:phases (modify-phases %standard-phases + (add-after 'install 'move-static-library + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (static (assoc-ref outputs "static")) + (source (string-append out "/lib/libsqlite3.a"))) + (mkdir-p (string-append static "/lib")) + (link source (string-append static "/lib/libsqlite3.a")) + (delete-file source) + + ;; Remove reference to the static library from the .la file + ;; so that Libtool looks for it in the usual places. + (substitute* (string-append out "/lib/libsqlite3.la") + (("^old_library=.*") + "old_library=''\n")) + #t)))))) (home-page "https://www.sqlite.org/") (synopsis "The SQLite database management system") (description @@ -84,14 +103,7 @@ widely deployed SQL database engine in the world. The source code for SQLite is in the public domain.") (license license:public-domain))) -;; This is used by Qt. +;; Column metadata support was added to the regular 'sqlite' package with +;; commit fad5b1a6d8d9c36bea5785ae4fbc1beb37e644d7. (define-public sqlite-with-column-metadata - (package/inherit sqlite - (name "sqlite-with-column-metadata") - (arguments - (substitute-keyword-arguments (package-arguments sqlite) - ((#:configure-flags flags) - `(list (string-append "CFLAGS=-O2 -DSQLITE_SECURE_DELETE " - "-DSQLITE_ENABLE_UNLOCK_NOTIFY " - "-DSQLITE_ENABLE_DBSTAT_VTAB " - "-DSQLITE_ENABLE_COLUMN_METADATA"))))))) + (deprecated-package "sqlite-with-column-metadata" sqlite)) diff --git a/gnu/packages/ssh.scm b/gnu/packages/ssh.scm index e9ac5bd095..ec5c4d5a18 100644 --- a/gnu/packages/ssh.scm +++ b/gnu/packages/ssh.scm @@ -9,10 +9,11 @@ ;;; Copyright © 2017, 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2017 Stefan Reichör <stefan@xsteve.at> ;;; Copyright © 2017 Ricardo Wurmus <rekado@elephly.net> -;;; Copyright © 2017 ng0 <ng0@n0.is> +;;; Copyright © 2017 Nikita <nikita@n0.is> ;;; Copyright © 2018 Manuel Graf <graf@init.at> ;;; Copyright © 2019 Gábor Boskovits <boskovits@gmail.com> -;;; Copyright © 2020 Mathieu Othacehe <m.othacehe@gmail.com> +;;; Copyright © 2019, 2020 Mathieu Othacehe <m.othacehe@gmail.com> +;;; Copyright © 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org> ;;; ;;; This file is part of GNU Guix. ;;; @@ -42,6 +43,7 @@ #:use-module (gnu packages groff) #:use-module (gnu packages guile) #:use-module (gnu packages libedit) + #:use-module (gnu packages hurd) #:use-module (gnu packages linux) #:use-module (gnu packages logging) #:use-module (gnu packages m4) @@ -136,6 +138,7 @@ a server that supports the SSH-2 protocol.") (method url-fetch) (uri (string-append "mirror://openbsd/OpenSSH/portable/" "openssh-" version ".tar.gz")) + (patches (search-patches "openssh-hurd.patch")) (sha256 (base32 "0wg6ckzvvklbzznijxkk28fb8dnwyjd0w30ra0afwv6gwr8m34j3")))) @@ -147,7 +150,9 @@ a server that supports the SSH-2 protocol.") ("pam" ,linux-pam) ("mit-krb5" ,mit-krb5) ("zlib" ,zlib) - ("xauth" ,xauth))) ; for 'ssh -X' and 'ssh -Y' + ,@(if (hurd-target?) + '() + `(("xauth" ,xauth))))) ; for 'ssh -X' and 'ssh -Y' (arguments `(#:test-target "tests" ;; Otherwise, the test scripts try to use a nonexistent directory and @@ -167,7 +172,15 @@ a server that supports the SSH-2 protocol.") "--with-libedit" ;; Enable PAM support in sshd. - "--with-pam") + "--with-pam" + + ;; "make install" runs "install -s" by default, + ;; which doesn't work for cross-compiled binaries + ;; because it invokes 'strip' instead of + ;; 'TRIPLET-strip'. Work around this. + ,,@(if (%current-target-system) + '("--disable-strip") + '())) #:phases (modify-phases %standard-phases @@ -293,8 +306,8 @@ Additionally, various channel-specific options can be negotiated.") ("texinfo" ,texinfo) ("pkg-config" ,pkg-config) ("which" ,which) - ("guile" ,guile-2.2))) ;needed when cross-compiling. - (inputs `(("guile" ,guile-2.2) + ("guile" ,guile-3.0))) ;needed when cross-compiling. + (inputs `(("guile" ,guile-3.0) ("libssh" ,libssh) ("libgcrypt" ,libgcrypt))) (synopsis "Guile bindings to libssh") @@ -314,16 +327,19 @@ libssh library.") (inputs `(("guile" ,guile-2.0) ,@(alist-delete "guile" (package-inputs guile-ssh)))))) -(define-public guile3.0-ssh +(define-public guile2.2-ssh (package (inherit guile-ssh) - (name "guile3.0-ssh") + (name "guile2.2-ssh") (native-inputs - `(("guile" ,guile-next) ;needed when cross-compiling. + `(("guile" ,guile-2.2) ;needed when cross-compiling. ,@(alist-delete "guile" (package-native-inputs guile-ssh)))) - (inputs `(("guile" ,guile-next) + (inputs `(("guile" ,guile-2.2) ,@(alist-delete "guile" (package-inputs guile-ssh)))))) +(define-public guile3.0-ssh + (deprecated-package "guile3.0-ssh" guile-ssh)) + (define-public corkscrew (package (name "corkscrew") diff --git a/gnu/packages/sssd.scm b/gnu/packages/sssd.scm index 7c19d1f53f..8be3fbfd89 100644 --- a/gnu/packages/sssd.scm +++ b/gnu/packages/sssd.scm @@ -165,7 +165,7 @@ fundamental object types for C.") ("libxml2" ,libxml2) ; for xmllint ("libxslt" ,libxslt) ("pkg-config" ,pkg-config) - ("util-linux" ,util-linux))) ; for uuid.h, reqired for KCM + ("util-linux" ,util-linux "lib"))) ;for uuid.h, reqired for KCM (home-page "https://pagure.io/SSSD/sssd/") (synopsis "System security services daemon") (description "SSSD is a system daemon. Its primary function is to provide diff --git a/gnu/packages/statistics.scm b/gnu/packages/statistics.scm index 6bf952734c..224c19cea3 100644 --- a/gnu/packages/statistics.scm +++ b/gnu/packages/statistics.scm @@ -11,6 +11,7 @@ ;;; Copyright © 2017, 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2017 Alex Kost <alezost@gmail.com> ;;; Copyright © 2018 Alex Branham <alex.branham@gmail.com> +;;; Copyright © 2020 Tim Howes <timhowes@lavabit.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -351,7 +352,7 @@ as.POSIXct(if (\"\" != Sys.getenv(\"SOURCE_DATE_EPOCH\")) {\ ("openblas" ,openblas) ("gfortran" ,gfortran) ("icu4c" ,icu4c) - ("libjpeg" ,libjpeg) + ("libjpeg" ,libjpeg-turbo) ("libpng" ,libpng) ("libtiff" ,libtiff) ("libxt" ,libxt) @@ -407,14 +408,14 @@ available, greatly increasing its breadth and scope.") (define-public r-boot (package (name "r-boot") - (version "1.3-24") + (version "1.3-25") (source (origin (method url-fetch) (uri (cran-uri "boot" version)) (sha256 (base32 - "0yv0l55kjmlfdx1xhgyjdi0bskxhfal74wr5jxaib1qj99nmkm49")))) + "1gpvi1h3nqhnnsfy96rlhakdpj84iqqsxr29rr3261sknky3aj26")))) (build-system r-build-system) (home-page "https://cran.r-project.org/web/packages/boot") (synopsis "Bootstrap functions for R") @@ -428,14 +429,14 @@ D.V. Hinkley (1997, CUP), originally written by Angelo Canty for S.") (define-public r-mass (package (name "r-mass") - (version "7.3-51.5") + (version "7.3-51.6") (source (origin (method url-fetch) (uri (cran-uri "MASS" version)) (sha256 (base32 - "1k0m7pa4gb5apzrrkb5kx5d7bmkm2pl5g15vwb6j067hrqahck26")))) + "1viyxy22qp8abzzzlbck55b0i81rrdygim1dq2pm52s2v13mq0z2")))) (properties `((upstream-name . "MASS"))) (build-system r-build-system) (home-page "http://www.stats.ox.ac.uk/pub/MASS4/") @@ -449,14 +450,14 @@ Applied Statistics with S\" (4th edition, 2002) by Venables and Ripley.") (define-public r-class (package (name "r-class") - (version "7.3-16") + (version "7.3-17") (source (origin (method url-fetch) (uri (cran-uri "class" version)) (sha256 (base32 - "1jpdgj0lsi60q0mqbhfw809w8d66whix27y6wpdzll6775g3j3ll")))) + "04qk8qia0qr8893fizmkbd5hsqn6m8383c0cyn9xnmkmvyv8a7xy")))) (build-system r-build-system) (propagated-inputs `(("r-mass" ,r-mass))) @@ -512,14 +513,14 @@ code for possible problems.") (define-public r-foreign (package (name "r-foreign") - (version "0.8-78") + (version "0.8-79") (source (origin (method url-fetch) (uri (cran-uri "foreign" version)) (sha256 (base32 - "01anirfbfa3ip5pyqv72cg4x7p0jsppmbvxrllw7bm28fl1hgiyq")))) + "1d5rk4k3khjrir1b4ciridd6vdpcgzi35r7p7ra4ky7vbaabcdmg")))) (build-system r-build-system) (home-page "https://cran.r-project.org/web/packages/foreign") (synopsis "Read data stored by other statistics software") @@ -532,14 +533,14 @@ for reading and writing some dBase files.") (define-public r-kernsmooth (package (name "r-kernsmooth") - (version "2.23-16") + (version "2.23-17") (source (origin (method url-fetch) (uri (cran-uri "KernSmooth" version)) (sha256 (base32 - "1acrkbdn3a74y4dndkcdl1njnpfqz7gk3bsz03g8lfj8l7z53hmq")))) + "11g6b0q67vasxag6v9m4px33qqxpmnx47c73yv1dninv2pz76g9b")))) (properties `((upstream-name . "KernSmooth"))) (build-system r-build-system) (native-inputs @@ -643,14 +644,14 @@ distributions beyond the exponential family.") (define-public r-nnet (package (name "r-nnet") - (version "7.3-13") + (version "7.3-14") (source (origin (method url-fetch) (uri (cran-uri "nnet" version)) (sha256 (base32 - "1z0rj5cm4ycw1y0gd5wwwg8c2298v90iybgqdqh17967jbi2125f")))) + "1bzl62p5awva5kxcncs6lrdrkqp9ljd993zia731ckfpcjbrw6sx")))) (build-system r-build-system) (home-page "http://www.stats.ox.ac.uk/pub/MASS4/") (synopsis "Feed-forward neural networks and multinomial log-linear models") @@ -681,14 +682,14 @@ classification, regression and survival trees.") (define-public r-spatial (package (name "r-spatial") - (version "7.3-11") + (version "7.3-12") (source (origin (method url-fetch) (uri (cran-uri "spatial" version)) (sha256 (base32 - "04aw8j533sn63ybyrf4hyhrqm4058vfcb7yhjy07kq92mk94hi32")))) + "0qrdhzd5r78iwi46nk8jr56dzz5l5imkflxjw64d0ys0wyg06fbn")))) (build-system r-build-system) (home-page "http://www.stats.ox.ac.uk/pub/MASS4/") (synopsis "Functions for kriging and point pattern analysis") @@ -1614,13 +1615,13 @@ defined in different packages.") (define-public r-rlang (package (name "r-rlang") - (version "0.4.5") + (version "0.4.6") (source (origin (method url-fetch) (uri (cran-uri "rlang" version)) (sha256 (base32 - "1a0h3dr519p3jj6aygbhwi9f2zwlan6d07f1gkh2db56y5vaq7yd")))) + "1jik4lywg4688dfi5fh8jbnmsxvq3382ii0nsw5armjzfq3v309s")))) (build-system r-build-system) (home-page "http://rlang.tidyverse.org") (synopsis "Functions for base types, core R and Tidyverse features") @@ -2370,13 +2371,13 @@ functions make it easy to control additional request components.") (define-public r-git2r (package (name "r-git2r") - (version "0.26.1") + (version "0.27.1") (source (origin (method url-fetch) (uri (cran-uri "git2r" version)) (sha256 (base32 - "0dbl845sahv2i641ncaf06w06djravwc5wknp9syzx0ad8l0kmhk")))) + "1h1vfzym6hi1fqs9p5z5v0f4xldggr425frw8k6dsidah3qhg4h9")))) (build-system r-build-system) (inputs `(("libgit2" ,libgit2) @@ -2588,13 +2589,13 @@ well as additional utilities such as panel and axis annotation functions.") (define-public r-rcpparmadillo (package (name "r-rcpparmadillo") - (version "0.9.860.2.0") + (version "0.9.870.2.0") (source (origin (method url-fetch) (uri (cran-uri "RcppArmadillo" version)) (sha256 (base32 - "1rg9ak0zbv8d9cyj10jq52nrcbk1pvfz28kbkhpx79mpjhrl7pb5")))) + "1r7iajxvbyvslsy16rqacc95azmjciw9lvcq31xl97fl09kmsq5v")))) (properties `((upstream-name . "RcppArmadillo"))) (build-system r-build-system) (propagated-inputs @@ -3669,14 +3670,14 @@ more complete @code{viridis} package.") (define-public r-tidyselect (package (name "r-tidyselect") - (version "1.0.0") + (version "1.1.0") (source (origin (method url-fetch) (uri (cran-uri "tidyselect" version)) (sha256 (base32 - "1bwwsljkg1bxh7xnqxv7n0n1s9y8x407i6lsv826vy1ss1k1fxpy")))) + "14rqx4dq574hilmdwrr34wyjg8rlw4rvndpsqd9plgxm3wwfsdg6")))) (build-system r-build-system) (propagated-inputs `(("r-ellipsis" ,r-ellipsis) @@ -3684,6 +3685,8 @@ more complete @code{viridis} package.") ("r-purrr" ,r-purrr) ("r-rlang" ,r-rlang) ("r-vctrs" ,r-vctrs))) + (native-inputs + `(("r-knitr" ,r-knitr))) (home-page "https://cran.r-project.org/web/packages/tidyselect") (synopsis "Select from a set of strings") (description @@ -3696,14 +3699,14 @@ selection.") (define-public r-tidyr (package (name "r-tidyr") - (version "1.0.2") + (version "1.0.3") (source (origin (method url-fetch) (uri (cran-uri "tidyr" version)) (sha256 (base32 - "0safj8bcf8libwr0jx4059bmarngvhfddrcv8k5iw39m9lpxs0r4")))) + "18ypk63nifp5jj5d9880m49zdv7n4a18gac59wj5z5xk6qr7vfal")))) (build-system r-build-system) (propagated-inputs `(("r-dplyr" ,r-dplyr) @@ -3718,6 +3721,8 @@ selection.") ("r-stringi" ,r-stringi) ("r-tibble" ,r-tibble) ("r-vctrs" ,r-vctrs))) + (native-inputs + `(("r-knitr" ,r-knitr))) (home-page "https://github.com/hadley/tidyr") (synopsis "Tidy data with `spread()` and `gather()` functions") (description @@ -4112,14 +4117,14 @@ existing packages provide.") (define-public r-sfsmisc (package (name "r-sfsmisc") - (version "1.1-6") + (version "1.1-7") (source (origin (method url-fetch) (uri (cran-uri "sfsmisc" version)) (sha256 (base32 - "04fvjdab6vyyghyqy0abxvfbyr1myz6yib7ibwiyjw9yf7fjrcjp")))) + "12g6m8sf17q3qmm133nm4fa296w5n5d9ly3fvb2nvc0w4llkif3l")))) (build-system r-build-system) (home-page "https://cran.r-project.org/web/packages/sfsmisc") (synopsis "Utilities from \"Seminar fuer Statistik\" ETH Zurich") @@ -4241,18 +4246,20 @@ including: (define-public r-rocr (package (name "r-rocr") - (version "1.0-7") + (version "1.0-11") (source (origin (method url-fetch) (uri (cran-uri "ROCR" version)) (sha256 (base32 - "1jay8cm7lgq56i967vm5c2hgaxqkphfpip0gn941li3yhh7p3vz7")))) + "0amvvrkiflmr3qygrsgrsja4gaf2v6r6h6i2bgpsm8r069vmlf2p")))) (properties `((upstream-name . "ROCR"))) (build-system r-build-system) (propagated-inputs `(("r-gplots" ,r-gplots))) + (native-inputs + `(("r-knitr" ,r-knitr))) (home-page "https://rocr.bioinf.mpi-sb.mpg.de/") (synopsis "Visualizing the performance of scoring classifiers") (description @@ -4271,13 +4278,13 @@ mechanism.") (define-public r-zoo (package (name "r-zoo") - (version "1.8-7") + (version "1.8-8") (source (origin (method url-fetch) (uri (cran-uri "zoo" version)) (sha256 (base32 - "1w4542zs53bm261g95086a60576v334g1jrhnbgdqni4izf2s1wy")))) + "1rrw431jwaxd9xljp73f15rhcxvwc0xlyrmr0ghi5fj7a03c932f")))) (build-system r-build-system) (propagated-inputs `(("r-lattice" ,r-lattice))) @@ -4957,16 +4964,16 @@ groupings.") (define-public r-vgam (package (name "r-vgam") - (version "1.1-2") + (version "1.1-3") (source (origin (method url-fetch) (uri (cran-uri "VGAM" version)) (sha256 - (base32 "0kyan3a4ys2xbg9kf167cyf1gk7g963id62cjm2ij4i7y4wi61zq")))) + (base32 "1hwlrdx3nhdp83pvy1h23i16vbbhi4kizdhr58c8nvg7kqdzb7qc")))) (properties `((upstream-name . "VGAM"))) (build-system r-build-system) - (inputs + (native-inputs `(("gfortran" ,gfortran))) (home-page "https://www.stat.auckland.ac.nz/~yee/VGAM") (synopsis "Vector generalized linear and additive models") @@ -5280,14 +5287,14 @@ even in multithreaded code, typically using OpenMP.") (define-public r-mnormt (package (name "r-mnormt") - (version "1.5-6") + (version "1.5-7") (source (origin (method url-fetch) (uri (cran-uri "mnormt" version)) (sha256 (base32 - "0k8y08gj6z525yvc7y3dl2kzgnafbj3i7lvpamypsmqxf74zql99")))) + "1y0vlvh02wza2wvfd29wxjlw3jg9rnwnx3kph5qz4179kz87fgfg")))) (build-system r-build-system) (native-inputs `(("gfortran" ,gfortran))) @@ -5786,42 +5793,51 @@ Java package that provides routines for various statistical distributions.") (define-public emacs-ess (package (name "emacs-ess") - (version "17.11") + (version "18.10.2") (source (origin - (method url-fetch) - (uri (string-append "https://github.com/emacs-ess/ESS/archive/v" - version ".tar.gz")) + (method git-fetch) + (uri (git-reference + (url "https://github.com/emacs-ess/ESS") + (commit (string-append "v" version)))) (sha256 (base32 - "0cbilbsiwvcyf6d5y24mymp57m3ana5dkzab3knfs83w4a3a4c5c")) - (file-name (string-append name "-" version ".tar.gz")) + "1yq41l2bicwjrc0b731iic20cpcnz6ppigri1jn621qv2qv22vy3")) + (file-name (git-file-name name version)) (modules '((guix build utils))) (snippet '(begin ;; Stop ESS from trying to bundle an external julia-mode.el. (substitute* "lisp/Makefile" - (("^\tjulia-mode.elc\\\\\n") "") - (("^dist: all julia-mode.el") - "dist: all")) - ;; No need to build docs in so many formats. Also, skipping - ;; pdf lets us not pull in texlive. + (("^ess-julia.elc: julia-mode.elc") "") + (("^all: julia-mode.el") + "all:")) + ;; Include *.el files in install target. + (substitute* "lisp/Makefile" + (("\t\\$\\(INSTALL) \\$\\(ELC\\) \\$\\(LISPDIR\\)" elc) + (string-append "\t$(INSTALL) $(ELS) ess-autoloads.el " + "$(LISPDIR)\n" elc))) + ;; Only build docs in info format. (substitute* "doc/Makefile" - (("all : info text html pdf") + (("all : info text") "all : info") (("install: install-info install-other-docs") "install: install-info")) - ;; Test fails upstream + ;; Stop install-info from trying to update the info directory. + (substitute* "doc/Makefile" + ((".*\\$\\(INFODIR\\)/dir.*") "")) + ;; Fix roxygen preview test. (substitute* "test/ess-r-tests.el" - (("ert-deftest ess-r-namespaced-eval-no-srcref-in-errors ()") - "ert-deftest ess-r-namespaced-eval-no-srcref-in-errors () :expected-result :failed")) + (("Add together two numbers.\n") + "Add together two numbers. ") + (("##' add\\(10, 1\\)") "add(10, 1)")) #t)))) (build-system gnu-build-system) (arguments (let ((base-directory "/share/emacs/site-lisp")) `(#:make-flags (list (string-append "PREFIX=" %output) - (string-append "ETCDIR=" %output "/" + (string-append "ETCDIR=" %output ,base-directory "/etc") - (string-append "LISPDIR=" %output "/" + (string-append "LISPDIR=" %output ,base-directory)) #:phases (modify-phases %standard-phases @@ -5840,6 +5856,7 @@ Java package that provides routines for various statistical distributions.") ("r-minimal" ,r-minimal))) (native-inputs `(("perl" ,perl) + ("r-roxygen2" ,r-roxygen2) ("texinfo" ,texinfo))) (propagated-inputs `(("emacs-julia-mode" ,emacs-julia-mode))) diff --git a/gnu/packages/storage.scm b/gnu/packages/storage.scm index 376a801fe2..481ffade5c 100644 --- a/gnu/packages/storage.scm +++ b/gnu/packages/storage.scm @@ -53,14 +53,14 @@ (define-public ceph (package (name "ceph") - (version "14.2.8") + (version "14.2.9") (source (origin (method url-fetch) (uri (string-append "https://download.ceph.com/tarballs/ceph-" version ".tar.gz")) (sha256 (base32 - "0p7pjycqhxqg1mmix8ykx3xqq01d560p54iiidxps0rcvwfkyyki")) + "0zkh1a23v8g1fa5flqa2d53lv08ancab3li57gybpqpnja90k7il")) (patches (search-patches "ceph-disable-cpu-optimizations.patch")) (modules '((guix build utils))) @@ -200,7 +200,7 @@ ("python-sphinx" ,python-sphinx) ("yasm" ,yasm))) (inputs - `(("boost" ,boost-with-python3) + `(("boost" ,boost) ("curl" ,curl) ("cryptsetup" ,cryptsetup) ("expat" ,expat) @@ -229,6 +229,7 @@ ("snappy" ,snappy) ("udev" ,eudev) ("util-linux" ,util-linux) + ("util-linux:lib" ,util-linux "lib") ("xfsprogs" ,xfsprogs) ("zlib" ,zlib))) (home-page "https://ceph.com/") diff --git a/gnu/packages/suckless.scm b/gnu/packages/suckless.scm index f0055cc0cc..0cf334d7e0 100644 --- a/gnu/packages/suckless.scm +++ b/gnu/packages/suckless.scm @@ -2,7 +2,7 @@ ;;; Copyright © 2013 Cyril Roelandt <tipecaml@gmail.com> ;;; Copyright © 2015 Amirouche Boubekki <amirouche@hypermove.net> ;;; Copyright © 2016 Al McElrath <hello@yrns.org> -;;; Copyright © 2016, 2017 ng0 <ng0@n0.is> +;;; Copyright © 2016, 2017 Nikita <nikita@n0.is> ;;; Copyright © 2015 Dmitry Bogatov <KAction@gnu.org> ;;; Copyright © 2015 Leo Famulari <leo@famulari.name> ;;; Copyright © 2016 Eric Bavier <bavier@member.fsf.org> diff --git a/gnu/packages/swig.scm b/gnu/packages/swig.scm index b1b17fc68d..86c1407da9 100644 --- a/gnu/packages/swig.scm +++ b/gnu/packages/swig.scm @@ -2,6 +2,8 @@ ;;; Copyright © 2013, 2015, 2016 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2015 Mark H Weaver <mhw@netris.org> ;;; Copyright © 2018 Marius Bakke <mbakke@fastmail.com> +;;; Copyright © 2019 Efraim Flashner <efraim@flashner.co.il> +;;; Copyright © 2020 Arun Isaac <arunisaac@systemreboot.net> ;;; ;;; This file is part of GNU Guix. ;;; @@ -24,34 +26,28 @@ #:use-module (guix licenses) #:use-module (guix build-system gnu) #:use-module (gnu packages) - #:use-module (gnu packages pcre) - #:use-module (gnu packages guile) #:use-module (gnu packages boost) - #:use-module (gnu packages python) - #:use-module (gnu packages perl)) + #:use-module (gnu packages guile) + #:use-module (gnu packages pcre) + #:use-module (gnu packages perl) + #:use-module (gnu packages python)) (define-public swig (package (name "swig") - (version "3.0.12") + (version "4.0.1") (source (origin (method url-fetch) (uri (string-append "mirror://sourceforge/" name "/" name "/" name "-" version "/" name "-" version ".tar.gz")) - (patches (search-patches "swig-guile-gc.patch")) (sha256 (base32 - "0kf99ygrjs5616gsqhz1l7bib3a12izmxi7g48bwblbymr3z9ybw")))) + "1ac7g0gd8ndwv3ybqn5vjgqxa7090bby4db164a7mn9ssp8b803s")))) (build-system gnu-build-system) (arguments '(#:phases (modify-phases %standard-phases - (add-after 'unpack 'set-env - ;; Required since Perl 5.26.0's removal of the current - ;; working directory from @INC. - ;; TODO Try removing this for later versions of SWIG. - (lambda _ (setenv "PERL_USE_UNSAFE_INC" "1") #t)) (add-before 'configure 'workaround-gcc-bug (lambda _ ;; XXX: Don't add the -isystem flag, or GCCs #include_next @@ -60,17 +56,12 @@ (("-isystem ") "-I")) #t))))) (native-inputs `(("boost" ,boost) - ("pcre" ,pcre "bin"))) ;for 'pcre-config' - (inputs `(;; Provide these to run the corresponding tests. - ("guile" ,guile-2.0) - ("perl" ,perl))) - ;; FIXME: reactivate input python as soon as the test failures - ;; fatal error: Python.h: No such file or directory - ;; # include <Python.h> - ;; are fixed. - ;; The python part probably never worked and does not seem to - ;; be needed for currently dependent packages. -;; ("python" ,python-wrapper))) + ("pcre" ,pcre "bin") ;for 'pcre-config' + ;; The following are for tests and examples: + ("guile" ,guile-3.0) + ("perl" ,perl))) + ;;("python" ,python-wrapper) + (inputs `(("pcre" ,pcre))) (home-page "http://swig.org/") (synopsis "Interface compiler that connects C/C++ code to higher-level languages") diff --git a/gnu/packages/synergy.scm b/gnu/packages/synergy.scm index 367bb323b3..739ea3bd75 100644 --- a/gnu/packages/synergy.scm +++ b/gnu/packages/synergy.scm @@ -63,7 +63,8 @@ (lambda* (#:key inputs #:allow-other-keys) (setenv "CPLUS_INCLUDE_PATH" (string-append (assoc-ref inputs "avahi") - "/include/avahi-compat-libdns_sd")) + "/include/avahi-compat-libdns_sd:" + (or (getenv "CPLUS_INCLUDE_PATH") ""))) #t))))) (inputs `(("avahi" ,avahi) diff --git a/gnu/packages/task-management.scm b/gnu/packages/task-management.scm index 701e14a5e2..a0313c17c2 100644 --- a/gnu/packages/task-management.scm +++ b/gnu/packages/task-management.scm @@ -40,7 +40,7 @@ (inputs `(("gnutls" ,gnutls) ("lua" ,lua) - ("util-linux" ,util-linux))) + ("util-linux" ,util-linux "lib"))) (arguments `(#:tests? #f ; No tests implemented. #:phases diff --git a/gnu/packages/tbb.scm b/gnu/packages/tbb.scm index f04385ca1e..a0bf631baa 100644 --- a/gnu/packages/tbb.scm +++ b/gnu/packages/tbb.scm @@ -1,6 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2015, 2016 Ricardo Wurmus <rekado@elephly.net> -;;; Copyright © 2016 ng0 <ng0@n0.is> +;;; Copyright © 2016 Nikita <nikita@n0.is> ;;; Copyright © 2019 Tobias Geerinckx-Rice <me@tobias.gr> ;;; ;;; This file is part of GNU Guix. @@ -29,7 +29,7 @@ (define-public tbb (package (name "tbb") - (version "2020.1") + (version "2020.2") (source (origin (method git-fetch) (uri (git-reference @@ -38,7 +38,7 @@ (file-name (git-file-name name version)) (sha256 (base32 - "1vrh1mr9jmj46as9y8j5q1hpvihzd1iq4jr1y4x9a19dw8b7yk56")) + "0h8kdxikpq2v4a2h9cj33ril9kj0ig47n0vvbd92wabkn442jwar")) (modules '((guix build utils))) (snippet '(begin diff --git a/gnu/packages/tcl.scm b/gnu/packages/tcl.scm index 1e4aa13cc9..f17e138bdb 100644 --- a/gnu/packages/tcl.scm +++ b/gnu/packages/tcl.scm @@ -7,6 +7,7 @@ ;;; Copyright © 2017 Kei Kebreau <kkebreau@posteo.net> ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2019 Julien Lepiller <julien@lepiller.eu> +;;; Copyright © 2019 Mathieu Othacehe <m.othacehe@gmail.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -43,17 +44,18 @@ (define-public tcl (package (name "tcl") - (version "8.6.9") + (version "8.6.10") (source (origin (method url-fetch) (uri (string-append "mirror://sourceforge/tcl/Tcl/" version "/tcl" version "-src.tar.gz")) (sha256 (base32 - "0kjzj7mkzfnb7ksxanbibibfpciyvsh5ffdlhs0bmfc75kgd435d")))) + "1vc7imilx6kcb5319r7hnrp4jn5pqb41an3vr3azhgcfcgvdp5ji")) + (patches (search-patches "tcl-fix-cross-compilation.patch")))) (build-system gnu-build-system) (arguments - '(#:phases (modify-phases %standard-phases + `(#:phases (modify-phases %standard-phases (add-before 'configure 'pre-configure (lambda _ (chdir "unix") #t)) (add-after 'install 'install-private-headers @@ -73,9 +75,16 @@ ;; PREFIX/share/man. The 'validate-documentation-location' phase is ;; not able to fix this up because the default install populates both ;; PREFIX/man and PREFIX/share/man. - #:configure-flags (list (string-append "--mandir=" - (assoc-ref %outputs "out") - "/share/man")) + #:configure-flags + (list (string-append "--mandir=" + (assoc-ref %outputs "out") + "/share/man") + ;; This is needed when cross-compiling, see: + ;; https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=719247 + ,@(if (%current-target-system) + '("tcl_cv_strtod_buggy=1" + "ac_cv_func_strtod=yes") + '())) ;; XXX: There are a few test failures (related to HTTP, most ;; likely related to name resolution), but that doesn't cause @@ -138,7 +147,7 @@ X11 GUIs.") (define-public tk (package (name "tk") - (version "8.6.9.1") + (version "8.6.10") (source (origin (method url-fetch) (uri (string-append "mirror://sourceforge/tcl/Tcl/" @@ -146,7 +155,7 @@ X11 GUIs.") version "-src.tar.gz")) (sha256 (base32 - "1d7bfkxpacy33w5nahf73lkwxqpff44w1jplg7i2gmwgiaawvjwg")) + "11p3ycqbr5116vpaxv6fl6md6gcav1ffspgr8wrlc2lxhn543pv3")) (patches (search-patches "tk-find-library.patch")))) (build-system gnu-build-system) (arguments @@ -179,9 +188,16 @@ X11 GUIs.") "/lib -lfontconfig"))) #t)))) - #:configure-flags (list (string-append "--with-tcl=" - (assoc-ref %build-inputs "tcl") - "/lib")) + #:configure-flags + (list (string-append "--with-tcl=" + (assoc-ref %build-inputs "tcl") + "/lib") + ;; This is needed when cross-compiling, see: + ;; https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=719247 + ,@(if (%current-target-system) + '("tcl_cv_strtod_buggy=1" + "ac_cv_func_strtod=yes") + '())) ;; The tests require a running X server, so we just skip them. #:tests? #f)) @@ -216,7 +232,7 @@ interfaces (GUIs) in the Tcl language.") (native-inputs `(("pkg-config" ,pkg-config))) (inputs `(("libx11" ,libx11) ("libpng" ,libpng) - ("libjpeg" ,libjpeg))) + ("libjpeg" ,libjpeg-turbo))) (arguments `(#:make-maker-flags `(,(string-append "X11=" (assoc-ref %build-inputs "libx11"))) diff --git a/gnu/packages/telephony.scm b/gnu/packages/telephony.scm index 7b20954120..760c1e0727 100644 --- a/gnu/packages/telephony.scm +++ b/gnu/packages/telephony.scm @@ -5,7 +5,7 @@ ;;; Copyright © 2015, 2016, 2020 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2016 Lukas Gradl <lgradl@openmailbox.org> ;;; Copyright © 2016 Francesco Frassinelli <fraph24@gmail.com> -;;; Copyright © 2016, 2017 ng0 <ng0@n0.is> +;;; Copyright © 2016, 2017 Nikita <nikita@n0.is> ;;; Copyright © 2017, 2018 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2017 Adonay Felipe Nogueira <https://libreplanet.org/wiki/User:Adfeno> <adfeno@hyperbola.info> @@ -48,6 +48,7 @@ #:use-module (gnu packages check) #:use-module (gnu packages compression) #:use-module (gnu packages crypto) + #:use-module (gnu packages databases) #:use-module (gnu packages docbook) #:use-module (gnu packages documentation) #:use-module (gnu packages file) @@ -60,6 +61,7 @@ #:use-module (gnu packages gtk) #:use-module (gnu packages image) #:use-module (gnu packages libcanberra) + #:use-module (gnu packages linphone) #:use-module (gnu packages linux) #:use-module (gnu packages multiprecision) #:use-module (gnu packages ncurses) @@ -73,7 +75,6 @@ #:use-module (gnu packages qt) #:use-module (gnu packages serialization) #:use-module (gnu packages speech) - #:use-module (gnu packages sqlite) #:use-module (gnu packages tls) #:use-module (gnu packages upnp) #:use-module (gnu packages video) @@ -92,6 +93,35 @@ #:use-module (guix build-system gnu) #:use-module (guix build-system qt)) +(define-public libilbc + (package + (name "libilbc") + (version "2.0.2") + (source + (origin + (method git-fetch) + (uri + (git-reference + (url "https://github.com/TimothyGu/libilbc.git") + (commit + (string-append "v" version)))) + (file-name + (git-file-name name version)) + (sha256 + (base32 + "1j1pn1w1198qvdiq2hgv9hkyq2nqcvmfnwlgppac633idkjnjrqx")))) + (build-system cmake-build-system) + (arguments + `(#:tests? #f)) ; No target + (native-inputs + `(("pkg-config" ,pkg-config))) + (synopsis "Libre iLBC codec") + (description "LibiLBC is a packaging friendly copy of the iLBC codec from +the WebRTC project. It provides a base for distribution packages and can be +used as drop-in replacement for the non-free code from RFC 3591.") + (home-page "https://github.com/TimothyGu/libilbc") + (license license:bsd-3))) + (define-public spandsp (package (name "spandsp") @@ -163,6 +193,7 @@ ("fftw" ,fftw) ("libpcap" ,libpcap) ("libsndfile" ,libsndfile) + ("libjpeg" ,libjpeg-turbo) ;XXX: should be propagated from libtiff ("libtiff" ,libtiff) ("netpbm" ,netpbm) ("sox" ,sox) @@ -257,6 +288,37 @@ packet-manipulation library.") (license license:gpl2+) ; plus runtime exception (home-page "https://www.gnu.org/software/ccrtp/"))) +(define-public zrtpcpp + (package + (name "zrtpcpp") + (version "4.6.6") + (source + (origin + (method git-fetch) + (uri + (git-reference + (url "https://github.com/wernerd/ZRTPCPP.git") + (commit + (string-append "V" version)))) + (file-name + (git-file-name name version)) + (sha256 + (base32 + "06vphvh4dgi7ah5qkq53wqvswv8l273x0xwbc447qmgvamm0x1vs")))) + (build-system cmake-build-system) + (arguments + `(#:tests? #f)) ; No target + (native-inputs + `(("pkg-config" ,pkg-config))) + (inputs + `(("ccrtp" ,ccrtp) + ("ucommon" ,ucommon))) + (synopsis "C++ Implementation of ZRTP protocol") + (description "GNU ZRTP C++ provides a library that adds ZRTP support to the +GNU ccRTP stack and serves as library for other RTP stacks +(PJSIP, GStreamer).") + (home-page "https://www.gnu.org/software/ccrtp/zrtp") + (license license:lgpl3+))) (define-public osip (package @@ -593,71 +655,73 @@ Mumble consists of two applications for separate usage: (package (name "twinkle") (version "1.10.2") - (source (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/LubosD/twinkle") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "0s0gi03xwvzp02ah4q6j33r9jx9nbayr6dxlg2ck9pwbay1nq1hx")))) - (build-system cmake-build-system) + (source + (origin + (method git-fetch) + (uri + (git-reference + (url "https://github.com/LubosD/twinkle") + (commit + (string-append "v" version)))) + (file-name + (git-file-name name version)) + (patches + (search-patches "twinkle-bcg729.patch")) ; To support new BCG729 API. + (sha256 + (base32 + "0s0gi03xwvzp02ah4q6j33r9jx9nbayr6dxlg2ck9pwbay1nq1hx")))) + (build-system qt-build-system) (arguments - `(#:tests? #f ; no test target - #:configure-flags '("-DWITH_SPEEX=On") - #:phases - (modify-phases %standard-phases - (add-after 'install 'wrap-executable - (lambda* (#:key inputs outputs #:allow-other-keys) - (let ((out (assoc-ref outputs "out"))) - (wrap-program (string-append out "/bin/twinkle") - `("QT_PLUGIN_PATH" ":" prefix - ,(map (lambda (label) - (string-append (assoc-ref inputs label) - "/lib/qt5/plugins")) - '("qtbase" "qtdeclarative"))) - `("QML2_IMPORT_PATH" ":" prefix - ,(map (lambda (label) - (string-append (assoc-ref inputs label) - "/lib/qt5/qml")) - '("qtdeclarative" "qtquickcontrols")))) - #t)))))) + `(#:tests? #f ; no test target + #:configure-flags + (list + ;; FIX-ME: Make Twinkle compatible with libre version of iLBC. + ;; "-DWITH_ILBC=On" ; For iLBC Codec Support + "-DWITH_ZRTP=On" ; For ZRTP Support + "-DWITH_G729=On" ; For G729 Codec Support + "-DWITH_SPEEX=On"))) ; For Speex Codec Support (native-inputs `(("bison" ,bison) ("flex" ,flex) - ("readline" ,readline) - ("file" ,file) - ("ucommon" ,ucommon) + ("qttools" ,qttools))) + (inputs + `(("alsa-lib" ,alsa-lib) + ("bcg729" ,bcg729) + ("zrtpcpp" ,zrtpcpp) ("ccrtp" ,ccrtp) + ("file" ,file) + ("libilbc" ,libilbc) + ("libsndfile" ,libsndfile) ("libxml2" ,libxml2) + ("qtbase" ,qtbase) + ("qtdeclarative" ,qtdeclarative) + ("qtquickcontrols" ,qtquickcontrols) + ("readline" ,readline) ("speex" ,speex) ("speexdsp" ,speexdsp) - ("libsndfile" ,libsndfile) - ("alsa-lib" ,alsa-lib) - ("qttools" ,qttools))) - (inputs - `(("qtbase" ,qtbase) - ("qtdeclarative" ,qtdeclarative) - ("qtquickcontrols" ,qtquickcontrols))) - (home-page "http://twinkle.dolezel.info/") + ("ucommon" ,ucommon))) (synopsis "Softphone for voice over IP and instant messaging") (description "Twinkle is a softphone for your voice over IP and instant -messaging communcations using the SIP protocol. You can use it for direct IP -phone to IP phone communication or in a network using a SIP proxy to route your -calls and messages") +messaging communcations using the SIP protocol. You can use it for direct +IP phone to IP phone communication or in a network using a SIP proxy to route +your calls and messages.") + (home-page "http://twinkle.dolezel.info/") (license license:gpl2+))) (define-public pjproject (package (name "pjproject") - (version "2.9") + (version "2.10") (source (origin (method git-fetch) (uri (git-reference (url "https://github.com/pjsip/pjproject.git") - (commit "5dfa75be7d69047387f9b0436dd9492bbbf03fe4"))) + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1aklicpgwc88578k03i5d5cm5h8mfm7hmx8vfprchbmaa2p8f4z0")) (modules '((guix build utils))) (snippet '(begin @@ -686,11 +750,7 @@ calls and messages") (lambda (dirs) (substitute* "third_party/build/os-linux.mak" (((string-append "DIRS += " dirs)) ""))) - third-party-dirs)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "1ayj6n7zd5wvd1nzj2k9s57fb4ckc2fv92k5sjvhd87yg69k3393")))) + third-party-dirs)))))) (build-system gnu-build-system) (inputs `(("portaudio" ,portaudio))) @@ -701,7 +761,7 @@ calls and messages") ("libsrtp" ,libsrtp) ("gnutls" ,gnutls) ("resample", resample) - ("util-linux" ,util-linux))) + ("util-linux" ,util-linux "lib"))) (native-inputs `(("autoconf" ,autoconf) ("automake" ,automake) @@ -734,297 +794,6 @@ calls and messages") Initiation Protocol (SIP) and a multimedia framework.") (license license:gpl2+))) -(define %jami-version "20191101.3.67671e7") - -(define* (jami-source #:key without-daemon) - (origin - (method url-fetch) - (uri (string-append "https://dl.jami.net/ring-release/tarballs/ring_" - %jami-version - ".tar.gz")) - (modules '((guix build utils))) - (snippet - (if without-daemon - '(begin - (delete-file-recursively "daemon/contrib")) - #f)) - (sha256 - (base32 - "0kw172w2ccyz438kf5xqw14nhfm4xk6a2libnzib9j2wvhlpf4q0")))) - -(define-public pjproject-jami - (package - (inherit pjproject) - (name "pjproject-jami") - (native-inputs - `(("savoir-faire-linux-patches" ,(jami-source)) - ,@(package-native-inputs pjproject))) - (arguments - `(#:tests? #f - ;; See ring-project/daemon/contrib/src/pjproject/rules.mak. - #:configure-flags - (list "--disable-oss" - "--disable-sound" - "--disable-video" - "--enable-ext-sound" - "--disable-speex-aec" - "--disable-g711-codec" - "--disable-l16-codec" - "--disable-gsm-codec" - "--disable-g722-codec" - "--disable-g7221-codec" - "--disable-speex-codec" - "--disable-ilbc-codec" - "--disable-opencore-amr" - "--disable-silk" - "--disable-sdl" - "--disable-ffmpeg" - "--disable-v4l2" - "--disable-openh264" - "--disable-resample" - "--disable-libwebrtc" - "--with-gnutls" - "--with-external-srtp" - ;; We need -fPIC or else we get the following error when linking - ;; against pjproject-jami: - ;; relocation R_X86_64_32S against `.rodata' can not be used when - ;; making a shared object; - "CFLAGS=-fPIC" - "CXXFLAGS=-fPIC") - #:phases - (modify-phases %standard-phases - (add-after 'unpack 'make-git-checkout-writable - (lambda _ - (for-each make-file-writable (find-files ".")) - #t)) - (add-after 'unpack 'apply-patches - (lambda* (#:key inputs #:allow-other-keys) - (let ((savoir-faire-linux-patches-directory "Savoir-faire Linux patches") - ;; Comes from - ;; "ring-project/daemon/contrib/src/pjproject/rules.mak". - ;; WARNING: These amount for huge changes in pjproject. - (savoir-faire-linux-patches - '("fix_turn_alloc_failure" - "rfc2466" - "ipv6" - "multiple_listeners" - "pj_ice_sess" - "fix_turn_fallback" - "fix_ioqueue_ipv6_sendto" - "add_dtls_transport" - "rfc6544" - "ice_config" - "sip_config" - "fix_first_packet_turn_tcp" - "fix_ebusy_turn" - "ignore_ipv6_on_transport_check" - "fix_turn_connection_failure" - ;; "uwp_vs" ; for windows - "disable_local_resolution"))) - (mkdir-p savoir-faire-linux-patches-directory) - (invoke "tar" "-xvf" (assoc-ref inputs "savoir-faire-linux-patches") - "-C" savoir-faire-linux-patches-directory - "--strip-components=5" - "ring-project/daemon/contrib/src/pjproject") - (for-each - (lambda (file) - (invoke "patch" "--force" "-p1" "-i" - (string-append savoir-faire-linux-patches-directory "/" - file ".patch"))) - savoir-faire-linux-patches)) - #t)) - ;; TODO: We could use substitute-keyword-arguments instead of - ;; repeating the phases from pjproject, but somehow it does - ;; not work. - (add-before 'build 'build-dep - (lambda _ (invoke "make" "dep"))) - (add-before 'patch-source-shebangs 'autoconf - (lambda _ - (invoke "autoconf" "-v" "-f" "-i" "-o" - "aconfigure" "aconfigure.ac"))) - (add-before 'autoconf 'disable-some-tests - ;; Three of the six test programs fail due to missing network - ;; access. - (lambda _ - (substitute* "Makefile" - (("selftest: pjlib-test pjlib-util-test pjnath-test pjmedia-test pjsip-test pjsua-test") - "selftest: pjlib-test pjlib-util-test pjmedia-test")) - #t))))))) - -(define-public libring - (package - (name "libring") - (version %jami-version) - (source (jami-source #:without-daemon #t)) - (build-system gnu-build-system) - (inputs - ;; Missing (optional?) dep: libnatpmp. - `(("alsa-lib" ,alsa-lib) - ("boost" ,boost) - ("dbus-c++" ,dbus-c++) - ("eudev" ,eudev) - ("ffmpeg" ,ffmpeg) - ("flac" ,flac) - ("gmp" ,gmp) - ("gsm" ,gsm) - ("jack" ,jack-1) - ("jsoncpp" ,jsoncpp) - ("libogg" ,libogg) - ("libva" ,libva) - ("opendht" ,opendht) - ("opus" ,opus) - ("pcre" ,pcre) - ("pulseaudio" ,pulseaudio) - ("libsamplerate" ,libsamplerate) - ("libsndfile" ,libsndfile) - ("speex" ,speex) - ("speexdsp" ,speexdsp) - ("libupnp" ,libupnp) - ("libvorbis" ,libvorbis) - ("libx264" ,libx264) - ("libvdpau" ,libvdpau) - ("yaml-cpp" ,yaml-cpp) - ("zlib" ,zlib) - ("openssl" ,openssl) - ("libsecp256k1" ,libsecp256k1) - ("python" ,python) - ("python-wrapper" ,python-wrapper) - ("restinio" ,restinio) - ("libx11" ,libx11) - ("asio" ,asio) - ;; TODO: Upstream seems to rely on a custom pjproject (a.k.a. pjsip) version. - ;; See https://git.jami.net/savoirfairelinux/ring-daemon/issues/24. - ("pjproject" ,pjproject-jami))) - (native-inputs - `(("autoconf" ,autoconf) - ("automake" ,automake) - ("libtool" ,libtool) - ("pkg-config" ,pkg-config) - ("which" ,which) - ("cppunit" ,cppunit) - ("perl" ,perl))) ; Needed for documentation. - (arguments - `(#:tests? #f ; The tests fail to compile due to missing headers. - #:phases - (modify-phases %standard-phases - (add-after 'unpack 'change-directory - (lambda _ - (chdir "daemon") - #t)) - (add-before 'build 'add-lib-dir - (lambda _ - (mkdir-p "src/lib") - #t))))) - (synopsis "Distributed multimedia communications platform") - (description "Jami (formerly GNU Ring) is a secure and distributed voice, -video and chat communication platform that requires no centralized server and -leaves the power of privacy in the hands of the user. It supports the SIP and -IAX protocols, as well as decentralized calling using P2P-DHT. - -This package provides a library and daemon implementing the Jami core -functionality.") - (home-page "https://jami.net/") - (license license:gpl3+))) - -(define-public libringclient - (package - (inherit libring) - (name "libringclient") - (build-system cmake-build-system) - (propagated-inputs - `(("libring" ,libring) ; For 'dring'. - ("qtbase" ,qtbase) ; Qt is included in several installed headers. - ("qttools" ,qttools))) - (arguments - `(#:tests? #f ; There is no testsuite. - #:configure-flags - (list (string-append "-DRING_BUILD_DIR=" - (assoc-ref %build-inputs "libring") "/include")) - #:phases - (modify-phases %standard-phases - (add-after 'unpack 'change-directory - (lambda _ - (chdir "lrc") - #t)) - (add-before 'configure 'fix-dbus-interfaces-path - (lambda* (#:key inputs #:allow-other-keys) - (substitute* "CMakeLists.txt" - (("\\$\\{CMAKE_INSTALL_PREFIX\\}(/share/dbus-1/interfaces)" _ dbus-interfaces-path-suffix) - (string-append (assoc-ref inputs "libring") - dbus-interfaces-path-suffix)))))))) - (synopsis "Distributed multimedia communications platform") - (description "Jami (formerly GNU Ring) is a secure and distributed voice, -video and chat communication platform that requires no centralized server and -leaves the power of privacy in the hands of the user. It supports the SIP and -IAX protocols, as well as decentralized calling using P2P-DHT. - -This package provides a library common to all Jami clients.") - (home-page "https://jami.net") - (license license:gpl3+))) - -(define-public jami - (package - (inherit libring) - (name "jami") - (build-system cmake-build-system) - (inputs - `(("libringclient" ,libringclient) - ("gtk+" ,gtk+) - ("qrencode" ,qrencode) - ("libnotify" ,libnotify) - ("clutter" ,clutter) - ("clutter-gtk" ,clutter-gtk) - ("libcanberra" ,libcanberra) - ("webkitgtk" ,webkitgtk) - ;; TODO: We must wrap ring-client-gnome to force using the - ;; `sqlite-with-column-metadata' package instead of `sqlite' or else it - ;; fails with: - ;; - ;; /gnu/store/...-qtbase-5.11.2/lib/qt5/plugins/sqldrivers/libqsqlite.so: - ;; undefined symbol: sqlite3_column_table_name16 - ;; - ;; qtbase is built against sqlite-with-column-metadata but somehow - ;; jami-client-gnome ends up with both `sqlite' and - ;; `sqlite-with-column-metadata' as inputs and it seems that - ;; libqsqlite.so gets confused. - ("sqlite" ,sqlite-with-column-metadata))) - (native-inputs - `(("pkg-config" ,pkg-config) - ("gettext" ,gettext-minimal) - ("glib:bin" ,glib "bin") - ("doxygen" ,doxygen))) - (propagated-inputs - `(("libring" ,libring) ; Contains `dring', the daemon, which is automatically by d-bus. - ("adwaita-icon-theme" ,adwaita-icon-theme) - ("evolution-data-server" ,evolution-data-server))) - (arguments - `(#:tests? #f ; There is no testsuite. - #:phases - (modify-phases %standard-phases - (add-after 'unpack 'change-directory - (lambda _ - (chdir "client-gnome") - #t)) - (add-after 'install 'wrap - (lambda* (#:key inputs outputs #:allow-other-keys) - (let* ((out (assoc-ref outputs "out")) - (path (string-append (assoc-ref inputs "sqlite") "/lib"))) - (wrap-program (string-append out "/bin/jami-gnome") - `("LD_LIBRARY_PATH" ":" prefix (,path)))) - #t))))) - (synopsis "Distributed, privacy-respecting communication program") - (description "Jami (formerly GNU Ring) is a secure and distributed voice, -video and chat communication platform that requires no centralized server and -leaves the power of privacy in the hands of the user. It supports the SIP and -IAX protocols, as well as decentralized calling using P2P-DHT. - -This package provides the Jami client for the GNOME desktop.") - (home-page "https://jami.net") - (license license:gpl3+))) - -(define-public jami-client-gnome - (deprecated-package "jami-client-gnome" jami)) - (define-public libtgvoip (package (name "libtgvoip") diff --git a/gnu/packages/terminals.scm b/gnu/packages/terminals.scm index 9cb004e36a..226f3ee05a 100644 --- a/gnu/packages/terminals.scm +++ b/gnu/packages/terminals.scm @@ -101,12 +101,6 @@ (base32 "13djibj3s7ig13c57ywy38pxy3qfmqihii2c0g15fy2h9q8xp1gx")))) (build-system glib-or-gtk-build-system) - (arguments - '(#:phases (modify-phases %standard-phases - (replace 'bootstrap - (lambda _ - (setenv "NOCONFIGURE" "true") - (invoke "sh" "autogen.sh")))))) (native-inputs `(("autoconf" ,autoconf) ("automake" ,automake) @@ -281,10 +275,6 @@ compatibility to existing emulators like xterm, gnome-terminal, konsole, etc.") #:disallowed-references (,mesa) #:phases (modify-phases %standard-phases - (replace 'bootstrap - (lambda _ - (setenv "NOCONFIGURE" "indeed") - (invoke "sh" "autogen.sh"))) ;; Use elogind instead of systemd. (add-before 'configure 'remove-systemd (lambda _ diff --git a/gnu/packages/tex.scm b/gnu/packages/tex.scm index 10270271c9..683f9d7283 100644 --- a/gnu/packages/tex.scm +++ b/gnu/packages/tex.scm @@ -8,7 +8,7 @@ ;;; Copyright © 2016 Thomas Danckaert <post@thomasdanckaert.be> ;;; Copyright © 2016, 2017, 2018, 2019, 2020 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2017 Leo Famulari <leo@famulari.name> -;;; Copyright © 2017 Marius Bakke <mbakke@fastmail.com> +;;; Copyright © 2017, 2020 Marius Bakke <mbakke@fastmail.com> ;;; Copyright © 2017, 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2018 Danny Milosavljevic <dannym+a@scratchpost.org> ;;; Copyright © 2018 Arun Isaac <arunisaac@systemreboot.net> @@ -144,19 +144,17 @@ copied to their outputs; otherwise the TEXLIVE-BUILD-SYSTEM is used." "-checkout")) (sha256 (base32 - "1ix8h637hwhz4vrdhilf84kzzdza0wi8fp26nh7iws0bq08sl517")))) + "0lk7shx768sxvgr85y8bnmmnj8x4bbkgpxrz3z8jp8avi33prw83")))) (define (texlive-hyphen-package name code locations hash) + "Return a TeX Live hyphenation package with the given NAME, using source +files from LOCATIONS with expected checksum HASH. CODE is not currently in use." (let ((parent (simple-texlive-package name locations hash #:trivial? #t))) (package (inherit parent) (arguments (substitute-keyword-arguments (package-arguments parent) - ((#:modules _ '()) - '((guix build gnu-build-system) - (guix build utils) - (ice-9 match))) ((#:phases phases) `(modify-phases ,phases (replace 'build @@ -169,12 +167,8 @@ copied to their outputs; otherwise the TEXLIVE-BUILD-SYSTEM is used." (string-append root "/tex/generic/hyph-utf8/loadhyph")) (ptex (string-append root "/tex/generic/hyph-utf8/patterns/ptex")) - (filter-expression - (match ',code - ((? string?) - (format #f "\nlanguages.select!{|l| l.code == \"~a\"}\n" ',code)) - ((a b ...) - (format #f "\nlanguages.select!{|l| [~{\"~a\",~}].include? l.code }\n" ',code))))) + (quote + (string-append root "/tex/generic/hyph-utf8/patterns/quote"))) (mkdir "scripts") (copy-recursively (assoc-ref inputs "hyph-utf8-scripts") "scripts") @@ -183,74 +177,69 @@ copied to their outputs; otherwise the TEXLIVE-BUILD-SYSTEM is used." (mkdir-p patterns) (mkdir-p loaders) (mkdir-p ptex) + (mkdir-p quote) ;; Generate plain patterns (with-directory-excursion "scripts" - (substitute* "languages.rb" - (("../../../tex/generic/") "../tex/generic/")) + (substitute* "lib/tex/hyphen/path.rb" + (("^([[:blank:]]+)TeXROOT = .*" _ indent) + (string-append indent "TeXROOT = \"" + (getcwd) "/..\"\n"))) + (substitute* "generate-plain-patterns.rb" ;; Ruby 2 does not need this. (("require 'unicode'") "") - (("Unicode.upcase\\(ch\\)") "ch.upcase") ;; Write directly to the output directory - (("\\$path_root=File.*") - (string-append "$path_root=\"" out "/share/texmf-dist/\"\n")) - ;; Create quote directory when needed - (("f = File.open\\(\"#\\{\\$path_quote\\}" m) - (string-append "require 'fileutils'; FileUtils.mkdir_p $path_quote;" m)) - ;; Only generate patterns for this language. - (("languages =.*" m) - (string-append m filter-expression))) + (("File\\.join\\(PATH::TXT") + (string-append "File.join(\"" patterns "\"")) + (("File\\.join\\(PATH::QUOTE") + (string-append "File.join(\"" quote "\""))) (invoke "ruby" "generate-plain-patterns.rb") ;; Build pattern loaders (substitute* "generate-pattern-loaders.rb" - (("\\$path_tex_generic=File.*") - (string-append "$path_tex_generic=\"" root "/tex/generic\"\n")) - ;; Only generate loader for this language. - (("languages =.*" m) - (string-append m filter-expression))) + (("File\\.join\\(PATH::LOADER") + (string-append "File.join(\"" loaders "\""))) + (invoke "ruby" "generate-pattern-loaders.rb") ;; Build ptex patterns (substitute* "generate-ptex-patterns.rb" - (("\\$path_root=File.*") - (string-append "$path_root=\"" root "\"\n")) - ;; Only generate ptex patterns for this language. - (("languages =.*" m) - (string-append m filter-expression))) + (("File\\.join\\(PATH::PTEX") + (string-append "File.join(\"" ptex "\""))) (invoke "ruby" "generate-ptex-patterns.rb"))))))))) (native-inputs `(("ruby" ,ruby) + ("ruby-hydra" ,ruby-hydra) ("hyph-utf8-scripts" ,hyph-utf8-scripts))) (home-page "https://ctan.org/pkg/hyph-utf8")))) (define texlive-extra-src (origin (method url-fetch) - (uri "ftp://tug.org/historic/systems/texlive/2018/texlive-20180414-extra.tar.xz") + (uri "ftp://tug.org/historic/systems/texlive/2019/texlive-20190410-extra.tar.xz") (sha256 (base32 - "0a83kymxc8zmlxjb0y1gf6mx7qnf0hxffwkivwh5yh138y2rfhsv")))) + "13ncf2an4nlqv18lki6y2p6pcsgs1i54zqkhfwprax5j53bk70j8")))) (define texlive-texmf-src (origin (method url-fetch) - (uri "ftp://tug.org/historic/systems/texlive/2018/texlive-20180414-texmf.tar.xz") + (uri "ftp://tug.org/historic/systems/texlive/2019/texlive-20190410-texmf.tar.xz") (sha256 (base32 - "1b8zigzg8raxkhhzphcmynf84rbdbj2ym2qkz24v8n0qx82zmqms")))) + "00n4qh9fj8v9zzy3y488hpfq1g3dnnh72y4yjsaikfcqpi59gv62")))) (define-public texlive-bin (package (name "texlive-bin") - (version "20180414") + (version "20190410") (source (origin (method url-fetch) - (uri (string-append "ftp://tug.org/historic/systems/texlive/2018/" + (uri (string-append "ftp://tug.org/historic/systems/texlive/2019/" "texlive-" version "-source.tar.xz")) (sha256 (base32 - "0khyi6h015r2zfqgg0a44a2j7vmr1cy42knw7jbss237yvakc07y")) + "1dfps39q6bdr1zsbp9p74mvalmy3bycihv19sb9c6kg30kprz8nj")) (patches (let ((arch-patch (lambda (name revision hash) @@ -261,14 +250,29 @@ copied to their outputs; otherwise the TEXLIVE-BUILD-SYSTEM is used." "&id=" revision)) (file-name (string-append "texlive-bin-" name)) (sha256 (base32 hash))))) - (arch-revision "c4b99aba97213ea554b6592a4916d3c7394a6d7b")) - (append (search-patches "texlive-bin-CVE-2018-17407.patch" - "texlive-bin-luatex-poppler-compat.patch") - (list - (arch-patch "pdftex-poppler0.76.patch" arch-revision - "15ypbh21amfsdxy7ca825x28lkmmkklxk1w660gpgvzdi7s70h0b") - (arch-patch "xetex-poppler-fixes.patch" arch-revision - "1jj1p5zkjljb7id9pjv29cw0cf8mwrgrh4ackgzz9c200vaqpsvx"))))))) + (arch-revision "49d7fe25e5ea63f136ebc20270c1d8fc9b00041c")) + (list + (arch-patch "pdftex-poppler0.76.patch" arch-revision + "03vc88dz37mjjyaspzv0fik2fp5gp8qv82114869akd1dhszbaax") + (search-patch "texlive-bin-poppler-0.83.patch") + (arch-patch "texlive-poppler-0.84.patch" arch-revision + "1ia6cr99krk4ipx4hdi2qdb98bh2h26mckjlpxdzrjnfhlnghksa") + (search-patch "texlive-bin-poppler-0.86.patch")))) + (modules '((guix build utils) + (ice-9 ftw))) + (snippet + '(begin + (with-directory-excursion "libs" + (let ((preserved-directories '("." ".." "lua53" "luajit"))) + ;; Delete bundled software, except Lua which cannot easily be + ;; used as an external dependency. + (for-each delete-file-recursively + (scandir "." + (lambda (file) + (and (not (member file preserved-directories)) + (eq? 'directory (stat:type (stat file))))))))) + ;; TODO: Unbundle stuff in texk/dvisvgm/dvisvgm-src/libs too. + #t)))) (build-system gnu-build-system) (inputs `(("texlive-extra-src" ,texlive-extra-src) @@ -285,7 +289,7 @@ copied to their outputs; otherwise the TEXLIVE-BUILD-SYSTEM is used." "-checkout")) (sha256 (base32 - "0wrjls1y9b4k1z10l9l8w2l3yjcw7v7by2y16kchdpkiyldlkry6")))) + "1cj04svl8bpfwjr4gqfcc04rmklz3aggrxvgj7q5bxrh7c7g18xh")))) ("cairo" ,cairo) ("fontconfig" ,fontconfig) ("fontforge" ,fontforge) @@ -316,7 +320,8 @@ copied to their outputs; otherwise the TEXLIVE-BUILD-SYSTEM is used." (arguments `(#:out-of-source? #t #:configure-flags - `("--disable-native-texlive-build" + '("--disable-static" + "--disable-native-texlive-build" "--with-system-cairo" "--with-system-freetype2" "--with-system-gd" @@ -363,18 +368,13 @@ copied to their outputs; otherwise the TEXLIVE-BUILD-SYSTEM is used." (copy-file "texk/web2c/pdftexdir/pdftosrc-poppler0.76.0.cc" "texk/web2c/pdftexdir/pdftosrc.cc") #t)) - (add-after 'use-code-for-new-poppler 'use-code-for-even-newer-poppler + (add-after 'unpack 'patch-dvisvgm-build-files (lambda _ - ;; Adjust for deprecated types in Poppler 0.73 and later. - (substitute* (append - (find-files "texk/web2c/luatexdir/" "\\.(cc|w)$") - '("texk/web2c/pdftexdir/pdftosrc.cc")) - (("GBool") "bool") - (("gFalse") "false") - (("gTrue") "true") - (("getCString") "c_str") - (("Guint") "unsigned int") - (("Guchar") "unsigned char")) + ;; XXX: Ghostscript is detected, but HAVE_LIBGS is never set, so + ;; the appropriate linker flags are not added. + (substitute* "texk/dvisvgm/configure" + (("^have_libgs=yes" all) + (string-append all "\nHAVE_LIBGS=1"))) #t)) (add-after 'unpack 'disable-failing-test (lambda _ @@ -451,7 +451,7 @@ This package contains the binaries.") "texlive-docstrip" (list "/tex/latex/base/docstrip.tex") (base32 - "17vdy43d9vknldz7wb69hp33r8awmdvn4xszamvgs5ikcl4cp289") + "1f9sx1lp7v34zwm186msf03q2h28rrg0lh65z59zc0cvqffs6dvb") #:trivial? #t)) (home-page "https://www.ctan.org/texlive") (synopsis "Utility to strip documentation from TeX files.") @@ -466,7 +466,7 @@ documentation from TeX files. It is part of the LaTeX base.") (list "/tex/generic/unicode-data/" "/doc/generic/unicode-data/") (base32 - "1j63kz29arfiydb8r1a53q1r4zyk1yjbcq0w9i93zddczgqzgbfb") + "0zy4v9y667cka5fi4dnc6x500907812y7pcaf63s5qxi8l7khxxy") #:trivial? #t)) (home-page "https://www.ctan.org/pkg/unicode-data") (synopsis "Unicode data and loaders for TeX") @@ -499,7 +499,7 @@ out to date by @code{unicode-letters.tex}. ") "/tex/generic/hyphen/hypht1.tex" "/tex/generic/hyphen/zerohyph.tex") (base32 - "002g5zhzbj3ikgg8zidagdp605ac9f4qmfl148mp0mbpz1svk0ni") + "0f19nml4hdx9lh7accqdk1b9ismwfm2523l5zsc4kb4arysgcakz") #:trivial? #t)) (home-page "https://tug.org/texlive/") (synopsis "Core hyphenation support files") @@ -628,7 +628,7 @@ build fonts using the Metafont system.") "/scripts/texlive/fontinst.sh") (base32 - "09drlb0krhnizw92xlm5wxzzpgn3shcxd684xlg0zc5p16l47w6h") + "0lprwib7n2ygfxvrw675vhif7ghyip2x6k70kqs9syp8lqxiizf8") #:trivial? #t))) (package (inherit template) @@ -717,7 +717,7 @@ documents.") "/fonts/map/dvips/cm/cmtext-bsr-interpolated.map" "/doc/fonts/cm/") (base32 - "1h0q71paqmg1xjg6k35ni2i6m93kmlq9rdwm913xg9n4qngywl18") + "09mvl94qrwlb9b4pkigi151l256v3djhwl4m5lgvk6yhn5y75zrp") #:trivial? #t))) (package (inherit template) @@ -1279,7 +1279,7 @@ incorporates the e-TeX extensions.") "texlive-tex-plain" (list "/tex/plain/") (base32 - "1rrfay4d7lbyj02wlf23mwvbpjd160nwlgryx97hq1vb7dva4swr") + "1m4qpaszwfv7j8a85rlwl7rs4iv5nlj67c1vvn6ysly72h9gjydb") #:trivial? #t)) (home-page "https://www.ctan.org/pkg/plain") (synopsis "Plain TeX format and supporting files") @@ -1295,7 +1295,7 @@ discussed in the book).") "texlive-hyphen-afrikaans" "af" (list "/tex/generic/hyph-utf8/patterns/tex/hyph-af.tex") (base32 - "1vb3jccqnn1pm0680yqx52kvz595fmxnwa0cbf8qman6zglsssiw"))) + "1k9k27a27bbrb0gz36191w32l2v6d3zbdh8zhrp4l3ild2pj3n4l"))) (synopsis "Hyphenation patterns for Afrikaans") (description "The package provides hyphenation patterns for the Afrikaans language.") @@ -1309,7 +1309,7 @@ language.") "/tex/generic/hyphen/grahyph5.tex" "/tex/generic/hyphen/ibyhyph.tex") (base32 - "0kwrqsz7wdr1d9kylzwp60ka3wfbj8iad029k5h6y94nb86mf7zv"))) + "01326lb6z0s8krcfgs8i1pnjfrm4gr33rc53gy80f63qbv4ssxrw"))) (synopsis "Hyphenation patterns for ancient Greek") (description "The package provides hyphenation patterns for ancient Greek.") @@ -1318,33 +1318,11 @@ Greek.") (define-public texlive-hyphen-armenian (let ((template (texlive-hyphen-package "texlive-hyphen-armenian" "hy" - (list "/source/generic/hyph-utf8/languages/hy/generate_patterns_hy.rb") + (list "/tex/generic/hyph-utf8/patterns/tex/hyph-hy.tex") (base32 - "0z666y580w1kpxssdanz67ykq257lf11a1mnp1jrn08zijvfrw9c")))) + "0hzny0npynsb07syxrpbfa5pkpj8r0j51pj64yxyfl1c0bak1fwp")))) (package (inherit template) - (arguments - (substitute-keyword-arguments (package-arguments template) - ((#:phases phases) - `(modify-phases ,phases - (add-before 'build 'build-patterns - (lambda _ - (let ((target (string-append (getcwd) - "/tex/generic/hyph-utf8/patterns/tex"))) - (mkdir-p target) - (with-directory-excursion "source/generic/hyph-utf8/languages/hy/" - (substitute* "generate_patterns_hy.rb" - (("\\$file = File.new.*") - (string-append "$file = File.new(\"" target - "/hyph-hy.tex\",\"w\")\n"))) - (invoke "ruby" "generate_patterns_hy.rb")) - #t))) - (add-after 'install 'install-hyph-hy.tex - (lambda* (#:key inputs outputs #:allow-other-keys) - (let* ((out (assoc-ref outputs "out")) - (target (string-append out "/share/texmf-dist/tex"))) - (copy-recursively "tex" target) - #t))))))) (synopsis "Hyphenation patterns for Armenian") (description "The package provides hyphenation patterns for the Armenian language.") @@ -1354,39 +1332,17 @@ language.") (define-public texlive-hyphen-basque (let ((template (texlive-hyphen-package "texlive-hyphen-basque" "eu" - (list "/source/generic/hyph-utf8/languages/eu/generate_patterns_eu.rb") + (list "/tex/generic/hyph-utf8/patterns/tex/hyph-eu.tex") (base32 - "1yhsbzf1g9dm70jfixsz51hsfvn26cwfkfxvhg7xv2piynr4v51l")))) + "15w969g1jqzn68l2b2lzf7iv7g3kil02aba3if6cag3qcnq92ra9")))) (package (inherit template) - (arguments - (substitute-keyword-arguments (package-arguments template) - ((#:phases phases) - `(modify-phases ,phases - (add-before 'build 'build-patterns - (lambda _ - (let ((target (string-append (getcwd) - "/tex/generic/hyph-utf8/patterns/tex"))) - (mkdir-p target) - (with-directory-excursion "source/generic/hyph-utf8/languages/eu/" - (substitute* "generate_patterns_eu.rb" - (("\\$file = File.new.*") - (string-append "$file = File.new(\"" target - "/hyph-eu.tex\",\"w\")\n"))) - (invoke "ruby" "generate_patterns_eu.rb")) - #t))) - (add-after 'install 'install-hyph-eu.tex - (lambda* (#:key inputs outputs #:allow-other-keys) - (let* ((out (assoc-ref outputs "out")) - (target (string-append out "/share/texmf-dist/tex"))) - (copy-recursively "tex" target) - #t))))))) (synopsis "Hyphenation patterns for Basque") (description "The package provides hyphenation patterns for the Basque language.") - ;; "Free for any purpose". + ;; Similar to Unicode license. (license (license:fsf-free - "/source/generic/hyph-utf8/languages/eu/generate_patterns_eu.rb"))))) + "/tex/generic/hyph-utf8/patterns/tex/hyph-eu.tex"))))) (define-public texlive-hyphen-belarusian (package @@ -1394,7 +1350,7 @@ language.") "texlive-hyphen-belarusian" "be" (list "/tex/generic/hyph-utf8/patterns/tex/hyph-be.tex") (base32 - "1xvffph824rg43gi2xs3ny9gzlp708fyxj9zfhckmg8pzh9vv3n6"))) + "0ppm12wndaxv9da62dwkbnk7w9nijikn6jkc97m76xis338g2h02"))) (synopsis "Hyphenation patterns for Belarusian") (description "The package provides hyphenation patterns for the Belarusian language.") @@ -1408,7 +1364,7 @@ language.") "/doc/generic/hyph-utf8/bg/azbukaExtended.tex" "/tex/generic/hyph-utf8/patterns/tex/hyph-bg.tex") (base32 - "06dxkk9azsggbri04i6g62lswygzadsx3rpqvbyzvbxc5wxz1dj1"))) + "0ngrgw2rmipxss76rgfk62x9nnsgwmaxxna2jqxxhybai3q39mx5"))) (synopsis "Hyphenation patterns for Bulgarian") (description "The package provides hyphenation patterns for the Bulgarian language in T2A and UTF-8 encodings.") @@ -1422,7 +1378,7 @@ language in T2A and UTF-8 encodings.") "texlive-hyphen-catalan" "ca" (list "/tex/generic/hyph-utf8/patterns/tex/hyph-ca.tex") (base32 - "0cisx76jpw8kpd3an37m9h8ppiysnizgfzl48y9d9n3fvx8jyykb"))) + "10zzlfz5v8d9csg85ibpp2vfvmpqa56vbl85qy5gws099vygpayg"))) (synopsis "Hyphenation patterns for Catalan") (description "The package provides hyphenation patterns for Catalan in T1/EC and UTF-8 encodings.") @@ -1434,7 +1390,7 @@ T1/EC and UTF-8 encodings.") "texlive-hyphen-chinese" "zh-latn-pinyin" (list "/tex/generic/hyph-utf8/patterns/tex/hyph-zh-latn-pinyin.tex") (base32 - "07gbrn5fcl5d3hyg1zpai3zp1ggl73cmvpalwvh7ah313f57gjkk"))) + "1j68mry2zy91m1kbzwhin5q2jajf6xh48npdds8wvp1sqmzih2a3"))) (synopsis "Hyphenation patterns for unaccented Chinese pinyin") (description "The package provides hyphenation patterns for unaccented Chinese pinyin T1/EC and UTF-8 encodings.") @@ -1446,7 +1402,7 @@ Chinese pinyin T1/EC and UTF-8 encodings.") "texlive-hyphen-churchslavonic" "cu" (list "/tex/generic/hyph-utf8/patterns/tex/hyph-cu.tex") (base32 - "0xkqlz3ixyl4fxsnzrbxqrb82p0n67rhgpddbiyv3qwfnbr2b5a4"))) + "0fhbwaapq2213msbhgr0d1lw06ihmrqirxj092mn73d8ynl13qlh"))) (synopsis "Hyphenation patterns for Church Slavonic") (description "The package provides hyphenation patterns for Church Slavonic in UTF-8 encoding.") @@ -1459,7 +1415,7 @@ Slavonic in UTF-8 encoding.") (list "/tex/generic/hyph-utf8/patterns/tex-8bit/copthyph.tex" "/tex/generic/hyph-utf8/patterns/tex/hyph-cop.tex") (base32 - "07i03jpdfy4ip7zbg4gnk4hk8zwj8rlni9dgrb1p8mfw2w19d80c"))) + "1jlxxvyfa2aljizaa3qlcxyhqsrb4dawv3q3fbyp2lxz6ag9fy6m"))) (synopsis "Hyphenation patterns for Coptic") (description "The package provides hyphenation patterns for Coptic in UTF-8 encoding as well as in ASCII-based encoding for 8-bit engines.") @@ -1472,7 +1428,7 @@ UTF-8 encoding as well as in ASCII-based encoding for 8-bit engines.") "texlive-hyphen-croatian" "hr" (list "/tex/generic/hyph-utf8/patterns/tex/hyph-hr.tex") (base32 - "129nz2nqilyq2477n2clx20xfbxh1qxm69zg4n2f6c4d4a8711nc"))) + "12n9r2winai15jc622sqdwclgcs1s68r6vcf7ic8vvq0x9qhwc5v"))) (synopsis "Hyphenation patterns for Croatian") (description "The package provides hyphenation patterns for Croatian in T1/EC and UTF-8 encodings.") @@ -1484,7 +1440,7 @@ T1/EC and UTF-8 encodings.") "texlive-hyphen-czech" "cs" (list "/tex/generic/hyph-utf8/patterns/tex/hyph-cs.tex") (base32 - "1k5516gbfp1d5p97j247byag9sdgds5zwc11bwxfk58i6zq1v0m6"))) + "1q37s6p8yfyi3rp1azbz421lg4lr4aiki8m631i4x9rmps89m8iq"))) (synopsis "Hyphenation patterns for Czech") (description "The package provides hyphenation patterns for Czech in T1/EC and UTF-8 encodings.") @@ -1496,7 +1452,7 @@ and UTF-8 encodings.") "texlive-hyphen-danish" "da" (list "/tex/generic/hyph-utf8/patterns/tex/hyph-da.tex") (base32 - "0zxzs1b1723mav76i0wiyq4w82x8715cykvwa2bc60ldc2amv0vs"))) + "1vj8nip64rzcrcg3skm4vqad1ggqwgan74znrdns610wjcm1z9qd"))) (synopsis "Hyphenation patterns for Danish") (description "The package provides hyphenation patterns for Danish in T1/EC and UTF-8 encodings.") @@ -1509,7 +1465,7 @@ T1/EC and UTF-8 encodings.") "texlive-hyphen-dutch" "nl" (list "/tex/generic/hyph-utf8/patterns/tex/hyph-nl.tex") (base32 - "0cq46cmgjc4y2x0xs9b0a5zca3jmszv4rkzmrhgjb5z2nm3xkrpi"))) + "1bg9g790ksq5cn8qihai6pacmkp9vpf35h4771z361nvwa40l8yk"))) (synopsis "Hyphenation patterns for Dutch") (description "The package provides hyphenation patterns for Dutch in T1/EC and UTF-8 encodings.") @@ -1522,7 +1478,7 @@ and UTF-8 encodings.") (list "/tex/generic/hyph-utf8/patterns/tex/hyph-en-gb.tex" "/tex/generic/hyph-utf8/patterns/tex/hyph-en-us.tex") (base32 - "08hyih8hn2w2q12gc4zygz0ckbz00mkzzn9898z2bicky02zg3kc"))) + "08b3jihjaamcl1pvffi0s47nwavkm66l9mrrmby3l32dfpkprrc5"))) (synopsis "Hyphenation patterns for American and British English") (description "The package provides additional hyphenation patterns for American and British English in ASCII encoding.") @@ -1536,7 +1492,7 @@ American and British English in ASCII encoding.") "texlive-hyphen-esperanto" "eo" (list "/tex/generic/hyph-utf8/patterns/tex/hyph-eo.tex") (base32 - "03xbjbzasznsyf4wd45bya6f4snfmzpdzg5zpvqj5q6gjykdg54k"))) + "1503kzn9bk4mm4ba35cka2hm8rz0v3j5l30v5rrsd4rqgpibcgic"))) (synopsis "Hyphenation patterns for Esperanto") (description "The package provides hyphenation patterns for Esperanto ISO Latin 3 and UTF-8 encodings.") @@ -1548,7 +1504,7 @@ Latin 3 and UTF-8 encodings.") "texlive-hyphen-estonian" "et" (list "/tex/generic/hyph-utf8/patterns/tex/hyph-et.tex") (base32 - "0idl6xajkkgxqngjn19jcfd29is5rhfn59v0z8h4sv8yjv6k934m"))) + "1rdas2450ib02rwy65i69l86nyc9h15bl07xbbwhmhxfnj8zj4v8"))) (synopsis "Hyphenation patterns for Estonian") (description "The package provides hyphenation patterns for Estonian in T1/EC and UTF-8 encodings.") @@ -1558,53 +1514,17 @@ T1/EC and UTF-8 encodings.") (define-public texlive-hyphen-ethiopic (let ((template (texlive-hyphen-package "texlive-hyphen-ethiopic" "mul-ethi" - (list "/source/generic/hyph-utf8/languages/mul-ethi/generate_patterns_mul-ethi.lua") + (list "/tex/generic/hyph-utf8/patterns/tex/hyph-mul-ethi.tex") (base32 - "1dp5qn1mhv62kj27lqc7s0ca65z9bziyavkvif9ds5ivk7aq9drw")))) + "1b93fc6j4aybh0pgq23hsn1njm6asf7sfz803fbj3ai0whsxd10l")))) (package (inherit template) - (arguments - (substitute-keyword-arguments (package-arguments template) - ((#:phases phases) - `(modify-phases ,phases - (add-before 'build 'build-patterns - (lambda* (#:key inputs #:allow-other-keys) - (let ((tex (string-append (getcwd) - "/tex/generic/hyph-utf8/patterns/tex/"))) - (mkdir-p tex) - (with-directory-excursion "source/generic/hyph-utf8/languages/mul-ethi/" - (substitute* "generate_patterns_mul-ethi.lua" - (("\"UnicodeData.txt\"") - (string-append "\"" - (assoc-ref inputs "UnicodeData.txt") - "\""))) - (invoke "texlua" "generate_patterns_mul-ethi.lua") - (rename-file "hyph-mul-ethi.tex" - (string-append tex "/hyph-mul-ethi.tex")) - #t)))) - (add-after 'install 'install-hyph-mul-ethi.tex - (lambda* (#:key inputs outputs #:allow-other-keys) - (let* ((out (assoc-ref outputs "out")) - (target (string-append out "/share/texmf-dist/tex"))) - (copy-recursively "tex" target) - #t))))))) - (native-inputs - `(,@(package-native-inputs template) - ("texlive-bin" ,texlive-bin) - ("UnicodeData.txt" - ,(origin - (method url-fetch) - (uri (string-append "http://www.unicode.org/Public/10.0.0/ucd/" - "UnicodeData.txt")) - (sha256 - (base32 - "1cfak1j753zcrbgixwgppyxhm4w8vda8vxhqymi7n5ljfi6kwhjj")))))) (synopsis "Hyphenation patterns for Ethiopic scripts") (description "The package provides hyphenation patterns for languages written using the Ethiopic script for Unicode engines. They are not supposed to be linguistically relevant in all cases and should, for proper typography, be replaced by files tailored to individual languages.") - (license license:lppl)))) + (license license:expat)))) (define-public texlive-hyphen-finnish (package @@ -1612,7 +1532,7 @@ be replaced by files tailored to individual languages.") "texlive-hyphen-finnish" "fi" (list "/tex/generic/hyph-utf8/patterns/tex/hyph-fi.tex") (base32 - "03n6s8dwwa5vfk9bbyhcdf7p0bc0d1rrr312hpgbz8jfc9fbgd7n"))) + "1f72b4ydb4zddvw2i004948khmwzigxkdkwfym5v1kkq0183sfpj"))) (synopsis "Hyphenation patterns for Finnish") (description "The package provides hyphenation patterns for Finnish in T1/EC and UTF-8 encodings.") @@ -1624,7 +1544,7 @@ T1/EC and UTF-8 encodings.") "texlive-hyphen-french" "fr" (list "/tex/generic/hyph-utf8/patterns/tex/hyph-fr.tex") (base32 - "1q82mmwvy7fdkm42958ajb53w89qkcdwybswxlwcvqngvhpy3zf0"))) + "0jc3kqys6cxjw8x8pzjln7z78l8s7f5rlyrkv7dzr1kiwnwilk9d"))) (synopsis "Hyphenation patterns for French") (description "The package provides hyphenation patterns for French in T1/EC and UTF-8 encodings.") @@ -1636,7 +1556,7 @@ T1/EC and UTF-8 encodings.") "texlive-hyphen-friulan" "fur" (list "/tex/generic/hyph-utf8/patterns/tex/hyph-fur.tex") (base32 - "07m975p0ghzs9sjqqgxy7qdkqmgvg4rx4xp08zwm1parqsdlwd5d"))) + "1dlnh8slpf50mryxv7zzbx08xp54zkdfs1j7y37ipwbrajvd740f"))) (synopsis "Hyphenation patterns for Friulan") (description "The package provides hyphenation patterns for Friulan in ASCII encodings.") @@ -1645,50 +1565,15 @@ ASCII encodings.") (define-public texlive-hyphen-galician (let ((template (texlive-hyphen-package "texlive-hyphen-galician" "gl" - (list "/source/generic/hyph-utf8/languages/gl/README" - "/source/generic/hyph-utf8/languages/gl/glhybiox.tex" - "/source/generic/hyph-utf8/languages/gl/glhyextr.tex" - "/source/generic/hyph-utf8/languages/gl/glhymed.tex" - "/source/generic/hyph-utf8/languages/gl/glhyquim.tex" - "/source/generic/hyph-utf8/languages/gl/glhytec.tex" - "/source/generic/hyph-utf8/languages/gl/glhyxeog.tex" - "/source/generic/hyph-utf8/languages/gl/glpatter-utf8.tex") + (list "/tex/generic/hyph-utf8/patterns/tex/hyph-gl.tex") (base32 - "1yj1gxhkqqlyaand5gd6ij6xwffskryzlbcigdam3871a9p8x18w")))) + "13zx2r3nrxdr025g2lxrph0ga6wf7cs8dxixn4fhbl6xr1cx028g")))) (package (inherit template) - (arguments - (substitute-keyword-arguments (package-arguments template) - ((#:phases phases) - `(modify-phases ,phases - (add-before 'build 'build-patterns - (lambda* (#:key inputs #:allow-other-keys) - (let ((tex (string-append (getcwd) - "/tex/generic/hyph-utf8/patterns/tex/"))) - (mkdir-p tex) - (with-directory-excursion "source/generic/hyph-utf8/languages/gl/" - (setenv "TEXINPUTS" - (string-append (getcwd) "//:" - (assoc-ref inputs "texlive-mkpattern") "//")) - (invoke "tex" "-ini" "-8bit" "glpatter-utf8.tex") - (rename-file "hyph-gl.tex" - (string-append tex "/hyph-gl.tex")) - #t)))) - (add-after 'install 'install-hyph-gl.tex - (lambda* (#:key inputs outputs #:allow-other-keys) - (let* ((out (assoc-ref outputs "out")) - (target (string-append out "/share/texmf-dist/tex"))) - (copy-recursively "tex" target) - #t))))))) - (native-inputs - `(,@(package-native-inputs template) - ("texlive-bin" ,texlive-bin) - ("texlive-mkpattern" ,texlive-mkpattern))) (synopsis "Hyphenation patterns for Galician") (description "The package provides hyphenation patterns for Galician in T1/EC and UTF-8 encodings.") - ;; glhyextr.tex is the only file in the public domain. - (license (list license:lppl1.3 license:public-domain))))) + (license license:lppl1.3)))) (define-public texlive-hyphen-georgian (package @@ -1696,7 +1581,7 @@ T1/EC and UTF-8 encodings.") "texlive-hyphen-georgian" "ka" (list "/tex/generic/hyph-utf8/patterns/tex/hyph-ka.tex") (base32 - "01zhn6mflpiqw4lyi8dx8syiz5mky9jrxm87cgw31hanis5cml4l"))) + "0l0hk7ka04fr8x11nnw95x151cxyycy0fph772m3a3p8qk4x9wp7"))) (synopsis "Hyphenation patterns for Georgian") (description "The package provides hyphenation patterns for Georgian in T8M, T8K, and UTF-8 encodings.") @@ -1709,12 +1594,12 @@ T8M, T8K, and UTF-8 encodings.") (list "/tex/generic/hyph-utf8/patterns/tex/hyph-de-1901.tex" "/tex/generic/hyph-utf8/patterns/tex/hyph-de-1996.tex" "/tex/generic/hyph-utf8/patterns/tex/hyph-de-ch-1901.tex" - "/tex/generic/hyphen/dehyphn.tex" - "/tex/generic/hyphen/dehypht.tex" - "/tex/generic/hyphen/dehyphtex.tex" - "/tex/generic/hyphen/ghyphen.README") + "/tex/generic/dehyph/dehyphn.tex" + "/tex/generic/dehyph/dehypht.tex" + "/tex/generic/dehyph/dehyphtex.tex" + "/tex/generic/dehyph/README") (base32 - "1g0vhpvl2l69rn2lx7lkw0inrjbcxkj2sjgwd2fq7hdi4yb2ms76"))) + "0wp5by5kkf4ac6li5mbppqzw11500wa7f22p5vpz3m1kwd15zavw"))) (synopsis "Hyphenation patterns for German") (description "This package provides hyphenation patterns for German in T1/EC and UTF-8 encodings, for traditional and reformed spelling, including @@ -1733,7 +1618,7 @@ Swiss German.") "/tex/generic/hyphen/grmhyph5.tex" "/tex/generic/hyphen/grphyph5.tex") (base32 - "04626jhlrv2flgdygm7sfv6xpqhfwiavi16gy2ac04iliyk4rypg"))) + "1qyr6m1nh6d4wj68616cfxv4wjpiy1w2rlldxlx2ajzba381w3hf"))) (synopsis "Hyphenation patterns for Greek") (description "This package provides hyphenation patterns for Modern Greek in monotonic and polytonic spelling in LGR and UTF-8 encodings.") @@ -1747,7 +1632,7 @@ in monotonic and polytonic spelling in LGR and UTF-8 encodings.") "/doc/generic/hyph-utf8/hu/" "/tex/generic/hyph-utf8/patterns/tex/hyph-hu.tex") (base32 - "0c81w2569cqsi4j56azwz0lfx16541zhiqgmn3m4iwh7mpx3rji8"))) + "1j1b8kksg9r8nmjyjvvz8fr3hgcrjj6jlybf9p06nwrrwm2r8j8f"))) (synopsis "Hyphenation patterns for Hungarian") (description "This package provides hyphenation patterns for Hungarian in T1/EC and UTF-8 encodings.") @@ -1760,7 +1645,7 @@ T1/EC and UTF-8 encodings.") "texlive-hyphen-icelandic" "is" (list "/tex/generic/hyph-utf8/patterns/tex/hyph-is.tex") (base32 - "1ah1f82lgfhqgid4ngsfiypybx10v8gwxnb12396vfsj3bq6j0ba"))) + "1m9xj41csj3ldym09d82zjbd3345sg2z10d8pxpvhgibf97mb66h"))) (synopsis "Hyphenation patterns for Icelandic") (description "This package provides hyphenation patterns for Icelandic in T1/EC and UTF-8 encodings.") @@ -1783,7 +1668,7 @@ T1/EC and UTF-8 encodings.") "/tex/generic/hyph-utf8/patterns/tex/hyph-ta.tex" "/tex/generic/hyph-utf8/patterns/tex/hyph-te.tex") (base32 - "1v8zc3wdbkhzjrflndmz4gdj11syz8vrcg0vwvm5bwhkx23g91lv"))) + "02d2kcd3lpk95fykjwhzw9s2a1s2w1skz8h2mmszrz979d1xzhpm"))) (synopsis "Indic hyphenation patterns") (description "This package provides hyphenation patterns for Assamese, Bengali, Gujarati, Hindi, Kannada, Malayalam, Marathi, Oriya, Panjabi, Tamil @@ -1796,7 +1681,7 @@ and Telugu for Unicode engines.") "texlive-hyphen-indonesian" "id" (list "/tex/generic/hyph-utf8/patterns/tex/hyph-id.tex") (base32 - "0mf0hr9c952kb2hmzid7fqg5whshwpribbyndb3ba092wh02abh5"))) + "1r62w02rf0i4z0jgij54d16qjbj0zyfwm9dwdkqka76jrivij83q"))) (synopsis "Indonesian hyphenation patterns") (description "This package provides hyphenation patterns for Indonesian (Bahasa Indonesia) in ASCII encoding. They are probably also @@ -1809,7 +1694,7 @@ usable for Malay (Bahasa Melayu).") "texlive-hyphen-interlingua" "ia" (list "/tex/generic/hyph-utf8/patterns/tex/hyph-ia.tex") (base32 - "1aihgma3rix4jkc1z5k1lh6hlfrncn66yj0givd3j6xjqflafr2g"))) + "0a9na20vjnzhgjbicaxay0jk4rm5zg1rjyiswr377mjhd9mx5cg3"))) (synopsis "Interlingua hyphenation patterns") (description "This package provides hyphenation patterns for Interlingua in ASCII encoding.") @@ -1821,7 +1706,7 @@ in ASCII encoding.") "texlive-hyphen-irish" "ga" (list "/tex/generic/hyph-utf8/patterns/tex/hyph-ga.tex") (base32 - "02k1fykgj3xamczjq16i9fsjjsh78pp5ypmh93p64izk2vymfwk0"))) + "1h1l9jzkpsb91nyhz6s6c9jfrbz8jx5ip8vyq3dkz0rl6g960i6b"))) (synopsis "Irish hyphenation patterns") (description "This package provides hyphenation patterns for Irish (Gaeilge) in T1/EC and UTF-8 encodings.") @@ -1834,7 +1719,7 @@ Irish (Gaeilge) in T1/EC and UTF-8 encodings.") "texlive-hyphen-italian" "it" (list "/tex/generic/hyph-utf8/patterns/tex/hyph-it.tex") (base32 - "1a65q3hjn2p212cgv6p7wa0wcn34qnxcz2pl3v3ip0xmb16qqsk5"))) + "03c7jiqslfxvl3gbdx79hggbvrfi2l4z2bnwxc0na8f8lkp1m787"))) (synopsis "Italian hyphenation patterns") (description "This package provides hyphenation patterns for Italian in ASCII encoding. Compliant with the Recommendation UNI 6461 on hyphenation @@ -1848,7 +1733,7 @@ UNI).") "texlive-hyphen-kurmanji" "kmr" (list "/tex/generic/hyph-utf8/patterns/tex/hyph-kmr.tex") (base32 - "1145ykfd0b0hgklindlxdgkqmsnj3cai3cwgllz411yqmrhjc6y9"))) + "01ylbsi5wymrdrxr9b28nmjmcj72mdhqr657lwsb6m9aj33c9ql6"))) (synopsis "Kurmanji hyphenation patterns") (description "This package provides hyphenation patterns for Kurmanji (Northern Kurdish) as spoken in Turkey and by the Kurdish diaspora in @@ -1863,7 +1748,7 @@ Europe, in T1/EC and UTF-8 encodings.") "/tex/generic/hyph-utf8/patterns/tex/hyph-la-x-liturgic.tex" "/tex/generic/hyph-utf8/patterns/tex/hyph-la.tex") (base32 - "1d8d6b47r4r000gqgzyl0sy9is0y0dg41jp8fw4gqq8qmcgdxgsg"))) + "0rxg8a4s5cpj8vlkz5a74a036axda5jqgvr3f9aj2cc2x9f2f3w9"))) (synopsis "Liturgical Latin hyphenation patterns") (description "This package provides hyphenation patterns for Latin in T1/EC and UTF-8 encodings, mainly in modern spelling (u when u is needed and v @@ -1884,7 +1769,7 @@ T1/EC and UTF-8 encodings.") "texlive-hyphen-latvian" "lv" (list "/tex/generic/hyph-utf8/patterns/tex/hyph-lv.tex") (base32 - "1xbh5s6nwfjbv7g4kmcpjkm02a6s767p7jn9qjcnz5ip0ndl5g66"))) + "00jf8xma4ldz0zpqwma97k9q3j0mqx7qdj6b7baph3n5xgc24aaw"))) (synopsis "Latvian hyphenation patterns") (description "This package provides hyphenation patterns for Latvian in L7X and UTF-8 encodings.") @@ -1897,7 +1782,7 @@ L7X and UTF-8 encodings.") "texlive-hyphen-lithuanian" "lt" (list "/tex/generic/hyph-utf8/patterns/tex/hyph-lt.tex") (base32 - "0v9spw0qkygkihj5app2immzqqr98w81pz460bcgvj1ah35jdfsl"))) + "1kfq7j2ajg6nj952s1ygd520sj9z9kl0bqvd291a36ni2b1frzgd"))) (synopsis "Lithuanian hyphenation patterns") (description "This package provides hyphenation patterns for Lithuanian in L7X and UTF-8 encodings.") @@ -1912,7 +1797,7 @@ L7X and UTF-8 encodings.") (list "/tex/generic/hyph-utf8/patterns/tex/hyph-mn-cyrl-x-lmc.tex" "/tex/generic/hyph-utf8/patterns/tex/hyph-mn-cyrl.tex") (base32 - "0lqq3jgwgnclb1cn3x99xmk90xra9q51b00ypwy5crssmy023hqc"))) + "1y1b91ihrdl9bad3rxlsfjpd9wmyd5zzgci3qv9w8qqk33jxhwya"))) (synopsis "Mongolian hyphenation patterns in Cyrillic script") (description "This package provides hyphenation patterns for Mongolian in T2A, LMC and UTF-8 encodings.") @@ -1927,7 +1812,7 @@ T2A, LMC and UTF-8 encodings.") "/tex/generic/hyph-utf8/patterns/tex/hyph-nn.tex" "/tex/generic/hyph-utf8/patterns/tex/hyph-no.tex") (base32 - "1fxnf671yz0p3lmdkspna7fjh96br1jy6yf7v17yh4fxwry3s4yz"))) + "08gbwj64p4fckm199k52yp5lx65h9f4wwdkvl4pv4aa7k370jq9y"))) (synopsis "Norwegian Bokmal and Nynorsk hyphenation patterns") (description "This package provides hyphenation patterns for Norwegian Bokmal and Nynorsk in T1/EC and UTF-8 encodings.") @@ -1941,7 +1826,7 @@ Bokmal and Nynorsk in T1/EC and UTF-8 encodings.") "texlive-hyphen-occitan" "oc" (list "/tex/generic/hyph-utf8/patterns/tex/hyph-oc.tex") (base32 - "1y6j6ac9ncn79p7hnp6mdwdsw9ij14zyjby5iwdhpvzzn7yyc7p8"))) + "0vhjbq2nr58vhqwwky3cwx4dqiwjmmfwp81rb65mfpf0m8yypdfg"))) (synopsis "Occitan hyphenation patterns") (description "This package provides hyphenation patterns for Occitan in T1/EC and UTF-8 encodings. They are supposed to be valid for all the Occitan @@ -1950,13 +1835,26 @@ It ranges from the Val d'Aran within Catalunya, to the South Western Italian Alps encompassing the southern half of the French pentagon.") (license license:lppl1.0+))) +(define-public texlive-hyphen-pali + (package + (inherit (texlive-hyphen-package + "texlive-hyphen-pali" "pi" + (list "/tex/generic/hyph-utf8/patterns/tex/hyph-pi.tex") + (base32 + "1fak853s4ijdqgrnhwymaq1lh8jab3qfyxapdmf6qpg6bqd20kxq"))) + (synopsis "Panjabi hyphenation patterns") + (description "This package provides hyphenation patterns for Panjabi in +T1/EC encoding.") + ;; Can be used with either license. + (license (list license:expat license:lgpl3+ license:gpl3+)))) + (define-public texlive-hyphen-piedmontese (package (inherit (texlive-hyphen-package "texlive-hyphen-piedmontese" "pms" (list "/tex/generic/hyph-utf8/patterns/tex/hyph-pms.tex") (base32 - "00fqzymkg374r3dzf1y82k6b18bqrf688vnjv0vkvw5a45srlb5r"))) + "0xva3l2gwzkqw1sz64k5g5iprhdyr27w1mv8rxp8x62i5y3aqr1k"))) (synopsis "Piedmontese hyphenation patterns") (description "This package provides hyphenation patterns for Piedmontese in ASCII encoding. Compliant with 'Gramatica dla lengua piemonteisa' by @@ -1969,7 +1867,7 @@ Camillo Brero.") "texlive-hyphen-polish" "pl" (list "/tex/generic/hyph-utf8/patterns/tex/hyph-pl.tex") (base32 - "0dzq8ca96q7m5bslh51x8d30pdb86glh2gn3mmvq5ip813ckwh3s"))) + "1c22g99isxapv4xjrmsw24hhp1xb83wbgcxyd8j24mxdnizywxzm"))) (synopsis "Polish hyphenation patterns") (description "This package provides hyphenation patterns for Polish in QX and UTF-8 encodings.") @@ -1982,7 +1880,7 @@ and UTF-8 encodings.") "texlive-hyphen-portuguese" "pt" (list "/tex/generic/hyph-utf8/patterns/tex/hyph-pt.tex") (base32 - "1waxrmm33fd2qfc4kiaiblg8kwzasrvgq4j3l14z733d0hlg4rfz"))) + "00rkjy4p7893zs940bq3s4hp7al0skgxqggj5qfax0bx8karf30b"))) (synopsis "Portuguese hyphenation patterns") (description "This package provides hyphenation patterns for Portuguese in T1/EC and UTF-8 encodings.") @@ -1994,7 +1892,7 @@ T1/EC and UTF-8 encodings.") "texlive-hyphen-romanian" "ro" (list "/tex/generic/hyph-utf8/patterns/tex/hyph-ro.tex") (base32 - "12i1vryl51yhdpj163ahfyiy21rjmf4gkqgslpriirdjmyrwrs65"))) + "1ykb5v7ip6p3n34wq8qypfyrap4gg946by5rsl6ab0k5gv6ypsbf"))) (synopsis "Romanian hyphenation patterns") (description "This package provides hyphenation patterns for Romanian in T1/EC and UTF-8 encodings.") @@ -2007,7 +1905,7 @@ T1/EC and UTF-8 encodings.") "texlive-hyphen-romansh" "rm" (list "/tex/generic/hyph-utf8/patterns/tex/hyph-rm.tex") (base32 - "06wan8i4appc1zfvc0q4cgnfv1nj0qgk02w3sg56zc11hf8sywl9"))) + "0a1q9p6sp5n6a9w6xhwk03vmkrrmnh2md7g1k4qhnf0dc4h7dy9r"))) (synopsis "Romansh hyphenation patterns") (description "This package provides hyphenation patterns for Romansh in ASCII encodings. They are supposed to comply with the rules indicated by the @@ -2020,7 +1918,7 @@ Lia Rumantscha (Romansh language society).") "texlive-hyphen-russian" "ru" (list "/tex/generic/hyph-utf8/patterns/tex/hyph-ru.tex") (base32 - "09s4vq23x4vff08ykmf08dvcdradjzzwvyys8p2wk6jxaqp980s3"))) + "00sy7qh5f8ryxw36fwbyd1yi2hxhv7hmk99yp7dwh73n4mxv6lpl"))) (synopsis "Russian hyphenation patterns") (description "This package provides hyphenation patterns for Russian in T2A and UTF-8 encodings.") @@ -2033,7 +1931,7 @@ T2A and UTF-8 encodings.") (list "/doc/generic/hyph-utf8/sa/hyphenmin.txt" "/tex/generic/hyph-utf8/patterns/tex/hyph-sa.tex") (base32 - "0grnn09l4i5yridx10yhm6dg9sbhgc2pmsp1p6hrcy7lzkqwdvs3"))) + "0gi2qk0wf388h9n25gzhv0cdz67ph83wal8h3iz2sqnpdjsw8kpc"))) (synopsis "Sanskrit hyphenation patterns") (description "This package provides hyphenation patterns for Sanskrit and Prakrit in longdesc transliteration, and in Devanagari, Bengali, Kannada, @@ -2050,7 +1948,7 @@ Malayalam longdesc and Telugu scripts for Unicode engines.") "/tex/generic/hyph-utf8/patterns/tex/hyph-sh-latn.tex" "/tex/generic/hyph-utf8/patterns/tex/hyph-sr-cyrl.tex") (base32 - "0fhdfydyaspb8dwirlf24vn7y9dzwmhsld0mmw0fz1lmcfaj252n"))) + "0pwc9z0m5y6acq1vqm0da9akg156jbhxzvsfp2f8bsz5b99y5z45"))) (synopsis "Serbian hyphenation patterns") (description "This package provides hyphenation patterns for Serbian in T1/EC, T2A and UTF-8 encodings.") @@ -2063,7 +1961,7 @@ T1/EC, T2A and UTF-8 encodings.") "texlive-hyphen-slovak" "sk" (list "/tex/generic/hyph-utf8/patterns/tex/hyph-sk.tex") (base32 - "1cgw6fmyci3za3vsa49b6m74wqv582w0rpca7s9xva3hqm1m5qdg"))) + "0ppp53bbclp5c8wvx748krvrp5y5053khgkjnnv966a90fvp3vgd"))) (synopsis "Slovak hyphenation patterns") (description "This package provides hyphenation patterns for Slovak in T1/EC and UTF-8 encodings.") @@ -2075,7 +1973,7 @@ T1/EC and UTF-8 encodings.") "texlive-hyphen-slovenian" "sl" (list "/tex/generic/hyph-utf8/patterns/tex/hyph-sl.tex") (base32 - "1ixf2pxir9xf1gggq9k28xxglsq9bwqlghd9cl4amk5vrn5bjbds"))) + "02n8l9yf4hqyhbpsc1n6b2mggy09z6lq4dcb8ndiwawb6h0mp7s4"))) (synopsis "Slovenian hyphenation patterns") (description "This package provides hyphenation patterns for Slovenian in T1/EC and UTF-8 encodings.") @@ -2091,7 +1989,7 @@ T1/EC and UTF-8 encodings.") "texlive-hyphen-spanish" "es" (list "/tex/generic/hyph-utf8/patterns/tex/hyph-es.tex") (base32 - "0jgs0zzyk2wwrjbx2hqdh5qggrnik9xmsxygbfhlb7gdrcrs0mbj"))) + "1h3yg9vcq0lf7hxv0ahkqmyg269dxjs8m2mz8sgz5l1fxmvahvaj"))) (synopsis "Hyphenation patterns for Spanish") (description "The package provides hyphenation patterns for Spanish in T1/EC and UTF-8 encodings.") @@ -2103,7 +2001,7 @@ T1/EC and UTF-8 encodings.") "texlive-hyphen-swedish" "sv" (list "/tex/generic/hyph-utf8/patterns/tex/hyph-sv.tex") (base32 - "12sf9f43zwyzb4cn57yry8r4zmwdc7cfdljn3qwxwrny4m3sw4w8"))) + "1n7incy7n24pix1q2i8c3h7i78zpql5ayhskavlmy6mhd7ayncaw"))) (synopsis "Swedish hyphenation patterns") (description "This package provides hyphenation patterns for Swedish in T1/EC and UTF-8 encodings.") @@ -2115,7 +2013,7 @@ T1/EC and UTF-8 encodings.") "texlive-hyphen-thai" "th" (list "/tex/generic/hyph-utf8/patterns/tex/hyph-th.tex") (base32 - "15k1n4xdw8zzd5nrh76s53z4j95gxa4i2h1av5gx5vrjgblzzl97"))) + "00gxcs4jfqifd5cnrjipn77m73fmpw2qms4lp216jj3kz4a7h9kf"))) (synopsis "Thai hyphenation patterns") (description "This package provides hyphenation patterns for Thai in LTH and UTF-8 encodings.") @@ -2124,33 +2022,11 @@ and UTF-8 encodings.") (define-public texlive-hyphen-turkish (let ((template (texlive-hyphen-package "texlive-hyphen-turkish" "tr" - (list "/source/generic/hyph-utf8/languages/tr/generate_patterns_tr.rb") + (list "/tex/generic/hyph-utf8/patterns/tex/hyph-tr.tex") (base32 - "0rvlhs2z2sn312lqsf44bzknid5dry7d2sl2q1whfvr0y4qj1g8f")))) + "04sihjgpm31i5bi67rrfp15w3imn7hxwwk70v0vhx053ghxy72vh")))) (package (inherit template) - (arguments - (substitute-keyword-arguments (package-arguments template) - ((#:phases phases) - `(modify-phases ,phases - (add-before 'build 'build-patterns - (lambda _ - (let ((target (string-append (getcwd) - "/tex/generic/hyph-utf8/patterns/tex"))) - (mkdir-p target) - (with-directory-excursion "source/generic/hyph-utf8/languages/tr/" - (substitute* "generate_patterns_tr.rb" - (("\\$file = File.new.*") - (string-append "$file = File.new(\"" target - "/hyph-tr.tex\",\"w\")\n"))) - (invoke "ruby" "generate_patterns_tr.rb")) - #t))) - (add-after 'install 'install-hyph-tr.tex - (lambda* (#:key inputs outputs #:allow-other-keys) - (let* ((out (assoc-ref outputs "out")) - (target (string-append out "/share/texmf-dist/tex"))) - (copy-recursively "tex" target) - #t))))))) (synopsis "Hyphenation patterns for Turkish") (description "The package provides hyphenation patterns for Turkish in T1/EC and UTF-8 encodings. The patterns for Turkish were first produced for @@ -2163,37 +2039,15 @@ compatibility with 8-bit engines.") (define-public texlive-hyphen-turkmen (let ((template (texlive-hyphen-package "texlive-hyphen-turkmen" "tk" - (list "/source/generic/hyph-utf8/languages/tk/generate_patterns_tk.rb") + (list "/tex/generic/hyph-utf8/patterns/tex/hyph-tk.tex") (base32 - "1wlqx8wb0wsqhdv823brc3i8w1vf4m4bkb2vg917j5dq8p8p71aw")))) + "0g5ip2lw9g47s61mv3cypswc6qm7zy9c4iqq4h19ysvds81adzkr")))) (package (inherit template) - (arguments - (substitute-keyword-arguments (package-arguments template) - ((#:phases phases) - `(modify-phases ,phases - (add-before 'build 'build-patterns - (lambda _ - (let ((target (string-append (getcwd) - "/tex/generic/hyph-utf8/patterns/tex"))) - (mkdir-p target) - (with-directory-excursion "source/generic/hyph-utf8/languages/tk/" - (substitute* "generate_patterns_tk.rb" - (("\\$file = File.new.*") - (string-append "$file = File.new(\"" target - "/hyph-tr.tex\",\"w\")\n"))) - (invoke "ruby" "generate_patterns_tk.rb")) - #t))) - (add-after 'install 'install-hyph-tk.tex - (lambda* (#:key inputs outputs #:allow-other-keys) - (let* ((out (assoc-ref outputs "out")) - (target (string-append out "/share/texmf-dist/tex"))) - (copy-recursively "tex" target) - #t))))))) (synopsis "Hyphenation patterns for Turkmen") (description "The package provides hyphenation patterns for Turkmen in T1/EC and UTF-8 encodings.") - (license license:public-domain)))) + (license license:expat)))) (define-public texlive-hyphen-ukrainian (package @@ -2201,7 +2055,7 @@ T1/EC and UTF-8 encodings.") "texlive-hyphen-ukrainian" "uk" (list "/tex/generic/hyph-utf8/patterns/tex/hyph-uk.tex") (base32 - "17z0gmw5svsf5zlhjkckwk4y21g7prfwj473jlqnwcsr8a941gsf"))) + "0fbfhx1fmbshxr4ihsjaqgx251h69h7i288p8gh3w6ysgxr53p60"))) (synopsis "Ukrainian hyphenation patterns") (description "This package provides hyphenation patterns for Ukrainian in T2A and UTF-8 encodings.") @@ -2214,7 +2068,7 @@ T2A and UTF-8 encodings.") "texlive-hyphen-uppersorbian" "hsb" (list "/tex/generic/hyph-utf8/patterns/tex/hyph-hsb.tex") (base32 - "1q42s32cfbynlnzn9hpcldi77fszi5xkn1c85l8xqjmfydqbqdyi"))) + "0x0051wph3sqmzzw6prvjy6bp7gn02rbmys1bmbc210jk3pkylfj"))) (synopsis "Upper Sorbian hyphenation patterns") (description "This package provides hyphenation patterns for Upper Sorbian in T1/EC and UTF-8 encodings.") @@ -2226,7 +2080,7 @@ in T1/EC and UTF-8 encodings.") "texlive-hyphen-welsh" "cy" (list "/tex/generic/hyph-utf8/patterns/tex/hyph-cy.tex") (base32 - "0h8yjj5zdg0hvpb2vx9gi376536nl59hp8w286z1a13diaayg1m2"))) + "1bpxp3jiifdw7waw2idz5j9xgi3526nkxm8mbmsspr4mlf2xyr76"))) (synopsis "Welsh hyphenation patterns") (description "This package provides hyphenation patterns for Welsh in T1/EC and UTF-8 encodings.") @@ -2255,7 +2109,7 @@ T1/EC and UTF-8 encodings.") "/doc/generic/hyph-utf8/img/miktex-languages.png" "/doc/generic/hyph-utf8/img/texlive-collection.png") (base32 - "10y8svgk68sivmgzrv8gv137r7kv49cs256cq2wja9ms437pxvbj"))) + "1bar5mc808ch20anhqrdxcwiych359qsvr7mggxpg2l2kq5xdyq0"))) (outputs '("out" "doc")) (build-system gnu-build-system) (arguments @@ -2388,7 +2242,7 @@ converters, will completely supplant the older patterns.") (list "/tex/generic/dehyph-exptl/" "/doc/generic/dehyph-exptl/") (base32 - "1w2danvvy2f52hcb4acvjks53kcanwxr9s990fap6mj279hpgmh2") + "1fnqc63gz8gvdyfz45bx8dxn1r1rwrypahs3bqd2vlc8ff76xp86") #:trivial? #t)) (propagated-inputs `(("texlive-hyphen-base" ,texlive-hyphen-base) @@ -2495,7 +2349,7 @@ UCY (Omega Unicode Cyrillic), LCY, LWN (OT2), and koi8-r.") "/web2c/tcvn-t5.tcx" "/web2c/viscii-t5.tcx") (base32 - "0ajfp9kr330lcm2ymr3kl9zn6y2xjkrzpa0c0azc4qdm5jllawb9") + "191i8n3g46p53bb9dkx2ggwpzy7skgg0pbklsrpx8x4ayd86wcaf") #:trivial? #t)) (home-page "https://www.tug.org/texlive/") (synopsis "Files related to the path searching library for TeX") @@ -2528,18 +2382,16 @@ formats.") ;; these are not: "/tex/latex/base/idx.tex" "/tex/latex/base/lablst.tex" - "/tex/latex/base/lppl.tex" "/tex/latex/base/ltnews.cls" "/tex/latex/base/ltxcheck.tex" "/tex/latex/base/ltxguide.cls" "/tex/latex/base/minimal.cls" "/tex/latex/base/sample2e.tex" "/tex/latex/base/small2e.tex" - "/tex/latex/base/source2e.tex" "/tex/latex/base/testpage.tex" "/tex/latex/base/texsys.cfg") (base32 - "0f8d41wk1gb7i6xq1a10drwhhayc50pg9nwzjkrqnxrv0pcc08w5") + "0m0gjb4hbsf2iqkkx3px4f28r2scjvsjv4zb2whkbnb44apyw1f0") #:trivial? #t))) (package (inherit template) @@ -2552,6 +2404,13 @@ formats.") (srfi srfi-26))) ((#:phases phases) `(modify-phases ,phases + ;; The literal tab in the dtx file is translated to the string + ;; "^^I" in the generated Lua file, which causes a syntax error. + (add-after 'unpack 'fix-lua-sources + (lambda _ + (substitute* "source/latex/base/ltluatex.dtx" + ((" ") " ")) + #t)) (replace 'build (lambda* (#:key inputs #:allow-other-keys) ;; Find required fonts @@ -2594,6 +2453,7 @@ formats.") '("aleph aleph" "lamed aleph" "uptex uptex" "euptex euptex" "eptex eptex" "ptex ptex" "pdfxmltex pdftex" "platex eptex" "csplain pdftex" "mf mf-nowin" "mex pdftex" "pdfmex pdftex" + "luacsplain luatex" "cont-en xetex" "cont-en pdftex" "pdfcsplain xetex" "pdfcsplain pdftex" "pdfcsplain luatex" "cslatex pdftex" "mptopdf pdftex" "uplatex euptex" "jadetex pdftex" @@ -2652,7 +2512,7 @@ formats.") "/tex/generic/config/luatexiniconfig.tex" "/web2c/texmfcnf.lua") (base32 - "0cs67a8wwh4s5p5gn8l49jyccgy7glw8mfq5klgn3dfsl2fdlhk7"))))) + "1gi87wy12r8w8fhx9ajcid382dmqzf6b9070b5nndvbbjrvhwf23"))))) (propagated-inputs `(("texlive-dehyph-exptl" ,texlive-dehyph-exptl) ("texlive-etex" ,texlive-etex) @@ -2697,6 +2557,7 @@ formats.") ("texlive-hyphen-mongolian" ,texlive-hyphen-mongolian) ("texlive-hyphen-norwegian" ,texlive-hyphen-norwegian) ("texlive-hyphen-occitan" ,texlive-hyphen-occitan) + ("texlive-hyphen-pali" ,texlive-hyphen-pali) ("texlive-hyphen-piedmontese" ,texlive-hyphen-piedmontese) ("texlive-hyphen-polish" ,texlive-hyphen-polish) ("texlive-hyphen-portuguese" ,texlive-hyphen-portuguese) @@ -2738,7 +2599,7 @@ contain.") (file-name (string-append name "-" version "-checkout")) (sha256 (base32 - "0swkbxv8vg0yizadfnvrwjb4cj0pn34v9wm6v7wqq903fdav7k7q")))) + "1h78zw0vhldx478zs4v86ajg7vpkysd1kg3npc480qqls3q6ba40")))) (build-system texlive-build-system) (arguments '(#:tex-directory "latex/filecontents")) (home-page "https://www.ctan.org/pkg/filecontents") @@ -2803,19 +2664,13 @@ users, via its Plain TeX version.)") (define-public texlive-latex-fancyvrb (package - (name "texlive-latex-fancyvrb") - (version (number->string %texlive-revision)) - (source (origin - (method svn-fetch) - (uri (texlive-ref "latex" "fancyvrb")) - (file-name (string-append name "-" version "-checkout")) - (sha256 - (base32 - "03l7140y031rr14h02i4z9zqsfvrbn7wzwxbjsrjcgrk6sdr71wv")))) - (build-system texlive-build-system) - (arguments - '(#:tex-directory "latex/fancyvrb" - #:tex-format "latex")) + (inherit (simple-texlive-package + "texlive-latex-fancyvrb" + (list "/doc/latex/fancyvrb/README" + "/tex/latex/fancyvrb/") + (base32 + "1dwkcradz9nwpjwmv1sjzn77lvw25ypr0rrgmf1kd8pd2mw7dxcn") + #:trivial? #t)) (home-page "https://www.ctan.org/pkg/fancyvrb") (synopsis "Sophisticated verbatim text") (description @@ -2968,7 +2823,7 @@ pdf and HTML backends. The package is distributed with the @code{backref} and (file-name (string-append name "-" version "-checkout")) (sha256 (base32 - "1m9fg8ddhpsl1212igr9a9fmj012lv780aghjn6fpidg2wqrffmn")))) + "0pi2d6gsddcs9wprdbar46s91kdc5fxl1m79g7xrbccsx8s9xbml")))) (build-system texlive-build-system) (arguments '(#:tex-directory "latex/oberdiek" @@ -3001,7 +2856,7 @@ arrows; record information about document class(es) used; and many more.") (file-name (string-append name "-" version "-checkout")) (sha256 (base32 - "0vj7h1fgf1396h4qjdc2m07y08i54gbbfrxl8y327cn3r1n093s6")))) + "1wqvn4z0s92h5iqzrvxw7hinzp95avjk9v8lnqbqr4kz6nv4xb9l")))) (build-system texlive-build-system) (arguments '(#:tex-directory "latex/tools" @@ -3070,7 +2925,7 @@ Live distribution.") (file-name (string-append name "-" version "-checkout")) (sha256 (base32 - "0p3fsxap1ilwjz356aq4s5ygwvdscis8bh93g8klf8mhrd8cr2jy")))) + "0s77z2cbv841l45qrpf0s8qhzfa4wi689lg7zkw88qg18nzvy0ly")))) (build-system texlive-build-system) (arguments '(#:tex-directory "latex/l3kernel")) @@ -3094,7 +2949,7 @@ that the LaTeX3 conventions can be used with regular LaTeX 2e packages.") (file-name (string-append name "-" version "-checkout")) (sha256 (base32 - "0pyx0hffiyss363vv7fkrcdiaf7p099xnq0mngzqc7v8v9q849hs")))) + "1cv4fk9pabh7mkxhfsdmh4k8xpmzg1psgcsvd11c869m7n3a629h")))) (build-system texlive-build-system) (arguments '(#:tex-directory "latex/l3packages" @@ -3149,7 +3004,7 @@ programming tools and kernel support. Packages provided in this release are: (file-name (string-append name "-" version "-checkout")) (sha256 (base32 - "1p0mkn6iywl0k4m9cx3hnhylpi499inisff3f72pcf349baqsnvq")))) + "1223cw029n6zff7pqpwbsq1x8v3w63smczkmnybqxkw5h2za8gbz")))) (build-system texlive-build-system) (arguments '(#:tex-directory "latex/fontspec" @@ -3332,7 +3187,7 @@ loading fonts by their proper names instead of file names.") (file-name (string-append name "-" version "-checkout")) (sha256 (base32 - "0arvk7gn32mshnfdad5qkgf3i1arxq77k3vq7wnpm4nwnrzclxal")))) + "0qgk2332dacsxn1z95qzp35gbs7wrzl1ipjdhnmk1r897msm4sf5")))) (build-system texlive-build-system) (arguments '(#:tex-directory "latex/amsmath")) (home-page "https://www.ctan.org/pkg/amsmath") @@ -3385,7 +3240,7 @@ distribution.") (file-name (string-append name "-" version "-checkout")) (sha256 (base32 - "0yhlfiz3fjc8jd46f1zrjj4jig48l8rrzh8cmd8ammml8z9a01z6")))) + "1rwqq841i1rxywymzwkw0cw2yhgvxwjx5mgygfasvypwrwll6f6s")))) (build-system texlive-build-system) (arguments '(#:tex-directory "generic/babel" @@ -3442,7 +3297,7 @@ for Canadian and USA text.") (file-name (string-append name "-" version "-checkout")) (sha256 (base32 - "0h47s67gnhdaxfgbf8pirp5vw4z6rrhxl8zav803yjxka0096i3y")))) + "129f9w41cb6yyrr6kpv3zz9ml6334hyq1wcz7j9jn47p0hlxqfk8")))) (build-system texlive-build-system) (arguments '(#:tex-directory "generic/babel-german")) (home-page "https://www.ctan.org/pkg/babel-german") @@ -3656,7 +3511,7 @@ standard LaTeX packages." (number->string %texlive-revision))) (sha256 (base32 - "06mwpy5i218g5k3sf4gba0fmxgas82hkzx9fhwn67z5ik37d8apq")))))) + "0faqknqxs80qp9ywk0by5k85s0yalg97c4lja4q56lsyblrr4j7i")))))) (home-page (package-home-page texlive-bin)) (synopsis "Union of TeX Live packages") (description "This package provides a subset of the TeX Live @@ -4131,10 +3986,10 @@ to something that's not a float.") (package (inherit (simple-texlive-package "texlive-doi" - (list "/doc/latex/doi/README" + (list "/doc/latex/doi/README.md" "/tex/latex/doi/") (base32 - "17lnnhfmb8g4nh4fnyc9616h8xg3vjrzmlvfmlfqwwlfpma9xnnw") + "18z9922lqb3hliqn95h883fndqs4lgyi5yqbnq2932ya0imc3j7h") #:trivial? #t)) (home-page "https://www.ctan.org/pkg/doi") (synopsis "Create correct hyperlinks for DOI numbers") @@ -4158,7 +4013,7 @@ hyperlink to the target of the DOI.") (list "/doc/latex/etoolbox/" "/tex/latex/etoolbox/") (base32 - "1qg4x5r4ibinl6zy5lq70lv4zcrjsn54n6hwv31k5kl7mwv0mvr3") + "1cc1vw1ach55g4ff4x30by8k1mg01w199ccxvn72f5khlnnxial0") #:trivial? #t)) (home-page "https://www.ctan.org/pkg/etoolbox") (synopsis "e-TeX tools for LaTeX") @@ -4260,7 +4115,7 @@ course of the framed/shaded matter. There is also a command (file-name (string-append name "-" version "-checkout")) (sha256 (base32 - "0sikazkg0dpkcpzlbqw8qzxr81paf2f443vsrh14jnw7s4gswvc5")))) + "1br4kv9y17cvngp83ykpvy7gy3jqfan5plk7sggcgbdfhndi5dsr")))) (build-system texlive-build-system) (arguments '(#:tex-directory "latex/g-brief" @@ -4333,7 +4188,7 @@ BibLaTeX, and is considered experimental.") (file-name (string-append name "-" version "-checkout")) (sha256 (base32 - "0yw6bjfgsli3s1dldsgb7mkr7lnk329cgdjbgs8z2xn59pmmdsn4")))) + "0a8f38c2ds1flxcr0apdpyaaz3k6fyalz6dkbrmcv9srjc40mh3n")))) (build-system texlive-build-system) (arguments '(#:tex-directory "latex/geometry")) (propagated-inputs @@ -4384,7 +4239,7 @@ array environments; verbatim handling; and syntax diagrams.") (file-name (string-append name "-" version "-checkout")) (sha256 (base32 - "03ma58z3ypsbp7zgkzb1ylpn2ygr27cxzkf042ns0rif4g8s491f")))) + "0na7v4hsyx5s67cpjj2dbnq8j67k8lln6b19hmj631gfs27slss1")))) (build-system texlive-build-system) (arguments '(#:tex-directory "latex/polyglossia")) (home-page "https://www.ctan.org/pkg/polyglossia") @@ -4430,7 +4285,7 @@ situations where longtable has problems.") (file-name (string-append name "-" version "-checkout")) (sha256 (base32 - "06cf821y1j7jdg93pb41ayigrfwgn0y49d7w1025zlijjxi6bvjp")))) + "16jy02m089m7n6v9vbfi4xjgngc1fnvsmmppk8axfwzbhdky3c9c")))) (build-system trivial-build-system) (arguments `(#:modules ((guix build utils)) @@ -4604,7 +4459,7 @@ copy-and-paste functions work properly.") (file-name (string-append name "-" version "-checkout")) (sha256 (base32 - "190pmq8la2rq07xry8bn8z8yywzxv6fqyqaj7yjfj5rgw6x0mas8")))) + "16vd99p01a0y30xr5yf1z2j5da9x8gy21vb30wk08jh31zffbaqj")))) (build-system texlive-build-system) (arguments '(#:tex-directory "latex/colortbl")) (home-page "https://www.ctan.org/pkg/colortbl") @@ -4663,7 +4518,7 @@ floats, center, flushleft, and flushright, lists, and pages.") (file-name (string-append name "-" version "-checkout")) (sha256 (base32 - "1xsnzx7vgdfh9zh2m7bjz6bgdpxsgb1kyc19p50vhs34x5nbgsnr")))) + "0hrwspqkqfahxyzzsnjyrxlgxj06zw1f3636gx76pvl4xhvdj1cj")))) (build-system trivial-build-system) (arguments `(#:modules ((guix build utils)) @@ -4741,7 +4596,7 @@ footnotes with symbols rather than numbers.") (file-name (string-append name "-" version "-checkout")) (sha256 (base32 - "1nsn9wp3wl12b36c0sqrim33lf33cr5wky0h4ncnw8lvqgm7h8wf")))) + "1fbrhqj22vzakn30j71fc41l8nliqbv1dmxm0zlwi2qjjbq6fwav")))) (build-system texlive-build-system) (arguments '(#:tex-directory "latex/listings" @@ -4875,7 +4730,7 @@ fonts are available in (traced) Adobe Type 1 format, as part of the set, Latin Modern, is not actually a direct development of the EC set, and differs from the EC in a number of particulars.") (license (license:fsf-free "https://www.tug.org/svn/texlive/tags/\ -texlive-2018.2/Master/texmf-dist/doc/fonts/ec/copyrite.txt")))) +texlive-2019.3/Master/texmf-dist/doc/fonts/ec/copyrite.txt")))) ;; FIXME: the fonts should be built from source, but running "tex aefonts.tex" ;; fails with obscure TeX-typical error messages. @@ -5096,7 +4951,7 @@ one of the packages @code{calrsfs} and @code{mathrsfs}.") (file-name (string-append name "-" version "-checkout")) (sha256 (base32 - "1xvmms28mvvfpks9x7lfya2xhh5k8jy3qnlih1mzcnf156xnb89z")))) + "0y2y08kr3w6asm9lblj9yywqmhaal36fq71zzcbfsc7cvwf641q7")))) (build-system texlive-build-system) (arguments '(#:tex-directory "latex/eso-pic")) (home-page "https://www.ctan.org/pkg/eso-pic") @@ -5158,7 +5013,7 @@ splines, and filled circles and ellipses. The package uses @code{tpic} (file-name (string-append name "-" version "-checkout")) (sha256 (base32 - "0q24b1bkdi9l6bw787bpggww83jh2vj8955aw2m5yccqbx4vgr5r")))) + "1vm9xp67hzif0pqab4r3ialf0cyhi0fa4p8kxgp1ymcf85pqip14")))) (build-system trivial-build-system) (arguments `(#:modules ((guix build utils)) @@ -5190,7 +5045,7 @@ in the form @code{key=value} are available, for example: (file-name (string-append name "-" version "-checkout")) (sha256 (base32 - "0qlxy47f1f8plgch3jqfsnrdgpyz20sz46yp33i2jwvf9hvfczf0")))) + "07vbcp6avdwldr870cwf65av2s9lfyzcpp8gpld53yw6lcxgaipj")))) (build-system texlive-build-system) (arguments '(#:tex-directory "latex/multirow")) (home-page "https://www.ctan.org/pkg/multirow") @@ -5215,7 +5070,7 @@ entry at the \"natural\" width of its text.") (file-name (string-append name "-" version "-checkout")) (sha256 (base32 - "1rpx4ibjncj5416rg19v0xjbj3z9avhfdfn2gzp8r8sz9vz25c6g")))) + "1pr6ym3ad7x14ng7gmhsmywh3685d2cnm5qgyrqbigng2r6fcc1k")))) (build-system trivial-build-system) (arguments `(#:modules ((guix build utils)) @@ -5251,7 +5106,7 @@ positions; a grid for orientation is available.") (file-name (string-append name "-" version "-checkout")) (sha256 (base32 - "14r6h9hqb0qgccxj5l1208694fx8sb8avmgzps36lsbbpszl7i7m")))) + "0j1fhm1m9k6rz80lmch3x44g20y9nm4abaaf8czb0q8hzwlx5aq5")))) (build-system trivial-build-system) (arguments `(#:modules ((guix build utils)) @@ -5602,7 +5457,7 @@ OT2 encoded fonts, CM bright shaped fonts and Concrete shaped fonts.") (file-name (string-append name "-" version "-checkout")) (sha256 (base32 - "0sf18pc6chgy26p9bxxn44xcqhzjrfb53jxjr2y7l3jb6xllhblq")))) + "1xyd57c8z1xi0kbqpbad61flcazz68i9ssxrag0gjvci3irxi8xh")))) (build-system trivial-build-system) (arguments `(#:modules ((guix build utils)) @@ -5631,7 +5486,7 @@ than the bitmaps Metafont creates.") (uri (texlive-ref "latex" "acmart")) (sha256 (base32 - "0n62cs8dhcbn29y9ij1nnyigzr76yhk36kyahhqkkmvbafbys9s7")) + "18rl67p2zhngskisnhv78mksv8q8q658l6igkswzswldixmkpphq")) (file-name (string-append name "-" version "-checkout")))) (build-system texlive-build-system) (arguments '(#:tex-directory "latex/acmart")) @@ -5869,7 +5724,7 @@ e-TeX.") (file-name (string-append name "-map-" version "-checkout")) (sha256 (base32 - "18jvcm0vwpg6wwzijvnb92xx78la45kkh71k6l44425krp2vnwm0")))))) + "03rfif2631pgd8g1ar4xblcdh078kky7fvw3kfsj5a47rxxgicp2")))))) (home-page "https://www.ctan.org/pkg/pdftex") (synopsis "TeX extension for direct creation of PDF") (description @@ -5880,7 +5735,7 @@ directly generate PDF documents instead of DVI.") (define texlive-texmf (package (name "texlive-texmf") - (version "20180414") + (version "20190410") (source texlive-texmf-src) (build-system gnu-build-system) (inputs @@ -5957,7 +5812,7 @@ This package contains the complete tree of texmf-dist data.") (define-public texlive (package (name "texlive") - (version "20180414") + (version "20190410") (source #f) (build-system trivial-build-system) (inputs `(("bash" ,bash) ; for wrap-program @@ -6364,7 +6219,7 @@ required: automatic sectioning and pagination, spell checking and so forth.") (file-name (string-append name "-" version "-checkout")) (sha256 (base32 - "0lhb2h5hxjq9alpk4r3gvg21pwyifs4ah6hqzp92k55mkp1xv73j")))) + "0s86v2b6b1vky1svmmn8pn0l2gz3v280mvjbr2d9l2sjyarlgz9w")))) (build-system trivial-build-system) (arguments `(#:modules ((guix build utils)) @@ -6404,7 +6259,7 @@ specification. It replaces the now obsolete @code{movie15} package.") (file-name (string-append name "-" version "-checkout")) (sha256 (base32 - "0zp00jg058djx8xp0xqwas92y3j97clkyd8z6pqr890yqy06myqb")))) + "1yhp51w8yr10c10pc9196q7hlw80brzqinnqbjw81d0sf2p0llc5")))) (build-system trivial-build-system) (arguments `(#:modules ((guix build utils)) @@ -6605,7 +6460,7 @@ striking out (line through words) and crossing out (/// over words).") (file-name (string-append name "-" version "-checkout")) (sha256 (base32 - "1dq8p10pz8wn0vx412m7d7d5gj1syxly3yqdqvf7lv2xl8zndn5h")))) + "1dscrgwyr71vgx35mzb316xl669arzagfgq50fdv3nxga63959b3")))) (build-system trivial-build-system) (native-inputs `(("texlive-latex-pgf-generic" @@ -6619,7 +6474,7 @@ striking out (line through words) and crossing out (/// over words).") (file-name (string-append "texlive-latex-pgf-generic" version "-checkout")) (sha256 (base32 - "0xkxw26sjzr5npjpzpr28yygwdbhzpdd0hsk80gjpidhcxmz393i")))))) + "0hk5x2j15n4pps279cmkbjl1dvhasq3mbhna5xdvp2qgh635ahks")))))) (propagated-inputs `(("texlive-latex-xcolor" ,texlive-latex-xcolor))) (arguments @@ -6663,7 +6518,7 @@ produce either PostScript or PDF output.") (file-name (string-append name "-" version "-checkout")) (sha256 (base32 - "0nqwf0sr4mf3v9gqa6apv6ml2xhcdwax0vgyf12a672g7rpdyvgm")))) + "1vz9zg7s5w52xr323zgglzprfrvba2zvyzf6b8vrdf4wdghlpv4z")))) (build-system trivial-build-system) (arguments `(#:modules ((guix build utils) @@ -6723,7 +6578,7 @@ typearea (which are the main parts of the bundle).") (file-name (string-append name "-" version "-checkout")) (sha256 (base32 - "0hs28fc0v2l92ad9las9b8xcckyrdrwmyhcx1yzmbr6s7s6nvsx8")))) + "1x4wnpca97rnbvvg6wjmbkxxvnfva274q9ahzx746b435q93z3i1")))) (build-system trivial-build-system) (arguments `(#:modules ((guix build utils)) @@ -6912,7 +6767,7 @@ AMS-LaTeX, AMS-TeX, and plain TeX). The distribution includes Michael Barr's (file-name (string-append name "-" version "-checkout")) (sha256 (base32 - "0hnbs0s1znbn32hfcsyijl39z81sdb00jf092a4blqz421qs2mbv")))) + "1wijqq605cbhn2bdaryby3xpkwmnk9ixcrjn5zwlfrxbgfblzfmz")))) (build-system trivial-build-system) (arguments `(#:modules ((guix build utils)) @@ -6971,7 +6826,7 @@ Support for use with LaTeX is available in @code{freenfss}, part of (file-name (string-append name "-" version "-checkout")) (sha256 (base32 - "0rlx4qqijms1n64gjx475kvip8l322fh7v17zkmwp1l1g0w3vlyz")))) + "0d7d74giz5knvj4rj6mbzd6c05mwg9jrxab86jxdqbc3jy7cl4kz")))) (build-system trivial-build-system) (arguments `(#:modules ((guix build utils)) @@ -6997,7 +6852,7 @@ of support information.") (list "/doc/latex/beamer/" "/tex/latex/beamer/") (base32 - "00z1a32wkz1ffif7dc8h3ar2fn2hlvfnljgim2szjam2k14l82x3") + "1fqzbkmw2kfxihab8j4dadc3v68xap6v2ghpp2064fna47xlwy1c") #:trivial? #t)) (propagated-inputs `(("texlive-latex-hyperref" ,texlive-latex-hyperref) @@ -7056,7 +6911,7 @@ the file to which it applies.") (file-name (string-append name "-" version "-checkout")) (sha256 (base32 - "0ikxg8yzq78hy5b9x13d4nah46d0yvmwlqmdri06pygbx116dcac")))) + "18294h0cr05fs424m3x6aq24z5hf5zmiflalkj4kvpmsyyqqsj74")))) (build-system texlive-build-system) (arguments '(#:tex-directory "latex/pdfx" @@ -7090,7 +6945,7 @@ the file to which it applies.") (file-name (string-append "texlive-tex-latex-pdfx-" version "-checkout")) (sha256 (base32 - "14j1zsvqc59ims3sk34v6km8db6cimks28y5fcxcr5mi2ykvj4vf")))))) + "171ffvpkj2fab4ljcxv3l6l5c8ga8zavdhmhfq07id8zyyr619ip")))))) (home-page "https://www.ctan.org/pkg/pdfx") (synopsis "PDF/X and PDF/A support for pdfTeX, LuaTeX and XeTeX") (description @@ -7154,7 +7009,7 @@ change.") "/tex/generic/pstricks/" "/tex/latex/pstricks/") (base32 - "04566354c77claxl1sznc490cda0m5gaa5ck6ms4q7mm44rj3rzk") + "0sdxdd0qi4sccw9il7d4s7jivs24pq99cdzfnrf0gkqjb1y8s7cl") #:trivial? #t))) (package (inherit template) @@ -7178,12 +7033,11 @@ or shading the cells of tables.") (let ((template (simple-texlive-package "texlive-pst-text" (list "/doc/generic/pst-text/" - "/source/generic/pst-text/Makefile" "/dvips/pst-text/pst-text.pro" "/tex/generic/pst-text/" "/tex/latex/pst-text/") (base32 - "0s2bbkdfy0shqrrkjflrn0x0pnvxzbdc38pjbdfw46wnmnxrnasm") + "146fpzd1xlqi94q5r48z8ni8qww713yh6nwkbr9pw27mjrqdadb9") #:trivial? #t))) (package (inherit template) @@ -7248,7 +7102,7 @@ LuaTeX (respectively) is not the engine in use.") (list "/doc/latex/tools/" "/source/latex/tools/") (base32 - "0v3zqcpy0w5bzy1xdcv1wnxbmxrn1j6x03h3y2af7qmjggph2a09")))) + "1ivhij7171wvrgcjn4wah84wxwpd21d0chh3zxab4pj067c8d0mh")))) (package (inherit template) (arguments @@ -7391,7 +7245,7 @@ The behaviour in standalone mode may adjusted using a configuration file (list "/source/latex/siunitx/siunitx.dtx" "/doc/latex/siunitx/README.md") (base32 - "0dmljnxgv2bwl3mi74iil41q03swvrm1b0ziwxlhc4m9lx31b1q1"))) + "11kf6znkgw7y5qmw75qk6px6pqf57bwr53q0673zaiyq20lif96c"))) (build-system texlive-build-system) (arguments '(#:tex-directory "latex/siunitx" diff --git a/gnu/packages/texinfo.scm b/gnu/packages/texinfo.scm index 4042353a2d..70e050371d 100644 --- a/gnu/packages/texinfo.scm +++ b/gnu/packages/texinfo.scm @@ -4,7 +4,10 @@ ;;; Copyright © 2015 Mark H Weaver <mhw@netris.org> ;;; Copyright © 2017, 2019 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2019 Ricardo Wurmus <rekado@elephly.net> +;;; Copyright © 2019 Pierre-Moana Levesque <pierre.moana.levesque@gmail.com> +;;; Copyright © 2019 Mathieu Othacehe <m.othacehe@gmail.com> ;;; Copyright © 2020 Nicolas Goaziou <mail@nicolasgoaziou.fr> +;;; Copyright © 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org> ;;; ;;; This file is part of GNU Guix. ;;; @@ -22,10 +25,12 @@ ;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>. (define-module (gnu packages texinfo) + #:use-module (gnu packages autotools) #:use-module (guix licenses) #:use-module (guix packages) #:use-module (guix utils) #:use-module (guix download) + #:use-module (guix utils) #:use-module (guix git-download) #:use-module (guix build-system gnu) #:use-module (gnu packages) @@ -39,17 +44,41 @@ (define-public texinfo (package (name "texinfo") - (version "6.6") + (version "6.7") (source (origin (method url-fetch) (uri (string-append "mirror://gnu/texinfo/texinfo-" version ".tar.xz")) (sha256 (base32 - "0rixv4c301djr0d0cnsxs8c1wjndi6bf9vi5axz6mwjkv80cmfcv")))) + "1aicn1v3czqii08wc91jw089n1x3gfchkf808q2as59dak0h714q")))) (build-system gnu-build-system) + (arguments + ;; When cross-compiling, the package is configured twice: once with the + ;; native compiler and once with the cross-compiler. During the configure + ;; with the native compiler, the environment is reset. This leads to + ;; multiple environment variables missing. Do not reset the environment + ;; to prevent that. + (if (%current-target-system) + '(#:phases + (modify-phases %standard-phases + (add-before 'configure 'fix-cross-configure + (lambda _ + (substitute* "configure" + (("env -i") + "env ")) + #t)))) + '())) (inputs `(("ncurses" ,ncurses) - ("perl" ,perl))) + ;; TODO: remove `if' in the next rebuild cycle. + ,@(if (%current-target-system) + `(("perl" ,perl)) + '()))) + ;; When cross-compiling, texinfo will build some of its own binaries with + ;; the native compiler. This means ncurses is needed both in both inputs + ;; and native-inputs. + (native-inputs `(("perl" ,perl) + ("ncurses" ,ncurses))) (native-search-paths ;; This is the variable used by the standalone Info reader. @@ -68,18 +97,6 @@ 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") @@ -90,8 +107,7 @@ is on expressing the content semantically, avoiding physical markup commands.") (patches (search-patches "texinfo-5-perl-compat.patch")) (sha256 (base32 - "1njfwh2z34r2c4r0iqa7v24wmjzvsfyz4vplzry8ln3479lfywal")))) - (native-inputs '()))) + "1njfwh2z34r2c4r0iqa7v24wmjzvsfyz4vplzry8ln3479lfywal")))))) (define-public texinfo-4 (package (inherit texinfo) @@ -105,8 +121,37 @@ is on expressing the content semantically, avoiding physical markup commands.") (sha256 (base32 "1rf9ckpqwixj65bw469i634897xwlgkm5i9g2hv3avl6mv7b0a3d")))) - (native-inputs '()) - (inputs `(("ncurses" ,ncurses) ("xz" ,xz))))) + (inputs `(("ncurses" ,ncurses) + ("xz" ,xz))) + (native-inputs + `(("automake" ,automake) + ,@(package-native-inputs texinfo))) + (arguments + (substitute-keyword-arguments (package-arguments texinfo) + ((#:phases phases) + `(modify-phases ,phases + (add-after 'unpack 'fix-configure + (lambda* (#:key inputs native-inputs #:allow-other-keys) + ;; Replace outdated config.sub and config.guess. + (with-directory-excursion "build-aux" + (for-each + (lambda (file) + (install-file (string-append + (assoc-ref + (or native-inputs inputs) "automake") + "/share/automake-" + ,(version-major+minor + (package-version automake)) + "/" file) ".")) + '("config.sub" "config.guess"))) + #t)) + ;; Build native version of tools before running 'build phase. + ,@(if (%current-target-system) + `((add-before 'build 'make-native-gnu-lib + (lambda* (#:key inputs #:allow-other-keys) + (invoke "make" "-C" "tools/gnulib/lib") + #t))) + '()))))))) (define-public info-reader ;; The idea of this package is to have the standalone Info reader without @@ -115,32 +160,32 @@ is on expressing the content semantically, avoiding physical markup commands.") (inherit texinfo) (name "info-reader") (arguments - `(#:disallowed-references ,(assoc-ref (package-inputs texinfo) - "perl") + `(,@(substitute-keyword-arguments (package-arguments texinfo) + ((#:phases phases) + `(modify-phases ,phases + (add-after 'install 'keep-only-info-reader + (lambda* (#:key outputs #:allow-other-keys) + ;; Remove everything but 'bin/info' and associated + ;; files. + (define (files) + (scandir "." (lambda (file) + (not (member file '("." "..")))))) + (let ((out (assoc-ref outputs "out"))) + (with-directory-excursion out + (for-each delete-file-recursively + (fold delete (files) '("bin" "share")))) + (with-directory-excursion (string-append out "/bin") + (for-each delete-file (delete "info" (files)))) + (with-directory-excursion (string-append out "/share") + (for-each delete-file-recursively + (fold delete (files) + '("info" "locale")))) + #t)))))) + #:disallowed-references ,(assoc-ref (package-inputs texinfo) + "perl") #:modules ((ice-9 ftw) (srfi srfi-1) - ,@%gnu-build-system-modules) - - #:phases (modify-phases %standard-phases - (add-after 'install 'keep-only-info-reader - (lambda* (#:key outputs #:allow-other-keys) - ;; Remove everything but 'bin/info' and associated - ;; files. - (define (files) - (scandir "." (lambda (file) - (not (member file '("." "..")))))) - - (let ((out (assoc-ref outputs "out"))) - (with-directory-excursion out - (for-each delete-file-recursively - (fold delete (files) '("bin" "share")))) - (with-directory-excursion (string-append out "/bin") - (for-each delete-file (delete "info" (files)))) - (with-directory-excursion (string-append out "/share") - (for-each delete-file-recursively - (fold delete (files) - '("info" "locale")))) - #t)))))) + ,@%gnu-build-system-modules))) (synopsis "Standalone Info documentation reader"))) (define-public texi2html diff --git a/gnu/packages/text-editors.scm b/gnu/packages/text-editors.scm index f2f675d148..f415fd7f65 100644 --- a/gnu/packages/text-editors.scm +++ b/gnu/packages/text-editors.scm @@ -3,13 +3,14 @@ ;;; Copyright © 2016 Carlo Zancanaro <carlo@zancanaro.id.au> ;;; Copyright © 2017, 2018, 2020 Eric Bavier <bavier@posteo.net> ;;; Copyright © 2017 Feng Shu <tumashu@163.com> -;;; Copyright © 2017 ng0 <ng0@n0.is> +;;; Copyright © 2017 Nikita <nikita@n0.is> ;;; Copyright © 2014 Taylan Ulrich Bayırlı/Kammer <taylanbayirli@gmail.org> ;;; Copyright © 2017, 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2019 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2019 Andreas Enge <andreas@enge.fr> ;;; Copyright © 2019, 2020 Nicolas Goaziou <mail@nicolasgoaziou.fr> ;;; Copyright © 2020 Marius Bakke <mbakke@fastmail.com> +;;; Copyright © 2020 Tom Zander <tomz@freedommail.ch> ;;; ;;; This file is part of GNU Guix. ;;; @@ -757,14 +758,14 @@ and Octave. TeXmacs is completely extensible via Guile.") (define-public scintilla (package (name "scintilla") - (version "4.3.2") + (version "4.3.3") (source (origin (method url-fetch) (uri (let ((v (apply string-append (string-split version #\.)))) (string-append "https://www.scintilla.org/scintilla" v ".tgz"))) (sha256 - (base32 "0d8ssl0d8r6bslbzd507l9c5g8mwn1zriak3fnf85936pdmkhq9h")))) + (base32 "0zh8c19r1zd4kr9jg2ws0n2n5ic2siz5zbns6cvylyfbpf69ghy2")))) (build-system gnu-build-system) (arguments `(#:make-flags (list "GTK3=1" "CC=gcc" "-Cgtk") @@ -967,3 +968,35 @@ keybindings, autocomplete and unlimited undo. It can pipe a marked block of text through any command line filter. It can also open very large binary files. It was originally developed on the Amiga 3000T.") (license license:gpl3+))) + +(define-public hexer + (package + (name "hexer") + (version "1.0.6") + (source + (origin + (method url-fetch) + (uri (string-append "https://devel.ringlet.net/files/editors/hexer/" + "hexer-" version ".tar.xz")) + (sha256 + (base32 "157z17z8qivdin2km2wp86x1bv1nx15frrwcz11mk0l3ab74mf76")))) + (build-system gnu-build-system) + (arguments + `(#:tests? #f ;no upstream tests + #:make-flags + (list "CC=gcc" + (string-append "PREFIX=" (assoc-ref %outputs "out")) + (string-append "LTERMCAP=-lncurses") + (string-append "LDFLAGS=-L" (assoc-ref %build-inputs "ncurses") + "/lib")) + #:phases + (modify-phases %standard-phases + (delete 'configure)))) ;no configure script + (inputs + `(("ncurses" ,ncurses))) + (home-page "https://devel.ringlet.net/editors/hexer/") + (synopsis "Multi buffer editor for binary files with vi-like interface") + (description "Hexer is a multi-buffer editor for binary files for Unix-like +systems that displays its buffer(s) as a hex dump. The user interface is kept +similar to vi/ex.") + (license license:bsd-3))) diff --git a/gnu/packages/textutils.scm b/gnu/packages/textutils.scm index 62988ec574..c2184de46b 100644 --- a/gnu/packages/textutils.scm +++ b/gnu/packages/textutils.scm @@ -6,7 +6,7 @@ ;;; Copyright © 2016 Jelle Licht <jlicht@fsfe.org> ;;; Copyright © 2016 Alex Griffin <a@ajgrf.com> ;;; Copyright © 2016, 2018, 2019 Efraim Flashner <efraim@flashner.co.il> -;;; Copyright © 2016 ng0 <ng0@n0.is> +;;; Copyright © 2016 Nikita <nikita@n0.is> ;;; Copyright © 2016 Marius Bakke <mbakke@fastmail.com> ;;; Copyright © 2017 Eric Bavier <bavier@member.fsf.org> ;;; Copyright © 2017 Rene Saavedra <rennes@openmailbox.org> @@ -476,16 +476,21 @@ as existing hashing techniques, with provably negligible risk of collisions.") (define-public oniguruma (package (name "oniguruma") - (version "6.9.4") + (version "6.9.5-rev1") (source (origin (method url-fetch) (uri (string-append "https://github.com/kkos/" - "oniguruma/releases/download/v" version + "oniguruma/releases/download/v" + ;; If there is a "-" in the version, convert + ;; to underscore for this part of the URI. + (string-map (lambda (c) (if (char=? #\- c) #\_ c)) + version) "/onig-" version ".tar.gz")) (sha256 (base32 - "0lvd1rpp49i0k1icblb0i76lj2cwmhf1c5p1jdz2m6g0ywpx4sa6")))) + "17m92k1n6bvza6m35fpd5g36zwpwm3hfz3478iwj5bvj2sfq8g6k")))) (build-system gnu-build-system) + (arguments '(#:configure-flags '("--disable-static"))) (home-page "https://github.com/kkos/oniguruma") (synopsis "Regular expression library") (description "Oniguruma is a regular expressions library. The special diff --git a/gnu/packages/time.scm b/gnu/packages/time.scm index 14f44c84c7..6eefb6c525 100644 --- a/gnu/packages/time.scm +++ b/gnu/packages/time.scm @@ -1,6 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2012 Nikita Karetnikov <nikita@karetnikov.org> -;;; Copyright © 2013, 2017 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2013, 2017, 2020 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2013, 2015 Andreas Enge <andreas@enge.fr> ;;; Copyright © 2015, 2016, 2017, 2018, 2019 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2015, 2017 Leo Famulari <leo@famulari.name> @@ -11,7 +11,7 @@ ;;; Copyright © 2016, 2020 Marius Bakke <mbakke@fastmail.com> ;;; Copyright © 2016, 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2017 Ben Woodcroft <donttrustben@gmail.com> -;;; Copyright © 2017 ng0 <ng0@n0.is> +;;; Copyright © 2017 Nikita <nikita@n0.is> ;;; Copyright © 2017 Julien Lepiller <julien@lepiller.eu> ;;; Copyright © 2018 Alex Vong <alexvong1995@gmail.com> ;;; Copyright © 2019 Kyle Meyer <kyle@kyleam.com> @@ -40,6 +40,7 @@ #:use-module (guix git-download) #:use-module (guix build-system gnu) #:use-module (guix build-system python) + #:use-module (gnu packages) #:use-module (gnu packages check) #:use-module (gnu packages compression) #:use-module (gnu packages perl) @@ -168,14 +169,14 @@ Pendulum instances.") (define-public python-dateutil (package (name "python-dateutil") - (version "2.8.0") + (version "2.8.1") (source (origin (method url-fetch) (uri (pypi-uri "python-dateutil" version)) (sha256 (base32 - "17nsfhy4xdz1khrfxa61vd7pmvd5z0wa3zb6v4gb4kfnykv0b668")))) + "0g42w7k5007iv9dam6gnja2ry8ydwirh99mgdll35s12pyfzxsvk")))) (build-system python-build-system) (arguments `(#:phases (modify-phases %standard-phases @@ -192,6 +193,7 @@ Pendulum instances.") (invoke "pytest" "-vv")))))) (native-inputs `(("python-pytest" ,python-pytest) + ("python-pytest-cov" ,python-pytest-cov) ("python-setuptools-scm" ,python-setuptools-scm))) (propagated-inputs `(("python-six" ,python-six))) @@ -451,14 +453,18 @@ datetime type.") (name "datefudge") (version "1.23") (source (origin - (method git-fetch) - (uri (git-reference - (url "https://salsa.debian.org/debian/datefudge.git") - (commit (string-append "debian/" version)))) - (file-name (git-file-name name version)) + ;; Source code is available from + ;; <https://salsa.debian.org/debian/datefudge.git>. However, + ;; for bootstrapping reasons, we do not rely on 'git-fetch' here + ;; (since Git -> GnuTLS -> datefudge). + (method url-fetch) + (uri (string-append + "mirror://debian/pool/main/d/datefudge/datefudge_" + version ".tar.xz")) (sha256 (base32 - "0r9g8v9xnv60hq3j20wqy34kyig3sc2pisjxl4irn7jjx85f1spv")))) + "0ifnlb0mc8qc2kb5042pbz0ns6rwcb7201di8wyrsphl0yhnhxiv")) + (patches (search-patches "datefudge-gettimeofday.patch")))) (build-system gnu-build-system) (arguments `(#:test-target "test" diff --git a/gnu/packages/tls.scm b/gnu/packages/tls.scm index 4f85f212bd..ec81b7bf07 100644 --- a/gnu/packages/tls.scm +++ b/gnu/packages/tls.scm @@ -1,18 +1,20 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2019 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2019, 2020 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2014, 2015, 2016, 2017, 2018 Mark H Weaver <mhw@netris.org> ;;; Copyright © 2014 Ian Denhardt <ian@zenhack.net> ;;; Copyright © 2013, 2015 Andreas Enge <andreas@enge.fr> ;;; Copyright © 2015 David Thompson <davet@gnu.org> ;;; Copyright © 2015, 2016, 2017, 2018, 2019 Leo Famulari <leo@famulari.name> ;;; Copyright © 2016, 2017, 2019 Efraim Flashner <efraim@flashner.co.il> -;;; Copyright © 2016, 2017, 2018 ng0 <ng0@n0.is> +;;; Copyright © 2016, 2017, 2018 Nikita <nikita@n0.is> ;;; Copyright © 2016 Hartmut Goebel <h.goebel@crazy-compilers.com> ;;; Copyright © 2017 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2017, 2018, 2019, 2020 Marius Bakke <mbakke@fastmail.com> ;;; Copyright © 2017, 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2017 Rutger Helling <rhelling@mykolab.com> ;;; Copyright © 2018 Clément Lassieur <clement@lassieur.org> +;;; Copyright © 2019 Mathieu Othacehe <m.othacehe@gmail.com> +;;; Copyright © 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org> ;;; ;;; This file is part of GNU Guix. ;;; @@ -49,6 +51,7 @@ #:use-module (gnu packages dns) #:use-module (gnu packages gawk) #:use-module (gnu packages guile) + #:use-module (gnu packages hurd) #:use-module (gnu packages libbsd) #:use-module (gnu packages libffi) #:use-module (gnu packages libidn) @@ -70,7 +73,7 @@ (define-public libtasn1 (package (name "libtasn1") - (version "4.14") + (version "4.16.0") (source (origin (method url-fetch) @@ -78,7 +81,7 @@ version ".tar.gz")) (sha256 (base32 - "025sqnlzji78ss2fi78dajc0v0h5fi02wp39hws41sn8qnjlnq4y")))) + "179jskl7dmfp1rd2khkzmlibzgki4wi6hvmmwfv7q49r728b03qf")))) (build-system gnu-build-system) (arguments `(#:configure-flags '("--disable-static"))) @@ -163,7 +166,7 @@ living in the same process.") (package (name "gnutls") (replacement gnutls-3.6.13) - (version "3.6.9") + (version "3.6.12") (source (origin (method url-fetch) (uri @@ -175,10 +178,11 @@ living in the same process.") (patches (search-patches "gnutls-skip-trust-store-test.patch")) (sha256 (base32 - "1jqz5s3lv8sa53348cfi9nr5pw5l55n8m40b8msdvv0pb2jzqca3")))) + "0jvca1qahn9lrwv6f5kfs95icirc15b2a8x9fzczyj996ipg3b5z")))) (build-system gnu-build-system) (arguments - `(; Ensure we don't keep a reference to this buggy software. + `(,@(if (hurd-target?) '(#:tests? #f) '()) + ; Ensure we don't keep a reference to this buggy software. #:disallowed-references (,net-tools) #:configure-flags (list @@ -223,11 +227,15 @@ living in the same process.") "debug" "doc")) ;4.1 MiB of man pages (native-inputs - `(("net-tools" ,net-tools) + `(,@(if (hurd-target?) '() + `(("net-tools" ,net-tools))) ("pkg-config" ,pkg-config) - ("which" ,which))) + ("which" ,which) + ,@(if (hurd-target?) '() + `(("datefudge" ,datefudge))) ;tests rely on 'datefudge' + ("util-linux" ,util-linux))) ;one test needs 'setsid' (inputs - `(("guile" ,guile-2.2))) + `(("guile" ,guile-3.0))) (propagated-inputs ;; These are all in the 'Requires.private' field of gnutls.pc. `(("libtasn1" ,libtasn1) @@ -248,16 +256,22 @@ required structures.") (define-public gnutls-3.6.13 (package (inherit gnutls) - (version "3.6.A") + (version "3.6.13") (source (origin (method url-fetch) (uri (string-append "mirror://gnupg/gnutls/v" (version-major+minor version) "/gnutls-3.6.13.tar.xz")) - (patches (search-patches "gnutls-skip-trust-store-test.patch")) + (patches (search-patches "gnutls-skip-trust-store-test.patch" + "gnutls-cross.patch")) (sha256 (base32 - "0f1gnm0756qms5cpx6yn6xb8d3imc2gkqmygf12n9x6r8zs1s11j")))))) + "0f1gnm0756qms5cpx6yn6xb8d3imc2gkqmygf12n9x6r8zs1s11j")))) + (native-inputs + `(,@(if (%current-target-system) ;for cross-build + `(("guile" ,guile-3.0)) ;to create .go files + '()) + ,@(package-native-inputs gnutls))))) (define-public gnutls/guile-2.0 ;; GnuTLS for Guile 2.0. @@ -276,48 +290,21 @@ required structures.") (inputs `(("unbound" ,unbound) ,@(package-inputs gnutls))))) -(define gnutls-3.6.10 - ;; This is for 'guile3.0-gnutls', below. Version 3.6.10 is the first to - ;; introduce Guile 2.9/3.0 support. - (package/inherit gnutls - (version "3.6.10") - (source (origin - (inherit (package-source gnutls)) - (uri (string-append "mirror://gnupg/gnutls/v" - (version-major+minor version) - "/gnutls-" version ".tar.xz")) - (sha256 - (base32 - "14r2h73yfj66cm14k9mnb3kgzq5a7qjg5b31m53bf19vcxkwmwxi")))) - (native-inputs - `(,@(package-native-inputs gnutls) - - ;; Datefudge is used to fuzz time for tests, and its presence - ;; enables a test that uses 'setsid' from util-linux. - ("datefudge" ,datefudge) - ("util-linux" ,util-linux))))) +(define-public guile2.2-gnutls + (package + (inherit gnutls) + (name "guile2.2-gnutls") + (inputs `(("guile" ,guile-2.2) + ,@(alist-delete "guile" + (package-inputs gnutls)))))) (define-public guile3.0-gnutls - (package/inherit gnutls-3.6.10 - (name "guile3.0-gnutls") - (arguments - (substitute-keyword-arguments (package-arguments gnutls-3.6.10) - ((#:phases phases '%standard-phases) - `(modify-phases ,phases - (add-before 'build 'leave-guile-stdout-open - (lambda _ - ;; Work around <https://bugs.gnu.org/38348>. - (substitute* "guile/Makefile" - (("out=-") "out=/dev/null")) - #t)))))) - (inputs `(("guile" ,guile-next) - ,@(alist-delete "guile" - (package-inputs gnutls-3.6.10)))))) + (deprecated-package "guile3.0-gnutls" gnutls)) (define-public openssl (package (name "openssl") - (version "1.1.1c") + (version "1.1.1f") (replacement openssl-1.1.1g) (source (origin (method url-fetch) @@ -330,7 +317,7 @@ required structures.") "/openssl-" version ".tar.gz"))) (sha256 (base32 - "142c7zdlz06hjrrvinb9f276czc78bnkyhd9xma621qmmmwk1yzn")) + "0d9zv9srjqivs8nn099fpbjv1wyhfcb8lzy491dpmfngdvz6nv0q")) (patches (search-patches "openssl-1.1-c-rehash-in.patch")))) (build-system gnu-build-system) (outputs '("out" @@ -338,9 +325,7 @@ required structures.") "static")) ;6.4 MiB of .a files (native-inputs `(("perl" ,perl))) (arguments - `(#:disallowed-references (,perl) - #:parallel-build? #f - #:parallel-tests? #f + `(#:parallel-tests? #f #:test-target "test" ;; Changes to OpenSSL sometimes cause Perl to "sneak in" to the closure, @@ -348,6 +333,25 @@ required structures.") #:disallowed-references ,(list (canonical-package perl)) #:phases (modify-phases %standard-phases + ,@(if (%current-target-system) + '((add-before + 'configure 'set-cross-compile + (lambda* (#:key target outputs #:allow-other-keys) + (setenv "CROSS_COMPILE" (string-append target "-")) + (setenv "CONFIGURE_TARGET_ARCH" + (cond + ((string-prefix? "i586" target) + "hurd-x86") + ((string-prefix? "i686" target) + "linux-x86") + ((string-prefix? "x86_64" target) + "linux-x86_64") + ((string-prefix? "arm" target) + "linux-armv4") + ((string-prefix? "aarch64" target) + "linux-aarch64"))) + #t))) + '()) (replace 'configure (lambda* (#:key outputs #:allow-other-keys) (let* ((out (assoc-ref outputs "out")) @@ -357,7 +361,9 @@ required structures.") (("/usr/bin/env") (string-append (assoc-ref %build-inputs "coreutils") "/bin/env"))) - (invoke "./config" + (invoke ,@(if (%current-target-system) + '("./Configure") + '("./config")) "shared" ;build shared libraries "--libdir=lib" @@ -368,7 +374,10 @@ required structures.") "/share/openssl-" ,version) (string-append "--prefix=" out) - (string-append "-Wl,-rpath," lib))))) + (string-append "-Wl,-rpath," lib) + ,@(if (%current-target-system) + '((getenv "CONFIGURE_TARGET_ARCH")) + '()))))) (add-after 'install 'move-static-libraries (lambda* (#:key outputs #:allow-other-keys) ;; Move static libraries to the "static" output. @@ -484,21 +493,26 @@ required structures.") (("^MANDIR[[:blank:]]*=.*$") (string-append "MANDIR = " out "/share/man\n"))) #t))) - (replace 'configure - ;; Override this phase because OpenSSL 1.0 does not understand -rpath. - (lambda* (#:key outputs #:allow-other-keys) - (let ((out (assoc-ref outputs "out"))) - (invoke "./config" - "shared" ;build shared libraries - "--libdir=lib" + (replace 'configure + ;; Override this phase because OpenSSL 1.0 does not understand -rpath. + (lambda* (#:key outputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out"))) + (invoke ,@(if (%current-target-system) + '("./Configure") + '("./config")) + "shared" ;build shared libraries + "--libdir=lib" - ;; The default for this catch-all directory is - ;; PREFIX/ssl. Change that to something more - ;; conventional. - (string-append "--openssldir=" out - "/share/openssl-" ,version) + ;; The default for this catch-all directory is + ;; PREFIX/ssl. Change that to something more + ;; conventional. + (string-append "--openssldir=" out + "/share/openssl-" ,version) - (string-append "--prefix=" out))))) + (string-append "--prefix=" out) + ,@(if (%current-target-system) + '((getenv "CONFIGURE_TARGET_ARCH")) + '()))))) (delete 'move-extra-documentation) (add-after 'install 'move-man3-pages (lambda* (#:key outputs #:allow-other-keys) @@ -876,7 +890,7 @@ then ported to the GNU / Linux environment.") (define-public mbedtls-apache (package (name "mbedtls-apache") - (version "2.16.5") + (version "2.16.6") (source (origin (method url-fetch) @@ -886,7 +900,7 @@ then ported to the GNU / Linux environment.") version "-apache.tgz")) (sha256 (base32 - "0kdhwy241xsk4isbadqx6z80m8sf76da5sbmqv8qy11yr37cdd35")))) + "0w0p51vx0cc6fyqfdn59669q6n4187vi64fw5ha302hrlqimwib6")))) (build-system cmake-build-system) (arguments `(#:configure-flags diff --git a/gnu/packages/tmux.scm b/gnu/packages/tmux.scm index 6d536131a7..8b54849b18 100644 --- a/gnu/packages/tmux.scm +++ b/gnu/packages/tmux.scm @@ -6,6 +6,7 @@ ;;; Copyright © 2017 Stefan Reichör <stefan@xsteve.at> ;;; Copyright © 2019 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2019 Oleg Pykhalov <go.wigust@gmail.com> +;;; Copyright © 2020 Brice Waegeneire <brice@waegenei.re> ;;; ;;; This file is part of GNU Guix. ;;; @@ -38,7 +39,7 @@ (define-public tmux (package (name "tmux") - (version "3.0a") + (version "3.1b") (source (origin (method url-fetch) (uri (string-append @@ -46,7 +47,7 @@ version "/tmux-" version ".tar.gz")) (sha256 (base32 - "1fcdbw77nz918f7gqc1ga7zlkp1g112in1h8kkjnkadgnhldzlaa")))) + "1fbd93hzaz64h7j0h9nsll29avbq1ikqa438wrgsf1dga0fkagyr")))) (build-system gnu-build-system) (inputs `(("libevent" ,libevent) diff --git a/gnu/packages/tor.scm b/gnu/packages/tor.scm index 6c6da2379a..4ec503d2ed 100644 --- a/gnu/packages/tor.scm +++ b/gnu/packages/tor.scm @@ -2,7 +2,7 @@ ;;; Copyright © 2013, 2014, 2015 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2014, 2015 Mark H Weaver <mhw@netris.org> ;;; Copyright © 2016, 2017, 2018, 2020 Efraim Flashner <efraim@flashner.co.il> -;;; Copyright © 2016, 2017 ng0 <ng0@n0.is> +;;; Copyright © 2016, 2017 Nikita <nikita@n0.is> ;;; Copyright © 2017, 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2017, 2018, 2019 Eric Bavier <bavier@member.fsf.org> ;;; Copyright © 2017 Rutger Helling <rhelling@mykolab.com> diff --git a/gnu/packages/upnp.scm b/gnu/packages/upnp.scm index 8f3c887a68..f0c03e12b3 100644 --- a/gnu/packages/upnp.scm +++ b/gnu/packages/upnp.scm @@ -4,6 +4,7 @@ ;;; Copyright © 2016, 2017, 2018, 2020 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2018 Theodoros Foradis <theodoros@foradis.org> ;;; Copyright © 2019 Jens Mølgaard <jens@zete.tk> +;;; Copyright © 2020 Jan Wielkiewicz <tona_kosmicznego_smiecia@interia.pl> ;;; ;;; This file is part of GNU Guix. ;;; @@ -28,6 +29,7 @@ #:use-module (gnu packages photo) #:use-module (gnu packages image) #:use-module (gnu packages mp3) + #:use-module (gnu packages pkg-config) #:use-module (gnu packages xiph) #:use-module (gnu packages sqlite) #:use-module (gnu packages python) @@ -92,22 +94,24 @@ over IRC, instant messaging, network games, and most server software.") (define-public libupnp (package (name "libupnp") - (version "1.6.25") + (version "1.12.1") (source (origin (method url-fetch) - (uri (string-append "mirror://sourceforge/pupnp/pupnp/libUPnP%20" - version "/" name "-" version ".tar.bz2")) + (uri (string-append "https://github.com/pupnp/pupnp/releases/download" + "/release-" version "/libupnp-" version".tar.bz2")) (sha256 (base32 - "0hzsd7rvfa87b4hxg9yj4xhdfxx9sp09r9sqdl3mqhvmcyw018y5")))) + "02a0dnbk1cla8xlb5l2zp09grv2hsf8n4jbd560mmzj830mn8dpw")))) + (native-inputs + `(("pkg-config" ,pkg-config))) (build-system gnu-build-system) (arguments ;; The tests require a network device capable of multicasting which is ;; not available in the build environment. See ;; https://lists.gnu.org/archive/html/guix-devel/2015-01/msg00312.html. `(#:tests? #f - #:configure-flags '("--enable-ipv6"))) + #:configure-flags '("--disable-static"))) (home-page "http://pupnp.sourceforge.net") (synopsis "Portable SDK for UPnP Devices") (description @@ -144,7 +148,7 @@ and others.") ("gettext" ,gettext-minimal))) (inputs `(("libexif" ,libexif) - ("libjpeg" ,libjpeg) + ("libjpeg" ,libjpeg-turbo) ("libid3tag" ,libid3tag) ("flac" ,flac) ("libvorbis" ,libvorbis) diff --git a/gnu/packages/version-control.scm b/gnu/packages/version-control.scm index 1d8fa75b82..6f985bf84d 100644 --- a/gnu/packages/version-control.scm +++ b/gnu/packages/version-control.scm @@ -10,7 +10,7 @@ ;;; Copyright © 2015, 2018 Kyle Meyer <kyle@kyleam.com> ;;; Copyright © 2015, 2017, 2018, 2020 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2016, 2017 Leo Famulari <leo@famulari.name> -;;; Copyright © 2016, 2017, 2018 ng0 <ng0@n0.is> +;;; Copyright © 2016, 2017, 2018 Nikita <nikita@n0.is> ;;; Copyright © 2017, 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2017 Vasile Dumitrascu <va511e@yahoo.com> ;;; Copyright © 2017 Clément Lassieur <clement@lassieur.org> @@ -28,6 +28,7 @@ ;;; Copyright © 2020 Roel Janssen <roel@gnu.org> ;;; Copyright © 2020 Brice Waegeneire <brice@waegenei.re> ;;; Copyright © 2020 John D. Boy <jboy@bius.moe> +;;; Copyright © 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org> ;;; ;;; This file is part of GNU Guix. ;;; @@ -145,6 +146,11 @@ changes to project files over time. It supports both a distributed workflow as well as the classic centralized workflow.") (license license:gpl2+))) +(define git-cross-configure-flags + '("ac_cv_fread_reads_directories=yes" + "ac_cv_snprintf_returns_bogus=no" + "ac_cv_iconv_omits_bom=no")) + (define-public git (package (name "git") @@ -159,6 +165,10 @@ as well as the classic centralized workflow.") (build-system gnu-build-system) (native-inputs `(("native-perl" ,perl) + ;; Add bash-minimal explicitly to ensure it comes before bash-for-tests, + ;; see <https://bugs.gnu.org/39513>. + ("bash" ,bash-minimal) + ("bash-for-tests" ,bash) ("gettext" ,gettext-minimal) ("git-manpages" ,(origin @@ -181,10 +191,6 @@ as well as the classic centralized workflow.") ("python" ,python) ; for git-p4 ("zlib" ,zlib) - ;; Note: we keep this in inputs rather than native-inputs to work around - ;; a problem in 'patch-shebangs'; see <https://bugs.gnu.org/31952>. - ("bash-for-tests" ,bash) - ;; For PCRE support in git grep (USE_LIBPCRE2). ("pcre" ,pcre2) @@ -237,23 +243,46 @@ as well as the classic centralized workflow.") ;; absolute file name to 'wish'. #:configure-flags (list (string-append "--with-tcltk=" (assoc-ref %build-inputs "tk") - "/bin/wish8.6")) ; XXX + "/bin/wish8.6") ; XXX + ,@(if (%current-target-system) + git-cross-configure-flags + '())) #:modules ((srfi srfi-1) (srfi srfi-26) ,@%gnu-build-system-modules) #:phases (modify-phases %standard-phases - (add-after 'unpack 'modify-PATH - (lambda* (#:key inputs #:allow-other-keys) - (let ((path (string-split (getenv "PATH") #\:)) - (bash-full (assoc-ref inputs "bash-for-tests"))) - ;; Drop the test bash from PATH so that (which "sh") and - ;; similar does the right thing. - (setenv "PATH" (string-join - (remove (cut string-prefix? bash-full <>) path) - ":")) - #t))) + ,@(if (%current-target-system) + ;; The git build system assumes build == host + `((add-after 'unpack 'use-host-uname_S + (lambda _ + (substitute* "config.mak.uname" + (("uname_S := .*" all) + (if (equal? ,(%current-target-system) "i586-pc-gnu") + "uname_S := GNU\n" + all))) + #t))) + ;; We do not have bash-for-tests when cross-compiling. + `((add-after 'unpack 'modify-PATH + (lambda* (#:key inputs #:allow-other-keys) + (let ((path (string-split (getenv "PATH") #\:)) + (bash-full (assoc-ref inputs "bash-for-tests"))) + ;; Drop the test bash from PATH so that (which "sh") and + ;; similar does the right thing. + (setenv "PATH" (string-join + (remove (cut string-prefix? bash-full <>) path) + ":")) + #t))))) + ;; Add cross curl-config script to PATH when cross-compiling. + ,@(if (%current-target-system) + '((add-before 'configure 'add-cross-curl-config + (lambda* (#:key inputs #:allow-other-keys) + (setenv "PATH" + (string-append (assoc-ref inputs "curl") "/bin:" + (getenv "PATH"))) + #t))) + '()) (add-after 'configure 'patch-makefiles (lambda _ (substitute* "Makefile" @@ -514,20 +543,24 @@ everything from small to very large projects with speed and efficiency.") ((#:make-flags flags) `(delete "USE_LIBPCRE2=yes" ,flags)) ((#:configure-flags flags) - ''()) + `(list + ,@(if (%current-target-system) + git-cross-configure-flags + '()))) ((#:disallowed-references lst '()) `(,perl ,@lst)))) (outputs '("out")) (native-inputs - `(("native-perl" ,perl) + `(("bash" ,bash-minimal) + ("bash-for-tests" ,bash) + ("native-perl" ,perl) ("gettext" ,gettext-minimal))) (inputs `(("curl" ,curl) ;for HTTP(S) access ("expat" ,expat) ;for 'git push' over HTTP(S) ("openssl" ,openssl) ("perl" ,perl) - ("zlib" ,zlib) - ("bash-for-tests" ,bash))))) + ("zlib" ,zlib))))) (define-public gitless (package @@ -617,9 +650,16 @@ on @command{git}, and use any regular Git hosting service.") (build-system cmake-build-system) (outputs '("out" "debug")) (arguments - `(#:configure-flags '("-DUSE_NTLMCLIENT=OFF" ;TODO: package this - "-DREGEX_BACKEND=pcre2" - "-DUSE_HTTP_PARSER=system") + `(#:configure-flags + (list "-DUSE_NTLMCLIENT=OFF" ;TODO: package this + "-DREGEX_BACKEND=pcre2" + "-DUSE_HTTP_PARSER=system" + ,@(if (%current-target-system) + `((string-append + "-DPKG_CONFIG_EXECUTABLE=" + (assoc-ref %build-inputs "pkg-config") + "/bin/" ,(%current-target-system) "-pkg-config")) + '())) #:phases (modify-phases %standard-phases (add-after 'unpack 'fix-hardcoded-paths @@ -630,9 +670,13 @@ on @command{git}, and use any regular Git hosting service.") (("/bin/cp") (which "cp")) (("/bin/rm") (which "rm"))) #t)) - ;; Run checks more verbosely. + ;; Run checks more verbosely, unless we are cross-compiling. (replace 'check - (lambda _ (invoke "./libgit2_clar" "-v" "-Q")))))) + (lambda* (#:key (tests? #t) #:allow-other-keys) + (if tests? + (invoke "./libgit2_clar" "-v" "-Q") + ;; Tests may be disabled if cross-compiling. + (format #t "Test suite not run.~%"))))))) (inputs `(("libssh2" ,libssh2) ("http-parser" ,http-parser))) @@ -1374,6 +1418,28 @@ also walk each side of a merge and test those changes individually.") control to Git repositories.") (license license:gpl2))) +(define (mercurial-patch name revision hash) + (origin + (method url-fetch) + (uri (string-append "https://www.mercurial-scm.org/repo/hg/raw-rev/" revision)) + (file-name (string-append "mercurial-" name ".patch")) + (sha256 (base32 hash)))) + +(define %mercurial-patches + (list + ;; These three patches fixes compatibility with the updated gzip module + ;; in Python 3.8.2: <https://bz.mercurial-scm.org/show_bug.cgi?id=6284>. + (mercurial-patch "python-mtime" "6c36a521572edf3a79ee567b118469b3192037cc" + "0bmm7y40r8s081ws2sjvn1v8kvyfan4a97jl0fhdh7yc2pzxlzqq") + (mercurial-patch "indent-gzip" "a23b859ad17dd0a5b9bb37846b69b5e30f99c44c" + "1spscv9dgqv38m7h1liki93ax6w97gxayg17fr7wr6acjdfccpr9") + (mercurial-patch "python-gzip" "b7ca03dff14c63d64ad7bfa36a2d0a36a6b62253" + "0p88ffhx0kk21ssrsb156ffhpcb7g8mkwwkmq49qpmbm5ag2paf0") + ;; This fixes an incompatibility with os.isfile in Python 3.8: + ;; <https://bz.mercurial-scm.org/show_bug.cgi?id=6287>. + (mercurial-patch "os-isfile" "6a8738dc4a019da4c9df5c26961aa09d45ce1c68" + "0lr069m12kzrkmr1pmhaxg5lxmdwxabsza61qp1i1q70g7sy8lvy"))) + (define-public mercurial (package (name "mercurial") @@ -1382,6 +1448,7 @@ control to Git repositories.") (method url-fetch) (uri (string-append "https://www.mercurial-scm.org/" "release/mercurial-" version ".tar.gz")) + (patches %mercurial-patches) (sha256 (base32 "1nbjpzjrzgql4hrvslpxwbcgn885ikq6ba1yb4w6p78rw9nzkhgp")))) diff --git a/gnu/packages/video.scm b/gnu/packages/video.scm index e3d145a840..e0eb2db84a 100644 --- a/gnu/packages/video.scm +++ b/gnu/packages/video.scm @@ -11,7 +11,7 @@ ;;; Copyright © 2016 Kei Kebreau <kkebreau@posteo.net> ;;; Copyright © 2016 Dmitry Nikolaev <cameltheman@gmail.com> ;;; Copyright © 2016 Andy Patterson <ajpatter@uwaterloo.ca> -;;; Copyright © 2016, 2017 ng0 <ng0@n0.is> +;;; Copyright © 2016, 2017 Nikita <nikita@n0.is> ;;; Copyright © 2016, 2018, 2019, 2020 Eric Bavier <bavier@posteo.net> ;;; Copyright © 2016 Jan Nieuwenhuizen <janneke@gnu.org> ;;; Copyright © 2017 Feng Shu <tumashu@163.com> @@ -1191,7 +1191,7 @@ videoformats depend on the configuration flags of ffmpeg.") (define-public vlc (package (name "vlc") - (version "3.0.8") + (version "3.0.10") (source (origin (method url-fetch) (uri (string-append @@ -1200,13 +1200,7 @@ videoformats depend on the configuration flags of ffmpeg.") "/vlc-" version ".tar.xz")) (sha256 (base32 - "1xmxjpyzdhabchwncz6lvx3kzvl7fz9c42bkv3nbj68albs9w570")) - (patches - (search-patches - ;; TODO: The test "libvlc_slaves" fails. Applied upstream as - ;; <https://git.videolan.org/?p=vlc.git;a=commit;h=4186c94104ee528abd6860611b49515f3e6ec644>. - ;; Try removing it in 3.0.9. - "vlc-fix-test_libvlc_slaves.patch")))) + "0cackl1084hcmg4myf3kvjvd6sjxmzn0c0qkmanz6brvgzyanrm9")))) (build-system gnu-build-system) (native-inputs `(("flex" ,flex) @@ -1311,20 +1305,6 @@ videoformats depend on the configuration flags of ffmpeg.") ;; which fails in our sandboxed build system (substitute* "test/run_vlc.sh" (("./vlc --ignore-config") "echo")) - - ;; modules/text_renderer/freetype/text_layout.c uses a - ;; now-deprecated interface 'fribidi_get_par_embedding_levels' - ;; from fribidi.h, so for now we enable the use of deprecated - ;; fribidi interfaces from this file. - ;; FIXME: Try removing this for vlc >= 3.0.3. - (substitute* "modules/text_renderer/freetype/text_layout.c" - (("# define FRIBIDI_NO_DEPRECATED 1") "")) - - ;; Fix build with libssh2 > 1.8.0: - ;; <https://trac.videolan.org/vlc/ticket/22060> - ;; <https://git.videolan.org/?p=vlc.git;a=commit;h=11449b5cd8b415768e010d9b7c1d6ba3cea21f82> - (substitute* "modules/access/sftp.c" - (("010801") "010900")) #t))) (add-after 'strip 'regenerate-plugin-cache (lambda* (#:key outputs #:allow-other-keys) @@ -1389,7 +1369,7 @@ streaming protocols.") ("libdvdcss" ,libdvdcss) ("libdvdnav" ,libdvdnav) ; ignored without libdvdread ("libdvdread" ,libdvdread) ; ignored without libdvdnav - ("libjpeg" ,libjpeg) + ("libjpeg" ,libjpeg-turbo) ("libmpeg2" ,libmpeg2) ("libmpg123" ,mpg123) ; audio codec for MP3 ("libpng" ,libpng) @@ -1487,7 +1467,7 @@ SVCD, DVD, 3ivx, DivX 3/4/5, WMV and H.264 movies.") ("libcdio-paranoia" ,libcdio-paranoia) ("libdvdread" ,libdvdread) ("libdvdnav" ,libdvdnav) - ("libjpeg" ,libjpeg) + ("libjpeg" ,libjpeg-turbo) ("libva" ,libva) ("libvdpau" ,libvdpau) ("libx11" ,libx11) @@ -1630,7 +1610,7 @@ To load this plugin, specify the following option when starting mpv: (define-public youtube-dl (package (name "youtube-dl") - (version "2020.03.24") + (version "2020.05.03") (source (origin (method url-fetch) (uri (string-append "https://github.com/ytdl-org/youtube-dl/" @@ -1638,7 +1618,7 @@ To load this plugin, specify the following option when starting mpv: version ".tar.gz")) (sha256 (base32 - "05l4asakakxn53wrvxn6c03fd80zdizdbj6r2cj8c1ja3sj9i8s5")))) + "0qigk1bml6vkck4rs0wnmr46j5gkz04zn30jvnw1r4czjs7vnpal")))) (build-system python-build-system) (arguments ;; The problem here is that the directory for the man page and completion @@ -2428,7 +2408,7 @@ tools, XML authoring components, and an extensible plug-in based API.") (inputs `(("alsa-lib" ,alsa-lib) ("glu" ,glu) - ("libjpeg" ,libjpeg) + ("libjpeg" ,libjpeg-turbo) ("libx11" ,libx11) ("qtbase" ,qtbase) ("eudev" ,eudev))) @@ -2948,16 +2928,16 @@ post-processing of video formats like MPEG2, H.264/AVC, and VC-1.") (define-public openh264 (package (name "openh264") - (version "2.0.0") + (version "2.1.0") (source (origin - (method url-fetch) - (uri (string-append "https://github.com/cisco/" - name "/releases/download/v" - version "/Source.Code.tar.gz")) - (file-name (string-append name "-" version ".tar.gz")) + (method git-fetch) + (uri (git-reference + (url "https://github.com/cisco/openh264") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) (sha256 (base32 - "0iq802xfsfkskg6q1j0kg90xh04vv1sxf61mrmahgynz5d7hx2ii")))) + "1wba260n1932vafd5ni2jqv9kzc7lj6a1asm1cqk8jv690m6zvpi")))) (build-system gnu-build-system) (native-inputs `(("nasm" ,nasm) @@ -3239,6 +3219,7 @@ programmers to access a standard API to open and decompress media files.") (base32 "11b83qazc8h0iidyj1rprnnjdivj1lpphvpa08y53n42bfa36pn5")) (patches (search-patches "aegisub-icu59-include-unistr.patch" + "aegisub-make43.patch" "aegisub-boost68.patch")))) (build-system gnu-build-system) (arguments @@ -3430,7 +3411,7 @@ It counts more than 100 plugins.") ("gettext" ,gettext-minimal) ("pkg-config" ,pkg-config))) (inputs - `(("libjpeg" ,libjpeg) + `(("libjpeg" ,libjpeg-turbo) ("ffmpeg" ,ffmpeg-3.4) ("libmicrohttpd" ,libmicrohttpd) ("sqlite" ,sqlite))) diff --git a/gnu/packages/vim.scm b/gnu/packages/vim.scm index ff7da7958f..deea538622 100644 --- a/gnu/packages/vim.scm +++ b/gnu/packages/vim.scm @@ -1,7 +1,7 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2013 Cyril Roelandt <tipecaml@gmail.com> ;;; Copyright © 2016, 2017, 2018, 2019, 2020 Efraim Flashner <efraim@flashner.co.il> -;;; Copyright © 2016, 2017 ng0 <ng0@n0.is> +;;; Copyright © 2016, 2017 Nikita <nikita@n0.is> ;;; Copyright © 2017 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2017 Marius Bakke <mbakke@fastmail.com> ;;; Copyright © 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr> diff --git a/gnu/packages/virtualization.scm b/gnu/packages/virtualization.scm index be17ec15f0..371104cf22 100644 --- a/gnu/packages/virtualization.scm +++ b/gnu/packages/virtualization.scm @@ -1,7 +1,7 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2013, 2014, 2015, 2016, 2017, 2020 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2015, 2016, 2017, 2018 Mark H Weaver <mhw@netris.org> -;;; Copyright © 2016, 2017, 2018. 2019 Efraim Flashner <efraim@flashner.co.il> +;;; Copyright © 2016, 2017, 2018. 2019, 2020 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2016, 2017 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2017 Alex Vong <alexvong1995@gmail.com> ;;; Copyright © 2017 Andy Patterson <ajpatter@uwaterloo.ca> @@ -13,6 +13,8 @@ ;;; Copyright © 2019 Guy Fleury Iteriteka <hoonandon@gmail.com> ;;; Copyright © 2020 Jakub Kądziołka <kuba@kadziolka.net> ;;; Copyright © 2020 Brice Waegeneire <brice@waegenei.re> +;;; Copyright © 2020 Mathieu Othacehe <m.othacehe@gmail.com> +;;; Copyright © 2020 Marius Bakke <mbakke@fastmail.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -99,7 +101,8 @@ #:use-module ((guix licenses) #:prefix license:) #:use-module (guix packages) #:use-module (guix utils) - #:use-module (srfi srfi-1)) + #:use-module (srfi srfi-1) + #:use-module (ice-9 match)) (define (qemu-patch commit file-name sha256) "Return an origin for COMMIT." @@ -114,19 +117,14 @@ (define-public qemu (package (name "qemu") - (version "4.2.0") + (version "5.0.0") (source (origin (method url-fetch) (uri (string-append "https://download.qemu.org/qemu-" version ".tar.xz")) - (patches (search-patches "qemu-CVE-2020-1711.patch" - "qemu-CVE-2020-7039.patch" - "qemu-CVE-2020-7211.patch" - "qemu-CVE-2020-8608.patch" - "qemu-fix-documentation-build-failure.patch")) (sha256 (base32 - "1w38hzlw7xp05gcq1nhga7hxvndxy6dfcnzi7q2il8ff110isj6k")))) + "1dlcwyshdp94fwd30pddxf9bn2q8dfw5jsvry2gvdj551wmaj4rg")))) (build-system gnu-build-system) (arguments `(;; Running tests in parallel can occasionally lead to failures, like: @@ -146,8 +144,36 @@ "--audio-drv-list=alsa,pa,sdl") ;; Make build and test output verbose to facilitate investigation upon failure. #:make-flags '("V=1") + #:modules ((srfi srfi-1) + (ice-9 match) + ,@%gnu-build-system-modules) #:phases (modify-phases %standard-phases + (add-after 'set-paths 'hide-glibc + (lambda* (#:key inputs #:allow-other-keys) + ;; Work around https://issues.guix.info/issue/36882. We need to + ;; remove glibc from C_INCLUDE_PATH so that the one hardcoded in GCC, + ;; at the bottom of GCC include search-path is used. + (let* ((filters '("libc")) + (input-directories + (filter-map (lambda (input) + (match input + ((name . dir) + (and (not (member name filters)) + dir)))) + inputs))) + (set-path-environment-variable "C_INCLUDE_PATH" + '("include") + input-directories) + #t))) + (add-after 'patch-source-shebangs 'patch-/bin/sh-references + (lambda _ + ;; Ensure the executables created by these source files reference + ;; /bin/sh from the store so they work inside the build container. + (substitute* '("block/cloop.c" "migration/exec.c" + "net/tap.c" "tests/qtest/libqtest.c") + (("/bin/sh") (which "sh"))) + #t)) (replace 'configure (lambda* (#:key inputs outputs (configure-flags '()) #:allow-other-keys) @@ -157,8 +183,16 @@ (setenv "SHELL" (which "bash")) ;; While we're at it, patch for tests. - (substitute* "tests/libqtest.c" - (("/bin/sh") (which "sh"))) + (substitute* "tests/qemu-iotests/check" + (("#!/usr/bin/env python3") + (string-append "#!" (which "python3")))) + + ;; Ensure config.status gets the correct shebang off the bat. + ;; The build system gets confused if we change it later and + ;; attempts to re-run the whole configury, and fails. + (substitute* "configure" + (("#!/bin/sh") + (string-append "#!" (which "sh")))) ;; The binaries need to be linked against -lrt. (setenv "LDFLAGS" "-lrt") @@ -197,12 +231,6 @@ exec smbd $@"))) (chmod "samba-wrapper" #o755) (install-file "samba-wrapper" libexec)) #t)) - (add-before 'configure 'prevent-network-configuration - (lambda _ - ;; Prevent the build from trying to use git to fetch from the net. - (substitute* "Makefile" - (("@./config.status") - "")) #t)) (add-before 'check 'disable-unusable-tests (lambda* (#:key inputs outputs #:allow-other-keys) (substitute* "tests/Makefile.include" @@ -223,7 +251,8 @@ exec smbd $@"))) ("gtk+" ,gtk+) ("libaio" ,libaio) ("libattr" ,attr) - ("libcap" ,libcap) ; virtfs support requires libcap & libattr + ("libcacard" ,libcacard) ; smartcard support + ("libcap-ng" ,libcap-ng) ; virtfs support requires libcap-ng & libattr ("libdrm" ,libdrm) ("libepoxy" ,libepoxy) ("libjpeg" ,libjpeg-turbo) @@ -270,25 +299,55 @@ server and embedded PowerPC, and S390 guests.") (license license:gpl2) ;; Several tests fail on MIPS; see <http://hydra.gnu.org/build/117914>. - (supported-systems (delete "mips64el-linux" %supported-systems)))) + (supported-systems (fold delete %supported-systems + '("mips64el-linux" "i586-gnu"))))) (define-public qemu-minimal - ;; QEMU without GUI support. + ;; QEMU without GUI support, only supporting the host's architecture (package (inherit qemu) (name "qemu-minimal") - (synopsis "Machine emulator and virtualizer (without GUI)") + (synopsis + "Machine emulator and virtualizer (without GUI) for the host architecture") (arguments (substitute-keyword-arguments (package-arguments qemu) ((#:configure-flags _ '(list)) - ;; Restrict to the targets supported by Guix. - ''("--target-list=i386-softmmu,x86_64-softmmu,mips64el-softmmu,arm-softmmu,aarch64-softmmu")))) + ;; Restrict to the host's architecture. + (let ((arch (car (string-split (or (%current-target-system) + (%current-system)) + #\-)))) + (cond ((string=? arch "i686") + '(list "--target-list=i386-softmmu")) + ((string-prefix? "x86_64" arch) + '(list "--target-list=i386-softmmu,x86_64-softmmu")) + ((string-prefix? "mips64" arch) + '(list (string-append "--target-list=mips-softmmu,mipsel-softmmu," + "mips64-softmmu,mips64el-softmmu"))) + ((string-prefix? "mips" arch) + '(list "--target-list=mips-softmmu,mipsel-softmmu")) + ((string-prefix? "aarch64" arch) + '(list "--target-list=arm-softmmu,aarch64-softmmu")) + ((string-prefix? "arm" arch) + '(list "--target-list=arm-softmmu")) + ((string-prefix? "alpha" arch) + '(list "--target-list=alpha-softmmu")) + ((string-prefix? "powerpc64" arch) + '(list "--target-list=ppc-softmmu,ppc64-softmmu")) + ((string-prefix? "powerpc" arch) + '(list "--target-list=ppc-softmmu")) + ((string-prefix? "s390" arch) + '(list "--target-list=s390x-softmmu")) + ((string-prefix? "riscv" arch) + '(list "--target-list=riscv32-softmmu,riscv64-softmmu")) + (else ; An empty list actually builds all the targets. + ''())))))) ;; Remove dependencies on optional libraries, notably GUI libraries. (native-inputs (fold alist-delete (package-native-inputs qemu) '("gettext"))) (inputs (fold alist-delete (package-inputs qemu) '("libusb" "mesa" "sdl2" "spice" "virglrenderer" "gtk+" - "usbredir" "libdrm" "libepoxy" "pulseaudio" "vde2"))))) + "usbredir" "libdrm" "libepoxy" "pulseaudio" "vde2" + "libcacard"))))) (define-public libosinfo (package @@ -383,12 +442,6 @@ all common programming languages. Vala bindings are also provided.") "/share/doc/" ,name "-" ,version) "--sysconfdir=/etc" "--localstatedir=/var") - #:make-flags - ;; Treat the kernel headers as system headers to silence - ;; compiler warnings from those. - (list (string-append "C_INCLUDE_PATH=" - (assoc-ref %build-inputs "kernel-headers") - "/include")) #:phases (modify-phases %standard-phases (replace 'install @@ -480,7 +533,7 @@ manage system or application containers.") ("libpcap" ,libpcap) ("libnl" ,libnl) ("libtirpc" ,libtirpc) ;for <rpc/rpc.h> - ("libuuid" ,util-linux) + ("libuuid" ,util-linux "lib") ("lvm2" ,lvm2) ;for libdevmapper ("curl" ,curl) ("openssl" ,openssl) @@ -720,13 +773,7 @@ domains, their live performance and resource utilization statistics.") (setenv "C_INCLUDE_PATH" (string-append (assoc-ref inputs "libnl") "/include/libnl3:" - ;; Also add the kernel headers here so that GCC - ;; treats them as "system headers". Otherwise - ;; the build fails with -Werror because parasite.c - ;; includes both <linux/fs.h> and <sys/mount.h>, - ;; which define some of the same constants. - (assoc-ref inputs "kernel-headers") - "/include")) + (or (getenv "C_INCLUDE_PATH") ""))) #t)) (add-after 'configure 'fix-documentation (lambda* (#:key inputs outputs #:allow-other-keys) @@ -1332,7 +1379,7 @@ override CC = " (assoc-ref inputs "cross-gcc") "/bin/i686-linux-gnu-gcc")) ("pixman" ,pixman) ("qemu" ,qemu-minimal) ("seabios" ,seabios) - ("util-linux" ,util-linux) ; uuid + ("util-linux" ,util-linux "lib") ; uuid ; TODO: ocaml-findlib, ocaml-nox. ("xz" ,xz) ; for liblzma ("zlib" ,zlib))) diff --git a/gnu/packages/vnc.scm b/gnu/packages/vnc.scm index e1cba08952..dcfbe89829 100644 --- a/gnu/packages/vnc.scm +++ b/gnu/packages/vnc.scm @@ -43,52 +43,52 @@ #:use-module (gnu packages xorg)) (define-public tigervnc-client - (package - (name "tigervnc-client") - (version "1.10.1") - (source - (origin - (method git-fetch) - (uri - (git-reference - (url "https://github.com/TigerVNC/tigervnc.git") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "001n189d2f3psn7nxgl8188ml6f7jbk26cxn2835y3mnlk5lmhgr")))) - (build-system cmake-build-system) - (arguments - '(#:tests? #f ; Tests that do exists are not automated. - #:phases (modify-phases %standard-phases - (replace 'install - (lambda* (#:key outputs #:allow-other-keys) - (with-directory-excursion "vncviewer" - (invoke "make" "install"))))))) - (native-inputs - `(("autoconf" ,autoconf) - ("gettext-minimal" ,gettext-minimal) - ("automake" ,automake))) - (inputs - `(("zlib" ,zlib) - ("gnutls" ,gnutls) - ("libjpeg-turbo" ,libjpeg-turbo) - ("fltk" ,fltk) - ("linux-pam" ,linux-pam) - ("libx11" ,libx11) - ("libxext" ,libxext) - ("libxtst" ,libxtst) - ("libxrandr" ,libxrandr) - ("libxdamage" ,libxdamage))) - (home-page "https://tigervnc.org/") - (synopsis "High-performance, platform-neutral + (let ((commit "920d9c4d6562ecabf79497bc901d50522d4bc661")) + (package + (name "tigervnc-client") + (version (git-version "1.10.1" "1" commit)) + (source (origin + (method git-fetch) + (uri + (git-reference + (url "https://github.com/TigerVNC/tigervnc.git") + (commit commit))) + (sha256 + (base32 + "1lp6mxl5dqlkrzx0q145jzgpbwvhsni3fj6x9ngf8v5s63x82q1p")) + (file-name (git-file-name name version)))) + (build-system cmake-build-system) + (arguments + '(#:tests? #f ; Tests that do exists are not automated. + #:phases (modify-phases %standard-phases + (replace 'install + (lambda* (#:key outputs #:allow-other-keys) + (with-directory-excursion "vncviewer" + (invoke "make" "install"))))))) + (native-inputs + `(("autoconf" ,autoconf) + ("gettext-minimal" ,gettext-minimal) + ("automake" ,automake))) + (inputs + `(("zlib" ,zlib) + ("gnutls" ,gnutls) + ("libjpeg-turbo" ,libjpeg-turbo) + ("fltk" ,fltk) + ("linux-pam" ,linux-pam) + ("libx11" ,libx11) + ("libxext" ,libxext) + ("libxtst" ,libxtst) + ("libxrandr" ,libxrandr) + ("libxdamage" ,libxdamage))) + (home-page "https://tigervnc.org/") + (synopsis "High-performance, platform-neutral implementation of VNC (client)") - (description "TigerVNC is a client/server implementation of VNC (Virtual + (description "TigerVNC is a client/server implementation of VNC (Virtual Network Computing). It provides enough performance to run even 3D and video applications. It also provides extensions for advanced authentication methods and TLS encryption. This package installs only the VNC client, the application which is needed to connect to VNC servers.") - (license license:gpl2))) + (license license:gpl2)))) ;; A VNC server is, in fact, an X server so it seems like a good idea ;; to build on the work already done for xorg-server package. This is @@ -103,17 +103,9 @@ application which is needed to connect to VNC servers.") (package (inherit xorg-server) (name "tigervnc-server") - (version "1.10.1") + (version (package-version tigervnc-client)) (native-inputs - `(("tigervnc-src" ,(origin - (method git-fetch) - (uri - (git-reference - (url "https://github.com/TigerVNC/tigervnc.git") - (commit "v1.9.0"))) - (sha256 - (base32 - "0b47fg3741qs3zdpl2zr0s6jz46dypp2j6gqrappbzm3ywnnmm1x")))) + `(("tigervnc-src" ,(package-source tigervnc-client)) ("autoconf" ,autoconf) ("automake" ,automake) ("libtool" ,libtool) @@ -183,9 +175,9 @@ application which is needed to connect to VNC servers.") (list-head (string-split xorg-server-version #\.) 2))) - (fn (format "~a/unix/xserver~a.patch" tvnc-src patch-num))) + (fn (format #f "~a/unix/xserver~a.patch" tvnc-src patch-num))) (when (not (file-exists? fn)) - (error (format "Patch file, ~a, + (error (format #f "Patch file, ~a, corresponding to the input xorg-server version, does not exist. Installation will fail. " fn))) @@ -259,7 +251,7 @@ where the server is installed."))) (inputs `(("gnutls" ,gnutls) ("libgcrypt" ,libgcrypt) - ("libjpeg" ,libjpeg) + ("libjpeg" ,libjpeg-turbo) ("libpng" ,libpng) ("lzo" ,lzo) ("sdl2" ,sdl2))) diff --git a/gnu/packages/vpn.scm b/gnu/packages/vpn.scm index a9e20049c6..369d3200c1 100644 --- a/gnu/packages/vpn.scm +++ b/gnu/packages/vpn.scm @@ -1,10 +1,10 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2013 Andreas Enge <andreas@enge.fr> -;;; Copyright © 2013, 2016, 2018, 2019 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2013, 2016, 2018, 2019, 2020 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2014 Eric Bavier <bavier@member.fsf.org> ;;; Copyright © 2015 Jeff Mickey <j@codemac.net> ;;; Copyright © 2016, 2017, 2019 Efraim Flashner <efraim@flashner.co.il> -;;; Copyright © 2016, 2017, 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr> +;;; Copyright © 2016, 2017, 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2017 Julien Lepiller <julien@lepiller.eu> ;;; Copyright © 2018 Pierre Langlois <pierre.langlois@gmx.com> ;;; Copyright © 2018 Meiyo Peng <meiyo.peng@gmail.com> @@ -40,7 +40,9 @@ #:use-module (gnu packages) #:use-module (gnu packages admin) #:use-module (gnu packages base) + #:use-module (gnu packages bash) #:use-module (gnu packages check) + #:use-module (gnu packages dns) #:use-module (gnu packages autotools) #:use-module (gnu packages compression) #:use-module (gnu packages gettext) @@ -138,7 +140,7 @@ Only \"Universal TUN/TAP device driver support\" is needed in the kernel.") (base32 "1g41yarz2bl0f73kbjqnywr485ghanbp7nmspklfb0n07yp0z6ak")))) (build-system gnu-build-system) - (inputs `(("guile" ,guile-2.2) ; for the wrapper scripts + (inputs `(("guile" ,guile-3.0) ; for the wrapper scripts ("coreutils" ,coreutils) ("grep" ,grep) ("iproute2" ,iproute) ; for ‘ip’ @@ -154,7 +156,7 @@ Only \"Universal TUN/TAP device driver support\" is needed in the kernel.") (for-each (lambda (script) (substitute* script (("^PATH=.*") "") - (("(/usr|)/s?bin/") "") + (("/usr/s?bin/") "") (("\\[ +-x +([^]]+) +\\]" _ command) (string-append "command -v >/dev/null 2>&1 " command)))) @@ -245,20 +247,21 @@ the user specifically asks to proxy, so the @dfn{VPN} interface no longer (define-public openconnect (package (name "openconnect") - (version "8.08") + (version "8.09") (source (origin (method url-fetch) (uri (string-append "ftp://ftp.infradead.org/pub/openconnect/" "openconnect-" version ".tar.gz")) (sha256 - (base32 "1s3rjdazx1n5izpcgz05p1sirm7kf4z3gh26dq2h2j5xmgmk0jxp")))) + (base32 "19p91hs6j348qp0v9c7abl3rb8d9ncc37k743qhrn29s9jz0567k")))) (build-system gnu-build-system) (propagated-inputs `(("libxml2" ,libxml2) ("gnutls" ,gnutls-3.6.13) ("zlib" ,zlib))) (inputs - `(("vpnc-scripts" ,vpnc-scripts))) + `(("lz4" ,lz4) + ("vpnc-scripts" ,vpnc-scripts))) (native-inputs `(("gettext" ,gettext-minimal) ("pkg-config" ,pkg-config))) @@ -540,7 +543,33 @@ WireGuard was added to Linux 5.6.") #:phases (modify-phases %standard-phases ;; No configure script - (delete 'configure)))) + (delete 'configure) + (add-after 'install 'install-contrib-docs + (lambda* (#:key outputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out"))) + (copy-recursively "contrib/" + (string-append out "/share/doc/wireguard-tools")) + #t))) + (add-after 'install 'wrap-wg-quick + (lambda* (#:key inputs outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (inputs-sbin (map (lambda (input) + (string-append (assoc-ref inputs input) "/sbin")) + (list "resolvconf" "iproute" "procps" + "iptables"))) + (coreutils (string-append (assoc-ref inputs "coreutils") + "/bin"))) + (wrap-program (string-append out "/bin/wg-quick") + `("PATH" ":" prefix ,(append inputs-sbin + (list coreutils)))) + #t)))))) + (inputs + `(("resolvconf" ,openresolv) + ("coreutils" ,coreutils) + ("bash" ,bash) ; for scripts using /dev/tcp + ("procps" ,procps) + ("iproute" ,iproute) + ("iptables" ,iptables))) (home-page "https://www.wireguard.com/") (synopsis "Tools for configuring WireGuard tunnels") (description diff --git a/gnu/packages/web-browsers.scm b/gnu/packages/web-browsers.scm index 424951cdb7..62b7a5bdca 100644 --- a/gnu/packages/web-browsers.scm +++ b/gnu/packages/web-browsers.scm @@ -140,7 +140,7 @@ management, extensions such as advertisement blocker and colorful tabs.") (native-inputs `(("pkg-config" ,pkg-config))) (inputs `(("fltk" ,fltk) ("fontconfig" ,fontconfig) - ("libjpeg" ,libjpeg) + ("libjpeg" ,libjpeg-turbo) ("libpng" ,libpng) ("libxcursor" ,libxcursor) ("libxft" ,libxft) @@ -188,7 +188,7 @@ older or slower computers and embedded systems.") (native-inputs `(("pkg-config" ,pkg-config))) (inputs `(("zlib" ,zlib) ("openssl" ,openssl) - ("libjpeg" ,libjpeg) + ("libjpeg" ,libjpeg-turbo) ("libtiff" ,libtiff) ("libevent" ,libevent) ("libpng" ,libpng) @@ -338,7 +338,7 @@ access.") (define-public qutebrowser (package (name "qutebrowser") - (version "1.10.0") + (version "1.11.0") (source (origin (method url-fetch) @@ -347,7 +347,7 @@ access.") "qutebrowser-" version ".tar.gz")) (sha256 (base32 - "1prvd3cysmcjfybn0dmr3ih0bl6lm5ml9i7wd09fn8hb7047mkby")))) + "0b0qlki9bp9mm41lrh6rc6qqvm4nsz8da63sby3a1f2xm9b9vvg2")))) (build-system python-build-system) (native-inputs `(("python-attrs" ,python-attrs))) ; for tests diff --git a/gnu/packages/web.scm b/gnu/packages/web.scm index 092ff30148..eabc3c0197 100644 --- a/gnu/packages/web.scm +++ b/gnu/packages/web.scm @@ -14,7 +14,7 @@ ;;; Copyright © 2016 Rene Saavedra <rennes@openmailbox.org> ;;; Copyright © 2016 Ben Woodcroft <donttrustben@gmail.com> ;;; Copyright © 2016 Clément Lassieur <clement@lassieur.org> -;;; Copyright © 2016, 2017 ng0 <ng0@n0.is> +;;; Copyright © 2016, 2017 Nikita <nikita@n0.is> ;;; Copyright © 2016, 2017, 2018, 2019 Arun Isaac <arunisaac@systemreboot.net> ;;; Copyright © 2016, 2017, 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2016 Bake Timmons <b3timmons@speedymail.org> @@ -35,10 +35,13 @@ ;;; Copyright © 2019 Alex Griffin <a@ajgrf.com> ;;; Copyright © 2019 Hartmut Goebel <h.goebel@crazy-compilers.com> ;;; Copyright © 2019 Jakob L. Kreuze <zerodaysfordays@sdf.org> +;;; Copyright © 2019 Mathieu Othacehe <m.othacehe@gmail.com> +;;; Copyright © 2019 Pierre-Moana Levesque <pierre.moana.levesque@gmail.com> ;;; Copyright © 2019, 2020 Florian Pelz <pelzflorian@pelzflorian.de> ;;; Copyright © 2020 Timotej Lazar <timotej.lazar@araneo.si> ;;; Copyright © 2020 Alexandros Theodotou <alex@zrythm.org> ;;; Copyright © 2020 Pierre Neidhardt <mail@ambrevar.xyz> +;;; Copyright © 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org> ;;; Copyright © 2018, 2019, 2020 Björn Höfling <bjoern.hoefling@bjoernhoefling.de> ;;; Copyright © 2020 Paul Garlick <pgarlick@tourbillion-technology.com> ;;; @@ -108,6 +111,7 @@ #:use-module (gnu packages gtk) #:use-module (gnu packages guile) #:use-module (gnu packages guile-xyz) + #:use-module (gnu packages hurd) #:use-module (gnu packages java) #:use-module (gnu packages jemalloc) #:use-module (gnu packages image) @@ -1470,7 +1474,7 @@ hash/signatures.") (define-public libyaml (package (name "libyaml") - (version "0.1.7") + (version "0.2.4") (source (origin (method url-fetch) @@ -1479,7 +1483,7 @@ hash/signatures.") version ".tar.gz")) (sha256 (base32 - "0a87931cx5m14a1x8rbjix3nz7agrcgndf4h392vm62a4rby9240")))) + "0mq5wf17ifcwwxq3kbimhi53jn3fg23vcynqpzxjcz3vfjlfs2nq")))) (build-system gnu-build-system) (home-page "http://pyyaml.org/wiki/LibYAML") (synopsis "YAML 1.1 parser and emitter written in C") @@ -1487,20 +1491,6 @@ hash/signatures.") "LibYAML is a YAML 1.1 parser and emitter written in C.") (license license:expat))) -(define-public libyaml-2.1 - (package - (inherit libyaml) - (version "0.2.1") - (source - (origin - (method url-fetch) - (uri (string-append - "http://pyyaml.org/download/libyaml/yaml-" - version ".tar.gz")) - (sha256 - (base32 - "1karpcfgacgppa82wm2drcfn2kb6q2wqfykf5nrhy20sci2i2a3q")))))) - (define-public libquvi-scripts (package (name "libquvi-scripts") @@ -5247,7 +5237,7 @@ w3c webidl files and a binding configuration file.") ("openssl" ,openssl) ("utf8proc" ,utf8proc) ("libpng" ,libpng) - ("libjpeg" ,libjpeg) + ("libjpeg" ,libjpeg-turbo) ("libcss" ,libcss) ("libdom" ,libdom) ("libnsbmp" ,libnsbmp) @@ -5865,10 +5855,22 @@ into your tests. It automatically starts up a HTTP server in a separate thread #:make-flags (list (string-append "PREFIX=" (assoc-ref %outputs "out")) - "CC=gcc" "library") + "library" + ,@(if (%current-target-system) + '() + '("CC=gcc"))) #:phases (modify-phases %standard-phases - (delete 'configure)))) + ,@(if (%current-target-system) + '((replace 'configure + (lambda* (#:key target #:allow-other-keys) + (substitute* (find-files "." "Makefile") + (("CC\\?=.*$") + (string-append "CC=" target "-gcc\n")) + (("AR\\?=.*$") + (string-append "AR=" target "-ar\n"))) + #t))) + '((delete 'configure)))))) (synopsis "HTTP request/response parser for C") (description "This is a parser for HTTP messages written in C. It parses both requests and responses. The parser is designed to be used in @@ -7070,8 +7072,7 @@ derivation by David Revoy from the original MonsterID by Andreas Gohr.") (define-public nghttp2 (package (name "nghttp2") - (version "1.39.1") - (replacement nghttp2-1.39.2) + (version "1.40.0") (source (origin (method url-fetch) @@ -7080,7 +7081,7 @@ derivation by David Revoy from the original MonsterID by Andreas Gohr.") "nghttp2-" version ".tar.xz")) (sha256 (base32 - "0j0lk37k8k3f61r9nw647hg4b22z1753l36n3xrp9x01civ614b7")))) + "0wwhwv7cvi1vxpdjwvg0kpa4jzhszclpnwrwfcw728zz53a47z09")))) (build-system gnu-build-system) (outputs (list "out" "lib")) ; only libnghttp2 @@ -7094,7 +7095,8 @@ derivation by David Revoy from the original MonsterID by Andreas Gohr.") ;; Required to build the tools (i.e. without ‘--enable-lib-only’). `(("c-ares" ,c-ares) ("jansson" ,jansson) ; for HPACK tools - ("jemalloc" ,jemalloc) ; fight nghttpd{,x} heap fragmentation + ,@(if (hurd-target?) '() + `(("jemalloc" ,jemalloc))) ; fight nghttpd{,x} heap fragmentation ("libev" ,libev) ("libxml2" ,libxml2) ; for ‘nghttp -a’ ("openssl" ,openssl))) @@ -7118,9 +7120,10 @@ derivation by David Revoy from the original MonsterID by Andreas Gohr.") (assoc-ref outputs "lib"))) #t)) (add-before 'check 'set-timezone-directory - (lambda* (#:key inputs #:allow-other-keys) - (setenv "TZDIR" (string-append (assoc-ref inputs "tzdata") - "/share/zoneinfo")) + (lambda* (#:key inputs native-inputs #:allow-other-keys) + (setenv "TZDIR" (string-append + (assoc-ref (or native-inputs inputs) "tzdata") + "/share/zoneinfo")) #t))))) (home-page "https://nghttp2.org/") (synopsis "HTTP/2 protocol client, proxy, server, and library") @@ -7149,33 +7152,6 @@ compressed JSON header blocks. @end itemize\n") (license license:expat))) -(define nghttp2-1.39.2 - (package - (inherit nghttp2) - (version "1.39.2") - (source (origin - (method url-fetch) - (uri (string-append "https://github.com/nghttp2/nghttp2/" - "releases/download/v" version "/" - "nghttp2-" version ".tar.xz")) - (sha256 - (base32 - "12yfsjghbaypp4w964d45ih9vs38g6anih80wbsflaxx192idlm2")))))) - -;; 'Node' requires this newer version, to be removed on the next rebuild cycle. -(define-public nghttp2-1.40 - (package - (inherit nghttp2) - (version "1.40.0") - (source (origin - (method url-fetch) - (uri (string-append "https://github.com/nghttp2/nghttp2/" - "releases/download/v" version "/" - "nghttp2-" version ".tar.xz")) - (sha256 - (base32 - "0wwhwv7cvi1vxpdjwvg0kpa4jzhszclpnwrwfcw728zz53a47z09")))))) - (define-public hpcguix-web (let ((commit "9de63562b06b4aef3a3afe5ecb18d3c91e57ee74") (revision "5")) @@ -7246,11 +7222,11 @@ compressed JSON header blocks. ("uglify-js" ,uglify-js) ("pkg-config" ,pkg-config))) (inputs - `(("guix" ,guile3.0-guix))) + `(("guix" ,guix))) (propagated-inputs - `(("guile" ,guile-next) - ("guile-commonmark" ,guile3.0-commonmark) - ("guile-json" ,guile3.0-json))) + `(("guile" ,guile-3.0) + ("guile-commonmark" ,guile-commonmark) + ("guile-json" ,guile-json-3))) (home-page "https://github.com/UMCUGenetics/hpcguix-web") (synopsis "Web interface for cluster deployments of Guix") (description "Hpcguix-web provides a web interface to the list of packages diff --git a/gnu/packages/webkit.scm b/gnu/packages/webkit.scm index e52536c279..90be7d2625 100644 --- a/gnu/packages/webkit.scm +++ b/gnu/packages/webkit.scm @@ -128,7 +128,8 @@ engine that uses Wayland for graphics output.") "webkitgtk-" version ".tar.xz")) (sha256 (base32 - "1g9hik3bprki5s9d7y5288q5irwckbzajr6rnlvjrlnqrwjkblmr")))) + "1g9hik3bprki5s9d7y5288q5irwckbzajr6rnlvjrlnqrwjkblmr")) + (patches (search-patches "webkitgtk-share-store.patch")))) (build-system cmake-build-system) (outputs '("out" "doc")) (arguments @@ -156,6 +157,15 @@ engine that uses Wayland for graphics output.") "-DUSE_WOFF2=OFF") #:phases (modify-phases %standard-phases + (add-after 'unpack 'configure-bubblewrap-store-directory + (lambda _ + ;; This phase is a corollary to 'webkitgtk-share-store.patch' to + ;; avoid hard coding /gnu/store, for users with other prefixes. + (let ((store-directory (%store-directory))) + (substitute* + "Source/WebKit/UIProcess/Launcher/glib/BubblewrapLauncher.cpp" + (("@storedir@") store-directory)) + #t))) (add-after 'unpack 'patch-gtk-doc-scan (lambda* (#:key inputs #:allow-other-keys) (for-each (lambda (file) @@ -206,7 +216,7 @@ engine that uses Wayland for graphics output.") ("hyphen" ,hyphen) ("icu4c" ,icu4c) ("libgcrypt" ,libgcrypt) - ("libjpeg" ,libjpeg) + ("libjpeg" ,libjpeg-turbo) ("libnotify" ,libnotify) ("libpng" ,libpng) ("libseccomp" ,libseccomp) diff --git a/gnu/packages/wine.scm b/gnu/packages/wine.scm index 2c48bebdbf..86e0337884 100644 --- a/gnu/packages/wine.scm +++ b/gnu/packages/wine.scm @@ -117,7 +117,7 @@ ("libsane" ,sane-backends) ("libpcap" ,libpcap) ("libpng" ,libpng) - ("libjpeg" ,libjpeg) + ("libjpeg" ,libjpeg-turbo) ("libtiff" ,libtiff) ("libICE" ,libice) ("libX11" ,libx11) diff --git a/gnu/packages/wm.scm b/gnu/packages/wm.scm index 4d1b6b3fd4..a29a7d9764 100644 --- a/gnu/packages/wm.scm +++ b/gnu/packages/wm.scm @@ -9,7 +9,7 @@ ;;; Copyright © 2016 Al McElrath <hello@yrns.org> ;;; Copyright © 2016 Carlo Zancanaro <carlo@zancanaro.id.au> ;;; Copyright © 2016, 2017, 2018, 2019 Ludovic Courtès <ludo@gnu.org> -;;; Copyright © 2016, 2017, 2018 ng0 <ng0@n0.is> +;;; Copyright © 2016, 2017, 2018 Nikita <nikita@n0.is> ;;; Copyright © 2016 doncatnip <gnopap@gmail.com> ;;; Copyright © 2016 Ivan Vilata i Balaguer <ivan@selidor.net> ;;; Copyright © 2017 Mekeor Melire <mekeor.melire@gmail.com> @@ -34,6 +34,7 @@ ;;; Copyright © 2020 Nicolas Goaziou <mail@nicolasgoaziou.fr> ;;; Copyright © 2020 Brice Waegeneire <brice@waegenei.re> ;;; Copyright © 2020 Boris A. Dekshteyn <harlequin78@gmail.com> +;;; Copyright © 2020 Marcin Karpezo <sirmacik@wioo.waw.pl> ;;; ;;; This file is part of GNU Guix. ;;; @@ -150,7 +151,7 @@ the leaves of a full binary tree.") (define-public herbstluftwm (package (name "herbstluftwm") - (version "0.8.1") + (version "0.8.2") (source (origin (method url-fetch) @@ -158,7 +159,7 @@ the leaves of a full binary tree.") version ".tar.gz")) (sha256 (base32 - "0c1lf82z6a56g8asin91cmqhzk3anw0xwc44b31bpjixadmns57y")) + "0wbl1s1gwdc61ll6qmkwb56swjxv99by1dhi080bdqn0w8p75804")) (file-name (string-append "herbstluftwm-" version ".tar.gz")))) (build-system cmake-build-system) (inputs @@ -270,14 +271,14 @@ commands would.") (define-public i3-wm (package (name "i3-wm") - (version "4.18") + (version "4.18.1") (source (origin (method url-fetch) (uri (string-append "https://i3wm.org/downloads/i3-" version ".tar.bz2")) (sha256 (base32 - "0dv5g8ycfmijxfjyw8hzsxaf80v09lb73zh7x2vszy78h3amifqz")))) + "0z709cianlzw0x0qwq4361347354xd9ckj1v7vjvhb1zh3x91gws")))) (build-system gnu-build-system) (arguments `(#:configure-flags @@ -1312,7 +1313,7 @@ functionality to display information about the most commonly used services.") (define-public wlroots (package (name "wlroots") - (version "0.7.0") + (version "0.10.1") (source (origin (method git-fetch) @@ -1321,7 +1322,7 @@ functionality to display information about the most commonly used services.") (commit version))) (file-name (git-file-name name version)) (sha256 - (base32 "0jzxa6psbc7ddxli7rbfqxmv1svxnis51l1vch4hb9fdixqm284a")))) + (base32 "0j2lh9vc92zhn44rjbia5aw3y1rpgfng1x1h17lcvj5m4i6vj0pc")))) (build-system meson-build-system) (arguments `(#:configure-flags '("-Dlogind-provider=elogind") @@ -1357,7 +1358,7 @@ modules for building a Wayland compositor.") (define-public sway (package (name "sway") - (version "1.2") + (version "1.4") (source (origin (method git-fetch) @@ -1366,7 +1367,7 @@ modules for building a Wayland compositor.") (commit version))) (file-name (git-file-name name version)) (sha256 - (base32 "0vch2zm5afc76ia78p3vg71zr2fyda67l9hd2h0x1jq3mnvfbxnd")))) + (base32 "11qf89y3q92g696a6f4d23qb44gqixg6qxq740vwv2jw59ms34ja")))) (build-system meson-build-system) (arguments `(#:phases @@ -1730,6 +1731,36 @@ productive, customizable lisp based systems.") rendering.") (license (list license:gpl2+ license:gpl3+ license:bsd-2))))) +(define-public sbcl-stumpwm-pass + (let ((commit "dd5b037923ec7d3cc27c55806bcec5a1b8cf4e91") + (revision "1")) + (package + (name "sbcl-pass") + (version (git-version "0.0.1" revision commit)) ;no upstream release + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/stumpwm/stumpwm-contrib.git") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 "0ahxdj9f884afpzxczx6mx7l4nwg4kw6afqaq7lwhf7lxcwylldn")))) + (inputs + `(("stumpwm" ,stumpwm "lib"))) + (build-system asdf-build-system/sbcl) + (arguments + '(#:phases + (modify-phases %standard-phases + (add-after 'unpack 'chdir + (lambda _ + (chdir "util/pass")))))) + (home-page "https://github.com/stumpwm/stumpwm-contrib") + (synopsis "Integrate @code{pass} wih StumpWM") + (description "This package provides an interface which integrates +password-store into StumpWM.") + (license (list license:gpl2+ license:gpl3+ license:bsd-2))))) + (define-public sbcl-stumpwm-globalwindows (let ((commit "dd5b037923ec7d3cc27c55806bcec5a1b8cf4e91") (revision "1")) diff --git a/gnu/packages/wv.scm b/gnu/packages/wv.scm index 866cfee222..37881a4d0f 100644 --- a/gnu/packages/wv.scm +++ b/gnu/packages/wv.scm @@ -45,7 +45,7 @@ (inputs `(("glib" ,glib) ("libgsf" ,libgsf) - ("libjpeg" ,libjpeg) + ("libjpeg" ,libjpeg-turbo) ("libpng" ,libpng) ("zlib" ,zlib))) (native-inputs diff --git a/gnu/packages/wxwidgets.scm b/gnu/packages/wxwidgets.scm index 49b190b9df..2cdff17404 100644 --- a/gnu/packages/wxwidgets.scm +++ b/gnu/packages/wxwidgets.scm @@ -53,7 +53,7 @@ (define-public wxwidgets (package (name "wxwidgets") - (version "3.0.4") + (version "3.0.5.1") (source (origin (method url-fetch) @@ -61,14 +61,14 @@ "releases/download/v" version "/wxWidgets-" version ".tar.bz2")) (sha256 - (base32 "1w7pgfqjab7n84lc4aarydl3g55d1hdgl2ilwml766r6inc7y5cn")))) + (base32 "01y89999jw5q7njrhxajincx7lydls6yq37ikazjryssrxrnw3s4")))) (build-system glib-or-gtk-build-system) (inputs `(("glu" ,glu) ;; XXX gstreamer-0.10 builds fail ;; ("gstreamer" ,gstreamer-0.10) ("gtk" ,gtk+) - ("libjpeg" ,libjpeg) + ("libjpeg" ,libjpeg-turbo) ("libmspack" ,libmspack) ("libsm" ,libsm) ("libtiff" ,libtiff) @@ -124,7 +124,7 @@ and many other languages.") (base32 "1gjs9vfga60mk4j4ngiwsk9h6c7j22pw26m3asxr1jwvqbr8kkqk")))) (inputs `(("gtk" ,gtk+-2) - ("libjpeg" ,libjpeg) + ("libjpeg" ,libjpeg-turbo) ("libtiff" ,libtiff) ("libmspack" ,libmspack) ("sdl" ,sdl) diff --git a/gnu/packages/xdisorg.scm b/gnu/packages/xdisorg.scm index df61a95cbb..256b86a39a 100644 --- a/gnu/packages/xdisorg.scm +++ b/gnu/packages/xdisorg.scm @@ -17,7 +17,7 @@ ;;; Copyright © 2016, 2017, 2019 Marius Bakke <mbakke@fastmail.com> ;;; Copyright © 2016 Petter <petter@mykolab.ch> ;;; Copyright © 2017 Mekeor Melire <mekeor.melire@gmail.com> -;;; Copyright © 2017 ng0 <ng0@n0.is> +;;; Copyright © 2017 Nikita <nikita@n0.is> ;;; Copyright © 2017, 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2017 Marek Benc <dusxmt@gmx.com> ;;; Copyright © 2017 Mike Gerwitz <mtg@gnu.org> @@ -36,6 +36,7 @@ ;;; Copyright © 2020 Damien Cassou <damien@cassou.me> ;;; Copyright © 2020 John Soo <jsoo1@asu.edu> ;;; Copyright © 2020 Boris A. Dekshteyn <boris.dekshteyn@gmail.com> +;;; Copyright © 2020 Alex McGrath <amk@amk.ie> ;;; ;;; This file is part of GNU Guix. ;;; @@ -464,6 +465,8 @@ following the mouse.") "1ryxzdf048x7wsx4dlvrr1p00gzwfs7lybnhgc7ygbj0dvyxcrns")) (patches (search-patches "pixman-CVE-2016-5296.patch")))) (build-system gnu-build-system) + (arguments + '(#:configure-flags '("--disable-static"))) (inputs `(("libpng" ,libpng) ("zlib" ,zlib))) @@ -646,7 +649,7 @@ of the screen selected by mouse.") (define-public slop (package (name "slop") - (version "7.4") + (version "7.5") (source (origin (method git-fetch) (uri (git-reference @@ -655,7 +658,7 @@ of the screen selected by mouse.") (file-name (git-file-name name version)) (sha256 (base32 - "0fgd8a2dqkg64all0f96sca92sdss9r3pzmv5kck46b99z2325z6")))) + "1k8xxb4rj2fylr4vj16yvsf73cyywliz9cy78pl4ibmi03jhg837")))) (build-system cmake-build-system) (arguments '(#:tests? #f)) ; no "check" target @@ -679,7 +682,7 @@ selection's dimensions to stdout.") (define-public maim (package (name "maim") - (version "5.5.3") + (version "5.6.3") (source (origin (method git-fetch) (uri (git-reference @@ -688,7 +691,7 @@ selection's dimensions to stdout.") (file-name (git-file-name name version)) (sha256 (base32 - "1kbxsz8whfxl5blwsvpva2q95zwy72argwhi1cfqh5lrhzq5zrpp")))) + "181mjjrjb9fs1ficcv9miqbk94v95j1yli7fjp2dj514g7nj9l3x")))) (build-system cmake-build-system) (arguments '(#:tests? #f)) ; no "check" target @@ -1252,7 +1255,7 @@ protocol.") ("libglade" ,libglade) ("libxml2" ,libxml2) ("libsm" ,libsm) - ("libjpeg" ,libjpeg) + ("libjpeg" ,libjpeg-turbo) ("linux-pam" ,linux-pam) ("pango" ,pango) ("gtk+" ,gtk+) @@ -1925,16 +1928,16 @@ binary to setuid-binaries: (define-public wl-clipboard (package (name "wl-clipboard") - (version "2.0.0_beta2") + (version "2.0.0") (source (origin (method git-fetch) (uri (git-reference (url "https://github.com/bugaevc/wl-clipboard.git") - (commit version))) + (commit (string-append "v" version)))) (file-name (git-file-name name version)) (sha256 - (base32 "0wyqbaph9v1v6lwfcjf8gjhdl70icpss4wapshzfxcz3l9m1p8hv")))) + (base32 "0c4w87ipsw09aii34szj9p0xfy0m00wyjpll0gb0aqmwa60p0c5d")))) (build-system meson-build-system) (native-inputs `(("pkg-config" ,pkg-config))) @@ -2128,7 +2131,7 @@ Xwrits hides itself until you should take another break.") "env = Environment( ENV = { 'PATH': os.environ['PATH'], - 'CPATH': os.environ['CPATH'], + 'CPATH': os.environ['C_INCLUDE_PATH'], 'LIBRARY_PATH': os.environ['LIBRARY_PATH'], 'PKG_CONFIG_PATH': os.environ['PKG_CONFIG_PATH'] },") @@ -2324,3 +2327,34 @@ some kind of chat (in native language). @command{kbdd} also supports D-Bus signals, which makes it possible to create layout indicator widgets.") (license license:bsd-2))) + +(define-public j4-dmenu-desktop + (package + (name "j4-dmenu-desktop") + (version "2.17") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/enkore/j4-dmenu-desktop.git") + (commit (string-append "r" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0v23fimkn83dcm5p53y2ymhklff3kwppxhf75sm8xmswrzkixpgc")))) + (build-system cmake-build-system) + (native-inputs + `(("catch2" ,catch-framework2))) + (arguments + `(#:configure-flags '("-DWITH_GIT_CATCH=off") + #:phases + (modify-phases %standard-phases + (replace 'check + (lambda _ + (invoke "./j4-dmenu-tests" "exclude:SearchPath/XDG_DATA_HOME")))))) + (synopsis "Fast desktop menu") + (description + "j4-dmenu-desktop is a replacement for i3-dmenu-desktop. Its purpose +is to find @file{.desktop} files and offer you a menu to start an application +using @command{dmenu}.") + (home-page "https://github.com/enkore/j4-dmenu-desktop") + (license license:gpl3+))) diff --git a/gnu/packages/xfce.scm b/gnu/packages/xfce.scm index 4b9751da35..61b64ef553 100644 --- a/gnu/packages/xfce.scm +++ b/gnu/packages/xfce.scm @@ -6,12 +6,13 @@ ;;; Copyright © 2016 Kei Kebreau <kkebreau@posteo.net> ;;; Copyright © 2017, 2019 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2017 Petter <petter@mykolab.ch> -;;; Copyright © 2017 ng0 <ng0@n0.is> +;;; Copyright © 2017 Nikita <nikita@n0.is> ;;; Copyright © 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2019 Pkill -9 <pkill9@runbox.com> ;;; Copyright © 2019 L p R n d n <guix@lprndn.info> ;;; Copyright © 2019 Ingo Ruhnke <grumbel@gmail.com> ;;; Copyright © 2020 Vincent Legoll <vincent.legoll@gmail.com> +;;; Copyright © 2020 Jonathan Brielmaier <jonathan.brielmaier@web.de> ;;; ;;; This file is part of GNU Guix. ;;; @@ -213,6 +214,19 @@ to share commonly used Xfce widgets among the Xfce applications.") (base32 "1dp5s64g6572h9zvx9js7qc72s728qsd9y7hl7hg6rwaq0cjb2gc")))) (build-system gnu-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + ;; exo won't find URI::Escape otherwise + (add-after 'install 'wrap-exo-compose-mail + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (perl5lib (getenv "PERL5LIB"))) + (wrap-program (string-append out "/lib/xfce4/exo/exo-compose-mail") + `("PERL5LIB" ":" prefix + (,(string-append perl5lib ":" out + "/lib/perl5/site_perl"))))) + #t))))) (native-inputs `(("pkg-config" ,pkg-config) ("intltool" ,intltool))) @@ -290,7 +304,7 @@ merging features essential for loading menus modified with menu editors.") ("gdk-pixbuf" ,gdk-pixbuf) ("cairo" ,cairo) ;; Needed for pdf thumbnails (poppler-glibc.pc) ("freetype" ,freetype) - ("libjpeg" ,libjpeg) + ("libjpeg" ,libjpeg-turbo) ("libgsf" ,libgsf) ("poppler" ,poppler) ;; FIXME Provide gstreamer and gstreamer-tag to get video thumbnails diff --git a/gnu/packages/xfig.scm b/gnu/packages/xfig.scm index 09c7597761..c3d02619b4 100644 --- a/gnu/packages/xfig.scm +++ b/gnu/packages/xfig.scm @@ -47,7 +47,7 @@ `(("desktop-file-utils" ,desktop-file-utils))) (inputs `(("libxaw3d" ,libxaw3d) - ("libjpeg" ,libjpeg) + ("libjpeg" ,libjpeg-turbo) ("libpng" ,libpng) ("libxpm" ,libxpm) ("libx11" ,libx11) @@ -90,7 +90,7 @@ selected in various ways. For text, 35 fonts are available.") ("makedepend" ,makedepend))) (inputs `(("xfig" ,xfig) - ("libjpeg" ,libjpeg) + ("libjpeg" ,libjpeg-turbo) ("libpng" ,libpng) ("libxpm" ,libxpm) ("libx11" ,libx11) diff --git a/gnu/packages/xml.scm b/gnu/packages/xml.scm index 32696e30ee..03daebb4a7 100644 --- a/gnu/packages/xml.scm +++ b/gnu/packages/xml.scm @@ -11,7 +11,7 @@ ;;; Copyright © 2016, 2017 Leo Famulari <leo@famulari.name> ;;; Copyright © 2016 Ben Woodcroft <donttrustben@gmail.com> ;;; Copyright © 2016 Jan Nieuwenhuizen <janneke@gnu.org> -;;; Copyright © 2016, 2017 ng0 <ng0@n0.is> +;;; Copyright © 2016, 2017 Nikita <nikita@n0.is> ;;; Copyright © 2016, 2017, 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2016, 2017, 2018, 2019, 2020 Marius Bakke <mbakke@fastmail.com> ;;; Copyright © 2017 Adriano Peluso <catonano@gmail.com> @@ -67,8 +67,7 @@ (define-public expat (package (name "expat") - (version "2.2.7") - (replacement expat-2.2.9) + (version "2.2.9") (source (let ((dot->underscore (lambda (c) (if (char=? #\. c) #\_ c)))) (origin (method url-fetch) @@ -80,8 +79,10 @@ "/expat-" version ".tar.xz"))) (sha256 (base32 - "1y5yax6bq8p9xk49zqkd62pxk8bq266wrgbrqgaxp3wsrw5g9qrh"))))) + "1960mmgbb4cm64n1p0nz3hrs1pw03hkrfcw8prmnn4622mdrd9hy"))))) (build-system gnu-build-system) + (arguments + '(#:configure-flags '("--disable-static"))) (home-page "https://libexpat.github.io/") (synopsis "Stream-oriented XML parser library written in C") (description @@ -90,23 +91,6 @@ stream-oriented parser in which an application registers handlers for things the parser might find in the XML document (like start tags).") (license license:expat))) -(define expat-2.2.9 - (package - (inherit expat) - (version "2.2.9") - (source (let ((dot->underscore (lambda (c) (if (char=? #\. c) #\_ c)))) - (origin - (method url-fetch) - (uri (list (string-append "mirror://sourceforge/expat/expat/" - version "/expat-" version ".tar.xz") - (string-append - "https://github.com/libexpat/libexpat/releases/download/R_" - (string-map dot->underscore version) - "/expat-" version ".tar.xz"))) - (sha256 - (base32 - "1960mmgbb4cm64n1p0nz3hrs1pw03hkrfcw8prmnn4622mdrd9hy"))))))) - (define-public libebml (package (name "libebml") @@ -134,14 +118,14 @@ hierarchical form with variable field lengths.") (define-public libxml2 (package (name "libxml2") - (version "2.9.9") + (version "2.9.10") (source (origin (method url-fetch) (uri (string-append "ftp://xmlsoft.org/libxml2/libxml2-" version ".tar.gz")) (sha256 (base32 - "0wd881jzvqayx0ihzba29jl80k06xj9ywp16kxacdqs3064p1ywl")))) + "07xynh8hcxb2yb1fs051xrgszjvj37wnxvxgsj10rzmqzy9y3zma")))) (build-system gnu-build-system) (outputs '("out" "static")) (arguments @@ -183,9 +167,12 @@ project (but it is usable outside of the Gnome platform).") (license license:x11))) (define-public python-libxml2 - ;; TODO: Merge with 'python-libxml2/fixed' on the next rebuild cycle. (package/inherit libxml2 (name "python-libxml2") + (source (origin + (inherit (package-source libxml2)) + (patches (cons (search-patch "python-libxml2-utf8.patch") + (origin-patches (package-source libxml2)))))) (build-system python-build-system) (outputs '("out")) (arguments @@ -211,40 +198,41 @@ project (but it is usable outside of the Gnome platform).") (inputs `(("libxml2" ,libxml2))) (synopsis "Python bindings for the libxml2 library"))) -(define-public python-libxml2/fixed - ;; This variant fixes a crash when processing UTF-8 sequences: - ;; <https://bugs.gnu.org/37468> - ;; TODO: Merge with 'python-libxml2' on the next rebuild cycle. - (package/inherit - python-libxml2 - (version (string-append (package-version python-libxml2) "-1")) - (source (origin - (inherit (package-source libxml2)) - (patches (cons (search-patch "python-libxml2-utf8.patch") - (origin-patches (package-source libxml2)))))))) - (define-public python2-libxml2 (package-with-python2 python-libxml2)) (define-public libxslt (package (name "libxslt") - (version "1.1.33") + (version "1.1.34") (source (origin (method url-fetch) (uri (string-append "ftp://xmlsoft.org/libxslt/libxslt-" version ".tar.gz")) (sha256 (base32 - "1j1q1swnsy8jgi9x7mclvkrqhfgn09886gdlr9wzk7a08i8n0dlf")) + "0zrzz6kjdyavspzik6fbkpvfpbd25r2qg6py5nnjaabrsr3bvccq")) (patches (search-patches "libxslt-generated-ids.patch")))) (build-system gnu-build-system) + (arguments + `(#:phases (modify-phases %standard-phases + (add-before 'check 'disable-fuzz-tests + (lambda _ + ;; Disable libFuzzer tests, because they require + ;; instrumentation builds of libxml2 and libxslt. + (substitute* "tests/Makefile" + (("exslt plugins fuzz") + "exslt plugins")) + #t))))) (home-page "http://xmlsoft.org/XSLT/index.html") (synopsis "C library for applying XSLT stylesheets to XML documents") (inputs `(("libgcrypt" ,libgcrypt) ("libxml2" ,libxml2) ("python" ,python-minimal-wrapper) - ("zlib" ,zlib))) + ("zlib" ,zlib) + ("xz" ,xz))) + (native-inputs + `(("pkg-config" ,pkg-config))) (description "Libxslt is an XSLT C library developed for the GNOME project. It is based on libxml for XML parsing, tree manipulation and XPath support.") @@ -355,7 +343,7 @@ parsers for it. @code{XML::Descent} allows such parsers to be created.") (define-public perl-xml-parser (package (name "perl-xml-parser") - (version "2.44") + (version "2.46") (source (origin (method url-fetch) (uri (string-append @@ -363,7 +351,7 @@ parsers for it. @code{XML::Descent} allows such parsers to be created.") version ".tar.gz")) (sha256 (base32 - "05ij0g6bfn27iaggxf8nl5rhlwx6f6p6xmdav6rjcly3x5zd1s8s")))) + "0pai3ik47q7rgnix9644c673fwydz52gqkxr9kxwq765j4j36cfk")))) (build-system perl-build-system) (arguments `(#:make-maker-flags (let ((expat (assoc-ref %build-inputs "expat"))) @@ -955,6 +943,8 @@ code for classes that correspond to data structures defined by XMLSchema.") (assoc-ref %build-inputs "util-linux") "/bin/getopt")))) + (native-inputs + `(("util-linux" ,util-linux))) (inputs `(("util-linux" ,util-linux) ; for 'getopt' ("libxml2" ,libxml2) ; for 'xmllint' @@ -970,14 +960,14 @@ XSL-T processor. It also performs any necessary post-processing.") (define-public xmlsec (package (name "xmlsec") - (version "1.2.29") + (version "1.2.30") (source (origin (method url-fetch) (uri (string-append "https://www.aleksey.com/xmlsec/download/" "xmlsec1-" version ".tar.gz")) (sha256 (base32 - "1arr50fvma01q2ix7g4k2c7lb8qcqjajn7wdc07r66b0jsxdxldi")))) + "1j5bf7ni45jghyrbf7a14wx2pvfara557zyry7g7h8840c5kd11d")))) (build-system gnu-build-system) (propagated-inputs ; according to xmlsec1.pc `(("libxml2" ,libxml2) @@ -2109,7 +2099,7 @@ libxml2 and libxslt.") (define-public python-xmlschema (package (name "python-xmlschema") - (version "1.1.1") + (version "1.1.2") (source (origin ;; Unit tests are not distributed with the PyPI archive. (method git-fetch) @@ -2119,7 +2109,7 @@ libxml2 and libxslt.") (file-name (git-file-name name version)) (sha256 (base32 - "0nqhqbvp0kpd1bz11b6gpkc0mkg068mqs56ww4k5ang1cl9d8gd6")))) + "03bz5mp45y4shmlc1gxq1h69vjx60z1acg9cy4kq7fczgx8qg9jw")))) (build-system python-build-system) (arguments '(#:phases diff --git a/gnu/packages/xorg.scm b/gnu/packages/xorg.scm index 95479f18da..25f2793fa1 100644 --- a/gnu/packages/xorg.scm +++ b/gnu/packages/xorg.scm @@ -7,7 +7,7 @@ ;;; Copyright © 2016 Mathieu Lirzin <mthl@gnu.org> ;;; Copyright © 2015 Cyrill Schenkel <cyrill.schenkel@gmail.com> ;;; Copyright © 2016, 2017, 2019 Efraim Flashner <efraim@flashner.co.il> -;;; Copyright © 2016 ng0 <ng0@n0.is> +;;; Copyright © 2016 Nikita <nikita@n0.is> ;;; Copyright © 2016 Alex Kost <alezost@gmail.com> ;;; Copyright © 2016 David Craven <david@craven.ch> ;;; Copyright © 2016, 2017 John Darrington <jmd@gnu.org> @@ -20,9 +20,12 @@ ;;; Copyright © 2018 Benjamin Slade <slade@jnanam.net> ;;; Copyright © 2019 nee <nee@cock.li> ;;; Copyright © 2019 Yoshinori Arai <kumagusu08@gmail.com> +;;; Copyright © 2019 Mathieu Othacehe <m.othacehe@gmail.com> ;;; Copyright © 2020 Leo Prikler <leo.prikler@student.tugraz.at> ;;; Copyright © 2020 Florian Pelz <pelzflorian@pelzflorian.de> +;;; Copyright © 2020 Michael Rohleder <mike@rohleder.de> ;;; Copyright © 2020 Maxim Cournoyer <maxim.cournoyer@gmail.com> +;;; Copyright © 2020 Jean-Baptiste Note <jean-baptiste.note@m4x.org> ;;; ;;; This file is part of GNU Guix. ;;; @@ -216,14 +219,14 @@ which can be read by any architecture.") (define-public xorgproto (package (name "xorgproto") - (version "2019.1") + (version "2019.2") (source (origin (method url-fetch) (uri (string-append "mirror://xorg/individual/proto/" "xorgproto-" version ".tar.bz2")) (sha256 (base32 - "16yll1kaffnslik5sizlw3qrigj1gpsgfgyq6903g3mwdixamnm6")))) + "13kvir8dz9dvzhvyfndpff1z7k8h14s7kkl7mbl427andhax1v26")))) (build-system gnu-build-system) (propagated-inputs ;; To get util-macros in (almost?) all package inputs. @@ -1044,6 +1047,8 @@ of new capabilities and controls for text keyboards.") (base32 "0hvjfhrcym770cr0zpqajdy3cda30aiwbjzv16iafkqkbl090gr5")))) (build-system gnu-build-system) + (arguments + '(#:configure-flags '("--disable-static"))) (inputs `(("xorgproto" ,xorgproto) ("libxext" ,libxext) @@ -1070,6 +1075,8 @@ of new capabilities and controls for text keyboards.") (base32 "1ir0j92mnd1nk37mrv9bz5swnccqldicgszvfsh62jd14q6k115q")))) (build-system gnu-build-system) + (arguments + '(#:configure-flags '("--disable-static"))) (native-inputs `(("pkg-config" ,pkg-config))) (inputs `(("xorgproto" ,xorgproto))) (home-page "https://www.x.org/") @@ -1097,6 +1104,8 @@ synchronization between the X server and direct-rendering clients.") (base32 "0y90170dp8wsidr1dzza0grxr1lfh30ji3b5vkjz4j6x1n0wxz1c")))) (build-system gnu-build-system) + (arguments + '(#:configure-flags '("--disable-static"))) (inputs `(("zlib" ,zlib) ("xorgproto" ,xorgproto))) @@ -1224,11 +1233,13 @@ hit when running single-threaded.") (base32 "1fwwfq9v3sqmpzpscymswxn76xhxnysa24pfim1mcpxhvjcl89id")))) (build-system gnu-build-system) + (arguments + '(#:configure-flags '("--disable-static"))) (propagated-inputs `(("libice" ,libice))) ; SMlib.h includes ICElib.h (inputs `(("xtrans" ,xtrans) - ("util-linux" ,util-linux))) + ("libuuid" ,util-linux "lib"))) (native-inputs `(("pkg-config" ,pkg-config))) (home-page "https://www.x.org/wiki/") @@ -1283,6 +1294,8 @@ with the Cygwin XWin server when running X11 in a rootless mode.") (base32 "13sfcglvz87vl58hd9rszwr73z0z4nwga3c12rfh7f5s2ln8l8dk")))) (build-system gnu-build-system) + (arguments + '(#:configure-flags '("--disable-static"))) (propagated-inputs ;; xcomposite.pc refers to all these. `(("xorgproto" ,xorgproto) @@ -1312,6 +1325,8 @@ with the Cygwin XWin server when running X11 in a rootless mode.") (base32 "0ab53h0rkq721ihk5hi469x500f3pgbkm1wy01yf24x5m923nli0")))) (build-system gnu-build-system) + (arguments + '(#:configure-flags '("--disable-static"))) (inputs `(("libbsd" ,libbsd) ("xorgproto" ,xorgproto))) @@ -1338,6 +1353,8 @@ with the Cygwin XWin server when running X11 in a rootless mode.") (base32 "05lja9s54090xwh31r0bqms4v3pimng5xr09g2rdnafx2vk6hp12")))) (build-system gnu-build-system) + (arguments + '(#:configure-flags '("--disable-static"))) (propagated-inputs ;; xft.pc refers to all these. `(("libxrender" ,libxrender) @@ -1372,6 +1389,8 @@ configuration files.") (base32 "1irq9crvscd3yb8sr802dhvvfr35jdy1n2yz094xplmd42mbv3bm")))) (build-system gnu-build-system) + (arguments + '(#:configure-flags '("--disable-static"))) (inputs `(("libx11" ,libx11))) (native-inputs @@ -1397,6 +1416,8 @@ configuration files.") (base32 "0cdpqnx6258i4l6qhphvkdiyspysg0i5caqjy820kp63wwjk4d4w")))) (build-system gnu-build-system) + (arguments + '(#:configure-flags '("--disable-static"))) (inputs `(("libxt" ,libxt) ("xorgproto" ,xorgproto) @@ -1417,7 +1438,7 @@ treat it as part of their software base when porting.") (define-public libxpm (package (name "libxpm") - (version "3.5.12") + (version "3.5.13") (source (origin (method url-fetch) @@ -1427,15 +1448,17 @@ treat it as part of their software base when porting.") ".tar.bz2")) (sha256 (base32 - "1v5xaiw4zlhxspvx76y3hq4wpxv7mpj6parqnwdqvpj8vbinsspx")))) + "09dc6nwlb2122h02vl64k9x56mxnyqz2gwpga0abfv4bb1bxmlcw")))) (build-system gnu-build-system) + (arguments + '(#:configure-flags '("--disable-static"))) (inputs - `(("gettext" ,gettext-minimal) - ("libxt" ,libxt) + `(("libxt" ,libxt) ("xorgproto" ,xorgproto) ("libxext" ,libxext))) (native-inputs - `(("pkg-config" ,pkg-config))) + `(("gettext" ,gettext-minimal) + ("pkg-config" ,pkg-config))) (home-page "https://www.x.org/wiki/") (synopsis "Xorg XPM library") (description "XPM (X Pixmap) image file format library.") @@ -1457,6 +1480,8 @@ treat it as part of their software base when porting.") (base32 "1m0jr0lbz9ixpp9ihk68349q0i7ry2379lnfzdy4mrl86ijc2xgz")))) (build-system gnu-build-system) + (arguments + '(#:configure-flags '("--disable-static"))) (inputs `(("xorgproto" ,xorgproto) ("libxext" ,libxext) @@ -1484,6 +1509,8 @@ treat it as part of their software base when porting.") (base32 "1y4vx1vabg7j9hamp0vrfrax5b0lmgm3h0lbgbb3hnkv3dd0f5zr")))) (build-system gnu-build-system) + (arguments + '(#:configure-flags '("--disable-static"))) (inputs `(("libxext" ,libxext) ("libx11" ,libx11))) @@ -1509,6 +1536,8 @@ treat it as part of their software base when porting.") (sha256 (base32 "00vjvcdlc1sga251jkxn6gkxmx9h5n290ffxxpa40qbca1gvr61b")))) (build-system gnu-build-system) + (arguments + '(#:configure-flags '("--disable-static"))) (propagated-inputs `(("xorgproto" ,xorgproto))) (inputs @@ -2106,17 +2135,16 @@ emulate a TI-30 or an HP-10C.") (define-public xcb-proto (package (name "xcb-proto") - (version "1.13") + (version "1.14") (source (origin (method url-fetch) (uri (string-append "https://xcb.freedesktop.org/dist/xcb-proto-" - version - ".tar.bz2")) + version ".tar.xz")) (sha256 (base32 - "1qdxw9syhbvswiqj5dvj278lrmfhs81apzmvx6205s4vcqg7563v")))) + "01d62r286yfc3rpz714nqdgkl0wk9j0wqkd4ylas1d7r4vmkqshq")))) (build-system gnu-build-system) (native-inputs `(("pkg-config" ,pkg-config) ("python" ,python-minimal-wrapper))) @@ -3017,13 +3045,7 @@ X server.") (string-prefix? "x86_64-" system))) %supported-systems)) (arguments - '(#:configure-flags '("--with-default-accel=uxa") - #:phases (modify-phases %standard-phases - (add-before 'bootstrap 'pre-bootstrap - (lambda _ - ;; Inhibit autogen.sh from running configure. - (setenv "NOCONFIGURE" "1") - #t))))) + '(#:configure-flags '("--with-default-accel=uxa"))) (home-page "https://www.x.org/wiki/") (synopsis "Intel video driver for X server") (description @@ -3887,7 +3909,7 @@ alternative implementations like XRandR or TwinView.") (define xkbcomp-intermediate ; used as input for xkeyboard-config (package (name "xkbcomp-intermediate") - (version "1.4.2") + (version "1.4.3") (source (origin (method url-fetch) @@ -3897,7 +3919,7 @@ alternative implementations like XRandR or TwinView.") ".tar.bz2")) (sha256 (base32 - "0944rrkkf0dxp07vhh9yr4prslxhqyw63qmbjirbv1bypswvrn3d")))) + "0dflr250nlj6rrnv658f6dm8qx37sj0xfimc3ihay761kwb2q906")))) (build-system gnu-build-system) (inputs `(("xorgproto" ,xorgproto) @@ -4716,6 +4738,13 @@ cannot be adequately worked around on the client side of the wire.") (base32 "0azqxllcsfxc3ilhz6kwc6x7m8wc477p59ir9p0yrsldx766zbar")))) (build-system gnu-build-system) + (arguments + `(#:configure-flags + (list "--disable-static" + ;; Disable zero malloc check that fails when cross-compiling. + ,@(if (%current-target-system) + '("--disable-malloc0returnsnull") + '())))) (propagated-inputs `(("xorgproto" ,xorgproto))) (inputs @@ -4745,6 +4774,8 @@ cannot be adequately worked around on the client side of the wire.") (base32 "086p0axqj57nvkaqa6r00dnr9kyrn1m8blgf0zjy25zpxkbxn200")))) (build-system gnu-build-system) + (arguments + '(#:configure-flags '("--disable-static"))) (propagated-inputs `(("xorgproto" ,xorgproto))) (inputs @@ -4801,6 +4832,13 @@ cannot be adequately worked around on the client side of the wire.") (base32 "0j89cnb06g8x79wmmnwzykgkkfdhin9j7hjpvsxwlr3fz1wmjvf0")))) (build-system gnu-build-system) + (arguments + `(#:configure-flags + (list "--disable-static" + ;; Disable zero malloc check that fails when cross-compiling. + ,@(if (%current-target-system) + '("--disable-malloc0returnsnull") + '())))) (propagated-inputs `(("xorgproto" ,xorgproto))) (inputs @@ -4827,6 +4865,8 @@ cannot be adequately worked around on the client side of the wire.") (base32 "012jpyj7xfm653a9jcfqbzxyywdmwb2b5wr1dwylx14f3f54jma6")))) (build-system gnu-build-system) + (arguments + '(#:configure-flags '("--disable-static"))) (propagated-inputs `(("libxi" ,libxi) ("xorgproto" ,xorgproto))) @@ -4864,6 +4904,8 @@ protocol and arbitrary X extension protocol.") (base32 "125hn06bd3d8y97hm2pbf5j55gg4r2hpd3ifad651i4sr7m16v6j")))) (build-system gnu-build-system) + (arguments + '(#:configure-flags '("--disable-static"))) (propagated-inputs `(("xorgproto" ,xorgproto))) (inputs @@ -4892,8 +4934,21 @@ protocol and arbitrary X extension protocol.") "0c3563kw9fg15dpgx4dwvl12qz6sdqdns1pxa574hc7i5m42mman")))) (build-system gnu-build-system) (arguments - '(#:phases + `(#:phases (modify-phases %standard-phases + (add-after 'unpack 'fix-configure + (lambda* (#:key inputs native-inputs #:allow-other-keys) + ;; Replace outdated config.sub and config.guess: + (for-each (lambda (file) + (install-file (string-append + (assoc-ref + (or native-inputs inputs) "automake") + "/share/automake-" + ,(version-major+minor + (package-version automake)) + "/" file) ".")) + '("config.sub" "config.guess")) + #t)) (add-after 'install 'wrap-mkfontdir (lambda* (#:key inputs outputs #:allow-other-keys) (wrap-program (string-append (assoc-ref outputs "out") @@ -4905,7 +4960,8 @@ protocol and arbitrary X extension protocol.") (inputs `(("mkfontscale" ,mkfontscale))) (native-inputs - `(("pkg-config" ,pkg-config))) + `(("pkg-config" ,pkg-config) + ("automake" ,automake))) ;For up to date 'config.guess' and 'config.sub'. (home-page "https://www.x.org/wiki/") (synopsis "Create an index of X font files in a directory") (description @@ -4962,6 +5018,8 @@ common definitions and porting layer.") (base32 "0j638yvmyna2k4mz465jywgdybgdchdqppfx6xfazg7l5khxr1kg")))) (build-system gnu-build-system) + (arguments + '(#:configure-flags '("--disable-static"))) (propagated-inputs `(("xorgproto" ,xorgproto))) (inputs @@ -4990,6 +5048,8 @@ common definitions and porting layer.") (base32 "1v3krc6x0zliaa66qq1bf9j60x5nqfy68v8axaiglxpnvgqcpy6c")))) (build-system gnu-build-system) + (arguments + '(#:configure-flags '("--disable-static"))) (propagated-inputs `(("xorgproto" ,xorgproto))) (native-inputs @@ -5016,6 +5076,8 @@ an X Window System display.") (base32 "1miana3y4hwdqdparsccmygqr3ic3hs5jrqfzp70hvi2zwxd676y")))) (build-system gnu-build-system) + (arguments + '(#:configure-flags '("--disable-static"))) (propagated-inputs `(("xorgproto" ,xorgproto))) (inputs @@ -5042,6 +5104,8 @@ an X Window System display.") (base32 "0hiji1bvpl78aj3a3141hkk353aich71wv8l5l2z51scfy878zqs")))) (build-system gnu-build-system) + (arguments + '(#:configure-flags '("--disable-static"))) (propagated-inputs `(("freetype" ,freetype) ("libfontenc" ,libfontenc) @@ -5089,6 +5153,8 @@ new API's in libXft, or the legacy API's in libX11.") (base32 "0q8hz3slga3w3ch8wp0k7ay9ilhz315qnab0w1y2x9w3cf7hv8rn")))) (build-system gnu-build-system) + (arguments + '(#:configure-flags '("--disable-static"))) (propagated-inputs `(("xorgproto" ,xorgproto) ("libx11" ,libx11) @@ -5116,6 +5182,8 @@ new API's in libXft, or the legacy API's in libX11.") (base32 "08z0mqywrm7ij8bxlfrx0d2wy6kladdmkva1nw5k6qix82z0xsla")))) (build-system gnu-build-system) + (arguments + '(#:configure-flags '("--disable-static"))) (propagated-inputs ;; In accordance with xrandr.pc. `(("libx11" ,libx11) @@ -5145,6 +5213,8 @@ new API's in libXft, or the legacy API's in libX11.") (base32 "1kbdjsvkm5l7axv7g477qj18sab2wnqhliy6197syzizgfbsfgbb")))) (build-system gnu-build-system) + (arguments + '(#:configure-flags '("--disable-static"))) (propagated-inputs `(("libxv" ,libxv))) (inputs @@ -5173,6 +5243,8 @@ new API's in libXft, or the legacy API's in libX11.") (base32 "0mydhlyn72i7brjwypsqrpkls3nm6vxw0li8b2nw0caz7kwjgvmg")))) (build-system gnu-build-system) + (arguments + '(#:configure-flags '("--disable-static"))) (propagated-inputs `(("libxext" ,libxext) ("xorgproto" ,xorgproto))) @@ -5193,15 +5265,15 @@ protocol.") (define-public libxcb (package (name "libxcb") - (version "1.13") + (version "1.14") (source (origin (method url-fetch) (uri (string-append "https://xcb.freedesktop.org/dist/" - "libxcb-" version ".tar.bz2")) + "libxcb-" version ".tar.xz")) (sha256 (base32 - "1ahxhmdqp4bhb90zmc275rmf5wixqra4bnw9pqnzyl1w3598g30q")))) + "0d2chjgyn5lr9sfhacfvqgnj9l9faz11vn322a06jd6lk3dxcpm5")))) (build-system gnu-build-system) (propagated-inputs `(("libpthread-stubs" ,libpthread-stubs) @@ -5214,7 +5286,8 @@ protocol.") `(("pkg-config" ,pkg-config) ("python" ,python-minimal-wrapper))) (arguments - `(#:configure-flags '("--enable-xkb"))) + `(#:configure-flags '("--enable-xkb" + "--disable-static"))) (home-page "https://xcb.freedesktop.org/") (synopsis "The X C Binding (XCB) library") (description @@ -5368,16 +5441,7 @@ draggable titlebars and borders.") (define-public xorg-server-for-tests (hidden-package (package - (inherit xorg-server) - (version "1.20.5") - (source (origin - (inherit (package-source xorg-server)) - (uri (string-append - "mirror://xorg/individual/xserver/" - "xorg-server-" version ".tar.bz2")) - (sha256 - (base32 - "17dc3g8cc55nbkx3np64dsz04n621dnzjmcc9wys0xbyyd1q47d8"))))))) + (inherit xorg-server)))) (define-public xorg-server-xwayland (package @@ -5403,7 +5467,7 @@ draggable titlebars and borders.") (define-public libx11 (package (name "libx11") - (version "1.6.8") + (version "1.6.9") (source (origin (method url-fetch) @@ -5413,21 +5477,29 @@ draggable titlebars and borders.") ".tar.bz2")) (sha256 (base32 - "1mbkwhhprhf49s2iwx7kiliprsdvd690zk44x3h53ql9q52si2dj")))) + "1ldyn9c6pyx54sxzaw120n3q42rqi7b503aqmyjky6fn038fiiww")))) (build-system gnu-build-system) (outputs '("out" "doc")) ;8 MiB of man pages + XML (arguments - '(#:configure-flags (list (string-append "--mandir=" - (assoc-ref %outputs "doc") - "/share/man")))) + `(#:configure-flags + (list (string-append "--mandir=" + (assoc-ref %outputs "doc") + "/share/man") + "--disable-static" + + ;; Disable zero malloc check that fails when cross-compiling. + ,@(if (%current-target-system) + '("--disable-malloc0returnsnull") + '())))) (propagated-inputs `(("xorgproto" ,xorgproto) ("libxcb" ,libxcb))) (inputs `(("xtrans" ,xtrans))) (native-inputs - `(("pkg-config" ,pkg-config))) + `(("pkg-config" ,pkg-config) + ("xorgproto" ,xorgproto))) (home-page "https://www.x.org/wiki/") (synopsis "Xorg Core X11 protocol client library") (description "Xorg Core X11 protocol client library.") @@ -5450,6 +5522,8 @@ draggable titlebars and borders.") (base32 "10l7c9fm0jmpkm9ab9dz8r6m1pr87vvgqjnbx1psz50h4pwfklrs")))) (build-system gnu-build-system) + (arguments + '(#:configure-flags '("--disable-static"))) (propagated-inputs `(("libx11" ,libx11) ("libxrender" ,libxrender) @@ -5490,9 +5564,15 @@ draggable titlebars and borders.") (outputs '("out" "doc")) ;2 MiB of man pages + XML (arguments - '(#:configure-flags (list (string-append "--mandir=" - (assoc-ref %outputs "doc") - "/share/man")))) + `(#:configure-flags + (list (string-append "--mandir=" + (assoc-ref %outputs "doc") + "/share/man") + "--disable-static" + ;; Disable zero malloc check that fails when cross-compiling. + ,@(if (%current-target-system) + '("--disable-malloc0returnsnull") + '())))) (propagated-inputs `(("libx11" ,libx11) ("libice" ,libice) @@ -5522,6 +5602,8 @@ draggable titlebars and borders.") (base32 "1kdhxplwrn43d9jp3v54llp05kwx210lrsdvqb6944jp29rhdy4f")))) (build-system gnu-build-system) + (arguments + '(#:configure-flags '("--disable-static"))) (propagated-inputs `(("libxext" ,libxext) ("libxmu" ,libxmu) @@ -5581,6 +5663,8 @@ keyboard focus, and user-specified key and pointer button bindings.") (base32 "1sahmrgbpyki4bb72hxym0zvxwnycmswsxiisgqlln9vrdlr9r26")))) (build-system gnu-build-system) + (arguments + '(#:configure-flags '("--disable-static"))) (propagated-inputs `(("libxcb" ,libxcb))) (native-inputs @@ -5617,6 +5701,8 @@ The XCB util module provides the following libraries: (base32 "0krr4rcw6r42cncinzvzzdqnmxk3nrgpnadyg2h8k9x10q3hm885")))) (build-system gnu-build-system) + (arguments + '(#:configure-flags '("--disable-static"))) (native-inputs `(("m4" ,m4) ("pkg-config" ,pkg-config))) @@ -5699,6 +5785,8 @@ numbers.") (base32 "1z1gxacg7q4cw6jrd26gvi5y04npsyavblcdad1xccc8swvnmf9d")))) (build-system gnu-build-system) + (arguments + '(#:configure-flags '("--disable-static"))) (propagated-inputs `(("libxcb" ,libxcb))) (inputs @@ -5733,6 +5821,8 @@ The XCB util-image module provides the following library: (base32 "1nbd45pzc1wm6v5drr5338j4nicbgxa5hcakvsvm5pnyy47lky0f")))) (build-system gnu-build-system) + (arguments + '(#:configure-flags '("--disable-static"))) (propagated-inputs `(("libxcb" ,libxcb))) (native-inputs @@ -5765,6 +5855,8 @@ The XCB util-keysyms module provides the following library: (base32 "0nza1csdvvxbmk8vgv8vpmq7q8h05xrw3cfx9lwxd1hjzd47xsf6")))) (build-system gnu-build-system) + (arguments + '(#:configure-flags '("--disable-static"))) (propagated-inputs `(("libxcb" ,libxcb))) (native-inputs @@ -5797,6 +5889,8 @@ The XCB util-renderutil module provides the following library: (base32 "0gra7hfyxajic4mjd63cpqvd20si53j1q3rbdlkqkahfciwq3gr8")))) (build-system gnu-build-system) + (arguments + '(#:configure-flags '("--disable-static"))) (propagated-inputs `(("libxcb" ,libxcb))) (native-inputs @@ -6144,12 +6238,6 @@ Conventions Manual) and some of the @dfn{EWMH} (base32 "11i7vyk3pynw8q8aczpy56qncm84y0cmhlvyja3sj8dgy60g03q2")) (file-name (git-file-name name version)))) (build-system gnu-build-system) - (arguments - `(#:phases (modify-phases %standard-phases - (add-after 'unpack 'autogen - (lambda _ - (setenv "NOCONFIGURE" "t") - (invoke "sh" "autogen.sh")))))) (native-inputs `(("pkg-config" ,pkg-config) ("autoconf" ,autoconf) @@ -6185,7 +6273,7 @@ basic eye-candy effects.") (inputs `(("ffmpeg" ,ffmpeg) ("flac" ,flac) ("gtk+-2" ,gtk+-2) ;; no full GTK3 support yet - ("libjpeg" ,libjpeg) + ("libjpeg" ,libjpeg-turbo) ("libpng" ,libpng) ("libvpx" ,libvpx) ("libx264" ,libx264) @@ -6557,25 +6645,28 @@ output.") " "))) #t)) (add-before 'build 'make-doubled-bdfs - (lambda* (#:key inputs #:allow-other-keys) + (lambda* (#:key native-inputs inputs #:allow-other-keys) (invoke "make" "-C" "Fonts" "doubled_bdfs" (string-append "SHELL=" - (assoc-ref inputs "bash") + (assoc-ref (or native-inputs inputs) + "bash") "/bin/bash")))) (replace 'install - (lambda* (#:key inputs outputs #:allow-other-keys) + (lambda* (#:key native-inputs inputs outputs #:allow-other-keys) (let ((out (assoc-ref %outputs "out"))) (invoke "make" "install-linux" (string-append "prefix=" out) (string-append "SHELL=" - (assoc-ref inputs "bash") + (assoc-ref (or native-inputs inputs) + "bash") "/bin/bash")))))))) (native-inputs `(("pkg-config" ,pkg-config) ("bdftopcf" ,bdftopcf) ("bdfresize" ,bdfresize) - ("sharutils" ,sharutils))) ;for 'uuencode' + ("sharutils" ,sharutils) ;for 'uuencode' + ("perl" ,perl))) (inputs `(("perl" ,perl))) ;used by 'ckbcomp' (synopsis "Set up the Linux console font and keyboard") @@ -6624,3 +6715,24 @@ Thai).") a configuration file reusable by xcursorgen.") (home-page "https://github.com/eworm-de/xcur2png") (license license:gpl3+))) + +(define-public gccmakedep + (package + (name "gccmakedep") + (version "1.0.3") + (source + (origin + (method url-fetch) + (uri (string-append "mirror://xorg/individual/util/gccmakedep-" + version ".tar.bz2")) + (sha256 + (base32 "1r1fpy5ni8chbgx7j5sz0008fpb6vbazpy1nifgdhgijyzqxqxdj")))) + (build-system gnu-build-system) + (synopsis "Create dependencies in makefiles using 'gcc -M'") + (description + "@command{gccmakedep} is a deprecated program which calls @code{gcc -M} +to output Makefile rules describing the dependencies of each source file, so +that Make knows which object files must be recompiled when a dependency has +changed.") + (home-page "https://gitlab.freedesktop.org/xorg/util/gccmakedep") + (license license:x11))) diff --git a/gnu/services/admin.scm b/gnu/services/admin.scm index df3cb01646..89fa73920d 100644 --- a/gnu/services/admin.scm +++ b/gnu/services/admin.scm @@ -1,6 +1,7 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2016 Jan Nieuwenhuizen <janneke@gnu.org> ;;; Copyright © 2016, 2017, 2018, 2019 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2020 Brice Waegeneire <brice@waegenei.re> ;;; ;;; This file is part of GNU Guix. ;;; @@ -71,8 +72,11 @@ (list (log-rotation ;syslog files (files %rotated-files) + (options '(;; Run post-rotate once per rotation + "sharedscripts" + ;; Append .gz to rotated files + "storefile @FILENAME.@COMP_EXT")) ;; Restart syslogd after rotation. - (options '("sharedscripts")) (post-rotate #~(let ((pid (call-with-input-file "/var/run/syslog.pid" read))) (kill pid SIGHUP)))) diff --git a/gnu/services/audio.scm b/gnu/services/audio.scm index 345d8225b2..37f2efa479 100644 --- a/gnu/services/audio.scm +++ b/gnu/services/audio.scm @@ -24,6 +24,7 @@ #:use-module (gnu packages mpd) #:use-module (guix records) #:use-module (ice-9 match) + #:use-module (ice-9 format) #:export (mpd-output mpd-output? mpd-configuration diff --git a/gnu/services/base.scm b/gnu/services/base.scm index 2913478e4a..6ea7ef8e7e 100644 --- a/gnu/services/base.scm +++ b/gnu/services/base.scm @@ -47,7 +47,7 @@ #:select (alsa-utils crda eudev e2fsprogs fuse gpm kbd lvm2 rng-tools)) #:use-module (gnu packages bash) #:use-module ((gnu packages base) - #:select (canonical-package coreutils glibc glibc-utf8-locales)) + #:select (coreutils glibc glibc-utf8-locales)) #:use-module (gnu packages package-management) #:use-module ((gnu packages gnupg) #:select (guile-gcrypt)) #:use-module (gnu packages linux) @@ -1093,7 +1093,7 @@ the tty to run, among other things." (name-services nscd-configuration-name-services ;list of <packages> (default '())) (glibc nscd-configuration-glibc ;<package> - (default (canonical-package glibc)))) + (default glibc))) (define-record-type* <nscd-cache> nscd-cache make-nscd-cache nscd-cache? @@ -1383,7 +1383,7 @@ information on the configuration file syntax." (module "pam_limits.so") (arguments '("conf=/etc/security/limits.conf"))))) (if (member (pam-service-name pam) - '("login" "su" "slim" "gdm-password")) + '("login" "su" "slim" "gdm-password" "sddm")) (pam-service (inherit pam) (session (cons pam-limits @@ -1840,7 +1840,7 @@ archive}). If that is not the case, the service will fail to start." udev-configuration make-udev-configuration udev-configuration? (udev udev-configuration-udev ;<package> - (default eudev/btrfs-fix)) + (default eudev)) (rules udev-configuration-rules ;list of <package> (default '()))) @@ -2038,7 +2038,7 @@ the udev rules in use.") directory dynamically. Get extra rules from the packages listed in the @code{rules} field of its value, @code{udev-configuration} object."))) -(define* (udev-service #:key (udev eudev/btrfs-fix) (rules '())) +(define* (udev-service #:key (udev eudev) (rules '())) "Run @var{udev}, which populates the @file{/dev} directory dynamically. Get extra rules from the packages listed in @var{rules}." (service udev-service-type @@ -2396,9 +2396,7 @@ to handle." (rules (list lvm2 fuse alsa-utils crda)))) (service special-files-service-type - `(("/bin/sh" ,(file-append (canonical-package bash) - "/bin/sh")) - ("/usr/bin/env" ,(file-append (canonical-package coreutils) - "/bin/env")))))) + `(("/bin/sh" ,(file-append bash "/bin/sh")) + ("/usr/bin/env" ,(file-append coreutils "/bin/env")))))) ;;; base.scm ends here diff --git a/gnu/services/certbot.scm b/gnu/services/certbot.scm index 3e005918d6..5643340799 100644 --- a/gnu/services/certbot.scm +++ b/gnu/services/certbot.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2016 ng0 <ng0@n0.is> +;;; Copyright © 2016 Nikita <nikita@n0.is> ;;; Copyright © 2016 Sou Bunnbu <iyzsong@member.fsf.org> ;;; Copyright © 2017, 2018 Clément Lassieur <clement@lassieur.org> ;;; Copyright © 2019 Julien Lepiller <julien@lepiller.eu> diff --git a/gnu/services/dbus.scm b/gnu/services/dbus.scm index 7b3c8100e2..e015d3f68d 100644 --- a/gnu/services/dbus.scm +++ b/gnu/services/dbus.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2013, 2014, 2015, 2016, 2017, 2019 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2013, 2014, 2015, 2016, 2017, 2019, 2020 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2015 Sou Bunnbu <iyzsong@gmail.com> ;;; ;;; This file is part of GNU Guix. @@ -363,7 +363,13 @@ tuples, are all set as environment variables when the bus daemon launches it." (append (polkit-configuration-actions config) actions))))) - (default-value (polkit-configuration)))) + (default-value (polkit-configuration)) + (description + "Run the +@uref{http://www.freedesktop.org/wiki/Software/polkit/, Polkit privilege +management service}, which allows system administrators to grant access to +privileged operations in a structured way. Polkit is a requirement for most +desktop environments, such as GNOME."))) (define* (polkit-service #:key (polkit polkit)) "Return a service that runs the diff --git a/gnu/services/desktop.scm b/gnu/services/desktop.scm index e165d87c5f..93f2ae576c 100644 --- a/gnu/services/desktop.scm +++ b/gnu/services/desktop.scm @@ -4,7 +4,7 @@ ;;; Copyright © 2015 Mark H Weaver <mhw@netris.org> ;;; Copyright © 2016 Sou Bunnbu <iyzsong@gmail.com> ;;; Copyright © 2017 Maxim Cournoyer <maxim.cournoyer@gmail.com> -;;; Copyright © 2017 ng0 <ng0@n0.is> +;;; Copyright © 2017 Nikita <nikita@n0.is> ;;; Copyright © 2018, 2020 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2018 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2017, 2019 Christopher Baines <mail@cbaines.net> diff --git a/gnu/services/dict.scm b/gnu/services/dict.scm index 70b05e8f80..519ed3eca2 100644 --- a/gnu/services/dict.scm +++ b/gnu/services/dict.scm @@ -1,6 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2016 Sou Bunnbu <iyzsong@gmail.com> -;;; Copyright © 2016, 2017, 2018 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2016, 2017, 2018, 2020 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2017 Huang Ying <huang.ying.caritas@gmail.com> ;;; ;;; This file is part of GNU Guix. @@ -174,7 +174,12 @@ database { (const %dicod-activation)) (service-extension shepherd-root-service-type dicod-shepherd-service))) - (default-value (dicod-configuration)))) + (default-value (dicod-configuration)) + (description + "Run @command{dicod}, the dictionary server of +@uref{https://www.gnu.org/software/dico, GNU Dico}. @command{dicod} +implements the standard DICT protocol supported by clients such as +@command{dico} and GNOME Dictionary."))) (define* (dicod-service #:key (config (dicod-configuration))) "Return a service that runs the @command{dicod} daemon, an implementation diff --git a/gnu/services/dns.scm b/gnu/services/dns.scm index a07946d085..9caa3611be 100644 --- a/gnu/services/dns.scm +++ b/gnu/services/dns.scm @@ -1,6 +1,7 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2017 Julien Lepiller <julien@lepiller.eu> ;;; Copyright © 2018 Oleg Pykhalov <go.wigust@gmail.com> +;;; Copyright © 2020 Pierre Langlois <pierre.langlois@gmx.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -638,7 +639,10 @@ (service-extension activation-service-type knot-activation) (service-extension account-service-type - (const %knot-accounts)))))) + (const %knot-accounts)))) + (description + "Run @uref{https://www.knot-dns.cz/, Knot}, an authoritative +name server for the @acronym{DNS, Domain Name System}."))) ;;; @@ -748,6 +752,8 @@ cache.size = 100 * MB (default #f)) ;boolean (servers dnsmasq-configuration-servers (default '())) ;list of string + (addresses dnsmasq-configuration-addresses + (default '())) ;list of string (cache-size dnsmasq-configuration-cache-size (default 150)) ;integer (negative-cache? dnsmasq-configuration-negative-cache? @@ -759,7 +765,7 @@ cache.size = 100 * MB no-hosts? port local-service? listen-addresses resolv-file no-resolv? servers - cache-size negative-cache?) + addresses cache-size negative-cache?) (shepherd-service (provision '(dnsmasq)) (requirement '(networking)) @@ -783,6 +789,8 @@ cache.size = 100 * MB '()) #$@(map (cut format #f "--server=~a" <>) servers) + #$@(map (cut format #f "--address=~a" <>) + addresses) #$(format #f "--cache-size=~a" cache-size) #$@(if negative-cache? '() diff --git a/gnu/services/networking.scm b/gnu/services/networking.scm index 383b2b0d04..d6b0aee357 100644 --- a/gnu/services/networking.scm +++ b/gnu/services/networking.scm @@ -335,7 +335,9 @@ Protocol (DHCP) client, on all the non-loopback network interfaces." (name 'dhcpd) (extensions (list (service-extension shepherd-root-service-type dhcpd-shepherd-service) - (service-extension activation-service-type dhcpd-activation))))) + (service-extension activation-service-type dhcpd-activation))) + (description "Run a DHCP (Dynamic Host Configuration Protocol) daemon. The +daemon is responsible for allocating IP addresses to its client."))) ;;; diff --git a/gnu/services/shepherd.scm b/gnu/services/shepherd.scm index 2f30c6c907..826a3c2215 100644 --- a/gnu/services/shepherd.scm +++ b/gnu/services/shepherd.scm @@ -2,6 +2,7 @@ ;;; Copyright © 2013, 2014, 2015, 2016, 2018, 2019, 2020 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2017 Clément Lassieur <clement@lassieur.org> ;;; Copyright © 2018 Carlo Zancanaro <carlo@zancanaro.id.au> +;;; Copyright © 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org> ;;; ;;; This file is part of GNU Guix. ;;; @@ -25,6 +26,7 @@ #:use-module (guix store) #:use-module (guix records) #:use-module (guix derivations) ;imported-modules, etc. + #:use-module (guix utils) #:use-module (gnu services) #:use-module (gnu services herd) #:use-module (gnu packages admin) @@ -105,7 +107,11 @@ (extensions (list (service-extension boot-service-type shepherd-boot-gexp) (service-extension profile-service-type - (const (list shepherd))))))) + (const (list shepherd))))) + (description + "Run the GNU Shepherd as PID 1---i.e., the operating system's first +process. The Shepherd takes care of managing services such as daemons by +ensuring they are started and stopped in the right order."))) (define %shepherd-root-service ;; The root shepherd service, aka. PID 1. Its parameter is a list of @@ -260,22 +266,27 @@ stored." (define (scm->go file) "Compile FILE, which contains code to be loaded by shepherd's config file, and return the resulting '.go' file." - (with-extensions (list shepherd) - (computed-file (string-append (basename (scheme-file-name file) ".scm") - ".go") - #~(begin - (use-modules (system base compile)) - - ;; Do the same as the Shepherd's 'load-in-user-module'. - (let ((env (make-fresh-user-module))) - (module-use! env (resolve-interface '(oop goops))) - (module-use! env (resolve-interface '(shepherd service))) - (compile-file #$file #:output-file #$output - #:env env))) - - ;; It's faster to build locally than to download. - #:options '(#:local-build? #t - #:substitutable? #f)))) + ;; FIXME: %current-target-system may not be bound <https://bugs.gnu.org/29296> + (let ((target (%current-target-system))) + (with-extensions (list shepherd) + (computed-file (string-append (basename (scheme-file-name file) ".scm") + ".go") + #~(begin + (use-modules (system base compile) + (system base target)) + + ;; Do the same as the Shepherd's 'load-in-user-module'. + (let ((env (make-fresh-user-module))) + (module-use! env (resolve-interface '(oop goops))) + (module-use! env (resolve-interface '(shepherd service))) + (with-target #$(or target #~%host-type) + (lambda _ + (compile-file #$file #:output-file #$output + #:env env))))) + + ;; It's faster to build locally than to download. + #:options '(#:local-build? #t + #:substitutable? #f))))) (define (shepherd-configuration-file services) "Return the shepherd configuration file for SERVICES." diff --git a/gnu/services/sound.scm b/gnu/services/sound.scm index a1c928222a..bdf819b422 100644 --- a/gnu/services/sound.scm +++ b/gnu/services/sound.scm @@ -1,6 +1,7 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2018, 2020 Oleg Pykhalov <go.wigust@gmail.com> ;;; Copyright © 2020 Leo Prikler <leo.prikler@student.tugraz.at> +;;; Copyright © 2020 Marius Bakke <mbakke@fastmail.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -127,11 +128,6 @@ ctl.!default { (default (file-append pulseaudio "/etc/pulse/system.pa")))) -(define (pulseaudio-environment config) - `(;; Define these variables, so that pulseaudio honors /etc. - ("PULSE_CONFIG" . "/etc/pulse/daemon.conf") - ("PULSE_CLIENTCONFIG" . "/etc/pulse/client.conf"))) - (define (pulseaudio-conf-entry arg) (match arg ((key . value) @@ -139,21 +135,22 @@ ctl.!default { ((? string? _) (string-append arg "\n")))) +(define pulseaudio-environment + (match-lambda + (($ <pulseaudio-configuration> client-conf daemon-conf default-script-file) + `(("PULSE_CONFIG" . ,(apply mixed-text-file "daemon.conf" + "default-script-file = " default-script-file "\n" + (map pulseaudio-conf-entry daemon-conf))) + ("PULSE_CLIENTCONFIG" . ,(apply mixed-text-file "client.conf" + (map pulseaudio-conf-entry client-conf))))))) + (define pulseaudio-etc (match-lambda - (($ <pulseaudio-configuration> client-conf daemon-conf - default-script-file system-script-file) + (($ <pulseaudio-configuration> _ _ default-script-file system-script-file) `(("pulse" ,(file-union "pulse" - `(("client.conf" - ,(apply mixed-text-file "client.conf" - (map pulseaudio-conf-entry client-conf))) - ("daemon.conf" - ,(apply mixed-text-file "daemon.conf" - "default-script-file = " default-script-file "\n" - (map pulseaudio-conf-entry daemon-conf))) - ("default.pa" ,default-script-file) + `(("default.pa" ,default-script-file) ("system.pa" ,system-script-file)))))))) (define pulseaudio-service-type diff --git a/gnu/services/ssh.scm b/gnu/services/ssh.scm index d2dbb8f80d..ced21c0742 100644 --- a/gnu/services/ssh.scm +++ b/gnu/services/ssh.scm @@ -4,6 +4,7 @@ ;;; Copyright © 2016 Julien Lepiller <julien@lepiller.eu> ;;; Copyright © 2017 Clément Lassieur <clement@lassieur.org> ;;; Copyright © 2019 Ricardo Wurmus <rekado@elephly.net> +;;; Copyright © 2020 pinoaffe <pinoaffe@airmail.cc> ;;; ;;; This file is part of GNU Guix. ;;; @@ -45,7 +46,11 @@ dropbear-configuration dropbear-configuration? dropbear-service-type - dropbear-service)) + dropbear-service + + autossh-configuration + autossh-configuration? + autossh-service-type)) ;;; Commentary: ;;; @@ -628,4 +633,103 @@ daemon} with the given @var{config}, a @code{<dropbear-configuration>} object." (service dropbear-service-type config)) + +;;; +;;; AutoSSH. +;;; + + +(define-record-type* <autossh-configuration> + autossh-configuration make-autossh-configuration + autossh-configuration? + (user autossh-configuration-user + (default "autossh")) + (poll autossh-configuration-poll + (default 600)) + (first-poll autossh-configuration-first-poll + (default #f)) + (gate-time autossh-configuration-gate-time + (default 30)) + (log-level autossh-configuration-log-level + (default 1)) + (max-start autossh-configuration-max-start + (default #f)) + (message autossh-configuration-message + (default "")) + (port autossh-configuration-port + (default "0")) + (ssh-options autossh-configuration-ssh-options + (default '()))) + +(define (autossh-file-name config file) + "Return a path in /var/run/autossh/ that is writable + by @code{user} from @code{config}." + (string-append "/var/run/autossh/" + (autossh-configuration-user config) + "/" file)) + +(define (autossh-shepherd-service config) + (shepherd-service + (documentation "Automatically set up ssh connections (and keep them alive).") + (provision '(autossh)) + (start #~(make-forkexec-constructor + (list #$(file-append autossh "/bin/autossh") + #$@(autossh-configuration-ssh-options config)) + #:user #$(autossh-configuration-user config) + #:group (passwd:gid (getpw #$(autossh-configuration-user config))) + #:pid-file #$(autossh-file-name config "pid") + #:log-file #$(autossh-file-name config "log") + #:environment-variables + '(#$(string-append "AUTOSSH_PIDFILE=" + (autossh-file-name config "pid")) + #$(string-append "AUTOSSH_LOGFILE=" + (autossh-file-name config "log")) + #$(string-append "AUTOSSH_POLL=" + (number->string + (autossh-configuration-poll config))) + #$(string-append "AUTOSSH_FIRST_POLL=" + (number->string + (or + (autossh-configuration-first-poll config) + (autossh-configuration-poll config)))) + #$(string-append "AUTOSSH_GATETIME=" + (number->string + (autossh-configuration-gate-time config))) + #$(string-append "AUTOSSH_LOGLEVEL=" + (number->string + (autossh-configuration-log-level config))) + #$(string-append "AUTOSSH_MAXSTART=" + (number->string + (or (autossh-configuration-max-start config) + -1))) + #$(string-append "AUTOSSH_MESSAGE=" + (autossh-configuration-message config)) + #$(string-append "AUTOSSH_PORT=" + (autossh-configuration-port config))))) + (stop #~(make-kill-destructor)))) + +(define (autossh-service-activation config) + (with-imported-modules '((guix build utils)) + #~(begin + (use-modules (guix build utils)) + (define %user + (getpw #$(autossh-configuration-user config))) + (let* ((directory #$(autossh-file-name config "")) + (log (string-append directory "/log"))) + (mkdir-p directory) + (chown directory (passwd:uid %user) (passwd:gid %user)) + (call-with-output-file log (const #t)) + (chown log (passwd:uid %user) (passwd:gid %user)))))) + +(define autossh-service-type + (service-type + (name 'autossh) + (description "Automatically set up ssh connections (and keep them alive).") + (extensions + (list (service-extension shepherd-root-service-type + (compose list autossh-shepherd-service)) + (service-extension activation-service-type + autossh-service-activation))) + (default-value (autossh-configuration)))) + ;;; ssh.scm ends here diff --git a/gnu/services/version-control.scm b/gnu/services/version-control.scm index 9d53f9358d..cc07f8025b 100644 --- a/gnu/services/version-control.scm +++ b/gnu/services/version-control.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2016 ng0 <ng0@n0.is> +;;; Copyright © 2016 Nikita <nikita@n0.is> ;;; Copyright © 2016 Sou Bunnbu <iyzsong@member.fsf.org> ;;; Copyright © 2017 Oleg Pykhalov <go.wigust@gmail.com> ;;; Copyright © 2017 Clément Lassieur <clement@lassieur.org> diff --git a/gnu/services/web.scm b/gnu/services/web.scm index dcbe6ee16f..9fcfe8a0dc 100644 --- a/gnu/services/web.scm +++ b/gnu/services/web.scm @@ -1,7 +1,7 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2015 David Thompson <davet@gnu.org> ;;; Copyright © 2015, 2016, 2017, 2018, 2019 Ludovic Courtès <ludo@gnu.org> -;;; Copyright © 2016 ng0 <ng0@n0.is> +;;; Copyright © 2016 Nikita <nikita@n0.is> ;;; Copyright © 2016, 2017, 2018 Julien Lepiller <julien@lepiller.eu> ;;; Copyright © 2017 Christopher Baines <mail@cbaines.net> ;;; Copyright © 2017 nee <nee-git@hidamari.blue> diff --git a/gnu/services/xorg.scm b/gnu/services/xorg.scm index d0196a299e..2505bde97b 100644 --- a/gnu/services/xorg.scm +++ b/gnu/services/xorg.scm @@ -1,6 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2017 Andy Wingo <wingo@igalia.com> -;;; Copyright © 2013, 2014, 2015, 2016, 2017, 2019 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2013, 2014, 2015, 2016, 2017, 2019, 2020 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2015 Sou Bunnbu <iyzsong@gmail.com> ;;; Copyright © 2018, 2019 Timothy Sample <samplet@ngyro.com> ;;; Copyright © 2019 Jan (janneke) Nieuwenhuizen <janneke@gnu.org> @@ -31,7 +31,7 @@ #:use-module (gnu system keyboard) #:use-module (gnu services base) #:use-module (gnu services dbus) - #:use-module ((gnu packages base) #:select (canonical-package)) + #:use-module (gnu packages base) #:use-module (gnu packages guile) #:use-module (gnu packages xorg) #:use-module (gnu packages fonts) @@ -619,7 +619,9 @@ reboot_cmd " shepherd "/sbin/reboot\n" (service-extension profile-service-type (const (list xterm))))) - (default-value (slim-configuration))))) + (default-value (slim-configuration)) + (description + "Run the SLiM graphical login manager for X11.")))) (define-deprecated (slim-service #:key (slim slim) (allow-empty-passwords? #t) auto-login? @@ -691,7 +693,11 @@ theme." (list (service-extension pam-root-service-type screen-locker-pam-services) (service-extension setuid-program-service-type - screen-locker-setuid-programs))))) + screen-locker-setuid-programs))) + (description + "Allow the given program to be used as a screen locker for +the graphical server by making it setuid-root, so it can authenticate users, +and by creating a PAM service for it."))) (define* (screen-locker-service package #:optional diff --git a/gnu/system.scm b/gnu/system.scm index 3c511f4089..cd75e4d4ba 100644 --- a/gnu/system.scm +++ b/gnu/system.scm @@ -7,6 +7,7 @@ ;;; Copyright © 2019 Meiyo Peng <meiyo.peng@gmail.com> ;;; Copyright © 2020 Danny Milosavljevic <dannym@scratchpost.org> ;;; Copyright © 2020 Brice Waegeneire <brice@waegenei.re> +;;; Copyright © 2020 Florian Pelz <pelzflorian@pelzflorian.de> ;;; ;;; This file is part of GNU Guix. ;;; @@ -119,6 +120,7 @@ operating-system-etc-directory operating-system-locale-directory operating-system-boot-script + operating-system-uuid system-linux-image-file-name operating-system-with-gc-roots @@ -148,7 +150,8 @@ %base-packages-linux %base-packages-networking %base-packages-utils - %base-firmware)) + %base-firmware + %default-kernel-arguments)) ;;; Commentary: ;;; @@ -179,7 +182,7 @@ (kernel-loadable-modules operating-system-kernel-loadable-modules (default '())) ; list of packages (kernel-arguments operating-system-user-kernel-arguments - (default '("quiet"))) ; list of gexps/strings + (default %default-kernel-arguments)) ; list of gexps/strings (bootloader operating-system-bootloader) ; <bootloader-configuration> (label operating-system-label ; string (thunked) @@ -488,6 +491,17 @@ possible (that is if there's a LINUX keyword argument in the build system)." ((#:linux kernel #f) target-kernel))))) +(define %default-modprobe-blacklist + ;; List of kernel modules to blacklist by default. + '("usbmouse" ;races with bcm5974, see <https://bugs.gnu.org/35574> + "usbkbd")) ;races with usbhid, see <https://issues.guix.gnu.org/35574#18> + +(define %default-kernel-arguments + ;; Default arguments passed to the kernel. + (list (string-append "modprobe.blacklist=" + (string-join %default-modprobe-blacklist ",")) + "quiet")) + (define* (operating-system-directory-base-entries os) "Return the basic entries of the 'system' directory of OS for use as the value of the SYSTEM-SERVICE-TYPE service." @@ -600,17 +614,12 @@ of PROVENANCE-SERVICE-TYPE to its services." (cons* procps psmisc which (@ (gnu packages admin) shadow) ;for 'passwd' - ;; XXX: We don't use (canonical-package guile-2.2) here because that - ;; would create a collision in the global profile between the GMP - ;; variant propagated by 'guile-final' and the GMP variant propagated - ;; by 'gnutls', itself propagated by 'guix'. - guile-2.2 + guile-3.0 ;; The packages below are also in %FINAL-INPUTS, so take them from ;; there to avoid duplication. - (map canonical-package - (list bash coreutils findutils grep sed - diffutils patch gawk tar gzip bzip2 xz lzip)))) + (list bash coreutils findutils grep sed + diffutils patch gawk tar gzip bzip2 xz lzip))) (define %base-packages-linux ;; Default set of linux specific packages. @@ -976,6 +985,55 @@ we're running in the final root." #:mapped-devices mapped-devices #:keyboard-layout (operating-system-keyboard-layout os))) +(define* (operating-system-uuid os #:optional (type 'dce)) + "Compute UUID object with a deterministic \"UUID\" for OS, of the given +TYPE (one of 'iso9660 or 'dce). Return a UUID object." + ;; Note: For this to be deterministic, we must not hash things that contains + ;; (directly or indirectly) procedures, for example. That rules out + ;; anything that contains gexps, thunk or delayed record fields, etc. + + (define service-name + (compose service-type-name service-kind)) + + (define (file-system-digest fs) + ;; Return a hashable digest that does not contain 'dependencies' since + ;; this field can contain procedures. + (let ((device (file-system-device fs))) + (list (file-system-mount-point fs) + (file-system-type fs) + (file-system-device->string device) + (file-system-options fs)))) + + (if (eq? type 'iso9660) + (let ((pad (compose (cut string-pad <> 2 #\0) + number->string)) + (h (hash (map service-name (operating-system-services os)) + 3600))) + (bytevector->uuid + (string->iso9660-uuid + (string-append "1970-01-01-" + (pad (hash (operating-system-host-name os) 24)) "-" + (pad (quotient h 60)) "-" + (pad (modulo h 60)) "-" + (pad (hash (map file-system-digest + (operating-system-file-systems os)) + 100)))) + 'iso9660)) + (bytevector->uuid + (uint-list->bytevector + (list (hash (map file-system-digest + (operating-system-file-systems os)) + (- (expt 2 32) 1)) + (hash (operating-system-host-name os) + (- (expt 2 32) 1)) + (hash (map service-name (operating-system-services os)) + (- (expt 2 32) 1)) + (hash (map file-system-digest (operating-system-file-systems os)) + (- (expt 2 32) 1))) + (endianness little) + 4) + type))) + (define (locale-name->definition* name) "Variant of 'locale-name->definition' that raises an error upon failure." (match (locale-name->definition name) diff --git a/gnu/system/hurd.scm b/gnu/system/hurd.scm new file mode 100644 index 0000000000..58bfdf88f6 --- /dev/null +++ b/gnu/system/hurd.scm @@ -0,0 +1,225 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2020 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org> +;;; +;;; This file is part of GNU Guix. +;;; +;;; GNU Guix is free software; you can redistribute it and/or modify it +;;; under the terms of the GNU General Public License as published by +;;; the Free Software Foundation; either version 3 of the License, or (at +;;; your option) any later version. +;;; +;;; GNU Guix is distributed in the hope that it will be useful, but +;;; WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;;; GNU General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>. + +(define-module (gnu system hurd) + #:use-module (guix gexp) + #:use-module (guix profiles) + #:use-module (guix utils) + #:use-module (gnu bootloader grub) + #:use-module (gnu packages admin) + #:use-module (gnu packages base) + #:use-module (gnu packages bash) + #:use-module (gnu packages cross-base) + #:use-module (gnu packages file) + #:use-module (gnu packages guile) + #:use-module (gnu packages guile-xyz) + #:use-module (gnu packages hurd) + #:use-module (gnu packages less) + #:use-module (gnu system vm) + #:export (cross-hurd-image)) + +;;; Commentary: +;;; +;;; This module provides tools to (cross-)build GNU/Hurd virtual machine +;;; images. +;;; +;;; Code: + +;; XXX: Surely this belongs in (guix profiles), but perhaps we need high-level +;; <profile> objects so one can specify hooks, etc.? +(define-gexp-compiler (compile-manifest (manifest + (@@ (guix profiles) <manifest>)) + system target) + "Lower MANIFEST as a profile." + (profile-derivation manifest + #:system system + #:target target)) + +(define %base-packages/hurd + (list hurd bash coreutils file findutils grep sed + guile-3.0 guile-colorized guile-readline + net-base inetutils less which)) + +(define* (cross-hurd-image #:key (hurd hurd) (gnumach gnumach)) + "Return a cross-built GNU/Hurd image." + + (define (cross-built thing) + (with-parameters ((%current-target-system "i586-pc-gnu")) + thing)) + + (define (cross-built-entry entry) + (manifest-entry + (inherit entry) + (item (cross-built (manifest-entry-item entry))) + (dependencies (map cross-built-entry + (manifest-entry-dependencies entry))))) + + (define system-profile + (map-manifest-entries cross-built-entry + (packages->manifest %base-packages/hurd))) + + (define grub.cfg + (let ((hurd (cross-built hurd)) + (mach (with-parameters ((%current-system "i686-linux")) + gnumach)) + (libc (cross-libc "i586-pc-gnu"))) + (computed-file "grub.cfg" + #~(call-with-output-file #$output + (lambda (port) + (format port " +set timeout=2 +search.file ~a/boot/gnumach + +menuentry \"GNU\" { + multiboot ~a/boot/gnumach root=device:hd0s1 + module ~a/hurd/ext2fs.static ext2fs \\ + --multiboot-command-line='${kernel-command-line}' \\ + --host-priv-port='${host-port}' \\ + --device-master-port='${device-port}' \\ + --exec-server-task='${exec-task}' -T typed '${root}' \\ + '$(task-create)' '$(task-resume)' + module ~a/lib/ld.so.1 exec ~a/hurd/exec '$(exec-task=task-create)' +}\n" + #+mach #+mach #+hurd + #+libc #+hurd)))))) + + (define fstab + (plain-file "fstab" + "# This file was generated from your Guix configuration. Any changes +# will be lost upon reboot or reconfiguration. + +/dev/hd0s1 / ext2 defaults +")) + + (define passwd + (plain-file "passwd" + "root:x:0:0:root:/root:/bin/sh +guixbuilder:x:1:1:guixbuilder:/var/empty:/bin/no-sh +")) + + (define group + (plain-file "group" + "guixbuild:x:1:guixbuilder +")) + + (define shadow + (plain-file "shadow" + "root::0:0:0:0::: +")) + + (define etc-profile + (plain-file "profile" + "\ +export PS1='\\u@\\h\\$ ' + +GUIX_PROFILE=\"/run/current-system/profile\" +. \"$GUIX_PROFILE/etc/profile\" + +GUIX_PROFILE=\"$HOME/.guix-profile\" +if [ -f \"$GUIX_PROFILE/etc/profile\" ]; then + . \"$GUIX_PROFILE/etc/profile\" +fi\n")) + + (define hurd-directives + `((directory "/servers") + ,@(map (lambda (server) + `(file ,(string-append "/servers/" server))) + '("startup" "exec" "proc" "password" + "default-pager" "crash-dump-core" + "kill" "suspend")) + ("/servers/crash" -> "crash-dump-core") + (directory "/servers/socket") + (file "/servers/socket/1") + (file "/servers/socket/2") + (file "/servers/socket/16") + ("/servers/socket/local" -> "1") + ("/servers/socket/inet" -> "2") + ("/servers/socket/inet6" -> "16") + (directory "/boot") + ("/boot/grub.cfg" -> ,grub.cfg) ;XXX: not strictly needed + ("/hurd" -> ,(file-append (with-parameters ((%current-target-system + "i586-pc-gnu")) + hurd) + "/hurd")) + + ;; TODO: Create those during activation, eventually. + (directory "/root") + (file "/root/.guile" + ,(object->string + '(begin + (use-modules (ice-9 readline) (ice-9 colorized)) + (activate-readline) (activate-colorized)))) + (directory "/run") + (directory "/run/current-system") + ("/run/current-system/profile" -> ,system-profile) + ("/etc/profile" -> ,etc-profile) + ("/etc/fstab" -> ,fstab) + ("/etc/group" -> ,group) + ("/etc/passwd" -> ,passwd) + ("/etc/shadow" -> ,shadow) + (file "/etc/hostname" "guixygnu") + (file "/etc/resolv.conf" + "nameserver 10.0.2.3\n") + ("/etc/services" -> ,(file-append (with-parameters ((%current-target-system + "i586-pc-gnu")) + net-base) + "/etc/services")) + ("/etc/protocols" -> ,(file-append (with-parameters ((%current-target-system + "i586-pc-gnu")) + net-base) + "/etc/protocols")) + ("/etc/motd" -> ,(file-append (with-parameters ((%current-target-system + "i586-pc-gnu")) + hurd) + "/etc/motd")) + ("/etc/login" -> ,(file-append (with-parameters ((%current-target-system + "i586-pc-gnu")) + hurd) + "/etc/login")) + + + ;; XXX can we instead, harmlessly set _PATH_TTYS (from glibc) in runttys.c? + ("/etc/ttys" -> ,(file-append (with-parameters ((%current-target-system + "i586-pc-gnu")) + hurd) + "/etc/ttys")) + ("/bin/sh" -> ,(file-append (with-parameters ((%current-target-system + "i586-pc-gnu")) + bash) + "/bin/sh")))) + + (qemu-image #:file-system-type "ext2" + #:file-system-options '("-o" "hurd") + #:device-nodes 'hurd + #:inputs `(("system" ,system-profile) + ("grub.cfg" ,grub.cfg) + ("fstab" ,fstab) + ("passwd" ,passwd) + ("group" ,group) + ("etc-profile" ,etc-profile) + ("shadow" ,shadow)) + #:copy-inputs? #t + #:os system-profile + #:bootcfg-drv grub.cfg + #:bootloader grub-bootloader + #:register-closures? #f + #:extra-directives hurd-directives)) + +;; Return this thunk so one can type "guix build -f gnu/system/hurd.scm". +cross-hurd-image diff --git a/gnu/system/image.scm b/gnu/system/image.scm new file mode 100644 index 0000000000..571b7af5f3 --- /dev/null +++ b/gnu/system/image.scm @@ -0,0 +1,532 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2020 Mathieu Othacehe <m.othacehe@gmail.com> +;;; +;;; This file is part of GNU Guix. +;;; +;;; GNU Guix is free software; you can redistribute it and/or modify it +;;; under the terms of the GNU General Public License as published by +;;; the Free Software Foundation; either version 3 of the License, or (at +;;; your option) any later version. +;;; +;;; GNU Guix is distributed in the hope that it will be useful, but +;;; WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;;; GNU General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>. + +(define-module (gnu system image) + #:use-module (guix gexp) + #:use-module (guix modules) + #:use-module (guix monads) + #:use-module (guix records) + #:use-module (guix store) + #:use-module (guix ui) + #:use-module (guix utils) + #:use-module ((guix self) #:select (make-config.scm)) + #:use-module (gnu bootloader) + #:use-module (gnu bootloader grub) + #:use-module (gnu image) + #:use-module (gnu services) + #:use-module (gnu services base) + #:use-module (gnu system) + #:use-module (gnu system file-systems) + #:use-module (gnu system uuid) + #:use-module (gnu system vm) + #:use-module (guix packages) + #:use-module (gnu packages base) + #:use-module (gnu packages bootloaders) + #:use-module (gnu packages cdrom) + #:use-module (gnu packages disk) + #:use-module (gnu packages gawk) + #:use-module (gnu packages genimage) + #:use-module (gnu packages guile) + #:autoload (gnu packages gnupg) (guile-gcrypt) + #:use-module (gnu packages linux) + #:use-module (gnu packages mtools) + #:use-module ((srfi srfi-1) #:prefix srfi-1:) + #:use-module (srfi srfi-11) + #:use-module (srfi srfi-26) + #:use-module (srfi srfi-35) + #:use-module (rnrs bytevectors) + #:use-module (ice-9 match) + #:export (esp-partition + root-partition + + efi-disk-image + iso9660-image + + find-image + system-image)) + + +;;; +;;; Images definitions. +;;; + +(define esp-partition + (partition + (size (* 40 (expt 2 20))) + (label "GNU-ESP") ;cosmetic only + ;; Use "vfat" here since this property is used when mounting. The actual + ;; FAT-ness is based on file system size (16 in this case). + (file-system "vfat") + (flags '(esp)) + (initializer (gexp initialize-efi-partition)))) + +(define root-partition + (partition + (size 'guess) + (label "Guix_image") + (file-system "ext4") + (flags '(boot)) + (initializer (gexp initialize-root-partition)))) + +(define efi-disk-image + (image + (format 'disk-image) + (partitions (list esp-partition root-partition)))) + +(define iso9660-image + (image + (format 'iso9660) + (partitions + (list (partition + (size 'guess) + (label "GUIX_IMAGE") + (flags '(boot))))) + ;; XXX: Temporarily disable compression to speed-up the tests. + (compression? #f))) + + +;; +;; Helpers. +;; + +(define not-config? + ;; Select (guix …) and (gnu …) modules, except (guix config). + (match-lambda + (('guix 'config) #f) + (('guix rest ...) #t) + (('gnu rest ...) #t) + (rest #f))) + +(define (partition->gexp partition) + "Turn PARTITION, a <partition> object, into a list-valued gexp suitable for +'make-partition-image'." + #~'(#$@(list (partition-size partition)) + #$(partition-file-system partition) + #$(partition-label partition) + #$(and=> (partition-uuid partition) + uuid-bytevector))) + +(define gcrypt-sqlite3&co + ;; Guile-Gcrypt, Guile-SQLite3, and their propagated inputs. + (srfi-1:append-map + (lambda (package) + (cons package + (match (package-transitive-propagated-inputs package) + (((labels packages) ...) + packages)))) + (list guile-gcrypt guile-sqlite3))) + +(define-syntax-rule (with-imported-modules* gexp* ...) + (with-extensions gcrypt-sqlite3&co + (with-imported-modules `(,@(source-module-closure + '((gnu build vm) + (gnu build image) + (guix store database)) + #:select? not-config?) + ((guix config) => ,(make-config.scm))) + #~(begin + (use-modules (gnu build vm) + (gnu build image) + (guix store database) + (guix build utils)) + gexp* ...)))) + + +;; +;; Disk image. +;; + +(define* (system-disk-image image + #:key + (name "disk-image") + bootcfg + bootloader + register-closures? + (inputs '())) + "Return as a file-like object, the disk-image described by IMAGE. Said +image can be copied on a USB stick as is. BOOTLOADER is the bootloader that +will be installed and configured according to BOOTCFG parameter. + +Raw images of the IMAGE partitions are first created. Then, genimage is used +to assemble the partition images into a disk-image without resorting to a +virtual machine. + +INPUTS is a list of inputs (as for packages). When REGISTER-CLOSURES? is +true, register INPUTS in the store database of the image so that Guix can be +used in the image." + + (define genimage-name "image") + + (define (image->genimage-cfg image) + ;; Return as a file-like object, the genimage configuration file + ;; describing the given IMAGE. + (define (format->image-type format) + ;; Return the genimage format corresponding to FORMAT. For now, only + ;; the hdimage format (raw disk-image) is supported. + (case format + ((disk-image) "hdimage") + (else + (raise (condition + (&message + (message + (format #f (G_ "Unsupported image type ~a~%.") format)))))))) + + (define (partition->dos-type partition) + ;; Return the MBR partition type corresponding to the given PARTITION. + ;; See: https://en.wikipedia.org/wiki/Partition_type. + (let ((flags (partition-flags partition))) + (cond + ((member 'esp flags) "0xEF") + (else "0x83")))) + + (define (partition-image partition) + ;; Return as a file-like object, an image of the given PARTITION. A + ;; directory, filled by calling the PARTITION initializer procedure, is + ;; first created within the store. Then, an image of this directory is + ;; created using tools such as 'mke2fs' or 'mkdosfs', depending on the + ;; partition file-system type. + (let* ((os (image-operating-system image)) + (schema (local-file (search-path %load-path + "guix/store/schema.sql"))) + (graph (match inputs + (((names . _) ...) + names))) + (root-builder + (with-imported-modules* + (let* ((initializer #$(partition-initializer partition))) + (sql-schema #$schema) + + ;; Allow non-ASCII file names--e.g., 'nss-certs'--to be + ;; decoded. + (setenv "GUIX_LOCPATH" + #+(file-append glibc-utf8-locales "/lib/locale")) + (setlocale LC_ALL "en_US.utf8") + + (initializer #$output + #:references-graphs '#$graph + #:deduplicate? #f + #:system-directory #$os + #:bootloader-package + #$(bootloader-package bootloader) + #:bootcfg #$bootcfg + #:bootcfg-location + #$(bootloader-configuration-file bootloader))))) + (image-root + (computed-file "partition-image-root" root-builder + #:options `(#:references-graphs ,inputs))) + (type (partition-file-system partition)) + (image-builder + (with-imported-modules* + (let ((inputs '#$(list e2fsprogs dosfstools mtools))) + (set-path-environment-variable "PATH" '("bin" "sbin") inputs) + (make-partition-image #$(partition->gexp partition) + #$output + #$image-root))))) + (computed-file "partition.img" image-builder))) + + (define (partition->config partition) + ;; Return the genimage partition configuration for PARTITION. + (let ((label (partition-label partition)) + (dos-type (partition->dos-type partition)) + (image (partition-image partition))) + #~(format #f "~/partition ~a { + ~/~/partition-type = ~a + ~/~/image = \"~a\" + ~/}" #$label #$dos-type #$image))) + + (let* ((format (image-format image)) + (image-type (format->image-type format)) + (partitions (image-partitions image)) + (partitions-config (map partition->config partitions)) + (builder + #~(begin + (let ((format (@ (ice-9 format) format))) + (call-with-output-file #$output + (lambda (port) + (format port + "\ +image ~a { +~/~a {} +~{~a~^~%~} +}~%" #$genimage-name #$image-type (list #$@partitions-config)))))))) + (computed-file "genimage.cfg" builder))) + + (let* ((substitutable? (image-substitutable? image)) + (builder + (with-imported-modules* + (let ((inputs '#$(list genimage coreutils findutils))) + (set-path-environment-variable "PATH" '("bin" "sbin") inputs) + (genimage #$(image->genimage-cfg image) #$output)))) + (image-dir (computed-file "image-dir" builder))) + (computed-file name + #~(symlink + (string-append #$image-dir "/" #$genimage-name) + #$output) + #:options `(#:substitutable? ,substitutable?)))) + + +;; +;; ISO9660 image. +;; + +(define (has-guix-service-type? os) + "Return true if OS contains a service of the type GUIX-SERVICE-TYPE." + (not (not (srfi-1:find (lambda (service) + (eq? (service-kind service) guix-service-type)) + (operating-system-services os))))) + +(define* (system-iso9660-image image + #:key + (name "iso9660-image") + bootcfg + bootloader + register-closures? + (inputs '()) + (grub-mkrescue-environment '())) + "Return as a file-like object a bootable, stand-alone iso9660 image. + +INPUTS is a list of inputs (as for packages). When REGISTER-CLOSURES? is +true, register INPUTS in the store database of the image so that Guix can be +used in the image. " + (define root-label + (match (image-partitions image) + ((partition) + (partition-label partition)))) + + (define root-uuid + (match (image-partitions image) + ((partition) + (uuid-bytevector (partition-uuid partition))))) + + (let* ((os (image-operating-system image)) + (bootloader (bootloader-package bootloader)) + (compression? (image-compression? image)) + (substitutable? (image-substitutable? image)) + (schema (local-file (search-path %load-path + "guix/store/schema.sql"))) + (graph (match inputs + (((names . _) ...) + names))) + (root-builder + (with-imported-modules* + (sql-schema #$schema) + + ;; Allow non-ASCII file names--e.g., 'nss-certs'--to be decoded. + (setenv "GUIX_LOCPATH" + #+(file-append glibc-utf8-locales "/lib/locale")) + (setlocale LC_ALL "en_US.utf8") + + (initialize-root-partition #$output + #:references-graphs '#$graph + #:deduplicate? #f + #:system-directory #$os))) + (image-root + (computed-file "image-root" root-builder + #:options `(#:references-graphs ,inputs))) + (builder + (with-imported-modules* + (let* ((inputs '#$(list parted e2fsprogs dosfstools xorriso + sed grep coreutils findutils gawk))) + (set-path-environment-variable "PATH" '("bin" "sbin") inputs) + (make-iso9660-image #$xorriso + '#$grub-mkrescue-environment + #$bootloader + #$bootcfg + #$os + #$image-root + #$output + #:references-graphs '#$graph + #:register-closures? #$register-closures? + #:compression? #$compression? + #:volume-id #$root-label + #:volume-uuid #$root-uuid))))) + (computed-file name builder + #:options `(#:references-graphs ,inputs + #:substitutable? ,substitutable?)))) + + +;; +;; Image creation. +;; + +(define (root-partition? partition) + "Return true if PARTITION is the root partition, false otherwise." + (member 'boot (partition-flags partition))) + +(define (find-root-partition image) + "Return the root partition of the given IMAGE." + (srfi-1:find root-partition? (image-partitions image))) + +(define (image->root-file-system image) + "Return the IMAGE root partition file-system type." + (let ((format (image-format image))) + (if (eq? format 'iso9660) + "iso9660" + (partition-file-system (find-root-partition image))))) + +(define (root-size image) + "Return the root partition size of IMAGE." + (let* ((image-size (image-size image)) + (root-partition (find-root-partition image)) + (root-size (partition-size root-partition))) + (cond + ((and (eq? root-size 'guess) image-size) + image-size) + (else root-size)))) + +(define* (image-with-os base-image os) + "Return an image based on BASE-IMAGE but with the operating-system field set +to OS. Also set the UUID and the size of the root partition." + (define root-file-system + (srfi-1:find + (lambda (fs) + (string=? (file-system-mount-point fs) "/")) + (operating-system-file-systems os))) + + (let*-values (((partitions) (image-partitions base-image)) + ((root-partition other-partitions) + (srfi-1:partition root-partition? partitions))) + (image + (inherit base-image) + (operating-system os) + (partitions + (cons (partition + (inherit (car root-partition)) + (uuid (file-system-device root-file-system)) + (size (root-size base-image))) + other-partitions))))) + +(define (operating-system-for-image image) + "Return an operating-system based on the one specified in IMAGE, but +suitable for image creation. Assign an UUID to the root file-system, so that +it can be used for bootloading." + (define volatile-root? (image-volatile-root? image)) + + (define (root-uuid os) + ;; UUID of the root file system, computed in a deterministic fashion. + ;; This is what we use to locate the root file system so it has to be + ;; different from the user's own file system UUIDs. + (let ((type (if (eq? (image-format image) 'iso9660) + 'iso9660 + 'dce))) + (operating-system-uuid os type))) + + (let* ((root-file-system-type (image->root-file-system image)) + (base-os (image-operating-system image)) + (file-systems-to-keep + (srfi-1:remove + (lambda (fs) + (string=? (file-system-mount-point fs) "/")) + (operating-system-file-systems base-os))) + (format (image-format image)) + (os + (operating-system + (inherit base-os) + (initrd (lambda (file-systems . rest) + (apply (operating-system-initrd base-os) + file-systems + #:volatile-root? volatile-root? + rest))) + (bootloader (if (eq? format 'iso9660) + (bootloader-configuration + (inherit + (operating-system-bootloader base-os)) + (bootloader grub-mkrescue-bootloader)) + (operating-system-bootloader base-os))) + (file-systems (cons (file-system + (mount-point "/") + (device "/dev/placeholder") + (type root-file-system-type)) + file-systems-to-keep)))) + (uuid (root-uuid os))) + (operating-system + (inherit os) + (file-systems (cons (file-system + (mount-point "/") + (device uuid) + (type root-file-system-type)) + file-systems-to-keep))))) + +(define* (make-system-image image) + "Return the derivation of IMAGE. It can be a raw disk-image or an ISO9660 +image, depending on IMAGE format." + (define substitutable? (image-substitutable? image)) + + (let* ((os (operating-system-for-image image)) + (image* (image-with-os image os)) + (register-closures? (has-guix-service-type? os)) + (bootcfg (operating-system-bootcfg os)) + (bootloader (bootloader-configuration-bootloader + (operating-system-bootloader os)))) + (case (image-format image) + ((disk-image) + (system-disk-image image* + #:bootcfg bootcfg + #:bootloader bootloader + #:register-closures? register-closures? + #:inputs `(("system" ,os) + ("bootcfg" ,bootcfg)))) + ((iso9660) + (system-iso9660-image image* + #:bootcfg bootcfg + #:bootloader bootloader + #:register-closures? register-closures? + #:inputs `(("system" ,os) + ("bootcfg" ,bootcfg)) + #:grub-mkrescue-environment + '(("MKRESCUE_SED_MODE" . "mbr_hfs"))))))) + +(define (find-image file-system-type) + "Find and return an image that could match the given FILE-SYSTEM-TYPE. This +is useful to adapt to interfaces written before the addition of the <image> +record." + ;; XXX: Add support for system and target here, or in the caller. + (match file-system-type + ("iso9660" iso9660-image) + (_ efi-disk-image))) + +(define (system-image image) + "Wrap 'make-system-image' call, so that it is used only if the given IMAGE +is supported. Otherwise, fallback to image creation in a VM. This is +temporary and should be removed once 'make-system-image' is able to deal with +all types of images." + (define substitutable? (image-substitutable? image)) + (define volatile-root? (image-volatile-root? image)) + + (let* ((image-os (image-operating-system image)) + (image-root-filesystem-type (image->root-file-system image)) + (bootloader (bootloader-configuration-bootloader + (operating-system-bootloader image-os))) + (bootloader-name (bootloader-name bootloader)) + (size (image-size image)) + (format (image-format image))) + (mbegin %store-monad + (if (and (or (eq? bootloader-name 'grub) + (eq? bootloader-name 'extlinux)) + (eq? format 'disk-image)) + ;; Fallback to image creation in a VM when it is not yet supported + ;; by this module. + (system-disk-image-in-vm image-os + #:disk-image-size size + #:file-system-type image-root-filesystem-type + #:volatile? volatile-root? + #:substitutable? substitutable?) + (lower-object + (make-system-image image)))))) + +;;; image.scm ends here diff --git a/gnu/system/install.scm b/gnu/system/install.scm index d31ed9a197..fe49ffdb94 100644 --- a/gnu/system/install.scm +++ b/gnu/system/install.scm @@ -419,8 +419,7 @@ Access documentation at any time by pressing Alt-F2.\x1b[0m ;; Having /bin/sh is a good idea. In particular it allows Tramp ;; connections to this system to work. (service special-files-service-type - `(("/bin/sh" ,(file-append (canonical-package bash) - "/bin/sh")))) + `(("/bin/sh" ,(file-append bash "/bin/sh")))) ;; Loopback device, needed by OpenSSH notably. (service static-networking-service-type @@ -443,7 +442,7 @@ Access documentation at any time by pressing Alt-F2.\x1b[0m (list bare-bones-os glibc-utf8-locales texinfo - (canonical-package guile-2.2))) + guile-3.0)) ;; Machines without Kernel Mode Setting (those with many old and ;; current AMD GPUs, SiS GPUs, ...) need uvesafb to show the GUI @@ -471,12 +470,6 @@ Access documentation at any time by pressing Alt-F2.\x1b[0m (label (string-append "GNU Guix installation " (package-version guix))) - ;; XXX: The AMD Radeon driver is reportedly broken, which makes kmscon - ;; non-functional: - ;; <https://lists.gnu.org/archive/html/guix-devel/2019-03/msg00441.html>. - ;; Thus, blacklist it. - (kernel-arguments '("quiet" "modprobe.blacklist=radeon")) - (file-systems ;; Note: the disk image build code overrides this root file system with ;; the appropriate one. @@ -521,7 +514,7 @@ Access documentation at any time by pressing Alt-F2.\x1b[0m ;; Explicitly allow for empty passwords. (base-pam-services #:allow-empty-passwords? #t)) - (packages (cons* (canonical-package glibc) ;for 'tzselect' & co. + (packages (cons* glibc ;for 'tzselect' & co. parted gptfdisk ddrescue fontconfig font-dejavu font-gnu-unifont @@ -530,6 +523,7 @@ Access documentation at any time by pressing Alt-F2.\x1b[0m mdadm dosfstools ;mkfs.fat, for the UEFI boot partition btrfs-progs + f2fs-tools jfsutils openssh ;we already have sshd, having ssh/scp can help wireless-tools iw wpa-supplicant-minimal iproute diff --git a/gnu/system/linux-initrd.scm b/gnu/system/linux-initrd.scm index dcc9b6b937..c43d53a210 100644 --- a/gnu/system/linux-initrd.scm +++ b/gnu/system/linux-initrd.scm @@ -36,7 +36,7 @@ #:use-module ((gnu packages xorg) #:select (console-setup xkeyboard-config)) #:use-module ((gnu packages make-bootstrap) - #:select (%guile-static-stripped)) + #:select (%guile-3.0-static-stripped)) #:use-module (gnu system file-systems) #:use-module (gnu system mapped-devices) #:use-module (gnu system keyboard) @@ -62,7 +62,7 @@ (define* (expression->initrd exp #:key - (guile %guile-static-stripped) + (guile %guile-3.0-static-stripped) (gzip gzip) (name "guile-initrd") (system (%current-system))) @@ -245,6 +245,9 @@ FILE-SYSTEMS." '()) ,@(if (find (file-system-type-predicate "jfs") file-systems) (list jfs_fsck/static) + '()) + ,@(if (find (file-system-type-predicate "f2fs") file-systems) + (list f2fs-fsck/static) '()))) (define-syntax vhash ;TODO: factorize @@ -275,6 +278,7 @@ FILE-SYSTEMS." ("btrfs" => '("btrfs")) ("iso9660" => '("isofs")) ("jfs" => '("jfs")) + ("f2fs" => '("f2fs" "crc32_generic")) (else '()))) (define (file-system-modules file-systems) diff --git a/gnu/system/locale.scm b/gnu/system/locale.scm index 8466d5b07d..689d238d1a 100644 --- a/gnu/system/locale.scm +++ b/gnu/system/locale.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2014, 2015, 2016, 2017, 2019 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2014, 2015, 2016, 2017, 2019, 2020 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2018 Mark H Weaver <mhw@netris.org> ;;; ;;; This file is part of GNU Guix. @@ -86,7 +86,7 @@ or #f on failure." #f))) (define* (single-locale-directory locales - #:key (libc (canonical-package glibc))) + #:key (libc glibc)) "Return a directory containing all of LOCALES for LIBC compiled. Because locale data formats are incompatible when switching from one libc to @@ -106,7 +106,7 @@ of LIBC." ;; 'localedef' executes 'gzip' to access compressed locale sources. (setenv "PATH" - (string-append #$gzip "/bin:" #$libc "/bin")) + (string-append #+gzip "/bin:" #+libc "/bin")) (setvbuf (current-output-port) 'line) (setvbuf (current-error-port) 'line) @@ -147,7 +147,8 @@ data format changes between libc versions." (define %default-locale-libcs ;; The libcs for which we build locales by default. - (list (canonical-package glibc))) + ;; List the previous and current libc to ease transition. + (list glibc-2.29 glibc)) (define %default-locale-definitions ;; Arbitrary set of locales that are built by default. They are here mostly diff --git a/gnu/system/pam.scm b/gnu/system/pam.scm index 85f75517b1..ad02586be8 100644 --- a/gnu/system/pam.scm +++ b/gnu/system/pam.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2013, 2014, 2015, 2016, 2017, 2019 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2013, 2014, 2015, 2016, 2017, 2019, 2020 Ludovic Courtès <ludo@gnu.org> ;;; ;;; This file is part of GNU Guix. ;;; @@ -367,7 +367,13 @@ strings or string-valued gexps." ;; Arguments include <pam-service> as well as procedures. (compose concatenate) - (extend extend-configuration))) + (extend extend-configuration) + (description + "Configure the Pluggable Authentication Modules (PAM) for all +the specified @dfn{PAM services}. Each PAM service corresponds to a program, +such as @command{login} or @command{sshd}, and specifies for instance how the +program may authenticate users or what it should do when opening a new +session."))) (define* (pam-root-service base #:key (transform identity)) "The \"root\" PAM service, which collects <pam-service> instance and turns diff --git a/gnu/system/shadow.scm b/gnu/system/shadow.scm index a6f1d806cf..a69339bc07 100644 --- a/gnu/system/shadow.scm +++ b/gnu/system/shadow.scm @@ -378,7 +378,10 @@ the /etc/skel directory for those." (service-extension user-processes-service-type (const '(user-homes))) (service-extension etc-service-type - etc-files))))) + etc-files))) + (description + "Ensure the specified user accounts and groups exist, as well +as each account home directory."))) (define (account-service accounts+groups skeletons) "Return a <service> that takes care of user accounts and user groups, with diff --git a/gnu/system/vm.scm b/gnu/system/vm.scm index 6f81ac16ff..163e8b4e9c 100644 --- a/gnu/system/vm.scm +++ b/gnu/system/vm.scm @@ -77,7 +77,7 @@ system-qemu-image/shared-store system-qemu-image/shared-store-script - system-disk-image + system-disk-image-in-vm system-docker-image virtual-machine @@ -269,95 +269,6 @@ substitutable." (eq? (service-kind service) guix-service-type)) (operating-system-services os))))) -(define* (iso9660-image #:key - (name "iso9660-image") - file-system-label - file-system-uuid - (system (%current-system)) - (target (%current-target-system)) - (qemu qemu-minimal) - os - bootcfg-drv - bootloader - (register-closures? (has-guix-service-type? os)) - (inputs '()) - (grub-mkrescue-environment '()) - (substitutable? #t)) - "Return a bootable, stand-alone iso9660 image. - -INPUTS is a list of inputs (as for packages)." - (define schema - (and register-closures? - (local-file (search-path %load-path - "guix/store/schema.sql")))) - - (expression->derivation-in-linux-vm - name - (with-extensions gcrypt-sqlite3&co - (with-imported-modules `(,@(source-module-closure '((gnu build vm) - (guix store database) - (guix build utils)) - #:select? not-config?) - ((guix config) => ,(make-config.scm))) - #~(begin - (use-modules (gnu build vm) - (guix store database) - (guix build utils)) - - (sql-schema #$schema) - - ;; Allow non-ASCII file names--e.g., 'nss-certs'--to be decoded. - (setenv "GUIX_LOCPATH" - #+(file-append glibc-utf8-locales "/lib/locale")) - (setlocale LC_ALL "en_US.utf8") - - (let ((inputs - '#$(append (list parted e2fsprogs dosfstools xorriso) - (map canonical-package - (list sed grep coreutils findutils gawk)))) - - - (graphs '#$(match inputs - (((names . _) ...) - names))) - ;; This variable is unused but allows us to add INPUTS-TO-COPY - ;; as inputs. - (to-register - '#$(map (match-lambda - ((name thing) thing) - ((name thing output) `(,thing ,output))) - inputs))) - - (set-path-environment-variable "PATH" '("bin" "sbin") inputs) - (make-iso9660-image #$xorriso - '#$grub-mkrescue-environment - #$(bootloader-package bootloader) - #$bootcfg-drv - #$os - "/xchg/guixsd.iso" - #:register-closures? #$register-closures? - #:closures graphs - #:volume-id #$file-system-label - #:volume-uuid #$(and=> file-system-uuid - uuid-bytevector)))))) - #:system system - #:target target - - ;; Keep a local file system for /tmp so that we can populate it directly as - ;; root and have files owned by root. See <https://bugs.gnu.org/31752>. - #:file-systems (remove (lambda (file-system) - (string=? (file-system-mount-point file-system) - "/tmp")) - %linux-vm-file-systems) - - #:make-disk-image? #f - #:single-file-output? #t - #:references-graphs inputs - #:substitutable? substitutable? - - ;; Xorriso seems to be quite memory-hungry, so increase the VM's RAM size. - #:memory-size 512)) - (define* (qemu-image #:key (name "qemu-image") (system (%current-system)) @@ -366,6 +277,9 @@ INPUTS is a list of inputs (as for packages)." (disk-image-size 'guess) (disk-image-format "qcow2") (file-system-type "ext4") + (file-system-options '()) + (device-nodes 'linux) + (extra-directives '()) file-system-label file-system-uuid os @@ -379,7 +293,8 @@ INPUTS is a list of inputs (as for packages)." 'qcow2' or 'raw'), with a root partition of type FILE-SYSTEM-TYPE. Optionally, FILE-SYSTEM-LABEL can be specified as the volume name for the root partition; likewise FILE-SYSTEM-UUID, if true, specifies the UUID of the root -partition (a UUID object). +partition (a UUID object). FILE-SYSTEM-OPTIONS is an optional list of +command-line options passed to 'mkfs.ext4' (or similar). The returned image is a full disk image that runs OS-DERIVATION, with a GRUB installation that uses GRUB-CONFIGURATION as its configuration @@ -390,7 +305,13 @@ all of INPUTS into the image being built. When REGISTER-CLOSURES? is true, register INPUTS in the store database of the image so that Guix can be used in the image. By default, REGISTER-CLOSURES? is set to true only if a service of type GUIX-SERVICE-TYPE is present in the services definition of the operating -system." +system. + +When DEVICE-NODES is 'linux, create Linux-device block and character devices +under /dev. When it is 'hurd, do Hurdish things. + +EXTRA-DIRECTIVES is an optional list of directives to populate the root file +system that is passed to 'populate-root-file-system'." (define schema (and register-closures? (local-file (search-path %load-path @@ -408,6 +329,9 @@ system." #~(begin (use-modules (gnu build bootloader) (gnu build vm) + ((gnu build linux-boot) + #:select (make-essential-device-nodes + make-hurd-device-nodes)) (guix store database) (guix build utils) (srfi srfi-26) @@ -439,11 +363,17 @@ system." (((names . _) ...) names))) (initialize (root-partition-initializer + #:extra-directives '#$extra-directives #:closures graphs #:copy-closures? #$copy-inputs? #:register-closures? #$register-closures? #:system-directory #$os + #:make-device-nodes + #$(match device-nodes + ('linux #~make-essential-device-nodes) + ('hurd #~make-hurd-device-nodes)) + ;; Disable deduplication to speed things up, ;; and because it doesn't help much for a ;; single system generation. @@ -465,6 +395,7 @@ system." (uuid #$(and=> file-system-uuid uuid-bytevector)) (file-system #$file-system-type) + (file-system-options '#$file-system-options) (flags '(boot)) (initializer initialize))) ;; Append a small EFI System Partition for use with UEFI @@ -508,13 +439,17 @@ system." (define* (system-docker-image os #:key (name "guix-docker-image") - (register-closures? (has-guix-service-type? os))) + (register-closures? (has-guix-service-type? os)) + shared-network?) "Build a docker image. OS is the desired <operating-system>. NAME is the -base name to use for the output file. When REGISTER-CLOSURES? is true, -register the closure of OS with Guix in the resulting Docker image. By -default, REGISTER-CLOSURES? is set to true only if a service of type -GUIX-SERVICE-TYPE is present in the services definition of the operating -system." +base name to use for the output file. When SHARED-NETWORK? is true, assume +that the container will share network with the host and thus doesn't need a +DHCP client, nscd, and so on. + +When REGISTER-CLOSURES? is true, register the closure of OS with Guix in the +resulting Docker image. By default, REGISTER-CLOSURES? is set to true only if +a service of type GUIX-SERVICE-TYPE is present in the services definition of +the operating system." (define schema (and register-closures? (local-file (search-path %load-path @@ -531,7 +466,9 @@ system." (let ((os (operating-system-with-gc-roots - (containerized-operating-system os '()) + (containerized-operating-system os '() + #:shared-network? + shared-network?) (list boot-program))) (name (string-append name ".tar.gz")) (graph "system-graph")) @@ -604,62 +541,13 @@ system." ;;; VM and disk images. ;;; -(define* (operating-system-uuid os #:optional (type 'dce)) - "Compute UUID object with a deterministic \"UUID\" for OS, of the given -TYPE (one of 'iso9660 or 'dce). Return a UUID object." - ;; Note: For this to be deterministic, we must not hash things that contains - ;; (directly or indirectly) procedures, for example. That rules out - ;; anything that contains gexps, thunk or delayed record fields, etc. - - (define service-name - (compose service-type-name service-kind)) - - (define (file-system-digest fs) - ;; Return a hashable digest that does not contain 'dependencies' since - ;; this field can contain procedures. - (let ((device (file-system-device fs))) - (list (file-system-mount-point fs) - (file-system-type fs) - (file-system-device->string device) - (file-system-options fs)))) - - (if (eq? type 'iso9660) - (let ((pad (compose (cut string-pad <> 2 #\0) - number->string)) - (h (hash (map service-name (operating-system-services os)) - 3600))) - (bytevector->uuid - (string->iso9660-uuid - (string-append "1970-01-01-" - (pad (hash (operating-system-host-name os) 24)) "-" - (pad (quotient h 60)) "-" - (pad (modulo h 60)) "-" - (pad (hash (map file-system-digest - (operating-system-file-systems os)) - 100)))) - 'iso9660)) - (bytevector->uuid - (uint-list->bytevector - (list (hash (map file-system-digest - (operating-system-file-systems os)) - (- (expt 2 32) 1)) - (hash (operating-system-host-name os) - (- (expt 2 32) 1)) - (hash (map service-name (operating-system-services os)) - (- (expt 2 32) 1)) - (hash (map file-system-digest (operating-system-file-systems os)) - (- (expt 2 32) 1))) - (endianness little) - 4) - type))) - -(define* (system-disk-image os - #:key - (name "disk-image") - (file-system-type "ext4") - (disk-image-size (* 900 (expt 2 20))) - (volatile? #t) - (substitutable? #t)) +(define* (system-disk-image-in-vm os + #:key + (name "disk-image") + (file-system-type "ext4") + (disk-image-size (* 900 (expt 2 20))) + (volatile? #t) + (substitutable? #t)) "Return the derivation of a disk image of DISK-IMAGE-SIZE bytes of the system described by OS. Said image can be copied on a USB stick as is. When VOLATILE? is true, the root file system is made volatile; this is useful @@ -667,25 +555,14 @@ to USB sticks meant to be read-only. SUBSTITUTABLE? determines whether the returned derivation should be marked as substitutable." - (define normalize-label - ;; ISO labels are all-caps (case-insensitive), but since - ;; 'find-partition-by-label' is case-sensitive, make it all-caps here. - (if (string=? "iso9660" file-system-type) - string-upcase - identity)) - (define root-label - ;; Volume name of the root file system. - (normalize-label "Guix_image")) + "Guix_image") (define (root-uuid os) ;; UUID of the root file system, computed in a deterministic fashion. ;; This is what we use to locate the root file system so it has to be ;; different from the user's own file system UUIDs. - (operating-system-uuid os - (if (string=? file-system-type "iso9660") - 'iso9660 - 'dce))) + (operating-system-uuid os 'dce)) (define file-systems-to-keep (remove (lambda (fs) @@ -702,11 +579,7 @@ substitutable." #:volatile-root? volatile? rest))) - (bootloader (if (string=? "iso9660" file-system-type) - (bootloader-configuration - (inherit (operating-system-bootloader os)) - (bootloader grub-mkrescue-bootloader)) - (operating-system-bootloader os))) + (bootloader (operating-system-bootloader os)) ;; Force our own root file system. (We need a "/" file system ;; to call 'root-uuid'.) @@ -724,33 +597,20 @@ substitutable." (type file-system-type)) file-systems-to-keep)))) (bootcfg (operating-system-bootcfg os))) - (if (string=? "iso9660" file-system-type) - (iso9660-image #:name name - #:file-system-label root-label - #:file-system-uuid uuid - #:os os - #:bootcfg-drv bootcfg - #:bootloader (bootloader-configuration-bootloader - (operating-system-bootloader os)) - #:inputs `(("system" ,os) - ("bootcfg" ,bootcfg)) - #:grub-mkrescue-environment - '(("MKRESCUE_SED_MODE" . "mbr_hfs")) - #:substitutable? substitutable?) - (qemu-image #:name name - #:os os - #:bootcfg-drv bootcfg - #:bootloader (bootloader-configuration-bootloader - (operating-system-bootloader os)) - #:disk-image-size disk-image-size - #:disk-image-format "raw" - #:file-system-type file-system-type - #:file-system-label root-label - #:file-system-uuid uuid - #:copy-inputs? #t - #:inputs `(("system" ,os) - ("bootcfg" ,bootcfg)) - #:substitutable? substitutable?)))) + (qemu-image #:name name + #:os os + #:bootcfg-drv bootcfg + #:bootloader (bootloader-configuration-bootloader + (operating-system-bootloader os)) + #:disk-image-size disk-image-size + #:disk-image-format "raw" + #:file-system-type file-system-type + #:file-system-label root-label + #:file-system-uuid uuid + #:copy-inputs? #t + #:inputs `(("system" ,os) + ("bootcfg" ,bootcfg)) + #:substitutable? substitutable?))) (define* (system-qemu-image os #:key diff --git a/gnu/tests/install.scm b/gnu/tests/install.scm index 8650474fbc..94d970e1cc 100644 --- a/gnu/tests/install.scm +++ b/gnu/tests/install.scm @@ -2,6 +2,7 @@ ;;; Copyright © 2016, 2017, 2018, 2019, 2020 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2017, 2019 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2020 Mathieu Othacehe <m.othacehe@gmail.com> +;;; Copyright © 2020 Danny Milosavljevic <dannym@scratchpost.org> ;;; ;;; This file is part of GNU Guix. ;;; @@ -21,14 +22,17 @@ (define-module (gnu tests install) #:use-module (gnu) #:use-module (gnu bootloader extlinux) + #:use-module (gnu image) #:use-module (gnu tests) #:use-module (gnu tests base) #:use-module (gnu system) + #:use-module (gnu system image) #:use-module (gnu system install) #:use-module (gnu system vm) #:use-module ((gnu build vm) #:select (qemu-command)) #:use-module (gnu packages admin) #:use-module (gnu packages bootloaders) + #:use-module (gnu packages commencement) ;for 'guile-final' #:use-module (gnu packages cryptsetup) #:use-module (gnu packages linux) #:use-module (gnu packages ocr) @@ -58,6 +62,7 @@ %test-encrypted-root-os %test-btrfs-root-os %test-jfs-root-os + %test-f2fs-root-os %test-gui-installed-os %test-gui-installed-os-encrypted @@ -226,15 +231,20 @@ packages defined in installation-os." ;; Since the installation system has no network access, ;; we cheat a little bit by adding TARGET to its GC ;; roots. This way, we know 'guix system init' will - ;; succeed. - (image (system-disk-image - (operating-system-with-gc-roots - os (list target)) - #:disk-image-size install-size - #:file-system-type - installation-disk-image-file-system-type - ;; Don't provide substitutes; too big. - #:substitutable? #f))) + ;; succeed. Also add guile-final, which is pulled in + ;; through provenance.drv and may not always be present. + (image + (system-image + (image + (inherit + (find-image + installation-disk-image-file-system-type)) + (size install-size) + (operating-system + (operating-system-with-gc-roots + os (list target guile-final))) + ;; Don't provide substitutes; too big. + (substitutable? #f))))) (define install (with-imported-modules '((guix build utils) (gnu build marionette)) @@ -387,6 +397,7 @@ per %test-installed-os, this test is expensive in terms of CPU and storage.") (services (cons (service marionette-service-type (marionette-configuration (imported-modules '((gnu services herd) + (guix build utils) (guix combinators))))) %base-services)))) @@ -927,6 +938,79 @@ build (current-guix) and then store a couple of full system images.") ;;; +;;; F2FS root file system. +;;; + +(define-os-with-source (%f2fs-root-os %f2fs-root-os-source) + ;; The OS we want to install. + (use-modules (gnu) (gnu tests) (srfi srfi-1)) + + (operating-system + (host-name "liberigilo") + (timezone "Europe/Paris") + (locale "en_US.UTF-8") + + (bootloader (bootloader-configuration + (bootloader grub-bootloader) + (target "/dev/vdb"))) + (kernel-arguments '("console=ttyS0")) + (file-systems (cons (file-system + (device (file-system-label "my-root")) + (mount-point "/") + (type "f2fs")) + %base-file-systems)) + (users (cons (user-account + (name "charlie") + (group "users") + (supplementary-groups '("wheel" "audio" "video"))) + %base-user-accounts)) + (services (cons (service marionette-service-type + (marionette-configuration + (imported-modules '((gnu services herd) + (guix combinators))))) + %base-services)))) + +(define %f2fs-root-installation-script + ;; Shell script of a simple installation. + "\ +. /etc/profile +set -e -x +guix --version + +export GUIX_BUILD_OPTIONS=--no-grafts +ls -l /run/current-system/gc-roots +parted --script /dev/vdb mklabel gpt \\ + mkpart primary ext2 1M 3M \\ + mkpart primary ext2 3M 2G \\ + set 1 boot on \\ + set 1 bios_grub on +mkfs.f2fs -l my-root -q /dev/vdb2 +mount /dev/vdb2 /mnt +herd start cow-store /mnt +mkdir /mnt/etc +cp /etc/target-config.scm /mnt/etc/config.scm +guix system build /mnt/etc/config.scm +guix system init /mnt/etc/config.scm /mnt --no-substitutes +sync +reboot\n") + +(define %test-f2fs-root-os + (system-test + (name "f2fs-root-os") + (description + "Test basic functionality of an OS installed like one would do by hand. +This test is expensive in terms of CPU and storage usage since we need to +build (current-guix) and then store a couple of full system images.") + (value + (mlet* %store-monad ((image (run-install %f2fs-root-os + %f2fs-root-os-source + #:script + %f2fs-root-installation-script)) + (command (qemu-command/writable-image image))) + (run-basic-test %f2fs-root-os command "f2fs-root-os"))))) + + +;;; ;;; Installation through the graphical interface. ;;; @@ -1058,7 +1142,7 @@ build (current-guix) and then store a couple of full system images.") (define* (installation-target-os-for-gui-tests #:key (encrypted? #f)) (operating-system - (inherit %minimal-os) + (inherit %minimal-os-on-vda) (users (append (list (user-account (name "alice") (comment "Bob's sister") @@ -1076,7 +1160,7 @@ build (current-guix) and then store a couple of full system images.") ;; encryption support. (swap-devices (if encrypted? '() '("/dev/vda2"))) (services (cons (service dhcp-client-service-type) - (operating-system-user-services %minimal-os))))) + (operating-system-user-services %minimal-os-on-vda))))) (define* (installation-target-desktop-os-for-gui-tests #:key (encrypted? #f)) |