diff --git a/doc/build.scm b/doc/build.scm index 3907b49caf..2b6d0c4aea 100644 --- a/doc/build.scm +++ b/doc/build.scm @@ -1,5 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2019, 2020 Ludovic Courtès +;;; Copyright © 2020 Björn Höfling ;;; ;;; This file is part of GNU Guix. ;;; @@ -58,7 +59,10 @@ (define %manual "guix")) (define %languages - '("de" "en" "es" "fr" "ru" "zh_CN")) + ;; The cookbook is currently only translated into German. + (if (string=? %manual "guix-cookbook") + '("de" "en") + '("de" "en" "es" "fr" "ru" "zh_CN"))) (define (texinfo-manual-images source) "Return a directory containing all the images used by the user manual, taken @@ -451,7 +455,9 @@ (define (html? file stat) (lambda (mono) (let ((anchors (collect-anchors mono))) (process-html mono anchors))) - (find-files #$input "^guix(\\.[a-zA-Z_-]+)?\\.html$")) + (find-files + #$input + "^guix(-cookbook|)(\\.[a-zA-Z_-]+)?\\.html$")) ;; Next process the multi-node HTML files in two phases: (1) ;; collect the list of anchors, and (2) perform diff --git a/doc/guix.texi b/doc/guix.texi index a51c65f12f..472b70e092 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -78,6 +78,7 @@ Copyright @copyright{} 2020 Jack Hill@* Copyright @copyright{} 2020 Naga Malleswari@* Copyright @copyright{} 2020 Brice Waegeneire@* Copyright @copyright{} 2020 R Veera Kumar@* +Copyright @copyright{} 2020 Pierre Langlois@* Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or @@ -11274,7 +11275,7 @@ possible to use the GNU@tie{}Hurd.}. A list of objects (usually packages) to collect loadable kernel modules from--e.g. @code{(list ddcci-driver-linux)}. -@item @code{kernel-arguments} (default: @code{'("quiet")}) +@item @code{kernel-arguments} (default: @code{%default-kernel-arguments}) List of strings or gexps representing additional arguments to pass on the command-line of the kernel---e.g., @code{("console=ttyS0")}. @@ -21874,6 +21875,25 @@ When true, don't read @var{resolv-file}. @item @code{servers} (default: @code{'()}) Specify IP address of upstream servers directly. +@item @code{addresses} (default: @code{'()}) +For each entry, specify an IP address to return for any host in the +given domains. Queries in the domains are never forwarded and always +replied to with the specified IP address. + +This is useful for redirecting hosts locally, for example: + +@lisp +(service dnsmasq-service-type + (dnsmasq-configuration + (addresses + '(; Redirect to a local web-server. + "/example.org/127.0.0.1" + ; Redirect subdomain to a specific IP. + "/subdomain.example.org/192.168.1.42")))) +@end lisp + +Note that rules in @file{/etc/hosts} take precedence over this. + @item @code{cache-size} (default: @code{150}) Set the size of dnsmasq's cache. Setting the cache size to zero disables caching. @@ -25491,13 +25511,13 @@ Extra command line options for @code{guix-data-service-process-jobs}. @end deftp @node Linux Services -@subsubheading Linux Services +@subsection Linux Services @cindex oom @cindex out of memory killer @cindex earlyoom @cindex early out of memory daemon -@subsection Early OOM Service +@subsubheading Early OOM Service @uref{https://github.com/rfjakob/earlyoom,Early OOM}, also known as Earlyoom, is a minimalist out of memory (OOM) daemon that runs in user @@ -25557,7 +25577,7 @@ notifications. @cindex modprobe @cindex kernel module loader -@subsubsection Kernel Module Loader Service +@subsubheading Kernel Module Loader Service The kernel module loader service allows one to load loadable kernel modules at boot. This is especially useful for modules that don't @@ -25733,7 +25753,7 @@ If true, this must be the name of a file to log messages to. @end table @end deftp -@subsection Dictionary Services +@subsubheading Dictionary Service @cindex dictionary The @code{(gnu services dict)} module provides the following service: diff --git a/gnu/build/file-systems.scm b/gnu/build/file-systems.scm index 902563b219..bbea4c766e 100644 --- a/gnu/build/file-systems.scm +++ b/gnu/build/file-systems.scm @@ -336,6 +336,58 @@ (define (check-jfs-file-system device) (2 'reboot-required) (_ 'fatal-error))) + +;;; +;;; 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." + (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 +524,9 @@ (define %partition-label-readers (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 +540,9 @@ (define %partition-uuid-readers (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 +638,7 @@ (define check-procedure ((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/linux-boot.scm b/gnu/build/linux-boot.scm index d1c9f47f33..c6f9df5f29 100644 --- a/gnu/build/linux-boot.scm +++ b/gnu/build/linux-boot.scm @@ -565,10 +565,13 @@ (define root-fs-options ;; 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/local.mk b/gnu/local.mk index f48c6803ee..445c0cf3f9 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -33,6 +33,7 @@ # Copyright © 2020 Michael Rohleder # Copyright © 2020 Felix Gruber # Copyright © 2020 Ryan Prior +# Copyright © 2020 Jan Wielkiewicz # # This file is part of GNU Guix. # @@ -278,6 +279,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 \ @@ -889,6 +891,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 \ @@ -1206,7 +1209,6 @@ dist_patch_DATA = \ %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 \ @@ -1552,7 +1554,6 @@ dist_patch_DATA = \ %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 \ diff --git a/gnu/packages/audio.scm b/gnu/packages/audio.scm index e25d0978d0..32839ab8c9 100644 --- a/gnu/packages/audio.scm +++ b/gnu/packages/audio.scm @@ -30,6 +30,7 @@ ;;; Copyright © 2019 Nicolas Goaziou ;;; Copyright © 2020 Vincent Legoll ;;; Copyright © 2020 Guillaume Le Vaillant +;;; Copyright © 2020 Jonathan Frederickson ;;; ;;; This file is part of GNU Guix. ;;; @@ -1855,6 +1856,31 @@ (define-public libbs2b 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") diff --git a/gnu/packages/check.scm b/gnu/packages/check.scm index 2629e88323..55733ff299 100644 --- a/gnu/packages/check.scm +++ b/gnu/packages/check.scm @@ -31,6 +31,7 @@ ;;; Copyright © 2019 Pierre Langlois ;;; Copyright © 2019 Chris Marusich ;;; Copyright © 2020 Lars-Dominik Braun +;;; Copyright © 2020 Brice Waegeneire ;;; ;;; This file is part of GNU Guix. ;;; @@ -2506,11 +2507,10 @@ (define-public umockdev (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) @@ -2523,8 +2523,7 @@ (define-public umockdev (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 diff --git a/gnu/packages/compression.scm b/gnu/packages/compression.scm index fb58d25aeb..b599f3a603 100644 --- a/gnu/packages/compression.scm +++ b/gnu/packages/compression.scm @@ -1942,7 +1942,7 @@ (define-public upx (define-public quazip (package (name "quazip") - (version "0.8.1") + (version "0.9") (source (origin (method git-fetch) (uri (git-reference @@ -1951,7 +1951,7 @@ (define-public quazip (file-name (git-file-name name version)) (sha256 (base32 - "1g473gnsbkvxpsv8lbsmhspn7jnq86b05zzgqh11r581v8ndvz5s")))) + "0psvf3d9akyyx3bckc9325nmbp97xiagf8la4vhca5xn2f430fbn")))) (build-system cmake-build-system) (arguments `(#:tests? #f)) ;no test 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 @@ (define-module (gnu packages debian) #: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 @@ (define-public debootstrap 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/disk.scm b/gnu/packages/disk.scm index 69743980e5..f8d284cf24 100644 --- a/gnu/packages/disk.scm +++ b/gnu/packages/disk.scm @@ -103,16 +103,34 @@ (define-public udevil (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) @@ -919,9 +937,8 @@ (define-public xfe (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) @@ -939,17 +956,29 @@ (define-public xfe (arguments `(#:phases (modify-phases %standard-phases - (add-after 'unpack 'patch-xferc-path + (add-after 'unpack 'patch-xfe-paths (lambda* (#:key outputs #:allow-other-keys) - (let* ((out (assoc-ref outputs "out")) - (xferc (string-append out "/share/xfe/xferc"))) + (let* + ((out (assoc-ref outputs "out")) + (share (string-append out "/share")) + (xferc (string-append out "/share/xfe/xferc")) + (xfe-theme (string-append out "/share/xfe/icons/xfe-theme"))) + ;; Correct path for xfe registry. + (substitute* "src/foxhacks.cpp" + (("/etc:/usr/share:/usr/local/share") share)) + ;; Correct path for xfe configuration. (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"))))) + (("/usr/share/xfe/xferc") xferc) + (("/usr/local/share/xfe/xferc") xferc) + (("/opt/local/share/xfe/xferc") xferc)) + ;; Correct path for xfe icons. + (substitute* "src/xfedefs.h" + (((string-append + "~/.config/xfe/icons/xfe-theme:" + "/usr/local/share/xfe/icons/xfe-theme:" + "/usr/share/xfe/icons/xfe-theme")) + xfe-theme)) + #t)))))) (synopsis "File Manager for X-Based Graphical Systems") (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 diff --git a/gnu/packages/dns.scm b/gnu/packages/dns.scm index 00c99d90ad..7ac1611cbf 100644 --- a/gnu/packages/dns.scm +++ b/gnu/packages/dns.scm @@ -15,6 +15,7 @@ ;;; Copyright © 2019 Rutger Helling ;;; Copyright © 2020 Pierre Langlois ;;; Copyright © 2020 Arun Isaac +;;; Copyright © 2020 Leo Famulari ;;; ;;; This file is part of GNU Guix. ;;; @@ -878,22 +879,16 @@ (define-public hnsd (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 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 @@ (define-public omnitux (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 @@ (define-public fet `(("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/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm index d09df46eb3..af62e571a5 100644 --- a/gnu/packages/emacs-xyz.scm +++ b/gnu/packages/emacs-xyz.scm @@ -1323,33 +1323,32 @@ (define-public emacs-eww-lnum (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) @@ -2465,7 +2464,7 @@ (define-public emacs-d-mode (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") @@ -2478,7 +2477,7 @@ (define-public emacs-extempore-mode (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") @@ -7525,24 +7524,47 @@ (define-public emacs-gitlab-ci-mode 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.") @@ -13262,7 +13284,7 @@ (define-public emacs-org-auto-expand (define-public emacs-parsebib (package (name "emacs-parsebib") - (version "2.3.1") + (version "2.3.3") (source (origin (method git-fetch) @@ -13271,45 +13293,43 @@ (define-public emacs-parsebib (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 @@ -19529,9 +19549,9 @@ (define-public emacs-all-the-icons-dired (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)) @@ -19544,7 +19564,7 @@ (define-public emacs-exwm-edit (file-name (git-file-name name version)) (sha256 (base32 - "087pk5ckx753qrn6xpka9khhlp7iqlz76w7861x90av2f5cgy6fw")))) + "1z1ya9xgknka3dy3b3x8zzfkxdx5jqsi8q5aqkvxjxa6n7mmqdwv")))) (build-system emacs-build-system) (propagated-inputs `(("emacs-exwm" ,emacs-exwm))) @@ -21122,14 +21142,14 @@ (define-public emacs-doom-themes (define-public emacs-modus-operandi-theme (package (name "emacs-modus-operandi-theme") - (version "0.7.0") + (version "0.8.0") (source (origin (method url-fetch) (uri (string-append "https://elpa.gnu.org/packages/" "modus-operandi-theme-" version ".el")) (sha256 - (base32 "17zvcqplbl3rk39k61v43ganzv06j49rlyickanwll5m1a3iibw2")))) + (base32 "09lw556jphrxrmwxkwzfgd4r7ylz99m8awxka4sfj5sa8fbjb3g8")))) (build-system emacs-build-system) (home-page "https://gitlab.com/protesilaos/modus-themes") (synopsis "Accessible light theme (WCAG AAA)") @@ -21143,14 +21163,14 @@ (define-public emacs-modus-operandi-theme (define-public emacs-modus-vivendi-theme (package (name "emacs-modus-vivendi-theme") - (version "0.7.0") + (version "0.8.0") (source (origin (method url-fetch) (uri (string-append "https://elpa.gnu.org/packages/" "modus-vivendi-theme-" version ".el")) (sha256 - (base32 "1w4vrg39dghghkvll3h4kmzykc3zpp6pbychb39gcc13z2b06v8g")))) + (base32 "0hwkzbx7a9scdr589sb7hw90lsm8yxcn3y5xr3bpyxf8rkr2zl4c")))) (build-system emacs-build-system) (home-page "https://gitlab.com/protesilaos/modus-themes") (synopsis "Accessible dark theme (WCAG AAA)") 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 @@ (define-public retroarch (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/finance.scm b/gnu/packages/finance.scm index c31b87ec19..61d807190c 100644 --- a/gnu/packages/finance.scm +++ b/gnu/packages/finance.scm @@ -18,6 +18,7 @@ ;;; Copyright © 2020 Kei Kebreau ;;; Copyright © 2020 Christopher Lemmer Webber ;;; Copyright © 2020 Tom Zander +;;; Copyright © 2020 Marius Bakke ;;; ;;; This file is part of GNU Guix. ;;; @@ -197,7 +198,7 @@ (define-public homebank (define-public ledger (package (name "ledger") - (version "3.1.3") + (version "3.2.0") (source (origin (method git-fetch) @@ -206,16 +207,32 @@ (define-public ledger (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") diff --git a/gnu/packages/games.scm b/gnu/packages/games.scm index caa1e8d37c..624bb9b78e 100644 --- a/gnu/packages/games.scm +++ b/gnu/packages/games.scm @@ -4856,7 +4856,7 @@ (define-public kiki (define-public teeworlds (package (name "teeworlds") - (version "0.7.4") + (version "0.7.5") (source (origin (method git-fetch) (uri (git-reference @@ -4865,7 +4865,7 @@ (define-public teeworlds (file-name (git-file-name name version)) (sha256 (base32 - "1lxdb1k2cdj2421vyz1z0ximzfnpkh2y4y84zpn2gqsa1nzwbryb")) + "169dl83q08zl4h813az8hjs4rs3dms9yjn6bnsld4fjcj0imvvc6")) (modules '((guix build utils) (ice-9 ftw) (ice-9 regex) @@ -6176,7 +6176,7 @@ (define-public crispy-doom (package (inherit chocolate-doom) (name "crispy-doom") - (version "5.7.2") + (version "5.8.0") (source (origin (method git-fetch) (uri (git-reference @@ -6184,7 +6184,7 @@ (define-public crispy-doom (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) diff --git a/gnu/packages/gl.scm b/gnu/packages/gl.scm index 710c602a96..941d0adcca 100644 --- a/gnu/packages/gl.scm +++ b/gnu/packages/gl.scm @@ -12,6 +12,7 @@ ;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice ;;; Copyright © 2019 Pierre Neidhardt ;;; Copyright © 2020 Marius Bakke +;;; Copyright © 2020 Giacomo Leidi ;;; ;;; This file is part of GNU Guix. ;;; @@ -742,30 +743,34 @@ (define-public glfw (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/gnome.scm b/gnu/packages/gnome.scm index 0a034bec2d..cd986af643 100644 --- a/gnu/packages/gnome.scm +++ b/gnu/packages/gnome.scm @@ -3776,7 +3776,7 @@ (define-public libsecret (define-public five-or-more (package (name "five-or-more") - (version "3.32.1") + (version "3.32.2") (source (origin (method url-fetch) @@ -3784,7 +3784,7 @@ (define-public five-or-more (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 diff --git a/gnu/packages/guile-xyz.scm b/gnu/packages/guile-xyz.scm index 3ae7e9ff92..d97aacdf6b 100644 --- a/gnu/packages/guile-xyz.scm +++ b/gnu/packages/guile-xyz.scm @@ -23,7 +23,7 @@ ;;; Copyright © 2019 swedebugia ;;; Copyright © 2019, 2020 Amar Singh ;;; Copyright © 2019 Timothy Sample -;;; Copyright © 2019 Martin Becze +;;; Copyright © 2019, 2020 Martin Becze ;;; Copyright © 2020 Evan Straw ;;; ;;; This file is part of GNU Guix. @@ -1861,7 +1861,13 @@ (define-public guile-ncurses ("guile" ,guile-2.2))) (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 @@ -1876,8 +1882,8 @@ (define-public guile-ncurses (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") @@ -1886,6 +1892,14 @@ (define-public guile-ncurses library.") (license license:lgpl3+))) +(define-public guile3.0-ncurses + (package + (inherit guile-ncurses) + (name "guile3.0-ncurses") + (version "3.0") + (inputs `(("ncurses" ,ncurses) + ("guile" ,guile-3.0))))) + (define-public guile-ncurses/gpm (package (inherit guile-ncurses) @@ -1893,6 +1907,13 @@ (define-public guile-ncurses/gpm (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") diff --git a/gnu/packages/hardware.scm b/gnu/packages/hardware.scm index 114332455e..ce3f396d0a 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 ;;; Copyright © 2020 Jan (janneke) Nieuwenhuizen +;;; Copyright © 2020 Brice Waegeneire ;;; ;;; This file is part of GNU Guix. ;;; @@ -18,15 +19,24 @@ ;;; along with GNU Guix. If not, see . (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 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) @@ -344,3 +354,111 @@ (define-public rkdeveloptool "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 'configure 'patch-makefile + (lambda _ + ;; Do not create log directory. + (substitute* "Makefile" ((".*/log/usbguard.*") "")) + ;; Disable LDAP tests: they use 'sudo'. + (substitute* "src/Tests/Makefile.am" + (("WITH_LDAP") "FALSE")) + #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" + "--with-bundled-pegtl" + "--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) + ("polkit" ,polkit) + ("protobuf" ,protobuf) + ("libqb" ,libqb))) + (native-inputs + `(("asciidoc" ,asciidoc) + ("autoconf" ,autoconf) + ("automake" ,automake) + ("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..4785ebaca3 100644 --- a/gnu/packages/haskell-apps.scm +++ b/gnu/packages/haskell-apps.scm @@ -341,14 +341,14 @@ (define-public ghcid (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")) (sha256 - (base32 "0xy0ld7kr4cfdl4g4yzvrzl5r60dcj33cxm28a4qz6nqm2yhd4sv")))) + (base32 "19rggaymvqy7r61n2rl2nigwdi2hzq5l1afcd5l0k1vbacwgq4jl")))) (build-system haskell-build-system) (arguments `(#:configure-flags diff --git a/gnu/packages/jami.scm b/gnu/packages/jami.scm new file mode 100644 index 0000000000..dda787b3cd --- /dev/null +++ b/gnu/packages/jami.scm @@ -0,0 +1,361 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2019 Pierre Neidhardt +;;; Copyright © 2020 Vincent Legoll +;;; Copyright © 2019, 2020 Jan Wielkiewicz +;;; +;;; 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 . + +(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) + ;; 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)) diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm index 0f424ca828..8b8945fbea 100644 --- a/gnu/packages/linux.scm +++ b/gnu/packages/linux.scm @@ -4666,6 +4666,37 @@ (define-public f2fs-tools (inputs `(("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))))) + (inputs + `(("libuuid:static" ,util-linux "static") + ("libuuid" ,util-linux "lib")))))) ; for include files + (define-public freefall (package (name "freefall") diff --git a/gnu/packages/llvm.scm b/gnu/packages/llvm.scm index bda002e313..15e15281a7 100644 --- a/gnu/packages/llvm.scm +++ b/gnu/packages/llvm.scm @@ -14,6 +14,7 @@ ;;; Copyright © 2019 Arm Ltd ;;; Copyright © 2019 Mathieu Othacehe ;;; Copyright © 2019 Brett Gilio +;;; Copyright © 2020 Giacomo Leidi ;;; ;;; This file is part of GNU Guix. ;;; @@ -677,12 +678,16 @@ (define-public clang-3.5 #: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")))) diff --git a/gnu/packages/lxde.scm b/gnu/packages/lxde.scm index 9de96a21cb..a52e403106 100644 --- a/gnu/packages/lxde.scm +++ b/gnu/packages/lxde.scm @@ -27,6 +27,7 @@ (define-module (gnu packages lxde) #:use-module (gnu packages) + #:use-module (gnu packages admin) #:use-module (gnu packages autotools) #:use-module (gnu packages bash) #:use-module (gnu packages disk) @@ -279,7 +280,6 @@ (define-public spacefm `(("bash" ,bash) ("cairo" ,cairo) ("curlftpfs" ,curlftpfs) - ("dbus" ,dbus) ("eudev" ,eudev) ("fakeroot" ,fakeroot) ("ffmpegthumbnailer" ,ffmpegthumbnailer) @@ -288,6 +288,7 @@ (define-public spacefm ("gtk+" ,gtk+) ("ifuse" ,ifuse) ("jmtpfs" ,jmtpfs) + ("ktsuss" ,ktsuss) ("libx11" ,libx11) ("lsof" ,lsof) ("pango" ,pango) @@ -297,12 +298,31 @@ (define-public spacefm ("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-source-files + (lambda* (#:key inputs #:allow-other-keys) + ;; Patch config file to load programs correctly. + (substitute* "etc/spacefm.conf" + (("#terminal_su=/bin/su") + "terminal_su=/run/setuid-programs/sudo") + (("#graphical_su=/usr/bin/gksu") + (string-append "graphical_su=" + (string-append (assoc-ref inputs "ktsuss") + "/bin/ktsuss")))) + ;; SpaceFM expects udevil to have uid set to root. + ;; User has to manually add udevil to setuid-programs. + (substitute* "src/settings.c" + (("/usr/bin/udevil") + "/run/setuid-programs/udevil")) + #t))) + #:configure-flags (list + (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/mail.scm b/gnu/packages/mail.scm index 589b3e8839..ef3b3eb5f6 100644 --- a/gnu/packages/mail.scm +++ b/gnu/packages/mail.scm @@ -23,7 +23,7 @@ ;;; Copyright © 2017 Thomas Danckaert ;;; Copyright © 2017 Kyle Meyer ;;; Copyright © 2017, 2018, 2019, 2020 Tobias Geerinckx-Rice -;;; Copyright © 2017, 2018 Rene Saavedra +;;; Copyright © 2017, 2018, 2020 Rene Saavedra ;;; Copyright © 2018, 2019, 2020 Pierre Langlois ;;; Copyright © 2018 Alex Vong ;;; Copyright © 2018 Gábor Boskovits @@ -2752,14 +2752,14 @@ (define-public alpine (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 @@ -2777,7 +2777,7 @@ (define-public balsa `(("cyrus-sasl" ,cyrus-sasl) ("enchant" ,enchant) ("gdk-pixbuf" ,gdk-pixbuf) - ("gmime" ,gmime-2.6) + ("gmime" ,gmime) ("gnutls" ,gnutls) ("gpgme" ,gpgme) ("gtk+" ,gtk+) @@ -2785,7 +2785,9 @@ (define-public balsa ("gtkspell3" ,gtkspell3) ("libcanberra" ,libcanberra) ("libesmtp" ,libesmtp) + ("libical" ,libical) ("libnotify" ,libnotify) + ("libsecret" ,libsecret) ("openldap" ,openldap) ("sqlite" ,sqlite) ("webkitgtk" ,webkitgtk))) diff --git a/gnu/packages/music.scm b/gnu/packages/music.scm index 03510deeda..8738c1eeeb 100644 --- a/gnu/packages/music.scm +++ b/gnu/packages/music.scm @@ -27,6 +27,7 @@ ;;; Copyright © 2019, 2020 Alexandros Theodotou ;;; Copyright © 2020 Vincent Legoll ;;; Copyright © 2020 Lars-Dominik Braun +;;; Copyright © 2020 Giacomo Leidi ;;; ;;; This file is part of GNU Guix. ;;; @@ -625,63 +626,73 @@ (define-public easytag (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 @@ (define-public extempore ("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. @@ -1979,24 +1986,27 @@ (define-public portmidi (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 +2045,7 @@ (define-public python-pyportmidi (define-public frescobaldi (package (name "frescobaldi") - (version "3.1.1") + (version "3.1.2") (source (origin (method url-fetch) @@ -2043,7 +2053,7 @@ (define-public frescobaldi "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 +2066,7 @@ (define-public frescobaldi ("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 diff --git a/gnu/packages/networking.scm b/gnu/packages/networking.scm index 0962737536..76b0fc1559 100644 --- a/gnu/packages/networking.scm +++ b/gnu/packages/networking.scm @@ -33,7 +33,7 @@ ;;; Copyright © 2019 Brice Waegeneire ;;; Copyright © 2019 Tonton ;;; Copyright © 2019, 2020 Alex Griffin -;;; Copyright © 2019 Jan Wielkiewicz +;;; Copyright © 2019, 2020 Jan Wielkiewicz ;;; Copyright © 2019 Daniel Schaefer ;;; Copyright © 2019 Diego N. Barbato ;;; Copyright © 2020 Vincent Legoll @@ -426,6 +426,41 @@ (define-public cppzmq 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") @@ -2613,7 +2648,7 @@ (define-public restbed (define-public restinio (package (name "restinio") - (version "0.6.0.1") + (version "0.6.1.1") (source (origin (method git-fetch) (uri (git-reference @@ -2622,7 +2657,7 @@ (define-public restinio (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) @@ -2655,7 +2690,7 @@ (define-public restinio (define-public opendht (package (name "opendht") - (version "2.0.0beta2") + (version "2.0.0") (source (origin (method git-fetch) (uri (git-reference @@ -2664,7 +2699,7 @@ (define-public opendht (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/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/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: - ---- 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/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 -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/rdf.scm b/gnu/packages/rdf.scm index dec93ed97a..999c1e10f0 100644 --- a/gnu/packages/rdf.scm +++ b/gnu/packages/rdf.scm @@ -267,14 +267,14 @@ (define-public redland (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/telephony.scm b/gnu/packages/telephony.scm index 7de36a105f..56a2ecb73f 100644 --- a/gnu/packages/telephony.scm +++ b/gnu/packages/telephony.scm @@ -651,13 +651,17 @@ (define-public twinkle (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 +690,7 @@ (define-public pjproject (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))) @@ -734,278 +734,6 @@ (define-public pjproject 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))) - (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)) - (define-public libtgvoip (package (name "libtgvoip") diff --git a/gnu/packages/text-editors.scm b/gnu/packages/text-editors.scm index f2f675d148..072760ee10 100644 --- a/gnu/packages/text-editors.scm +++ b/gnu/packages/text-editors.scm @@ -757,14 +757,14 @@ (define-public texmacs (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") diff --git a/gnu/packages/upnp.scm b/gnu/packages/upnp.scm index c7ad33c17b..25b73189bc 100644 --- a/gnu/packages/upnp.scm +++ b/gnu/packages/upnp.scm @@ -4,6 +4,7 @@ ;;; Copyright © 2016, 2017, 2018, 2020 Tobias Geerinckx-Rice ;;; Copyright © 2018 Theodoros Foradis ;;; Copyright © 2019 Jens Mølgaard +;;; Copyright © 2020 Jan Wielkiewicz ;;; ;;; This file is part of GNU Guix. ;;; @@ -28,6 +29,7 @@ (define-module (gnu packages upnp) #: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,15 +94,21 @@ (define-public miniupnpc (define-public libupnp (package (name "libupnp") - (version "1.6.25") + (version "1.8.6") (source (origin - (method url-fetch) - (uri (string-append "mirror://sourceforge/pupnp/pupnp/libUPnP%20" - version "/" name "-" version ".tar.bz2")) + (method git-fetch) + (uri (git-reference + (url "https://github.com/pupnp/pupnp.git") + (commit (string-append "release-" version)))) (sha256 (base32 - "0hzsd7rvfa87b4hxg9yj4xhdfxx9sp09r9sqdl3mqhvmcyw018y5")))) + "1jlb6qh47513h2simy0zxia5q61w1c31mnwmjqpr2nf832lmnpk4")))) + (native-inputs + `(("autoconf" ,autoconf) + ("automake" ,automake) + ("libtool" ,libtool) + ("pkg-config" ,pkg-config))) (build-system gnu-build-system) (arguments ;; The tests require a network device capable of multicasting which is diff --git a/gnu/packages/video.scm b/gnu/packages/video.scm index 578468978c..41fba872c6 100644 --- a/gnu/packages/video.scm +++ b/gnu/packages/video.scm @@ -1191,7 +1191,7 @@ (define-public ffmpegthumbnailer (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 @@ (define-public vlc "/vlc-" version ".tar.xz")) (sha256 (base32 - "1xmxjpyzdhabchwncz6lvx3kzvl7fz9c42bkv3nbj68albs9w570")) - (patches - (search-patches - ;; TODO: The test "libvlc_slaves" fails. Applied upstream as - ;; . - ;; 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 @@ (define-public vlc ;; 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: - ;; - ;; - (substitute* "modules/access/sftp.c" - (("010801") "010900")) #t))) (add-after 'strip 'regenerate-plugin-cache (lambda* (#:key outputs #:allow-other-keys) diff --git a/gnu/packages/web-browsers.scm b/gnu/packages/web-browsers.scm index f4c95745b9..62b7a5bdca 100644 --- a/gnu/packages/web-browsers.scm +++ b/gnu/packages/web-browsers.scm @@ -338,7 +338,7 @@ (define-public lynx (define-public qutebrowser (package (name "qutebrowser") - (version "1.10.0") + (version "1.11.0") (source (origin (method url-fetch) @@ -347,7 +347,7 @@ (define-public qutebrowser "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/services/base.scm b/gnu/services/base.scm index 3a772d3121..d93796c5d8 100644 --- a/gnu/services/base.scm +++ b/gnu/services/base.scm @@ -1316,17 +1316,13 @@ (define syslog-service-type (documentation "Run the syslog daemon (syslogd).") (provision '(syslogd)) (requirement '(user-processes)) - (start #~(let ((spawn (make-forkexec-constructor - (list #$(syslog-configuration-syslogd config) - "--rcfile" - #$(syslog-configuration-config-file config)) - #:pid-file "/var/run/syslog.pid"))) - (lambda () - ;; Set the umask such that file permissions are #o640. - (let ((mask (umask #o137)) - (pid (spawn))) - (umask mask) - pid)))) + (start #~(make-forkexec-constructor + (list #$(syslog-configuration-syslogd config) + "--rcfile" + #$(syslog-configuration-config-file config)) + ;; Set the umask such that file permissions are #o640. + #:file-creation-mask #o137 + #:pid-file "/var/run/syslog.pid")) (stop #~(make-kill-destructor)))))) ;; Snippet adapted from the GNU inetutils manual. diff --git a/gnu/services/dns.scm b/gnu/services/dns.scm index a07946d085..478c837d13 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 ;;; Copyright © 2018 Oleg Pykhalov +;;; Copyright © 2020 Pierre Langlois ;;; ;;; This file is part of GNU Guix. ;;; @@ -748,6 +749,8 @@ (define-record-type* (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 +762,7 @@ (define dnsmasq-shepherd-service 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 +786,8 @@ (define dnsmasq-shepherd-service '()) #$@(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/system.scm b/gnu/system.scm index 861fdd7daa..99ce66aa4f 100644 --- a/gnu/system.scm +++ b/gnu/system.scm @@ -7,6 +7,7 @@ ;;; Copyright © 2019 Meiyo Peng ;;; Copyright © 2020 Danny Milosavljevic ;;; Copyright © 2020 Brice Waegeneire +;;; Copyright © 2020 Florian Pelz ;;; ;;; This file is part of GNU Guix. ;;; @@ -148,7 +149,8 @@ (define-module (gnu system) %base-packages-linux %base-packages-networking %base-packages-utils - %base-firmware)) + %base-firmware + %default-kernel-arguments)) ;;; Commentary: ;;; @@ -179,7 +181,7 @@ (define-record-type* operating-system (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) ; (label operating-system-label ; string (thunked) @@ -488,6 +490,17 @@ (define (package-for-kernel target-kernel module-package) ((#:linux kernel #f) target-kernel))))) +(define %default-modprobe-blacklist + ;; List of kernel modules to blacklist by default. + '("usbmouse" ;races with bcm5974, see + "usbkbd")) ;races with usbhid, see + +(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." diff --git a/gnu/system/install.scm b/gnu/system/install.scm index 822c4e3cfa..7166c12bcc 100644 --- a/gnu/system/install.scm +++ b/gnu/system/install.scm @@ -470,12 +470,6 @@ (define installation-os (label (string-append "GNU Guix installation " (package-version guix))) - ;; XXX: The AMD Radeon driver is reportedly broken, which makes kmscon - ;; non-functional: - ;; . - ;; 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. diff --git a/gnu/system/linux-initrd.scm b/gnu/system/linux-initrd.scm index 1aa3113ae5..d84f352663 100644 --- a/gnu/system/linux-initrd.scm +++ b/gnu/system/linux-initrd.scm @@ -275,6 +275,7 @@ (define file-system-type-modules ("btrfs" => '("btrfs")) ("iso9660" => '("isofs")) ("jfs" => '("jfs")) + ("f2fs" => '("f2fs" "crc32_generic")) (else '()))) (define (file-system-modules file-systems) diff --git a/guix/profiles.scm b/guix/profiles.scm index 2fecf3eb7d..25ff146bdf 100644 --- a/guix/profiles.scm +++ b/guix/profiles.scm @@ -1489,6 +1489,7 @@ (define man-directory ;; . #:env-vars `(("MALLOC_PERTURB_" . "1")) + #:substitutable? #f #:local-build? #t #:properties `((type . profile-hook)