diff options
Diffstat (limited to 'gnu')
-rw-r--r-- | gnu/local.mk | 3 | ||||
-rw-r--r-- | gnu/packages.scm | 27 | ||||
-rw-r--r-- | gnu/packages/admin.scm | 4 | ||||
-rw-r--r-- | gnu/packages/bioinformatics.scm | 8 | ||||
-rw-r--r-- | gnu/packages/cpp.scm | 2 | ||||
-rw-r--r-- | gnu/packages/emacs.scm | 39 | ||||
-rw-r--r-- | gnu/packages/enlightenment.scm | 35 | ||||
-rw-r--r-- | gnu/packages/games.scm | 8 | ||||
-rw-r--r-- | gnu/packages/gnu-pw-mgr.scm | 4 | ||||
-rw-r--r-- | gnu/packages/linux.scm | 43 | ||||
-rw-r--r-- | gnu/packages/mail.scm | 4 | ||||
-rw-r--r-- | gnu/packages/messaging.scm | 15 | ||||
-rw-r--r-- | gnu/packages/monitoring.scm | 83 | ||||
-rw-r--r-- | gnu/packages/music.scm | 7 | ||||
-rw-r--r-- | gnu/packages/patches/haskell-mode-make-check.patch | 35 | ||||
-rw-r--r-- | gnu/packages/patches/haskell-mode-unused-variables.patch | 44 | ||||
-rw-r--r-- | gnu/packages/patches/rust-1.19-mrustc.patch | 28 | ||||
-rw-r--r-- | gnu/packages/python.scm | 12 | ||||
-rw-r--r-- | gnu/packages/ruby.scm | 871 | ||||
-rw-r--r-- | gnu/packages/rust.scm | 335 | ||||
-rw-r--r-- | gnu/packages/wine.scm | 6 |
21 files changed, 1426 insertions, 187 deletions
diff --git a/gnu/local.mk b/gnu/local.mk index 3b92a7ac0e..d929ec0da8 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -791,6 +791,8 @@ dist_patch_DATA = \ %D%/packages/patches/gtkglext-disable-disable-deprecated.patch \ %D%/packages/patches/gzdoom-search-in-installed-share.patch \ %D%/packages/patches/handbrake-pkg-config-path.patch \ + %D%/packages/patches/haskell-mode-unused-variables.patch \ + %D%/packages/patches/haskell-mode-make-check.patch \ %D%/packages/patches/hdf4-architectures.patch \ %D%/packages/patches/hdf4-reproducibility.patch \ %D%/packages/patches/hdf4-shared-fortran.patch \ @@ -1124,6 +1126,7 @@ dist_patch_DATA = \ %D%/packages/patches/ruby-concurrent-test-arm.patch \ %D%/packages/patches/ruby-rack-ignore-failing-test.patch \ %D%/packages/patches/ruby-tzinfo-data-ignore-broken-test.patch\ + %D%/packages/patches/rust-1.19-mrustc.patch \ %D%/packages/patches/rust-bootstrap-stage0-test.patch \ %D%/packages/patches/rust-coresimd-doctest.patch \ %D%/packages/patches/rxvt-unicode-escape-sequences.patch \ diff --git a/gnu/packages.scm b/gnu/packages.scm index 7b954769e9..532297239d 100644 --- a/gnu/packages.scm +++ b/gnu/packages.scm @@ -30,6 +30,7 @@ #:select ((package-name->name+version . hyphen-separated-name->name+version))) #:autoload (guix profiles) (packages->manifest) + #:use-module (guix describe) #:use-module (ice-9 vlist) #:use-module (ice-9 match) #:use-module (srfi srfi-1) @@ -46,6 +47,7 @@ %auxiliary-files-path %bootstrap-binaries-path %package-module-path + %default-package-module-path fold-packages @@ -130,22 +132,31 @@ for system '~a'") ("gnu/packages.scm" gnu/) ("guix.scm")))) +(define %default-package-module-path + ;; Default search path for package modules. + `((,%distro-root-directory . "gnu/packages"))) + (define %package-module-path ;; Search path for package modules. Each item must be either a directory ;; name or a pair whose car is a directory and whose cdr is a sub-directory ;; to narrow the search. (let* ((not-colon (char-set-complement (char-set #\:))) (environment (string-tokenize (or (getenv "GUIX_PACKAGE_PATH") "") - not-colon))) - ;; Automatically add items from $GUIX_PACKAGE_PATH to Guile's search path. - (for-each (lambda (directory) - (set! %load-path (cons directory %load-path)) - (set! %load-compiled-path - (cons directory %load-compiled-path))) - environment) + not-colon)) + (channels (package-path-entries))) + ;; Automatically add channels and items from $GUIX_PACKAGE_PATH to Guile's + ;; search path. For historical reasons, $GUIX_PACKAGE_PATH goes to the + ;; front; channels go to the back so that they don't override Guix' own + ;; modules. + (set! %load-path + (append environment %load-path channels)) + (set! %load-compiled-path + (append environment %load-compiled-path channels)) (make-parameter - (append environment `((,%distro-root-directory . "gnu/packages")))))) + (append environment + %default-package-module-path + channels)))) (define %patch-path ;; Define it after '%package-module-path' so that '%load-path' contains user diff --git a/gnu/packages/admin.scm b/gnu/packages/admin.scm index 3d58780b95..8807ab18b5 100644 --- a/gnu/packages/admin.scm +++ b/gnu/packages/admin.scm @@ -963,7 +963,7 @@ system administrator.") (define-public sudo (package (name "sudo") - (version "1.8.24") + (version "1.8.25") (source (origin (method url-fetch) (uri @@ -973,7 +973,7 @@ system administrator.") version ".tar.gz"))) (sha256 (base32 - "1s2v49n905wf3phmdnaa6v1dwck2lrcin0flg85z7klf35x5b25l")) + "0hfw6pcwjvv1vvnhb4n1p210306jm4npz99p9cfhbd33yrhhzkwx")) (modules '((guix build utils))) (snippet '(begin diff --git a/gnu/packages/bioinformatics.scm b/gnu/packages/bioinformatics.scm index 22a00894c2..f60fc4c84c 100644 --- a/gnu/packages/bioinformatics.scm +++ b/gnu/packages/bioinformatics.scm @@ -3602,7 +3602,7 @@ experiments and provide highly stable thresholds based on reproducibility.") (define-public jellyfish (package (name "jellyfish") - (version "2.2.7") + (version "2.2.10") (source (origin (method url-fetch) (uri (string-append "https://github.com/gmarcais/Jellyfish/" @@ -3610,7 +3610,7 @@ experiments and provide highly stable thresholds based on reproducibility.") "/jellyfish-" version ".tar.gz")) (sha256 (base32 - "1a1iwq9pq54k2m9ypvwl5s0bqfl64gwh9dx5af9i382ajas2016q")))) + "1k4pc3fvv6w1km2yph4m5sd78fbxp21d6xyzgmy0gjihzc6mb249")))) (build-system gnu-build-system) (outputs '("out" ;for library "ruby" ;for Ruby bindings @@ -3647,8 +3647,8 @@ DNA sequences. It outputs its k-mer counts in a binary format, which can be translated into a human-readable text format using the @code{jellyfish dump} command, or queried for specific k-mers with @code{jellyfish query}.") (home-page "http://www.genome.umd.edu/jellyfish.html") - ;; From their website: JELLYFISH runs on 64-bit Intel-compatible processors - (supported-systems '("x86_64-linux")) + ;; JELLYFISH seems to be 64-bit only. + (supported-systems '("x86_64-linux" "aarch64-linux" "mips64el-linux")) ;; The combined work is published under the GPLv3 or later. Individual ;; files such as lib/jsoncpp.cpp are released under the Expat license. (license (list license:gpl3+ license:expat)))) diff --git a/gnu/packages/cpp.scm b/gnu/packages/cpp.scm index 0160e42f6a..d591e6a884 100644 --- a/gnu/packages/cpp.scm +++ b/gnu/packages/cpp.scm @@ -236,7 +236,7 @@ as ordering relation.") (build-system cmake-build-system) (synopsis "JSON parser and printer library for C++") (description "JSON for Modern C++ is a C++ JSON library that provides -intutive syntax and trivial integration.") +intuitive syntax and trivial integration.") (license license:expat))) (define-public xtl diff --git a/gnu/packages/emacs.scm b/gnu/packages/emacs.scm index a1ce64ffaa..8f0c564f88 100644 --- a/gnu/packages/emacs.scm +++ b/gnu/packages/emacs.scm @@ -646,7 +646,11 @@ only a handful of functions that are not resource-specific.") "https://github.com/haskell/haskell-mode/archive/v" version ".tar.gz")) (sha256 - (base32 "0g6lcjw7lcgavv3yrd8xjcyqgfyjl787y32r1z14amw2f009m78h")))) + (base32 "0g6lcjw7lcgavv3yrd8xjcyqgfyjl787y32r1z14amw2f009m78h")) + (patches + (search-patches ; backport test failure fixes + "haskell-mode-unused-variables.patch" + "haskell-mode-make-check.patch")))) (inputs `(("emacs-el-search" ,emacs-el-search) ; for tests ("emacs-stream" ,emacs-stream))) ; for tests @@ -686,12 +690,11 @@ only a handful of functions that are not resource-specific.") (_ "")) inputs))) (substitute* (find-files "." "\\.el") (("/bin/sh") sh)) - (substitute* "tests/haskell-code-conventions.el" - ;; Function name recently changed in "emacs-el-search". - (("el-search--search-pattern") "el-search-forward") - ;; Don't contact home. - (("\\(when \\(>= emacs-major-version 25\\)") - "(require 'el-search) (when nil")) + ;; embed filename to fix test failure + (let ((file "tests/haskell-cabal-tests.el")) + (substitute* file + (("\\(buffer-file-name\\)") + (format #f "(or (buffer-file-name) ~s)" file)))) #t))) (replace 'install @@ -9003,7 +9006,7 @@ continue.") (define-public emacs-elisp-refs (package (name "emacs-elisp-refs") - (version "1.2") + (version "1.3") (source (origin (method url-fetch) @@ -9012,14 +9015,15 @@ continue.") (file-name (string-append name "-" version ".tar.gz")) (sha256 (base32 - "0fj6wphwrvbslw46w7wgdk3b4bfr312ygj3lbgr9qw63lpqw26nl")))) + "02nzcn3v14n7mp7q32j5r4wdlpsw3zixzh6cf0cdyarfir6dly3p")))) (build-system emacs-build-system) (propagated-inputs `(("emacs-dash" ,emacs-dash) ("emacs-f" ,emacs-f) ("emacs-list-utils" ,emacs-list-utils) ("emacs-loop" ,emacs-loop) - ("emacs-s" ,emacs-s))) + ("emacs-s" ,emacs-s) + ("emacs-shut-up" ,emacs-shut-up))) (home-page "https://github.com/Wilfred/elisp-refs") (synopsis "Find callers of elisp functions or macros") (description "Find references to functions, macros or variables. Unlike a @@ -9563,11 +9567,12 @@ duplicate hook and function names further into a single declarative call.") "0rf2rnzg82pdqch041yyx3f9ddixffkk9s2ydzg8hwy66sg3385n")))) (build-system emacs-build-system) (home-page "https://github.com/Malabarba/fancy-narrow/releases") - (synopsis "Immitate narrow-to-region with more eye-candy") - (description "Unlike narrow-to-region, which completely hides text outside -the narrowed region, this package simply deemphasizes the text, makes it -readonly, and makes it unreachable. This leads to a much more natural -feeling, where the region stays static (instead of being brutally moved to a + (synopsis "Imitate @code{narrow-to-region} with more eye candy") + (description + "Unlike @code{narrow-to-region}, which completely hides text outside +the narrowed region, this package simply de-emphasizes the text, makes it +read-only, and makes it unreachable. This leads to a much more natural +feeling where the region stays static (instead of being brutally moved to a blank slate) and is clearly highlighted with respect to the rest of the buffer.") (license license:gpl2+))) @@ -9659,7 +9664,7 @@ downloading manager for Emacs.") (define-public emacs-helpful (package (name "emacs-helpful") - (version "0.1") + (version "0.13") (source (origin (method url-fetch) (uri (string-append @@ -9668,7 +9673,7 @@ downloading manager for Emacs.") (file-name (string-append name "-" version ".tar.gz")) (sha256 (base32 - "16dx566qzrjj0bf43lnw7h1qlvgs94brqplamw8kppp2ylr72qs9")))) + "11kj04y1fa3vnw2991cyqf6adz6bb3hlrdkvypjnmpb0s64q64b6")))) (build-system emacs-build-system) (propagated-inputs `(("emacs-elisp-refs" ,emacs-elisp-refs))) diff --git a/gnu/packages/enlightenment.scm b/gnu/packages/enlightenment.scm index 15ec492793..40a5ec1cf4 100644 --- a/gnu/packages/enlightenment.scm +++ b/gnu/packages/enlightenment.scm @@ -62,7 +62,7 @@ (define-public efl (package (name "efl") - (version "1.20.7") + (version "1.21.0") (source (origin (method url-fetch) (uri (string-append @@ -70,7 +70,7 @@ version ".tar.xz")) (sha256 (base32 - "1zkn5ix81xck3n84dxvkjh4alwc6zj8x989d0zqi5c6ppijvgadh")))) + "0jxfrcz2aq1synxzd6sh9nhxz7fg9qgz0idr8zj6gaiplmwbwrby")))) (outputs '("out" ; 49 MB "include")) ; 17 MB (build-system gnu-build-system) @@ -312,35 +312,36 @@ embedded systems.") (define-public python-efl (package (name "python-efl") - (version "1.20.0") + (version "1.21.0") (source (origin (method url-fetch) - (uri (list - (pypi-uri "python-efl" version) - (string-append "http://download.enlightenment.org/rel/bindings/" - "python/python-efl-" version ".tar.gz"))) + (uri (string-append "http://download.enlightenment.org/rel/bindings/" + "python/python-efl-" version ".tar.xz")) (sha256 (base32 - "1680pgpf501nhbc9arm0nfj6rpcw17aryh0pgmmmszxlgpifpdzy")))) + "08x2cv8hnf004c3711250wrax21ffj5y8951pvk77h98als4pq47")))) (build-system python-build-system) (arguments '(#:phases (modify-phases %standard-phases - (replace 'build - (lambda _ - (zero? - (system* "env" "ENABLE_CYTHON=1" "python" "setup.py" "build")))) + (replace 'build + (lambda _ + (setenv "ENABLE_CYTHON" "1") + (invoke "python" "setup.py" "build"))) (add-before 'build 'set-flags - (lambda _ - (setenv "CFLAGS" - (string-append "-I" (assoc-ref %build-inputs "python-dbus") - "/include/dbus-1.0")) - #t)) + (lambda _ + (setenv "CFLAGS" + (string-append "-I" (assoc-ref %build-inputs "python-dbus") + "/include/dbus-1.0")) + #t)) (add-before 'check 'set-environment (lambda _ ;; Some tests require write access to HOME. (setenv "HOME" "/tmp") + ;; These tests try to connect to the internet. + (delete-file "tests/ecore/test_09_file_download.py") + (delete-file "tests/ecore/test_11_con.py") #t))))) (native-inputs `(("pkg-config" ,pkg-config) diff --git a/gnu/packages/games.scm b/gnu/packages/games.scm index 3c5063f69b..728f763806 100644 --- a/gnu/packages/games.scm +++ b/gnu/packages/games.scm @@ -2470,7 +2470,7 @@ Transport Tycoon Deluxe.") (define openrct2-objects (package (name "openrct2-objects") - (version "1.0.2") + (version "1.0.6") (source (origin (method url-fetch) @@ -2479,7 +2479,7 @@ Transport Tycoon Deluxe.") (file-name (string-append name "-" version ".zip")) (sha256 (base32 - "1z92afhbv13j1ig6fz0x8w9vdmfchssv16vwwhb0vj40pn1g1rwy")))) + "00kfy95zx6g4ldr6br5p7bwkwfx6pw9v78fd3rvghjnwyvf5fhki")))) (build-system trivial-build-system) (native-inputs `(("bash" ,bash) @@ -2511,7 +2511,7 @@ Transport Tycoon Deluxe.") (define-public openrct2 (package (name "openrct2") - (version "0.2.0") + (version "0.2.1") (source (origin (method url-fetch) @@ -2519,7 +2519,7 @@ Transport Tycoon Deluxe.") version ".tar.gz")) (sha256 (base32 - "1yrbjra27n2xxb1x47v962lc3qi8gwm5ws4f97952nvn533zrwxz")) + "1fxzk037xphpyk7vv5jfrcz739zrj86p43pnf5gjjv9rjxwv7m8f")) (file-name (string-append name "-" version ".tar.gz")))) (build-system cmake-build-system) (arguments diff --git a/gnu/packages/gnu-pw-mgr.scm b/gnu/packages/gnu-pw-mgr.scm index 38f9e8187a..a56bc09e61 100644 --- a/gnu/packages/gnu-pw-mgr.scm +++ b/gnu/packages/gnu-pw-mgr.scm @@ -30,7 +30,7 @@ (define-public gnu-pw-mgr (package (name "gnu-pw-mgr") - (version "2.3.3") + (version "2.4.2") (source (origin (method url-fetch) @@ -38,7 +38,7 @@ version ".tar.xz")) (sha256 (base32 - "04xh38j7l0sfnb01kp05xc908pvqfc0lph94k7n9bi46zy3qy7ma")))) + "1yvdzc5w37qrjrkby5699ygj9bhkvgi3zk9k9jcjry1j6b7wdl17")))) (build-system gnu-build-system) (arguments '(#:phases diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm index 63b3ece8e1..02d723316d 100644 --- a/gnu/packages/linux.scm +++ b/gnu/packages/linux.scm @@ -29,6 +29,7 @@ ;;; Copyright © 2017 Dave Love <fx@gnu.org> ;;; Copyright © 2018 Pierre-Antoine Rouby <pierre-antoine.rouby@inria.fr> ;;; Copyright © 2018 Brendan Tildesley <brendan.tildesley@openmailbox.org> +;;; Copyright © 2018 Manuel Graf <graf@init.at> ;;; ;;; This file is part of GNU Guix. ;;; @@ -3622,6 +3623,48 @@ The following service daemons are also provided: license:cc0 ; most files in ccan/ license:bsd-3)))) ; providers/hfi1verbs are dual GPL2/BSD-3 +(define-public perftest + (package + (name "perftest") + (version "4.2-0.8") + (source + (origin + (method url-fetch) + (uri (string-append "https://github.com/linux-rdma/perftest/releases/download/V" + version "/perftest-" version ".g0e24e67.tar.gz")) + (sha256 + (base32 "1r3pxn7cx3grb8myb4q1b0pk447pc06cifd0v7ym13xw00372dlx")))) + (build-system gnu-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-after 'unpack 'patch-header-paths + (lambda _ + (substitute* '("src/raw_ethernet_fs_rate.c" + "src/raw_ethernet_resources.c" + "src/raw_ethernet_resources.h" + "src/raw_ethernet_send_burst_lat.c" + "src/raw_ethernet_send_bw.c" + "src/raw_ethernet_send_lat.c") + (("/usr/include/netinet/ip.h") "netinet/ip.h")) + #t))))) + (inputs `(("rdma-core" ,rdma-core))) + (home-page "https://github.com/linux-rdma/perftest/") + (synopsis "Open Fabrics Enterprise Distribution (OFED) Performance Tests") + (description "This is a collection of tests written over uverbs intended for +use as a performance micro-benchmark. The tests may be used for hardware or +software tuning as well as for functional testing. + +The collection contains a set of bandwidth and latency benchmark such as: +@enumerate +@item Send - @code{ib_send_bw} and @code{ib_send_lat} +@item RDMA Read - @code{ib_read_bw} and @code{ib_read_lat} +@item RDMA Write - @code{ib_write_bw} and @code{ib_wriet_lat} +@item RDMA Atomic - @code{ib_atomic_bw} and @code{ib_atomic_lat} +@item Native Ethernet (when working with MOFED2) - @code{raw_ethernet_bw}, @code{raw_ethernet_lat} +@end enumerate") + (license license:gpl2))) + (define-public rng-tools (package (name "rng-tools") diff --git a/gnu/packages/mail.scm b/gnu/packages/mail.scm index 1f7e971d60..4944dd7622 100644 --- a/gnu/packages/mail.scm +++ b/gnu/packages/mail.scm @@ -706,9 +706,9 @@ attachments, create new maildirs, and so on.") ("python2-pygpgme" ,python2-pygpgme) ("python2-notmuch" ,python2-notmuch))) (home-page "https://github.com/pazz/alot") - (synopsis "Commandline MUA using notmuch") + (synopsis "Command-line MUA using @code{notmuch}") (description - "Alot is an experimental terminal mail user agent (MUA) based on + "Alot is an experimental terminal mail user agent (@dfn{MUA}) based on @code{notmuch} mail. It is written in Python using the @code{urwid} toolkit.") (license gpl3+))) diff --git a/gnu/packages/messaging.scm b/gnu/packages/messaging.scm index b03cb8f03a..42a0847b7a 100644 --- a/gnu/packages/messaging.scm +++ b/gnu/packages/messaging.scm @@ -548,14 +548,14 @@ simultaneously and therefore appear under the same nickname on IRC.") (define-public python-nbxmpp (package (name "python-nbxmpp") - (version "0.6.6") + (version "0.6.7") (source (origin (method url-fetch) (uri (pypi-uri "nbxmpp" version)) (sha256 (base32 - "0bp60syqc3qp2i28phvadxlpwizjbr6bxw4m363p9yn5fl687qnh")))) + "0fas4iawjfdmkz8vr042wpq6b2qispi6fy35g4a62jw50jb1saav")))) (build-system python-build-system) (arguments `(#:tests? #f)) ; no tests @@ -873,7 +873,7 @@ protocols.") (define-public c-toxcore (package (name "c-toxcore") - (version "0.2.6") + (version "0.2.7") (source (origin (method url-fetch) @@ -882,7 +882,7 @@ protocols.") (file-name (string-append name "-" version ".tar.gz")) (sha256 (base32 - "04b3ifkj64yy06vph0hlq24mw9fh24zmq1qdf40fmj24vvgfmjpl")))) + "1lcw979zakyb5kzy8yfk87js3bzfz3k2jxidda6ga6ljdnqdpxmy")))) (arguments `(#:tests? #f)) ; FIXME: Testsuite seems to stay stuck on test 3. Disable ; for now. @@ -1565,7 +1565,7 @@ using ncurses and libmesode, inspired by Irssi.") (define-public libircclient (package (name "libircclient") - (version "1.9") + (version "1.10") (source (origin (method url-fetch) @@ -1573,7 +1573,7 @@ using ncurses and libmesode, inspired by Irssi.") version "/libircclient-" version ".tar.gz")) (sha256 (base32 - "0r60i76jh4drjh2jgp5sx71chagqllmkaq49zv67nrhqwvp9ghw1")))) + "0b9wa0h3xc31wpqlvgxgnvqp5wgx3kwsf5s9432m5cj8ycx6zcmv")))) (build-system gnu-build-system) (inputs `(("openssl" ,openssl))) @@ -1584,8 +1584,7 @@ using ncurses and libmesode, inspired by Irssi.") "--enable-shared" "--enable-ipv6" "--enable-openssl") - ;; no test suite - #:tests? #f)) + #:tests? #f)) ; no test suite (home-page "https://www.ulduzsoft.com/libircclient/") (synopsis "Library implementing the client IRC protocol") (description "Libircclient is a library which implements the client IRC diff --git a/gnu/packages/monitoring.scm b/gnu/packages/monitoring.scm index fae62d5493..12d736a76a 100644 --- a/gnu/packages/monitoring.scm +++ b/gnu/packages/monitoring.scm @@ -4,6 +4,7 @@ ;;; Copyright © 2017, 2018 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2018 Gábor Boskovits <boskovits@gmail.com> +;;; Copyright © 2018 Oleg Pykhalov <go.wigust@gmail.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -29,18 +30,25 @@ #:use-module (guix build-system python) #:use-module (guix build-system gnu) #:use-module (guix build-system go) + #:use-module (guix utils) #:use-module (gnu packages admin) #:use-module (gnu packages base) + #:use-module (gnu packages curl) #:use-module (gnu packages check) #:use-module (gnu packages compression) + #:use-module (gnu packages databases) #:use-module (gnu packages django) #:use-module (gnu packages gd) #:use-module (gnu packages image) #:use-module (gnu packages mail) + #:use-module (gnu packages networking) + #:use-module (gnu packages libevent) + #:use-module (gnu packages pcre) #:use-module (gnu packages perl) #:use-module (gnu packages python) #:use-module (gnu packages python-web) - #:use-module (gnu packages time)) + #:use-module (gnu packages time) + #:use-module (gnu packages tls)) (define-public nagios (package @@ -138,6 +146,79 @@ etc. via a Web interface. Features include: @end itemize\n") (license license:gpl2))) +(define-public zabbix-agentd + (package + (name "zabbix-agentd") + (version "3.4.11") + (source + (origin + (method url-fetch) + (uri (string-append + "mirror://sourceforge/zabbix/ZABBIX%20Latest%20Stable/" version + "/zabbix-" version ".tar.gz")) + (sha256 + (base32 + "0qxgf6hx7ibhjmxd2sxizkjc8df4c9d31wz5hhql409ws98qf173")))) + (build-system gnu-build-system) + (arguments + `(#:configure-flags + (list "--enable-agent" + (string-append "--with-iconv=" + (assoc-ref %build-inputs "libiconv")) + (string-append "--with-libpcre=" + (assoc-ref %build-inputs "pcre"))))) + (inputs + `(("libiconv" ,libiconv) + ("pcre" ,pcre))) + (home-page "https://www.zabbix.com/") + (synopsis "Distributed monitoring solution (client-side agent)") + (description "This package provides a distributed monitoring +solution (client-side agent)") + (license license:gpl2))) + +(define-public zabbix-server + (package + (inherit zabbix-agentd) + (name "zabbix-server") + (arguments + (substitute-keyword-arguments + `(#:phases + (modify-phases %standard-phases + (add-after 'install 'install-frontend + (lambda* (#:key outputs #:allow-other-keys) + (let* ((php (string-append (assoc-ref outputs "out") + "/share/zabbix/php")) + (front-end-conf (string-append php "/conf")) + (etc (string-append php "/etc"))) + (mkdir-p php) + (copy-recursively "./frontends/php" php) + (rename-file front-end-conf + (string-append front-end-conf "-example")) + (symlink "/etc/zabbix" front-end-conf))))) + ,@(package-arguments zabbix-agentd)) + ((#:configure-flags flags) + `(cons* "--enable-server" + "--with-postgresql" + (string-append "--with-libevent=" + (assoc-ref %build-inputs "libevent")) + "--with-net-snmp" + (string-append "--with-gnutls=" + (assoc-ref %build-inputs "gnutls")) + "--with-libcurl" + ,flags)))) + (inputs + `(("curl" ,curl) + ("libevent" ,libevent) + ("gnutls" ,gnutls) + ("postgresql" ,postgresql) + ("zlib" ,zlib) + ("net-snmp" ,net-snmp) + ("curl" ,curl) + ,@(package-inputs zabbix-agentd))) + (synopsis "Distributed monitoring solution (server-side)") + (description "This package provides a distributed monitoring +solution (server-side)"))) + (define-public darkstat (package (name "darkstat") diff --git a/gnu/packages/music.scm b/gnu/packages/music.scm index edffcfce96..ba21e5da2b 100644 --- a/gnu/packages/music.scm +++ b/gnu/packages/music.scm @@ -3685,7 +3685,7 @@ specification and header.") (define-public rosegarden (package (name "rosegarden") - (version "17.04") + (version "18.06") (source (origin (method url-fetch) (uri (string-append @@ -3693,7 +3693,7 @@ specification and header.") version "/rosegarden-" version ".tar.bz2")) (sha256 (base32 - "1khfcj22asdhjh0jvhkqsz200wgmigkhsrcz09ffia5hqm0n32lq")))) + "04qc80sqb2ji42pq3mayhvqqn39hlxzymsywpbpzfpchr19chxx7")))) (build-system cmake-build-system) (arguments `(#:configure-flags '("-DUSE_QT5=1") ; "-DCMAKE_BUILD_TYPE=Release" @@ -3747,6 +3747,7 @@ specification and header.") ;; Tests create files in $HOME/.local/share/rosegarden . (mkdir-p "/tmp/foo") (setenv "HOME" "/tmp/foo") + (setenv "XDG_RUNTIME_DIR" "/tmp/foo") #t))))) (inputs `(("alsa-lib" ,alsa-lib) @@ -3773,7 +3774,7 @@ sequencer") (description "Rosegarden is a music composition and editing environment based around a MIDI sequencer that features a rich understanding of music notation and includes basic support for digital audio.") - (home-page "http://www.rosegardenmusic.com/") + (home-page "https://www.rosegardenmusic.com/") (license license:gpl2))) (define-public patchmatrix diff --git a/gnu/packages/patches/haskell-mode-make-check.patch b/gnu/packages/patches/haskell-mode-make-check.patch new file mode 100644 index 0000000000..a4d4d525f2 --- /dev/null +++ b/gnu/packages/patches/haskell-mode-make-check.patch @@ -0,0 +1,35 @@ +Copied from upstream repository. +Hunk #2 is removed since it cannot be applied and it is not needed. + +From 7cead7137bf54851c1b7df5a3854351296d21276 Mon Sep 17 00:00:00 2001 +From: Vasantha Ganesh K <vasanthaganesh.k@tuta.io> +Date: Thu, 22 Jun 2017 23:38:40 +0530 +Subject: [PATCH] removed `check-conventions' from make + +--- + Makefile | 7 +- + tests/haskell-code-conventions.el | 165 ------------------------------ + 2 files changed, 1 insertion(+), 171 deletions(-) + delete mode 100644 tests/haskell-code-conventions.el + +diff --git a/Makefile b/Makefile +index b2c89d6..aa907c5 100644 +--- a/Makefile ++++ b/Makefile +@@ -79,12 +79,7 @@ build-$(EMACS_VERSION)/build-flag : build-$(EMACS_VERSION) $(patsubst %.el,build + check-%: tests/%-tests.el + $(BATCH) -l "$<" -f ert-run-tests-batch-and-exit; + +-check: compile $(AUTOLOADS) check-ert check-conventions +- +-check-conventions : +- $(BATCH) -l tests/haskell-code-conventions.el \ +- -f haskell-check-conventions-batch-and-exit +- @echo "conventions are okay" ++check: compile $(AUTOLOADS) check-ert + + check-ert: $(ELCHECKS) + $(BATCH) --eval "(when (= emacs-major-version 24) \ +-- +2.18.0 + diff --git a/gnu/packages/patches/haskell-mode-unused-variables.patch b/gnu/packages/patches/haskell-mode-unused-variables.patch new file mode 100644 index 0000000000..b175fae28c --- /dev/null +++ b/gnu/packages/patches/haskell-mode-unused-variables.patch @@ -0,0 +1,44 @@ +Copied verbatim from upstream repository. + +From cee22450ee30e79952f594796721dc6b17798ee6 Mon Sep 17 00:00:00 2001 +From: Sascha Wilde <wilde@sha-bang.de> +Date: Fri, 23 Sep 2016 15:35:59 +0200 +Subject: [PATCH] Removed unused lexical variables. + +--- + haskell-lexeme.el | 3 +-- + haskell-process.el | 4 +--- + 2 files changed, 2 insertions(+), 5 deletions(-) + +diff --git a/haskell-lexeme.el b/haskell-lexeme.el +index 4256a79..b832560 100644 +--- a/haskell-lexeme.el ++++ b/haskell-lexeme.el +@@ -138,8 +138,7 @@ When match is successful, match-data will contain: + (match-text 2) - whole qualified identifier + (match-text 3) - unqualified part of identifier + (match-text 4) - closing backtick" +- (let ((begin (point)) +- (match-data-old (match-data)) ++ (let ((match-data-old (match-data)) + first-backtick-start + last-backtick-start + qid-start +diff --git a/haskell-process.el b/haskell-process.el +index b4efba2..4f3f859 100644 +--- a/haskell-process.el ++++ b/haskell-process.el +@@ -160,9 +160,7 @@ HPTYPE is the result of calling `'haskell-process-type`' function." + (defun haskell-process-log (msg) + "Effective append MSG to the process log (if enabled)." + (when haskell-process-log +- (let* ((append-to (get-buffer-create "*haskell-process-log*")) +- (windows (get-buffer-window-list append-to t t)) +- move-point-in-windows) ++ (let* ((append-to (get-buffer-create "*haskell-process-log*"))) + (with-current-buffer append-to + ;; point should follow insertion so that it stays at the end + ;; of the buffer +-- +2.18.0 + diff --git a/gnu/packages/patches/rust-1.19-mrustc.patch b/gnu/packages/patches/rust-1.19-mrustc.patch new file mode 100644 index 0000000000..261162172e --- /dev/null +++ b/gnu/packages/patches/rust-1.19-mrustc.patch @@ -0,0 +1,28 @@ +See https://github.com/thepowersgang/mrustc/archive/v0.8.0.tar.gz + +--- rustc-1.19.0-src-orig/src/libcore/intrinsics.rs ++++ rustc-1.19.0-src/src/libcore/intrinsics.rs +@@ -678,5 +678,9 @@ + pub fn min_align_of_val<T: ?Sized>(_: &T) -> usize; + ++ /// Obtain the length of a slice pointer ++ #[cfg(rust_compiler="mrustc")] ++ pub fn mrustc_slice_len<T>(pointer: *const [T]) -> usize; ++ + /// Gets a static string slice containing the name of a type. + pub fn type_name<T: ?Sized>() -> &'static str; + +--- rustc-1.19.0-src-orig/src/libcore/slice/mod.rs ++++ rustc-1.19.0-src/src/libcore/slice/mod.rs +@@ -413,6 +413,8 @@ + #[inline] + fn len(&self) -> usize { +- unsafe { +- mem::transmute::<&[T], Repr<T>>(self).len +- } ++ #[cfg(not(rust_compiler="mrustc"))] ++ let rv = unsafe { mem::transmute::<&[T], Repr<T>>(self).len }; ++ #[cfg(rust_compiler="mrustc")] ++ let rv = unsafe { ::intrinsics::mrustc_slice_len(self) }; ++ rv + } diff --git a/gnu/packages/python.scm b/gnu/packages/python.scm index fd1fdbf82d..9fdadfbd73 100644 --- a/gnu/packages/python.scm +++ b/gnu/packages/python.scm @@ -3755,6 +3755,18 @@ functions.") (arguments `(#:phases (modify-phases %standard-phases + (add-after 'unpack 'disable-broken-tests + (lambda _ + (substitute* "scipy/sparse/linalg/dsolve/tests/test_linsolve.py" + (("^( +)def test_threads_parallel\\(self\\):" m indent) + (string-append indent + "@pytest.mark.skip(reason=\"Disabled by Guix\")\n" + m))) + (substitute* "scipy/sparse/linalg/eigen/arpack/tests/test_arpack.py" + (("^def test_parallel_threads\\(\\):" m) + (string-append "@pytest.mark.skip(reason=\"Disabled by Guix\")\n" + m))) + #t)) (add-before 'build 'configure-openblas (lambda* (#:key inputs #:allow-other-keys) (call-with-output-file "site.cfg" diff --git a/gnu/packages/ruby.scm b/gnu/packages/ruby.scm index 908dfd5751..616b86934d 100644 --- a/gnu/packages/ruby.scm +++ b/gnu/packages/ruby.scm @@ -37,6 +37,7 @@ #:use-module (gnu packages java) #:use-module (gnu packages libffi) #:use-module (gnu packages maths) + #:use-module (gnu packages ncurses) #:use-module (gnu packages networking) #:use-module (gnu packages python) #:use-module (gnu packages ragel) @@ -193,6 +194,25 @@ a focus on simplicity and productivity.") (("/bin/sh") (which "sh"))) #t))))))) +(define-public ruby-concurrent + (package + (name "ruby-concurrent") + (version "1.0.5") + (source (origin + (method url-fetch) + (uri (rubygems-uri "concurrent-ruby" version)) + (sha256 + (base32 + "183lszf5gx84kcpb779v6a2y0mx9sssy8dgppng1z9a505nj1qcf")))) + (build-system ruby-build-system) + (arguments `(#:tests? #f)); No rakefile + (home-page "https://github.com/ruby-concurrency/concurrent-ruby") + (synopsis "Concurrency tools for Ruby") + (description "This gem provides concurrency tools for Ruby. It provides +a library of common thread-safe types and data-structures as well as abstractions +for concurrency and communication between threads.") + (license license:expat))) + (define-public ruby-highline (package (name "ruby-highline") @@ -262,16 +282,17 @@ packaging native C and Java extensions in Ruby.") (define-public ruby-i18n (package (name "ruby-i18n") - (version "0.7.0") + (version "1.1.0") (source (origin (method url-fetch) (uri (rubygems-uri "i18n" version)) (sha256 (base32 - "1i5z1ykl8zhszsxcs8mzl8d0dxgs3ylz8qlzrw74jb0gplkx6758")))) + "0ppvmla21hssvrfm8g1n2fnb4lxn4yhy9qmmba0imanflgldrjmr")))) (build-system ruby-build-system) (arguments '(#:tests? #f)) ; no tests + (propagated-inputs `(("concurrent-ruby" ,ruby-concurrent))) (synopsis "Internationalization library for Ruby") (description "Ruby i18n is an internationalization and localization solution for Ruby programs. It features translation and localization, @@ -3013,17 +3034,28 @@ you about the changes.") (home-page "https://github.com/guard/listen") (license license:expat))) +(define-public ruby-listen-3.0 + (package + (inherit ruby-listen) + (version "3.0.8") + (source (origin + (method url-fetch) + (uri (rubygems-uri "listen" version)) + (sha256 + (base32 + "1l0y7hbyfiwpvk172r28hsdqsifq1ls39hsfmzi1vy4ll0smd14i")))))) + (define-public ruby-activesupport (package (name "ruby-activesupport") - (version "5.1.4") + (version "5.2.1") (source (origin (method url-fetch) (uri (rubygems-uri "activesupport" version)) (sha256 (base32 - "0sgf4rsfr7jcaqsx0wwzx4l4k9xsjlwv0mzl08pxiyp1qzyx8scr")))) + "0ziy6xk31k4fs115cdkba1ys4i8nzcyri7a2jig7nx7k5h7li6l2")))) (build-system ruby-build-system) (arguments `(#:phases @@ -4658,7 +4690,7 @@ binary-to-text encoding. The main modern use of Ascii85 is in PostScript and (define-public ruby-ttfunk (package (name "ruby-ttfunk") - (version "1.4.0") + (version "1.5.1") (source (origin (method url-fetch) @@ -4669,12 +4701,18 @@ binary-to-text encoding. The main modern use of Ascii85 is in PostScript and (file-name (string-append name "-" version ".tar.gz")) (sha256 (base32 - "1izq84pnm9niyvkzp8k0vl232q9zj41hwmp9na9fzycfh1pbnsl6")))) + "1ymcn12n5iws401yz03zsj8rr653fdqq13czsrciq09phgh9jzc5")))) (build-system ruby-build-system) (arguments `(#:test-target "spec" #:phases (modify-phases %standard-phases + (add-before 'build 'remove-ssh + (lambda _ + ;; remove dependency on an ssh key pair that doesn't exist + (substitute* "ttfunk.gemspec" + (("spec.signing_key.*") "")) + #t)) (add-before 'check 'remove-rubocop (lambda _ ;; remove rubocop as a dependency as not needed for testing @@ -4682,10 +4720,11 @@ binary-to-text encoding. The main modern use of Ascii85 is in PostScript and (("spec.add_development_dependency\\('rubocop'.*") "")) (substitute* "Rakefile" (("require 'rubocop/rake_task'") "") - (("Rubocop::RakeTask.new") "")) + (("RuboCop::RakeTask.new") "")) #t))))) (native-inputs `(("ruby-rspec" ,ruby-rspec) + ("ruby-yard" ,ruby-yard) ("bundler" ,bundler))) (synopsis "Font metrics parser for the Prawn PDF generator") (description @@ -5070,3 +5109,821 @@ programs running in the background, in Ruby.") (sha256 (base32 "0a61922kmvcxyj5l70fycapr87gz1dzzlkfpq85rfqk5vdh3d28p")))))) + +(define-public ruby-public-suffix + (package + (name "ruby-public-suffix") + (version "3.0.3") + (source (origin + (method url-fetch) + (uri (rubygems-uri "public_suffix" version)) + (sha256 + (base32 + "08q64b5br692dd3v0a9wq9q5dvycc6kmiqmjbdxkxbfizggsvx6l")))) + (build-system ruby-build-system) + (arguments + ;; Tests require network + `(#:tests? #f)) + (home-page "https://simonecarletti.com/code/publicsuffix-ruby/") + (synopsis "Domain name parser") + (description "The gem @code{public_suffix} is a domain name parser, +written in Ruby, and based on the @dfn{Public Suffix List}. A public suffix +is one under which Internet users can (or historically could) directly +register names. Some examples of public suffixes are @code{.com}, +@code{.co.uk} and @code{pvt.k12.ma.us}. The Public Suffix List is a list of +all known public suffixes.") + (license license:expat))) + +(define-public ruby-addressable + (package + (name "ruby-addressable") + (version "2.5.2") + (source (origin + (method url-fetch) + (uri (rubygems-uri "addressable" version)) + (sha256 + (base32 + "0viqszpkggqi8hq87pqp0xykhvz60g99nwmkwsb0v45kc2liwxvk")))) + (build-system ruby-build-system) + (propagated-inputs + `(("ruby-public-suffix" ,ruby-public-suffix))) + (arguments + ;; No test target + `(#:tests? #f)) + (home-page "https://github.com/sporkmonger/addressable") + (synopsis "Alternative URI implementation") + (description "Addressable is a replacement for the URI implementation that +is part of Ruby's standard library. It more closely conforms to RFC 3986, +RFC 3987, and RFC 6570 (level 4), providing support for IRIs and URI templates.") + (license license:asl2.0))) + +(define-public ruby-colorator + (package + (name "ruby-colorator") + (version "1.1.0") + (source (origin + (method url-fetch) + (uri (rubygems-uri "colorator" version)) + (sha256 + (base32 + "0f7wvpam948cglrciyqd798gdc6z3cfijciavd0dfixgaypmvy72")))) + (build-system ruby-build-system) + (arguments + ;; No test target + `(#:tests? #f)) + (home-page "http://octopress.org/colorator/") + (synopsis "Terminal color library") + (description "Colorator is a Ruby gem that helps you colorize your text +for the terminal.") + (license license:expat))) + +(define-public ruby-command-line-reporter + (package + (name "ruby-command-line-reporter") + (version "4.0.0") + (source (origin + (method url-fetch) + (uri (rubygems-uri "command_line_reporter" version)) + (sha256 + (base32 + "1qma35xrb772whxwy1rs9bicb9d6lvz0s2dd2dnn4fr6zcbcxc0a")))) + (build-system ruby-build-system) + (arguments + ;; No Rakefile + `(#:tests? #f + #:phases + (modify-phases %standard-phases + (add-before 'build 'fix-dependencies + (lambda _ + (substitute* ".gemspec" + ;; colored is unmaintained + (("colored") "colorator") + ;; colorator version + (("= 1.2") "= 1.1")) + #t))))) + (propagated-inputs `(("ruby-colorator" ,ruby-colorator))) + (home-page "https://github.com/wbailey/command_line_reporter") + (synopsis "Report production while executing Ruby scripts") + (description "This gem provides a DSL that makes it easy to write reports +of various types in ruby. It eliminates the need to litter your source with +puts statements, instead providing a more readable, expressive interface to +your application.") + (license license:asl2.0))) + +(define-public ruby-command-line-reporter-3 + (package + (inherit ruby-command-line-reporter) + (version "3.3.6") + (source (origin + (method url-fetch) + (uri (rubygems-uri "command_line_reporter" version)) + (sha256 + (base32 + "1h39zqqxp3k4qk49ajpx0jps1vmvxgkh43mqkb6znk583bl0fv71")))))) + +(define-public ruby-rdoc + (package + (name "ruby-rdoc") + (version "6.0.4") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "rdoc" version)) + (sha256 + (base32 + "0anv42cqcdc6g4n386mrva7mgav5i0c2ry3yzvzzc6z6hymkmcr7")))) + (build-system ruby-build-system) + (native-inputs + `(("bundler" ,bundler))) + (home-page "https://ruby.github.io/rdoc/") + (synopsis "HTML and command-line documentation utility") + (description "RDoc produces HTML and command-line documentation for Ruby +projects. RDoc includes the +rdoc+ and +ri+ tools for generating and displaying +documentation from the command-line.") + (license license:gpl2+))) + +(define-public ruby-sass-listen + (package + (name "ruby-sass-listen") + (version "4.0.0") + (source (origin + (method url-fetch) + (uri (rubygems-uri "sass-listen" version)) + (sha256 + (base32 + "0xw3q46cmahkgyldid5hwyiwacp590zj2vmswlll68ryvmvcp7df")))) + (build-system ruby-build-system) + (arguments + ;; No test target + `(#:tests? #f)) + (propagated-inputs + `(("ruby-rb-fsevent" ,ruby-rb-fsevent) + ("ruby-rb-inotify" ,ruby-rb-inotify))) + (home-page "https://github.com/sass/listen") + (synopsis "File modification notification library") + (description "The Listen gem listens to file modifications and notifies you +about the changes.") + (license license:expat))) + +(define-public ruby-terminfo + (package + (name "ruby-terminfo") + (version "0.1.1") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "ruby-terminfo" version)) + (sha256 + (base32 + "0rl4ic5pzvrpgd42z0c1s2n3j39c9znksblxxvmhkzrc0ckyg2cm")))) + (build-system ruby-build-system) + (arguments + `(#:test-target "test" + ;; Rakefile requires old packages and would need modification to + ;; work with current software. + #:tests? #f)) + (inputs + `(("ncurses" ,ncurses))) + (native-inputs + `(("ruby-rubygems-tasks" ,ruby-rubygems-tasks) + ("ruby-rdoc" ,ruby-rdoc))) + (home-page "http://www.a-k-r.org/ruby-terminfo/") + (synopsis "Terminfo binding for Ruby") + (description "Ruby-terminfo provides terminfo binding for Ruby.") + (license license:bsd-3))) + +(define-public ruby-diffy + (package + (name "ruby-diffy") + (version "3.2.1") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "diffy" version)) + (sha256 + (base32 + "119imrkn01agwhx5raxhknsi331y5i4yda7r0ws0an6905ximzjg")))) + (build-system ruby-build-system) + (arguments + ;; No tests + `(#:tests? #f)) + (native-inputs + `(("ruby-rspec" ,ruby-rspec))) + (home-page "https://github.com/samg/diffy") + (synopsis "Convenient diffing in ruby") + (description "Diffy provides a convenient way to generate a diff from two +strings or files.") + (license license:expat))) + +(define-public ruby-sass-spec + (package + (name "ruby-sass-spec") + (version "3.5.4") + (source (origin + (method url-fetch) + (uri (string-append "https://github.com/sass/sass-spec/archive/v" + version ".tar.gz")) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "0nx8lp7c9qa58w489crgqa3c489xsyarn1a8h4np9mwwfqm1h3rr")))) + (build-system ruby-build-system) + (propagated-inputs + `(("ruby-command-line-reporter-3" ,ruby-command-line-reporter-3) + ("ruby-diffy" ,ruby-diffy) + ("ruby-terminfo" ,ruby-terminfo))) + (arguments + ;; No Rakefile + `(#:tests? #f)) + (home-page "https://github.com/sass/sass-spec") + (synopsis "Test suite for Sass") + (description "Sass Spec is a test suite for Sass. Test cases are all in +the @file{spec} directory.") + (license license:expat))) + +(define-public ruby-sass + (package + (name "ruby-sass") + (version "3.5.7") + (source (origin + (method url-fetch) + (uri (rubygems-uri "sass" version)) + (sha256 + (base32 + "1sy7xsbgpcy90j5ynbq967yplffp74pvph3r8ivn2sv2b44q6i61")))) + (build-system ruby-build-system) + (propagated-inputs + `(("ruby-sass-listen" ,ruby-sass-listen))) + (native-inputs + `(("ruby-sass-spec" ,ruby-sass-spec))) + (home-page "http://sass-lang.com/") + (synopsis "CSS extension language") + (description "Sass is a CSS extension language. It extends CSS with +features that don't exist yet like variables, nesting, mixins and inheritance.") + (license license:expat))) + +(define-public ruby-jekyll-sass-converter + (package + (name "ruby-jekyll-sass-converter") + (version "1.5.2") + (source (origin + (method url-fetch) + (uri (rubygems-uri "jekyll-sass-converter" version)) + (sha256 + (base32 + "008ikh5fk0n6ri54mylcl8jn0mq8p2nfyfqif2q3pp0lwilkcxsk")))) + (build-system ruby-build-system) + (propagated-inputs + `(("ruby-sass" ,ruby-sass))) + (arguments + ;; No rakefile + `(#:tests? #f)) + (home-page "https://github.com/jekyll/jekyll-sass-converter") + (synopsis "Sass converter for Jekyll") + (description "This gem provide built-in support for the Sass converter +in Jekyll.") + (license license:expat))) + +(define-public ruby-jekyll-watch + (package + (name "ruby-jekyll-watch") + (version "2.0.0") + (source (origin + (method url-fetch) + (uri (rubygems-uri "jekyll-watch" version)) + (sha256 + (base32 + "0m7scvj3ki8bmyx5v8pzibpg6my10nycnc28lip98dskf8iakprp")))) + (build-system ruby-build-system) + (propagated-inputs + `(("ruby-listen-3.0" ,ruby-listen-3.0))) + (arguments + ;; No rakefile + `(#:tests? #f)) + (home-page "https://github.com/jekyll/jekyll-watch") + (synopsis "Jekyll auto-rebuild support") + (description "This gems add the @code{--watch} switch to the jekyll CLI +interface. It allows Jekyll to rebuild your site when a file changes.") + (license license:expat))) + +(define-public ruby-parallel + (package + (name "ruby-parallel") + (version "1.12.1") + (source (origin + (method url-fetch) + (uri (rubygems-uri "parallel" version)) + (sha256 + (base32 + "01hj8v1qnyl5ndrs33g8ld8ibk0rbcqdpkpznr04gkbxd11pqn67")))) + (build-system ruby-build-system) + (arguments `(#:tests? #f)); No rakefile + (home-page "https://github.com/grosser/parallel") + (synopsis "Parallel processing in Ruby") + (description "Parallel allows you to run any code in parallel Processes +(to use all CPUs) or Threads(to speedup blocking operations). It is best +suited for map-reduce or e.g. parallel downloads/uploads.") + (license license:expat))) + +(define-public ruby-cane + (package + (name "ruby-cane") + (version "3.0.0") + (source (origin + (method url-fetch) + (uri (rubygems-uri "cane" version)) + (sha256 + (base32 + "0yf5za3l7lhrqa3g56sah73wh33lbxy5y3cb7ij0a2bp1b4kwhih")))) + (build-system ruby-build-system) + (arguments `(#:tests? #f)); No rakefile + (home-page "https://github.com/square/cane") + (propagated-inputs + `(("ruby-parallel" ,ruby-parallel))) + (synopsis "Code quality threshold checking") + (description "Cane fails your build if code quality thresholds are not met.") + (license license:asl2.0))) + +(define-public ruby-morecane + (package + (name "ruby-morecane") + (version "0.2.0") + (source (origin + (method url-fetch) + (uri (rubygems-uri "morecane" version)) + (sha256 + (base32 + "0w70vb8z5bdhvr21h660aa43m5948pv0bd27z7ngai2iwdvqd771")))) + (build-system ruby-build-system) + (home-page "https://github.com/yob/morecane") + (arguments `(#:tests? #f)); No rakefile + (propagated-inputs + `(("ruby-parallel" ,ruby-parallel))) + (synopsis "Extra checks for cane") + (description "The cane gem provides a great framework for running quality +checks over your ruby project as part of continuous integration build. It +comes with a few checks out of the box, but also provides an API for loading +custom checks. This gem provides a set of additional checks.") + (license license:expat))) + +(define-public ruby-pdf-reader + (package + (name "ruby-pdf-reader") + (version "2.1.0") + (source (origin + (method url-fetch) + (uri (rubygems-uri "pdf-reader" version)) + (sha256 + (base32 + "1b3ig4wpcgdbqa7yw0ahwbmikkkywn2a22bfmrknl5ls7g066x45")))) + (build-system ruby-build-system) + (arguments `(#:test-target "spec")) + (native-inputs + `(("bundler" ,bundler) + ("ruby-rspec" ,ruby-rspec) + ("ruby-cane" ,ruby-cane) + ("ruby-morecane" ,ruby-morecane))) + (propagated-inputs + `(("ruby-afm" ,ruby-afm) + ("ruby-ascii85" ,ruby-ascii85) + ("ruby-hashery" ,ruby-hashery) + ("ruby-rc4" ,ruby-rc4) + ("ruby-ttfunk" ,ruby-ttfunk))) + (home-page "https://github.com/yob/pdf-reader") + (synopsis "PDF parser in Ruby") + (description "The PDF::Reader library implements a PDF parser conforming as +much as possible to the PDF specification from Adobe. It provides programmatic +access to the contents of a PDF file with a high degree of flexibility.") + (license license:gpl3+))) + +(define-public ruby-pdf-inspector + (package + (name "ruby-pdf-inspector") + (version "1.3.0") + (source (origin + (method url-fetch) + (uri (rubygems-uri "pdf-inspector" version)) + (sha256 + (base32 + "1g853az4xzgqxr5xiwhb76g4sqmjg4s79mm35mp676zjsrwpa47w")))) + (build-system ruby-build-system) + (propagated-inputs + `(("ruby-pdf-reader" ,ruby-pdf-reader))) + (arguments `(#:tests? #f)); No rakefile + (home-page "https://github.com/prawnpdf/pdf-inspector") + (synopsis "Analysis classes for inspecting PDF output") + (description "This library provides a number of PDF::Reader based tools for +use in testing PDF output. Presently, the primary purpose of this tool is to +support the tests found in Prawn, a pure Ruby PDF generation library.") + (license license:gpl3+))) + +(define-public ruby-pdf-core + (package + (name "ruby-pdf-core") + (version "0.8.1") + (source (origin + (method url-fetch) + (uri (rubygems-uri "pdf-core" version)) + (sha256 + (base32 + "15d6m99bc8bbzlkcg13qfpjjzphfg5x905pjbfygvpcxsm8gnsvg")))) + (build-system ruby-build-system) + (arguments + ; No test target + `(#:tests? #f)) + (home-page "https://github.com/prawnpdf/pdf-core") + (synopsis "Low level PDF features for Prawn") + (description "This is an experimental gem that extracts low-level PDF +functionality from Prawn.") + (license license:gpl3+))) + +(define-public ruby-yard + (package + (name "ruby-yard") + (version "0.9.16") + (source (origin + (method url-fetch) + (uri (rubygems-uri "yard" version)) + (sha256 + (base32 + "0lmmr1839qgbb3zxfa7jf5mzy17yjl1yirwlgzdhws4452gqhn67")))) + (build-system ruby-build-system) + (arguments `(#:test-target "spec")) + (home-page "https://yardoc.org/") + (synopsis "Ruby documentation tool") + (description "YARD is a documentation generation tool for the Ruby +programming language. It enables the user to generate consistent, usable +documentation that can be exported to a number of formats very easily, and +also supports extending for custom Ruby constructs such as custom class level +definitions.") + (license license:expat))) + +(define-public ruby-prawn + (package + (name "ruby-prawn") + (version "2.2.2") + (source (origin + (method url-fetch) + (uri (rubygems-uri "prawn" version)) + (sha256 + (base32 + "1qdjf1v6sfl44g3rqxlg8k4jrzkwaxgvh2l4xws97a8f3xv4na4m")))) + (build-system ruby-build-system) + (arguments + ; No tests + `(#:tests? #f + #:phases + (modify-phases %standard-phases + (add-before 'build 'fix-dependencies + (lambda _ + (substitute* "prawn.gemspec" + (("~> 0.7.0") "~> 0.7")) + #t))))) + (propagated-inputs + `(("ruby-pdf-core" ,ruby-pdf-core) + ("ruby-ttfunk" ,ruby-ttfunk))) + (native-inputs + `(("bundler" ,bundler) + ("ruby-pdf-inspector" ,ruby-pdf-inspector) + ("ruby-rspec" ,ruby-rspec) + ("ruby-simplecov" ,ruby-simplecov) + ("ruby-yard" ,ruby-yard))) + (home-page "http://prawnpdf.org/api-docs/2.0/") + (synopsis "PDF generation for Ruby") + (description "Prawn is a pure Ruby PDF generation library.") + (license license:gpl3+))) + +(define-public ruby-prawn-table + (package + (name "ruby-prawn-table") + (version "0.2.2") + (source (origin + (method url-fetch) + (uri (rubygems-uri "prawn-table" version)) + (sha256 + (base32 + "1nxd6qmxqwl850icp18wjh5k0s3amxcajdrkjyzpfgq0kvilcv9k")))) + (build-system ruby-build-system) + (arguments `(#:tests? #f)); No rakefile + (propagated-inputs + `(("ruby-prawn" ,ruby-prawn))) + (home-page "https://github.com/prawnpdf/prawn-table") + (synopsis "Tables support for Prawn") + (description "This gem provides tables support for Prawn.") + (license license:gpl3+))) + +(define-public ruby-kramdown + (package + (name "ruby-kramdown") + (version "1.17.0") + (source (origin + (method url-fetch) + (uri (rubygems-uri "kramdown" version)) + (sha256 + (base32 + "1n1c4jmrh5ig8iv1rw81s4mw4xsp4v97hvf8zkigv4hn5h542qjq")))) + (build-system ruby-build-system) + (arguments `(#:tests? #f)); FIXME: some test failures + (native-inputs + `(("ruby-prawn" ,ruby-prawn) + ("ruby-prawn-table" ,ruby-prawn-table))) + (home-page "https://kramdown.gettalong.org/") + (synopsis "Markdown parsing and converting library") + (description "Kramdown is a library for parsing and converting a superset +of Markdown. It is completely written in Ruby, supports standard Markdown +(with some minor modifications) and various extensions that have been made +popular by the PHP @code{Markdown Extra} package and @code{Maruku}.") + (license license:expat))) + +(define-public ruby-http-parser.rb + (package + (name "ruby-http-parser.rb") + (version "0.6.0") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "http_parser.rb" version)) + (sha256 + (base32 + "15nidriy0v5yqfjsgsra51wmknxci2n2grliz78sf9pga3n0l7gi")))) + (build-system ruby-build-system) + (arguments + ;; No tests + `(#:tests? #f)) + (native-inputs + `(("ruby-rake-compiler" ,ruby-rake-compiler) + ("ruby-rspec" ,ruby-rspec))) + (home-page "https://github.com/tmm1/http_parser.rb") + (synopsis "HTTP parser un Ruby") + (description "This gem is a simple callback-based HTTP request/response +parser for writing http servers, clients and proxies.") + (license license:expat))) + +(define-public ruby-em-websocket + (package + (name "ruby-em-websocket") + (version "0.5.1") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "em-websocket" version)) + (sha256 + (base32 + "1bsw8vjz0z267j40nhbmrvfz7dvacq4p0pagvyp17jif6mj6v7n3")))) + (build-system ruby-build-system) + (arguments + ;; No tests + `(#:tests? #f)) + (propagated-inputs + `(("ruby-eventmachine" ,ruby-eventmachine) + ("ruby-http-parser.rb" ,ruby-http-parser.rb))) + (native-inputs + `(("bundler" ,bundler) + ("ruby-rspec" ,ruby-rspec))) + (home-page "https://github.com/igrigorik/em-websocket") + (synopsis "EventMachine based WebSocket server") + (description "Em-websocket is an EventMachine based WebSocket server +implementation.") + (license license:expat))) + +(define-public ruby-rouge + (package + (name "ruby-rouge") + (version "3.2.1") + (source (origin + (method url-fetch) + (uri (rubygems-uri "rouge" version)) + (sha256 + (base32 + "0h79gn2wmn1wix2d27lgiaimccyj8gvizrllyym500pir408x62f")))) + (build-system ruby-build-system) + (arguments `(#:tests? #f)); No rakefile + (home-page "http://rouge.jneen.net/") + (synopsis "Code highlighter") + (description "Rouge is a code highlighter written in Ruby. It supports more +than 100 languages and outputs HTML or ANSI 256-color text. Its HTML output +is compatible with stylesheets designed for pygments.") + (license (list + ;; rouge is licensed under expat + license:expat + ;; pygments is licensed under bsd-2 + license:bsd-2)))) + +(define-public ruby-rouge-2 + (package + (inherit ruby-rouge) + (version "2.2.1") + (source (origin + (method url-fetch) + (uri (rubygems-uri "rouge" version)) + (sha256 + (base32 + "02kpahk5nkc33yxnn75649kzxaz073wvazr2zyg491nndykgnvcs")))))) + +(define-public ruby-hashie + (package + (name "ruby-hashie") + (version "3.6.0") + (source (origin + (method url-fetch) + (uri (rubygems-uri "hashie" version)) + (sha256 + (base32 + "13bdzfp25c8k51ayzxqkbzag3wj5gc1jd8h7d985nsq6pn57g5xh")))) + (build-system ruby-build-system) + (native-inputs + `(("bundler" ,bundler))) + (arguments `(#:tests? #f)); FIXME: Could not locate Gemfile or .bundle/ directory + (home-page "https://github.com/intridea/hashie") + (synopsis "Extensions to Ruby Hashes") + (description "Hashie is a collection of classes and mixins that make Ruby +hashes more powerful.") + (license license:expat))) + +(define-public ruby-heredoc-unindent + (package + (name "ruby-heredoc-unindent") + (version "1.2.0") + (source (origin + (method url-fetch) + (uri (rubygems-uri "heredoc_unindent" version)) + (sha256 + (base32 + "14ijr2fsjwhrkjkcaz81d5xnfa4vvgvcflrff83avqw9klm011yw")))) + (build-system ruby-build-system) + (native-inputs + `(("ruby-hoe" ,ruby-hoe))) + (home-page "https://github.com/adrianomitre/heredoc_unindent") + (synopsis "Heredoc indentation cleaner") + (description "This gem removes common margin from indented strings, such +as the ones produced by indented heredocs. In other words, it strips out +leading whitespace chars at the beggining of each line, but only as much as +the line with the smallest margin. + +It is acknowledged that many strings defined by heredocs are just code and +fact is that most parsers are insensitive to indentation. If, however, the +strings are to be used otherwise, be it for printing or testing, the extra +indentation will probably be an issue and hence this gem.") + (license license:expat))) + +(define-public ruby-safe-yaml + (package + (name "ruby-safe-yaml") + (version "1.0.4") + (source (origin + (method url-fetch) + (uri (rubygems-uri "safe_yaml" version)) + (sha256 + (base32 + "1hly915584hyi9q9vgd968x2nsi5yag9jyf5kq60lwzi5scr7094")))) + (build-system ruby-build-system) + (native-inputs + `(("ruby-rspec" ,ruby-rspec) + ("ruby-hashie" ,ruby-hashie) + ("ruby-heredoc-unindent" ,ruby-heredoc-unindent))) + (arguments `(#:test-target "spec" + #:tests? #f));; FIXME: one failure + (home-page "https://github.com/dtao/safe_yaml") + (synopsis "YAML parser") + (description "The SafeYAML gem provides an alternative implementation of +YAML.load suitable for accepting user input in Ruby applications.") + (license license:expat))) + +(define-public ruby-mercenary + (package + (name "ruby-mercenary") + (version "0.3.6") + (source (origin + (method url-fetch) + (uri (rubygems-uri "mercenary" version)) + (sha256 + (base32 + "10la0xw82dh5mqab8bl0dk21zld63cqxb1g16fk8cb39ylc4n21a")))) + (build-system ruby-build-system) + (arguments `(#:test-target "spec")) + (native-inputs + `(("bundler" ,bundler))) + (home-page "https://github.com/jekyll/mercenary") + (synopsis "Command-line apps library in Ruby") + (description "Mercenary is a lightweight and flexible library for writing +command-line apps in Ruby.") + (license license:expat))) + +(define-public ruby-liquid + (package + (name "ruby-liquid") + (version "4.0.0") + (source (origin + (method url-fetch) + (uri (rubygems-uri "liquid" version)) + (sha256 + (base32 + "17fa0jgwm9a935fyvzy8bysz7j5n1vf1x2wzqkdfd5k08dbw3x2y")))) + (build-system ruby-build-system) + (arguments `(#:tests? #f)); No rakefile + (home-page "https://shopify.github.io/liquid/") + (synopsis "Template language") + (description "Liquid is a template language written in Ruby. It is used +to load dynamic content on storefronts.") + (license license:expat))) + +(define-public ruby-forwardable-extended + (package + (name "ruby-forwardable-extended") + (version "2.6.0") + (source (origin + (method url-fetch) + (uri (rubygems-uri "forwardable-extended" version)) + (sha256 + (base32 + "15zcqfxfvsnprwm8agia85x64vjzr2w0xn9vxfnxzgcv8s699v0v")))) + (build-system ruby-build-system) + (arguments `(#:tests? #f)); Cyclic dependency on luna-rspec-formatters + (home-page "https://github.com/envygeeks/forwardable-extended") + (synopsis "Delegation to hashes and instance variables in Forwardable") + (description "Forwardable Extended provides more @code{Forwardable} +methods for your source as @code{Forwardable::Extended}.") + (license license:expat))) + +(define-public ruby-pathutil + (package + (name "ruby-pathutil") + (version "0.16.1") + (source (origin + (method url-fetch) + (uri (rubygems-uri "pathutil" version)) + (sha256 + (base32 + "0wc18ms1rzi44lpjychyw2a96jcmgxqdvy2949r4vvb5f4p0lgvz")))) + (build-system ruby-build-system) + (propagated-inputs + `(("ruby-forwardable-extended" ,ruby-forwardable-extended))) + (native-inputs + `(("bundler" ,bundler) + ("ruby-rspec" ,ruby-rspec))) + ;; Fails with: cannot load such file -- + ;; /tmp/guix-build-ruby-pathutil-0.16.0.drv-0/gem/benchmark/support/task + (arguments `(#:tests? #f)) + (home-page "https://github.com/envygeeks/pathutil") + (synopsis "Extended implementation of Pathname") + (description "Pathutil tries to be a faster pure Ruby implementation of +Pathname.") + (license license:expat))) + +(define-public jekyll + (package + (name "jekyll") + (version "3.8.3") + (source (origin + (method url-fetch) + (uri (rubygems-uri "jekyll" version)) + (sha256 + (base32 + "1iw90wihk9dscgmppf5v6lysg3kjmnx50mjyl4gghkdb4spw97xk")))) + (build-system ruby-build-system) + (arguments + ;; No rakefile, but a test subdirectory + `(#:tests? #f + #:phases + (modify-phases %standard-phases + (add-before 'build 'fix-i18n + (lambda _ + (substitute* ".gemspec" + (("~> 0.7") ">= 0.7")) + #t))))) + (propagated-inputs + `(("ruby-addressable" ,ruby-addressable) + ("ruby-colorator" ,ruby-colorator) + ("ruby-em-websocket" ,ruby-em-websocket) + ("ruby-i18n" ,ruby-i18n) + ("ruby-jekyll-sass-converter" ,ruby-jekyll-sass-converter) + ("ruby-jekyll-watch" ,ruby-jekyll-watch) + ("ruby-kramdown" ,ruby-kramdown) + ("ruby-liquid" ,ruby-liquid) + ("ruby-mercenary" ,ruby-mercenary) + ("ruby-pathutil" ,ruby-pathutil) + ("ruby-rouge" ,ruby-rouge-2) + ("ruby-safe-yaml" ,ruby-safe-yaml))) + (home-page "https://jekyllrb.com/") + (synopsis "Static site generator") + (description "Jekyll is a simple, blog aware, static site generator.") + (license license:expat))) + +(define-public ruby-jekyll-paginate-v2 + (package + (name "ruby-jekyll-paginate-v2") + (version "2.0.0") + (source (origin + (method url-fetch) + (uri (rubygems-uri "jekyll-paginate-v2" version)) + (sha256 + (base32 + "154bfpyml6abxww9868hhyfvxasl8qhsc5zy2q30c7dxaj0igdib")))) + (build-system ruby-build-system) + (propagated-inputs + `(("jekyll" ,jekyll))) + (home-page "https://github.com/sverrirs/jekyll-paginate-v2") + (synopsis "Pagination Generator for Jekyll 3") + (description "The Pagination Generator forms the core of the pagination +logic in Jekyll. It calculates and generates the pagination pages.") + (license license:expat))) diff --git a/gnu/packages/rust.scm b/gnu/packages/rust.scm index 0695f8c7d2..631dcfd67c 100644 --- a/gnu/packages/rust.scm +++ b/gnu/packages/rust.scm @@ -167,14 +167,120 @@ in turn be used to build the final Rust.") (snippet '(begin (delete-file-recursively "src/llvm") #t)) (patches (map search-patch patches)))) +(define* (rust-bootstrapped-package base-rust version checksum + #:key (patches '())) + "Bootstrap rust VERSION with source checksum CHECKSUM patched with PATCHES using BASE-RUST." + (package + (inherit base-rust) + (version version) + (source + (rust-source version checksum #:patches patches)) + (native-inputs + (alist-replace "cargo-bootstrap" (list base-rust "cargo") + (alist-replace "rustc-bootstrap" (list base-rust) + (package-native-inputs base-rust)))))) + +(define-public mrustc + (let ((rustc-version "1.19.0")) + (package + (name "mrustc") + (version "0.8.0") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/thepowersgang/mrustc.git") + (commit (string-append "v" version)))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "0a7v8ccyzp1sdkwni8h1698hxpfz2sxhcpx42n6l2pbm0rbjp08i")))) + (outputs '("out" "cargo")) + (build-system gnu-build-system) + (inputs + `(("llvm" ,llvm-3.9.1))) + (native-inputs + `(("bison" ,bison) + ("flex" ,flex) + ;; Required for the libstd sources. + ("rustc" + ,(rust-source "1.19.0" "0l8c14qsf42rmkqy92ahij4vf356dbyspxcips1aswpvad81y8qm")))) + (arguments + `(#:tests? #f + #:make-flags (list (string-append "LLVM_CONFIG=" + (assoc-ref %build-inputs "llvm") + "/bin/llvm-config")) + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'patch-date + (lambda _ + (substitute* "Makefile" + (("shell date") "shell date -d @1")) + #t)) + (add-after 'patch-date 'unpack-target-compiler + (lambda* (#:key inputs outputs #:allow-other-keys) + (substitute* "minicargo.mk" + ;; Don't try to build LLVM. + (("^[$][(]LLVM_CONFIG[)]:") "xxx:") + ;; Build for the correct target architecture. + (("^RUSTC_TARGET := x86_64-unknown-linux-gnu") + (string-append "RUSTC_TARGET := " + ,(or (%current-target-system) + (nix-system->gnu-triplet-for-rust))))) + (invoke "tar" "xf" (assoc-ref inputs "rustc")) + (chdir "rustc-1.19.0-src") + (invoke "patch" "-p0" "../rust_src.patch") + (chdir "..") + #t)) + (replace 'configure + (lambda* (#:key inputs #:allow-other-keys) + (setenv "CC" (string-append (assoc-ref inputs "gcc") "/bin/gcc")) + #t)) + (add-after 'build 'build-minicargo + (lambda _ + (for-each (lambda (target) + (invoke "make" "-f" "minicargo.mk" target)) + '("output/libstd.hir" "output/libpanic_unwind.hir" + "output/libproc_macro.hir" "output/libtest.hir")) + ;; Technically the above already does it - but we want to be clear. + (invoke "make" "-C" "tools/minicargo"))) + (replace 'install + (lambda* (#:key inputs outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (bin (string-append out "/bin")) + (tools-bin (string-append out "/tools/bin")) + (cargo-out (assoc-ref outputs "cargo")) + (cargo-bin (string-append cargo-out "/bin")) + (lib (string-append out "/lib")) + (lib/rust (string-append lib "/mrust")) + (gcc (assoc-ref inputs "gcc"))) + ;; These files are not reproducible. + (for-each delete-file (find-files "output" "\\.txt$")) + (mkdir-p lib) + (copy-recursively "output" lib/rust) + (mkdir-p bin) + (mkdir-p tools-bin) + (install-file "bin/mrustc" bin) + ;; minicargo uses relative paths to resolve mrustc. + (install-file "tools/bin/minicargo" tools-bin) + (install-file "tools/bin/minicargo" cargo-bin) + #t)))))) + (synopsis "Compiler for the Rust progamming language") + (description "Rust is a systems programming language that provides memory +safety and thread safety guarantees.") + (home-page "https://github.com/thepowersgang/mrustc") + ;; Dual licensed. + (license (list license:asl2.0 license:expat))))) + (define rust-1.19 (package (name "rust") (version "1.19.0") - (source (rust-source version "0l8c14qsf42rmkqy92ahij4vf356dbyspxcips1aswpvad81y8qm")) + (source (rust-source version "0l8c14qsf42rmkqy92ahij4vf356dbyspxcips1aswpvad81y8qm" + #:patches '("rust-1.19-mrustc.patch"))) (outputs '("out" "cargo")) (arguments `(#:imported-modules ,%cargo-build-system-modules ;for `generate-checksums' + #:modules ((guix build utils) (ice-9 match) (guix build gnu-build-system)) #:phases (modify-phases %standard-phases (add-after 'unpack 'set-env @@ -187,6 +293,24 @@ in turn be used to build the final Rust.") ;; guix llvm-3.9.1 package installs only shared libraries (setenv "LLVM_LINK_SHARED" "1") #t)) + (add-after 'unpack 'patch-cargo-tomls + (lambda* (#:key inputs outputs #:allow-other-keys) + (substitute* "src/librustc_errors/Cargo.toml" + (("[[]dependencies[]]") " +[dependencies] +term = \"0.4.4\" +")) + (substitute* "src/librustc/Cargo.toml" + (("[[]dependencies[]]") " +[dependencies] +getopts = { path = \"../libgetopts\" } +")) + (substitute* "src/librustdoc/Cargo.toml" + (("[[]dependencies[]]") " +[dependencies] +test = { path = \"../libtest\" } +")) + #t)) (add-after 'unpack 'patch-tests (lambda* (#:key inputs #:allow-other-keys) (let ((bash (assoc-ref inputs "bash"))) @@ -243,12 +367,97 @@ in turn be used to build the final Rust.") (generate-checksums dir ,%cargo-reference-project-file))) (find-files "src/vendor" ".cargo-checksum.json")) #t)) + ;; This phase is overridden by newer versions. (replace 'configure (const #t)) + ;; This phase is overridden by newer versions. + (replace 'build + (lambda* (#:key inputs outputs #:allow-other-keys) + (let ((rustc-bootstrap (assoc-ref inputs "rustc-bootstrap"))) + (setenv "CFG_COMPILER_HOST_TRIPLE" + ,(nix-system->gnu-triplet (%current-system))) + (setenv "CFG_RELEASE" "") + (setenv "CFG_RELEASE_CHANNEL" "stable") + (setenv "CFG_LIBDIR_RELATIVE" "lib") + (setenv "CFG_VERSION" "1.19.0-stable-mrustc") + ; bad: (setenv "CFG_PREFIX" "mrustc") ; FIXME output path. + (mkdir-p "output") + (invoke (string-append rustc-bootstrap "/tools/bin/minicargo") + "src/rustc" "--vendor-dir" "src/vendor" + "--output-dir" "output/rustc-build" + "-L" (string-append rustc-bootstrap "/lib/mrust") + "-j" "1") + (install-file "output/rustc-build/rustc" "output") ; FIXME: Remove? + (setenv "CFG_COMPILER_HOST_TRIPLE" #f) + (setenv "CFG_RELEASE" #f) + (setenv "CFG_RELEASE_CHANNEL" #f) + (setenv "CFG_VERSION" #f) + (setenv "CFG_PREFIX" #f) + (setenv "CFG_LIBDIR_RELATIVE" #f) + (invoke (string-append rustc-bootstrap "/tools/bin/minicargo") + "src/tools/cargo" "--vendor-dir" "src/vendor" + "--output-dir" "output/cargo-build" + "-L" "output/" + "-L" (string-append rustc-bootstrap "/lib/mrust") + "-j" "1") + ;; Now use the newly-built rustc to build the libraries. + ;; One day that could be replaced by: + ;; (invoke "output/cargo-build/cargo" "build" + ;; "--manifest-path" "src/bootstrap/Cargo.toml" + ;; "--verbose") ; "--locked" "--frozen" + ;; but right now, Cargo has problems with libstd's circular + ;; dependencies. + (mkdir-p "output/target-libs") + (for-each ((@ (ice-9 match) match-lambda) + ((name . flags) + (write name) + (newline) + (apply invoke + "output/rustc-build/rustc" + "-C" (string-append "linker=" + (getenv "CC")) + "-L" "output/target-libs" + (string-append "src/" name "/lib.rs") + "-o" + (string-append "output/target-libs/" + (car (string-split name #\/)) + ".rlib") + flags))) + '(("libcore") + ("libstd_unicode") + ("liballoc") + ("libcollections") + ("librand") + ("liblibc/src" "--cfg" "stdbuild") + ("libunwind" "-l" "gcc_s") + ("libcompiler_builtins") + ("liballoc_system") + ("libpanic_unwind") + ;; Uses "cc" to link. + ("libstd" "-l" "dl" "-l" "rt" "-l" "pthread") + ("libarena"))) + #t))) + ;; This phase is overridden by newer versions. (replace 'check (const #t)) + ;; This phase is overridden by newer versions. (replace 'install - (const #t))))) + (lambda* (#:key inputs outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (target-system ,(or (%current-target-system) + (nix-system->gnu-triplet + (%current-system)))) + (out-libs (string-append out "/lib/rustlib/" + target-system "/lib"))) + ;(setenv "CFG_PREFIX" out) + (mkdir-p out-libs) + (copy-recursively "output/target-libs" out-libs) + (install-file "output/rustc-build/rustc" + (string-append out "/bin")) + (install-file "output/cargo-build/cargo" + (string-append (assoc-ref outputs "cargo") + "/bin"))) + #t))))) (build-system gnu-build-system) (native-inputs `(("bison" ,bison) ; For the tests @@ -258,8 +467,8 @@ in turn be used to build the final Rust.") ("git" ,git) ("procps" ,procps) ; For the tests ("python-2" ,python-2) - ("rustc-bootstrap" ,rust-bootstrap) - ("cargo-bootstrap" ,rust-bootstrap "cargo") + ("rustc-bootstrap" ,mrustc) + ("cargo-bootstrap" ,mrustc "cargo") ("pkg-config" ,pkg-config) ; For "cargo" ("which" ,which))) (inputs @@ -289,110 +498,6 @@ safety and thread safety guarantees.") ;; Dual licensed. (license (list license:asl2.0 license:expat)))) -(define* (rust-bootstrapped-package base-rust version checksum - #:key (patches '())) - "Bootstrap rust VERSION with source checksum CHECKSUM patched with PATCHES using BASE-RUST." - (package - (inherit base-rust) - (version version) - (source - (rust-source version checksum #:patches patches)) - (native-inputs - (alist-replace "cargo-bootstrap" (list base-rust "cargo") - (alist-replace "rustc-bootstrap" (list base-rust) - (package-native-inputs base-rust)))))) - -(define-public mrustc - (let ((rustc-version "1.19.0")) - (package - (name "mrustc") - (version "0.8.0") - (source (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/thepowersgang/mrustc.git") - (commit (string-append "v" version)))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "0a7v8ccyzp1sdkwni8h1698hxpfz2sxhcpx42n6l2pbm0rbjp08i")))) - (outputs '("out" "cargo")) - (build-system gnu-build-system) - (inputs - `(("llvm" ,llvm-3.9.1))) - (native-inputs - `(("bison" ,bison) - ("flex" ,flex) - ;; Required for the libstd sources. - ("rustc" - ,(rust-source "1.19.0" "0l8c14qsf42rmkqy92ahij4vf356dbyspxcips1aswpvad81y8qm")))) - (arguments - `(#:tests? #f - #:make-flags (list (string-append "LLVM_CONFIG=" - (assoc-ref %build-inputs "llvm") - "/bin/llvm-config")) - #:phases - (modify-phases %standard-phases - (add-after 'unpack 'patch-date - (lambda _ - (substitute* "Makefile" - (("shell date") "shell date -d @1")) - #t)) - (add-after 'patch-date 'unpack-target-compiler - (lambda* (#:key inputs outputs #:allow-other-keys) - (substitute* "minicargo.mk" - ;; Don't try to build LLVM. - (("^[$][(]LLVM_CONFIG[)]:") "xxx:") - ;; Build for the correct target architecture. - (("^RUSTC_TARGET := x86_64-unknown-linux-gnu") - (string-append "RUSTC_TARGET := " - ,(or (%current-target-system) - (nix-system->gnu-triplet-for-rust))))) - (invoke "tar" "xf" (assoc-ref inputs "rustc")) - (chdir "rustc-1.19.0-src") - (invoke "patch" "-p0" "../rust_src.patch") - (chdir "..") - #t)) - (replace 'configure - (lambda* (#:key inputs #:allow-other-keys) - (setenv "CC" (string-append (assoc-ref inputs "gcc") "/bin/gcc")) - #t)) - (add-after 'build 'build-minicargo - (lambda _ - (for-each (lambda (target) - (invoke "make" "-f" "minicargo.mk" target)) - '("output/libstd.hir" "output/libpanic_unwind.hir" - "output/libproc_macro.hir" "output/libtest.hir")) - ;; Technically the above already does it - but we want to be clear. - (invoke "make" "-C" "tools/minicargo"))) - (replace 'install - (lambda* (#:key inputs outputs #:allow-other-keys) - (let* ((out (assoc-ref outputs "out")) - (bin (string-append out "/bin")) - (tools-bin (string-append out "/tools/bin")) - (cargo-out (assoc-ref outputs "cargo")) - (cargo-bin (string-append cargo-out "/bin")) - (lib (string-append out "/lib")) - (lib/rust (string-append lib "/mrust")) - (gcc (assoc-ref inputs "gcc"))) - ;; These files are not reproducible. - (for-each delete-file (find-files "output" "\\.txt$")) - (mkdir-p lib) - (copy-recursively "output" lib/rust) - (mkdir-p bin) - (mkdir-p tools-bin) - (install-file "bin/mrustc" bin) - ;; minicargo uses relative paths to resolve mrustc. - (install-file "tools/bin/minicargo" tools-bin) - (install-file "tools/bin/minicargo" cargo-bin) - #t)))))) - (synopsis "Compiler for the Rust progamming language") - (description "Rust is a systems programming language that provides memory -safety and thread safety guarantees.") - (home-page "https://github.com/thepowersgang/mrustc") - ;; Dual licensed. - (license (list license:asl2.0 license:expat))))) - (define-public rust-1.23 (package (inherit rust-1.19) @@ -400,6 +505,18 @@ safety and thread safety guarantees.") (version "1.23.0") (source (rust-source version "14fb8vhjzsxlbi6yrn1r6fl5dlbdd1m92dn5zj5gmzfwf4w9ar3l")) (outputs '("out" "doc" "cargo")) + (native-inputs + `(("bison" ,bison) ; For the tests + ("cmake" ,cmake) + ("flex" ,flex) ; For the tests + ("gdb" ,gdb) ; For the tests + ("git" ,git) + ("procps" ,procps) ; For the tests + ("python-2" ,python-2) + ("rustc-bootstrap" ,rust-bootstrap) + ("cargo-bootstrap" ,rust-bootstrap "cargo") + ("pkg-config" ,pkg-config) ; For "cargo" + ("which" ,which))) (arguments (substitute-keyword-arguments (package-arguments rust-1.19) ((#:phases phases) @@ -410,6 +527,8 @@ safety and thread safety guarantees.") (substitute* "src/binaryen/CMakeLists.txt" (("ADD_COMPILE_FLAG\\(\\\"-march=native\\\"\\)") "")) #t)) + ;; TODO: Revisit this and find out whether that's needed after all. + (delete 'patch-cargo-tomls) (add-after 'patch-tests 'patch-cargo-tests (lambda _ (substitute* "src/tools/cargo/tests/build.rs" diff --git a/gnu/packages/wine.scm b/gnu/packages/wine.scm index 9c1257b2a1..b818a3ccb5 100644 --- a/gnu/packages/wine.scm +++ b/gnu/packages/wine.scm @@ -225,7 +225,7 @@ integrate Windows applications into your desktop.") (define-public wine-staging-patchset-data (package (name "wine-staging-patchset-data") - (version "3.14") + (version "3.15") (source (origin (method git-fetch) @@ -235,7 +235,7 @@ integrate Windows applications into your desktop.") (file-name (git-file-name name version)) (sha256 (base32 - "0h6gck0p92hin0m13q1hnlfnqs4vy474w66ppinvqms2zn3vibgi")))) + "1rgbx4qnxaarkq5n8nvj57q0rhxcqbwm5897ws962fgxh6zymg9n")))) (build-system trivial-build-system) (native-inputs `(("bash" ,bash) @@ -281,7 +281,7 @@ integrate Windows applications into your desktop.") (file-name (string-append name "-" version ".tar.xz")) (sha256 (base32 - "01dhn3a6k3dwnrbz4bxvszhh5sxwy6s89y459g805hjmq8s6d2a7")))) + "07mmd8r70ciqrxzdg2m2mg34kcnb43dk9nw1ljm8jbcznsawv8ic")))) (inputs `(("autoconf" ,autoconf) ; for autoreconf ("gtk+" ,gtk+) ("libva" ,libva) |