diff options
34 files changed, 1137 insertions, 406 deletions
@@ -2,7 +2,7 @@ #+TITLE: Guix NEWS – history of user-visible changes #+STARTUP: content hidestars -Copyright © 2013, 2014, 2015, 2016, 2017 Ludovic Courtès <ludo@gnu.org> +Copyright © 2013, 2014, 2015, 2016, 2017, 2018 Ludovic Courtès <ludo@gnu.org> Copying and distribution of this file, with or without modification, are permitted in any medium without royalty provided the copyright @@ -14,19 +14,39 @@ Please send Guix bug reports to bug-guix@gnu.org. ** Package management +*** ‘guix pull’ has been overhauled; it now populates ~/.config/guix/current *** ‘guix pack’ now supports building SquashFS images -*** ‘guix pack’ can now build relocatable tarballs +*** ‘guix pack’ can now build tarballs with relocatable executables +*** ‘guix system’ gives more hints for common configuration errors +*** ‘guix package’ no longer warns about harmless file collisions +*** ‘guix weather’ now reports continuous integration statistics +*** ‘guix import elpa’ has a new ‘--recursive’ option ** Distribution +*** New ‘initrd-modules’ field of ‘operating-system’ +*** New ‘file-system-label’ construct supersedes ‘title’ field of ‘file-system’ +*** Package for Python 2.x has been renamed from “python” to “python2” +*** RHEL6 systems based on kernel Linux 2.6 are supported again *** New services -enlightenment +enlightenment, qemu-binfmt ** Programming interfaces +*** ‘gnu-build-system’ now includes a ‘bootstrap’ phase to run ‘autoreconf’ +*** ‘gnu-build-system’ dumps contents of ‘test-suite.log’ upon test failures +*** New build systems: ‘android-ndk’ +*** New (guix store database) and (guix store deduplication) modules +*** The ‘guix-register’ C++ program no longer is *** package-full-name (guix packages) now uses "@" as its delimiter. (<https://bugs.gnu.org/31088>) + +** Noteworthy bug fixes + +** Native language support +*** the manual can now be translated and is partially translated into French + * Changes in 0.14.0 (since 0.13.0) ** Package management diff --git a/gnu/local.mk b/gnu/local.mk index 521c7f1691..34c0003f23 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -939,6 +939,7 @@ dist_patch_DATA = \ %D%/packages/patches/mozjs38-shell-version.patch \ %D%/packages/patches/mozjs38-tracelogger.patch \ %D%/packages/patches/mozjs38-version-detection.patch \ + %D%/packages/patches/mrrescue-support-love-11.patch \ %D%/packages/patches/mumble-1.2.19-abs.patch \ %D%/packages/patches/mumps-build-parallelism.patch \ %D%/packages/patches/mupen64plus-ui-console-notice.patch \ @@ -962,6 +963,7 @@ dist_patch_DATA = \ %D%/packages/patches/ocaml-bitstring-fix-configure.patch \ %D%/packages/patches/ocaml-CVE-2015-8869.patch \ %D%/packages/patches/ocaml-Add-a-.file-directive.patch \ + %D%/packages/patches/ocaml-enable-ocamldoc-reproducibility.patch \ %D%/packages/patches/ocaml-findlib-make-install.patch \ %D%/packages/patches/ocaml-graph-honor-source-date-epoch.patch \ %D%/packages/patches/omake-fix-non-determinism.patch \ @@ -1194,6 +1196,7 @@ dist_patch_DATA = \ %D%/packages/patches/wpa-supplicant-fix-nonce-reuse.patch \ %D%/packages/patches/wpa-supplicant-krack-followups.patch \ %D%/packages/patches/wxmaxima-do-not-use-old-gnuplot-parameters.patch \ + %D%/packages/patches/x265-fix-ppc64le-build.patch \ %D%/packages/patches/xboing-CVE-2004-0149.patch \ %D%/packages/patches/xdotool-fix-makefile.patch \ %D%/packages/patches/xf86-video-ark-remove-mibstore.patch \ @@ -1209,7 +1212,6 @@ dist_patch_DATA = \ %D%/packages/patches/xinetd-fix-fd-leak.patch \ %D%/packages/patches/xinetd-CVE-2013-4342.patch \ %D%/packages/patches/xmodmap-asprintf.patch \ - %D%/packages/patches/libyaml-CVE-2014-9130.patch \ %D%/packages/patches/zathura-pdf-mupdf-link-to-jpeg-libraries.patch \ %D%/packages/patches/zathura-plugindir-environment-variable.patch diff --git a/gnu/packages/admin.scm b/gnu/packages/admin.scm index d1bc004410..9fd5215172 100644 --- a/gnu/packages/admin.scm +++ b/gnu/packages/admin.scm @@ -2391,15 +2391,15 @@ tool for remote execution and deployment.") (define-public neofetch (package (name "neofetch") - (version "4.0.2") + (version "5.0.0") (source (origin - (method url-fetch) - (uri (string-append "https://github.com/dylanaraps/neofetch/" - "archive/" version ".tar.gz")) - (file-name (string-append name "-" version ".tar.gz")) + (method git-fetch) + (uri (git-reference + (url "https://github.com/dylanaraps/neofetch") + (commit version))) (sha256 (base32 - "014hlbzs6j4b669b64hnq8vc5knwiv9ncw9m9d193p9jsybxpm1w")))) + "0yzyi2p0d8xp576lxyv5m9h60dl1d5dmrn40aad307872835b9rr")))) (build-system gnu-build-system) (arguments `(#:tests? #f ; there are no tests @@ -2407,27 +2407,7 @@ tool for remote execution and deployment.") (list (string-append "PREFIX=" %output)) #:phases (modify-phases %standard-phases - (add-after 'unpack 'patch-target-directories - (lambda* (#:key outputs #:allow-other-keys) - (let ((out (assoc-ref outputs "out"))) - (substitute* "Makefile" - (("\\$\\(DESTDIR\\)/etc/") - "$(PREFIX)/etc/")) - (substitute* "neofetch" - (("\"/etc/neofetch") - (string-append "\"" out "/etc/neofetch")) - (("\"/usr/share/neofetch") - (string-append "\"" out "/share/neofetch")))) - #t)) - (delete 'configure) ; no configure script - (replace 'install - (lambda* (#:key make-flags outputs #:allow-other-keys) - (let* ((out (assoc-ref outputs "out")) - (doc (string-append out "/share/doc/" ,name "-" ,version)) - (etc (string-append doc "/examples/etc"))) - (zero? (apply system* `("make" ,@make-flags - ,(string-append "SYSCONFDIR=" etc) - "install"))))))))) + (delete 'configure)))) ; no configure script (home-page "https://github.com/dylanaraps/neofetch") (synopsis "System info script") (description "Neofetch is a CLI system information tool written in Bash. @@ -2669,7 +2649,7 @@ Python loading in HPC environments.") (let ((real-name "inxi")) (package (name "inxi-minimal") - (version "3.0.11-1") + (version "3.0.12-1") (source (origin (method git-fetch) @@ -2678,7 +2658,7 @@ Python loading in HPC environments.") (commit version))) (sha256 (base32 - "07wihl4gsamq98mhxvm6k4vpphym75467cxfa19b3g5ggpyq894g")))) + "1a2sjz90gzzvhp63x89hs0a424rkd13qrff2njqmjxp322zyp527")))) (build-system trivial-build-system) (inputs `(("bash" ,bash) diff --git a/gnu/packages/bioinformatics.scm b/gnu/packages/bioinformatics.scm index 42bc67e808..a7356743f0 100644 --- a/gnu/packages/bioinformatics.scm +++ b/gnu/packages/bioinformatics.scm @@ -6939,13 +6939,13 @@ Bioconductor, CRAN, and Github.") (define-public r-biocviews (package (name "r-biocviews") - (version "1.48.1") + (version "1.48.2") (source (origin (method url-fetch) (uri (bioconductor-uri "biocViews" version)) (sha256 (base32 - "1q5z6xxhjyibr165di7iyachw4gd4bdrxkd8rjkcklnngsrx1azm")))) + "01yiafayl1m5704xdd2cn3zjc78rs10dqyz66lr3qkf6d8w66938")))) (properties `((upstream-name . "biocViews"))) (build-system r-build-system) @@ -7083,14 +7083,14 @@ support for default values, positional argument support, etc.") (define-public r-optparse (package (name "r-optparse") - (version "1.4.4") + (version "1.6.0") (source (origin (method url-fetch) (uri (cran-uri "optparse" version)) (sha256 (base32 - "1ff4wmsszrb3spwfp7ynfs8w11qpy1sdzfxm1wk8dqqvdwris7qb")))) + "1d7v5gl45x4amsfmzn5zyyffyqlc7a82h01szlnda22viyxids0h")))) (build-system r-build-system) (propagated-inputs `(("r-getopt" ,r-getopt))) @@ -7587,13 +7587,13 @@ files.") (define-public r-delayedarray (package (name "r-delayedarray") - (version "0.6.0") + (version "0.6.1") (source (origin (method url-fetch) (uri (bioconductor-uri "DelayedArray" version)) (sha256 (base32 - "0n3w57cwy911q812wc8658y0v3xgpmg379sj98kfqdxa80z1mxdf")))) + "0sjwszxdi0vkj2i2di5i46gh9chc660yr3gs5nk9qnqp77713zds")))) (properties `((upstream-name . "DelayedArray"))) (build-system r-build-system) @@ -10070,14 +10070,14 @@ provide added flexibility for data combination and manipulation.") (define-public r-complexheatmap (package (name "r-complexheatmap") - (version "1.18.0") + (version "1.18.1") (source (origin (method url-fetch) (uri (bioconductor-uri "ComplexHeatmap" version)) (sha256 (base32 - "0z57mrginzd40niy51dvnyqgbrij05ji0dbwqs3x2as80sq28i3q")))) + "0qjwz1hzpjnc90jiinjkikfnr0shi72q3zfdjjz7pxydy0mglq8n")))) (properties `((upstream-name . "ComplexHeatmap"))) (build-system r-build-system) diff --git a/gnu/packages/cran.scm b/gnu/packages/cran.scm index aa5bdc958d..57603bf57a 100644 --- a/gnu/packages/cran.scm +++ b/gnu/packages/cran.scm @@ -424,6 +424,41 @@ the plog header-only C++ logging library, and a method to log to R's standard error stream.") (license license:expat))) +(define-public r-pls + (package + (name "r-pls") + (version "2.6-0") + (source + (origin + (method url-fetch) + (uri (cran-uri "pls" version)) + (sha256 + (base32 + "15j59p5x0rkdrk7iqzkipsy50rsyjl31w8zxc4w3v1j5gzxhi1rx")))) + (build-system r-build-system) + (home-page "http://mevik.net/work/software/pls.html") + (synopsis "Partial Least Squares and Principal Component Regression") + (description + "The pls package implements multivariate regression methods: Partial Least +Squares Regression (@dfn{PLSR}), Principal Component Regression (@dfn{PCR}), and +Canonical Powered Partial Least Squares (@dfn{CPPLS}). It supports: + +@itemize +@item several algorithms: the traditional orthogonal scores (@dfn{NIPALS}) PLS +algorithm, kernel PLS, wide kernel PLS, Simpls, and PCR through @code{svd} +@item multi-response models (or @dfn{PLS2}) +@item flexible cross-validation +@item Jackknife variance estimates of regression coefficients +@item extensive and flexible plots: scores, loadings, predictions, coefficients, +(R)MSEP, R², and correlation loadings +@item formula interface, modelled after @code{lm()}, with methods for predict, +print, summary, plot, update, etc. +@item extraction functions for coefficients, scores, and loadings +@item MSEP, RMSEP, and R² estimates +@item multiplicative scatter correction (@dfn{MSC}) +@end itemize\n") + (license license:gpl2))) + (define-public r-rcpp (package (name "r-rcpp") @@ -819,17 +854,19 @@ quantities.") (define-public r-progress (package (name "r-progress") - (version "1.1.2") + (version "1.2.0") (source (origin (method url-fetch) (uri (cran-uri "progress" version)) (sha256 (base32 - "1fxakchfjr5vj59s9sxynd7crpz97xj42438rmkhkf3rjpyspx59")))) + "1rhwm0bdw30z3rvl0bn56xprjl3zrdy7150w4gl4bkvn2d6h9fav")))) (build-system r-build-system) (propagated-inputs - `(("r-prettyunits" ,r-prettyunits) + `(("r-crayon" ,r-crayon) + ("r-hms" ,r-hms) + ("r-prettyunits" ,r-prettyunits) ("r-r6" ,r-r6))) (home-page "https://github.com/gaborcsardi/progress") (synopsis "Terminal progress bars") @@ -1714,14 +1751,14 @@ provides a one-row summary of model-level statistics.") (define-public r-recipes (package (name "r-recipes") - (version "0.1.2") + (version "0.1.3") (source (origin (method url-fetch) (uri (cran-uri "recipes" version)) (sha256 (base32 - "1car3a3mqn87pz049cbgkaayz86970mvkapk6al2k7jjw76306l9")))) + "1vqh3pxs4n1azhnd1lzg91vasya6g323kllhbrw177j7kdxqyimy")))) (build-system r-build-system) (propagated-inputs `(("r-broom" ,r-broom) @@ -1733,6 +1770,7 @@ provides a one-row summary of model-level statistics.") ("r-lubridate" ,r-lubridate) ("r-magrittr" ,r-magrittr) ("r-matrix" ,r-matrix) + ("r-pls" ,r-pls) ("r-purrr" ,r-purrr) ("r-rcpproll" ,r-rcpproll) ("r-rlang" ,r-rlang) @@ -1918,14 +1956,14 @@ analysis of multiply imputed data sets.") (define-public r-mice (package (name "r-mice") - (version "3.0.0") + (version "3.1.0") (source (origin (method url-fetch) (uri (cran-uri "mice" version)) (sha256 (base32 - "1p8a5ham90iaak4w17114pdnw535r2l9sxr402yrkc4gbwfbpdlq")))) + "0xpn215yfzib4hw09cwilnyg9zbvq460njavfvm84mvgwbm25byi")))) (build-system r-build-system) (propagated-inputs `(("r-broom" ,r-broom) @@ -2570,14 +2608,14 @@ iVAT).") (define-public r-xfun (package (name "r-xfun") - (version "0.1") + (version "0.2") (source (origin (method url-fetch) (uri (cran-uri "xfun" version)) (sha256 (base32 - "1sm51gmwgw876d6d1q8smxmfgfh6zsnykfx8qp8z6jmh0fvd89pj")))) + "0zl22fcw90kdvzkjyf6vbmdmn9rz3bl51522fasvmykypffyng4a")))) (build-system r-build-system) (home-page "https://github.com/yihui/xfun") (synopsis "Miscellaneous functions") @@ -3540,14 +3578,14 @@ extracting and replacing data in arrays.") (define-public r-prroc (package (name "r-prroc") - (version "1.3") + (version "1.3.1") (source (origin (method url-fetch) (uri (cran-uri "PRROC" version)) (sha256 (base32 - "03hvh92lq4i4w4mla9bvwrwb4626f4hvlxgdn57hamp70960vjyc")))) + "1m28h8pcd78049lz2qixhkcr9h5b3jik3maqzfbvq9y58z71i4a7")))) (properties `((upstream-name . "PRROC"))) (build-system r-build-system) (home-page "https://cran.r-project.org/web/packages/PRROC/") diff --git a/gnu/packages/databases.scm b/gnu/packages/databases.scm index 5aebc4ca40..c2005144b4 100644 --- a/gnu/packages/databases.scm +++ b/gnu/packages/databases.scm @@ -398,7 +398,7 @@ mapping from string keys to string values.") (define-public memcached (package (name "memcached") - (version "1.5.6") + (version "1.5.8") (source (origin (method url-fetch) @@ -406,7 +406,7 @@ mapping from string keys to string values.") "https://memcached.org/files/memcached-" version ".tar.gz")) (sha256 (base32 - "00szy9d4szaixi260dcd4846zci04y0sd47ia2lzg0bxkn2ywxcn")))) + "1ppnhsqv9047vm0rrmqla56y972f8qqjdb780iz6v922jjcc723k")))) (build-system gnu-build-system) (inputs `(("libevent" ,libevent) diff --git a/gnu/packages/emacs.scm b/gnu/packages/emacs.scm index a0ae045ab7..cdd72ec553 100644 --- a/gnu/packages/emacs.scm +++ b/gnu/packages/emacs.scm @@ -312,12 +312,12 @@ editor (without an X toolkit)" ) ((#:phases phases) `(modify-phases ,phases (add-after 'unpack 'autogen - (lambda _ - (zero? (system* "sh" "autogen.sh")))) + (lambda _ + (invoke "sh" "autogen.sh"))) ;; Build sometimes fails: deps/dispnew.d: No such file or directory (add-before 'build 'make-deps-dir (lambda _ - (zero? (system* "mkdir" "-p" "src/deps")))))))))) + (invoke "mkdir" "-p" "src/deps"))))))))) ;;; @@ -411,7 +411,7 @@ configuration files, such as .gitattributes, .gitignore, and .git/config.") (define-public emacs-with-editor (package (name "emacs-with-editor") - (version "2.7.2") + (version "2.7.3") (source (origin (method url-fetch) (uri (string-append @@ -420,7 +420,7 @@ configuration files, such as .gitattributes, .gitignore, and .git/config.") (file-name (string-append name "-" version ".tar.gz")) (sha256 (base32 - "1jqi3axcs0cb1pcv1jxxc2a09v6psrm33wwl6hmyshzl8kbxs2mv")))) + "1ln2s0kckzkv50qmr6x1kb2j30cfjii0vs6lpghg7ff4lav8jqgh")))) (build-system emacs-build-system) (propagated-inputs `(("emacs-dash" ,emacs-dash))) @@ -585,7 +585,7 @@ support for Git-SVN.") (modify-phases %standard-phases (add-before 'install 'make-info (lambda _ - (zero? (system* "make" "info"))))))) + (invoke "make" "info")))))) (native-inputs `(("texinfo" ,texinfo))) (propagated-inputs @@ -602,7 +602,7 @@ process, passing on the arguments as command line arguments.") (define-public emacs-ghub (package (name "emacs-ghub") - (version "2.0.0") + (version "2.0.1") (source (origin (method url-fetch) (uri (string-append @@ -611,14 +611,14 @@ process, passing on the arguments as command line arguments.") (file-name (string-append name "-" version ".tar.gz")) (sha256 (base32 - "1zrb3xk04a228g2ahx0r02d0d3xskj60q73qavvmm2i56r66cxvc")))) + "0d0qj5r1bm2aidi61rigrdaycxnyb7y1ivb3h8rpvvapsf8sk7z0")))) (build-system emacs-build-system) (arguments `(#:phases (modify-phases %standard-phases (add-before 'install 'make-info (lambda _ - (zero? (system* "make" "info"))))))) + (invoke "make" "info")))))) (native-inputs `(("texinfo" ,texinfo))) (home-page "https://github.com/magit/ghub") @@ -702,8 +702,7 @@ only a handful of functions that are not resource-specific.") files)) (with-directory-excursion "doc" - (unless (zero? (system* "makeinfo" "haskell-mode.texi")) - (error "makeinfo failed")) + (invoke "makeinfo" "haskell-mode.texi") (install-file "haskell-mode.info" info)) (copy-to-dir doc '("CONTRIBUTING.md" "NEWS" "README.md")) (copy-to-dir el-dir (find-files "." "\\.elc?")) @@ -794,7 +793,7 @@ provides an optional IDE-like error list.") (modify-phases %standard-phases (add-after 'unpack 'autoconf (lambda _ - (zero? (system* "autoconf")))) + (invoke "autoconf"))) (add-before 'configure 'support-emacs! (lambda _ ;; For some reason 'AC_PATH_EMACS' thinks that 'Emacs 26' is @@ -825,13 +824,13 @@ provides an optional IDE-like error list.") #t))) (replace 'install (lambda* (#:key outputs #:allow-other-keys) - (and (zero? (system* "make" "install" "install-icons")) - (with-directory-excursion - (string-append (assoc-ref outputs "out") - "/share/emacs/site-lisp") - (for-each delete-file '("ChangeLog" "ChangeLog.1")) - (symlink "w3m-load.el" "w3m-autoloads.el") - #t))))))) + (invoke "make" "install" "install-icons") + (with-directory-excursion + (string-append (assoc-ref outputs "out") + "/share/emacs/site-lisp") + (for-each delete-file '("ChangeLog" "ChangeLog.1")) + (symlink "w3m-load.el" "w3m-autoloads.el") + #t)))))) (home-page "http://emacs-w3m.namazu.org/") (synopsis "Simple Web browser for Emacs based on w3m") (description @@ -1154,7 +1153,7 @@ than @code{electric-indent-mode}.") (add-before 'install 'make-info (lambda _ (with-directory-excursion "docs" - (zero? (system* "make" "info"))))) + (invoke "make" "info")))) (add-after 'install 'install-info (lambda* (#:key outputs #:allow-other-keys) (let* ((out (assoc-ref outputs "out")) @@ -1455,13 +1454,12 @@ Maps directly inside Emacs.") (substitute* "Makefile" (("\\/usr\\/bin\\/gzip") (string-append (assoc-ref inputs "gzip") "/bin/gzip"))) - (zero? - (system* "make" - "clean" - "info" - (string-append "TEXINFODIR=" - (assoc-ref inputs "texinfo") - "/bin")))))) + (invoke "make" + "clean" + "info" + (string-append "TEXINFODIR=" + (assoc-ref inputs "texinfo") + "/bin"))))) (add-after 'install 'install-info (lambda* (#:key outputs #:allow-other-keys) (let* ((out (assoc-ref outputs "out")) @@ -1499,7 +1497,7 @@ diagrams.") (modify-phases %standard-phases (add-after 'unpack 'autogen (lambda _ - (zero? (system* "sh" "autogen.sh"))))))) + (invoke "sh" "autogen.sh")))))) (native-inputs `(("autoconf" ,autoconf) ("automake" ,automake) @@ -1564,7 +1562,7 @@ filters, new key bindings and faces. It can be enabled by (lambda _ (chdir "server") #t)) (add-after 'enter-server-dir 'autogen (lambda _ - (zero? (system* "bash" "autogen.sh")))) + (invoke "bash" "autogen.sh"))) ;; Build emacs side using 'emacs-build-system'. (add-after 'compress-documentation 'enter-lisp-dir @@ -1727,7 +1725,7 @@ management tasks from Emacs. To begin with, run @code{M-x guix-about} or (define-public emacs-d-mode (package (name "emacs-d-mode") - (version "2.0.8") + (version "2.0.9") (source (origin (method url-fetch) (uri (string-append @@ -1736,7 +1734,7 @@ management tasks from Emacs. To begin with, run @code{M-x guix-about} or (file-name (string-append name "-" version ".tar.gz")) (sha256 (base32 - "0knpgi55jm09282aqf8pv55zillpnpzf9f4sgm6gwsmvxf17xaw0")))) + "127aa77ix3p7w4g339bx026df9y649dahlr3v359z0hs40zjz3kd")))) (build-system emacs-build-system) (propagated-inputs `(("emacs-undercover" ,emacs-undercover))) @@ -2971,8 +2969,8 @@ in @code{html-mode}.") (substitute* "Makefile" (("infodir=/usr/local/info") (string-append "infodir=" info-dir))) - (system* "make" "html/index.html") - (system* "make" "slime.info") + (invoke "make" "html/index.html") + (invoke "make" "slime.info") (install-file "slime.info" info-dir) (copy-recursively "html" (string-append doc-dir "/html"))) (for-each (lambda (f) @@ -3652,9 +3650,9 @@ automatically.") (let* ((out (assoc-ref outputs "out")) (info (string-append out "/share/info"))) (with-directory-excursion "doc" - (unless (zero? (system* "makeinfo" "ivy.texi")) - (error "makeinfo failed")) - (install-file "ivy.info" info)))))))) + (invoke "makeinfo" "ivy.texi") + (install-file "ivy.info" info) + #t))))))) (propagated-inputs `(("emacs-hydra" ,emacs-hydra))) (native-inputs @@ -4106,14 +4104,15 @@ programming language.") (lambda* (#:key inputs #:allow-other-keys) (substitute* "Makeconf" (("SHELL = /bin/sh") - (string-append "SHELL = " (which "sh")))))) + (string-append "SHELL = " (which "sh")))) + #t)) ;; FIXME: the texlive-union insists on regenerating fonts. It stores ;; them in HOME, so it needs to be writeable. (add-before 'build 'set-HOME (lambda _ (setenv "HOME" "/tmp") #t)) (replace 'check (lambda _ - (zero? (system* "make" "test")))))))) + (invoke "make" "test"))))))) (inputs `(("emacs" ,emacs-minimal) ("r-minimal" ,r-minimal))) @@ -4727,36 +4726,38 @@ news items, openrc and runscripts.") (license license:gpl2+))) (define-public emacs-evil - (package - (name "emacs-evil") - (version "1.2.13") - (source - (origin - (method url-fetch) - (uri (string-append "https://github.com/emacs-evil/evil/archive/" - version ".tar.gz")) - (file-name (string-append name "-" version ".tar.gz")) - (sha256 - (base32 - "1z63zsxmsc6mh74wv6065carwqmgs7b7lz5044s12xvgsjfbwi8h")))) - (build-system emacs-build-system) - (propagated-inputs - `(("emacs-undo-tree" ,emacs-undo-tree) - ("emacs-goto-chg" ,emacs-goto-chg))) - (home-page "https://github.com/emacs-evil/evil") - (synopsis "Extensible Vi layer for Emacs") - (description - "Evil is an extensible vi layer for Emacs. It emulates the + (let ((commit "230b87212c81aaa68ef5547a6b998d9c365fe139")) + (package + (name "emacs-evil") + (version (git-version "1.2.13" "1" commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/emacs-evil/evil") + (commit commit))) + (file-name (string-append name "-" version "-checkout")) + (sha256 + (base32 + "0c9zy3bpck10gcrv79kd3h7i4ygd5bgbgy773n0lg7a2r5kwn1gx")))) + (build-system emacs-build-system) + (propagated-inputs + `(("emacs-undo-tree" ,emacs-undo-tree) + ("emacs-goto-chg" ,emacs-goto-chg))) + (home-page "https://github.com/emacs-evil/evil") + (synopsis "Extensible Vi layer for Emacs") + (description + "Evil is an extensible vi layer for Emacs. It emulates the main features of Vim, and provides facilities for writing custom extensions.") - (license license:gpl3+))) + (license license:gpl3+)))) (define-public emacs-evil-collection - (let ((commit "f40704a57fd33b4bfad64147a2b771fc8961fdfc") + (let ((commit "ac21b8957cfc22485cdaa316384edf9cb220d837") (revision "1")) (package (name "emacs-evil-collection") - (version (git-version "20180425" revision commit)) + (version (git-version "20180617" revision commit)) (source (origin (method git-fetch) (uri (git-reference @@ -4765,7 +4766,7 @@ extensions.") (file-name (string-append name "-" version "-checkout")) (sha256 (base32 - "0qn19k0f3isnbi1hkmcf3qjxbyvp23m5ak5ny7623qgwb2nwz1l5")))) + "082a3c5c2ls9ryqrl5kzb4z6bcprhqx8pypnlj1razbld3lny934")))) (build-system emacs-build-system) (propagated-inputs `(("emacs-evil" ,emacs-evil))) @@ -5866,7 +5867,7 @@ source file, @file{jl-encrypt.el}.") (define-public emacs-htmlize (package (name "emacs-htmlize") - (version "1.51") + (version "1.53") (source (origin (method url-fetch) @@ -5876,7 +5877,7 @@ source file, @file{jl-encrypt.el}.") (file-name (string-append name "-" version ".tar.gz")) (sha256 (base32 - "1fy1lybzrxl8a8r88f6p19nz8ygmvcxhxbnymkxh7jqaz25viwld")))) + "1lzaf9m1qr9dhw4nn53g6wszk2vqw95gpsbrc3y85bams4cn24ga")))) (build-system emacs-build-system) (home-page "https://github.com/hniksic/emacs-htmlize") (synopsis "Convert buffer text and decorations to HTML") @@ -6149,13 +6150,13 @@ which code derived from Kelvin H's org-page.") (modify-phases %standard-phases (add-after 'unpack 'regenerate-el-files (lambda* (#:key inputs #:allow-other-keys) - (zero? (system* "make" - (string-append "PROTO_PATH=" - (assoc-ref inputs "xcb-proto") - "/share/xcb") - (string-append "EMACS_BIN=" - (assoc-ref inputs "emacs") - "/bin/emacs -Q")))))))) + (invoke "make" + (string-append "PROTO_PATH=" + (assoc-ref inputs "xcb-proto") + "/share/xcb") + (string-append "EMACS_BIN=" + (assoc-ref inputs "emacs") + "/bin/emacs -Q"))))))) (native-inputs `(("xcb-proto" ,xcb-proto))) (home-page "https://github.com/ch11ng/xelb") (synopsis "X protocol Emacs Lisp binding") @@ -8968,10 +8969,10 @@ confused by comments or @code{foo-bar} matching @code{foo}.") (modify-phases %standard-phases (add-before 'install 'check (lambda* (#:key inputs #:allow-other-keys) - (zero? (system* "emacs" "--batch" "-L" "." - "-l" "test/m-buffer-test.el" - "-l" "test/m-buffer-at-test.el" - "-f" "ert-run-tests-batch-and-exit"))))))) + (invoke "emacs" "--batch" "-L" "." + "-l" "test/m-buffer-test.el" + "-l" "test/m-buffer-at-test.el" + "-f" "ert-run-tests-batch-and-exit")))))) (build-system emacs-build-system) (home-page "https://github.com/phillord/m-buffer-el") (synopsis "List oriented buffer operations for Emacs") @@ -10702,27 +10703,8 @@ Org-mode file, and citations of Zotero items in Pandoc Markdown files.") (license license:gpl3+))) (define-public emacs-evil-ediff - (package - (name "emacs-evil-ediff") - (version "20170724") - (source - (origin - (method url-fetch) - (uri (string-append - "https://github.com/emacs-evil/evil-ediff/archive/" - "67b0e69f65c196eff5b39dacb7a9ec05bb919c74" - ".tar.gz")) - (sha256 - (base32 - "0j2x26zfc6md54mjf76qpybil4yal70lp5bifcz62l1f8fc1vvlq")))) - (build-system emacs-build-system) - (propagated-inputs `(("emacs-evil" ,emacs-evil))) - (home-page "https://github.com/emacs-evil/evil-ediff") - (synopsis "Make Ediff a little evil") - (description - "This Emacs package configures Ediff to be friendlier to users of Vi-like -keybindings. Consult the help buffer for more information.") - (license license:gpl3+))) + ;; Evil-Ediff is included in Evil Collection from 20180617. + (deprecated-package "emacs-evil-ediff" emacs-evil-collection)) (define-public emacs-evil-magit (let ((commit "dbf5a646a7ce1c35c229dfdc423bd5ecd927a3a8")) @@ -10754,30 +10736,8 @@ describing the key binding changes.") (license license:gpl3+)))) (define-public emacs-evil-mu4e - (package - (name "emacs-evil-mu4e") - (version "0.0.8") - (source - (origin - (method url-fetch) - (uri (string-append - "https://github.com/JorisE/evil-mu4e/archive/" - "c03a0e11afda3092eb1461be09fa6a61ebc0e4f6" - ".tar.gz")) - (sha256 - (base32 - "1k3z5h04bqslrkq13paqf8pv9r0rf0zjl0zbb57ly043ds3nvxr2")))) - (build-system emacs-build-system) - (propagated-inputs - `(("emacs-dash" ,emacs-dash) - ("emacs-evil" ,emacs-evil) - ("mu" ,mu))) - (home-page "https://github.com/JorisE/evil-mu4e") - (synopsis "Evil-based key bindings for mu4e") - (description - "Use keybindings for the mu4e mail reader in Emacs that make sense for -Evil users.") - (license license:gpl3+))) + ;; Evil-mu4e is included in Evil Collection from 20180617. + (deprecated-package "emacs-evil-mu4e" emacs-evil-collection)) (define-public emacs-evil-multiedit (let ((commit "ea3d9177b74ab0bc65e55df9cc0a0b42e4ef815d")) @@ -11292,3 +11252,34 @@ file.") "@code{wgrep-helm} allows you to edit a @code{helm-grep-mode} buffer and apply those changes to the file buffer.") (license license:gpl3+)))) + +(define-public emacs-mu4e-conversation + (let ((commit "b60d6bd27d7220c3dd041ff2a090e29f2166a319")) + (package + (name "emacs-mu4e-conversation") + (version (git-version "20180615" "1" commit)) + (source + (origin + (method url-fetch) + (uri (string-append + "https://gitlab.com/Ambrevar/mu4e-conversation/" + "repository/archive.tar.gz?ref=" + commit)) + (file-name (string-append name "-" version "-checkout")) + (sha256 + (base32 + "0x8kmi0rmbaaxn5zicm1f9yb8ynxi8074hi2n0rvymlfpxbpn0ma")))) + (build-system emacs-build-system) + (propagated-inputs + `(("mu" ,mu))) + (home-page + "https://gitlab.com/Ambrevar/mu4e-conversation") + (synopsis + "Show a complete thread in a single buffer") + (description + "This package offers an alternate view to mu4e e-mail display. It +shows all e-mails of a thread in a single view, where each correspondant has +their own face. Threads can be displayed linearly (in which case e-mails are +displayed in chronological order) or as an Org document where the node tree +maps the thread tree.") + (license license:gpl3+)))) diff --git a/gnu/packages/game-development.scm b/gnu/packages/game-development.scm index 3d6a038d9d..b428fa77f2 100644 --- a/gnu/packages/game-development.scm +++ b/gnu/packages/game-development.scm @@ -6,7 +6,7 @@ ;;; Copyright © 2015, 2016, 2017 David Thompson <davet@gnu.org> ;;; Copyright © 2016, 2017, 2018 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2016, 2017 Kei Kebreau <kkebreau@posteo.net> -;;; Copyright © 2016 Ricardo Wurmus <rekado@elephly.net> +;;; Copyright © 2016, 2018 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2016, 2017 Julian Graham <joolean@gmail.com> ;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2017 Manolis Fragkiskos Ragkousis <manolis837@gmail.com> @@ -74,6 +74,7 @@ #:use-module (gnu packages python) #:use-module (gnu packages qt) #:use-module (gnu packages sdl) + #:use-module (gnu packages texinfo) #:use-module (gnu packages tls) #:use-module (gnu packages video) #:use-module (gnu packages xdisorg) @@ -1233,3 +1234,40 @@ related games such as Heretic and Hexen. It comes with a 3d preview mode and a 2D editor view.") (home-page "http://eureka-editor.sourceforge.net/") (license license:gpl2+))) + +(define-public guile-chickadee + (package + (name "guile-chickadee") + (version "0.2.0") + (source (origin + (method url-fetch) + (uri (string-append "https://files.dthompson.us/chickadee/" + "chickadee-" version ".tar.gz")) + (sha256 + (base32 + "10qx0ha5gsayybd186r1my7vc7rf5fbzp9jvmc4xg9a8wz8rqhah")))) + (build-system gnu-build-system) + (arguments + '(#:make-flags '("GUILE_AUTO_COMPILE=0"))) + (propagated-inputs + `(("guile-opengl" ,guile-opengl) + ("guile-sdl2" ,guile-sdl2))) + (inputs + `(("guile" ,guile-2.2))) + (native-inputs + `(("pkg-config" ,pkg-config) + ("texinfo" ,texinfo))) + (home-page "https://dthompson.us/projects/chickadee.html") + (synopsis "Game development toolkit for Guile Scheme with SDL2 and OpenGL") + (description "Chickadee is a game development toolkit for Guile Scheme +built on top of SDL2 and OpenGL. Chickadee aims to provide all the features +that parenthetically inclined game developers need to make 2D (and eventually +3D) games in Scheme, such as: + +@enumerate +@item extensible, fixed-timestep game loop +@item OpenGL-based rendering engine +@item keyboard, mouse, controller input +@item REPL-driven development model +@end enumerate\n") + (license license:gpl3+))) diff --git a/gnu/packages/games.scm b/gnu/packages/games.scm index 06ac1b80bb..65def5ae61 100644 --- a/gnu/packages/games.scm +++ b/gnu/packages/games.scm @@ -461,7 +461,7 @@ automata. The following features are available: (define-public meandmyshadow (package (name "meandmyshadow") - (version "0.4") + (version "0.4.1") (source (origin (method url-fetch) (uri (string-append "mirror://sourceforge/meandmyshadow/" @@ -469,7 +469,7 @@ automata. The following features are available: "-src.tar.gz")) (sha256 (base32 - "1dpb7s32b2psj5w3nr5kqibib8nndi86mw8gxp4hmxwrfiisf86d")))) + "0wl5dc75qy001s6043cx0vr2l5y2qfv1cldqnwill9sfygqj9p95")))) (build-system cmake-build-system) (arguments '(#:tests? #f ; there are no tests @@ -485,7 +485,7 @@ automata. The following features are available: ;; link with libX11, even though we're using the GL backend. (substitute* "CMakeLists.txt" (("\\$\\{X11_LIBRARIES\\}") "-lX11")) - ))))) + #t))))) (native-inputs `(("pkg-config" ,pkg-config))) (inputs @@ -1616,23 +1616,20 @@ reference interpreter, using the Glk API.") (define-public fizmo (package (name "fizmo") - (version "0.8.4") + (version "0.8.5") (source (origin (method url-fetch) - (uri (string-append "https://christoph-ender.de/fizmo/source/" + (uri (string-append "https://fizmo.spellbreaker.org/source/" name "-" version ".tar.gz")) (sha256 (base32 - "1sd988db2302r7cbfcfghbmg8ck43c6hvnlnlpb0rqxb7pm9cwyy")))) + "1amyc4n41jf08kxmdgkk30bzzx54miaxa97w28f417qwn8lrl98w")))) (build-system gnu-build-system) (arguments '(#:configure-flags (let ((libjpeg (assoc-ref %build-inputs "libjpeg")) (ncurses (assoc-ref %build-inputs "ncurses"))) - (list (string-append "jpeg_CFLAGS=-I" libjpeg "/include") - (string-append "jpeg_LIBS=-ljpeg") - (string-append "ncursesw_CFLAGS=-I" ncurses "/include") - (string-append "ncursesw_LIBS=-lncursesw"))))) + (list (string-append "--with-jpeg-includedir=" libjpeg "/include"))))) (native-inputs `(("pkg-config" ,pkg-config))) (inputs @@ -1643,7 +1640,7 @@ reference interpreter, using the Glk API.") ("libxml2" ,libxml2) ("ncurses" ,ncurses) ("sdl2" ,sdl2))) - (home-page "https://christoph-ender.de/fizmo/") + (home-page "https://fizmo.spellbreaker.org/") (synopsis "Z-machine interpreter") (description "Fizmo is a console-based Z-machine interpreter. It is used to play @@ -1679,7 +1676,7 @@ Protocol).") (define-public extremetuxracer (package (name "extremetuxracer") - (version "0.7.4") + (version "0.7.5") (source (origin (method url-fetch) (uri (string-append @@ -1687,15 +1684,15 @@ Protocol).") version "/etr-" version ".tar.xz")) (sha256 (base32 - "0d2j4ybdjmimg67v2fndgahgq4fvgz3fpfb3a4l1ar75n6hy776s")))) + "1ly63316c07i0gyqqmyzsyvygsvygn0fpk3bnbg25fi6li99rlsg")))) (build-system gnu-build-system) (native-inputs `(("pkg-config" ,pkg-config))) (inputs `(("glu" ,glu) ("sfml" ,sfml))) - (synopsis "High speed arctic racing game based on Tux Racer") - ;; Snarfed straight from Debian + (synopsis "High-speed arctic racing game based on Tux Racer") + ;; Snarfed straight from Debian. (description "Extreme Tux Racer, or etracer as it is called for short, is a simple OpenGL racing game featuring Tux, the Linux mascot. The goal of the game is to slide down a snow- and ice-covered mountain as quickly as possible, @@ -2411,19 +2408,21 @@ are only two levels to play with, but they are very addictive.") (define-public pioneers (package (name "pioneers") - (version "15.4") + (version "15.5") (source (origin (method url-fetch) (uri (string-append "http://downloads.sourceforge.net/pio/" "pioneers-" version ".tar.gz")) (sha256 (base32 - "1p1d18hrfmqcnghip3shkzcs5qkz6j99jvkdkqfi7pqdvjc323cs")))) + "037gdiiw690jw3wd1s9lxmkqx0caxyk0b4drpm7i9p28gig43q9y")))) (build-system gnu-build-system) - (inputs `(("gtk+" ,gtk+) - ("librsvg" ,librsvg) - ("avahi" ,avahi))) + (inputs `(("avahi" ,avahi) + ("gtk+" ,gtk+) + ("librsvg" ,librsvg))) (native-inputs `(("intltool" ,intltool) + ("itstool" ,itstool) + ("libxml2" ,libxml2) ("pkg-config" ,pkg-config))) (synopsis "Board game inspired by The Settlers of Catan") (description "Pioneers is an emulation of the board game The Settlers of @@ -3252,6 +3251,74 @@ application that locks the keyboard and mouse and instead displays bright colors, pictures, and sounds.") (license license:gpl3+))) +(define-public mrrescue + (package + (name "mrrescue") + (version "1.02e") + (source (origin + (method url-fetch) + (uri (string-append + "https://github.com/SimonLarsen/mrrescue/releases/" + "download/" version "/" name version ".love")) + (file-name (string-append name "-" version ".love")) + (sha256 + (base32 + "0jwzbwkgp1l5ia6c7s760gmdirbsncp6nfqp7vqdqsfb63la9gl2")))) + (build-system trivial-build-system) + (arguments + `(#:modules ((guix build utils)) + #:builder + (begin + (use-modules (guix build utils)) + (let* ((out (assoc-ref %outputs "out")) + (script (string-append out "/bin/" ,name)) + (data (string-append out "/share/" ,name)) + (source (assoc-ref %build-inputs "source")) + (unzip (string-append (assoc-ref %build-inputs "unzip") + "/bin/unzip")) + (patch (string-append (assoc-ref %build-inputs "patch") + "/bin/patch")) + (bash (string-append (assoc-ref %build-inputs "bash") + "/bin/bash")) + (love (string-append (assoc-ref %build-inputs "love") + "/bin/love"))) + + (mkdir-p (dirname script)) + (with-output-to-file script + (lambda () + (format #t "#!~a~%" bash) + (format #t "exec -a ~a \"~a\" \"~a\"~%" ,name love data))) + (chmod script #o755) + + ;; The better way to package this game would be to install *only* the + ;; script above, pointing to the unextracted .love file in the store. + ;; However, mrrescue 1.02e needs to be patched to work with Love 11. + ;; Instead of extracting the .love file, patching it, and re-zipping + ;; it to the store, simply point the script to the extracted patched + ;; data directory directly. + (mkdir-p data) + (with-directory-excursion data + (invoke unzip source) + (invoke patch "-p1" "-i" + (assoc-ref %build-inputs "love-11.patch"))) + #t)))) + (native-inputs + `(("unzip" ,unzip) + ("patch" ,patch) + ("love-11.patch" ,(search-patch "mrrescue-support-love-11.patch")))) + (inputs + `(("bash" ,bash) + ("love" ,love))) + (home-page "http://tangramgames.dk/games/mrrescue") + (synopsis "Arcade-style fire fighting game") + (description + "Mr. Rescue is an arcade styled 2d action game centered around evacuating +civilians from burning buildings. The game features fast-paced fire +extinguishing action, intense boss battles, a catchy soundtrack, and lots of +throwing people around in pseudo-randomly generated buildings.") + (license (list license:zlib ; for source code + license:cc-by-sa3.0)))) ; for graphics and music assets + (define-public hyperrogue (package (name "hyperrogue") @@ -4475,7 +4542,7 @@ Tales of Maj’Eyal offers engaging roguelike gameplay for the 21st century.") (define-public quakespasm (package (name "quakespasm") - (version "0.93.0") + (version "0.93.1") (source (origin (method url-fetch) @@ -4483,7 +4550,7 @@ Tales of Maj’Eyal offers engaging roguelike gameplay for the 21st century.") version ".tgz")) (sha256 (base32 - "0b2nz7w4za32pc34r62ql270z692qcjs2pm0i3svkxkvfammhdfq")))) + "1bimv18f6rzhyjz78yvw2vqr5n0kdqbcqmq7cb3m951xgsxfcgpd")))) (arguments `(#:tests? #f #:make-flags '("CC=gcc" diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm index 1d53af7515..a21adf4f56 100644 --- a/gnu/packages/gnome.scm +++ b/gnu/packages/gnome.scm @@ -6486,6 +6486,12 @@ like GNOME, Unity, Budgie, Pantheon, XFCE, Mate, etc.") (substitute* '("Makefile.am") (("\\$\\(DESTDIR\\)/usr/share") "$(datadir)")) + #t)) + (add-after 'unpack 'disable-configure-during-bootstrap + (lambda _ + ;; Do not run configure as part of autogen.sh because references + ;; to /bin are not fixed yet. + (setenv "NOCONFIGURE" "y") #t))))) (native-inputs `(("autoconf" ,autoconf) @@ -6535,6 +6541,14 @@ simple and consistent.") (base32 "1ya1cqvv8q847c0rpcg6apzky87q3h04y8jz5nmi52qk6kg8si0b")))) (build-system gnu-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-after 'unpack 'disable-configure-during-bootstrap + (lambda _ + (substitute* "autogen.sh" + (("^\"\\$srcdir/configure\".*") "")) + #t))))) (native-inputs `(("autoconf" ,autoconf) ("automake" ,automake))) @@ -7273,7 +7287,7 @@ mp3, Ogg Vorbis and FLAC") ("libxtst" ,libxtst) ("dconf" ,dconf) ("libice" ,libice))) - (inputs `(("libsm", libsm) + (inputs `(("libsm" ,libsm) ("python-cheetah" ,python2-cheetah))) (native-inputs `(("glib" ,glib "bin") ("pkg-config" ,pkg-config) diff --git a/gnu/packages/golang.scm b/gnu/packages/golang.scm index a83cdcde83..ea6ca2286c 100644 --- a/gnu/packages/golang.scm +++ b/gnu/packages/golang.scm @@ -1702,3 +1702,92 @@ with the @uref{https://www.gnu.org/software/libc/manual/html_node/Argument-Syntax.html, GNU extensions} to the POSIX recommendations for command-line options.") (license license:bsd-3)))) + +(define-public go-github-com-sirupsen-logrus + (package + (name "go-github-com-sirupsen-logrus") + (version "1.0.5") + (source + (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/sirupsen/logrus.git") + (commit (string-append "v" version)))) + (sha256 + (base32 + "0g5z7al7kky11ai2dhac6gkp3b5pxsvx72yj3xg4wg3265gbn7yz")))) + (build-system go-build-system) + (native-inputs + `(("go-golang-org-x-crypto-ssh-terminal" + ,go-golang-org-x-crypto-ssh-terminal) + ("go-github-com-stretchr-testify" + ,go-github-com-stretchr-testify) + ("go-golang-org-x-sys-unix" + ,go-golang-org-x-sys-unix))) + (arguments + '(#:tests? #f ;FIXME missing dependencies + #:import-path "github.com/sirupsen/logrus")) + (home-page "https://github.com/sirupsen/logrus") + (synopsis "Structured, pluggable logging for Go") + (description "Logrus is a structured logger for Go, completely API +compatible with the standard library logger.") + (license license:expat))) + +(define-public go-github-com-kardianos-osext + (let ((commit "ae77be60afb1dcacde03767a8c37337fad28ac14") + (revision "1")) + (package + (name "go-github-com-kardianos-osext") + (version (git-version "0.0.0" revision commit)) + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/kardianos/osext") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "056dkgxrqjj5r18bnc3knlpgdz5p3yvp12y4y978hnsfhwaqvbjz")))) + (build-system go-build-system) + (arguments + `(#:import-path "github.com/kardianos/osext" + ;; The tests are flaky: + ;; <https://github.com/kardianos/osext/issues/21> + #:tests? #f)) + (synopsis "Find the running executable") + (description "Osext provides a method for finding the current executable +file that is running. This can be used for upgrading the current executable or +finding resources located relative to the executable file.") + (home-page "https://github.com/kardianos/osext") + (license license:bsd-3)))) + +(define-public go-github-com-ayufan-golang-kardianos-service + (let ((commit "0c8eb6d8fff2e2fb884a7bfd23e183fb63c0eff3") + (revision "0")) + (package + (name "go-github-com-ayufan-golang-kardianos-service") + (version (git-version "0.0.0" revision commit)) + (source + (origin + (method git-fetch) + (uri (git-reference + (url + "https://github.com/ayufan/golang-kardianos-service.git") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0x0cn7l5gda2khsfypix7adxd5yqighzn04mxjw6hc4ayrh7his5")))) + (build-system go-build-system) + (native-inputs + `(("go-github-com-kardianos-osext" + ,go-github-com-kardianos-osext))) + (arguments + '(#:tests? #f ;FIXME tests fail: Service is not running. + #:import-path "github.com/ayufan/golang-kardianos-service")) + (home-page "https://github.com/ayufan/golang-kardianos-service") + (synopsis "Go interface to a variety of service supervisors") + (description "This package provides @code{service}, a Go module that can +run programs as a service using a variety of supervisors, including systemd, +SysVinit, and more.") + (license license:zlib)))) diff --git a/gnu/packages/java.scm b/gnu/packages/java.scm index 5216b84abd..8caad1b51a 100644 --- a/gnu/packages/java.scm +++ b/gnu/packages/java.scm @@ -3625,7 +3625,7 @@ complex transformations and code analysis tools.") `(("java-aqute-bndlib" ,java-aqute-bndlib-bootstrap) ("java-aqute-libg" ,java-aqute-libg-bootstrap) ,@(delete `("java-aqute-bndlib" ,java-aqute-bndlib) - (delete `("java-aqute-libg", java-aqute-libg) + (delete `("java-aqute-libg" ,java-aqute-libg) (package-inputs java-asm))))))) (define-public java-cglib diff --git a/gnu/packages/maven.scm b/gnu/packages/maven.scm index 070bd7131c..0feb01f040 100644 --- a/gnu/packages/maven.scm +++ b/gnu/packages/maven.scm @@ -1405,7 +1405,7 @@ logging support."))) ;; tests ("java-plexus-cipher" ,java-plexus-cipher) ("java-plexus-sec-dispatcher" ,java-plexus-sec-dispatcher) - ("java-jsr250", java-jsr250) + ("java-jsr250" ,java-jsr250) ("java-cdi-api" ,java-cdi-api) ("java-junit" ,java-junit) ("maven-resolver-impl" ,maven-resolver-impl) @@ -1463,7 +1463,7 @@ layer for plugins that need to keep Maven2 compatibility."))) ("maven-settings" ,maven-settings) ("maven-settings-builder" ,maven-settings-builder) ("maven-plugin-api" ,maven-plugin-api) - ("maven-repository-metadata", maven-repository-metadata) + ("maven-repository-metadata" ,maven-repository-metadata) ("maven-shared-utils" ,maven-shared-utils) ("maven-resolver-api" ,maven-resolver-api) ("maven-resolver-spi" ,maven-resolver-spi) diff --git a/gnu/packages/monitoring.scm b/gnu/packages/monitoring.scm index bbfa4957fc..db6c22a69c 100644 --- a/gnu/packages/monitoring.scm +++ b/gnu/packages/monitoring.scm @@ -22,10 +22,12 @@ (define-module (gnu packages monitoring) #:use-module (guix packages) #:use-module (guix download) + #:use-module (guix git-download) #:use-module ((guix licenses) #:prefix license:) #:use-module (guix build-system perl) #:use-module (guix build-system python) #:use-module (guix build-system gnu) + #:use-module (guix build-system go) #:use-module (gnu packages admin) #:use-module (gnu packages base) #:use-module (gnu packages check) @@ -295,3 +297,27 @@ WSGI and the node exporter textfile collector.") (define-public python2-prometheus-client (package-with-python2 python-prometheus-client)) + +(define-public go-github-com-prometheus-node-exporter + (let ((commit "55c32fcf02492fe4946f7ab563547cc5df7fc61e") + (revision "0")) + (package + (name "go-github-com-prometheus-node-exporter") + (version (git-version "0.0.0" revision commit)) + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/prometheus/node_exporter.git") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "041b87a0sid23c29swqmi5hw6cxbxvkfj3415jg73cm2pi8wh5s6")))) + (build-system go-build-system) + (arguments + '(#:import-path "github.com/prometheus/node_exporter")) + (synopsis "Prometheus exporter for hardware and OS metrics") + (description "Prometheus exporter for metrics exposed by *NIX kernels, +written in Go with pluggable metric collectors.") + (home-page "https://github.com/prometheus/node_exporter") + (license license:asl2.0)))) diff --git a/gnu/packages/networking.scm b/gnu/packages/networking.scm index 5cdfec3431..b72a4734d7 100644 --- a/gnu/packages/networking.scm +++ b/gnu/packages/networking.scm @@ -1776,7 +1776,7 @@ file for more details.") `(("zlib" ,zlib) ("crypto++" ,crypto++) ("libpng" ,libpng) - ("wxwidgets-gtk2", wxwidgets-gtk2))) + ("wxwidgets-gtk2" ,wxwidgets-gtk2))) (home-page "http://amule.org/") (synopsis "Peer-to-peer client for the eD2K and Kademlia networks") (description diff --git a/gnu/packages/ocaml.scm b/gnu/packages/ocaml.scm index 864038fe99..f21c2b2610 100644 --- a/gnu/packages/ocaml.scm +++ b/gnu/packages/ocaml.scm @@ -135,7 +135,8 @@ (patches (search-patches "ocaml-CVE-2015-8869.patch" - "ocaml-Add-a-.file-directive.patch")))) + "ocaml-Add-a-.file-directive.patch" + "ocaml-enable-ocamldoc-reproducibility.patch")))) (build-system gnu-build-system) (native-search-paths (list (search-path-specification diff --git a/gnu/packages/patches/libyaml-CVE-2014-9130.patch b/gnu/packages/patches/libyaml-CVE-2014-9130.patch deleted file mode 100644 index 800358c0d6..0000000000 --- a/gnu/packages/patches/libyaml-CVE-2014-9130.patch +++ /dev/null @@ -1,30 +0,0 @@ -Fixes CVE-2014-9130 -https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2014-9130 - -Upstream source: -https://bitbucket.org/xi/libyaml/commits/2b9156756423e967cfd09a61d125d883fca6f4f2 - -# HG changeset patch -# User Kirill Simonov <xi@resolvent.net> -# Date 1417197312 21600 -# Node ID 2b9156756423e967cfd09a61d125d883fca6f4f2 -# Parent 053f53a381ff6adbbc93a31ab7fdee06a16c8a33 -Removed invalid simple key assertion (thank to Jonathan Gray). - -diff --git a/src/scanner.c b/src/scanner.c ---- a/src/scanner.c -+++ b/src/scanner.c -@@ -1106,13 +1106,6 @@ - && parser->indent == (ptrdiff_t)parser->mark.column); - - /* -- * A simple key is required only when it is the first token in the current -- * line. Therefore it is always allowed. But we add a check anyway. -- */ -- -- assert(parser->simple_key_allowed || !required); /* Impossible. */ -- -- /* - * If the current position may start a simple key, save it. - */ - diff --git a/gnu/packages/patches/mrrescue-support-love-11.patch b/gnu/packages/patches/mrrescue-support-love-11.patch new file mode 100644 index 0000000000..2786a6b01b --- /dev/null +++ b/gnu/packages/patches/mrrescue-support-love-11.patch @@ -0,0 +1,213 @@ +From: Tobias Geerinckx-Rice <me@tobias.gr> +Date: Tue, 19 Jun 2018 04:37:46 +0200 +Subject: gnu: mrrescue: Support Love 11. + +The patch below was copied verbatim from an as-yet-unmerged PR[0] to +make Mr. Rescue run on a newer version of the Löve engine. + +[0]: https://github.com/SimonLarsen/mrrescue/pull/17 +--- +From ab23031e0c2faecb77fde1be8a41d6f8ea4e6eda Mon Sep 17 00:00:00 2001 +From: Mystro256 <alexjnewt@hotmail.com> +Date: Sun, 10 Jun 2018 21:19:23 -0400 +Subject: [PATCH] Love 11 support + +--- + conf.lua | 2 +- + config.lua | 6 +++--- + highscore_entry.lua | 4 ++-- + highscore_list.lua | 4 ++-- + ingame.lua | 6 +++--- + ingame_menu.lua | 4 ++-- + joystick.lua | 4 ++-- + main.lua | 2 +- + resources.lua | 4 ++-- + util.lua | 4 ++-- + 10 files changed, 20 insertions(+), 20 deletions(-) + +diff --git a/conf.lua b/conf.lua +index 8776da4..f00b216 100644 +--- a/conf.lua ++++ b/conf.lua +@@ -1,6 +1,6 @@ + function love.conf(t) + t.identity = "mrrescue" +- t.version = "0.10.0" ++ t.version = "11.0" + t.console = false + t.accelerometerjoystick = true + t.gammacorrect = false +diff --git a/config.lua b/config.lua +index 63eeb04..71c2b66 100644 +--- a/config.lua ++++ b/config.lua +@@ -38,7 +38,7 @@ function loadConfig() + config[i] = v + end + end +- if love.filesystem.exists("settings") then ++ if love.filesystem.getInfo("settings")~= nil then + local data = love.filesystem.read("settings") + local file = TSerial.unpack(data) + for i,v in pairs(file) do +@@ -52,7 +52,7 @@ function loadConfig() + end + + function loadHighscores() +- if love.filesystem.exists("highscores") then ++ if love.filesystem.getInfo("highscores")~= nil then + local data = love.filesystem.read("highscores") + local file = TSerial.unpack(data) + for i=1,3 do +@@ -64,7 +64,7 @@ function loadHighscores() + end + + function loadStats() +- if love.filesystem.exists("stats") then ++ if love.filesystem.getInfo("stats")~= nil then + local data = love.filesystem.read("stats") + stats = TSerial.unpack(data) + end +diff --git a/highscore_entry.lua b/highscore_entry.lua +index 2f763af..3b3bb73 100644 +--- a/highscore_entry.lua ++++ b/highscore_entry.lua +@@ -45,9 +45,9 @@ function highscore_entry.draw() + for ix = 1,10 do + if highscore_entry.selection == char then + lg.rectangle("fill", 33+ix*16, 66+iy*16, 14, 14) +- lg.setColor(0,0,0,255) ++ lg.setColor(0,0,0,1) + lg.print(KEYBOARD:sub(char,char), 37+ix*16, 70+iy*16) +- lg.setColor(255,255,255,255) ++ lg.setColor(1,1,1,1) + else + lg.print(KEYBOARD:sub(char,char), 37+ix*16, 70+iy*16) + end +diff --git a/highscore_list.lua b/highscore_list.lua +index 6a17973..b66d0e2 100644 +--- a/highscore_list.lua ++++ b/highscore_list.lua +@@ -31,10 +31,10 @@ function highscore_list.draw() + if scores[i] then + if highscore_list.level == highscore_list.hllevel + and highscore_list.hlpos == i then +- lg.setColor(25,118,115,255) ++ lg.setColor(25/255,118/255,115/255,1) + lg.print(scores[i].name, 48, 14+i*16) + lg.print(scores[i].score, 105, 14+i*16) +- lg.setColor(255,255,255,255) ++ lg.setColor(1,1,1,1) + else + lg.print(scores[i].name, 48, 14+i*16) + lg.print(scores[i].score, 105, 14+i*16) +diff --git a/ingame.lua b/ingame.lua +index 52004f1..f5c6f7c 100644 +--- a/ingame.lua ++++ b/ingame.lua +@@ -189,16 +189,16 @@ function ingame.draw() + lg.pop() + + if map.type == MT_NORMAL then +- lg.setBlendMode("multiply") ++ lg.setBlendMode("multiply", "premultiplied") + lg.draw(canvas, 0,0) + lg.setBlendMode("alpha") + end + + -- Draw red screen if hit + if player.heat > 0 then +- lg.setColor(255,255,255,cap(player.heat*255, 16, 255)) ++ lg.setColor(1,1,1,cap(player.heat*255, 16, 255)/255) + lg.draw(img.red_screen, quad.red_screen, 0,0) +- lg.setColor(255,255,255,255) ++ lg.setColor(1,1,1,1) + end + + -- Draw hud +diff --git a/ingame_menu.lua b/ingame_menu.lua +index 9fcf768..82a8459 100644 +--- a/ingame_menu.lua ++++ b/ingame_menu.lua +@@ -18,10 +18,10 @@ function ingame_menu.draw() + lg.pop() + + lg.scale(config.scale) +- lg.setColor(0,0,0,238) ++ lg.setColor(0,0,0,238/255) + lg.rectangle("fill", 0, 0, WIDTH, HEIGHT) + +- lg.setColor(255,255,255,255) ++ lg.setColor(1,1,1,1) + lg.printf("PAUSED", 0, 46, WIDTH, "center") + lg.print("RESUME", 103, 92) + lg.print("QUIT", 103, 106) +diff --git a/joystick.lua b/joystick.lua +index 50ccadb..72d545e 100644 +--- a/joystick.lua ++++ b/joystick.lua +@@ -22,11 +22,11 @@ function joystick.draw() + lg.printf("SET JOYSTICK", 0, 39, WIDTH, "center") + for i=1,4 do + if joystick.waiting == true and joystick.selection == i then +- lg.setColor(195,52,41) ++ lg.setColor(195/255,52/255,41/255) + end + lg.print(string.upper(joykeynames[i]), 65, 53+i*13) + lg.print(config.joykeys[joykeynames[i]], 165, 53+i*13) +- lg.setColor(255,255,255) ++ lg.setColor(1,1,1) + end + lg.print("DEFAULT", 65, 118) + lg.print("BACK", 65, 131) +diff --git a/main.lua b/main.lua +index 9433e42..56096fa 100644 +--- a/main.lua ++++ b/main.lua +@@ -273,7 +273,7 @@ function love.releaseerrhand(msg) + local font = love.graphics.newFont(14) + love.graphics.setFont(font) + +- love.graphics.setColor(255, 255, 255, 255) ++ love.graphics.setColor(1, 1, 1, 1) + + love.graphics.clear() + +diff --git a/resources.lua b/resources.lua +index e5aa70d..1bab520 100644 +--- a/resources.lua ++++ b/resources.lua +@@ -7,7 +7,7 @@ local snd = {} -- sound Sources + + local IMAGE_FILES = { + "splash", "tangram", "lovesplashpixel", "howto", +- "tiles", "door", "boldfont", "captain_dialog", "captain_dialog_sad", ++ "tiles", "door", "captain_dialog", "captain_dialog_sad", + "boss_health", "highscore_panes", "exclamation", "stats_screen", + "awards", "hud", "hud2", "hud_people", "item_slots", "water_bar", + "reserve_bar", "overloaded_bar", "temperature_bar", "temperature_bar_blink", +@@ -147,7 +147,7 @@ function loadResources() + img.stream:setWrap("repeat", "clamp") + + -- Create fonts +- font.bold = lg.newImageFont(img.boldfont, " ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789.,!'-:*@<>+/_$&?", 2) ++ font.bold = lg.newImageFont("data/boldfont.png", " ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789.,!'-:*@<>+/_$&?", 2) + lg.setFont(font.bold) + + -- Create quads +diff --git a/util.lua b/util.lua +index b9976da..656600a 100644 +--- a/util.lua ++++ b/util.lua +@@ -105,9 +105,9 @@ end + + + function drawBox(x,y,w,h) +- lg.setColor(30,23,18) ++ lg.setColor(30/255,23/255,18/255) + lg.rectangle("fill",x+1,y+1,w-2,h-2) +- lg.setColor(255,255,255) ++ lg.setColor(1,1,1) + -- Draw sides + lg.draw(img.menu_box, quad.box_left, x, y+1, 0, 1, (h-2)) + lg.draw(img.menu_box, quad.box_left, x+w, y+1, 0, -1, (h-2)) diff --git a/gnu/packages/patches/ocaml-enable-ocamldoc-reproducibility.patch b/gnu/packages/patches/ocaml-enable-ocamldoc-reproducibility.patch new file mode 100644 index 0000000000..39fb7aa226 --- /dev/null +++ b/gnu/packages/patches/ocaml-enable-ocamldoc-reproducibility.patch @@ -0,0 +1,149 @@ +From a87c3f20e846c00e53d695497dba7038edbd12f0 Mon Sep 17 00:00:00 2001 +From: Valentin Lorentz <progval@progval.net> +Date: Thu, 13 Aug 2015 11:59:04 +0200 +Subject: [PATCH] Enable ocamldoc to build reproducible manpages + +Bug-Debian: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=794586 +Signed-off-by: Stephane Glondu <steph@glondu.net> +--- + ocamldoc/odoc_man.ml | 15 +++++---------- + ocamldoc/odoc_misc.ml | 12 ++++++++++-- + ocamldoc/odoc_misc.mli | 7 ++++++- + 3 files changed, 21 insertions(+), 13 deletions(-) + +diff --git a/ocamldoc/odoc_man.ml b/ocamldoc/odoc_man.ml +index 615c5e172..3c85aa32a 100644 +--- a/ocamldoc/odoc_man.ml ++++ b/ocamldoc/odoc_man.ml +@@ -864,14 +864,13 @@ class man = + (** Generate the man page for the given class.*) + method generate_for_class cl = + Odoc_info.reset_type_names () ; +- let date = Unix.time () in + let file = self#file_name cl.cl_name in + try + let chanout = self#open_out file in + let b = new_buf () in + bs b (".TH \""^cl.cl_name^"\" "); + bs b !man_section ; +- bs b (" "^(Odoc_misc.string_of_date ~hour: false date)^" "); ++ bs b (" source: "^Odoc_misc.current_date^" "); + bs b "OCamldoc "; + bs b ("\""^(match !Global.title with Some t -> t | None -> "")^"\"\n"); + +@@ -923,14 +922,13 @@ class man = + (** Generate the man page for the given class type.*) + method generate_for_class_type ct = + Odoc_info.reset_type_names () ; +- let date = Unix.time () in + let file = self#file_name ct.clt_name in + try + let chanout = self#open_out file in + let b = new_buf () in + bs b (".TH \""^ct.clt_name^"\" "); + bs b !man_section ; +- bs b (" "^(Odoc_misc.string_of_date ~hour: false date)^" "); ++ bs b (" source: "^Odoc_misc.current_date^" "); + bs b "OCamldoc "; + bs b ("\""^(match !Global.title with Some t -> t | None -> "")^"\"\n"); + +@@ -1016,14 +1014,13 @@ class man = + (** Generate the man file for the given module type. + @raise Failure if an error occurs.*) + method generate_for_module_type mt = +- let date = Unix.time () in + let file = self#file_name mt.mt_name in + try + let chanout = self#open_out file in + let b = new_buf () in + bs b (".TH \""^mt.mt_name^"\" "); + bs b !man_section ; +- bs b (" "^(Odoc_misc.string_of_date ~hour: false date)^" "); ++ bs b (" source: "^Odoc_misc.current_date^" "); + bs b "OCamldoc "; + bs b ("\""^(match !Global.title with Some t -> t | None -> "")^"\"\n"); + +@@ -1099,14 +1096,13 @@ class man = + (** Generate the man file for the given module. + @raise Failure if an error occurs.*) + method generate_for_module m = +- let date = Unix.time () in + let file = self#file_name m.m_name in + try + let chanout = self#open_out file in + let b = new_buf () in + bs b (".TH \""^m.m_name^"\" "); + bs b !man_section ; +- bs b (" "^(Odoc_misc.string_of_date ~hour: false date)^" "); ++ bs b (" source: "^Odoc_misc.current_date^" "); + bs b "OCamldoc "; + bs b ("\""^(match !Global.title with Some t -> t | None -> "")^"\"\n"); + +@@ -1206,14 +1202,13 @@ class man = + | Res_const (_,f) -> f.vc_name + ) + in +- let date = Unix.time () in + let file = self#file_name name in + try + let chanout = self#open_out file in + let b = new_buf () in + bs b (".TH \""^name^"\" "); + bs b !man_section ; +- bs b (" "^(Odoc_misc.string_of_date ~hour: false date)^" "); ++ bs b (" source: "^Odoc_misc.current_date^" "); + bs b "OCamldoc "; + bs b ("\""^(match !Global.title with Some t -> t | None -> "")^"\"\n"); + bs b ".SH NAME\n"; +diff --git a/ocamldoc/odoc_misc.ml b/ocamldoc/odoc_misc.ml +index 4c74476da..456225f62 100644 +--- a/ocamldoc/odoc_misc.ml ++++ b/ocamldoc/odoc_misc.ml +@@ -223,9 +223,9 @@ let apply_opt f v_opt = + None -> None + | Some v -> Some (f v) + +-let string_of_date ?(hour=true) d = ++let string_of_date ?(absolute=false) ?(hour=true) d = + let add_0 s = if String.length s < 2 then "0"^s else s in +- let t = Unix.localtime d in ++ let t = (if absolute then Unix.gmtime else Unix.localtime) d in + (string_of_int (t.Unix.tm_year + 1900))^"-"^ + (add_0 (string_of_int (t.Unix.tm_mon + 1)))^"-"^ + (add_0 (string_of_int t.Unix.tm_mday))^ +@@ -238,6 +238,14 @@ let string_of_date ?(hour=true) d = + "" + ) + ++let current_date = ++ let time = ++ try ++ float_of_string (Sys.getenv "SOURCE_DATE_EPOCH") ++ with ++ Not_found -> Unix.time () ++ in string_of_date ~absolute: true ~hour: false time ++ + + let rec text_list_concat sep l = + match l with +diff --git a/ocamldoc/odoc_misc.mli b/ocamldoc/odoc_misc.mli +index dd5a7fcb9..38ff0612b 100644 +--- a/ocamldoc/odoc_misc.mli ++++ b/ocamldoc/odoc_misc.mli +@@ -62,7 +62,12 @@ val apply_opt : ('a -> 'b) -> 'a option -> 'b option + + (** Return a string representing a date given as a number of seconds + since 1970. The hour is optionnaly displayed. *) +-val string_of_date : ?hour:bool -> float -> string ++val string_of_date : ?absolute:bool -> ?hour:bool -> float -> string ++ ++(* Value returned by string_of_date for current time. ++ * Uses environment variable SOURCE_DATE_EPOCH if set; falls back to ++ * current timestamp otherwise. *) ++val current_date : string + + (** Return the first sentence (until the first dot) of a text. + Don't stop in the middle of [Code], [Verbatim], [List], [Lnum], +-- +2.17.1 + diff --git a/gnu/packages/patches/x265-fix-ppc64le-build.patch b/gnu/packages/patches/x265-fix-ppc64le-build.patch new file mode 100644 index 0000000000..f71d2436ab --- /dev/null +++ b/gnu/packages/patches/x265-fix-ppc64le-build.patch @@ -0,0 +1,25 @@ +https://sources.debian.org/data/main/x/x265/2.8-3/debian/patches/0003-Fix-build-error-on-on-ppc64le.patch + +This patch also fixes building on armhf-linux and aarch64-linux + +From: Jayashree <jayashree.c@multicorewareinc.com> +Date: Fri, 25 May 2018 10:26:05 +0530 +Subject: Fix build error on on ppc64le + +--- + source/common/param.cpp | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/source/common/param.cpp b/source/common/param.cpp +index 31bcbc7..4a6d0c8 100644 +--- a/source/common/param.cpp ++++ b/source/common/param.cpp +@@ -633,7 +633,7 @@ int x265_param_parse(x265_param* p, const char* name, const char* value) + if (bValueWasNull) + p->cpuid = atobool(value); + else +- p->cpuid = parseCpuName(value, bError); ++ p->cpuid = parseCpuName(value, bError, false); + #endif + } + OPT("fps") diff --git a/gnu/packages/sdl.scm b/gnu/packages/sdl.scm index 43cf2795dd..ba4477df9c 100644 --- a/gnu/packages/sdl.scm +++ b/gnu/packages/sdl.scm @@ -6,6 +6,7 @@ ;;; Copyright © 2016, 2017 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2017 Rutger Helling <rhelling@mykolab.com> ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr> +;;; Copyright © 2018 Ricardo Wurmus <rekado@elephly.net> ;;; ;;; This file is part of GNU Guix. ;;; @@ -503,7 +504,16 @@ sound and device input (keyboards, joysticks, mice, etc.).") (string-append "--with-libsdl2-ttf-prefix=" (assoc-ref %build-inputs "sdl2-ttf")) (string-append "--with-libsdl2-mixer-prefix=" - (assoc-ref %build-inputs "sdl2-mixer"))))) + (assoc-ref %build-inputs "sdl2-mixer"))) + #:phases + (modify-phases %standard-phases + (add-after 'configure 'patch-makefile + (lambda _ + ;; Install compiled Guile files in the expected place. + (substitute* '("Makefile") + (("^godir = .*$") + "godir = $(moddir)\n")) + #t))))) (native-inputs `(("guile" ,guile-2.2) ("pkg-config" ,pkg-config))) diff --git a/gnu/packages/statistics.scm b/gnu/packages/statistics.scm index 502ff9b2f9..9853e842c2 100644 --- a/gnu/packages/statistics.scm +++ b/gnu/packages/statistics.scm @@ -532,14 +532,14 @@ nonlinear mixed-effects models.") (define-public r-mgcv (package (name "r-mgcv") - (version "1.8-23") + (version "1.8-24") (source (origin (method url-fetch) (uri (cran-uri "mgcv" version)) (sha256 (base32 - "1lsrhf1yzn25pfn3f5x8yxjqnfryim4jx3iqd7ah8aalh5asqwbp")))) + "15b76m1f0hz8dbmj9shqvslihdx5b7c48vck9grj5xs1z2y45r9c")))) (build-system r-build-system) (propagated-inputs `(("r-matrix" ,r-matrix) diff --git a/gnu/packages/syncthing.scm b/gnu/packages/syncthing.scm index f43c51714a..14e83b5861 100644 --- a/gnu/packages/syncthing.scm +++ b/gnu/packages/syncthing.scm @@ -490,34 +490,6 @@ address of the default LAN gateway.") (home-page "https://github.com/jackpal/gateway") (license bsd-3)))) -(define-public go-github-com-kardianos-osext - (let ((commit "ae77be60afb1dcacde03767a8c37337fad28ac14") - (revision "1")) - (package - (name "go-github-com-kardianos-osext") - (version (git-version "0.0.0" revision commit)) - (source (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/kardianos/osext") - (commit commit))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "056dkgxrqjj5r18bnc3knlpgdz5p3yvp12y4y978hnsfhwaqvbjz")))) - (build-system go-build-system) - (arguments - `(#:import-path "github.com/kardianos/osext" - ;; The tests are flaky: - ;; <https://github.com/kardianos/osext/issues/21> - #:tests? #f)) - (synopsis "Find the running executable") - (description "Osext provides a method for finding the current executable -file that is running. This can be used for upgrading the current executable or -finding resources located relative to the executable file.") - (home-page "https://github.com/kardianos/osext") - (license bsd-3)))) - (define-public go-github-com-lib-pq (let ((commit "83612a56d3dd153a94a629cd64925371c9adad78") (revision "1")) diff --git a/gnu/packages/version-control.scm b/gnu/packages/version-control.scm index 378a6fcf09..15974c8792 100644 --- a/gnu/packages/version-control.scm +++ b/gnu/packages/version-control.scm @@ -1999,7 +1999,7 @@ directory full of HOWTOs.") (define-public git-annex (package (name "git-annex") - (version "6.20170818") + (version "6.20180529") (source (origin (method url-fetch) @@ -2007,7 +2007,7 @@ directory full of HOWTOs.") "git-annex/git-annex-" version ".tar.gz")) (sha256 (base32 - "0ybxixbqvy4rx6mq9s02rh349rbr04hb17z4bfayin0qwa5kzpvx")))) + "1rx0m4yrl3gl2ca8rbbv74fdlg4s2jnddzljhph7271a7bpyxsx5")))) (build-system haskell-build-system) (arguments `(#:configure-flags @@ -2101,6 +2101,7 @@ directory full of HOWTOs.") ("ghc-split" ,ghc-split) ("ghc-stm" ,ghc-stm) ("ghc-stm-chans" ,ghc-stm-chans) + ("ghc-tagsoup" ,ghc-tagsoup) ("ghc-text" ,ghc-text) ("ghc-unix-compat" ,ghc-unix-compat) ("ghc-unordered-containers" ,ghc-unordered-containers) diff --git a/gnu/packages/video.scm b/gnu/packages/video.scm index e31238243f..132f9cca74 100644 --- a/gnu/packages/video.scm +++ b/gnu/packages/video.scm @@ -44,6 +44,7 @@ (define-module (gnu packages video) #:use-module (ice-9 match) #:use-module (srfi srfi-1) + #:use-module (srfi srfi-26) #:use-module ((guix licenses) #:prefix license:) #:use-module (guix utils) #:use-module (guix packages) @@ -393,6 +394,7 @@ and creating Matroska files from other media files (@code{mkvmerge}).") (sha256 (base32 "0qx8mavwdzdpkkby7n29i9av7zsnklavacwfz537mf62q2pzjnbf")) + (patches (search-patches "x265-fix-ppc64le-build.patch")) (modules '((guix build utils))) (snippet '(begin (delete-file-recursively "source/compat/getopt") @@ -401,7 +403,9 @@ and creating Matroska files from other media files (@code{mkvmerge}).") (arguments `(#:tests? #f ; tests are skipped if cpu-optimized code isn't built ;; Currently the source code doesn't check for aarch64. - ,@(if (string-prefix? "aarch64" (or (%current-target-system) (%current-system))) + ,@(if (any (cute string-prefix? <> (or (%current-system) + (%current-target-system))) + '("armhf" "aarch64")) '(#:configure-flags '("-DENABLE_PIC=TRUE")) '()) #:phases @@ -1218,7 +1222,7 @@ access to mpv's powerful playback capabilities.") (define-public youtube-dl (package (name "youtube-dl") - (version "2018.05.09") + (version "2018.06.19") (source (origin (method url-fetch) (uri (string-append "https://yt-dl.org/downloads/" @@ -1226,7 +1230,7 @@ access to mpv's powerful playback capabilities.") version ".tar.gz")) (sha256 (base32 - "0sl4bi2jls3417rd62awbqdq1b6wskkjbfwpnyw4a61qarfxid1d")))) + "0ys2mc84r7mjpn7rykb57sn3ii1kp3divjdn2ivwqknj8jrzg3z6")))) (build-system python-build-system) (arguments ;; The problem here is that the directory for the man page and completion diff --git a/gnu/packages/web.scm b/gnu/packages/web.scm index 19058de2d3..858ea1c759 100644 --- a/gnu/packages/web.scm +++ b/gnu/packages/web.scm @@ -1025,17 +1025,16 @@ hash/signatures.") (define-public libyaml (package (name "libyaml") - (version "0.1.6") + (version "0.1.7") (source (origin (method url-fetch) (uri (string-append "http://pyyaml.org/download/libyaml/yaml-" version ".tar.gz")) - (patches (search-patches "libyaml-CVE-2014-9130.patch")) (sha256 (base32 - "0j9731s5zjb8mjx7wzf6vh7bsqi38ay564x6s9nri2nh9cdrg9kx")))) + "0a87931cx5m14a1x8rbjix3nz7agrcgndf4h392vm62a4rby9240")))) (build-system gnu-build-system) (home-page "http://pyyaml.org/wiki/LibYAML") (synopsis "YAML 1.1 parser and emitter written in C") @@ -3090,16 +3089,19 @@ exists it is used instead.") (define-public perl-lwp-protocol-https (package (name "perl-lwp-protocol-https") - (version "6.06") + (version "6.07") (source (origin (method url-fetch) - (uri (string-append "mirror://cpan/authors/id/M/MS/MSCHILLI/" + (uri (string-append "mirror://cpan/authors/id/O/OA/OALDERS/" "LWP-Protocol-https-" version ".tar.gz")) (sha256 (base32 - "1vxdjqj4bwq56m9h1bqqwkk3c6jr76f2zqzvwa26yjng3p686v5q")))) + "1rxrpwylfw1afah0nk96kgkwjbl2p1a7lwx50iipg8c4rx3cjb2j")))) (build-system perl-build-system) + (native-inputs + ;; For tests. + `(("perl-test-requiresinternet" ,perl-test-requiresinternet))) (propagated-inputs `(("perl-io-socket-ssl" ,perl-io-socket-ssl) ("perl-libwww" ,perl-libwww) @@ -3800,13 +3802,13 @@ CDF, Atom 0.3, and Atom 1.0 feeds.") (define-public r-httpuv (package (name "r-httpuv") - (version "1.4.3") + (version "1.4.4.1") (source (origin (method url-fetch) (uri (cran-uri "httpuv" version)) (sha256 (base32 - "15ghxcyg9h0za3qy077fnn3izbpihskvaqwsppm2s43a771imsf6")))) + "12kwq10xa8glrip7rai9xb4hnpysng00g2l0rw7swfzq5lk4z966")))) (build-system r-build-system) (native-inputs `(("r-rcpp" ,r-rcpp))) (propagated-inputs diff --git a/gnu/packages/wm.scm b/gnu/packages/wm.scm index a3705c9d91..a076cbbb1d 100644 --- a/gnu/packages/wm.scm +++ b/gnu/packages/wm.scm @@ -103,7 +103,7 @@ nested include statements).") (define-public bspwm (package (name "bspwm") - (version "0.9.4") + (version "0.9.5") (source (origin (file-name (string-append name "-" version ".tar.gz")) @@ -113,7 +113,7 @@ nested include statements).") version ".tar.gz")) (sha256 (base32 - "0yjr0vzbj3ar8qfr6gvpvjd82ay8iy1sg2fkw2swghlqiy6ix4kw")))) + "10pph8wxqysgk7b2h0svs0nwacn1a4y44jnzzry32pd1ysx92d97")))) (build-system gnu-build-system) (inputs `(("libxcb" ,libxcb) @@ -123,10 +123,13 @@ nested include statements).") ("xcb-util-keysyms" ,xcb-util-keysyms) ("xcb-util-wm" ,xcb-util-wm))) (arguments - '(#:phases (modify-phases %standard-phases (delete 'configure)) - #:tests? #f ; no check target - #:make-flags (list "CC=gcc" - (string-append "PREFIX=" %output)))) + '(#:phases + (modify-phases %standard-phases + (delete 'configure)) ; no configure script + #:tests? #f ; no check target + #:make-flags + (list "CC=gcc" + (string-append "PREFIX=" %output)))) (home-page "https://github.com/baskerville/bspwm") (synopsis "Tiling window manager based on binary space partitioning") (description "bspwm is a tiling window manager that represents windows as @@ -988,7 +991,7 @@ project derived from the original Calm Window Manager.") ("glib" ,glib) ("glibmm" ,glibmm))) (native-inputs - `(("pkg-config", pkg-config))) + `(("pkg-config" ,pkg-config))) (arguments `(#:configure-flags (list (string-append "--prefix=" %output) diff --git a/gnu/services.scm b/gnu/services.scm index 81af4df849..49cf01a4f8 100644 --- a/gnu/services.scm +++ b/gnu/services.scm @@ -331,13 +331,20 @@ containing the given entries." (service-type (name 'system) (extensions '()) (compose identity) - (extend system-derivation))) - -(define (compute-boot-script _ mexps) - (mlet %store-monad ((gexps (sequence %store-monad mexps))) - (gexp->file "boot" - ;; Clean up and activate the system, then spawn shepherd. - #~(begin #$@gexps)))) + (extend system-derivation) + (description + "Build the operating system top-level directory, which in +turn refers to everything the operating system needs: its kernel, initrd, +system profile, boot script, and so on."))) + +(define (compute-boot-script _ gexps) + ;; Reverse GEXPS so that extensions appear in the boot script in the right + ;; order. That is, user extensions would come first, and extensions added + ;; by 'essential-services' (e.g., running shepherd) are guaranteed to come + ;; last. + (gexp->file "boot" + ;; Clean up and activate the system, then spawn shepherd. + #~(begin #$@(reverse gexps)))) (define (boot-script-entry mboot) "Return, as a monadic value, an entry for the boot script in the system @@ -346,64 +353,74 @@ directory." (return `(("boot" ,boot))))) (define boot-service-type - ;; The service of this type is extended by being passed gexps as monadic - ;; values. It aggregates them in a single script, as a monadic value, which - ;; becomes its 'parameters'. It is the only service that extends nothing. + ;; The service of this type is extended by being passed gexps. It + ;; aggregates them in a single script, as a monadic value, which becomes its + ;; value. (service-type (name 'boot) (extensions (list (service-extension system-service-type boot-script-entry))) (compose identity) - (extend compute-boot-script))) + (extend compute-boot-script) + (description + "Produce the operating system's boot script, which is spawned +by the initrd once the root file system is mounted."))) (define %boot-service ;; The service that produces the boot script. (service boot-service-type #t)) (define (cleanup-gexp _) - "Return as a monadic value a gexp to clean up /tmp and similar places upon -boot." - (with-monad %store-monad - (with-imported-modules '((guix build utils)) - (return #~(begin - (use-modules (guix build utils)) - - ;; Clean out /tmp and /var/run. - ;; - ;; XXX This needs to happen before service activations, so it - ;; has to be here, but this also implicitly assumes that /tmp - ;; and /var/run are on the root partition. - (letrec-syntax ((fail-safe (syntax-rules () - ((_ exp rest ...) - (begin - (catch 'system-error - (lambda () exp) - (const #f)) - (fail-safe rest ...))) - ((_) - #t)))) - ;; Ignore I/O errors so the system can boot. - (fail-safe - ;; Remove stale Shadow lock files as they would lead to - ;; failures of 'useradd' & co. - (delete-file "/etc/group.lock") - (delete-file "/etc/passwd.lock") - (delete-file "/etc/.pwd.lock") ;from 'lckpwdf' - - (delete-file-recursively "/tmp") - (delete-file-recursively "/var/run") - (mkdir "/tmp") - (chmod "/tmp" #o1777) - (mkdir "/var/run") - (chmod "/var/run" #o755) - (delete-file-recursively "/run/udev/watch.old")))))))) + "Return a gexp to clean up /tmp and similar places upon boot." + (with-imported-modules '((guix build utils)) + #~(begin + (use-modules (guix build utils)) + + ;; Clean out /tmp and /var/run. + ;; + ;; XXX This needs to happen before service activations, so it + ;; has to be here, but this also implicitly assumes that /tmp + ;; and /var/run are on the root partition. + (letrec-syntax ((fail-safe (syntax-rules () + ((_ exp rest ...) + (begin + (catch 'system-error + (lambda () exp) + (const #f)) + (fail-safe rest ...))) + ((_) + #t)))) + ;; Ignore I/O errors so the system can boot. + (fail-safe + ;; Remove stale Shadow lock files as they would lead to + ;; failures of 'useradd' & co. + (delete-file "/etc/group.lock") + (delete-file "/etc/passwd.lock") + (delete-file "/etc/.pwd.lock") ;from 'lckpwdf' + + ;; Force file names to be decoded as UTF-8. See + ;; <https://bugs.gnu.org/26353>. + (setenv "GUIX_LOCPATH" + #+(file-append glibc-utf8-locales "/lib/locale")) + (setlocale LC_CTYPE "en_US.utf8") + (delete-file-recursively "/tmp") + (delete-file-recursively "/var/run") + + (mkdir "/tmp") + (chmod "/tmp" #o1777) + (mkdir "/var/run") + (chmod "/var/run" #o755) + (delete-file-recursively "/run/udev/watch.old")))))) (define cleanup-service-type ;; Service that cleans things up in /tmp and similar. (service-type (name 'cleanup) (extensions (list (service-extension boot-service-type - cleanup-gexp))))) + cleanup-gexp))) + (description + "Delete files from @file{/tmp}, @file{/var/run}, and other +temporary locations at boot time."))) (define* (activation-service->script service) "Return as a monadic value the activation script for SERVICE, a service of @@ -412,44 +429,39 @@ ACTIVATION-SCRIPT-TYPE." (define (activation-script gexps) "Return the system's activation script, which evaluates GEXPS." - (define (service-activations) - ;; Return the activation scripts for SERVICES. - (mapm %store-monad - (cut gexp->file "activate-service" <>) - gexps)) - - (mlet* %store-monad ((actions (service-activations))) - (gexp->file "activate" - (with-imported-modules (source-module-closure - '((gnu build activation) - (guix build utils))) - #~(begin - (use-modules (gnu build activation) - (guix build utils)) - - ;; Make sure the user accounting database exists. If it - ;; does not exist, 'setutxent' does not create it and - ;; thus there is no accounting at all. - (close-port (open-file "/var/run/utmpx" "a0")) - - ;; Same for 'wtmp', which is populated by mingetty et - ;; al. - (mkdir-p "/var/log") - (close-port (open-file "/var/log/wtmp" "a0")) - - ;; Set up /run/current-system. Among other things this - ;; sets up locales, which the activation snippets - ;; executed below may expect. - (activate-current-system) - - ;; Run the services' activation snippets. - ;; TODO: Use 'load-compiled'. - (for-each primitive-load '#$actions)))))) + (define actions + (map (cut scheme-file "activate-service" <>) gexps)) + + (scheme-file "activate" + (with-imported-modules (source-module-closure + '((gnu build activation) + (guix build utils))) + #~(begin + (use-modules (gnu build activation) + (guix build utils)) + + ;; Make sure the user accounting database exists. If it + ;; does not exist, 'setutxent' does not create it and + ;; thus there is no accounting at all. + (close-port (open-file "/var/run/utmpx" "a0")) + + ;; Same for 'wtmp', which is populated by mingetty et + ;; al. + (mkdir-p "/var/log") + (close-port (open-file "/var/log/wtmp" "a0")) + + ;; Set up /run/current-system. Among other things this + ;; sets up locales, which the activation snippets + ;; executed below may expect. + (activate-current-system) + + ;; Run the services' activation snippets. + ;; TODO: Use 'load-compiled'. + (for-each primitive-load '#$actions))))) (define (gexps->activation-gexp gexps) "Return a gexp that runs the activation script containing GEXPS." - (mlet %store-monad ((script (activation-script gexps))) - (return #~(primitive-load #$script)))) + #~(primitive-load #$(activation-script gexps))) (define (second-argument a b) b) @@ -459,7 +471,10 @@ ACTIVATION-SCRIPT-TYPE." (list (service-extension boot-service-type gexps->activation-gexp))) (compose identity) - (extend second-argument))) + (extend second-argument) + (description + "Run @dfn{activation} code at boot time and upon +@command{guix system reconfigure} completion."))) (define %activation-service ;; The activation service produces the activation script from the gexps it @@ -507,7 +522,10 @@ ACTIVATION-SCRIPT-TYPE." (lambda (files) #~(activate-special-files '#$files))))) (compose concatenate) - (extend append))) + (extend append) + (description + "Add special files to the root file system---e.g., +@file{/usr/bin/env}."))) (define (extra-special-file file target) "Use TARGET as the \"special file\" FILE. For example, TARGET might be @@ -541,7 +559,8 @@ directory." #~(activate-etc #$etc)))) (service-extension system-service-type etc-entry))) (compose concatenate) - (extend append))) + (extend append) + (description "Populate the @file{/etc} directory."))) (define (etc-service files) "Return a new service of ETC-SERVICE-TYPE that populates /etc with FILES. @@ -556,7 +575,10 @@ FILES must be a list of name/file-like object pairs." #~(activate-setuid-programs (list #$@programs)))))) (compose concatenate) - (extend append))) + (extend append) + (description + "Populate @file{/run/setuid-programs} with the specified +executables, making them setuid-root."))) (define (packages->profile-entry packages) "Return a system entry for the profile containing PACKAGES." @@ -573,7 +595,11 @@ FILES must be a list of name/file-like object pairs." (list (service-extension system-service-type packages->profile-entry))) (compose concatenate) - (extend append))) + (extend append) + (description + "This is the @dfn{system profile}, available as +@file{/run/current-system/profile}. It contains packages that the sysadmin +wants to be globally available to all the system users."))) (define (firmware->activation-gexp firmware) "Return a gexp to make the packages listed in FIRMWARE loadable by the @@ -589,7 +615,11 @@ kernel." (list (service-extension activation-service-type firmware->activation-gexp))) (compose concatenate) - (extend append))) + (extend append) + (description + "Make ``firmware'' files loadable by the operating system +kernel. Firmware may then be uploaded to some of the machine's devices, such +as Wifi cards."))) (define (gc-roots->system-entry roots) "Return an entry in the system's output containing symlinks to ROOTS." @@ -616,7 +646,10 @@ kernel." (list (service-extension system-service-type gc-roots->system-entry))) (compose concatenate) - (extend append))) + (extend append) + (description + "Register garbage-collector roots---i.e., store items that +will not be reclaimed by the garbage collector."))) ;;; diff --git a/gnu/services/cuirass.scm b/gnu/services/cuirass.scm index c5e9fcbb22..a9ef9881b3 100644 --- a/gnu/services/cuirass.scm +++ b/gnu/services/cuirass.scm @@ -6,7 +6,7 @@ ;;; ;;; This file is part of GNU Guix. ;;; -;;; GNU Guix is free software: you can redistribute it and/or modify +;;; 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. diff --git a/gnu/services/pm.scm b/gnu/services/pm.scm index d40cb993e2..3817bd09de 100644 --- a/gnu/services/pm.scm +++ b/gnu/services/pm.scm @@ -3,7 +3,7 @@ ;;; ;;; This file is part of GNU Guix. ;;; -;;; GNU Guix is free software: you can redistribute it and/or modify +;;; 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. diff --git a/gnu/services/shepherd.scm b/gnu/services/shepherd.scm index 000e85eb86..6ca53faa3d 100644 --- a/gnu/services/shepherd.scm +++ b/gnu/services/shepherd.scm @@ -22,7 +22,6 @@ #:use-module (guix sets) #:use-module (guix gexp) #:use-module (guix store) - #:use-module (guix monads) #:use-module (guix records) #:use-module (guix derivations) ;imported-modules, etc. #:use-module (gnu services) @@ -66,26 +65,25 @@ (define (shepherd-boot-gexp services) - (with-monad %store-monad - (return #~(begin - ;; Keep track of the booted system. - (false-if-exception (delete-file "/run/booted-system")) - (symlink (readlink "/run/current-system") - "/run/booted-system") - - ;; Close any remaining open file descriptors to be on the safe - ;; side. This must be the very last thing we do, because - ;; Guile has internal FDs such as 'sleep_pipe' that need to be - ;; alive. - (let loop ((fd 3)) - (when (< fd 1024) - (false-if-exception (close-fdes fd)) - (loop (+ 1 fd)))) - - ;; Start shepherd. - (execl #$(file-append shepherd "/bin/shepherd") - "shepherd" "--config" - #$(shepherd-configuration-file services)))))) + #~(begin + ;; Keep track of the booted system. + (false-if-exception (delete-file "/run/booted-system")) + (symlink (readlink "/run/current-system") + "/run/booted-system") + + ;; Close any remaining open file descriptors to be on the safe + ;; side. This must be the very last thing we do, because + ;; Guile has internal FDs such as 'sleep_pipe' that need to be + ;; alive. + (let loop ((fd 3)) + (when (< fd 1024) + (false-if-exception (close-fdes fd)) + (loop (+ 1 fd)))) + + ;; Start shepherd. + (execl #$(file-append shepherd "/bin/shepherd") + "shepherd" "--config" + #$(shepherd-configuration-file services)))) (define shepherd-root-service-type (service-type diff --git a/gnu/system.scm b/gnu/system.scm index d367307a24..84eab5f84f 100644 --- a/gnu/system.scm +++ b/gnu/system.scm @@ -470,13 +470,13 @@ a container or that of a \"bare metal\" system." (cons* (service system-service-type entries) %boot-service - ;; %SHEPHERD-ROOT-SERVICE must come first so that the gexp that + ;; %SHEPHERD-ROOT-SERVICE must come last so that the gexp that ;; execs shepherd comes last in the boot script (XXX). Likewise, - ;; the cleanup service must come last so that its gexp runs before + ;; the cleanup service must come first so that its gexp runs before ;; activation code. - %shepherd-root-service - %activation-service (service cleanup-service-type #f) + %activation-service + %shepherd-root-service (pam-root-service (operating-system-pam-services os)) (account-service (append (operating-system-accounts os) @@ -819,7 +819,6 @@ we're running in the final root. When CONTAINER? is true, skip all hardware-related operations as necessary when booting a Linux container." (let* ((services (operating-system-services os #:container? container?)) (boot (fold-services services #:target-type boot-service-type))) - ;; BOOT is the script as a monadic value. (service-value boot))) (define (operating-system-user-accounts os) diff --git a/gnu/tests/base.scm b/gnu/tests/base.scm index 05c846264d..4c24cf57f6 100644 --- a/gnu/tests/base.scm +++ b/gnu/tests/base.scm @@ -30,6 +30,8 @@ #:use-module (gnu services mcron) #:use-module (gnu services shepherd) #:use-module (gnu services networking) + #:use-module (gnu packages base) + #:use-module (gnu packages bash) #:use-module (gnu packages imagemagick) #:use-module (gnu packages ocr) #:use-module (gnu packages package-management) @@ -37,11 +39,13 @@ #:use-module (gnu packages tmux) #:use-module (guix gexp) #:use-module (guix store) + #:use-module (guix monads) #:use-module (guix packages) #:use-module (srfi srfi-1) #:export (run-basic-test %test-basic-os %test-halt + %test-cleanup %test-mcron %test-nss-mdns)) @@ -473,6 +477,72 @@ in a loop. See <http://bugs.gnu.org/26931>.") ;;; +;;; Cleanup of /tmp, /var/run, etc. +;;; + +(define %cleanup-os + (simple-operating-system + (simple-service 'dirty-things + boot-service-type + (let ((script (plain-file + "create-utf8-file.sh" + (string-append + "echo $0: dirtying /tmp...\n" + "set -e; set -x\n" + "touch /witness\n" + "exec touch /tmp/λαμβδα")))) + (with-imported-modules '((guix build utils)) + #~(begin + (setenv "PATH" + #$(file-append coreutils "/bin")) + (invoke #$(file-append bash "/bin/sh") + #$script))))))) + +(define (run-cleanup-test name) + (define os + (marionette-operating-system %cleanup-os + #:imported-modules '((gnu services herd) + (guix combinators)))) + (define test + (with-imported-modules '((gnu build marionette)) + #~(begin + (use-modules (gnu build marionette) + (srfi srfi-64) + (ice-9 match)) + + (define marionette + (make-marionette (list #$(virtual-machine os)))) + + (mkdir #$output) + (chdir #$output) + + (test-begin "cleanup") + + (test-assert "dirty service worked" + (marionette-eval '(file-exists? "/witness") marionette)) + + (test-equal "/tmp cleaned up" + '("." "..") + (marionette-eval '(begin + (use-modules (ice-9 ftw)) + (scandir "/tmp")) + marionette)) + + (test-end) + (exit (= (test-runner-fail-count (test-runner-current)) 0))))) + + (gexp->derivation "cleanup" test)) + +(define %test-cleanup + ;; See <https://bugs.gnu.org/26353>. + (system-test + (name "cleanup") + (description "Make sure the 'cleanup' service can remove files with +non-ASCII names from /tmp.") + (value (run-cleanup-test name)))) + + +;;; ;;; Mcron. ;;; diff --git a/guix/scripts/system.scm b/guix/scripts/system.scm index 727f1ac55f..a3f01636e6 100644 --- a/guix/scripts/system.scm +++ b/guix/scripts/system.scm @@ -551,10 +551,26 @@ list of services." ;; TRANSLATORS: Please preserve the two-space indentation. (format #t (G_ " label: ~a~%") label) (format #t (G_ " bootloader: ~a~%") bootloader-name) - (format #t (G_ " root device: ~a~%") - (if (uuid? root-device) - (uuid->string root-device) - root-device)) + + ;; TRANSLATORS: The '~[', '~;', and '~]' sequences in this string must + ;; be preserved. They denote conditionals, such that the result will + ;; look like: + ;; root device: UUID: 12345-678 + ;; or: + ;; root device: label: "my-root" + ;; or just: + ;; root device: /dev/sda3 + (format #t (G_ " root device: ~[UUID: ~a~;label: ~s~;~a~]~%") + (cond ((uuid? root-device) 0) + ((file-system-label? root-device) 1) + (else 2)) + (cond ((uuid? root-device) + (uuid->string root-device)) + ((file-system-label? root-device) + (file-system-label->string root-device)) + (else + root-device))) + (format #t (G_ " kernel: ~a~%") kernel)))) (define* (list-generations pattern #:optional (profile %system-profile)) |