Archived
1
0
Fork 0

Merge branch 'master' into staging

This commit is contained in:
Marius Bakke 2019-11-28 16:47:01 +01:00
commit 34f849a945
No known key found for this signature in database
GPG key ID: A2A06DF2A33A54FA
19 changed files with 337 additions and 89 deletions

View file

@ -278,6 +278,7 @@ its <pre class=\"lisp\"> blocks (as produced by 'makeinfo --html')."
(define entity->string (define entity->string
(match-lambda (match-lambda
("rArr" "⇒") ("rArr" "⇒")
("rarr" "→")
("hellip" "…") ("hellip" "…")
("rsquo" "") ("rsquo" "")
(e (pk 'unknown-entity e) (primitive-exit 2)))) (e (pk 'unknown-entity e) (primitive-exit 2))))

View file

@ -68,6 +68,7 @@ Copyright @copyright{} 2019 Ivan Petkov@*
Copyright @copyright{} 2019 Jakob L. Kreuze@* Copyright @copyright{} 2019 Jakob L. Kreuze@*
Copyright @copyright{} 2019 Kyle Andrews@* Copyright @copyright{} 2019 Kyle Andrews@*
Copyright @copyright{} 2019 Alex Griffin@* Copyright @copyright{} 2019 Alex Griffin@*
Copyright @copyright{} 2019 Guillaume Le Vaillant@*
Permission is granted to copy, distribute and/or modify this document Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3 or under the terms of the GNU Free Documentation License, Version 1.3 or
@ -305,6 +306,7 @@ Services
* Virtualization Services:: Virtualization services. * Virtualization Services:: Virtualization services.
* Version Control Services:: Providing remote access to Git repositories. * Version Control Services:: Providing remote access to Git repositories.
* Game Services:: Game servers. * Game Services:: Game servers.
* PAM Mount Service:: Service to mount volumes when logging in.
* Miscellaneous Services:: Other services. * Miscellaneous Services:: Other services.
Defining Services Defining Services
@ -11931,6 +11933,7 @@ declaration.
* Virtualization Services:: Virtualization services. * Virtualization Services:: Virtualization services.
* Version Control Services:: Providing remote access to Git repositories. * Version Control Services:: Providing remote access to Git repositories.
* Game Services:: Game servers. * Game Services:: Game servers.
* PAM Mount Service:: Service to mount volumes when logging in.
* Guix Services:: Services relating specifically to Guix. * Guix Services:: Services relating specifically to Guix.
* Miscellaneous Services:: Other services. * Miscellaneous Services:: Other services.
@end menu @end menu
@ -24656,6 +24659,89 @@ The port to bind the server to.
@end deftp @end deftp
@node PAM Mount Service
@subsection PAM Mount Service
@cindex pam-mount
The @code{(gnu services pam-mount)} module provides a service allowing
users to mount volumes when they log in. It should be able to mount any
volume format supported by the system.
@defvar {Scheme Variable} pam-mount-service-type
Service type for PAM Mount support.
@end defvar
@deftp {Data Type} pam-mount-configuration
Data type representing the configuration of PAM Mount.
It takes the following parameters:
@table @asis
@item @code{rules}
The configuration rules that will be used to generate
@file{/etc/security/pam_mount.conf.xml}.
The configuration rules are SXML elements (@pxref{SXML,,, guile, GNU
Guile Reference Manual}), and the the default ones don't mount anything
for anyone at login:
@lisp
`((debug (@@ (enable "0")))
(mntoptions (@@ (allow ,(string-join
'("nosuid" "nodev" "loop"
"encryption" "fsck" "nonempty"
"allow_root" "allow_other")
","))))
(mntoptions (@@ (require "nosuid,nodev")))
(logout (@@ (wait "0")
(hup "0")
(term "no")
(kill "no")))
(mkmountpoint (@@ (enable "1")
(remove "true"))))
@end lisp
Some @code{volume} elements must be added to automatically mount volumes
at login. Here's an example allowing the user @code{alice} to mount her
encrypted @code{HOME} directory and allowing the user @code{bob} to mount
the partition where he stores his data:
@lisp
(define pam-mount-rules
`((debug (@@ (enable "0")))
(volume (@@ (user "alice")
(fstype "crypt")
(path "/dev/sda2")
(mountpoint "/home/alice")))
(volume (@@ (user "bob")
(fstype "auto")
(path "/dev/sdb3")
(mountpoint "/home/bob/data")
(options "defaults,autodefrag,compress")))
(mntoptions (@@ (allow ,(string-join
'("nosuid" "nodev" "loop"
"encryption" "fsck" "nonempty"
"allow_root" "allow_other")
","))))
(mntoptions (@@ (require "nosuid,nodev")))
(logout (@@ (wait "0")
(hup "0")
(term "no")
(kill "no")))
(mkmountpoint (@@ (enable "1")
(remove "true")))))
(service pam-mount-service-type
(pam-mount-configuration
(rules pam-mount-rules)))
@end lisp
The complete list of possible options can be found in the man page for
@uref{http://pam-mount.sourceforge.net/pam_mount.conf.5.html, pam_mount.conf}.
@end table
@end deftp
@node Guix Services @node Guix Services
@subsection Guix Services @subsection Guix Services

View file

@ -551,6 +551,7 @@ GNU_SYSTEM_MODULES = \
%D%/services/networking.scm \ %D%/services/networking.scm \
%D%/services/nix.scm \ %D%/services/nix.scm \
%D%/services/nfs.scm \ %D%/services/nfs.scm \
%D%/services/pam-mount.scm \
%D%/services/security-token.scm \ %D%/services/security-token.scm \
%D%/services/shepherd.scm \ %D%/services/shepherd.scm \
%D%/services/sound.scm \ %D%/services/sound.scm \

View file

@ -5813,14 +5813,14 @@ clustering.")
(define-public r-factominer (define-public r-factominer
(package (package
(name "r-factominer") (name "r-factominer")
(version "1.42") (version "2.0")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
(uri (cran-uri "FactoMineR" version)) (uri (cran-uri "FactoMineR" version))
(sha256 (sha256
(base32 (base32
"1yl16inb2m89l1czgaf0pgy9655dpr751hyx92yw6rqpd2ryznac")))) "0qiw60ypf3bf5xsqz2b9l82i4jvprjm8lzpp12lhl8d9j5s8m0j8"))))
(properties `((upstream-name . "FactoMineR"))) (properties `((upstream-name . "FactoMineR")))
(build-system r-build-system) (build-system r-build-system)
(propagated-inputs (propagated-inputs
@ -5828,6 +5828,8 @@ clustering.")
("r-cluster" ,r-cluster) ("r-cluster" ,r-cluster)
("r-ellipse" ,r-ellipse) ("r-ellipse" ,r-ellipse)
("r-flashclust" ,r-flashclust) ("r-flashclust" ,r-flashclust)
("r-ggplot2" ,r-ggplot2)
("r-ggrepel" ,r-ggrepel)
("r-lattice" ,r-lattice) ("r-lattice" ,r-lattice)
("r-leaps" ,r-leaps) ("r-leaps" ,r-leaps)
("r-mass" ,r-mass) ("r-mass" ,r-mass)
@ -6419,14 +6421,14 @@ documents.")
(define-public r-writexl (define-public r-writexl
(package (package
(name "r-writexl") (name "r-writexl")
(version "1.1") (version "1.2")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
(uri (cran-uri "writexl" version)) (uri (cran-uri "writexl" version))
(sha256 (sha256
(base32 (base32
"0w4wnpl3yhaqp63p32bk60xrbmd7xd11kxifjbzrghi7d4483a46")))) "09fhdip6igcg97fjx4c7727cx2lb49l4d74l4i8rg2bag2s5lrj3"))))
(build-system r-build-system) (build-system r-build-system)
(inputs `(("zlib" ,zlib))) (inputs `(("zlib" ,zlib)))
(home-page "https://github.com/ropensci/writexl") (home-page "https://github.com/ropensci/writexl")
@ -8068,14 +8070,14 @@ Hothorn, Westfall, 2010, CRC Press).")
(define-public r-emmeans (define-public r-emmeans
(package (package
(name "r-emmeans") (name "r-emmeans")
(version "1.4.2") (version "1.4.3.01")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
(uri (cran-uri "emmeans" version)) (uri (cran-uri "emmeans" version))
(sha256 (sha256
(base32 (base32
"1sxwbh6sym2shrj7gva8q96ca2csqz3081q4d84avpxz15dfz1z1")))) "16v5j31516nbqnj2zhgqvyp5yxd4zcs5zi0aspa5plr2qikvrkmg"))))
(build-system r-build-system) (build-system r-build-system)
(propagated-inputs (propagated-inputs
`(("r-estimability" ,r-estimability) `(("r-estimability" ,r-estimability)
@ -10044,14 +10046,14 @@ Touzet and Varre (2007).")
(define-public r-rnifti (define-public r-rnifti
(package (package
(name "r-rnifti") (name "r-rnifti")
(version "1.0.0") (version "1.0.1")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
(uri (cran-uri "RNifti" version)) (uri (cran-uri "RNifti" version))
(sha256 (sha256
(base32 (base32
"0l61hjnzv043ibpkgrhc0yngaqmc58lkvii8j1dzh022z5wbqrj8")))) "0hfid40pgfi1ykqka8y3v0m7h0iyd6fbvycvqlad3ibmbg621f0w"))))
(properties `((upstream-name . "RNifti"))) (properties `((upstream-name . "RNifti")))
(build-system r-build-system) (build-system r-build-system)
(propagated-inputs `(("r-rcpp" ,r-rcpp))) (propagated-inputs `(("r-rcpp" ,r-rcpp)))
@ -10157,14 +10159,14 @@ handling.")
(define-public r-grimport (define-public r-grimport
(package (package
(name "r-grimport") (name "r-grimport")
(version "0.9-2") (version "0.9-3")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
(uri (cran-uri "grImport" version)) (uri (cran-uri "grImport" version))
(sha256 (sha256
(base32 (base32
"0n3y6dzy8s0ifvyrgwbly6cl14lmgd54dyi74s5i984apszpsp16")))) "109mrdvq06xq3zgn9ngz0c7zzgqkv5zbpvsb2i636vmlk6y4dpkd"))))
(properties `((upstream-name . "grImport"))) (properties `((upstream-name . "grImport")))
(build-system r-build-system) (build-system r-build-system)
(inputs (inputs
@ -10181,14 +10183,14 @@ PostScript pictures in R plots.")
(define-public r-grimport2 (define-public r-grimport2
(package (package
(name "r-grimport2") (name "r-grimport2")
(version "0.1-5") (version "0.2-0")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
(uri (cran-uri "grImport2" version)) (uri (cran-uri "grImport2" version))
(sha256 (sha256
(base32 (base32
"0dyb3nrrvxnkk9q5b136bdivcz1jj3ajx1kscm3k0kkpqjif0pls")))) "19q0dd8fpp1g4xf6sg5f8dxybwxjfw553ra6wgjd8b74fzca40m1"))))
(properties `((upstream-name . "grImport2"))) (properties `((upstream-name . "grImport2")))
(build-system r-build-system) (build-system r-build-system)
(propagated-inputs (propagated-inputs
@ -10212,18 +10214,17 @@ be imported and then exported via the @code{gridSVG} package.")
(define-public r-kohonen (define-public r-kohonen
(package (package
(name "r-kohonen") (name "r-kohonen")
(version "3.0.8") (version "3.0.10")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
(uri (cran-uri "kohonen" version)) (uri (cran-uri "kohonen" version))
(sha256 (sha256
(base32 (base32
"1zbfqa1qdlry8w6xhypkiknc5gn98v1ijhlsfka8zjg8ajhqgn1q")))) "1ck7j13x701g67bx81x7plszz804jfhl1yg42krcj9x88vm5cscr"))))
(build-system r-build-system) (build-system r-build-system)
(propagated-inputs (propagated-inputs
`(("r-mass" ,r-mass) `(("r-rcpp" ,r-rcpp)))
("r-rcpp" ,r-rcpp)))
(home-page "https://cran.r-project.org/web/packages/kohonen") (home-page "https://cran.r-project.org/web/packages/kohonen")
(synopsis "Supervised and unsupervised self-organising maps") (synopsis "Supervised and unsupervised self-organising maps")
(description (description
@ -15432,13 +15433,13 @@ function and interfaces to external frameworks.")
(define-public r-covr (define-public r-covr
(package (package
(name "r-covr") (name "r-covr")
(version "3.3.2") (version "3.4.0")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
(uri (cran-uri "covr" version)) (uri (cran-uri "covr" version))
(sha256 (sha256
(base32 "160w0m2d06kdd8dar57lpph39rxx55xwncbpl3b21l7j9drh1s5f")))) (base32 "0p44kr6yz5sqza5zvq6divqglzkpv0if9pjpjmzhmdaaddjrqzg5"))))
(properties `((upstream-name . "covr"))) (properties `((upstream-name . "covr")))
(build-system r-build-system) (build-system r-build-system)
(propagated-inputs (propagated-inputs
@ -15636,13 +15637,13 @@ effect size.")
(define-public r-rgdal (define-public r-rgdal
(package (package
(name "r-rgdal") (name "r-rgdal")
(version "1.4-7") (version "1.4-8")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
(uri (cran-uri "rgdal" version)) (uri (cran-uri "rgdal" version))
(sha256 (sha256
(base32 "05rvqy8lr2c3phaylmc4g5761208b0xrmgwn9c4a60x7p251dzjs")))) (base32 "1jd691amf3ghznq5im15gvhl6v6k25klpl75m4ngrqf9xlxaa3as"))))
(properties `((upstream-name . "rgdal"))) (properties `((upstream-name . "rgdal")))
(build-system r-build-system) (build-system r-build-system)
(inputs (inputs

View file

@ -3,7 +3,7 @@
;;; Copyright © 2015 Mathieu Lirzin <mthl@gnu.org> ;;; Copyright © 2015 Mathieu Lirzin <mthl@gnu.org>
;;; Copyright © 2015 Mark H Weaver <mhw@netris.org> ;;; Copyright © 2015 Mark H Weaver <mhw@netris.org>
;;; Copyright © 2016, 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2016, 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2016, 2019 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2016 Jan Nieuwenhuizen <janneke@gnu.org> ;;; Copyright © 2016 Jan Nieuwenhuizen <janneke@gnu.org>
;;; Copyright © 2016 Roel Janssen <roel@gnu.org> ;;; Copyright © 2016 Roel Janssen <roel@gnu.org>
;;; Copyright © 2016, 2017 Marius Bakke <mbakke@fastmail.com> ;;; Copyright © 2016, 2017 Marius Bakke <mbakke@fastmail.com>
@ -364,10 +364,10 @@ and can dramatically shorten the lifespan of the drive if left unchecked.")
("glib" ,glib) ("glib" ,glib)
("gtkmm" ,gtkmm) ("gtkmm" ,gtkmm)
("libxml2" ,libxml2) ("libxml2" ,libxml2)
("yelp-tools" ,yelp-tools) ("yelp-tools" ,yelp-tools)))
("itstool" ,itstool)))
(native-inputs (native-inputs
`(("intltool" ,intltool) `(("intltool" ,intltool)
("itstool" ,itstool)
("lvm2" ,lvm2) ; for tests ("lvm2" ,lvm2) ; for tests
("pkg-config" ,pkg-config))) ("pkg-config" ,pkg-config)))
(home-page "https://gparted.org/") (home-page "https://gparted.org/")

View file

@ -27,7 +27,7 @@
;;; Copyright © 2017, 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2017, 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2017, 2019 nee <nee-git@hidamari.blue> ;;; Copyright © 2017, 2019 nee <nee-git@hidamari.blue>
;;; Copyright © 2017 Clément Lassieur <clement@lassieur.org> ;;; Copyright © 2017 Clément Lassieur <clement@lassieur.org>
;;; Copyright © 2017 Marius Bakke <mbakke@fastmail.com> ;;; Copyright © 2017, 2019 Marius Bakke <mbakke@fastmail.com>
;;; Copyright © 2017, 2018 Rutger Helling <rhelling@mykolab.com> ;;; Copyright © 2017, 2018 Rutger Helling <rhelling@mykolab.com>
;;; Copyright © 2017 Roel Janssen <roel@gnu.org> ;;; Copyright © 2017 Roel Janssen <roel@gnu.org>
;;; Copyright © 2017, 2018, 2019 Nicolas Goaziou <mail@nicolasgoaziou.fr> ;;; Copyright © 2017, 2018, 2019 Nicolas Goaziou <mail@nicolasgoaziou.fr>
@ -5139,7 +5139,7 @@ Crowther & Woods, its original authors, in 1995. It has been known as
(define-public tome4 (define-public tome4
(package (package
(name "tome4") (name "tome4")
(version "1.6.1") (version "1.6.4")
(synopsis "Single-player, RPG roguelike game set in the world of Eyal") (synopsis "Single-player, RPG roguelike game set in the world of Eyal")
(source (source
(origin (origin
@ -5148,7 +5148,7 @@ Crowther & Woods, its original authors, in 1995. It has been known as
version ".tar.bz2")) version ".tar.bz2"))
(sha256 (sha256
(base32 (base32
"0c5a2bdyfccwkqnb6yqvzggyi2nk032v01kfc00zlgpdfzljcb9i")) "1hrh79aqmvwwd7idlr3lzpdpc9dgm1k5p7w2462chcjvd8vhfhb7"))
(modules '((guix build utils))) (modules '((guix build utils)))
(snippet (snippet
'(begin '(begin
@ -6888,6 +6888,22 @@ a fortress beyond the forbidden swamp.")
(("PATH_SUFFIXES \"src\" \"gtest\"") (("PATH_SUFFIXES \"src\" \"gtest\"")
"PATH_SUFFIXES \"src\"")) "PATH_SUFFIXES \"src\""))
#t)) #t))
(add-after 'unpack 'adjust-backward-cpp-includes
(lambda _
;; XXX: The bundled backward-cpp exports a CMake "interface"
;; that includes external libraries such as libdl from glibc.
;; By default, CMake interface includes are treated as "system
;; headers", and GCC behaves poorly when glibc is passed as a
;; system header (causing #include_next failures).
;; Here we prevent targets that consume the Backward::Backward
;; interface from treating it as "system includes".
(substitute* "CMakeLists.txt"
(("target_link_libraries\\((.+) Backward::Backward\\)" all target)
(string-append "set_property(TARGET " target " PROPERTY "
"NO_SYSTEM_FROM_IMPORTED true)\n"
all)))
#t))
(add-after 'unpack 'add-libiberty (add-after 'unpack 'add-libiberty
;; Build fails upon linking executables without this. ;; Build fails upon linking executables without this.
(lambda _ (lambda _
@ -6939,7 +6955,7 @@ a fortress beyond the forbidden swamp.")
"Multiplayer action game where you control small and nimble humanoids") "Multiplayer action game where you control small and nimble humanoids")
(description "OpenClonk is a multiplayer action/tactics/skill game. It is (description "OpenClonk is a multiplayer action/tactics/skill game. It is
often referred to as a mixture of The Settlers and Worms. In a simple 2D often referred to as a mixture of The Settlers and Worms. In a simple 2D
antfarm-style landscape, the player controls his crew of Clonks, small but antfarm-style landscape, the player controls a crew of Clonks, small but
robust humanoid beings. The game encourages free play but the normal goal is robust humanoid beings. The game encourages free play but the normal goal is
to either exploit valuable resources from the earth by building a mine or to either exploit valuable resources from the earth by building a mine or
fight each other on an arena-like map.") fight each other on an arena-like map.")

View file

@ -2431,6 +2431,7 @@ selection and URL hints.")))
(patches (search-patches (patches (search-patches
"vte-CVE-2012-2738-pt1.patch" "vte-CVE-2012-2738-pt1.patch"
"vte-CVE-2012-2738-pt2.patch")))) "vte-CVE-2012-2738-pt2.patch"))))
(build-system gnu-build-system)
(arguments (arguments
'(#:configure-flags '("--disable-python"))) '(#:configure-flags '("--disable-python")))
(native-inputs (native-inputs

View file

@ -107,14 +107,14 @@ more.")
(define-public r-igraph (define-public r-igraph
(package (package
(name "r-igraph") (name "r-igraph")
(version "1.2.4.1") (version "1.2.4.2")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
(uri (cran-uri "igraph" version)) (uri (cran-uri "igraph" version))
(sha256 (sha256
(base32 (base32
"1074y8mvprrqlkb4vwa2qc9l03r8d7p5vaaqacj4ljjs7dvcq6l9")))) "0scrbqb26pam8akblb4g9rkz888s0xffw3gcly78s4ijj67barxd"))))
(build-system r-build-system) (build-system r-build-system)
(native-inputs (native-inputs
`(("gfortran" ,gfortran))) `(("gfortran" ,gfortran)))

View file

@ -71,6 +71,7 @@
#:use-module (gnu packages readline) #:use-module (gnu packages readline)
#:use-module (gnu packages sdl) #:use-module (gnu packages sdl)
#:use-module (gnu packages swig) #:use-module (gnu packages swig)
#:use-module (gnu packages tbb)
#:use-module (gnu packages video) #:use-module (gnu packages video)
#:use-module (gnu packages xml) #:use-module (gnu packages xml)
#:use-module (gnu packages xorg) #:use-module (gnu packages xorg)
@ -87,14 +88,14 @@
(define-public blender (define-public blender
(package (package
(name "blender") (name "blender")
(version "2.80") (version "2.81")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append "https://download.blender.org/source/" (uri (string-append "https://download.blender.org/source/"
"blender-" version ".tar.gz")) "blender-" version ".tar.xz"))
(sha256 (sha256
(base32 (base32
"1h550jisdbis50hxwk5kxrvrk1a6sh2fsri3yyj66vhzbi87x7fd")))) "1prp0f2152f1sz23jlc86vndfvmplb7qhllikkirq7hgpykrshna"))))
(build-system cmake-build-system) (build-system cmake-build-system)
(arguments (arguments
(let ((python-version (version-major+minor (package-version python)))) (let ((python-version (version-major+minor (package-version python))))
@ -145,6 +146,8 @@
`(("boost" ,boost) `(("boost" ,boost)
("jemalloc" ,jemalloc) ("jemalloc" ,jemalloc)
("libx11" ,libx11) ("libx11" ,libx11)
("libxi" ,libxi)
("libxrender" ,libxrender)
("openimageio" ,openimageio) ("openimageio" ,openimageio)
("openexr" ,openexr) ("openexr" ,openexr)
("opensubdiv" ,opensubdiv) ("opensubdiv" ,opensubdiv)
@ -162,6 +165,7 @@
("openal" ,openal) ("openal" ,openal)
("python" ,python) ("python" ,python)
("python-numpy" ,python-numpy) ("python-numpy" ,python-numpy)
("tbb" ,tbb)
("zlib" ,zlib))) ("zlib" ,zlib)))
(home-page "https://blender.org/") (home-page "https://blender.org/")
(synopsis "3D graphics creation suite") (synopsis "3D graphics creation suite")

View file

@ -517,8 +517,9 @@ cards.")
(arguments (arguments
`(#:tests? #f)) ; both tests fail, require display `(#:tests? #f)) ; both tests fail, require display
(inputs (inputs
`(("qtbase" ,qtbase)))
(native-inputs
`(("extra-cmake-modules" ,extra-cmake-modules) `(("extra-cmake-modules" ,extra-cmake-modules)
("qtbase" ,qtbase)
("qttools" ,qttools))) ("qttools" ,qttools)))
(home-page "https://techbase.kde.org/Projects/Snorenotify") (home-page "https://techbase.kde.org/Projects/Snorenotify")
(synopsis "Qt notification framework") (synopsis "Qt notification framework")

View file

@ -6,7 +6,7 @@
;;; Copyright © 2016, 2017 ng0 <ng0@n0.is> ;;; Copyright © 2016, 2017 ng0 <ng0@n0.is>
;;; Copyright © 2016, 2017 Andy Patterson <ajpatter@uwaterloo.ca> ;;; Copyright © 2016, 2017 Andy Patterson <ajpatter@uwaterloo.ca>
;;; Copyright © 2017, 2019 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2017, 2019 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2017, 2018 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2017, 2018, 2019 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2017, 2019 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2017, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2018 Benjamin Slade <slade@jnanam.net> ;;; Copyright © 2018 Benjamin Slade <slade@jnanam.net>
;;; Copyright © 2018 Alex Vong <alexvong1995@gmail.com> ;;; Copyright © 2018 Alex Vong <alexvong1995@gmail.com>
@ -1469,16 +1469,17 @@ JavaScript (ECMAScript 3). It has basic support for ECMAScript 5.")
(define-public sbcl-parse-number (define-public sbcl-parse-number
(package (package
(name "sbcl-parse-number") (name "sbcl-parse-number")
(version "1.5") (version "1.7")
(source (source
(origin (origin
(method url-fetch) (method git-fetch)
(uri (string-append "https://github.com/sharplispers/parse-number/" (uri (git-reference
"archive/v" version ".tar.gz")) (url "https://github.com/sharplispers/parse-number/")
(file-name (string-append name "-" version ".tar.gz")) (commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256 (sha256
(base32 (base32
"1k6s4v65ksc1j5i0dprvzfvj213v6nah7i0rgd0726ngfjisj9ir")))) "0sk06ib1bhqv9y39vwnnw44vmbc4b0kvqm37xxmkxd4dwchq82d7"))))
(build-system asdf-build-system/sbcl) (build-system asdf-build-system/sbcl)
(home-page "http://www.cliki.net/PARSE-NUMBER") (home-page "http://www.cliki.net/PARSE-NUMBER")
(synopsis "Parse numbers") (synopsis "Parse numbers")
@ -4140,11 +4141,13 @@ encoding table that uses only URI-compatible characters.")
(version "1.1.7") (version "1.1.7")
(source (source
(origin (origin
(method url-fetch) (method git-fetch)
(uri (string-append (uri (git-reference
"https://github.com/edicl/chunga/archive/v" version ".tar.gz")) (url "https://github.com/edicl/chunga.git")
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256 (sha256
(base32 "0ra17kyc9l7qbaw003ly111r1cbn4zixbfq1ydr9cxw10v30q1n7")))) (base32 "0jzn3nyb3f22gm983rfk99smqs3mhb9ivjmasvhq9qla5cl9pyhd"))))
(build-system asdf-build-system/sbcl) (build-system asdf-build-system/sbcl)
(inputs (inputs
`(("sbcl-trivial-gray-streams" ,sbcl-trivial-gray-streams))) `(("sbcl-trivial-gray-streams" ,sbcl-trivial-gray-streams)))
@ -4923,6 +4926,7 @@ reset to 0 and you're able to read it again.")
(uri (git-reference (uri (git-reference
(url "https://github.com/fukamachi/lack.git") (url "https://github.com/fukamachi/lack.git")
(commit commit))) (commit commit)))
(file-name (git-file-name "lack-request" version))
(sha256 (sha256
(base32 "1avh4ygcj9xcx4m17nj0wnxxaisk26w4ljs2bibzxaln24x7pi85")))) (base32 "1avh4ygcj9xcx4m17nj0wnxxaisk26w4ljs2bibzxaln24x7pi85"))))
(build-system asdf-build-system/sbcl) (build-system asdf-build-system/sbcl)
@ -5039,6 +5043,7 @@ performance and simplicity in mind.")
(uri (git-reference (uri (git-reference
(url "https://github.com/fukamachi/lack.git") (url "https://github.com/fukamachi/lack.git")
(commit commit))) (commit commit)))
(file-name (git-file-name "lack-component" version))
(sha256 (sha256
(base32 "1avh4ygcj9xcx4m17nj0wnxxaisk26w4ljs2bibzxaln24x7pi85")))) (base32 "1avh4ygcj9xcx4m17nj0wnxxaisk26w4ljs2bibzxaln24x7pi85"))))
(build-system asdf-build-system/sbcl) (build-system asdf-build-system/sbcl)
@ -5074,6 +5079,7 @@ performance and simplicity in mind.")
(uri (git-reference (uri (git-reference
(url "https://github.com/fukamachi/lack.git") (url "https://github.com/fukamachi/lack.git")
(commit commit))) (commit commit)))
(file-name (git-file-name "lack-util" version))
(sha256 (sha256
(base32 "1avh4ygcj9xcx4m17nj0wnxxaisk26w4ljs2bibzxaln24x7pi85")))) (base32 "1avh4ygcj9xcx4m17nj0wnxxaisk26w4ljs2bibzxaln24x7pi85"))))
(build-system asdf-build-system/sbcl) (build-system asdf-build-system/sbcl)
@ -5111,6 +5117,7 @@ performance and simplicity in mind.")
(uri (git-reference (uri (git-reference
(url "https://github.com/fukamachi/lack.git") (url "https://github.com/fukamachi/lack.git")
(commit commit))) (commit commit)))
(file-name (git-file-name "lack-middleware-backtrace" version))
(sha256 (sha256
(base32 "1avh4ygcj9xcx4m17nj0wnxxaisk26w4ljs2bibzxaln24x7pi85")))) (base32 "1avh4ygcj9xcx4m17nj0wnxxaisk26w4ljs2bibzxaln24x7pi85"))))
(build-system asdf-build-system/sbcl) (build-system asdf-build-system/sbcl)
@ -5193,6 +5200,7 @@ mime-type of a file.")
(uri (git-reference (uri (git-reference
(url "https://github.com/fukamachi/lack.git") (url "https://github.com/fukamachi/lack.git")
(commit commit))) (commit commit)))
(file-name (git-file-name "lack-middleware-static" version))
(sha256 (sha256
(base32 "1avh4ygcj9xcx4m17nj0wnxxaisk26w4ljs2bibzxaln24x7pi85")))) (base32 "1avh4ygcj9xcx4m17nj0wnxxaisk26w4ljs2bibzxaln24x7pi85"))))
(build-system asdf-build-system/sbcl) (build-system asdf-build-system/sbcl)
@ -5232,6 +5240,7 @@ performance and simplicity in mind.")
(uri (git-reference (uri (git-reference
(url "https://github.com/fukamachi/lack.git") (url "https://github.com/fukamachi/lack.git")
(commit commit))) (commit commit)))
(file-name (git-file-name "lack" version))
(sha256 (sha256
(base32 "1avh4ygcj9xcx4m17nj0wnxxaisk26w4ljs2bibzxaln24x7pi85")))) (base32 "1avh4ygcj9xcx4m17nj0wnxxaisk26w4ljs2bibzxaln24x7pi85"))))
(build-system asdf-build-system/sbcl) (build-system asdf-build-system/sbcl)

View file

@ -4088,8 +4088,7 @@ convert between colorspaces like sRGB, XYZ, CIEL*a*b*, CIECAM02, CAM02-UCS, etc.
(assoc-ref inputs "jquery-ui") (assoc-ref inputs "jquery-ui")
"-d" dir)) "-d" dir))
#t)) #t))
(delete 'check) (replace 'check
(add-after 'install 'check
(lambda* (#:key outputs inputs #:allow-other-keys) (lambda* (#:key outputs inputs #:allow-other-keys)
(add-installed-pythonpath inputs outputs) (add-installed-pythonpath inputs outputs)
(invoke "python" "tests.py" "-v" (invoke "python" "tests.py" "-v"
@ -4147,6 +4146,7 @@ toolkits.")
(assoc-ref inputs "jquery-ui") (assoc-ref inputs "jquery-ui")
"-d" dir)) "-d" dir))
#t)) #t))
(delete 'fix-and-disable-failing-tests)
(delete 'check))))) ; These tests weren't run the the past. (delete 'check))))) ; These tests weren't run the the past.
;; Make sure to use special packages for Python 2 instead ;; Make sure to use special packages for Python 2 instead
;; of those automatically rewritten by package-with-python2. ;; of those automatically rewritten by package-with-python2.

View file

@ -567,14 +567,14 @@ also flexible enough to handle most nonstandard requirements.")
(define-public r-matrix (define-public r-matrix
(package (package
(name "r-matrix") (name "r-matrix")
(version "1.2-17") (version "1.2-18")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
(uri (cran-uri "Matrix" version)) (uri (cran-uri "Matrix" version))
(sha256 (sha256
(base32 (base32
"1k1zf92ycqr7fz44w7bp1p354ww7jg0wm23ybb8dzmbg37qfchyv")))) "06b1rc1vq65b271f2wpzhqkvhng8hwwnvjflzxkng50i52603zzp"))))
(properties `((upstream-name . "Matrix"))) (properties `((upstream-name . "Matrix")))
(build-system r-build-system) (build-system r-build-system)
(propagated-inputs (propagated-inputs
@ -2661,13 +2661,13 @@ certain criterion, e.g., it contains a certain regular file.")
(define-public r-rmarkdown (define-public r-rmarkdown
(package (package
(name "r-rmarkdown") (name "r-rmarkdown")
(version "1.17") (version "1.18")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
(uri (cran-uri "rmarkdown" version)) (uri (cran-uri "rmarkdown" version))
(sha256 (sha256
(base32 "18dj6nr1m79pv1pv9w2n0rhiidwqjb2w8w1rnpcwijwbz4i8d3k2")))) (base32 "0fykzbb5kjsqc8v6gjcdma7rmq0gailp30qij6plgna4d8nhjw3w"))))
(properties `((upstream-name . "rmarkdown"))) (properties `((upstream-name . "rmarkdown")))
(build-system r-build-system) (build-system r-build-system)
(propagated-inputs (propagated-inputs
@ -3332,14 +3332,14 @@ Stochastic Neighbor Embedding using a Barnes-Hut implementation.")
(define-public r-e1071 (define-public r-e1071
(package (package
(name "r-e1071") (name "r-e1071")
(version "1.7-2") (version "1.7-3")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
(uri (cran-uri "e1071" version)) (uri (cran-uri "e1071" version))
(sha256 (sha256
(base32 (base32
"0lipj692rjjw8rrhqh2k9i5dh8y2sjrw9q53rwm32irhx2f2j73j")))) "0pf2pjb590z0jikgv1037xcp7dq06mg3dzmyffjw6gk7dd9blbdv"))))
(build-system r-build-system) (build-system r-build-system)
(propagated-inputs (propagated-inputs
`(("r-class" ,r-class))) `(("r-class" ,r-class)))

View file

@ -1266,7 +1266,8 @@ streaming protocols.")
(build-system gnu-build-system) (build-system gnu-build-system)
;; FIXME: Add additional inputs once available. ;; FIXME: Add additional inputs once available.
(native-inputs (native-inputs
`(("pkg-config" ,pkg-config))) `(("pkg-config" ,pkg-config)
("yasm" ,yasm)))
(inputs (inputs
`(("alsa-lib" ,alsa-lib) `(("alsa-lib" ,alsa-lib)
("cdparanoia" ,cdparanoia) ("cdparanoia" ,cdparanoia)
@ -1297,7 +1298,6 @@ streaming protocols.")
("python" ,python-wrapper) ("python" ,python-wrapper)
("sdl" ,sdl) ("sdl" ,sdl)
("speex" ,speex) ("speex" ,speex)
("yasm" ,yasm)
("zlib" ,zlib))) ("zlib" ,zlib)))
(arguments (arguments
`(#:tests? #f ; no test target `(#:tests? #f ; no test target
@ -1943,7 +1943,11 @@ for use with HTML5 video.")
(patches (search-patches "avidemux-install-to-lib.patch")))) (patches (search-patches "avidemux-install-to-lib.patch"))))
(build-system cmake-build-system) (build-system cmake-build-system)
(native-inputs (native-inputs
`(("pkg-config" ,pkg-config))) `(("perl" ,perl)
("pkg-config" ,pkg-config)
("python" ,python-wrapper)
("qttools" ,qttools)
("yasm" ,yasm)))
;; FIXME: Once packaged, add libraries not found during the build. ;; FIXME: Once packaged, add libraries not found during the build.
(inputs (inputs
`(("alsa-lib" ,alsa-lib) `(("alsa-lib" ,alsa-lib)
@ -1958,14 +1962,9 @@ for use with HTML5 video.")
("libvorbis" ,libvorbis) ("libvorbis" ,libvorbis)
("libvpx" ,libvpx) ("libvpx" ,libvpx)
("libxv" ,libxv) ("libxv" ,libxv)
("perl" ,perl)
("pulseaudio" ,pulseaudio) ("pulseaudio" ,pulseaudio)
("python" ,python-wrapper)
("qtbase" ,qtbase) ("qtbase" ,qtbase)
("qttools" ,qttools)
("sdl" ,sdl)
("sqlite" ,sqlite) ("sqlite" ,sqlite)
("yasm" ,yasm)
("zlib" ,zlib))) ("zlib" ,zlib)))
(arguments (arguments
`(#:tests? #f ; no check target `(#:tests? #f ; no check target
@ -2002,7 +2001,6 @@ for use with HTML5 video.")
(let* ((out (assoc-ref outputs "out")) (let* ((out (assoc-ref outputs "out"))
(lib (string-append out "/lib")) (lib (string-append out "/lib"))
(top (getcwd)) (top (getcwd))
(sdl (assoc-ref inputs "sdl"))
(build_component (build_component
(lambda* (component srcdir #:optional (args '())) (lambda* (component srcdir #:optional (args '()))
(let ((builddir (string-append "build_" component))) (let ((builddir (string-append "build_" component)))
@ -2015,8 +2013,6 @@ for use with HTML5 video.")
(string-append "-DCMAKE_SHARED_LINKER_FLAGS=" (string-append "-DCMAKE_SHARED_LINKER_FLAGS="
"\"-Wl,-rpath=" lib "\"") "\"-Wl,-rpath=" lib "\"")
(string-append "-DAVIDEMUX_SOURCE_DIR=" top) (string-append "-DAVIDEMUX_SOURCE_DIR=" top)
(string-append "-DSDL_INCLUDE_DIR="
sdl "/include/SDL")
(string-append "../" srcdir) (string-append "../" srcdir)
"-DENABLE_QT5=True" "-DENABLE_QT5=True"
args) args)

111
gnu/services/pam-mount.scm Normal file
View file

@ -0,0 +1,111 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2019 Guillaume Le Vaillant <glv@posteo.net>
;;;
;;; This file is part of GNU Guix.
;;;
;;; GNU Guix is free software; you can redistribute it and/or modify it
;;; under the terms of the GNU General Public License as published by
;;; the Free Software Foundation; either version 3 of the License, or (at
;;; your option) any later version.
;;;
;;; GNU Guix is distributed in the hope that it will be useful, but
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;;; GNU General Public License for more details.
;;;
;;; You should have received a copy of the GNU General Public License
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
(define-module (gnu services pam-mount)
#:use-module (gnu packages admin)
#:use-module (gnu services)
#:use-module (gnu services configuration)
#:use-module (gnu system pam)
#:use-module (guix gexp)
#:use-module (guix records)
#:export (pam-mount-configuration
pam-mount-configuration?
pam-mount-service-type))
(define %pam-mount-default-configuration
`((debug (@ (enable "0")))
(mntoptions (@ (allow ,(string-join
'("nosuid" "nodev" "loop"
"encryption" "fsck" "nonempty"
"allow_root" "allow_other")
","))))
(mntoptions (@ (require "nosuid,nodev")))
(logout (@ (wait "0")
(hup "0")
(term "no")
(kill "no")))
(mkmountpoint (@ (enable "1")
(remove "true")))))
(define (make-pam-mount-configuration-file config)
(computed-file
"pam_mount.conf.xml"
#~(begin
(use-modules (sxml simple))
(call-with-output-file #$output
(lambda (port)
(sxml->xml
'(*TOP*
(*PI* xml "version='1.0' encoding='utf-8'")
(pam_mount
#$@(pam-mount-configuration-rules config)
(pmvarrun
#$(file-append pam-mount
"/sbin/pmvarrun -u '%(USER)' -o '%(OPERATION)'"))
(cryptmount
#$(file-append pam-mount
(string-append
"/sbin/mount.crypt"
" '%(if %(CIPHER),-ocipher=%(CIPHER))'"
" '%(if %(FSKEYCIPHER),"
"-ofsk_cipher=%(FSKEYCIPHER))'"
" '%(if %(FSKEYHASH),-ofsk_hash=%(FSKEYHASH))'"
" '%(if %(FSKEYPATH),-okeyfile=%(FSKEYPATH))'"
" '%(if %(OPTIONS),-o%(OPTIONS))'"
" '%(VOLUME)' '%(MNTPT)'")))
(cryptumount
#$(file-append pam-mount "/sbin/umount.crypt '%(MNTPT)'"))))
port))))))
(define-record-type* <pam-mount-configuration>
pam-mount-configuration
make-pam-mount-configuration
pam-mount-configuration?
(rules pam-mount-configuration-rules
(default %pam-mount-default-configuration)))
(define (pam-mount-etc-service config)
`(("security/pam_mount.conf.xml"
,(make-pam-mount-configuration-file config))))
(define (pam-mount-pam-service config)
(define optional-pam-mount
(pam-entry
(control "optional")
(module #~(string-append #$pam-mount "/lib/security/pam_mount.so"))))
(list (lambda (pam)
(if (member (pam-service-name pam)
'("login" "su" "slim" "gdm-password"))
(pam-service
(inherit pam)
(auth (append (pam-service-auth pam)
(list optional-pam-mount)))
(session (append (pam-service-session pam)
(list optional-pam-mount))))
pam))))
(define pam-mount-service-type
(service-type
(name 'pam-mount)
(extensions (list (service-extension etc-service-type
pam-mount-etc-service)
(service-extension pam-root-service-type
pam-mount-pam-service)))
(default-value (pam-mount-configuration))
(description "Activate PAM-Mount support. It allows mounting volumes for
specific users when they log in.")))

View file

@ -742,8 +742,8 @@ of index files."
(server-blocks (server-blocks
(append (nginx-configuration-server-blocks config) (append (nginx-configuration-server-blocks config)
servers))))) servers)))))
(default-value (default-value (nginx-configuration))
(nginx-configuration)))) (description "Run the nginx Web server.")))
(define-record-type* <fcgiwrap-configuration> fcgiwrap-configuration (define-record-type* <fcgiwrap-configuration> fcgiwrap-configuration
make-fcgiwrap-configuration make-fcgiwrap-configuration

View file

@ -292,6 +292,7 @@ of a package, and INPUT-NAMES, a list of package specifications such as
"intltool" "intltool"
"itstool" "itstool"
"qttools" "qttools"
"yasm" "nasm" "fasm"
"python-coverage" "python2-coverage" "python-coverage" "python2-coverage"
"python-cython" "python2-cython" "python-cython" "python2-cython"
"python-docutils" "python2-docutils" "python-docutils" "python2-docutils"

View file

@ -526,6 +526,9 @@ initial connection on which HTTP requests are sent."
(let connect ((port port) (let connect ((port port)
(requests requests) (requests requests)
(result seed)) (result seed))
(define batch
(at-most 1000 requests))
;; (format (current-error-port) "connecting (~a requests left)..." ;; (format (current-error-port) "connecting (~a requests left)..."
;; (length requests)) ;; (length requests))
(let ((p (or port (guix:open-connection-for-uri (let ((p (or port (guix:open-connection-for-uri
@ -536,7 +539,7 @@ initial connection on which HTTP requests are sent."
(when (file-port? p) (when (file-port? p)
(setvbuf p 'block (expt 2 16))) (setvbuf p 'block (expt 2 16)))
;; Send REQUESTS, up to a certain number, in a row. ;; Send BATCH in a row.
;; XXX: Do our own caching to work around inefficiencies when ;; XXX: Do our own caching to work around inefficiencies when
;; communicating over TLS: <http://bugs.gnu.org/22966>. ;; communicating over TLS: <http://bugs.gnu.org/22966>.
(let-values (((buffer get) (open-bytevector-output-port))) (let-values (((buffer get) (open-bytevector-output-port)))
@ -544,16 +547,21 @@ initial connection on which HTTP requests are sent."
(set-http-proxy-port?! buffer (http-proxy-port? p)) (set-http-proxy-port?! buffer (http-proxy-port? p))
(for-each (cut write-request <> buffer) (for-each (cut write-request <> buffer)
(at-most 1000 requests)) batch)
(put-bytevector p (get)) (put-bytevector p (get))
(force-output p)) (force-output p))
;; Now start processing responses. ;; Now start processing responses.
(let loop ((requests requests) (let loop ((sent batch)
(result result)) (processed 0)
(match requests (result result))
(match sent
(() (()
(reverse result)) (match (drop requests processed)
(()
(reverse result))
(remainder
(connect port remainder result))))
((head tail ...) ((head tail ...)
(let* ((resp (read-response p)) (let* ((resp (read-response p))
(body (response-body-port resp)) (body (response-body-port resp))
@ -564,9 +572,11 @@ initial connection on which HTTP requests are sent."
(match (assq 'connection (response-headers resp)) (match (assq 'connection (response-headers resp))
(('connection 'close) (('connection 'close)
(close-connection p) (close-connection p)
(connect #f tail result)) ;try again (connect #f ;try again
(append tail (drop requests processed))
result))
(_ (_
(loop tail result)))))))))) ;keep going (loop tail (+ 1 processed) result)))))))))) ;keep going
(define (read-to-eof port) (define (read-to-eof port)
"Read from PORT until EOF is reached. The data are discarded." "Read from PORT until EOF is reached. The data are discarded."

View file

@ -111,6 +111,7 @@
package-specification->name+version+output package-specification->name+version+output
supports-hyperlinks? supports-hyperlinks?
file-hyperlink
location->hyperlink location->hyperlink
relevance relevance
@ -1246,7 +1247,7 @@ documented at
(string-append "\x1b]8;;" uri "\x1b\\" (string-append "\x1b]8;;" uri "\x1b\\"
text "\x1b]8;;\x1b\\")) text "\x1b]8;;\x1b\\"))
(define (supports-hyperlinks? port) (define* (supports-hyperlinks? #:optional (port (current-output-port)))
"Return true if PORT is a terminal that supports hyperlink escapes." "Return true if PORT is a terminal that supports hyperlink escapes."
;; Note that terminals are supposed to ignore OSC escapes they don't ;; Note that terminals are supposed to ignore OSC escapes they don't
;; understand (this is the case of xterm as of version 349, for instance.) ;; understand (this is the case of xterm as of version 349, for instance.)
@ -1255,6 +1256,13 @@ documented at
(and (isatty?* port) (and (isatty?* port)
(not (getenv "INSIDE_EMACS")))) (not (getenv "INSIDE_EMACS"))))
(define* (file-hyperlink file #:optional (text file))
"Return TEXT with escapes for a hyperlink to FILE."
(hyperlink (string-append "file://" (gethostname)
(encode-and-join-uri-path
(string-split file #\/)))
text))
(define (location->hyperlink location) (define (location->hyperlink location)
"Return a string corresponding to LOCATION, with escapes for a hyperlink." "Return a string corresponding to LOCATION, with escapes for a hyperlink."
(let ((str (location->string location)) (let ((str (location->string location))
@ -1262,10 +1270,7 @@ documented at
(location-file location) (location-file location)
(search-path %load-path (location-file location))))) (search-path %load-path (location-file location)))))
(if file (if file
(hyperlink (string-append "file://" (gethostname) (file-hyperlink file str)
(encode-and-join-uri-path
(string-split file #\/)))
str)
str))) str)))
(define* (package->recutils p port #:optional (width (%text-width)) (define* (package->recutils p port #:optional (width (%text-width))
@ -1608,17 +1613,22 @@ DURATION-RELATION with the current time."
(define (display-generation profile number) (define (display-generation profile number)
"Display a one-line summary of generation NUMBER of PROFILE." "Display a one-line summary of generation NUMBER of PROFILE."
(unless (zero? number) (unless (zero? number)
(let ((header (format #f (highlight (G_ "Generation ~a\t~a")) number (let* ((file (generation-file-name profile number))
(date->string (link (if (supports-hyperlinks?)
(time-utc->date (cut file-hyperlink file <>)
(generation-time profile number)) identity))
;; TRANSLATORS: This is a format-string for date->string. (header (format #f (link (highlight (G_ "Generation ~a\t~a")))
;; Please choose a format that corresponds to the number
;; usual way of presenting dates in your locale. (date->string
;; See https://www.gnu.org/software/guile/manual/html_node/SRFI_002d19-Date-to-string.html (time-utc->date
;; for details. (generation-time profile number))
(G_ "~b ~d ~Y ~T")))) ;; TRANSLATORS: This is a format-string for date->string.
(current (generation-number profile))) ;; Please choose a format that corresponds to the
;; usual way of presenting dates in your locale.
;; See https://www.gnu.org/software/guile/manual/html_node/SRFI_002d19-Date-to-string.html
;; for details.
(G_ "~b ~d ~Y ~T"))))
(current (generation-number profile)))
(if (= number current) (if (= number current)
;; TRANSLATORS: The word "current" here is an adjective for ;; TRANSLATORS: The word "current" here is an adjective for
;; "Generation", as in "current generation". Use the appropriate ;; "Generation", as in "current generation". Use the appropriate