aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--NEWS26
-rw-r--r--gnu/local.mk4
-rw-r--r--gnu/packages/admin.scm38
-rw-r--r--gnu/packages/bioinformatics.scm16
-rw-r--r--gnu/packages/cran.scm60
-rw-r--r--gnu/packages/databases.scm4
-rw-r--r--gnu/packages/emacs.scm231
-rw-r--r--gnu/packages/game-development.scm40
-rw-r--r--gnu/packages/games.scm111
-rw-r--r--gnu/packages/gnome.scm16
-rw-r--r--gnu/packages/golang.scm89
-rw-r--r--gnu/packages/java.scm2
-rw-r--r--gnu/packages/maven.scm4
-rw-r--r--gnu/packages/monitoring.scm26
-rw-r--r--gnu/packages/networking.scm2
-rw-r--r--gnu/packages/ocaml.scm3
-rw-r--r--gnu/packages/patches/libyaml-CVE-2014-9130.patch30
-rw-r--r--gnu/packages/patches/mrrescue-support-love-11.patch213
-rw-r--r--gnu/packages/patches/ocaml-enable-ocamldoc-reproducibility.patch149
-rw-r--r--gnu/packages/patches/x265-fix-ppc64le-build.patch25
-rw-r--r--gnu/packages/sdl.scm12
-rw-r--r--gnu/packages/statistics.scm4
-rw-r--r--gnu/packages/syncthing.scm28
-rw-r--r--gnu/packages/version-control.scm5
-rw-r--r--gnu/packages/video.scm10
-rw-r--r--gnu/packages/web.scm18
-rw-r--r--gnu/packages/wm.scm17
-rw-r--r--gnu/services.scm213
-rw-r--r--gnu/services/cuirass.scm2
-rw-r--r--gnu/services/pm.scm2
-rw-r--r--gnu/services/shepherd.scm40
-rw-r--r--gnu/system.scm9
-rw-r--r--gnu/tests/base.scm70
-rw-r--r--guix/scripts/system.scm24
34 files changed, 1137 insertions, 406 deletions
diff --git a/NEWS b/NEWS
index 0ce9611e1b..bc12161f42 100644
--- a/NEWS
+++ b/NEWS
@@ -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))