diff options
Diffstat (limited to 'gnu')
38 files changed, 1977 insertions, 291 deletions
diff --git a/gnu/local.mk b/gnu/local.mk index 25b0dba5eb..722ccba746 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -21,7 +21,7 @@ # Copyright © 2018 Stefan Stefanović <stefanx2ovic@gmail.com> # Copyright © 2018 Maxim Cournoyer <maxim.cournoyer@gmail.com> # Copyright © 2019 Guillaume Le Vaillant <glv@posteo.net> -# Copyright © 2019 John Soo <jsoo1@asu.edu> +# Copyright © 2019, 2020 John Soo <jsoo1@asu.edu> # Copyright © 2019 Jonathan Brielmaier <jonathan.brielmaier@web.de> # Copyright © 2019 Evan Straw <evan.straw99@gmail.com> # Copyright © 2019 Brett Gilio <brettg@gnu.org> @@ -430,6 +430,7 @@ GNU_SYSTEM_MODULES = \ %D%/packages/pretty-print.scm \ %D%/packages/protobuf.scm \ %D%/packages/pure.scm \ + %D%/packages/purescript.scm \ %D%/packages/pv.scm \ %D%/packages/python.scm \ %D%/packages/python-check.scm \ @@ -1384,6 +1385,7 @@ dist_patch_DATA = \ %D%/packages/patches/psm-repro.patch \ %D%/packages/patches/pulseaudio-fix-mult-test.patch \ %D%/packages/patches/pulseaudio-longer-test-timeout.patch \ + %D%/packages/patches/purescript-relax-dependencies.patch \ %D%/packages/patches/pybugz-encode-error.patch \ %D%/packages/patches/pybugz-stty.patch \ %D%/packages/patches/pygpgme-disable-problematic-tests.patch \ diff --git a/gnu/packages/admin.scm b/gnu/packages/admin.scm index cd9901d5bf..9afd88919c 100644 --- a/gnu/packages/admin.scm +++ b/gnu/packages/admin.scm @@ -132,6 +132,7 @@ #:use-module (gnu packages xml) #:use-module (gnu packages xorg)) +;; This package uses su instead of sudo (because of SpaceFM). (define-public ktsuss (package (name "ktsuss") @@ -148,17 +149,13 @@ (file-name (git-file-name name version)))) (build-system glib-or-gtk-build-system) (arguments - `(#:configure-flags - (list "--enable-sudo=yes") - #:phases + `(#:phases (modify-phases %standard-phases (add-after 'unpack 'patch-file-names (lambda _ (substitute* "configure.ac" (("supath=`which su 2>/dev/null`") - "supath=/run/setuid-programs/su") - (("sudopath=`which sudo 2>/dev/null`") - "sudopath=/run/setuid-programs/sudo")) + "supath=/run/setuid-programs/su")) #t))))) (native-inputs `(("autoconf" ,autoconf) diff --git a/gnu/packages/aux-files/run-in-namespace.c b/gnu/packages/aux-files/run-in-namespace.c index 160f7da1c8..23e7875173 100644 --- a/gnu/packages/aux-files/run-in-namespace.c +++ b/gnu/packages/aux-files/run-in-namespace.c @@ -42,13 +42,21 @@ #include <dirent.h> #include <sys/syscall.h> +/* Like 'malloc', but abort if 'malloc' returns NULL. */ +static void * +xmalloc (size_t size) +{ + void *result = malloc (size); + assert (result != NULL); + return result; +} + /* Concatenate DIRECTORY, a slash, and FILE. Return the result, which the caller must eventually free. */ static char * concat (const char *directory, const char *file) { - char *result = malloc (strlen (directory) + 2 + strlen (file)); - assert (result != NULL); + char *result = xmalloc (strlen (directory) + 2 + strlen (file)); strcpy (result, directory); strcat (result, "/"); @@ -211,6 +219,83 @@ disallow_setgroups (pid_t pid) close (fd); } +/* Run the wrapper program in a separate mount user namespace. Return only + upon failure. */ +static void +exec_in_user_namespace (const char *store, int argc, char *argv[]) +{ + /* Spawn @WRAPPED_PROGRAM@ in a separate namespace where STORE is + bind-mounted in the right place. */ + int err; + char *new_root = mkdtemp (strdup ("/tmp/guix-exec-XXXXXX")); + char *new_store = concat (new_root, "@STORE_DIRECTORY@"); + char *cwd = get_current_dir_name (); + + /* Create a child with separate namespaces and set up bind-mounts from + there. That way, bind-mounts automatically disappear when the child + exits, which simplifies cleanup for the parent. Note: clone is more + convenient than fork + unshare since the parent can directly write + the child uid_map/gid_map files. */ + pid_t child = syscall (SYS_clone, SIGCHLD | CLONE_NEWNS | CLONE_NEWUSER, + NULL, NULL, NULL); + switch (child) + { + case 0: + /* Note: Due to <https://bugzilla.kernel.org/show_bug.cgi?id=183461> + we cannot make NEW_ROOT a tmpfs (which would have saved the need + for 'rm_rf'.) */ + bind_mount ("/", new_root); + mkdir_p (new_store); + err = mount (store, new_store, "none", MS_BIND | MS_REC | MS_RDONLY, + NULL); + if (err < 0) + assert_perror (errno); + + chdir (new_root); + err = chroot (new_root); + if (err < 0) + assert_perror (errno); + + /* Change back to where we were before chroot'ing. */ + chdir (cwd); + + int err = execv ("@WRAPPED_PROGRAM@", argv); + if (err < 0) + assert_perror (errno); + break; + + case -1: + /* Failure: user namespaces not supported. */ + fprintf (stderr, "%s: error: 'clone' failed: %m\n", argv[0]); + rm_rf (new_root); + break; + + default: + { + /* Map the current user/group ID in the child's namespace (the + default is to get the "overflow UID", i.e., the UID of + "nobody"). We must first disallow 'setgroups' for that + process. */ + disallow_setgroups (child); + write_id_map (child, "uid_map", getuid ()); + write_id_map (child, "gid_map", getgid ()); + + int status; + waitpid (child, &status, 0); + chdir ("/"); /* avoid EBUSY */ + rm_rf (new_root); + free (new_root); + + if (WIFEXITED (status)) + exit (WEXITSTATUS (status)); + else + /* Abnormal termination cannot really be reproduced, so exit + with 255. */ + exit (255); + } + } +} + #ifdef PROOT_PROGRAM @@ -221,7 +306,7 @@ exec_with_proot (const char *store, int argc, char *argv[]) { int proot_specific_argc = 4; int proot_argc = argc + proot_specific_argc; - char *proot_argv[proot_argc], *proot; + char *proot_argv[proot_argc + 1], *proot; char bind_spec[strlen (store) + 1 + sizeof "@STORE_DIRECTORY@"]; strcpy (bind_spec, store); @@ -277,81 +362,23 @@ main (int argc, char *argv[]) if (strcmp (store, "@STORE_DIRECTORY@") != 0 && lstat ("@WRAPPED_PROGRAM@", &statbuf) != 0) { - /* Spawn @WRAPPED_PROGRAM@ in a separate namespace where STORE is - bind-mounted in the right place. */ - int err; - char *new_root = mkdtemp (strdup ("/tmp/guix-exec-XXXXXX")); - char *new_store = concat (new_root, "@STORE_DIRECTORY@"); - char *cwd = get_current_dir_name (); - - /* Create a child with separate namespaces and set up bind-mounts from - there. That way, bind-mounts automatically disappear when the child - exits, which simplifies cleanup for the parent. Note: clone is more - convenient than fork + unshare since the parent can directly write - the child uid_map/gid_map files. */ - pid_t child = syscall (SYS_clone, SIGCHLD | CLONE_NEWNS | CLONE_NEWUSER, - NULL, NULL, NULL); - switch (child) - { - case 0: - /* Note: Due to <https://bugzilla.kernel.org/show_bug.cgi?id=183461> - we cannot make NEW_ROOT a tmpfs (which would have saved the need - for 'rm_rf'.) */ - bind_mount ("/", new_root); - mkdir_p (new_store); - err = mount (store, new_store, "none", MS_BIND | MS_REC | MS_RDONLY, - NULL); - if (err < 0) - assert_perror (errno); - - chdir (new_root); - err = chroot (new_root); - if (err < 0) - assert_perror (errno); - - /* Change back to where we were before chroot'ing. */ - chdir (cwd); - break; + /* Buffer stderr so that nothing's displayed if 'exec_in_user_namespace' + fails but 'exec_with_proot' works. */ + static char stderr_buffer[4096]; + setvbuf (stderr, stderr_buffer, _IOFBF, sizeof stderr_buffer); - case -1: - rm_rf (new_root); + exec_in_user_namespace (store, argc, argv); #ifdef PROOT_PROGRAM - exec_with_proot (store, argc, argv); + exec_with_proot (store, argc, argv); #else - fprintf (stderr, "%s: error: 'clone' failed: %m\n", argv[0]); - fprintf (stderr, "\ + fprintf (stderr, "\ This may be because \"user namespaces\" are not supported on this system.\n\ Consequently, we cannot run '@WRAPPED_PROGRAM@',\n\ unless you move it to the '@STORE_DIRECTORY@' directory.\n\ \n\ Please refer to the 'guix pack' documentation for more information.\n"); #endif - return EXIT_FAILURE; - - default: - { - /* Map the current user/group ID in the child's namespace (the - default is to get the "overflow UID", i.e., the UID of - "nobody"). We must first disallow 'setgroups' for that - process. */ - disallow_setgroups (child); - write_id_map (child, "uid_map", getuid ()); - write_id_map (child, "gid_map", getgid ()); - - int status; - waitpid (child, &status, 0); - chdir ("/"); /* avoid EBUSY */ - rm_rf (new_root); - free (new_root); - - if (WIFEXITED (status)) - exit (WEXITSTATUS (status)); - else - /* Abnormal termination cannot really be reproduced, so exit - with 255. */ - exit (255); - } - } + return EXIT_FAILURE; } /* The executable is available under @STORE_DIRECTORY@, so we can now diff --git a/gnu/packages/base.scm b/gnu/packages/base.scm index 9899067544..5ea129a9ae 100644 --- a/gnu/packages/base.scm +++ b/gnu/packages/base.scm @@ -1274,6 +1274,15 @@ command.") (outputs '("out")) (propagated-inputs `(("gnumach-headers" ,gnumach-headers) ("hurd-headers" ,hurd-headers))) + (native-inputs + `(("mig" ,(if (%current-target-system) + ;; XXX: When targeting i586-pc-gnu, we need a 32-bit MiG, + ;; hence this hack. + (package + (inherit mig) + (arguments `(#:system "i686-linux"))) + mig)) + ,@(package-native-inputs glibc))) (arguments (substitute-keyword-arguments (package-arguments glibc) ;; We just pass the flags really needed to build the headers. diff --git a/gnu/packages/commencement.scm b/gnu/packages/commencement.scm index f74be83912..59ef5d078b 100644 --- a/gnu/packages/commencement.scm +++ b/gnu/packages/commencement.scm @@ -3891,6 +3891,9 @@ binaries, plus debugging symbols in the @code{debug} output), and Binutils.") (define-public gcc-toolchain-9 (make-gcc-toolchain gcc-9)) +(define-public gcc-toolchain-10 + (make-gcc-toolchain gcc-10)) + ;; Provide the Fortran toolchain package only for the version of gfortran that ;; is used by Guix internally to build Fortran libraries, because combining ;; code compiled with different versions can cause problems. diff --git a/gnu/packages/cpp.scm b/gnu/packages/cpp.scm index 2248ebfc4b..371927e4c6 100644 --- a/gnu/packages/cpp.scm +++ b/gnu/packages/cpp.scm @@ -9,6 +9,7 @@ ;;; Copyright © 2020 Nicolò Balzarotti <nicolo@nixo.xyz> ;;; Copyright © 2020 Roel Janssen <roel@gnu.org> ;;; Copyright © 2020 Ricardo Wurmus <rekado@elephly.net> +;;; Copyright © 2020 Brice Waegeneire <brice@waegenei.re> ;;; ;;; This file is part of GNU Guix. ;;; @@ -485,3 +486,24 @@ point and then, after each tween step, plugging back the result.") augment the C++ standard library. The Abseil library code is collected from Google's C++ code base.") (license license:asl2.0))) + +(define-public pegtl + (package + (name "pegtl") + (version "2.8.3") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/taocpp/PEGTL.git") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "17crgjfdx55imi2dqnz6xpvsxq07390yfgkz5nd2g77ydkvq9db3")))) + (build-system cmake-build-system) + (home-page "https://github.com/taocpp/PEGTL") + (synopsis "Parsing Expression Grammar template library") + (description "The Parsing Expression Grammar Template Library (PEGTL) is +a zero-dependency C++ header-only parser combinator library for creating +parsers according to a Parsing Expression Grammar (PEG).") + (license license:expat))) diff --git a/gnu/packages/disk.scm b/gnu/packages/disk.scm index 1b98da8dc4..0e35ef7de1 100644 --- a/gnu/packages/disk.scm +++ b/gnu/packages/disk.scm @@ -87,6 +87,42 @@ #:use-module ((guix licenses) #:prefix license:) #:use-module (guix packages)) +(define-public fsarchiver + (package + (name "fsarchiver") + (version "0.8.5") + (source + (origin + (method git-fetch) + (uri + (git-reference + (url "https://github.com/fdupoux/fsarchiver.git") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 "1rvwq5v3rl14bqxjm1ibfapyicf0sa44nw7451v10kx39lp56ylp")))) + (build-system gnu-build-system) + (native-inputs + `(("autoconf" ,autoconf) + ("automake" ,automake) + ("pkg-config" ,pkg-config))) + (inputs + `(("bzip2" ,bzip2) + ("e2fsprogs" ,e2fsprogs) + ("libgcrypt" ,libgcrypt) + ("lz4" ,lz4) + ("lzo" ,lzo) + ("util-linux" ,util-linux "lib") + ("xz" ,xz) + ("zlib" ,zlib) + ("zstd:lib" ,zstd "lib"))) + (synopsis "Filesystem Backup/Deployment Tool") + (description "FSArchiver allows you to save the contents of a file-system to +a compressed archive file. The file-system can be restored on a partition which +has a different size and it can be restored on a different file-system.") + (home-page "http://www.fsarchiver.org/") + (license license:gpl2))) + (define-public udevil (package (name "udevil") diff --git a/gnu/packages/display-managers.scm b/gnu/packages/display-managers.scm index 9c8b9553c4..c96b693dc3 100644 --- a/gnu/packages/display-managers.scm +++ b/gnu/packages/display-managers.scm @@ -6,6 +6,7 @@ ;;; Copyright © 2017 Sou Bunnbu <iyzsong@gmail.com> ;;; Copyright © 2017 Marius Bakke <mbakke@fastmail.com> ;;; Copyright © 2017, 2020 Tobias Geerinckx-Rice <me@tobias.gr> +;;; Copyright © 2020 L p R n d n <guix@lprndn.info> ;;; ;;; This file is part of GNU Guix. ;;; @@ -125,16 +126,15 @@ create smooth, animated user interfaces.") (define-public lightdm (package (name "lightdm") - (version "1.24.0") + (version "1.30.0") (source (origin (method url-fetch) - (uri (string-append "https://launchpad.net/lightdm/" - (version-major+minor version) "/" - version "/+download/lightdm-" - version ".tar.xz")) + (uri (string-append + "https://github.com/CanonicalLtd/lightdm/releases/download/" + version "/lightdm-" version ".tar.xz")) (sha256 (base32 - "18j33bm54i8k7ncxcs69zqi4105s62n58jrydqn3ikrb71s9nl6d")))) + "158zb2d0v1309a8v19hh32y4yj3v6yg4yg6m0l7v59d3a2b7f651")))) (build-system gnu-build-system) (arguments '(#:parallel-tests? #f ; fails when run in parallel @@ -153,12 +153,6 @@ create smooth, animated user interfaces.") (substitute* "src/seat.c" (("/bin/sh") (which "sh"))) #t)) - (add-after 'unpack 'disable-broken-tests - (lambda _ - (substitute* "tests/Makefile.in" - (("test-sessions-gobject ") "") - ((" test-sessions-python ") " ")) - #t)) (add-before 'check 'pre-check ;; Run test-suite under a dbus session. (lambda* (#:key inputs #:allow-other-keys) @@ -181,6 +175,7 @@ create smooth, animated user interfaces.") ("pkg-config" ,pkg-config) ("itstool" ,itstool) ("intltool" ,intltool) + ("vala" ,vala) ;for Vala bindings ;; For tests ("dbus" ,dbus) ("python" ,python-2) @@ -210,12 +205,44 @@ display manager which supports different greeters.") (base32 "1g7wc3d3vqfa7mrdhx1w9ywydgjbffla6rbrxq9k3sc62br97qms")))) (build-system gnu-build-system) + (arguments + `(#:configure-flags + (list (string-append "--enable-at-spi-command=" + (assoc-ref %build-inputs "at-spi2-core") + "/libexec/at-spi-bus-launcher")) + #:phases + (modify-phases %standard-phases + (add-after 'install 'fix-.desktop-file + (lambda* (#:key outputs #:allow-other-keys) + (let ((out (assoc-ref outputs "out"))) + (substitute* (string-append + out "/share/xgreeters/lightdm-gtk-greeter.desktop") + (("Exec=lightdm-gtk-greeter") + (string-append "Exec=" out "/sbin/lightdm-gtk-greeter"))) + #t))) + (add-after 'fix-.desktop-file 'wrap-program + ;; Mimic glib-or-gtk build system + ;; which doesn't wrap files in /sbin + (lambda* (#:key outputs inputs #:allow-other-keys) + (let ((gtk (assoc-ref inputs "gtk+"))) + (wrap-program (string-append (assoc-ref outputs "out") + "/sbin/lightdm-gtk-greeter") + `("XDG_DATA_DIRS" ":" prefix + ,(cons "/run/current-system/profile/share" + (map (lambda (pkg) + (string-append (assoc-ref inputs pkg) "/share")) + '("gtk+" "shared-mime-info" "glib")))) + `("GTK_PATH" ":" prefix (,gtk)) + `("GIO_EXTRA_MODULES" ":" prefix (,gtk)))) + #t))))) (native-inputs `(("exo" ,exo) ("intltool" ,intltool) ("pkg-config" ,pkg-config))) (inputs `(("lightdm" ,lightdm) + ("shared-mime-info" ,shared-mime-info) + ("at-spi2-core" ,at-spi2-core) ("gtk+" ,gtk+))) (synopsis "GTK+ greeter for LightDM") (home-page "https://launchpad.net/lightdm-gtk-greeter") diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm index c02535df78..6356233460 100644 --- a/gnu/packages/emacs-xyz.scm +++ b/gnu/packages/emacs-xyz.scm @@ -20155,6 +20155,43 @@ well as an option for visually flashing evaluated s-expressions.") SSH servers.") (license license:gpl3+))) +(define-public emacs-tramp + (package + (name "emacs-tramp") + (version "2.4.3.4") + (source + (origin + (method url-fetch) + (uri (string-append "https://elpa.gnu.org/packages/" + "tramp-" version ".tar")) + (sha256 + (base32 "01il42xb6s38qnb7bhn9d7gscc5p5y4da5a4dp1i1cyi823sfp8f")))) + (build-system emacs-build-system) + (arguments + `(#:emacs ,emacs ;need D-Bus + #:phases + (modify-phases %standard-phases + ;; All but one "/bin/" directory refer to remote + ;; environments, which may not be Guix. Do not patch them + ;; blindly. However, local encoding shell has to be patched. + (replace 'patch-el-files + (lambda* (#:key inputs #:allow-other-keys) + (let ((sh (assoc-ref inputs "bash")) + (file "tramp.el")) + (emacs-substitute-variables file + ("tramp-encoding-shell" (string-append sh "/bin/sh")))) + #t))))) + (inputs + `(("bash" ,bash))) + (home-page "https://savannah.gnu.org/projects/tramp") + (synopsis "Remote file editing package for Emacs") + (description + "Tramp stands for ``Transparent Remote (file) Access, Multiple +Protocol''. This package provides remote file editing, using +a combination of @command{rsh} and @command{rcp} or other work-alike +programs, such as @command{ssh} and @command{scp}.") + (license license:gpl3+))) + (define-public emacs-tramp-auto-auth (let ((commit "f15a12dfab651aff60f4a9d70f868030a12344ac")) (package diff --git a/gnu/packages/file-systems.scm b/gnu/packages/file-systems.scm index cc2ae2447e..281cdc78a9 100644 --- a/gnu/packages/file-systems.scm +++ b/gnu/packages/file-systems.scm @@ -48,6 +48,7 @@ #:use-module (gnu packages linux) #:use-module (gnu packages nfs) #:use-module (gnu packages onc-rpc) + #:use-module (gnu packages photo) #:use-module (gnu packages pkg-config) #:use-module (gnu packages python) #:use-module (gnu packages readline) @@ -56,6 +57,33 @@ #:use-module (gnu packages valgrind) #:use-module (gnu packages xml)) +(define-public gphotofs + (package + (name "gphotofs") + (version "0.5.0") + (source + (origin + (method url-fetch) + (uri + (string-append "mirror://sourceforge/gphoto/gphotofs/" version + "/gphotofs-0.5.tar.gz")) + (sha256 + (base32 + "04slwhr6ap9xcc27wphk22ad8yn79ngyy5z10lxams3k5liahvc2")))) + (build-system gnu-build-system) + (native-inputs + `(("pkg-config" ,pkg-config))) + (inputs + `(("fuse" ,fuse) + ("glib" ,glib) + ("libgphoto2" ,libgphoto2))) + (synopsis "Virtual filesystem for libgphoto2 using FUSE") + (description "GPhotoFS is a FUSE filesystem module to mount your camera as +a filesystem on Linux. This allow using your camera with any tool able to read +from a mounted filesystem.") + (home-page "http://www.gphoto.org/proj/gphotofs/") + (license license:gpl2+))) + (define-public bcachefs-tools (let ((commit "ab2f1ec24f5307b0cf1e3c4ad19bf350d9f54d9f") (revision "0")) diff --git a/gnu/packages/freedesktop.scm b/gnu/packages/freedesktop.scm index 8a0bb941de..6d657815f4 100644 --- a/gnu/packages/freedesktop.scm +++ b/gnu/packages/freedesktop.scm @@ -7,6 +7,7 @@ ;;; Copyright © 2015 David Hashe <david.hashe@dhashe.com> ;;; Copyright © 2016, 2017, 2019 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2016 Kei Kebreau <kkebreau@posteo.net> +;;; Copyright © 2017 Nikita <nikita@n0.is> ;;; Copyright © 2017, 2018 Mark H Weaver <mhw@netris.org> ;;; Copyright © 2017, 2018, 2019, 2020 Marius Bakke <mbakke@fastmail.com> ;;; Copyright © 2017, 2018, 2019 Rutger Helling <rhelling@mykolab.com> @@ -1688,3 +1689,74 @@ Its features include: @end itemize ") (license license:expat))) + +(define-public plymouth + (package + (name "plymouth") + (version "0.9.4") + (source + (origin + (method url-fetch) + (uri (string-append "https://www.freedesktop.org/software/" + "plymouth/releases/" name "-" version ".tar.xz")) + (sha256 + (base32 + "0l8kg7b2vfxgz9gnrn0v2w4jvysj2cirp0nxads5sy05397pl6aa")))) + (build-system gnu-build-system) + (arguments + `(#:configure-flags + (list (string-append "--with-logo=" + "/etc/plymouth/logo.png") + (string-append "--with-background-color=" + "0x00ff00") + (string-append "--with-background-start-color-stop=" + "0xff0000") + (string-append "--with-background-end-color-stop=" + "0x0000ff") + "--localstatedir=/var" + "--with-boot-tty=/dev/console" + "--without-system-root-install" + "--without-rhgb-compat-link" + "--enable-drm" + "--disable-systemd-integration" + ;; Disable GTK to dramatically reduce the closure + ;; size from ~800 MiB to a little more than 200 MiB + "--disable-gtk") + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'make-reproducible + (lambda _ + (substitute* "src/main.c" + (("__DATE__") "\"guix\"")) + #t)) + (add-before 'configure 'fix-docbook + (lambda* (#:key inputs #:allow-other-keys) + (substitute* "docs/Makefile.in" + (("http://docbook.sourceforge.net/release/xsl/current/manpages/docbook.xsl") + (string-append (assoc-ref inputs "docbook-xsl") + "/xml/xsl/docbook-xsl-" + ,(package-version docbook-xsl) + "/manpages/docbook.xsl"))) + (setenv "XML_CATALOG_FILES" + (string-append (assoc-ref inputs "docbook-xml") + "/xml/dtd/docbook/catalog.xml")) + #t))))) + (inputs + `(("glib" ,glib) + ("pango" ,pango) + ("libdrm" ,libdrm) + ("libpng" ,libpng) + ("eudev" ,eudev))) + (native-inputs + `(("pkg-config" ,pkg-config) + ("libxslt" ,libxslt) + ("docbook-xsl" ,docbook-xsl) + ("docbook-xml" ,docbook-xml))) + (synopsis "Graphical boot animation (splash) and logger") + (home-page "https://www.freedesktop.org/wiki/Software/Plymouth/") + (description + "Plymouth is an application that runs very early in the boot process and +that provides a graphical boot animation while the boot process happens in the +background. You are not supposed to install this on your own, it is only +useful with system integration.") + (license license:gpl2+))) diff --git a/gnu/packages/game-development.scm b/gnu/packages/game-development.scm index d3402718f7..26aa4f714b 100644 --- a/gnu/packages/game-development.scm +++ b/gnu/packages/game-development.scm @@ -2246,7 +2246,13 @@ utilities frequently used in roguelikes.") (base32 "0xv2yycr43p3xmq7lm6j6zb3cpcr6w00x7qg918faq0mw9j7v48g")) ;; Issue reported here: https://github.com/Warsow/qfusion/issues/46 - (patches (search-patches "warsow-qfusion-fix-bool-return-type.patch")))) + (patches (search-patches "warsow-qfusion-fix-bool-return-type.patch")) + (modules '((guix build utils))) + (snippet '(begin + (delete-file-recursively "platforms") + (delete-file-recursively "debian") + (delete-file-recursively "libsrcs") + #t)))) (build-system cmake-build-system) (arguments `(#:tests? #f ; No tests. diff --git a/gnu/packages/gcc.scm b/gnu/packages/gcc.scm index 65664828cf..0c5be69fbf 100644 --- a/gnu/packages/gcc.scm +++ b/gnu/packages/gcc.scm @@ -564,6 +564,20 @@ It also includes runtime support libraries for these languages."))) "gcc-9-asan-fix-limits-include.patch" "gcc-5.0-libvtv-runpath.patch")))))) +(define-public gcc-10 + (package + (inherit gcc-8) + (version "10.1.0") + (source (origin + (method url-fetch) + (uri (string-append "mirror://gnu/gcc/gcc-" + version "/gcc-" version ".tar.xz")) + (sha256 + (base32 + "18kyds3ss4j7in8shlsbmjafdhin400mq739d0dnyrabhhiqm2dn")) + (patches (search-patches "gcc-9-strmov-store-file-names.patch" + "gcc-5.0-libvtv-runpath.patch")))))) + ;; Note: When changing the default gcc version, update ;; the gcc-toolchain-* definitions and the gfortran definition ;; accordingly. diff --git a/gnu/packages/gnuzilla.scm b/gnu/packages/gnuzilla.scm index 9b3d6381a0..8a926681e0 100644 --- a/gnu/packages/gnuzilla.scm +++ b/gnu/packages/gnuzilla.scm @@ -6,12 +6,14 @@ ;;; Copyright © 2016, 2017, 2018, 2019 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2016 Alex Griffin <a@ajgrf.com> ;;; Copyright © 2017 Clément Lassieur <clement@lassieur.org> -;;; Copyright © 2017 ng0 <ng0@n0.is> +;;; Copyright © 2017, 2018 Nikita <nikita@n0.is> ;;; Copyright © 2017, 2018, 2020 Tobias Geerinckx-Rice <me@tobias.gr> -;;; Copyright © 2018 Ricardo Wurmus <rekado@elephly.net> +;;; Copyright © 2018, 2020 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2019 Ivan Petkov <ivanppetkov@gmail.com> ;;; Copyright © 2020 Oleg Pykhalov <go.wigust@gmail.com> ;;; Copyright © 2020 Jakub Kądziołka <kuba@kadziolka.net> +;;; Copyright © 2019, 2020 Adrian Malacoda <malacoda@monarch-pass.net> +;;; Copyright © 2020 Jonathan Brielmaier <jonathan.brielmaier@web.de> ;;; ;;; This file is part of GNU Guix. ;;; @@ -1132,6 +1134,302 @@ standards of the IceCat project.") (cpe-name . "firefox_esr") (cpe-version . ,(first (string-split version #\-))))))) +;; Update this together with icecat! +(define %icedove-build-id "20200505000000") ;must be of the form YYYYMMDDhhmmss +(define-public icedove + (package + (name "icedove") + (version "68.8.0") + (source icecat-source) + (properties + `((cpe-name . "thunderbird_esr"))) + (build-system gnu-build-system) + (arguments + `(#:tests? #f ; no check target + #:imported-modules ,%cargo-utils-modules ;for `generate-all-checksums' + #:modules ((guix build utils) ;find-files + (sxml simple) + (ice-9 regex) + ,@%gnu-build-system-modules) + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'prepare-thunderbird-sources + (lambda* (#:key inputs #:allow-other-keys) + (mkdir "comm") + (copy-recursively (assoc-ref inputs "thunderbird-sources") + "comm") + (delete-file-recursively "obj-x86_64-pc-linux-gnu") + (delete-file "sourcestamp.txt") + #t)) + (add-after 'patch-source-shebangs 'patch-cargo-checksums + (lambda _ + (use-modules (guix build cargo-utils)) + (let ((null-hash "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855")) + (substitute* '("Cargo.lock" "gfx/wr/Cargo.lock") + (("(\"checksum .* = )\".*\"" all name) + (string-append name "\"" null-hash "\""))) + (generate-all-checksums "third_party/rust")) + #t)) + ;; Fixes issue where each installation directory generates its own profile. + ;; See e.g. https://trac.torproject.org/projects/tor/ticket/31457 + (add-after 'patch-source-shebangs 'fix-profile-setting + (lambda _ + (substitute* "comm/mail/moz.configure" + (("'MOZ_DEDICATED_PROFILES', True") + "'MOZ_DEDICATED_PROFILES', False")) + #t)) + (add-after 'prepare-thunderbird-sources 'rename-to-icedove + (lambda _ + (substitute* "comm/mail/confvars.sh" + (("MOZ_APP_BASENAME=Thunderbird") + "MOZ_APP_BASENAME=Icedove\nMOZ_APP_DISPLAYNAME=Icedove") + (("MOZ_APP_NAME=thunderbird") + "MOZ_APP_NAME=icedove") + (("MOZ_UPDATER=1") + "MOZ_UPDATER=0")) + ;; Remove branding to comply with Mozilla's trademark policy + (with-directory-excursion "comm/mail/branding/nightly" + (delete-file "content/about-wordmark.svg") + (call-with-output-file "content/about-wordmark.svg" + (lambda (port) + (sxml->xml '(svg (@ (xmlns "http://www.w3.org/2000/svg") + (viewBox "0 0 789.1 90.78") + (width "333") + (height "48") + (fill "#fff")) + (text (@ (x "400") (y "70") + (text-anchor "middle") + (font-size "90")) + "Icedove Daily")) + port))) + (substitute* '("locales/en-US/brand.properties" + "locales/en-US/brand.ftl" + "locales/en-US/brand.dtd" + "configure.sh") + (("Thunderbird") "Icedove") + (("mozilla.org") "guix.gnu.org"))) + ;; Remove other mentions of Thunderbird in user-visible text. + (with-directory-excursion "comm/mail/base/content" + (substitute* '("newInstallPage.xhtml" + "overrides/app-license-name.html" + "newInstall.xul") + (("Thunderbird") "Icedove"))) + (with-directory-excursion "comm/mail/components/" + (substitute* '("mailGlue.js" + "extensions/schemas/addressBook.json" + "extensions/schemas/tabs.json" + "extensions/schemas/cloudFile.json" + "extensions/schemas/chrome_settings_overrides.json" + "extensions/schemas/windows.json" + "extensions/parent/ext-mail.js" + "im/messages/mail/Info.plist" + "enterprisepolicies/moz.build" + "enterprisepolicies/helpers/moz.build" + "enterprisepolicies/schemas/moz.build" + "preferences/chat.inc.xul") + (("Thunderbird") "Icedove"))) + (substitute* "comm/calendar/lightning/lightning-packager.mk" + (("ifeq \\(thunderbird") + "ifeq (icedove")) + (substitute* '("comm/mailnews/base/prefs/content/accountUtils.js" + "comm/mailnews/extensions/newsblog/content/feed-subscriptions.js" + "comm/common/src/customizeToolbar.js") + (("AppConstants.MOZ_APP_NAME (.)= \"thunderbird" _ e) + (format #f "AppConstants.MOZ_APP_NAME ~a= \"icedove" e))) + + ;; Override addon URLs and settings + (substitute* "comm/mail/app/profile/all-thunderbird.js" + (("(pref\\(\"extensions.webservice.discoverURL\").*" _ m) + (string-append m ", \"https://directory.fsf.org/wiki/Icedove\");")) + (("(pref\\(\"extensions.getAddons.search.url\").*" _ m) + (string-append m ", \"https://guix.gnu.org/packages\");")) + (("(pref\\(\"extensions.update.enabled\").*" _ m) + (string-append m ", false);")) + (("(pref\\(\"extensions.systemAddon.update.enabled\").*" _ m) + (string-append m ", false);")) + (("(pref\\(\"lightweightThemes.update.enabled\").*" _ m) + (string-append m ", false);"))) + #t)) + (add-after 'build 'neutralize-store-references + (lambda _ + ;; Mangle the store references to compilers & other build tools in + ;; about:buildconfig, reducing Icedove's closure significant. + ;; The resulting files are saved in lib/thunderbird/omni.ja + (substitute* + ;; Use find because the path "obj-x86_64-pc-linux-gnu" contains + ;; the architecture and the system -> more complicated. + (find-files "." "buildconfig.html") + (((format #f "(~a/)([0-9a-df-np-sv-z]{32})" + (regexp-quote (%store-directory))) + _ store hash) + (string-append store + (string-take hash 8) + "<!-- Guix: not a runtime dependency -->" + (string-drop hash 8)))) + #t)) + (replace 'configure + (lambda* (#:key inputs outputs configure-flags #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (bash (which "bash")) + (abs-srcdir (getcwd)) + (srcdir (string-append "../" (basename abs-srcdir))) + (flags `(,(string-append "--prefix=" out) + ,@configure-flags)) + (mozconfig (string-append (getcwd) "/.mozconfig"))) + (setenv "SHELL" bash) + (setenv "AUTOCONF" + (string-append (assoc-ref %build-inputs + "autoconf") + "/bin/autoconf")) + (setenv "CONFIG_SHELL" bash) + (setenv "QA_CONFIGURE_OPTIONS" ".*") + (setenv "MOZBUILD_STATE_PATH" + (string-append (getcwd) "/mach_state")) + (setenv "MOZCONFIG" + (string-append (getcwd) "/.mozconfig")) + (setenv "CC" "gcc") + (setenv "MOZ_NOSPAM" "1") + (setenv "PYTHON" + (string-append (assoc-ref inputs "python2") + "/bin/python")) + (setenv "MOZ_BUILD_DATE" ,%icedove-build-id) ; avoid timestamp + (setenv "LDFLAGS" (string-append "-Wl,-rpath=" + (assoc-ref outputs "out") + "/lib/icedove")) + (mkdir-p (string-append (getcwd) "/builddir")) + (with-output-to-file mozconfig + (lambda () + (display + (string-append + "ac_add_options --disable-crashreporter\n" + "ac_add_options --disable-debug\n" + "ac_add_options --disable-debug-symbols\n" + "ac_add_options --disable-elf-hack\n" + "ac_add_options --disable-gconf\n" + "ac_add_options --disable-ion\n" + "ac_add_options --disable-necko-wifi\n" + "ac_add_options --disable-official-branding\n" + "ac_add_options --disable-tests\n" + "ac_add_options --disable-updater\n" + "ac_add_options --disable-webrtc\n" + "ac_add_options --enable-application=comm/mail\n" + "ac_add_options --enable-calendar\n" + "ac_add_options --enable-content-sandbox\n" + "ac_add_options --enable-default-toolkit=\"cairo-gtk3\"\n" + "ac_add_options --enable-optimize\n" + "ac_add_options --enable-pulseaudio\n" + "ac_add_options --enable-release\n" + "ac_add_options --enable-startup-notification\n" + "ac_add_options --enable-strip\n" + "ac_add_options --enable-system-ffi\n" + "ac_add_options --enable-system-pixman\n" + "ac_add_options --enable-system-sqlite\n" + "ac_add_options --prefix=" out "\n" + "ac_add_options --with-clang-path=" (assoc-ref %build-inputs "clang") "/bin/clang\n" + "ac_add_options --with-distribution-id=org.gnu\n" + "ac_add_options --with-libclang-path=" (assoc-ref %build-inputs "clang") "/lib\n" + "ac_add_options --with-system-bz2\n" + "ac_add_options --with-system-icu\n" + "ac_add_options --with-system-jpeg\n" + "ac_add_options --with-system-libevent\n" + "ac_add_options --with-system-nspr\n" + "ac_add_options --with-system-nss\n" + "ac_add_options --with-system-zlib\n" + "ac_add_options --with-user-appdir=\\.icedove\n")))) + (display (getcwd)) + (newline) + (display "mach configure") + (invoke "./mach" "configure")))) + (replace 'build + (lambda _ (invoke "./mach" "build"))) + (replace 'install + (lambda _ (invoke "./mach" "install"))) + (add-after 'install 'wrap-program + (lambda* (#:key inputs outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (lib (string-append out "/lib")) + (gtk (assoc-ref inputs "gtk+")) + (gtk-share (string-append gtk "/share")) + (pulseaudio (assoc-ref inputs "pulseaudio")) + (pulseaudio-lib (string-append pulseaudio "/lib"))) + (wrap-program (car (find-files lib "^icedove$")) + `("XDG_DATA_DIRS" prefix (,gtk-share)) + `("LD_LIBRARY_PATH" prefix (,pulseaudio-lib))) + #t)))))) + (inputs + `(("bzip2" ,bzip2) + ("cairo" ,cairo) + ("cups" ,cups) + ("dbus-glib" ,dbus-glib) + ("ffmpeg" ,ffmpeg) + ("freetype" ,freetype) + ("gdk-pixbuf" ,gdk-pixbuf) + ("glib" ,glib) + ("gtk+" ,gtk+) + ("gtk+-2" ,gtk+-2) + ("hunspell" ,hunspell) + ("icu4c" ,icu4c) + ("libcanberra" ,libcanberra) + ("libevent" ,libevent) + ("libffi" ,libffi) + ("libgnome" ,libgnome) + ("libjpeg-turbo" ,libjpeg-turbo) + ("libpng-apng" ,libpng-apng) + ("libvpx" ,libvpx) + ("libxcomposite" ,libxcomposite) + ("libxft" ,libxft) + ("libxinerama" ,libxinerama) + ("libxscrnsaver" ,libxscrnsaver) + ("libxt" ,libxt) + ("mesa" ,mesa) + ("mit-krb5" ,mit-krb5) + ("nspr" ,nspr) + ("nss" ,nss) + ("pango" ,pango) + ("pixman" ,pixman) + ("pulseaudio" ,pulseaudio) + ("sqlite" ,sqlite) + ("startup-notification" ,startup-notification) + ("unzip" ,unzip) + ("zip" ,zip) + ("zlib" ,zlib))) + (native-inputs + `(("thunderbird-sources" + ;; The changeset identifier is taken from the file "sourcestamp.txt" + ;; in the Thunderbird release tarball. We don't use the release + ;; tarball because it duplicates the Icecat sources and only adds the + ;; "comm" directory, which is provided by this repository. + ,(let ((changeset "4c022a34cd5dd776671721c44db89f693f59132c")) + (origin + (method hg-fetch) + (uri (hg-reference + (url "https://hg.mozilla.org/releases/comm-esr68") + (changeset changeset))) + (file-name (string-append "thunderbird-" version "-checkout")) + (sha256 + (base32 + "0k3653ic1g5pwcmf87a95lbzjah25l9qx0r49c4j04c21069fhad"))))) + ("autoconf" ,autoconf-2.13) + ("cargo" ,rust "cargo") + ("clang" ,clang) + ("llvm" ,llvm) + ("nasm" ,nasm) + ("node" ,node) + ("perl" ,perl) + ("pkg-config" ,pkg-config) + ("python" ,python) + ("python2" ,python-2.7) + ("rust" ,rust) + ("rust-cbindgen" ,rust-cbindgen) + ("which" ,which) + ("yasm" ,yasm))) + (home-page "https://www.thunderbird.net") + (synopsis "Rebranded Mozilla Thunderbird email client") + (description + "This package provides an email client built based on Mozilla +Thunderbird. It supports email, news feeds, chat, calendar and contacts.") + (license license:mpl2.0))) + (define-public firefox-decrypt (package (name "firefox-decrypt") diff --git a/gnu/packages/hardware.scm b/gnu/packages/hardware.scm index ce3f396d0a..7ca565e17f 100644 --- a/gnu/packages/hardware.scm +++ b/gnu/packages/hardware.scm @@ -24,6 +24,7 @@ #:use-module (gnu packages bash) #:use-module (gnu packages compression) #:use-module (gnu packages check) + #:use-module (gnu packages cpp) #:use-module (gnu packages crypto) #:use-module (gnu packages documentation) #:use-module (gnu packages gcc) @@ -399,13 +400,16 @@ applications.") (arguments `(#:phases (modify-phases %standard-phases - (add-after 'configure 'patch-makefile - (lambda _ + (add-after 'unpack 'patch-build-scripts + (lambda* (#:key inputs #:allow-other-keys) + (substitute* "configure" + (("/usr/include/catch") + (string-append (assoc-ref inputs "catch") "/include"))) ;; Do not create log directory. - (substitute* "Makefile" ((".*/log/usbguard.*") "")) + (substitute* "Makefile.in" ((".*/log/usbguard.*") "")) ;; Disable LDAP tests: they use 'sudo'. - (substitute* "src/Tests/Makefile.am" - (("WITH_LDAP") "FALSE")) + (substitute* "src/Tests/Makefile.in" + (("\\$\\(am__append_2\\)") "")) #t)) (add-after 'install 'delete-static-library (lambda* (#:key outputs #:allow-other-keys) @@ -429,7 +433,6 @@ applications.") #:configure-flags (list "--localstatedir=/var" - "--with-bundled-pegtl" "--enable-systemd=no" "--with-ldap" "--with-dbus" @@ -442,13 +445,12 @@ applications.") ("libcap-ng" ,libcap-ng) ("libseccomp" ,libseccomp) ("libsodium" ,libsodium) + ("pegtl" ,pegtl) ("polkit" ,polkit) ("protobuf" ,protobuf) ("libqb" ,libqb))) (native-inputs `(("asciidoc" ,asciidoc) - ("autoconf" ,autoconf) - ("automake" ,automake) ("bash-completion" ,bash-completion) ("gdbus-codegen" ,glib "bin") ("umockdev" ,umockdev) diff --git a/gnu/packages/haskell-check.scm b/gnu/packages/haskell-check.scm index c6e89460ea..7942f2019a 100644 --- a/gnu/packages/haskell-check.scm +++ b/gnu/packages/haskell-check.scm @@ -215,6 +215,39 @@ with the @url{https://hackage.haskell.org/package/tasty, tasty testing framework}.") (license license:bsd-3))) +(define-public ghc-tasty-hspec + (package + (name "ghc-tasty-hspec") + (version "1.1.5.1") + (source + (origin + (method url-fetch) + (uri (string-append + "mirror://hackage/package/tasty-hspec/tasty-hspec-" + version + ".tar.gz")) + (sha256 + (base32 + "0i9kdzjpk750sa078jj3iyhp72k0177zk7vxl131r6dkyz09x27y")))) + (build-system haskell-build-system) + (inputs + `(("ghc-hspec" ,ghc-hspec) + ("ghc-hspec-core" ,ghc-hspec-core) + ("ghc-quickcheck" ,ghc-quickcheck) + ("ghc-tasty" ,ghc-tasty) + ("ghc-tasty-smallcheck" ,ghc-tasty-smallcheck) + ("ghc-tasty-quickcheck" ,ghc-tasty-quickcheck))) + (arguments + `(#:cabal-revision + ("4" "1yppwhs2r2rlwrzli9ccv5ldgl95h5p7pqhsr898r3das6daf6sk"))) + (home-page + "https://github.com/mitchellwrosen/tasty-hspec") + (synopsis + "Hspec support for the Tasty test framework") + (description + "This package provides a Tasty provider for Hspec test suites.") + (license license:bsd-3))) + (define-public ghc-tasty-hunit (package (name "ghc-tasty-hunit") diff --git a/gnu/packages/haskell-web.scm b/gnu/packages/haskell-web.scm index 05be862a85..4689025432 100644 --- a/gnu/packages/haskell-web.scm +++ b/gnu/packages/haskell-web.scm @@ -655,6 +655,87 @@ limitation, automatic pruning, energy saving and replay resistance.") a WAI handler, via the native Haskell TLS implementation.") (license license:expat))) +(define-public ghc-websockets + (package + (name "ghc-websockets") + (version "0.12.6.1") + (source + (origin + (method url-fetch) + (uri (string-append + "mirror://hackage/package/websockets/websockets-" + version + ".tar.gz")) + (sha256 + (base32 + "1vp3790w3hmr6v96314vdx74f7sg2c7hvnc93gafq0xhbxnr7nvx")))) + (build-system haskell-build-system) + (inputs + `(("ghc-attoparsec" ,ghc-attoparsec) + ("ghc-base64-bytestring" ,ghc-base64-bytestring) + ("ghc-bytestring-builder" ,ghc-bytestring-builder) + ("ghc-case-insensitive" ,ghc-case-insensitive) + ("ghc-network" ,ghc-network) + ("ghc-random" ,ghc-random) + ("ghc-sha" ,ghc-sha) + ("ghc-streaming-commons" ,ghc-streaming-commons) + ("ghc-entropy" ,ghc-entropy))) + (native-inputs + `(("ghc-hunit" ,ghc-hunit) + ("ghc-quickcheck" ,ghc-quickcheck) + ("ghc-test-framework" ,ghc-test-framework) + ("ghc-test-framework-hunit" ,ghc-test-framework-hunit) + ("ghc-test-framework-quickcheck2" ,ghc-test-framework-quickcheck2))) + (home-page "https://jaspervdj.be/websockets/") + (synopsis + "Write WebSocket-capable servers in Haskell") + (description + "This library allows you to write WebSocket-capable servers. + +An example server: +@url{https://github.com/jaspervdj/websockets/blob/master/example/server.lhs} +An example client: +@url{https://github.com/jaspervdj/websockets/blob/master/example/client.hs} + +See also: +@itemize +@item The specification of the WebSocket protocol: +@url{http://www.whatwg.org/specs/web-socket-protocol/} +@item The JavaScript API for dealing with WebSockets: +@url{http://www.w3.org/TR/websockets/} +@end itemize") + (license license:bsd-3))) + +(define-public ghc-wai-websockets + (package + (name "ghc-wai-websockets") + (version "3.0.1.2") + (source + (origin + (method url-fetch) + (uri (string-append + "mirror://hackage/package/wai-websockets/wai-websockets-" + version + ".tar.gz")) + (sha256 + (base32 + "0b2xmdsrsqpssyib53wbr6r8hf75789ndyyanv37sv99iyqcwz4i")))) + (build-system haskell-build-system) + (inputs + `(("ghc-wai" ,ghc-wai) + ("ghc-case-insensitive" ,ghc-case-insensitive) + ("ghc-network" ,ghc-network) + ("ghc-websockets" ,ghc-websockets) + ("ghc-http-types" ,ghc-http-types))) + (arguments + `(#:configure-flags '("--flags=-example"))) + (home-page "https://github.com/yesodweb/wai") + (synopsis + "Provide a bridge between WAI and the websockets package") + (description + "Use websockets with WAI applications, primarily those hosted via Warp.") + (license license:expat))) + (define-public ghc-xss-sanitize (package (name "ghc-xss-sanitize") @@ -924,6 +1005,39 @@ the function @code{aesonQQ} that compile-time converts a string representation of a JSON value into a @code{Data.Aeson.Value}.") (license license:expat))) +(define-public ghc-aeson-better-errors + (package + (name "ghc-aeson-better-errors") + (version "0.9.1.0") + (source + (origin + (method url-fetch) + (uri (string-append + "mirror://hackage/package/aeson-better-errors/aeson-better-errors-" + version + ".tar.gz")) + (sha256 + (base32 + "09vkyrhwak3bmpfsqcd2az8hfqqkxyhg468hv5avgisy0nzh3w38")))) + (build-system haskell-build-system) + (inputs + `(("ghc-aeson" ,ghc-aeson) + ("ghc-unordered-containers" ,ghc-unordered-containers) + ("ghc-dlist" ,ghc-dlist) + ("ghc-scientific" ,ghc-scientific) + ("ghc-vector" ,ghc-vector) + ("ghc-transformers-compat" ,ghc-transformers-compat) + ("ghc-void" ,ghc-void))) + (home-page + "https://github.com/hdgarrood/aeson-better-errors") + (synopsis + "Better error messages when decoding JSON values in Haskell") + (description + "Gives you the tools to build parsers to decode JSON values, and gives +good error messages when parsing fails. See also +@url{http://harry.garrood.me/blog/aeson-better-errors/}.") + (license license:expat))) + (define-public ghc-multipart (package (name "ghc-multipart") @@ -1693,3 +1807,100 @@ non-Haskell dependencies.") and Perl's @code{Web::Scraper}. Scalpel builds on top of TagSoup to provide a declarative and monadic interface.") (license license:asl2.0))) + +(define-public ghc-sourcemap + (package + (name "ghc-sourcemap") + (version "0.1.6") + (source + (origin + (method url-fetch) + (uri (string-append + "mirror://hackage/package/sourcemap/sourcemap-" + version + ".tar.gz")) + (sha256 + (base32 + "0ynfm44ym8y592wnzdwa0d05dbkffyyg5sm26y5ylzpynk64r85r")))) + (build-system haskell-build-system) + (inputs + `(("ghc-aeson" ,ghc-aeson) + ("ghc-unordered-containers" ,ghc-unordered-containers) + ("ghc-attoparsec" ,ghc-attoparsec) + ("ghc-utf8-string" ,ghc-utf8-string))) + (arguments + `(#:tests? #f ; FIXME: Fail to compile + #:cabal-revision + ("1" "1f7q44ar6qfip8fsllg43jyn7r15ifn2r0vz32cbmx0sb0d38dax"))) + (home-page + "http://hackage.haskell.org/package/sourcemap") + (synopsis + "Implementation of source maps as proposed by Google and Mozilla") + (description + "Sourcemap provides an implementation of source maps, revision 3, +proposed by Google and Mozilla here +@url{https://wiki.mozilla.org/DevTools/Features/SourceMap}.") + (license license:bsd-3))) + +(define-public ghc-language-javascript + (package + (name "ghc-language-javascript") + (version "0.7.0.0") + (source + (origin + (method url-fetch) + (uri (string-append + "mirror://hackage/package/language-javascript/language-javascript-" + version + ".tar.gz")) + (sha256 + (base32 + "15bpqpkjf2y3fk8wff9zlnkpsjc63bnbvhlkxrs9alj0bikq17nk")))) + (build-system haskell-build-system) + (inputs + `(("ghc-blaze-builder" ,ghc-blaze-builder) + ("ghc-utf8-string" ,ghc-utf8-string))) + (native-inputs + `(("ghc-alex" ,ghc-alex) + ("ghc-quickcheck" ,ghc-quickcheck) + ("ghc-happy" ,ghc-happy) + ("ghc-hspec" ,ghc-hspec) + ("ghc-utf8-light" ,ghc-utf8-light))) + (home-page + "https://github.com/erikd/language-javascript") + (synopsis "Parser for JavaScript") + (description + "Parses Javascript into an Abstract Syntax Tree (AST). Initially intended +as frontend to hjsmin.") + (license license:bsd-3))) + +(define-public ghc-bower-json + (package + (name "ghc-bower-json") + (version "1.0.0.1") + (source + (origin + (method url-fetch) + (uri (string-append + "mirror://hackage/package/bower-json/bower-json-" + version + ".tar.gz")) + (sha256 + (base32 + "0wvygg3rdbxzrmr61a9w6ddv9pfric85ih8hnxyk0ydzn7i59abs")))) + (build-system haskell-build-system) + (inputs + `(("ghc-aeson" ,ghc-aeson) + ("ghc-aeson-better-errors" ,ghc-aeson-better-errors) + ("ghc-scientific" ,ghc-scientific) + ("ghc-transformers" ,ghc-transformers) + ("ghc-unordered-containers" ,ghc-unordered-containers))) + (native-inputs + `(("ghc-tasty" ,ghc-tasty) + ("ghc-tasty-hunit" ,ghc-tasty-hunit))) + (home-page "https://github.com/hdgarrood/bower-json") + (synopsis "Read bower.json from Haskell") + (description + "This package provides a data type and ToJSON/FromJSON instances for +Bower's package manifest file, bower.json.") + (license license:expat))) diff --git a/gnu/packages/haskell-xyz.scm b/gnu/packages/haskell-xyz.scm index c9119efd69..ed0b17bcd6 100644 --- a/gnu/packages/haskell-xyz.scm +++ b/gnu/packages/haskell-xyz.scm @@ -456,6 +456,34 @@ colored output using the ansi-terminal package.") style.") (license license:bsd-3))) +(define-public ghc-assoc + (package + (name "ghc-assoc") + (version "1.0.1") + (source + (origin + (method url-fetch) + (uri (string-append + "https://hackage.haskell.org/package/assoc/assoc-" + version + ".tar.gz")) + (sha256 + (base32 + "1m9n4vp190bvn2wcrd4ggfwa9pi93jp0zgx02mdgywn2zfidw020")))) + (build-system haskell-build-system) + (inputs + `(("ghc-bifunctors" ,ghc-bifunctors) + ("ghc-tagged" ,ghc-tagged))) + (home-page + "http://hackage.haskell.org/package/assoc") + (synopsis + "Swap and assoc: Symmetric and Semigroupy Bifunctors") + (description + "Provides generalisations of @code{swap :: (a,b) -> (b,a)} and +@code{assoc :: ((a,b),c) -> (a,(b,c))} to @code{Bifunctor}s supporting +similar operations (e.g. @code{Either}, @code{These}).") + (license license:bsd-3))) + (define-public ghc-async (package (name "ghc-async") @@ -7631,6 +7659,41 @@ semi-direct products, \"deletable\" monoids, \"split\" monoids, and \"cut\" monoids.") (license license:bsd-3))) +(define-public ghc-mtl-compat + (package + (name "ghc-mtl-compat") + (version "0.2.2") + (source + (origin + (method url-fetch) + (uri (string-append + "mirror://hackage/package/mtl-compat/mtl-compat-" + version + ".tar.gz")) + (sha256 + (base32 + "17iszr5yb4f17g8mq6i74hsamii8z6m2qfsmgzs78mhiwa7kjm8r")))) + (build-system haskell-build-system) + (home-page + "https://github.com/haskell-compat/mtl-compat") + (synopsis + "Backported Control.Monad.Except module from mtl") + (description + "This package backports the Control.Monad.Except module from mtl (if +using mtl-2.2.0.1 or earlier), which reexports the ExceptT monad transformer +and the MonadError class. + +This package should only be used if there is a need to use the +Control.Monad.Except module specifically. If you just want the mtl class +instances for ExceptT, use transformers-compat instead, since mtl-compat does +nothing but reexport the instances from that package. + +Note that unlike how mtl-2.2 or later works, the Control.Monad.Except +module defined in this package exports all of ExceptT's monad class instances. +Therefore, you may have to declare @code{import Control.Monad.Except ()} at +the top of your file to get all of the ExceptT instances in scope.") + (license license:bsd-3))) + (define-public ghc-murmur-hash (package (name "ghc-murmur-hash") @@ -8724,6 +8787,29 @@ of two versions of a source file. It provides a good balance between performance, nice output for humans, and simplicity of implementation.") (license license:bsd-3))) +(define-public ghc-pattern-arrows + (package + (name "ghc-pattern-arrows") + (version "0.0.2") + (source + (origin + (method url-fetch) + (uri (string-append + "mirror://hackage/package/pattern-arrows/pattern-arrows-" + version + ".tar.gz")) + (sha256 + (base32 + "13q7bj19hd60rnjfc05wxlyck8llxy11z3mns8kxg197wxrdkhkg")))) + (build-system haskell-build-system) + (home-page + "https://blog.functorial.com/posts/2013-10-27-Pretty-Printing-Arrows.html") + (synopsis "Arrows for Pretty Printing") + (description + "A library for generating concise pretty printers based on precedence +rules.") + (license license:expat))) + (define-public ghc-pcre-light (package (name "ghc-pcre-light") @@ -9246,6 +9332,33 @@ project-template tries to provide a canonical Haskell library for implementing the ideal templating system.") (license license:bsd-3))) +(define-public ghc-protolude + (package + (name "ghc-protolude") + (version "0.2.3") + (source + (origin + (method url-fetch) + (uri (string-append + "mirror://hackage/package/protolude/protolude-" + version + ".tar.gz")) + (sha256 + (base32 + "0zzkyxz0vmcbncpid7gp72fpjj0fla3gqhlfkij5c5lg12skjgfj")))) + (build-system haskell-build-system) + (inputs + `(("ghc-async" ,ghc-async) + ("ghc-hashable" ,ghc-hashable) + ("ghc-mtl-compat" ,ghc-mtl-compat) + ("ghc-transformers-compat" ,ghc-transformers-compat))) + (home-page "https://github.com/protolude/protolude") + (synopsis "Sensible set of defaults for writing custom Preludes") + (description + "Protolude gives you sensible defaults for writing custom Preludes to +replace the standard one provided by GHC.") + (license license:expat))) + (define-public ghc-psqueues (package (name "ghc-psqueues") @@ -10406,6 +10519,46 @@ Haskell") a memory chunk that will be auto-scrubbed after it run out of scope.") (license license:bsd-3))) +(define-public ghc-semialign + (package + (name "ghc-semialign") + (version "1") + (source + (origin + (method url-fetch) + (uri (string-append + "https://hackage.haskell.org/package/semialign/semialign-" + version + ".tar.gz")) + (sha256 + (base32 + "004x0a80sqqdgvsyk4z0nasxpi6z3g1d8kgwj804bj9ka8dlc75m")))) + (build-system haskell-build-system) + (inputs + `(("ghc-these" ,ghc-these) + ("ghc-base-compat" ,ghc-base-compat) + ("ghc-hashable" ,ghc-hashable) + ("ghc-tagged" ,ghc-tagged) + ("ghc-unordered-containers" ,ghc-unordered-containers) + ("ghc-vector" ,ghc-vector) + ("ghc-semigroupoids" ,ghc-semigroupoids))) + (arguments + `(#:cabal-revision + ("1" + "0qnqnyfng4kwy2h2anrcy5id2ijnawava3zcc5h5b8ri1y6ks6zi"))) + (home-page + "https://github.com/isomorphism/these") + (synopsis + "Align and Zip type-classes from the common Semialign ancestor ") + (description + "The major use of @code{These} of this is provided by the +@code{align} member of @code{Semialign} class, representing a +generalized notion of \"zipping with padding\" that combines +structures without truncating to the size of the smaller input. It +turns out that @code{zip} operation fits well the @code{Semialign} +class, forming lattice-like structure.") + (license license:bsd-3))) + (define-public ghc-semigroupoids (package (name "ghc-semigroupoids") @@ -11887,6 +12040,63 @@ and @code{Eq} instances. These instances used to live in the haskell-src-meta package, and that's where the version number started.") (license license:bsd-3))) +(define-public ghc-these + (package + (name "ghc-these") + (version "1.0.1") + (source + (origin + (method url-fetch) + (uri (string-append + "https://hackage.haskell.org/package/these/these-" + version + ".tar.gz")) + (sha256 + (base32 + "1k0pi65g7cm9hzdw6my6bzz2zvddkmj1qs45ymqmi316bpiixk3r")))) + (build-system haskell-build-system) + (inputs + `(("ghc-base-compat" ,ghc-base-compat) + ("ghc-hashable" ,ghc-hashable) + ("ghc-aeson" ,ghc-aeson) + ("ghc-unordered-containers" ,ghc-unordered-containers) + ("ghc-assoc" ,ghc-assoc) + ("ghc-semigroupoids" ,ghc-semigroupoids) + ("ghc-quickcheck" ,ghc-quickcheck))) + (arguments + `(#:cabal-revision + ("1" + "0923r86fnmgpx0msm68aszirh2n19nn5bccgjxfh2146jw4z7w3z"))) + (home-page + "https://github.com/isomorphism/these") + (synopsis "Either-or-both data type") + (description + "This package provides a data type @code{These a b} which can +hold a value of either type or values of each type. This is usually +thought of as an \"inclusive or\" type (contrasting @code{Either a b} as +\"exclusive or\") or as an \"outer join\" type (contrasting @code{(a, b)} +as \"inner join\"). + +@code{data These a b = This a | That b | These a b} + +Since version 1, this package was split into parts: + +@itemize +@item +https://hackage.haskell.org/package/semialign For @code{Align} and +@code{Zip} type-classes. +@item +https://hackage.haskell.org/package/semialign-indexed For +@code{SemialignWithIndex} class, providing @code{ialignWith} and +@code{izipWith} +@item +https://hackage.haskell.org/package/these-lens For lens combinators. +@item +http://hackage.haskell.org/package/monad-chronicle For transformers +variant of @code{These}. +@end itemize") + (license license:bsd-3))) + (define-public ghc-threads (package (name "ghc-threads") @@ -12127,6 +12337,45 @@ from a shell. The @code{tldr} pages are a community effort to simplify the man pages with practical examples.") (license license:bsd-3))) +(define-public ghc-transformers + (package + (name "ghc-transformers") + (version "0.5.6.2") + (source + (origin + (method url-fetch) + (uri (string-append + "mirror://hackage/package/transformers/transformers-" + version + ".tar.gz")) + (sha256 + (base32 + "0v66j5k0xqk51pmca55wq192qyw2p43s2mgxlz4f95q2c1fpjs5n")))) + (build-system haskell-build-system) + (home-page + "http://hackage.haskell.org/package/transformers") + (synopsis "Concrete functor and monad transformers") + (description + "Transformers provides functor and monad transformers, inspired by the +paper \"Functional Programming with Overloading and Higher-Order +Polymorphism\", by Mark P Jones, in Advanced School of Functional Programming, +1995 @url{http://web.cecs.pdx.edu/~mpj/pubs/springschool.html}. + +This package contains: +@itemize +@item the monad transformer class (in @code{Control.Monad.Trans.Class}) +@item concrete functor and monad transformers, each with associated operations +and functions to lift operations associated with other transformers. +@end itemize + +This package can be used on its own in portable Haskell code, in which case +operations need to be manually lifted through transformer stacks (see +@code{Control.Monad.Trans.Class} for some examples). Alternatively, it can be +used with the non-portable monad classes in the mtl or monads-tf packages, +which automatically lift operations introduced by monad transformers through +other transformers.") + (license license:bsd-3))) + (define-public ghc-transformers-base (package (name "ghc-transformers-base") @@ -12671,6 +12920,31 @@ a style ready for qualification, that is, you should import them by parser that uses ByteStrings for parsing and representing the URI data.") (license license:bsd-3))) +(define-public ghc-utf8-light + (package + (name "ghc-utf8-light") + (version "0.4.2") + (source + (origin + (method url-fetch) + (uri (string-append + "mirror://hackage/package/utf8-light/utf8-light-" + version + ".tar.gz")) + (sha256 + (base32 + "0rwyc5z331yfnm4hpx0sph6i1zvkd1z10vvglhnp0vc9wy644k0q")))) + (build-system haskell-build-system) + (home-page + "http://hackage.haskell.org/package/utf8-light") + (synopsis "Lightweight unicode support for Haskell") + (description + "This package profides a class for encoding and decoding UTF8 strings +with instances for several common types. It also includes several functions +for working with UTF8. It aims to be lightweight, depending only on Base and +including only one module.") + (license license:bsd-3))) + (define-public ghc-utf8-string (package (name "ghc-utf8-string") diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm index b188c9bb68..ae0f41ceed 100644 --- a/gnu/packages/linux.scm +++ b/gnu/packages/linux.scm @@ -944,51 +944,47 @@ It has been modified to remove all non-free binary blobs.") ;;; (define-public acpi-call-linux-module - (package - (name "acpi-call-linux-module") - (version "3.17") - (source - (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/teleshoes/acpi_call.git") - (commit version))) - (file-name (git-file-name name version)) - (sha256 - (base32 "04mbv4lasm3vv1j4ndxhnz4hvp5wg8f5fc9q6qxv0nhvwjynmsl3")))) - (build-system linux-module-build-system) - (arguments - `(#:tests? #f ; no tests - #:phases - (modify-phases %standard-phases - (add-after 'unpack 'fix-for-linux-4.12 - (lambda _ - (substitute* "acpi_call.c" - (("asm/uaccess\\.h") - "linux/uaccess.h")) - #t)) - (add-after 'install 'install-documentation - (lambda* (#:key outputs #:allow-other-keys) - (let* ((out (assoc-ref outputs "out")) - (doc (string-append out "/share/doc/" ,name "-" ,version))) - (for-each (lambda (file) - (let ((target (string-append doc "/" file))) - (mkdir-p (dirname target)) - (copy-recursively file target))) - (list "README.md" "examples")) - #t)))))) - (home-page "https://github.com/teleshoes/acpi_call") - (synopsis "Linux kernel module to perform ACPI method calls") - (description - "This simple Linux kernel module allows calls from user space to any + (let ((commit "70b9c80bd700e6a4d10797eaac9fd34b7e8cbd4a") + (revision "0")) + (package + (name "acpi-call-linux-module") + (version (git-version "3.17" revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/teleshoes/acpi_call.git") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 "09c1vw6vcrkqxbwhpgfgpj4d1grzn4qq6ka8pwwzm7cvm405xj7x")))) + (build-system linux-module-build-system) + (arguments + `(#:tests? #f ; no tests + #:phases + (modify-phases %standard-phases + (add-after 'install 'install-documentation + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (doc (string-append out "/share/doc/" ,name "-" ,version))) + (for-each (lambda (file) + (let ((target (string-append doc "/" file))) + (mkdir-p (dirname target)) + (copy-recursively file target))) + (list "README.md" "examples")) + #t)))))) + (home-page "https://github.com/teleshoes/acpi_call") + (synopsis "Linux kernel module to perform ACPI method calls") + (description + "This simple Linux kernel module allows calls from user space to any @acronym{ACPI, Advanced Configuration and Power Interface} method provided by your computer's firmware, by writing to @file{/proc/acpi/call}. You can pass -any number of parameters of types @code{ACPI_INTEGER}, @code{ACPI_STRING}, +any number of parameters of types @code{ACPI_INTEGER}, @code{ACPI_STRING}, and @code{ACPI_BUFFER}. It grants direct and undocumented access to your hardware that may cause damage and should be used with caution, especially on untested models.") - (license license:gpl3+))) ; see README.md (no licence headers) + (license license:gpl3+)))) ; see README.md (no licence headers) (define-public rtl8812au-aircrack-ng-linux-module (let ((commit "945d6ed6505c32f0993b1dba576388e92e78101b") @@ -1036,6 +1032,40 @@ and frame injection. It provides a @code{88XXau} kernel module that supports RTL8812AU, RTL8821AU, and RTL8814AU chips.") (license license:gpl2+)))) +(define-public rtl8821ce-linux-module + (let ((commit "69765eb288a8dfad3b055b906760b53e02ab1dea") + (revision "0")) + (package + (name "rtl8821ce-linux-module") + (version (git-version "0.0.0" revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/tomaspinho/rtl8821ce.git") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "17jiw25k74kv5lnvgycvj2g1n06hbrpjz6p4znk4a62g136rhn4s")))) + (build-system linux-module-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (replace 'build + (lambda* (#:key (make-flags '()) inputs #:allow-other-keys) + (setenv "CC" "gcc") + (invoke "make" + (string-append "KSRC=" + (assoc-ref inputs "linux-module-builder") + "/lib/modules/build"))))) + #:tests? #f)) + (home-page "https://github.com/tomaspinho/rtl8821ce") + (synopsis "Linux driver for Realtek RTL8821CE wireless network adapters") + (description "This is Realtek's RTL8821CE Linux driver for wireless +network adapters.") + (license license:gpl2)))) + (define-public vhba-module (package (name "vhba-module") @@ -2361,14 +2391,14 @@ devices. It replaces @code{iwconfig}, which is deprecated.") (define-public powertop (package (name "powertop") - (version "2.11") + (version "2.12") (source (origin (method url-fetch) (uri (string-append "https://01.org/sites/default/files/downloads/" - "powertop-v" version "-1-g7ef7f79.tar_0.gz")) + "powertop-" version ".tar.gz")) (sha256 - (base32 "0kynypj5cydfbma0ssblq1k4m1arixc1s2vf0ybv8y2gg09wjs5f")))) + (base32 "1kiiwa5p2r7h1lzcf53xq61ckaa4wk565s9fs6vw4bfk84y3mfsw")))) (build-system gnu-build-system) (arguments '(#:phases diff --git a/gnu/packages/lisp-xyz.scm b/gnu/packages/lisp-xyz.scm index da3d079b24..d0a0065957 100644 --- a/gnu/packages/lisp-xyz.scm +++ b/gnu/packages/lisp-xyz.scm @@ -3548,7 +3548,7 @@ client and server.") (home-page "https://common-lisp.net/project/trivial-backtrace/") (synopsis "Portable simple API to work with backtraces in Common Lisp") (description - "On of the many things that didn't quite get into the Common Lisp + "One of the many things that didn't quite get into the Common Lisp standard was how to get a Lisp to output its call stack when something has gone wrong. As such, each Lisp has developed its own notion of what to display, how to display it, and what sort of arguments can be used to @@ -5484,26 +5484,7 @@ and @code{kqueue(2)}), a pathname library and file-system utilities.") (synopsis "Base package for IOLib, a Common Lisp I/O library"))) (define-public sbcl-iolib.grovel - (package - (inherit sbcl-iolib.asdf) - (name "sbcl-iolib.grovel") - (inputs - `(("iolib.asdf" ,sbcl-iolib.asdf) - ("iolib.conf" ,sbcl-iolib.conf) - ("iolib.base", sbcl-iolib.base) - ("cffi", sbcl-cffi))) - (arguments - '(#:asd-file "iolib.grovel.asd" - #:phases - (modify-phases %standard-phases - (add-after 'install 'install-header - (lambda* (#:key outputs #:allow-other-keys) - ;; This header is required by sbcl-iolib. - (install-file "src/grovel/grovel-common.h" - (string-append (assoc-ref outputs "out") - "/lib/sbcl")) - #t))))) - (synopsis "CFFI Groveller for IOLib, a Common Lisp I/O library"))) + (deprecated-package "sbcl-iolib.grovel" sbcl-cffi-grovel)) (define sbcl-iolib+syscalls (package diff --git a/gnu/packages/lxde.scm b/gnu/packages/lxde.scm index a52e403106..38dcd0e8ed 100644 --- a/gnu/packages/lxde.scm +++ b/gnu/packages/lxde.scm @@ -29,6 +29,7 @@ #:use-module (gnu packages) #:use-module (gnu packages admin) #:use-module (gnu packages autotools) + #:use-module (gnu packages base) #:use-module (gnu packages bash) #:use-module (gnu packages disk) #:use-module (gnu packages docbook) @@ -56,6 +57,7 @@ #:use-module (guix build-system gnu) #:use-module (guix build-system trivial) #:use-module (guix download) + #:use-module (guix git-download) #:use-module ((guix licenses) #:prefix license:) #:use-module (guix packages) #:use-module (guix utils)) @@ -250,25 +252,26 @@ with freedesktop.org standard.") (package (name "spacefm") (version "1.0.6") - (source (origin - (method url-fetch) - (uri (string-append - "https://github.com/IgnorantGuru/spacefm/archive/" - version ".tar.gz")) - (sha256 - (base32 - "1jg7xfyr7kihjnalxp8wxyb9qjk8hqf5l36rp3s0lvkpmpyakppy")) - (modules '((guix build utils))) - (snippet - '(begin - (substitute* "src/main.c" - (("#include <sys/types\\.h>" all) - ;; Add missing include for 'major' and 'minor' with glibc - ;; >= 2.28. - (string-append all "\n" - "#include <sys/sysmacros.h>\n"))) - #t)) - (file-name (string-append name "-" version ".tar.gz")))) + (source + (origin + (method git-fetch) + (uri + (git-reference + (url "https://github.com/IgnorantGuru/spacefm.git") + (commit version))) + (file-name (git-file-name name version)) + (sha256 + (base32 "193mdcv73cfc2bnm4bzmnf1wmkzgj1ya64y0lgyxn3ww36ghcsx9")) + (modules '((guix build utils))) + (snippet + '(begin + (substitute* "src/main.c" + (("#include <sys/types\\.h>" all) + ;; Add missing include for 'major' and 'minor' with glibc + ;; >= 2.28. + (string-append all "\n" + "#include <sys/sysmacros.h>\n"))) + #t)))) (build-system glib-or-gtk-build-system) (native-inputs `(("desktop-file-utils" ,desktop-file-utils) @@ -278,20 +281,27 @@ with freedesktop.org standard.") ("pkg-config" ,pkg-config))) (inputs `(("bash" ,bash) + ("btrfs-progs" ,btrfs-progs) ("cairo" ,cairo) + ("coreutils" ,coreutils) ("curlftpfs" ,curlftpfs) + ("e2fsprogs" ,e2fsprogs) ("eudev" ,eudev) ("fakeroot" ,fakeroot) ("ffmpegthumbnailer" ,ffmpegthumbnailer) + ("fsarchiver" ,fsarchiver) ("fuseiso" ,fuseiso) ("glib" ,glib) + ("gphotofs" ,gphotofs) ("gtk+" ,gtk+) ("ifuse" ,ifuse) ("jmtpfs" ,jmtpfs) ("ktsuss" ,ktsuss) ("libx11" ,libx11) ("lsof" ,lsof) + ("ntfs-3g" ,ntfs-3g) ("pango" ,pango) + ("procps" ,procps) ("shared-mime-info" ,shared-mime-info) ("startup-notification" ,startup-notification) ("udevil" ,udevil) @@ -300,23 +310,88 @@ with freedesktop.org standard.") (arguments `(#:phases (modify-phases %standard-phases - (add-after 'unpack 'patch-source-files + (add-after 'unpack 'patch-bin-dirs + (lambda* (#:key inputs #:allow-other-keys) + (let* ((bash (assoc-ref inputs "bash")) + (coreutils (assoc-ref inputs "coreutils")) + (util-linux (assoc-ref inputs "util-linux")) + (procps (assoc-ref inputs "procps")) + (e2fsprogs (assoc-ref inputs "e2fsprogs")) + (btrfs-progs (assoc-ref inputs "btrfs-progs")) + (ntfs-3g (assoc-ref inputs "ntfs-3g")) + (lsof (assoc-ref inputs "lsof")) + (fsarchiver (assoc-ref inputs "fsarchiver")) + (ktsuss (assoc-ref inputs "ktsuss"))) + (with-directory-excursion "src" + (substitute* '("ptk/ptk-file-task.c" "ptk/ptk-handler.h" + "ptk/ptk-location-view.c" "spacefm-auth" + "spacefm-auth.bash" "vfs/vfs-file-task.c" + "settings.c" "../data/ui/prefdlg.ui" + "../data/ui/prefdlg2.ui") + (("/bin/sh" file) (string-append bash file)) + (("/bin/bash" file) (string-append bash file)) + (("/bin/kill" file) (string-append coreutils file)) + (("/bin/ls" file) (string-append coreutils file)) + (("/usr(/bin/sha256sum)" _ file) (string-append coreutils file)) + (("/usr(/bin/sha512sum)" _ file) (string-append coreutils file)) + (("/sbin/fsck" file) (string-append util-linux file)) + (("/sbin/mkfs" file) (string-append util-linux file)) + (("/sbin/mkswap" file) (string-append util-linux file)) + (("/bin/ps" file) (string-append procps file)) + (("/sbin/tune2fs" file) (string-append e2fsprogs file)) + (("/sbin/btrfs") (string-append btrfs-progs "/bin/btrfs")) + (("/sbin/ntfslabel" file) (string-append ntfs-3g file)) + (("/usr(/bin/lsof)" _ file) (string-append lsof file)) + (("(/usr)?/(sbin|bin)/fsarchiver") (string-append fsarchiver + "/sbin/fsarchiver")) + (("/usr(/bin/ktsuss)" _ file) (string-append ktsuss file)))) + #t))) + (add-after 'patch-bin-dirs 'patch-share-dirs + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (share (string-append out "/share"))) + (with-directory-excursion "src" + (substitute* '("main-window.c" "settings.c" + "ptk/ptk-app-chooser.c") + (("/usr(/local)?/share") share))) + #t))) + (add-after 'patch-share-dirs 'patch-mime-dirs + (lambda* (#:key inputs #:allow-other-keys) + (let* ((mime (string-append (assoc-ref inputs "shared-mime-info") + "/share/mime"))) + (with-directory-excursion "src" + (substitute* '("mime-type/mime-type.c" "ptk/ptk-file-menu.c") + (("/usr(/local)?/share/mime") mime))) + #t))) + (add-after 'patch-mime-dirs 'patch-setuid-progs + (lambda _ + (let* ((su "/run/setuid-programs/su") + (mount "/run/setuid-programs/mount") + (umount "/run/setuid-programs/umount") + (udevil "/run/setuid-programs/udevil")) + (with-directory-excursion "src" + (substitute* '("settings.c" "settings.h" "vfs/vfs-file-task.c" + "vfs/vfs-volume-hal.c" "../data/ui/prefdlg.ui" + "../data/ui/prefdlg2.ui") + (("(/usr)?/bin/su") su) + (("/(bin|sbin)/mount") mount) + (("/(bin|sbin)/umount") umount) + (("/usr/bin/udevil") udevil))) + #t))) + (add-after 'patch-setuid-progs 'patch-spacefm-conf (lambda* (#:key inputs #:allow-other-keys) - ;; Patch config file to load programs correctly. (substitute* "etc/spacefm.conf" (("#terminal_su=/bin/su") - "terminal_su=/run/setuid-programs/sudo") + "terminal_su=/run/setuid-programs/su") (("#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-preferable-sudo=" + (assoc-ref %build-inputs "ktsuss") + "/bin/ktsuss") (string-append "--with-bash-path=" (assoc-ref %build-inputs "bash") "/bin/bash") diff --git a/gnu/packages/mail.scm b/gnu/packages/mail.scm index ef3b3eb5f6..b90e1706d7 100644 --- a/gnu/packages/mail.scm +++ b/gnu/packages/mail.scm @@ -718,22 +718,21 @@ security functionality including PGP, S/MIME, SSH, and SSL.") (define-public mu (package (name "mu") - (version "1.4") + (version "1.4.4") (source (origin (method url-fetch) (uri (string-append "https://github.com/djcb/mu/releases/" - "download/" (version-major+minor version) "/" + "download/" version "/" "mu-" version ".tar.xz")) (sha256 (base32 - "1ay68rhlngnp2zm6wdmzgr1fsal3spz61swcxlaz5y215qvgjfpy")))) + "0pmx8zh5fsfhkdl0cr7ydcv6cywhxbgavnjrfr5p2ibz9gx3q3vf")))) (build-system gnu-build-system) (native-inputs `(("pkg-config" ,pkg-config) ("glib" ,glib "bin") ; for gtester ("emacs" ,emacs-minimal) ("tzdata" ,tzdata-for-tests))) ; for mu/test/test-mu-query.c - ;; TODO: Add webkit and gtk to build the mug GUI. (inputs `(("xapian" ,xapian) ("guile" ,guile-2.2) diff --git a/gnu/packages/patches/purescript-relax-dependencies.patch b/gnu/packages/patches/purescript-relax-dependencies.patch new file mode 100644 index 0000000000..11c4a3c3fc --- /dev/null +++ b/gnu/packages/patches/purescript-relax-dependencies.patch @@ -0,0 +1,42 @@ +Allow the purescript dependencies to better match the available packages in +Guix. + +diff --git purescript-0.13.6/purescript.cabal purescript-0.13.6/purescript.cabal.orig +index 7e38070..0724a0b 100644 +--- purescript-0.13.6/purescript.cabal ++++ purescript-0.13.6/purescript.cabal.orig +@@ -1167,1 +1167,1 @@ library +- Glob ==0.9.*, ++ Glob ==0.10.*, +@@ -1171,1 +1171,1 @@ library +- ansi-terminal >=0.7.1 && <0.9, ++ ansi-terminal ==0.9.*, +@@ -1180,1 +1180,1 @@ library +- clock <0.8, ++ clock ==0.8.*, +@@ -1246,1 +1246,1 @@ executable purs +- Glob ==0.9.*, ++ Glob ==0.10.*, +@@ -1250,1 +1250,1 @@ executable purs +- ansi-terminal >=0.7.1 && <0.9, ++ ansi-terminal ==0.9.*, +@@ -1260,1 +1260,1 @@ executable purs +- clock <0.8, ++ clock ==0.8.*, +@@ -1281,1 +1281,1 @@ executable purs +- network >=3.0.1.1 && <3.1, ++ network >=2.8 && <3.1, +@@ -1358,1 +1358,1 @@ test-suite tests +- Glob ==0.9.*, ++ Glob ==0.10.*, +@@ -1363,1 +1363,1 @@ test-suite tests +- ansi-terminal >=0.7.1 && <0.9, ++ ansi-terminal ==0.9.*, +@@ -1372,1 +1372,1 @@ test-suite tests +- clock <0.8, ++ clock ==0.8.*, +@@ -1384,2 +1384,2 @@ test-suite tests +- hspec <2.7, +- hspec-discover <2.7, ++ hspec ==2.7.*, ++ hspec-discover ==2.7.*, diff --git a/gnu/packages/patches/twinkle-bcg729.patch b/gnu/packages/patches/twinkle-bcg729.patch new file mode 100644 index 0000000000..eb8667b679 --- /dev/null +++ b/gnu/packages/patches/twinkle-bcg729.patch @@ -0,0 +1,176 @@ +From 46bee14d3cc49d4fb49eaf36a29dbcc7a11a5ab7 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20Bri=C3=A8re?= <fbriere@fbriere.net> +Date: Sat, 6 Jul 2019 15:40:56 -0400 +Subject: [PATCH] Add support for the new bcg729 API, introduced in version + 1.0.2 + +Starting with version 1.0.2, bcg729 has changed its API to add support +for G.729B, thus requiring us to adjust our function calls depending on +which version is installed. + +When dealing with the new API, we merely need to add a few parameters to +disable all G.729B features, namely: + +* On the decoder side: When `SIDFrameFlag` is not set, the decoder will + behave just like before, decoding the payload as a standard G.729A + voice frame (or concealing an erased frame). The other parameters, + `rfc3389PayloadFlag` and `bitStreamLength`, are only of use when + dealing with a SID frame sent as per RFC 3389, and are ignored if + `SIDFrameFlag` is not set. + +* On the encoder side: When `enableVAD` is disabled, the encoder will + behave just like before, producing only standard G.729A voice frames. + The only API difference is the introduction of `*bitStreamLength`, to + return the length of the encoded frame (0, 2 or 10 bytes). In our + case, this will always be 10 bytes just like before; an assert() was + added to guarantee this. + +Closes #104 +--- + CMakeLists.txt | 4 ++++ + cmake/FindG729.cmake | 36 ++++++++++++++++++++++++++++++++++++ + src/audio/audio_decoder.cpp | 8 ++++++++ + src/audio/audio_encoder.cpp | 10 ++++++++++ + twinkle_config.h.in | 1 + + 5 files changed, 59 insertions(+) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 1dafe55..7e3fde0 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -116,6 +116,10 @@ if (WITH_G729) + if (G729_FOUND) + message(STATUS "bcg729 OK") + set(HAVE_BCG729 TRUE) ++ ++ if (G729_ANNEX_B) ++ set(HAVE_BCG729_ANNEX_B TRUE) ++ endif (G729_ANNEX_B) + + include_directories(${G729_INCLUDE_DIR}) + else (G729_FOUND) +diff --git a/cmake/FindG729.cmake b/cmake/FindG729.cmake +index 4a30ba0..1fbfeeb 100644 +--- a/cmake/FindG729.cmake ++++ b/cmake/FindG729.cmake +@@ -1,14 +1,50 @@ ++INCLUDE(CMakePushCheckState) ++INCLUDE(CheckCSourceCompiles) ++ + FIND_PATH(G729_INCLUDE_DIR bcg729/decoder.h) + FIND_LIBRARY(G729_LIBRARY NAMES bcg729) + + IF(G729_INCLUDE_DIR AND G729_LIBRARY) + SET(G729_FOUND TRUE) ++ ++ # The bcg729 API was changed in 1.0.2 to add support for G.729 Annex B. ++ # This checks whether we are dealing with the old or new API. ++ CMAKE_PUSH_CHECK_STATE() ++ SET(CMAKE_REQUIRED_INCLUDES "${INCLUDE_DIRECTORIES}" "${G729_INCLUDE_DIR}") ++ SET(CMAKE_REQUIRED_LIBRARIES "${G729_LIBRARY}") ++ SET(CMAKE_REQUIRED_QUIET TRUE) ++ # Try to compile something using the old (pre-1.0.2) API. ++ # ++ # We cannot do it the other way around, as initBcg729EncoderChannel() ++ # did not have a prototype before 1.0.2, thus compilation would not fail ++ # when passing it an extra argument. ++ CHECK_C_SOURCE_COMPILES(" ++ #include <bcg729/encoder.h> ++ ++ int main() { ++ /* This function requires an argument since 1.0.2 */ ++ initBcg729EncoderChannel(); ++ return 0; ++ } ++ " G729_OLD_API) ++ CMAKE_POP_CHECK_STATE() ++ ++ IF (G729_OLD_API) ++ SET(G729_ANNEX_B FALSE) ++ ELSE (G729_OLD_API) ++ SET(G729_ANNEX_B TRUE) ++ ENDIF (G729_OLD_API) + ENDIF(G729_INCLUDE_DIR AND G729_LIBRARY) + + IF(G729_FOUND) + IF (NOT G729_FIND_QUIETLY) + MESSAGE(STATUS "Found bcg729 includes: ${G729_INCLUDE_DIR}/bcg729/decoder.h") + MESSAGE(STATUS "Found bcg729 library: ${G729_LIBRARY}") ++ IF (G729_ANNEX_B) ++ MESSAGE(STATUS "bcg729 supports Annex B; using the new (1.0.2) API") ++ ELSE (G729_ANNEX_B) ++ MESSAGE(STATUS "bcg729 does not support Annex B; using the old (pre-1.0.2) API") ++ ENDIF (G729_ANNEX_B) + ENDIF (NOT G729_FIND_QUIETLY) + ELSE(G729_FOUND) + IF (G729_FIND_REQUIRED) +diff --git a/src/audio/audio_decoder.cpp b/src/audio/audio_decoder.cpp +index 65935dd..c661910 100644 +--- a/src/audio/audio_decoder.cpp ++++ b/src/audio/audio_decoder.cpp +@@ -547,7 +547,11 @@ uint16 t_g729a_audio_decoder::decode(uint8 *payload, uint16 payload_size, + + for (uint16 done = 0; done < payload_size; done += 10) + { ++#ifdef HAVE_BCG729_ANNEX_B ++ bcg729Decoder(_context, &payload[done], 0, false, false, false, &pcm_buf[done * 8]); ++#else + bcg729Decoder(_context, &payload[done], false, &pcm_buf[done * 8]); ++#endif + } + + return payload_size * 8; +@@ -562,7 +566,11 @@ uint16 t_g729a_audio_decoder::conceal(int16 *pcm_buf, uint16 pcm_buf_size) + { + assert(pcm_buf_size >= 80); + ++#ifdef HAVE_BCG729_ANNEX_B ++ bcg729Decoder(_context, nullptr, 0, true, false, false, pcm_buf); ++#else + bcg729Decoder(_context, nullptr, true, pcm_buf); ++#endif + return 80; + } + +diff --git a/src/audio/audio_encoder.cpp b/src/audio/audio_encoder.cpp +index d6ff356..952b1ee 100644 +--- a/src/audio/audio_encoder.cpp ++++ b/src/audio/audio_encoder.cpp +@@ -433,7 +433,11 @@ uint16 t_g726_audio_encoder::encode(int16 *sample_buf, uint16 nsamples, + t_g729a_audio_encoder::t_g729a_audio_encoder(uint16 payload_id, uint16 ptime, t_user *user_config) + : t_audio_encoder(payload_id, ptime, user_config) + { ++#ifdef HAVE_BCG729_ANNEX_B ++ _context = initBcg729EncoderChannel(false); ++#else + _context = initBcg729EncoderChannel(); ++#endif + } + + t_g729a_audio_encoder::~t_g729a_audio_encoder() +@@ -451,7 +455,13 @@ uint16 t_g729a_audio_encoder::encode(int16 *sample_buf, uint16 nsamples, + + for (uint16 done = 0; done < nsamples; done += 80) + { ++#ifdef HAVE_BCG729_ANNEX_B ++ uint8 frame_size = 10; ++ bcg729Encoder(_context, &sample_buf[done], &payload[done / 8], &frame_size); ++ assert(frame_size == 10); ++#else + bcg729Encoder(_context, &sample_buf[done], &payload[done / 8]); ++#endif + } + + return nsamples / 8; +diff --git a/twinkle_config.h.in b/twinkle_config.h.in +index a1aa3b4..53a0426 100644 +--- a/twinkle_config.h.in ++++ b/twinkle_config.h.in +@@ -4,6 +4,7 @@ + #cmakedefine HAVE_ILBC_CPP + #cmakedefine HAVE_ZRTP + #cmakedefine HAVE_BCG729 ++#cmakedefine HAVE_BCG729_ANNEX_B + #cmakedefine HAVE_GSM + + #cmakedefine HAVE_UNISTD_H diff --git a/gnu/packages/purescript.scm b/gnu/packages/purescript.scm new file mode 100644 index 0000000000..13cd773839 --- /dev/null +++ b/gnu/packages/purescript.scm @@ -0,0 +1,133 @@ +;;; GNU Guix --- Functional package management for GNU +;;; Copyright © 2020 John Soo <jsoo1@asu.edu> +;;; +;;; This file is part of GNU Guix. +;;; +;;; GNU Guix is free software; you can redistribute it and/or modify it +;;; under the terms of the GNU General Public License as published by +;;; the Free Software Foundation; either version 3 of the License, or (at +;;; your option) any later version. +;;; +;;; GNU Guix is distributed in the hope that it will be useful, but +;;; WITHOUT ANY WARRANTY; without even the implied warranty of +;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +;;; GNU General Public License for more details. +;;; +;;; You should have received a copy of the GNU General Public License +;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>. + +(define-module (gnu packages purescript) + #:use-module (gnu packages) + #:use-module (gnu packages haskell-xyz) + #:use-module (gnu packages haskell-check) + #:use-module (gnu packages haskell-crypto) + #:use-module (gnu packages haskell-web) + #:use-module ((gnu packages python) #:select (python)) + #:use-module (guix download) + #:use-module (guix git-download) + #:use-module (guix packages) + #:use-module (guix build-system haskell) + #:use-module ((guix licenses) #:prefix license:)) + +(define ghc-happy-1.19.9 + (package + (inherit ghc-happy) + (version "1.19.9") + (source + (origin + (method url-fetch) + (uri (string-append + "https://hackage.haskell.org/package/happy/happy-" + version + ".tar.gz")) + (sha256 + (base32 + "138xpxdb7x62lpmgmb6b3v3vgdqqvqn4273jaap3mjmc2gla709y")))))) + +(define-public purescript + (package + (name "purescript") + (version "0.13.6") + (source + (origin + (method url-fetch) + (uri (string-append + "mirror://hackage/package/purescript/purescript-" + version + ".tar.gz")) + (sha256 + (base32 + "1xss3wpv6wb38gsh9r635s09cxzmiz81hhssdxzdba2pw6ifzx8j")) + (patches (search-patches "purescript-relax-dependencies.patch")))) + (build-system haskell-build-system) + (inputs + `(("ghc-glob" ,ghc-glob) + ("ghc-aeson" ,ghc-aeson) + ("ghc-aeson-better-errors" ,ghc-aeson-better-errors) + ("ghc-aeson-pretty" ,ghc-aeson-pretty) + ("ghc-ansi-terminal" ,ghc-ansi-terminal) + ("ghc-base-compat" ,ghc-base-compat) + ("ghc-blaze-html" ,ghc-blaze-html) + ("ghc-bower-json" ,ghc-bower-json) + ("ghc-boxes" ,ghc-boxes) + ("ghc-cheapskate" ,ghc-cheapskate) + ("ghc-clock" ,ghc-clock) + ("ghc-cryptonite" ,ghc-cryptonite) + ("ghc-data-ordlist" ,ghc-data-ordlist) + ("ghc-dlist" ,ghc-dlist) + ("ghc-edit-distance" ,ghc-edit-distance) + ("ghc-file-embed" ,ghc-file-embed) + ("ghc-fsnotify" ,ghc-fsnotify) + ("ghc-happy" ,ghc-happy) + ("ghc-language-javascript" ,ghc-language-javascript) + ("ghc-lifted-async" ,ghc-lifted-async) + ("ghc-lifted-base" ,ghc-lifted-base) + ("ghc-memory" ,ghc-memory) + ("ghc-microlens-platform" ,ghc-microlens-platform) + ("ghc-monad-control" ,ghc-monad-control) + ("ghc-monad-logger" ,ghc-monad-logger) + ("ghc-network" ,ghc-network) + ("ghc-parallel" ,ghc-parallel) + ("ghc-pattern-arrows" ,ghc-pattern-arrows) + ("ghc-protolude" ,ghc-protolude) + ("ghc-regex-tdfa" ,ghc-regex-tdfa) + ("ghc-safe" ,ghc-safe) + ("ghc-scientific" ,ghc-scientific) + ("ghc-semialign" ,ghc-semialign) + ("ghc-semigroups" ,ghc-semigroups) + ("ghc-sourcemap" ,ghc-sourcemap) + ("ghc-split" ,ghc-split) + ("ghc-stringsearch" ,ghc-stringsearch) + ("ghc-syb" ,ghc-syb) + ("ghc-these" ,ghc-these) + ("ghc-transformers-base" ,ghc-transformers-base) + ("ghc-transformers-compat" ,ghc-transformers-compat) + ("ghc-unordered-containers" ,ghc-unordered-containers) + ("ghc-utf8-string" ,ghc-utf8-string) + ("ghc-vector" ,ghc-vector) + ("ghc-ansi-wl-pprint" ,ghc-ansi-wl-pprint) + ("ghc-http-types" ,ghc-http-types) + ("ghc-network" ,ghc-network) + ("ghc-optparse-applicative" ,ghc-optparse-applicative) + ("ghc-wai" ,ghc-wai) + ("ghc-wai-websockets" ,ghc-wai-websockets) + ("ghc-warp" ,ghc-warp) + ("ghc-websockets" ,ghc-websockets))) + (native-inputs + `(("ghc-happy" ,ghc-happy-1.19.9) ; build fails with 1.19.12 + ("ghc-hunit" ,ghc-hunit) + ("ghc-hspec" ,ghc-hspec) + ("hspec-discover" ,hspec-discover) + ("ghc-tasty" ,ghc-tasty) + ("ghc-tasty-golden" ,ghc-tasty-golden) + ("ghc-tasty-hspec" ,ghc-tasty-hspec))) + (arguments + `(;; Tests require npm + #:tests? #f + #:configure-flags '("--flags=release"))) + (home-page "https://www.purescript.org/") + (synopsis "Haskell inspired programming language compiling to JavaScript") + (description + "Purescript is a small strongly, statically typed programming language with +expressive types, inspired by Haskell and compiling to JavaScript.") + (license license:bsd-3))) diff --git a/gnu/packages/radio.scm b/gnu/packages/radio.scm index 229597b7d5..a33cd11f0b 100644 --- a/gnu/packages/radio.scm +++ b/gnu/packages/radio.scm @@ -123,13 +123,36 @@ mathematical operations, and much more.") (native-inputs `(("pkg-config" ,pkg-config))) (arguments - `(#:configure-flags '("-DDETACH_KERNEL_DRIVER=ON") - #:tests? #f)) ; No tests + `(#:configure-flags '("-DDETACH_KERNEL_DRIVER=ON" + "-DINSTALL_UDEV_RULES=ON") + #:tests? #f ; No tests + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'fix-paths + (lambda* (#:key outputs #:allow-other-keys) + (substitute* "CMakeLists.txt" + (("DESTINATION \"/etc/udev/") + (string-append "DESTINATION \"" + (assoc-ref outputs "out") + "/lib/udev/"))) + #t))))) (home-page "https://osmocom.org/projects/sdr/wiki/rtl-sdr") (synopsis "Software defined radio driver for Realtek RTL2832U") (description "DVB-T dongles based on the Realtek RTL2832U can be used as a cheap software defined radio, since the chip allows transferring the raw I/Q -samples to the host. @code{rtl-sdr} provides drivers for this purpose.") +samples to the host. @code{rtl-sdr} provides drivers for this purpose. + +To install the rtl-sdr udev rules, you must add this package in the +configuration of the udev system service. E.g.: + +@lisp +(services + (modify-services %desktop-services + (udev-service-type config => + (udev-configuration (inherit config) + (rules (cons rtl-sdr + (udev-configuration-rules config))))))) +@end lisp") (license license:gpl2+))) (define-public chirp diff --git a/gnu/packages/shells.scm b/gnu/packages/shells.scm index 5a66ed75de..73bc55bc3c 100644 --- a/gnu/packages/shells.scm +++ b/gnu/packages/shells.scm @@ -41,6 +41,7 @@ #:use-module (gnu packages guile) #:use-module (gnu packages libbsd) #:use-module (gnu packages libedit) + #:use-module (gnu packages linux) #:use-module (gnu packages ncurses) #:use-module (gnu packages pcre) #:use-module (gnu packages perl) @@ -49,13 +50,15 @@ #:use-module (gnu packages python-xyz) #:use-module (gnu packages readline) #:use-module (gnu packages scheme) + #:use-module (guix build-system cmake) #:use-module (guix build-system gnu) #:use-module (guix build-system python) #:use-module (guix build-system trivial) #:use-module (guix download) #:use-module (guix git-download) #:use-module (guix licenses) - #:use-module (guix packages)) + #:use-module (guix packages) + #:use-module (guix utils)) (define-public dash (package @@ -96,7 +99,7 @@ direct descendant of NetBSD's Almquist Shell (@command{ash}).") (define-public fish (package (name "fish") - (version "3.0.2") + (version "3.1.0") (source (origin (method url-fetch) @@ -104,38 +107,53 @@ direct descendant of NetBSD's Almquist Shell (@command{ash}).") "releases/download/" version "/" "fish-" version ".tar.gz")) (sha256 - (base32 "03j3jl9jzlnhq4p86zj8wqsh5sx45j1d1fvfa80ks1cfdg68qwhl")))) - (build-system gnu-build-system) + (base32 "0s2356mlx7fp9kgqgw91lm5ds2i9iq9hq071fbqmcp3875l1xnz5")))) + (build-system cmake-build-system) (inputs `(("fish-foreign-env" ,fish-foreign-env) - ("groff" ,groff) ; for 'fish --help' ("ncurses" ,ncurses) ("pcre2" ,pcre2) ; don't use the bundled PCRE2 ("python" ,python))) ; for fish_config and manpage completions (native-inputs - `(("doxygen" ,doxygen))) + `(("doxygen" ,doxygen) + ; for 'fish --help' + ("groff" ,groff))) (arguments - '(#:tests? #f ; no check target - #:phases + '(#:phases (modify-phases %standard-phases - (add-after 'unpack 'patch-source - (lambda _ - (substitute* '("build_tools/build_commands_hdr.sh" - "build_tools/build_user_doc.sh") - (("/usr/bin/env") "env")) - #t)) - ;; Embed absolute paths. - (add-before 'install 'embed-absolute-paths - (lambda _ - (substitute* '("share/functions/__fish_config_interactive.fish" - "share/functions/fish_config.fish" - "share/functions/fish_update_completions.fish") - (("python3") (which "python3"))) - (substitute* "share/functions/__fish_print_help.fish" - (("nroff") (which "nroff"))) - #t)) + (add-after 'unpack 'patch-tests + (lambda* (#:key inputs #:allow-other-keys) + (let ((coreutils (assoc-ref inputs "coreutils")) + (bash (assoc-ref inputs "bash"))) + ;; These try to open a terminal + (delete-file "tests/checks/interactive.fish") + (delete-file "tests/checks/login-interactive.fish") + ;; These contain absolute path references + (substitute* "src/fish_tests.cpp" + (("/bin/echo" echo) (string-append coreutils echo)) + (("/bin/ca" ca) (string-append coreutils ca)) + (("\"(/bin/c)\"" _ c) (string-append "\"" coreutils c "\"")) + (("/bin/ls_not_a_path" ls-not-a-path) + (string-append coreutils ls-not-a-path)) + (("/bin/ls" ls) (string-append coreutils ls)) + (("(/bin/)\"" _ bin) (string-append coreutils bin "\"")) + (("/bin -" bin) (string-append coreutils bin)) + (((string-append + "do_test\\(is_potential_path\\(" + "L\"/usr\", wds, vars, PATH_REQUIRE_DIR\\)\\);")) + "")) + (substitute* + (append (find-files "tests" ".*\\.(in|out|err)$") + (find-files "tests/checks" ".*\\.fish")) + (("/bin/pwd" pwd) (string-append coreutils pwd)) + (("/bin/echo" echo) (string-append coreutils echo)) + (("/bin/sh" sh) (string-append bash sh)) + (("/bin/ls" ls) (string-append coreutils ls))) + (substitute* (find-files "tests" ".*\\.(in|out|err)$") + (("/usr/bin") (string-append coreutils "/bin"))) + #t))) ;; Source /etc/fish/config.fish from $__fish_sysconf_dir/config.fish. - (add-before 'install 'patch-fish-config + (add-after 'patch-tests 'patch-fish-config (lambda _ (let ((port (open-file "etc/config.fish" "a"))) (display (string-append @@ -148,6 +166,12 @@ direct descendant of NetBSD's Almquist Shell (@command{ash}).") port) (close-port port)) #t)) + ;; Embed absolute paths. + (add-before 'install 'embed-absolute-paths + (lambda _ + (substitute* "share/functions/__fish_print_help.fish" + (("nroff") (which "nroff"))) + #t)) ;; Enable completions, functions and configurations in user's and ;; system's guix profiles by adding them to __extra_* variables. (add-before 'install 'patch-fish-extra-paths diff --git a/gnu/packages/telephony.scm b/gnu/packages/telephony.scm index 56a2ecb73f..87217f633a 100644 --- a/gnu/packages/telephony.scm +++ b/gnu/packages/telephony.scm @@ -48,6 +48,7 @@ #:use-module (gnu packages check) #:use-module (gnu packages compression) #:use-module (gnu packages crypto) + #:use-module (gnu packages databases) #:use-module (gnu packages docbook) #:use-module (gnu packages documentation) #:use-module (gnu packages file) @@ -60,6 +61,7 @@ #:use-module (gnu packages gtk) #:use-module (gnu packages image) #:use-module (gnu packages libcanberra) + #:use-module (gnu packages linphone) #:use-module (gnu packages linux) #:use-module (gnu packages multiprecision) #:use-module (gnu packages ncurses) @@ -91,6 +93,35 @@ #:use-module (guix build-system gnu) #:use-module (guix build-system qt)) +(define-public libilbc + (package + (name "libilbc") + (version "2.0.2") + (source + (origin + (method git-fetch) + (uri + (git-reference + (url "https://github.com/TimothyGu/libilbc.git") + (commit + (string-append "v" version)))) + (file-name + (git-file-name name version)) + (sha256 + (base32 + "1j1pn1w1198qvdiq2hgv9hkyq2nqcvmfnwlgppac633idkjnjrqx")))) + (build-system cmake-build-system) + (arguments + `(#:tests? #f)) ; No target + (native-inputs + `(("pkg-config" ,pkg-config))) + (synopsis "Libre iLBC codec") + (description "LibiLBC is a packaging friendly copy of the iLBC codec from +the WebRTC project. It provides a base for distribution packages and can be +used as drop-in replacement for the non-free code from RFC 3591.") + (home-page "https://github.com/TimothyGu/libilbc") + (license license:bsd-3))) + (define-public spandsp (package (name "spandsp") @@ -257,6 +288,37 @@ packet-manipulation library.") (license license:gpl2+) ; plus runtime exception (home-page "https://www.gnu.org/software/ccrtp/"))) +(define-public zrtpcpp + (package + (name "zrtpcpp") + (version "4.6.6") + (source + (origin + (method git-fetch) + (uri + (git-reference + (url "https://github.com/wernerd/ZRTPCPP.git") + (commit + (string-append "V" version)))) + (file-name + (git-file-name name version)) + (sha256 + (base32 + "06vphvh4dgi7ah5qkq53wqvswv8l273x0xwbc447qmgvamm0x1vs")))) + (build-system cmake-build-system) + (arguments + `(#:tests? #f)) ; No target + (native-inputs + `(("pkg-config" ,pkg-config))) + (inputs + `(("ccrtp" ,ccrtp) + ("ucommon" ,ucommon))) + (synopsis "C++ Implementation of ZRTP protocol") + (description "GNU ZRTP C++ provides a library that adds ZRTP support to the +GNU ccRTP stack and serves as library for other RTP stacks +(PJSIP, GStreamer).") + (home-page "https://www.gnu.org/software/ccrtp/zrtp") + (license license:lgpl3+))) (define-public osip (package @@ -593,59 +655,57 @@ Mumble consists of two applications for separate usage: (package (name "twinkle") (version "1.10.2") - (source (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/LubosD/twinkle") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "0s0gi03xwvzp02ah4q6j33r9jx9nbayr6dxlg2ck9pwbay1nq1hx")))) - (build-system cmake-build-system) + (source + (origin + (method git-fetch) + (uri + (git-reference + (url "https://github.com/LubosD/twinkle") + (commit + (string-append "v" version)))) + (file-name + (git-file-name name version)) + (patches + (search-patches "twinkle-bcg729.patch")) ; To support new BCG729 API. + (sha256 + (base32 + "0s0gi03xwvzp02ah4q6j33r9jx9nbayr6dxlg2ck9pwbay1nq1hx")))) + (build-system qt-build-system) (arguments - `(#:tests? #f ; no test target - #:configure-flags '("-DWITH_SPEEX=On") - #:phases - (modify-phases %standard-phases - (add-after 'install 'wrap-executable - (lambda* (#:key inputs outputs #:allow-other-keys) - (let ((out (assoc-ref outputs "out"))) - (wrap-program (string-append out "/bin/twinkle") - `("QT_PLUGIN_PATH" ":" prefix - ,(map (lambda (label) - (string-append (assoc-ref inputs label) - "/lib/qt5/plugins")) - '("qtbase" "qtdeclarative"))) - `("QML2_IMPORT_PATH" ":" prefix - ,(map (lambda (label) - (string-append (assoc-ref inputs label) - "/lib/qt5/qml")) - '("qtdeclarative" "qtquickcontrols")))) - #t)))))) + `(#:tests? #f ; no test target + #:configure-flags + (list + ;; FIX-ME: Make Twinkle compatible with libre version of iLBC. + ;; "-DWITH_ILBC=On" ; For iLBC Codec Support + "-DWITH_ZRTP=On" ; For ZRTP Support + "-DWITH_G729=On" ; For G729 Codec Support + "-DWITH_SPEEX=On"))) ; For Speex Codec Support (native-inputs `(("bison" ,bison) ("flex" ,flex) - ("readline" ,readline) - ("file" ,file) - ("ucommon" ,ucommon) + ("qttools" ,qttools))) + (inputs + `(("alsa-lib" ,alsa-lib) + ("bcg729" ,bcg729) + ("zrtpcpp" ,zrtpcpp) ("ccrtp" ,ccrtp) + ("file" ,file) + ("libilbc" ,libilbc) + ("libsndfile" ,libsndfile) ("libxml2" ,libxml2) + ("qtbase" ,qtbase) + ("qtdeclarative" ,qtdeclarative) + ("qtquickcontrols" ,qtquickcontrols) + ("readline" ,readline) ("speex" ,speex) ("speexdsp" ,speexdsp) - ("libsndfile" ,libsndfile) - ("alsa-lib" ,alsa-lib) - ("qttools" ,qttools))) - (inputs - `(("qtbase" ,qtbase) - ("qtdeclarative" ,qtdeclarative) - ("qtquickcontrols" ,qtquickcontrols))) - (home-page "http://twinkle.dolezel.info/") + ("ucommon" ,ucommon))) (synopsis "Softphone for voice over IP and instant messaging") (description "Twinkle is a softphone for your voice over IP and instant -messaging communcations using the SIP protocol. You can use it for direct IP -phone to IP phone communication or in a network using a SIP proxy to route your -calls and messages") +messaging communcations using the SIP protocol. You can use it for direct +IP phone to IP phone communication or in a network using a SIP proxy to route +your calls and messages.") + (home-page "http://twinkle.dolezel.info/") (license license:gpl2+))) (define-public pjproject diff --git a/gnu/services/base.scm b/gnu/services/base.scm index 6ed1f1dbf7..6ea7ef8e7e 100644 --- a/gnu/services/base.scm +++ b/gnu/services/base.scm @@ -1316,13 +1316,17 @@ Service Switch}, for an example." (documentation "Run the syslog daemon (syslogd).") (provision '(syslogd)) (requirement '(user-processes)) - (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")) + (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)))) (stop #~(make-kill-destructor)))))) ;; Snippet adapted from the GNU inetutils manual. diff --git a/gnu/services/dbus.scm b/gnu/services/dbus.scm index 7b3c8100e2..e015d3f68d 100644 --- a/gnu/services/dbus.scm +++ b/gnu/services/dbus.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2013, 2014, 2015, 2016, 2017, 2019 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2013, 2014, 2015, 2016, 2017, 2019, 2020 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2015 Sou Bunnbu <iyzsong@gmail.com> ;;; ;;; This file is part of GNU Guix. @@ -363,7 +363,13 @@ tuples, are all set as environment variables when the bus daemon launches it." (append (polkit-configuration-actions config) actions))))) - (default-value (polkit-configuration)))) + (default-value (polkit-configuration)) + (description + "Run the +@uref{http://www.freedesktop.org/wiki/Software/polkit/, Polkit privilege +management service}, which allows system administrators to grant access to +privileged operations in a structured way. Polkit is a requirement for most +desktop environments, such as GNOME."))) (define* (polkit-service #:key (polkit polkit)) "Return a service that runs the diff --git a/gnu/services/dict.scm b/gnu/services/dict.scm index 70b05e8f80..519ed3eca2 100644 --- a/gnu/services/dict.scm +++ b/gnu/services/dict.scm @@ -1,6 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2016 Sou Bunnbu <iyzsong@gmail.com> -;;; Copyright © 2016, 2017, 2018 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2016, 2017, 2018, 2020 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2017 Huang Ying <huang.ying.caritas@gmail.com> ;;; ;;; This file is part of GNU Guix. @@ -174,7 +174,12 @@ database { (const %dicod-activation)) (service-extension shepherd-root-service-type dicod-shepherd-service))) - (default-value (dicod-configuration)))) + (default-value (dicod-configuration)) + (description + "Run @command{dicod}, the dictionary server of +@uref{https://www.gnu.org/software/dico, GNU Dico}. @command{dicod} +implements the standard DICT protocol supported by clients such as +@command{dico} and GNOME Dictionary."))) (define* (dicod-service #:key (config (dicod-configuration))) "Return a service that runs the @command{dicod} daemon, an implementation diff --git a/gnu/services/dns.scm b/gnu/services/dns.scm index 478c837d13..9caa3611be 100644 --- a/gnu/services/dns.scm +++ b/gnu/services/dns.scm @@ -639,7 +639,10 @@ (service-extension activation-service-type knot-activation) (service-extension account-service-type - (const %knot-accounts)))))) + (const %knot-accounts)))) + (description + "Run @uref{https://www.knot-dns.cz/, Knot}, an authoritative +name server for the @acronym{DNS, Domain Name System}."))) ;;; diff --git a/gnu/services/networking.scm b/gnu/services/networking.scm index 383b2b0d04..d6b0aee357 100644 --- a/gnu/services/networking.scm +++ b/gnu/services/networking.scm @@ -335,7 +335,9 @@ Protocol (DHCP) client, on all the non-loopback network interfaces." (name 'dhcpd) (extensions (list (service-extension shepherd-root-service-type dhcpd-shepherd-service) - (service-extension activation-service-type dhcpd-activation))))) + (service-extension activation-service-type dhcpd-activation))) + (description "Run a DHCP (Dynamic Host Configuration Protocol) daemon. The +daemon is responsible for allocating IP addresses to its client."))) ;;; diff --git a/gnu/services/shepherd.scm b/gnu/services/shepherd.scm index 655a45a936..826a3c2215 100644 --- a/gnu/services/shepherd.scm +++ b/gnu/services/shepherd.scm @@ -107,7 +107,11 @@ (extensions (list (service-extension boot-service-type shepherd-boot-gexp) (service-extension profile-service-type - (const (list shepherd))))))) + (const (list shepherd))))) + (description + "Run the GNU Shepherd as PID 1---i.e., the operating system's first +process. The Shepherd takes care of managing services such as daemons by +ensuring they are started and stopped in the right order."))) (define %shepherd-root-service ;; The root shepherd service, aka. PID 1. Its parameter is a list of diff --git a/gnu/services/xorg.scm b/gnu/services/xorg.scm index e6f64b30c1..2505bde97b 100644 --- a/gnu/services/xorg.scm +++ b/gnu/services/xorg.scm @@ -1,6 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2017 Andy Wingo <wingo@igalia.com> -;;; Copyright © 2013, 2014, 2015, 2016, 2017, 2019 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2013, 2014, 2015, 2016, 2017, 2019, 2020 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2015 Sou Bunnbu <iyzsong@gmail.com> ;;; Copyright © 2018, 2019 Timothy Sample <samplet@ngyro.com> ;;; Copyright © 2019 Jan (janneke) Nieuwenhuizen <janneke@gnu.org> @@ -619,7 +619,9 @@ reboot_cmd " shepherd "/sbin/reboot\n" (service-extension profile-service-type (const (list xterm))))) - (default-value (slim-configuration))))) + (default-value (slim-configuration)) + (description + "Run the SLiM graphical login manager for X11.")))) (define-deprecated (slim-service #:key (slim slim) (allow-empty-passwords? #t) auto-login? @@ -691,7 +693,11 @@ theme." (list (service-extension pam-root-service-type screen-locker-pam-services) (service-extension setuid-program-service-type - screen-locker-setuid-programs))))) + screen-locker-setuid-programs))) + (description + "Allow the given program to be used as a screen locker for +the graphical server by making it setuid-root, so it can authenticate users, +and by creating a PAM service for it."))) (define* (screen-locker-service package #:optional diff --git a/gnu/system/pam.scm b/gnu/system/pam.scm index 85f75517b1..ad02586be8 100644 --- a/gnu/system/pam.scm +++ b/gnu/system/pam.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2013, 2014, 2015, 2016, 2017, 2019 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2013, 2014, 2015, 2016, 2017, 2019, 2020 Ludovic Courtès <ludo@gnu.org> ;;; ;;; This file is part of GNU Guix. ;;; @@ -367,7 +367,13 @@ strings or string-valued gexps." ;; Arguments include <pam-service> as well as procedures. (compose concatenate) - (extend extend-configuration))) + (extend extend-configuration) + (description + "Configure the Pluggable Authentication Modules (PAM) for all +the specified @dfn{PAM services}. Each PAM service corresponds to a program, +such as @command{login} or @command{sshd}, and specifies for instance how the +program may authenticate users or what it should do when opening a new +session."))) (define* (pam-root-service base #:key (transform identity)) "The \"root\" PAM service, which collects <pam-service> instance and turns diff --git a/gnu/system/shadow.scm b/gnu/system/shadow.scm index a6f1d806cf..a69339bc07 100644 --- a/gnu/system/shadow.scm +++ b/gnu/system/shadow.scm @@ -378,7 +378,10 @@ the /etc/skel directory for those." (service-extension user-processes-service-type (const '(user-homes))) (service-extension etc-service-type - etc-files))))) + etc-files))) + (description + "Ensure the specified user accounts and groups exist, as well +as each account home directory."))) (define (account-service accounts+groups skeletons) "Return a <service> that takes care of user accounts and user groups, with diff --git a/gnu/system/vm.scm b/gnu/system/vm.scm index 4ea82cfd50..163e8b4e9c 100644 --- a/gnu/system/vm.scm +++ b/gnu/system/vm.scm @@ -439,13 +439,17 @@ system that is passed to 'populate-root-file-system'." (define* (system-docker-image os #:key (name "guix-docker-image") - (register-closures? (has-guix-service-type? os))) + (register-closures? (has-guix-service-type? os)) + shared-network?) "Build a docker image. OS is the desired <operating-system>. NAME is the -base name to use for the output file. When REGISTER-CLOSURES? is true, -register the closure of OS with Guix in the resulting Docker image. By -default, REGISTER-CLOSURES? is set to true only if a service of type -GUIX-SERVICE-TYPE is present in the services definition of the operating -system." +base name to use for the output file. When SHARED-NETWORK? is true, assume +that the container will share network with the host and thus doesn't need a +DHCP client, nscd, and so on. + +When REGISTER-CLOSURES? is true, register the closure of OS with Guix in the +resulting Docker image. By default, REGISTER-CLOSURES? is set to true only if +a service of type GUIX-SERVICE-TYPE is present in the services definition of +the operating system." (define schema (and register-closures? (local-file (search-path %load-path @@ -462,7 +466,9 @@ system." (let ((os (operating-system-with-gc-roots - (containerized-operating-system os '()) + (containerized-operating-system os '() + #:shared-network? + shared-network?) (list boot-program))) (name (string-append name ".tar.gz")) (graph "system-graph")) |