Merge branch 'master' into core-updates
This commit is contained in:
commit
64de896a71
2
HACKING
2
HACKING
|
@ -42,7 +42,7 @@ make sure to run ‘git pull --rebase’.
|
|||
All commits that are pushed to the central repository on Savannah must be
|
||||
signed with an OpenPGP key, and the public key should be uploaded to your user
|
||||
account on Savannah and to public key servers, such as
|
||||
‘pool.sks-keyservers.net’. To configure Git to automatically sign commits,
|
||||
‘keys.openpgp.org’. To configure Git to automatically sign commits,
|
||||
run:
|
||||
|
||||
git config commit.gpgsign true
|
||||
|
|
14
Makefile.am
14
Makefile.am
|
@ -98,6 +98,7 @@ MODULES = \
|
|||
guix/self.scm \
|
||||
guix/upstream.scm \
|
||||
guix/licenses.scm \
|
||||
guix/lint.scm \
|
||||
guix/glob.scm \
|
||||
guix/git.scm \
|
||||
guix/graph.scm \
|
||||
|
@ -125,6 +126,7 @@ MODULES = \
|
|||
guix/build-system/guile.scm \
|
||||
guix/build-system/haskell.scm \
|
||||
guix/build-system/linux-module.scm \
|
||||
guix/build-system/node.scm \
|
||||
guix/build-system/perl.scm \
|
||||
guix/build-system/python.scm \
|
||||
guix/build-system/ocaml.scm \
|
||||
|
@ -170,6 +172,7 @@ MODULES = \
|
|||
guix/build/gnu-build-system.scm \
|
||||
guix/build/gnu-dist.scm \
|
||||
guix/build/guile-build-system.scm \
|
||||
guix/build/node-build-system.scm \
|
||||
guix/build/perl-build-system.scm \
|
||||
guix/build/python-build-system.scm \
|
||||
guix/build/ocaml-build-system.scm \
|
||||
|
@ -182,6 +185,7 @@ MODULES = \
|
|||
guix/build/haskell-build-system.scm \
|
||||
guix/build/linux-module-build-system.scm \
|
||||
guix/build/store-copy.scm \
|
||||
guix/build/json.scm \
|
||||
guix/build/utils.scm \
|
||||
guix/build/union.scm \
|
||||
guix/build/profiles.scm \
|
||||
|
@ -303,11 +307,11 @@ dist_noinst_DATA = guix/tests.scm guix/tests/http.scm
|
|||
AUX_FILES = \
|
||||
gnu/packages/aux-files/chromium/master-preferences.json \
|
||||
gnu/packages/aux-files/emacs/guix-emacs.el \
|
||||
gnu/packages/aux-files/linux-libre/5.1-arm.conf \
|
||||
gnu/packages/aux-files/linux-libre/5.1-arm-veyron.conf \
|
||||
gnu/packages/aux-files/linux-libre/5.1-arm64.conf \
|
||||
gnu/packages/aux-files/linux-libre/5.1-i686.conf \
|
||||
gnu/packages/aux-files/linux-libre/5.1-x86_64.conf \
|
||||
gnu/packages/aux-files/linux-libre/5.2-arm.conf \
|
||||
gnu/packages/aux-files/linux-libre/5.2-arm-veyron.conf \
|
||||
gnu/packages/aux-files/linux-libre/5.2-arm64.conf \
|
||||
gnu/packages/aux-files/linux-libre/5.2-i686.conf \
|
||||
gnu/packages/aux-files/linux-libre/5.2-x86_64.conf \
|
||||
gnu/packages/aux-files/linux-libre/4.19-arm.conf \
|
||||
gnu/packages/aux-files/linux-libre/4.19-arm64.conf \
|
||||
gnu/packages/aux-files/linux-libre/4.19-i686.conf \
|
||||
|
|
|
@ -75,7 +75,7 @@
|
|||
(package-name "GNU Guix")
|
||||
(package-version "0")
|
||||
(bug-report-address "bug-guix@gnu.org")
|
||||
(home-page-url "https://gnu.org/s/guix"))
|
||||
(home-page-url "https://guix.gnu.org"))
|
||||
|
||||
;; Hack so that Geiser is not confused.
|
||||
(define defmod 'define-module)
|
||||
|
|
103
doc/build.scm
103
doc/build.scm
|
@ -34,6 +34,7 @@
|
|||
(gnu packages gawk)
|
||||
(gnu packages gettext)
|
||||
(gnu packages guile)
|
||||
(gnu packages iso-codes)
|
||||
(gnu packages texinfo)
|
||||
(gnu packages tex)
|
||||
(srfi srfi-19)
|
||||
|
@ -176,6 +177,9 @@ makeinfo OPTIONS."
|
|||
#:languages languages
|
||||
#:date date))
|
||||
|
||||
(define images
|
||||
(texinfo-manual-images source))
|
||||
|
||||
(define build
|
||||
(with-imported-modules '((guix build utils))
|
||||
#~(begin
|
||||
|
@ -183,7 +187,7 @@ makeinfo OPTIONS."
|
|||
(ice-9 match))
|
||||
|
||||
(define (normalize language)
|
||||
;; Normalize LANGUAGE. For instance, "zh_CN" become "zh-cn".
|
||||
;; Normalize LANGUAGE. For instance, "zh_CN" becomes "zh-cn".
|
||||
(string-map (match-lambda
|
||||
(#\_ #\-)
|
||||
(chr chr))
|
||||
|
@ -227,7 +231,15 @@ makeinfo OPTIONS."
|
|||
""
|
||||
(string-append "." language))
|
||||
".html")
|
||||
opts)))
|
||||
opts)
|
||||
|
||||
;; Make sure images are available.
|
||||
(symlink #$images
|
||||
(string-append #$output "/" (normalize language)
|
||||
"/images"))
|
||||
(symlink #$images
|
||||
(string-append #$output "/" (normalize language)
|
||||
"/html_node/images"))))
|
||||
'#$languages))))
|
||||
|
||||
(computed-file (string-append manual "-html-manual") build))
|
||||
|
@ -365,16 +377,19 @@ from SOURCE."
|
|||
(manual "guix")
|
||||
(date 1))
|
||||
(define build
|
||||
(with-extensions (list guile-json-3)
|
||||
(with-imported-modules '((guix build utils))
|
||||
#~(begin
|
||||
(use-modules (guix build utils)
|
||||
(json)
|
||||
(ice-9 match)
|
||||
(ice-9 popen)
|
||||
(sxml simple)
|
||||
(srfi srfi-1)
|
||||
(srfi srfi-19))
|
||||
|
||||
(define (normalize language) ;XXX: deduplicate
|
||||
;; Normalize LANGUAGE. For instance, "zh_CN" become "zh-cn".
|
||||
;; Normalize LANGUAGE. For instance, "zh_CN" becomes "zh-cn".
|
||||
(string-map (match-lambda
|
||||
(#\_ #\-)
|
||||
(chr chr))
|
||||
|
@ -402,7 +417,10 @@ from SOURCE."
|
|||
#+(guix-manual-text-domain
|
||||
source
|
||||
languages))
|
||||
(write (gettext ,str "guix-manual"))))
|
||||
(bindtextdomain "iso_639-3" ;language names
|
||||
#+(file-append iso-codes
|
||||
"/share/locale"))
|
||||
(write (gettext ,str ,domain))))
|
||||
|
||||
(with-language language
|
||||
;; Since the 'gettext' function caches msgid translations,
|
||||
|
@ -424,10 +442,7 @@ from SOURCE."
|
|||
(define (guix-url path)
|
||||
(string-append #$%web-site-url path))
|
||||
|
||||
(define (sxml-index language)
|
||||
(define title
|
||||
(translate "GNU Guix Reference Manual" language))
|
||||
|
||||
(define (sxml-index language title body)
|
||||
;; FIXME: Avoid duplicating styling info from guix-artwork.git.
|
||||
`(html (@ (lang ,language))
|
||||
(head
|
||||
|
@ -458,7 +473,16 @@ from SOURCE."
|
|||
(a (@ (class "crumb")
|
||||
(href #$%web-site-url))
|
||||
"Home"))
|
||||
(main
|
||||
,body
|
||||
(footer))))
|
||||
|
||||
(define (language-index language)
|
||||
(define title
|
||||
(translate "GNU Guix Reference Manual" language))
|
||||
|
||||
(sxml-index
|
||||
language title
|
||||
`(main
|
||||
(article
|
||||
(@ (class "page centered-block limit-width"))
|
||||
(h2 ,title)
|
||||
|
@ -489,33 +513,72 @@ from SOURCE."
|
|||
(string-append "."
|
||||
language))
|
||||
".pdf"))))
|
||||
"PDF")))))))
|
||||
(footer))))
|
||||
"PDF")))))))))
|
||||
|
||||
(define (write-index language file)
|
||||
(define %iso639-languages
|
||||
(vector->list
|
||||
(assoc-ref (call-with-input-file
|
||||
#+(file-append iso-codes
|
||||
"/share/iso-codes/json/iso_639-3.json")
|
||||
json->scm)
|
||||
"639-3")))
|
||||
|
||||
(define (language-code->name code)
|
||||
"Return the full name of a language from its ISO-639-3 code."
|
||||
(let ((code (match (string-index code #\_)
|
||||
(#f code)
|
||||
(index (string-take code index)))))
|
||||
(any (lambda (language)
|
||||
(and (string=? (or (assoc-ref language "alpha_2")
|
||||
(assoc-ref language "alpha_3"))
|
||||
code)
|
||||
(assoc-ref language "name")))
|
||||
%iso639-languages)))
|
||||
|
||||
(define (top-level-index languages)
|
||||
(define title
|
||||
"GNU Guix Reference Manual")
|
||||
(sxml-index
|
||||
"en" title
|
||||
`(main
|
||||
(article
|
||||
(@ (class "page centered-block limit-width"))
|
||||
(h2 ,title)
|
||||
(div
|
||||
"The GNU Guix Reference Manual is available in the following
|
||||
languages:\n"
|
||||
(ul
|
||||
,@(map (lambda (language)
|
||||
`(li (a (@ (href ,(normalize language)))
|
||||
,(translate
|
||||
(language-code->name language)
|
||||
language
|
||||
#:domain "iso_639-3"))))
|
||||
languages)))))))
|
||||
|
||||
(define (write-html file sxml)
|
||||
(call-with-output-file file
|
||||
(lambda (port)
|
||||
(display "<!DOCTYPE html>\n" port)
|
||||
(sxml->xml (sxml-index language) port))))
|
||||
(sxml->xml sxml port))))
|
||||
|
||||
(setenv "GUIX_LOCPATH"
|
||||
#+(file-append glibc-utf8-locales "/lib/locale"))
|
||||
(setenv "LC_ALL" "en_US.utf8")
|
||||
(setlocale LC_ALL "en_US.utf8")
|
||||
|
||||
(bindtextdomain "guix-manual"
|
||||
#+(guix-manual-text-domain source languages))
|
||||
|
||||
(for-each (lambda (language)
|
||||
(define directory
|
||||
(string-append #$output "/"
|
||||
(normalize language)))
|
||||
|
||||
(mkdir-p directory)
|
||||
(write-index language
|
||||
(string-append directory
|
||||
"/index.html")))
|
||||
'#$languages))))
|
||||
(write-html (string-append directory "/index.html")
|
||||
(language-index language)))
|
||||
'#$languages)
|
||||
|
||||
(write-html (string-append #$output "/index.html")
|
||||
(top-level-index '#$languages))))))
|
||||
|
||||
(computed-file "html-indexes" build))
|
||||
|
||||
|
|
|
@ -38,19 +38,6 @@ version from the Git repository:
|
|||
git clone https://git.savannah.gnu.org/git/guix.git
|
||||
@end example
|
||||
|
||||
When building Guix from a checkout,
|
||||
the following packages are required in addition to those mentioned in
|
||||
the installation instructions (@pxref{Requirements}).
|
||||
|
||||
@itemize
|
||||
@item @url{http://gnu.org/software/autoconf/, GNU Autoconf};
|
||||
@item @url{http://gnu.org/software/automake/, GNU Automake};
|
||||
@item @url{http://gnu.org/software/gettext/, GNU Gettext};
|
||||
@item @url{http://gnu.org/software/texinfo/, GNU Texinfo};
|
||||
@item @url{http://www.graphviz.org/, Graphviz};
|
||||
@item @url{http://www.gnu.org/software/help2man/, GNU Help2man (optional)}.
|
||||
@end itemize
|
||||
|
||||
The easiest way to set up a development environment for Guix is, of
|
||||
course, by using Guix! The following command starts a new shell where
|
||||
all the dependencies and appropriate environment variables are set up to
|
||||
|
@ -61,7 +48,22 @@ guix environment guix --pure
|
|||
@end example
|
||||
|
||||
@xref{Invoking guix environment}, for more information on that command.
|
||||
Extra dependencies can be added with @option{--ad-hoc}:
|
||||
|
||||
If you are unable to use Guix when building Guix from a checkout, the
|
||||
following are the required packages in addition to those mentioned in the
|
||||
installation instructions (@pxref{Requirements}).
|
||||
|
||||
@itemize
|
||||
@item @url{http://gnu.org/software/autoconf/, GNU Autoconf};
|
||||
@item @url{http://gnu.org/software/automake/, GNU Automake};
|
||||
@item @url{http://gnu.org/software/gettext/, GNU Gettext};
|
||||
@item @url{http://gnu.org/software/texinfo/, GNU Texinfo};
|
||||
@item @url{http://www.graphviz.org/, Graphviz};
|
||||
@item @url{http://www.gnu.org/software/help2man/, GNU Help2man (optional)}.
|
||||
@end itemize
|
||||
|
||||
On Guix, extra dependencies can be added by instead running @command{guix
|
||||
environment} with @option{--ad-hoc}:
|
||||
|
||||
@example
|
||||
guix environment guix --pure --ad-hoc help2man git strace
|
||||
|
@ -113,8 +115,8 @@ run @code{make install}. To do that, you first need to have an environment
|
|||
with all the dependencies available (@pxref{Building from Git}), and then
|
||||
simply prefix each command with
|
||||
@command{./pre-inst-env} (the @file{pre-inst-env} script lives in the
|
||||
top build tree of Guix; it is generated by @command{./configure}),
|
||||
as in@footnote{The @option{-E} flag to
|
||||
top build tree of Guix; it is generated by @command{./configure}).
|
||||
An example@footnote{The @option{-E} flag to
|
||||
@command{sudo} guarantees that @code{GUILE_LOAD_PATH} is correctly set
|
||||
such that @command{guix-daemon} and the tools it uses can find the Guile
|
||||
modules they need.}:
|
||||
|
@ -125,7 +127,7 @@ $ ./pre-inst-env guix build hello
|
|||
@end example
|
||||
|
||||
@noindent
|
||||
Similarly, for a Guile session using the Guix modules:
|
||||
Similarly, an example for a Guile session using the Guix modules:
|
||||
|
||||
@example
|
||||
$ ./pre-inst-env guile -c '(use-modules (guix utils)) (pk (%current-system))'
|
||||
|
@ -982,5 +984,6 @@ first send one message to @email{guix-patches@@gnu.org}, and then send
|
|||
subsequent patches to @email{@var{NNN}@@debbugs.gnu.org} to make sure
|
||||
they are kept together. See
|
||||
@uref{https://debbugs.gnu.org/Advanced.html, the Debbugs documentation}
|
||||
for more information.
|
||||
for more information. You can install @command{git send-email} with
|
||||
@command{guix install git:send-email}.
|
||||
@c Debbugs bug: https://debbugs.gnu.org/db/15/15361.html
|
||||
|
|
|
@ -11,7 +11,7 @@
|
|||
|
||||
@c Identifier of the OpenPGP key used to sign tarballs and such.
|
||||
@set OPENPGP-SIGNING-KEY-ID 3CE464558A84FDC69DB40CFB090B11993D9AEBB5
|
||||
@set KEY-SERVER pool.sks-keyservers.net
|
||||
@set OPENPGP-SIGNING-KEY-URL https://sv.gnu.org/people/viewgpg.php?user_id=15145
|
||||
|
||||
@c Base URL for downloads.
|
||||
@set BASE-URL https://ftp.gnu.org/gnu/guix
|
||||
|
@ -558,8 +558,8 @@ If that command fails because you do not have the required public key,
|
|||
then run this command to import it:
|
||||
|
||||
@example
|
||||
$ gpg --keyserver @value{KEY-SERVER} \
|
||||
--recv-keys @value{OPENPGP-SIGNING-KEY-ID}
|
||||
$ wget @value{OPENPGP-SIGNING-KEY-URL} \
|
||||
-qO - | gpg --import -
|
||||
@end example
|
||||
|
||||
@noindent
|
||||
|
@ -1905,8 +1905,8 @@ If that command fails because you do not have the required public key,
|
|||
then run this command to import it:
|
||||
|
||||
@example
|
||||
$ gpg --keyserver @value{KEY-SERVER} \
|
||||
--recv-keys @value{OPENPGP-SIGNING-KEY-ID}
|
||||
$ wget @value{OPENPGP-SIGNING-KEY-URL} \
|
||||
-qO - | gpg --import -
|
||||
@end example
|
||||
|
||||
@noindent
|
||||
|
@ -3921,6 +3921,19 @@ For the sake of reliability and maintainability, you should avoid dependencies
|
|||
on channels that you don't control, and you should aim to keep the number of
|
||||
dependencies to a minimum.
|
||||
|
||||
@cindex subdirectory, channels
|
||||
@subsection Package Modules in a Sub-directory
|
||||
|
||||
As a channel author, you may want to keep your channel modules in a
|
||||
sub-directory. If your modules are in the sub-directory @file{guix}, you must
|
||||
add a meta-data file @file{.guix-channel} that contains:
|
||||
|
||||
@lisp
|
||||
(channel
|
||||
(version 0)
|
||||
(directory "guix"))
|
||||
@end lisp
|
||||
|
||||
@subsection Replicating Guix
|
||||
|
||||
@cindex pinning, channels
|
||||
|
@ -6333,6 +6346,17 @@ the module (in the "arguments" form of a package using the
|
|||
linux-module-build-system, use the key #:linux to specify it).
|
||||
@end defvr
|
||||
|
||||
@defvr {Scheme Variable} node-build-system
|
||||
This variable is exported by @code{(guix build-system node)}. It
|
||||
implements the build procedure used by @uref{http://nodejs.org,
|
||||
Node.js}, which implements an approximation of the @code{npm install}
|
||||
command, followed by an @code{npm test} command.
|
||||
|
||||
Which Node.js package is used to interpret the @code{npm} commands can
|
||||
be specified with the @code{#:node} parameter which defaults to
|
||||
@code{node}.
|
||||
@end defvr
|
||||
|
||||
Lastly, for packages that do not need anything as sophisticated, a
|
||||
``trivial'' build system is provided. It is trivial in the sense that
|
||||
it provides basically no support: it does not pull any implicit inputs,
|
||||
|
@ -25547,7 +25571,7 @@ vm-image} on x86_64 hardware:
|
|||
@example
|
||||
$ qemu-system-x86_64 \
|
||||
-net user -net nic,model=virtio \
|
||||
-enable-kvm -m 512 \
|
||||
-enable-kvm -m 1024 \
|
||||
-device virtio-blk,drive=myhd \
|
||||
-drive if=none,file=/tmp/qemu-image,id=myhd
|
||||
@end example
|
||||
|
|
|
@ -1116,6 +1116,7 @@ dist_patch_DATA = \
|
|||
%D%/packages/patches/netsurf-longer-test-timeout.patch \
|
||||
%D%/packages/patches/nfs-utils-missing-headers.patch \
|
||||
%D%/packages/patches/ngircd-handle-zombies.patch \
|
||||
%D%/packages/patches/nm-plugin-path.patch \
|
||||
%D%/packages/patches/nss-increase-test-timeout.patch \
|
||||
%D%/packages/patches/nss-pkgconfig.patch \
|
||||
%D%/packages/patches/ntfs-3g-CVE-2019-9755.patch \
|
||||
|
|
|
@ -1453,6 +1453,28 @@ tables. This package contains only the user-space tools needed for ACPI table
|
|||
development, not the kernel implementation of ACPI.")
|
||||
(license license:gpl2))) ; dual GPLv2/ACPICA Licence
|
||||
|
||||
(define-public s-tui
|
||||
(package
|
||||
(name "s-tui")
|
||||
(version "0.8.3")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (pypi-uri "s-tui" version))
|
||||
(sha256
|
||||
(base32
|
||||
"00lsh2v4i8rwfyjyxx5lijd6rnk9smcfffhzg5sv94ijpcnh216m"))))
|
||||
(build-system python-build-system)
|
||||
(inputs
|
||||
`(("python-psutil" ,python-psutil)
|
||||
("python-urwid" ,python-urwid)))
|
||||
(home-page "https://github.com/amanusk/s-tui")
|
||||
(synopsis "Interactive terminal stress test and monitoring tool")
|
||||
(description
|
||||
"The Stress Terminal UI displays graphs of the CPU frequency,
|
||||
utilization, temperature and power.")
|
||||
(license license:gpl2+)))
|
||||
|
||||
(define-public stress
|
||||
(package
|
||||
(name "stress")
|
||||
|
@ -1570,14 +1592,14 @@ environment variable is set and output is to tty.")
|
|||
(define-public direvent
|
||||
(package
|
||||
(name "direvent")
|
||||
(version "5.1")
|
||||
(version "5.2")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "mirror://gnu/direvent/direvent-"
|
||||
version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"1nwvjmx7kb14ni34c0b8x9a3791pc20gvhj7xaj66d8q4h6n0qf4"))
|
||||
"0m9vi01b1km0cpknflyzsjnknbava0s1n6393b2bpjwyvb6j5613"))
|
||||
(modules '((guix build utils)))
|
||||
(snippet '(begin
|
||||
(substitute* "tests/testsuite"
|
||||
|
|
|
@ -224,7 +224,7 @@ the real span of the lattice.")
|
|||
(define-public pari-gp
|
||||
(package
|
||||
(name "pari-gp")
|
||||
(version "2.11.1")
|
||||
(version "2.11.2")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append
|
||||
|
@ -232,7 +232,7 @@ the real span of the lattice.")
|
|||
version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"1jfax92jpydjd02fwl30r6b8kfzqqd6sm4yx94gidyz9lqjb7a94"))))
|
||||
"0fck8ssmirl8fy7s4mspgrxjs5sag76xbshqlqzkcl3kqyrk4raa"))))
|
||||
(build-system gnu-build-system)
|
||||
(native-inputs
|
||||
`(("texlive" ,(texlive-union
|
||||
|
@ -267,7 +267,7 @@ PARI is also available as a C library to allow for faster computations.")
|
|||
(define-public gp2c
|
||||
(package
|
||||
(name "gp2c")
|
||||
(version "0.0.11pl1")
|
||||
(version "0.0.11pl2")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append
|
||||
|
@ -275,7 +275,7 @@ PARI is also available as a C library to allow for faster computations.")
|
|||
version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"1c6f6vmncw032kfzrfyr8bynw6yd3faxpy2285r009fmr0zxfs5s"))))
|
||||
"0wqsf05wgkqvmmsx7jinvzdqav6rl56sr8haibgs31nzz4x9xz9g"))))
|
||||
(build-system gnu-build-system)
|
||||
(native-inputs `(("perl" ,perl)))
|
||||
(inputs `(("pari-gp" ,pari-gp)))
|
||||
|
@ -1022,7 +1022,7 @@ xtensor provides:
|
|||
(define-public gap
|
||||
(package
|
||||
(name "gap")
|
||||
(version "4.10.1")
|
||||
(version "4.10.2")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
|
@ -1032,8 +1032,7 @@ xtensor provides:
|
|||
version
|
||||
".tar.bz2"))
|
||||
(sha256
|
||||
(base32
|
||||
"136s0zvhcw41fshj5zgsrjcy2kd58cdh2m3ddp5rdizi4rx54f10"))
|
||||
(base32 "0cp6ddk0469zzv1m1vair6gm27ic6c5m77ri8rn0znq3gaps6x94"))
|
||||
(modules '((guix build utils) (ice-9 ftw) (srfi srfi-1)))
|
||||
(snippet
|
||||
'(begin
|
||||
|
|
|
@ -81,20 +81,25 @@ in FITS files.")
|
|||
(define-public wcslib
|
||||
(package
|
||||
(name "wcslib")
|
||||
(version "5.20")
|
||||
(version "6.2")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (string-append
|
||||
"ftp://ftp.atnf.csiro.au/pub/software/wcslib/" name "-" version
|
||||
"ftp://ftp.atnf.csiro.au/pub/software/wcslib/wcslib" version
|
||||
".tar.bz2"))
|
||||
(sha256
|
||||
(base32 "1c8g9kv4dxrnawnqi4spi2p10s2xs7x75pdfxhbqxgcc97dkgh0b"))))
|
||||
(base32 "01fqckazhbfqqhyr0wd9vcks1m2afmsh83l981alxg2r54jgwkdv"))))
|
||||
(inputs
|
||||
`(("cfitsio" ,cfitsio)))
|
||||
(build-system gnu-build-system)
|
||||
(arguments
|
||||
`(#:phases
|
||||
`(#:configure-flags
|
||||
(list (string-append "--with-cfitsiolib="
|
||||
(assoc-ref %build-inputs "cfitsio") "/lib")
|
||||
(string-append "--with-cfitsioinc="
|
||||
(assoc-ref %build-inputs "cfitsio") "/include"))
|
||||
#:phases
|
||||
(modify-phases %standard-phases
|
||||
(add-before 'configure 'patch-/bin/sh
|
||||
(lambda _
|
||||
|
|
|
@ -21,6 +21,7 @@
|
|||
;;; Copyright © 2019 Pierre Langlois <pierre.langlois@gmx.com>
|
||||
;;; Copyright © 2019 Leo Famulari <leo@famulari.name>
|
||||
;;; Copyright © 2019 Rutger Helling <rhelling@mykolab.com>
|
||||
;;; Copyright © 2019 Arun Isaac <arunisaac@systemreboot.net>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
|
@ -2104,14 +2105,14 @@ different audio devices such as ALSA or PulseAudio.")
|
|||
(define-public qjackctl
|
||||
(package
|
||||
(name "qjackctl")
|
||||
(version "0.5.8")
|
||||
(version "0.5.9")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "mirror://sourceforge/qjackctl/qjackctl/"
|
||||
version "/qjackctl-" version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"1r5hf3hcr20n93jrrm7xk2zf6yx264pcr4d10cpybhrancxh602n"))))
|
||||
"1saywsda9m124rmjp7i3n0llryaliabjxhqhvqr6dm983qy7pypk"))))
|
||||
(build-system gnu-build-system)
|
||||
(arguments
|
||||
'(#:tests? #f)) ; no check target
|
||||
|
@ -2853,19 +2854,17 @@ interface.")
|
|||
(define-public qsynth
|
||||
(package
|
||||
(name "qsynth")
|
||||
(version "0.5.6")
|
||||
(version "0.5.7")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "mirror://sourceforge/qsynth/qsynth/" version
|
||||
"/qsynth-" version ".tar.gz"))
|
||||
(sha256
|
||||
(base32 "0h4hhja8qbyzd6v24flw9wr4mwl03nplryx1gyrppn7sg13l1sx6"))))
|
||||
(base32 "18im4w8agj60nkppwbkxqnhpp13z5li3w30kklv4lgs20rvgbvl6"))))
|
||||
(build-system gnu-build-system)
|
||||
(arguments
|
||||
`(#:tests? #f ; no "check" phase
|
||||
#:configure-flags
|
||||
'("CXXFLAGS=-std=gnu++11")))
|
||||
`(#:tests? #f)) ; no "check" phase
|
||||
(native-inputs
|
||||
`(("qttools" ,qttools)
|
||||
("pkg-config" ,pkg-config)))
|
||||
|
@ -2873,7 +2872,7 @@ interface.")
|
|||
`(("fluidsynth" ,fluidsynth)
|
||||
("qtbase" ,qtbase)
|
||||
("qtx11extras" ,qtx11extras)))
|
||||
(home-page "http://qsynth.sourceforge.net")
|
||||
(home-page "https://qsynth.sourceforge.io")
|
||||
(synopsis "Graphical user interface for FluidSynth")
|
||||
(description
|
||||
"Qsynth is a GUI front-end application for the FluidSynth SoundFont
|
||||
|
@ -3707,3 +3706,32 @@ library.")
|
|||
(description "FAudio is an XAudio reimplementation that focuses solely on
|
||||
developing fully accurate DirectX Audio runtime libraries.")
|
||||
(license license:zlib)))
|
||||
|
||||
(define-public gnaural
|
||||
(package
|
||||
(name "gnaural")
|
||||
(version "20110606")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "mirror://sourceforge/gnaural/Gnaural/gnaural_"
|
||||
version ".tar.xz"))
|
||||
(sha256
|
||||
(base32
|
||||
"1gq519c0imsh57zklyi0f8h64l3ai48lh672c834470z8c6kvbfi"))))
|
||||
(build-system gnu-build-system)
|
||||
(inputs
|
||||
`(("alsa-lib" ,alsa-lib)
|
||||
("gtk+" ,gtk+-2)
|
||||
("libsndfile" ,libsndfile)
|
||||
("portaudio" ,portaudio)))
|
||||
(native-inputs
|
||||
`(("pkg-config" ,pkg-config)))
|
||||
(home-page "http://gnaural.sourceforge.net/")
|
||||
(synopsis "Binaural beat synthesizer")
|
||||
(description "Gnaural is a programmable auditory binaural beat synthesizer
|
||||
intended to be used for brainwave entrainment. Gnaural supports creation of
|
||||
binaural beat tracks of different frequencies and exporting of tracks into
|
||||
different audio formats. Gnaural can also be linked over the internet with
|
||||
other Gnaural instances, allowing synchronous sessions between many users.")
|
||||
(license license:gpl2+)))
|
||||
|
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -185,7 +185,8 @@ can even repair them.")
|
|||
`(#:configure-flags
|
||||
`(,(string-append "--sbindir=" (assoc-ref %outputs "out") "/bin"))
|
||||
#:tests? #f))
|
||||
(home-page "http://archive.miek.nl/projects/hdup/index.html")
|
||||
(home-page (string-append "http://web.archive.org/web/20150925223424/"
|
||||
"http://archive.miek.nl/projects/hdup/index.html"))
|
||||
(synopsis "Simple incremental backup tool")
|
||||
(description
|
||||
"Hdup2 is a backup utility, its aim is to make backup really simple. The
|
||||
|
|
|
@ -971,7 +971,7 @@ with the Linux kernel.")
|
|||
(("/bin/pwd") "pwd"))
|
||||
#t))))))))
|
||||
|
||||
(define (make-gcc-libc base-gcc libc)
|
||||
(define-public (make-gcc-libc base-gcc libc)
|
||||
"Return a GCC that targets LIBC."
|
||||
(package (inherit base-gcc)
|
||||
(name (string-append (package-name base-gcc) "-"
|
||||
|
|
|
@ -12524,7 +12524,7 @@ once. This package provides tools to perform Drop-seq analyses.")
|
|||
(define-public pigx-rnaseq
|
||||
(package
|
||||
(name "pigx-rnaseq")
|
||||
(version "0.0.8")
|
||||
(version "0.0.10")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "https://github.com/BIMSBbioinfo/pigx_rnaseq/"
|
||||
|
@ -12532,7 +12532,7 @@ once. This package provides tools to perform Drop-seq analyses.")
|
|||
"/pigx_rnaseq-" version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"19nhflzs6k5c7yhi7gkwggq237cjdd1s4b4qkj5x5fkwg0rhn33i"))))
|
||||
"0z3hr120wk2vrlmlpz1vp3n9wy3rq4y2mnzh2vf08qgqn2xfdwcw"))))
|
||||
(build-system gnu-build-system)
|
||||
(arguments
|
||||
`(#:parallel-tests? #f ; not supported
|
||||
|
@ -14746,6 +14746,35 @@ vast-tools, an RNA-Seq pipeline for alternative splicing analysis. The plots
|
|||
are generated using @code{ggplot2}.")
|
||||
(license license:expat)))
|
||||
|
||||
(define-public python-ont-fast5-api
|
||||
(package
|
||||
(name "python-ont-fast5-api")
|
||||
(version "1.4.4")
|
||||
(source
|
||||
(origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
(url "https://github.com/nanoporetech/ont_fast5_api.git")
|
||||
(commit (string-append "release_" version))))
|
||||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
(base32
|
||||
"03cbq4zbbwhll8ml2m9k8sa31mirsvcbjkrq1yna0kkzz9fad5fm"))))
|
||||
(build-system python-build-system)
|
||||
(propagated-inputs
|
||||
`(("python-numpy" ,python-numpy)
|
||||
("python-six" ,python-six)
|
||||
("python-h5py" ,python-h5py)
|
||||
("python-progressbar33" ,python-progressbar33)))
|
||||
(home-page "https://github.com/nanoporetech/ont_fast5_api")
|
||||
(synopsis "Interface to HDF5 files of the Oxford Nanopore fast5 file format")
|
||||
(description
|
||||
"This package provides a concrete implementation of the fast5 file schema
|
||||
using the generic @code{h5py} library, plain-named methods to interact with
|
||||
and reflect the fast5 file schema, and tools to convert between
|
||||
@code{multi_read} and @code{single_read} formats.")
|
||||
(license license:mpl2.0)))
|
||||
|
||||
(define-public tbsp
|
||||
(let ((commit "ec8fff4410cfb13a677dbbb95cbbc60217e64907")
|
||||
(revision "1"))
|
||||
|
|
|
@ -524,17 +524,16 @@ board-independent tools.")))
|
|||
|
||||
(define-public (make-u-boot-package board triplet)
|
||||
"Returns a u-boot package for BOARD cross-compiled for TRIPLET."
|
||||
(let ((same-arch? (if (string-prefix? (%current-system)
|
||||
(gnu-triplet->nix-system triplet))
|
||||
`#t
|
||||
`#f)))
|
||||
(let ((same-arch? (lambda ()
|
||||
(string=? (%current-system)
|
||||
(gnu-triplet->nix-system triplet)))))
|
||||
(package
|
||||
(inherit u-boot)
|
||||
(name (string-append "u-boot-"
|
||||
(string-replace-substring (string-downcase board)
|
||||
"_" "-")))
|
||||
(native-inputs
|
||||
`(,@(if (not same-arch?)
|
||||
`(,@(if (not (same-arch?))
|
||||
`(("cross-gcc" ,(cross-gcc triplet #:xgcc gcc-7))
|
||||
("cross-binutils" ,(cross-binutils triplet)))
|
||||
`(("gcc-7" ,gcc-7)))
|
||||
|
@ -547,7 +546,7 @@ board-independent tools.")))
|
|||
#:test-target "test"
|
||||
#:make-flags
|
||||
(list "HOSTCC=gcc"
|
||||
,@(if (not same-arch?)
|
||||
,@(if (not (same-arch?))
|
||||
`((string-append "CROSS_COMPILE=" ,triplet "-"))
|
||||
'()))
|
||||
#:phases
|
||||
|
|
|
@ -30,7 +30,7 @@
|
|||
#:use-module ((guix store)
|
||||
#:select (run-with-store add-to-store add-text-to-store))
|
||||
#:use-module ((guix derivations)
|
||||
#:select (derivation derivation->output-path))
|
||||
#:select (derivation derivation-input derivation->output-path))
|
||||
#:use-module ((guix utils) #:select (gnu-triplet->nix-system))
|
||||
#:use-module (guix memoization)
|
||||
#:use-module (guix i18n)
|
||||
|
@ -400,8 +400,9 @@ $out/bin/guile --version~%"
|
|||
(derivation store name
|
||||
(derivation->output-path bash) `(,builder)
|
||||
#:system system
|
||||
#:inputs `((,bash) (,mkdir) (,tar) (,xz)
|
||||
(,builder) (,guile))
|
||||
#:inputs (map derivation-input
|
||||
(list bash mkdir tar xz guile))
|
||||
#:sources (list builder)
|
||||
#:env-vars `(("GUILE_TARBALL"
|
||||
. ,(derivation->output-path guile))))))
|
||||
|
||||
|
|
|
@ -242,7 +242,7 @@ other lower-level build files.")
|
|||
(define-public osc
|
||||
(package
|
||||
(name "osc")
|
||||
(version "0.165.1")
|
||||
(version "0.165.2")
|
||||
(source
|
||||
(origin
|
||||
(method git-fetch)
|
||||
|
@ -251,7 +251,7 @@ other lower-level build files.")
|
|||
(commit version)))
|
||||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
(base32 "16p4z34ziy4z2w7mfpclk13x1w2p69wivkdwp0224x18r2fwj67v"))))
|
||||
(base32 "0yjwvbvv9fgkpiyvrag89zxchyn3nbgp9jz0wn5p0z9450zwfyz6"))))
|
||||
(build-system python-build-system)
|
||||
(arguments
|
||||
`(#:phases
|
||||
|
|
|
@ -227,7 +227,7 @@ from forcing GEXP-PROMISE."
|
|||
#:system system
|
||||
#:guile-for-build guile)))
|
||||
|
||||
(define %chromium-version "75.0.3770.100")
|
||||
(define %chromium-version "75.0.3770.142")
|
||||
(define %ungoogled-revision "5d8abc38b43a62f379615a0dc972b29d9aebb4b4")
|
||||
(define %debian-revision "debian/75.0.3770.90-1")
|
||||
(define package-revision "0")
|
||||
|
@ -243,7 +243,7 @@ from forcing GEXP-PROMISE."
|
|||
%chromium-version ".tar.xz"))
|
||||
(sha256
|
||||
(base32
|
||||
"187wfdxw6ji4302pbn0kyi9b859ydri7gns0wlsrd7vd3c8604wy"))))
|
||||
"1b550hc9sav0qdnh4hiin2bb3jmfyrb3dhbmnc0v8662rjknq3ji"))))
|
||||
|
||||
(define %ungoogled-origin
|
||||
(origin
|
||||
|
|
|
@ -59,7 +59,8 @@
|
|||
#:use-module (srfi srfi-26)
|
||||
#:use-module (ice-9 vlist)
|
||||
#:use-module (ice-9 match)
|
||||
#:use-module (ice-9 regex))
|
||||
#:use-module (ice-9 regex)
|
||||
#:export (make-gcc-toolchain))
|
||||
|
||||
;;; Commentary:
|
||||
;;;
|
||||
|
@ -2483,10 +2484,20 @@ COREUTILS-FINAL vs. COREUTILS, etc."
|
|||
;;; GCC toolchain.
|
||||
;;;
|
||||
|
||||
(define (make-gcc-toolchain gcc)
|
||||
"Return a complete toolchain for GCC."
|
||||
;; Using the following procedure, a gcc toolchain targeting glibc-2.27 can be
|
||||
;; instantiated like this:
|
||||
;;
|
||||
;; (define-public gcc-glibc-2.27-toolchain
|
||||
;; (make-gcc-toolchain gcc glibc-2.27))
|
||||
|
||||
(define* (make-gcc-toolchain gcc
|
||||
#:optional
|
||||
(libc #f))
|
||||
"Return a complete toolchain for GCC. If LIBC is specified, target that libc."
|
||||
(let ((gcc (if libc (make-gcc-libc gcc libc) gcc))
|
||||
(libc (if libc libc glibc-final)))
|
||||
(package
|
||||
(name "gcc-toolchain")
|
||||
(name (string-append (package-name gcc) "-toolchain"))
|
||||
(version (package-version gcc))
|
||||
(source #f)
|
||||
(build-system trivial-build-system)
|
||||
|
@ -2519,7 +2530,7 @@ COREUTILS-FINAL vs. COREUTILS, etc."
|
|||
(description
|
||||
"This package provides a complete GCC tool chain for C/C++ development to
|
||||
be installed in user profiles. This includes GCC, as well as libc (headers
|
||||
and binaries, plus debugging symbols in the @code{debug} output), and Binutils.")
|
||||
an d binaries, plus debugging symbols in the @code{debug} output), and Binutils.")
|
||||
(home-page "https://gcc.gnu.org/")
|
||||
(outputs '("out" "debug" "static"))
|
||||
|
||||
|
@ -2529,9 +2540,9 @@ and binaries, plus debugging symbols in the @code{debug} output), and Binutils."
|
|||
(inputs `(("gcc" ,gcc)
|
||||
("ld-wrapper" ,(car (assoc-ref %final-inputs "ld-wrapper")))
|
||||
("binutils" ,binutils-final)
|
||||
("libc" ,glibc-final)
|
||||
("libc-debug" ,glibc-final "debug")
|
||||
("libc-static" ,glibc-final "static")))))
|
||||
("libc" ,libc)
|
||||
("libc-debug" ,libc "debug")
|
||||
("libc-static" ,libc "static"))))))
|
||||
|
||||
(define-public gcc-toolchain
|
||||
(make-gcc-toolchain gcc-final))
|
||||
|
|
|
@ -14066,7 +14066,7 @@ more generic data visualisation.")
|
|||
"This is a deprecated package for calculating pairwise multiple
|
||||
comparisons of mean rank sums. This package is superseded by the novel
|
||||
PMCMRplus package. The PMCMR package is no longer maintained, but kept for
|
||||
compatibility of reverse depending packages for some time.")
|
||||
compatibility of dependent packages for some time.")
|
||||
(license license:gpl3+)))
|
||||
|
||||
(define-public r-downloader
|
||||
|
|
|
@ -47,7 +47,7 @@ or XID_Continue properties according to Unicode Standard Annex #31.")
|
|||
(define-public rust-proc-macro2
|
||||
(package
|
||||
(name "rust-proc-macro2")
|
||||
(version "0.4.27")
|
||||
(version "0.4.30")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
|
@ -56,7 +56,7 @@ or XID_Continue properties according to Unicode Standard Annex #31.")
|
|||
(string-append name "-" version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"05c92v787snyaq4ss16vxc9mdv6zndfgsdq8k3hnnyffmsf7ycad"))))
|
||||
"0nd71fl24sys066jrha6j7i34nfkjv44yzw8yww9742wmc8j0gfg"))))
|
||||
(build-system cargo-build-system)
|
||||
(arguments
|
||||
`(#:cargo-inputs (("rust-unicode-xid" ,rust-unicode-xid))
|
||||
|
|
|
@ -39,6 +39,7 @@
|
|||
#:use-module (gnu packages networking)
|
||||
#:use-module (gnu packages pkg-config)
|
||||
#:use-module (gnu packages python)
|
||||
#:use-module (gnu packages python-crypto)
|
||||
#:use-module (gnu packages python-web)
|
||||
#:use-module (gnu packages python-xyz)
|
||||
#:use-module (gnu packages version-control)
|
||||
|
@ -49,20 +50,24 @@
|
|||
(define-public python-docker-py
|
||||
(package
|
||||
(name "python-docker-py")
|
||||
(version "1.10.6")
|
||||
(version "3.7.3")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (pypi-uri "docker-py" version))
|
||||
(uri (pypi-uri "docker" version))
|
||||
(sha256
|
||||
(base32
|
||||
"05f49f6hnl7npmi7kigg0ibqk8s3fhzx1ivvz1kqvlv4ay3paajc"))))
|
||||
"0qmrcvpaz37p85hfddsd4yc8hgqlkzs4cz09q9wmy0pz5pwajqm0"))))
|
||||
(build-system python-build-system)
|
||||
;; TODO: Tests require a running Docker daemon.
|
||||
(arguments '(#:tests? #f))
|
||||
(inputs
|
||||
`(("python-requests" ,python-requests)
|
||||
`(("python-requests" ,python-requests-2.20)
|
||||
("python-docker-pycreds" ,python-docker-pycreds)
|
||||
("python-ipaddress" ,python-ipaddress)
|
||||
("python-paramiko" ,python-paramiko)
|
||||
("python-six" ,python-six)
|
||||
("python-urllib3" ,python-urllib3-1.24)
|
||||
("python-websocket-client" ,python-websocket-client)))
|
||||
(home-page "https://github.com/docker/docker-py/")
|
||||
(synopsis "Python client for Docker")
|
||||
|
@ -73,14 +78,14 @@ management tool.")
|
|||
(define-public python-dockerpty
|
||||
(package
|
||||
(name "python-dockerpty")
|
||||
(version "0.3.4")
|
||||
(version "0.4.1")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (pypi-uri "dockerpty" version))
|
||||
(sha256
|
||||
(base32
|
||||
"0za6rr349641wv76ww9l3zcic2xyxrirlxpnzl4296h897648455"))))
|
||||
"1kjn64wx23jmr8dcc6g7bwlmrhfmxr77gh6iphqsl39sayfxdab9"))))
|
||||
(build-system python-build-system)
|
||||
(native-inputs
|
||||
`(("python-six" ,python-six)))
|
||||
|
@ -96,25 +101,32 @@ client.")
|
|||
(define-public docker-compose
|
||||
(package
|
||||
(name "docker-compose")
|
||||
(version "1.5.2")
|
||||
(version "1.24.1")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (pypi-uri "docker-compose" version))
|
||||
(sha256
|
||||
(base32
|
||||
"0ksg7hm2yvc977968dixxisrhcmvskzpcx3pz0v1kazrdqp7xakr"))))
|
||||
"0lx7bx6jvhydbab8vwry0bclhdf0dfj6jrns1m5y45yp9ybqxmd5"))))
|
||||
(build-system python-build-system)
|
||||
;; TODO: Tests require running Docker daemon.
|
||||
(arguments '(#:tests? #f))
|
||||
(inputs
|
||||
`(("python-docker-py" ,python-docker-py)
|
||||
`(("python2-backport-ssl-match-hostname"
|
||||
,python2-backport-ssl-match-hostname)
|
||||
("python-cached-property"
|
||||
,python-cached-property)
|
||||
("python-colorama" ,python-colorama)
|
||||
("python-docker-py" ,python-docker-py)
|
||||
("python-docker-pycreds" ,python-docker-pycreds)
|
||||
("python-dockerpty" ,python-dockerpty)
|
||||
("python-docopt" ,python-docopt)
|
||||
("python-ipaddress" ,python-ipaddress)
|
||||
("python-paramiko" ,python-paramiko)
|
||||
("python-jsonschema" ,python-jsonschema-2.6)
|
||||
("python-pyyaml" ,python-pyyaml)
|
||||
("python-requests" ,python-requests-2.7)
|
||||
("python-requests" ,python-requests-2.20)
|
||||
("python-six" ,python-six)
|
||||
("python-texttable" ,python-texttable)
|
||||
("python-websocket-client" ,python-websocket-client)))
|
||||
|
@ -129,14 +141,14 @@ created and all the services are started as specified in the configuration.")
|
|||
(define-public python-docker-pycreds
|
||||
(package
|
||||
(name "python-docker-pycreds")
|
||||
(version "0.3.0")
|
||||
(version "0.4.0")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (pypi-uri "docker-pycreds" version))
|
||||
(sha256
|
||||
(base32
|
||||
"1zxvam1q22qb0jf48553nnncnfrcp88ag4xa0qmq6vr0imn9a3lb"))))
|
||||
"1m44smrggnqghxkqfl7vhapdw89m1p3vdr177r6cq17lr85jgqvc"))))
|
||||
(build-system python-build-system)
|
||||
(arguments
|
||||
`(#:phases
|
||||
|
|
|
@ -251,7 +251,7 @@ easy.")
|
|||
(define-public snap
|
||||
(package
|
||||
(name "snap")
|
||||
(version "5.0.1")
|
||||
(version "5.0.4")
|
||||
(source
|
||||
(origin
|
||||
(method git-fetch)
|
||||
|
@ -261,7 +261,7 @@ easy.")
|
|||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
(base32
|
||||
"0ic0xgal19yazbd1kffmbjhiicvvlw5clj48lj80mksa2lgvnzna"))))
|
||||
"1zdypxifvxjkzhi4n9mkck8l419wc0pg103339yzhsbb9kkd3jlr"))))
|
||||
(build-system trivial-build-system)
|
||||
(arguments
|
||||
`(#:modules ((guix build utils))
|
||||
|
|
|
@ -4238,7 +4238,7 @@ them easier to distinguish from other, less important buffers.")
|
|||
(define-public emacs-prescient
|
||||
(package
|
||||
(name "emacs-prescient")
|
||||
(version "3.1")
|
||||
(version "3.2")
|
||||
(source (origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
|
@ -4247,7 +4247,7 @@ them easier to distinguish from other, less important buffers.")
|
|||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
(base32
|
||||
"1cdjvlwlvxxazz7hlxgvdp0pznvj1gzqa2r6k4im0cpdrnnng6j6"))))
|
||||
"0d60h4rfm5jcf8cf11z91wjqp0xcrviskqzyqhfliqvy2i2yl6ks"))))
|
||||
(build-system emacs-build-system)
|
||||
(propagated-inputs
|
||||
`(("emacs-company" ,emacs-company)
|
||||
|
@ -5829,6 +5829,31 @@ that indentation determines structure, this mode provides indentation and
|
|||
indentation command behavior very similar to that of python-mode.")
|
||||
(license license:gpl3+)))
|
||||
|
||||
(define-public emacs-gitlab-ci-mode
|
||||
(package
|
||||
(name "emacs-gitlab-ci-mode")
|
||||
(version "20190425.11.10")
|
||||
(source (origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
(url "https://gitlab.com/joewreschnig/gitlab-ci-mode.git")
|
||||
(commit (string-append "v" version))))
|
||||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
(base32
|
||||
"1jkp9mnbiccqnha9zs646znqyqvy5jjb81kah7ghbkzdqqk2avm0"))))
|
||||
(build-system emacs-build-system)
|
||||
(propagated-inputs
|
||||
`(("emacs-yaml-mode" ,emacs-yaml-mode)))
|
||||
(home-page "https://gitlab.com/joewreschnig/gitlab-ci-mode/")
|
||||
(synopsis "Emacs mode for editing GitLab CI files")
|
||||
(description
|
||||
"@code{gitlab-ci-mode} is an Emacs major mode for editing GitLab CI
|
||||
files. It provides syntax highlighting and completion for keywords and
|
||||
special variables. An interface to GitLab’s CI file linter is also provided
|
||||
via @code{gitlab-ci-lint}.")
|
||||
(license license:gpl3+)))
|
||||
|
||||
(define-public emacs-web-mode
|
||||
(package
|
||||
(name "emacs-web-mode")
|
||||
|
@ -13640,6 +13665,30 @@ reload the configuration with @code{gpgconf --reload gpg-agent}, and start the
|
|||
server with @code{M-x pinentry-start}.")
|
||||
(license license:gpl3+))))
|
||||
|
||||
(define-public emacs-so-long
|
||||
(let ((commit "3ebe97decdb5cbbfba82ca686e0ad2c7d2722b4a")
|
||||
(version "1.0")
|
||||
(revision "1"))
|
||||
(package
|
||||
(name "emacs-so-long")
|
||||
(version (git-version version revision commit))
|
||||
(source
|
||||
(origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
(url "https://git.savannah.gnu.org/git/so-long.git")
|
||||
(commit commit)))
|
||||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
(base32
|
||||
"0fi71g5rsdsi978jz8406k8hvzgnssm9wxar8yqfhs97178r9s5m"))))
|
||||
(build-system emacs-build-system)
|
||||
(home-page "https://www.emacswiki.org/emacs/SoLong")
|
||||
(synopsis "Improve performance in files with long lines")
|
||||
(description "This package improves the performance of Emacs when
|
||||
viewing files with long lines.")
|
||||
(license license:gpl3+))))
|
||||
|
||||
(define-public emacs-org-brain
|
||||
(package
|
||||
(name "emacs-org-brain")
|
||||
|
@ -15340,6 +15389,30 @@ command\", but because it always involves at least two commands (a prefix and
|
|||
a suffix) we prefer to call it just a \"transient\".")
|
||||
(license license:gpl3+))))
|
||||
|
||||
(define-public emacs-matcha
|
||||
(let ((commit "c7df5cf5cdac9ae369e241342389ccda0205eab9"))
|
||||
(package
|
||||
(name "emacs-matcha")
|
||||
(version (git-version "0.0.1" "1" commit)) ;no upstream release
|
||||
(source (origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
(url "https://github.com/jojojames/matcha.git")
|
||||
(commit commit)))
|
||||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
(base32
|
||||
"1lfnh1glg6al677m7ci0x8g5wjdhjxlfl3nv1f1ppsw4dpnwsj9b"))))
|
||||
(propagated-inputs
|
||||
`(("emacs-hydra" ,emacs-hydra)
|
||||
("emacs-transient" ,emacs-transient)))
|
||||
(build-system emacs-build-system)
|
||||
(home-page "https://github.com/jojojames/matcha/")
|
||||
(synopsis "Collection of hydras with a generic interface to launch them")
|
||||
(description "Matcha provides a collection of transients for various
|
||||
packages with a consistent way to use them.")
|
||||
(license license:gpl3+))))
|
||||
|
||||
(define-public emacs-undo-propose-el
|
||||
(let ((commit "5f1fa99a04369a959aad01b476fe4f34229f28cd")
|
||||
(version "1.0.0")
|
||||
|
@ -16481,3 +16554,37 @@ it forcibly
|
|||
@item Dedicated window for debugging program.
|
||||
@end enumerate")
|
||||
(license license:gpl3+))))
|
||||
|
||||
(define-public emacs-elpher
|
||||
(package
|
||||
(name "emacs-elpher")
|
||||
(version "1.4.6")
|
||||
(source
|
||||
(origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
(url "https://github.com/tgvaughan/elpher")
|
||||
(commit (string-append "v" version))))
|
||||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
(base32
|
||||
"07xansmhn4l0b9ghzf56vyx8cqg0q01aq3pz5ikx2i19v5f0rc66"))))
|
||||
(build-system emacs-build-system)
|
||||
(native-inputs
|
||||
`(("texinfo" ,texinfo)))
|
||||
(arguments
|
||||
`(#:phases
|
||||
(modify-phases %standard-phases
|
||||
(add-before 'install 'build-doc
|
||||
(lambda _
|
||||
(invoke "makeinfo" "elpher.texi"))))))
|
||||
(home-page "https://github.com/tgvaughan/elpher")
|
||||
(synopsis "Gopher client for Emacs")
|
||||
(description "Elpher is a full-featured gopher client for Emacs. Its
|
||||
features include intuitive keyboard and mouse-driven browsing, out-of-the-box
|
||||
compatibility with evil-mode, clickable web and gopher links in plain text,
|
||||
caching of visited sites, pleasant and configurable visualization of Gopher
|
||||
directories, direct visualisation of image files, jumping directly to links by
|
||||
name (with autocompletion), a simple bookmark management system and
|
||||
connections using TLS encryption.")
|
||||
(license license:gpl3+)))
|
||||
|
|
|
@ -520,3 +520,37 @@ directories.
|
|||
(license (list
|
||||
license:bsd-2 ; Ephoto's thumbnailing code
|
||||
license:bsd-3))))
|
||||
|
||||
(define-public evisum
|
||||
(package
|
||||
(name "evisum")
|
||||
(version "0.2.3")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "https://download.enlightenment.org/rel/apps/"
|
||||
"evisum/evisum-" version ".tar.xz"))
|
||||
(sha256
|
||||
(base32
|
||||
"1lj62n896kablsl687c66yxrwajrh6ralb3y6nmcqv34pglnigca"))))
|
||||
(build-system gnu-build-system)
|
||||
(arguments
|
||||
'(#:tests? #f ; no tests
|
||||
#:make-flags (list (string-append "PREFIX=" (assoc-ref %outputs "out")))
|
||||
#:phases
|
||||
(modify-phases %standard-phases
|
||||
(delete 'configure) ; no configure phase
|
||||
(add-after 'unpack 'set-environmental-variables
|
||||
(lambda _ (setenv "CC" (which "gcc")) #t)))))
|
||||
(native-inputs
|
||||
`(("pkg-config" ,pkg-config)))
|
||||
(inputs
|
||||
`(("alsa-lib" ,alsa-lib)
|
||||
("efl" ,efl)
|
||||
("perl" ,perl)))
|
||||
(home-page "https://www.enlightenment.org")
|
||||
(synopsis "EFL process viewer")
|
||||
(description
|
||||
"This is a process monitor and system monitor using the
|
||||
@dfn{Enlightenment Foundation Libraries} (EFL).")
|
||||
(license license:bsd-2)))
|
||||
|
|
|
@ -12,6 +12,7 @@
|
|||
;;; Copyright © 2018, 2019 Nicolas Goaziou <mail@nicolasgoaziou.fr>
|
||||
;;; Copyright © 2018 Arun Isaac <arunisaac@systemreboot.net>
|
||||
;;; Copyright © 2019 Guillaume Le Vaillant <glv@posteo.net>
|
||||
;;; Copyright © 2019 Tanguy Le Carrour <tanguy@bioneland.org>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
|
@ -36,6 +37,8 @@
|
|||
#:use-module (guix build-system gnu)
|
||||
#:use-module (guix build-system cmake)
|
||||
#:use-module (guix build-system python)
|
||||
#:use-module (guix build-system glib-or-gtk)
|
||||
#:use-module (guix utils)
|
||||
#:use-module (gnu packages)
|
||||
#:use-module (gnu packages base)
|
||||
#:use-module (gnu packages boost)
|
||||
|
@ -47,9 +50,12 @@
|
|||
#:use-module (gnu packages dns)
|
||||
#:use-module (gnu packages emacs)
|
||||
#:use-module (gnu packages dbm)
|
||||
#:use-module (gnu packages gnome)
|
||||
#:use-module (gnu packages glib)
|
||||
#:use-module (gnu packages gnupg)
|
||||
#:use-module (gnu packages graphviz)
|
||||
#:use-module (gnu packages groff)
|
||||
#:use-module (gnu packages gtk)
|
||||
#:use-module (gnu packages libedit)
|
||||
#:use-module (gnu packages libevent)
|
||||
#:use-module (gnu packages libunwind)
|
||||
|
@ -506,7 +512,7 @@ other machines/servers. Electroncash does not download the Bitcoin Cash blockch
|
|||
;; Only try tests that don't need access to network or system
|
||||
(replace 'check
|
||||
(lambda _
|
||||
(invoke "make" "ARGS=-R 'hash|core_tests'" "test")))
|
||||
(invoke "make" "ARGS=-R 'hash|core_tests' --verbose" "test")))
|
||||
(add-after 'check 'unit-tests
|
||||
(lambda _
|
||||
(let ((excluded-unit-tests
|
||||
|
@ -1053,3 +1059,39 @@ Its features are:
|
|||
@item get account amount.
|
||||
@end itemize")
|
||||
(license license:agpl3+)))
|
||||
|
||||
(define-public grisbi
|
||||
(package
|
||||
(name "grisbi")
|
||||
(version "1.2.2")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (string-append
|
||||
"mirror://sourceforge/grisbi/grisbi%20stable/"
|
||||
(version-major+minor version) ".x/" version
|
||||
"/grisbi-" version ".tar.bz2"))
|
||||
(sha256
|
||||
(base32
|
||||
"1piiyyxjsjbw9gcqydvknzxmmfgh8kdqal12ywrxyxih2afwnvbw"))))
|
||||
(build-system glib-or-gtk-build-system)
|
||||
(arguments
|
||||
`(#:configure-flags (list "--without-ofx")))
|
||||
(propagated-inputs
|
||||
`(("dconf" ,dconf)))
|
||||
(native-inputs
|
||||
`(("glib" ,glib "bin") ; glib-compile-schemas
|
||||
("pkg-config" ,pkg-config)
|
||||
("intltool" ,intltool)))
|
||||
(inputs
|
||||
`(("gtk+" ,gtk+)
|
||||
("libgsf" ,libgsf)))
|
||||
(synopsis "Personal accounting application")
|
||||
(description "Grisbi is a personal accounting application written by
|
||||
French developers that is designed to follow French accounting rules.
|
||||
Grisbi can manage multiple accounts, currencies and users. It manages
|
||||
third party, expenditure and receipt categories, budgetary lines,
|
||||
financial years, budget estimates, bankcard management and other
|
||||
information.")
|
||||
(home-page "http://grisbi.org")
|
||||
(license license:gpl2+)))
|
||||
|
|
|
@ -3,7 +3,7 @@
|
|||
;;; Copyright © 2014 Manolis Fragkiskos Ragkousis <manolis837@gmail.com>
|
||||
;;; Copyright © 2016 Hartmut Goebel <h.goebel@crazy-compilers.com>
|
||||
;;; Copyright © 2016, 2018 Ludovic Courtès <ludo@gnu.org>
|
||||
;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
|
||||
;;; Copyright © 2016, 2019 Efraim Flashner <efraim@flashner.co.il>
|
||||
;;; Copyright © 2017 Jonathan Brielmaier <jonathan.brielmaier@web.de>
|
||||
;;; Copyright © 2017 Julien Lepiller <julien@lepiller.eu>
|
||||
;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
|
||||
|
@ -256,21 +256,21 @@ non-root users.")
|
|||
(license license:gpl3))))
|
||||
|
||||
(define-public rkflashtool
|
||||
(let ((commit "094bd6410cb016e487e2ccb1050c59eeac2e6dd1")
|
||||
(let ((commit "8966c4e277de8148290554aaaa4146a3a84a3c53")
|
||||
(revision "1"))
|
||||
(package
|
||||
(name "rkflashtool")
|
||||
(version (string-append "0.0.0-" revision "." (string-take commit 7)))
|
||||
(version (git-version "5.2" revision commit))
|
||||
(source
|
||||
(origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
(url "https://github.com/linux-rockchip/rkflashtool.git")
|
||||
(commit commit)))
|
||||
(file-name (string-append name "-" version "-checkout"))
|
||||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
(base32
|
||||
"1zkd8zxir3rfg3sy9r20bcnxclnplryn583gqpcr3iad0k3xbah7"))))
|
||||
"1ndyzg1zlgg20dd8js9kfqm5kq19k005vddkvf65qj20w0pcyahn"))))
|
||||
(build-system gnu-build-system)
|
||||
(arguments
|
||||
'(#:phases
|
||||
|
|
|
@ -704,15 +704,15 @@ utilities to ease adding new glyphs to the font.")
|
|||
(define-public font-google-noto
|
||||
(package
|
||||
(name "font-google-noto")
|
||||
(version "20170403")
|
||||
(source (origin
|
||||
(version "20171025")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch/zipbomb)
|
||||
(uri (string-append "https://noto-website.storage.googleapis.com/"
|
||||
(uri (string-append "https://noto-website-2.storage.googleapis.com/"
|
||||
"pkgs/Noto-hinted.zip"))
|
||||
(file-name (string-append name "-" version ".zip"))
|
||||
(sha256
|
||||
(base32
|
||||
"1p92a6dvs7wqwjfpp1ahr9z1wz35am0l8r78521383spd77bmrfm"))))
|
||||
(base32 "1bp42whyin7xcgmrbnfvz3rvd98xmxaz3ywqybbjmqzwaa9llyw3"))))
|
||||
(build-system font-build-system)
|
||||
(home-page "https://www.google.com/get/noto/")
|
||||
(synopsis "Fonts to cover all languages")
|
||||
|
|
|
@ -2694,7 +2694,7 @@ Transport Tycoon Deluxe.")
|
|||
(define-public openrct2
|
||||
(package
|
||||
(name "openrct2")
|
||||
(version "0.2.2")
|
||||
(version "0.2.3")
|
||||
(source
|
||||
(origin
|
||||
(method git-fetch)
|
||||
|
@ -2703,7 +2703,7 @@ Transport Tycoon Deluxe.")
|
|||
(commit (string-append "v" version))))
|
||||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
(base32 "1bfqmb6cbmsjcvj77vppy5lw1m4lkvxd1w3f218ah4788xnkysq2"))))
|
||||
(base32 "01mj6jlbl2cn3wpk6sy34ldzdl0qykpn7fncznjykklj2nqzr4ig"))))
|
||||
(build-system cmake-build-system)
|
||||
(arguments
|
||||
`(#:configure-flags (list "-DDOWNLOAD_OBJECTS=OFF"
|
||||
|
|
|
@ -37,6 +37,7 @@
|
|||
;;; Copyright © 2019 Marius Bakke <mbakke@fastmail.com>
|
||||
;;; Copyright © 2019 Florian Pelz <pelzflorian@pelzflorian.de>
|
||||
;;; Copyright © 2019 Giacomo Leidi <goodoldpaul@autistici.org>
|
||||
;;; Copyright © 2019 Jelle Licht <jlicht@fsfe.org>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
|
@ -5335,6 +5336,7 @@ users.")
|
|||
(uri (string-append "mirror://gnome/sources/NetworkManager/"
|
||||
(version-major+minor version) "/"
|
||||
"NetworkManager-" version ".tar.xz"))
|
||||
(patches (search-patches "nm-plugin-path.patch"))
|
||||
(sha256
|
||||
(base32
|
||||
"064cgj9za0kzarks0lrv0qw2ysdphb5l97iw0c964bfiqzjfv8rm"))
|
||||
|
@ -5486,12 +5488,31 @@ services.")
|
|||
"0gyrv46h9k17qym48qacq4zpxbap6hi17shn921824zm98m2bdvr"))))
|
||||
(build-system gnu-build-system)
|
||||
(arguments
|
||||
'(#:configure-flags '("--enable-absolute-paths")))
|
||||
`(#:configure-flags '("--enable-absolute-paths" "--localstatedir=/var")
|
||||
#:phases
|
||||
(modify-phases %standard-phases
|
||||
(add-after 'configure 'patch-path
|
||||
(lambda* (#:key inputs outputs #:allow-other-keys #:rest args)
|
||||
(let* ((ovpn (string-append (assoc-ref inputs "openvpn")
|
||||
"/sbin/openvpn"))
|
||||
(modprobe (string-append (assoc-ref inputs "kmod")
|
||||
"/bin/modprobe"))
|
||||
(pretty-ovpn (string-append "\"" ovpn "\"")))
|
||||
(for-each
|
||||
(lambda (file)
|
||||
(substitute* file
|
||||
(("\"/usr/local/sbin/openvpn\"") pretty-ovpn)
|
||||
(("\"/usr/sbin/openvpn\"") pretty-ovpn)
|
||||
(("\"/sbin/openvpn\"") pretty-ovpn)
|
||||
(("/sbin/modprobe") modprobe)))
|
||||
'("src/nm-openvpn-service.c" "properties/nm-openvpn-editor.c")))
|
||||
#t)))))
|
||||
(native-inputs
|
||||
`(("pkg-config" ,pkg-config)
|
||||
("intltool" ,intltool)))
|
||||
(inputs
|
||||
`(("gtk+" ,gtk+)
|
||||
("kmod" ,kmod)
|
||||
("openvpn" ,openvpn)
|
||||
("network-manager" ,network-manager)
|
||||
("network-manager-applet" ,network-manager-applet) ;for libnma
|
||||
|
@ -5504,6 +5525,55 @@ to virtual private networks (VPNs) via OpenVPN.")
|
|||
(license license:gpl2+)
|
||||
(properties `((upstream-name . "NetworkManager-openvpn")))))
|
||||
|
||||
(define-public network-manager-vpnc
|
||||
(package
|
||||
(name "network-manager-vpnc")
|
||||
(version "1.2.6")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append
|
||||
"mirror://gnome/sources/NetworkManager-vpnc/"
|
||||
(version-major+minor version)
|
||||
"/NetworkManager-vpnc-" version ".tar.xz"))
|
||||
(sha256
|
||||
(base32
|
||||
"1js5lwcsqws4klgypfxl4ikmakv7v7xgddij1fj6b0y0qicx0kyy"))))
|
||||
(build-system gnu-build-system)
|
||||
(arguments
|
||||
`(#:configure-flags '("--enable-absolute-paths" "--localstatedir=/var")
|
||||
#:phases
|
||||
(modify-phases %standard-phases
|
||||
(add-after 'configure 'patch-path
|
||||
(lambda* (#:key inputs outputs #:allow-other-keys #:rest args)
|
||||
(let* ((vpnc (string-append (assoc-ref inputs "vpnc")
|
||||
"/sbin/vpnc"))
|
||||
(modprobe (string-append (assoc-ref inputs "kmod")
|
||||
"/bin/modprobe"))
|
||||
(pretty-ovpn (string-append "\"" vpnc "\"")))
|
||||
(substitute* "src/nm-vpnc-service.c"
|
||||
(("\"/usr/local/sbin/vpnc\"") pretty-ovpn)
|
||||
(("\"/usr/sbin/vpnc\"") pretty-ovpn)
|
||||
(("\"/sbin/vpnc\"") pretty-ovpn)
|
||||
(("/sbin/modprobe") modprobe)))
|
||||
#t)))))
|
||||
(native-inputs
|
||||
`(("pkg-config" ,pkg-config)
|
||||
("intltool" ,intltool)))
|
||||
(inputs
|
||||
`(("gtk+" ,gtk+)
|
||||
("kmod" ,kmod)
|
||||
("vpnc" ,vpnc)
|
||||
("network-manager" ,network-manager)
|
||||
("network-manager-applet" ,network-manager-applet) ;for libnma
|
||||
("libsecret" ,libsecret)))
|
||||
(home-page "https://wiki.gnome.org/Projects/NetworkManager/VPN")
|
||||
(synopsis "VPNC plug-in for NetworkManager")
|
||||
(description
|
||||
"Support for configuring virtual private networks based on VPNC.
|
||||
Compatible with Cisco VPN concentrators configured to use IPsec.")
|
||||
(license license:gpl2+)
|
||||
(properties `((upstream-name . "NetworkManager-vpnc")))))
|
||||
|
||||
(define-public mobile-broadband-provider-info
|
||||
(package
|
||||
(name "mobile-broadband-provider-info")
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2015, 2016 Ludovic Courtès <ludo@gnu.org>
|
||||
;;; Copyright © 2015 Tomáš Čech <sleep_walker@gnu.org>
|
||||
;;; Copyright © 2016 Leo Famulari <leo@famulari.name>
|
||||
;;; Copyright © 2016, 2019 Leo Famulari <leo@famulari.name>
|
||||
;;; Copyright © 2016, 2017, 2019 Ricardo Wurmus <rekado@elephly.net>
|
||||
;;; Copyright © 2016, 2018 Efraim Flashner <efraim@flashner.co.il>
|
||||
;;; Copyright © 2016 Andreas Enge <andreas@enge.fr>
|
||||
|
@ -78,20 +78,18 @@
|
|||
#:use-module (guix utils))
|
||||
|
||||
(define-public blender
|
||||
(let ((revision "0")
|
||||
(commit "3c3d80ea22af15e13237f978181a881b90c41e7c"))
|
||||
(package
|
||||
(name "blender")
|
||||
(version (git-version "2.80-beta" revision commit))
|
||||
(version "v2.80-rc1")
|
||||
(source (origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
(url "https://git.blender.org/blender.git")
|
||||
(commit commit)))
|
||||
(commit version)))
|
||||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
(base32
|
||||
"1hhn8pf3a5556mxyrb2ggsiy6q0h75hnkdpcgq9b6vg284jl2l4q"))))
|
||||
"11dcf0rjq42mpphk8r8cy7gvhzzl1cj1vslp98ibh8sdjzaz2mdq"))))
|
||||
(build-system cmake-build-system)
|
||||
(arguments
|
||||
(let ((python-version (version-major+minor (package-version python))))
|
||||
|
@ -166,8 +164,8 @@ the 3D pipeline—modeling, rigging, animation, simulation, rendering,
|
|||
compositing and motion tracking, even video editing and game creation. The
|
||||
application can be customized via its API for Python scripting.
|
||||
|
||||
WARNING: This is a beta build of Blender.")
|
||||
(license license:gpl2+))))
|
||||
WARNING: This is a release candidate build of Blender.")
|
||||
(license license:gpl2+)))
|
||||
|
||||
(define-public blender-2.79
|
||||
(package
|
||||
|
@ -230,7 +228,7 @@ WARNING: This is a beta build of Blender.")
|
|||
`(("boost" ,boost)
|
||||
("jemalloc" ,jemalloc)
|
||||
("libx11" ,libx11)
|
||||
("openimageio" ,openimageio)
|
||||
("openimageio" ,openimageio-1.7)
|
||||
("openexr" ,openexr)
|
||||
("ilmbase" ,ilmbase)
|
||||
("openjpeg" ,openjpeg-1)
|
||||
|
@ -456,7 +454,7 @@ storage of the \"EXR\" file format for storing 16-bit floating-point images.")
|
|||
(define-public openimageio
|
||||
(package
|
||||
(name "openimageio")
|
||||
(version "1.7.19")
|
||||
(version "1.8.17")
|
||||
(source (origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
|
@ -465,7 +463,7 @@ storage of the \"EXR\" file format for storing 16-bit floating-point images.")
|
|||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
(base32
|
||||
"0yxxy43l3lllw7maqg42dlkgqms2d4772sxzxk7kmxg4lnhsvndc"))))
|
||||
"0zq34szprgkrrayg5sl3whrsx2l6lr8nw4hdrnwv2qhn70jbi2w2"))))
|
||||
(build-system cmake-build-system)
|
||||
;; FIXME: To run all tests successfully, test image sets from multiple
|
||||
;; third party sources have to be present. For details see
|
||||
|
@ -492,6 +490,22 @@ visual effects work for film.")
|
|||
(home-page "http://www.openimageio.org")
|
||||
(license license:bsd-3)))
|
||||
|
||||
;; This older version of OpenImageIO is required for Blender 2.79.
|
||||
(define-public openimageio-1.7
|
||||
(package
|
||||
(inherit openimageio)
|
||||
(name "openimageio")
|
||||
(version "1.7.19")
|
||||
(source (origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
(url "https://github.com/OpenImageIO/oiio.git")
|
||||
(commit (string-append "Release-" version))))
|
||||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
(base32
|
||||
"0yxxy43l3lllw7maqg42dlkgqms2d4772sxzxk7kmxg4lnhsvndc"))))))
|
||||
|
||||
(define-public openscenegraph
|
||||
(package
|
||||
(name "openscenegraph")
|
||||
|
|
|
@ -1362,7 +1362,7 @@ The library is shipped with documentation in Info format and usage examples.")
|
|||
(define-public guile-wisp
|
||||
(package
|
||||
(name "guile-wisp")
|
||||
(version "0.9.9.1")
|
||||
(version "1.0.2")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "https://bitbucket.org/ArneBab/"
|
||||
|
@ -1370,7 +1370,7 @@ The library is shipped with documentation in Info format and usage examples.")
|
|||
version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"1ii14qz1lx7ffhb8i9q7dgaiwbif8g2q182skx17j11skp65c8r3"))))
|
||||
"03pz7pj9jyallynhflp5s7qax8dj1fs8la434wrfgz7g1kgjnvf6"))))
|
||||
(build-system gnu-build-system)
|
||||
(arguments
|
||||
`(#:modules ((guix build gnu-build-system)
|
||||
|
@ -1387,9 +1387,7 @@ The library is shipped with documentation in Info format and usage examples.")
|
|||
(add-before 'configure 'patch-/usr/bin/env
|
||||
(lambda _
|
||||
(substitute* "Makefile.in"
|
||||
(("/usr/bin/env bash") (which "bash"))
|
||||
(("\\$\\(GUILE_EFFECTIVE_VERSION\\)/site")
|
||||
"site/$(GUILE_EFFECTIVE_VERSION)")) ;use the right order
|
||||
(("/usr/bin/env bash") (which "bash")))
|
||||
#t))
|
||||
;; auto compilation breaks, but if we set HOME to /tmp,
|
||||
;; that works ok
|
||||
|
@ -1422,7 +1420,7 @@ The library is shipped with documentation in Info format and usage examples.")
|
|||
(assoc-ref emacs:%standard-phases 'build))
|
||||
(add-after 'compile-emacs-files 'make-autoloads
|
||||
(assoc-ref emacs:%standard-phases 'make-autoloads)))))
|
||||
(home-page "https://draketo.de/english/wisp")
|
||||
(home-page "https://www.draketo.de/english/wisp")
|
||||
(inputs
|
||||
`(("guile" ,guile-2.2)))
|
||||
(native-inputs
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2017, 2018 Arun Isaac <arunisaac@systemreboot.net>
|
||||
;;; Copyright © 2017, 2018, 2019 Arun Isaac <arunisaac@systemreboot.net>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
|
@ -20,13 +20,17 @@
|
|||
#:use-module ((guix licenses) #:prefix license:)
|
||||
#:use-module (guix packages)
|
||||
#:use-module (guix download)
|
||||
#:use-module (guix git-download)
|
||||
#:use-module (gnu packages gtk)
|
||||
#:use-module (gnu packages image)
|
||||
#:use-module (gnu packages libusb)
|
||||
#:use-module (gnu packages pkg-config)
|
||||
#:use-module (gnu packages pulseaudio)
|
||||
#:use-module (gnu packages python)
|
||||
#:use-module (gnu packages python-xyz)
|
||||
#:use-module (gnu packages xml)
|
||||
#:use-module (guix build-system cmake)
|
||||
#:use-module (guix build-system gnu)
|
||||
#:use-module (guix build-system python))
|
||||
|
||||
(define-public rtl-sdr
|
||||
|
@ -82,3 +86,41 @@ growing list of radios across several manufacturers and allows transferring of
|
|||
memory contents between them.")
|
||||
(license (list license:gpl3+
|
||||
license:lgpl3+)))) ; chirp/elib_intl.py
|
||||
|
||||
(define-public aptdec
|
||||
(package
|
||||
(name "aptdec")
|
||||
(version "1.7")
|
||||
(source
|
||||
(origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
(url "https://github.com/csete/aptdec")
|
||||
(commit (string-append "v" version))))
|
||||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
(base32
|
||||
"1hf0zb51qc6fyhdjxyij1n3vgwnw3cwksc3r11szbhkml14qjnzk"))))
|
||||
(build-system gnu-build-system)
|
||||
(inputs
|
||||
`(("libpng" ,libpng)
|
||||
("libsndfile" ,libsndfile)))
|
||||
(arguments
|
||||
`(#:make-flags (list "CC=gcc")
|
||||
#:tests? #f ; no tests
|
||||
#:phases
|
||||
(modify-phases %standard-phases
|
||||
(delete 'configure)
|
||||
(replace 'install
|
||||
(lambda* (#:key outputs #:allow-other-keys)
|
||||
(let ((out (assoc-ref outputs "out")))
|
||||
(install-file "atpdec" (string-append out "/bin")))
|
||||
#t)))))
|
||||
(home-page "https://github.com/csete/aptdec")
|
||||
(synopsis "NOAA Automatic Picture Transmission (APT) decoder")
|
||||
(description "Aptdec decodes Automatic Picture Transmission (APT) images.
|
||||
These are medium resolution images of the Earth transmitted by, among other
|
||||
satellites, the POES NOAA weather satellite series. These transmissions are
|
||||
on a frequency of 137 MHz. They can be received using an inexpensive antenna
|
||||
and a dedicated receiver.")
|
||||
(license license:gpl2+)))
|
||||
|
|
|
@ -153,30 +153,6 @@ output file should be identical to the corresponding @code{golden} file, which
|
|||
contains the correct result for the test.")
|
||||
(license license:expat)))
|
||||
|
||||
;; This package builds `clock` without tests, since the tests rely on tasty
|
||||
;; and tasty-quickcheck, which in turn require clock to build.
|
||||
(define ghc-clock-bootstrap
|
||||
(package
|
||||
(name "ghc-clock-bootstrap")
|
||||
(version "0.5.1")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (string-append
|
||||
"https://hackage.haskell.org/package/"
|
||||
"clock/"
|
||||
"clock-" version ".tar.gz"))
|
||||
(sha256
|
||||
(base32 "1ncph7vi2q6ywwc8ysxl1ibw6i5dwfvln88ssfazk8jgpj4iyykw"))))
|
||||
(build-system haskell-build-system)
|
||||
(arguments `(#:tests? #f)) ;; Testing suite depends on tasty and
|
||||
;; tasty-quickcheck, which need clock to build.
|
||||
(home-page "https://hackage.haskell.org/package/clock")
|
||||
(synopsis "High-resolution clock for Haskell")
|
||||
(description "A package for convenient access to high-resolution clock and
|
||||
timer functions of different operating systems via a unified API.")
|
||||
(license license:bsd-3)))
|
||||
|
||||
(define-public ghc-tasty
|
||||
(package
|
||||
(name "ghc-tasty")
|
||||
|
|
|
@ -4795,6 +4795,16 @@ unbounded @code{Integer} type.")
|
|||
timer functions of different operating systems via a unified API.")
|
||||
(license license:bsd-3)))
|
||||
|
||||
;; This package builds `clock` without tests, since the tests rely on tasty
|
||||
;; and tasty-quickcheck, which in turn require clock to build.
|
||||
(define-public ghc-clock-bootstrap
|
||||
(package
|
||||
(inherit ghc-clock)
|
||||
(name "ghc-clock-bootstrap")
|
||||
(arguments '(#:tests? #f))
|
||||
(inputs '())
|
||||
(properties '((hidden? #t)))))
|
||||
|
||||
(define-public ghc-charset
|
||||
(package
|
||||
(name "ghc-charset")
|
||||
|
|
|
@ -14,7 +14,7 @@
|
|||
;;; Copyright © 2016, 2017 Arun Isaac <arunisaac@systemreboot.net>
|
||||
;;; Copyright © 2016, 2017 Kei Kebreau <kkebreau@posteo.net>
|
||||
;;; Copyright © 2017 ng0 <ng0@n0.is>
|
||||
;;; Copyright © 2017 Hartmut Goebel <h.goebel@crazy-compilers.com>
|
||||
;;; Copyright © 2017,2019 Hartmut Goebel <h.goebel@crazy-compilers.com>
|
||||
;;; Copyright © 2017 Julien Lepiller <julien@lepiller.eu>
|
||||
;;; Copyright © 2018 Joshua Sierles, Nextjournal <joshua@nextjournal.com>
|
||||
;;; Copyright © 2018 Fis Trivial <ybbs.daans@hotmail.com>
|
||||
|
@ -295,6 +295,74 @@ files. It can compress them as much as 40% losslessly.")
|
|||
Currently all documentation resides in @file{pnglite.h}.")
|
||||
(license license:zlib))))
|
||||
|
||||
(define-public libimagequant
|
||||
(package
|
||||
(name "libimagequant")
|
||||
(version "2.12.3")
|
||||
(source
|
||||
(origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
(url "https://github.com/ImageOptim/libimagequant.git")
|
||||
(commit version)))
|
||||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
(base32 "0qsfq1kv1m5jzn9v9iz0bac66k4clcis1c9877qabnwzwmwma5v0"))))
|
||||
(build-system gnu-build-system)
|
||||
(arguments
|
||||
'(#:tests? #f)) ; no check target
|
||||
(home-page "https://pngquant.org/lib/")
|
||||
(synopsis "Image palette quantization library")
|
||||
(description "libimagequant is a small, portable C library for
|
||||
high-quality conversion of RGBA images to 8-bit indexed-color (palette)
|
||||
images. This library can significantly reduces file sizes and powers pngquant
|
||||
and other PNG optimizers.")
|
||||
(license license:gpl3+)))
|
||||
|
||||
(define-public pngquant
|
||||
(package
|
||||
(name "pngquant")
|
||||
(version "2.12.3")
|
||||
(source
|
||||
(origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
(url "https://github.com/kornelski/pngquant.git")
|
||||
(commit version)))
|
||||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
(base32 "1yiwbcihn4311fpfd568gg8zmmhqwg80jmhbhkb5msiipgd9xv33"))))
|
||||
(build-system gnu-build-system)
|
||||
(arguments
|
||||
`(#:test-target "test"
|
||||
#:configure-flags
|
||||
'("--with-openmp" "--with-lcms2")))
|
||||
(native-inputs
|
||||
`(("pkg-config" ,pkg-config)))
|
||||
(inputs
|
||||
`(("libpng" ,libpng)
|
||||
("zlib" , zlib)
|
||||
("lcms" ,lcms)
|
||||
("libimagequant" ,libimagequant)))
|
||||
(home-page "https://pngquant.org/")
|
||||
(synopsis "Utility and library for lossy compressing PNG images")
|
||||
(description "pngquant is a PNG compressor that significantly reduces file
|
||||
sizes by converting images to a more efficient 8-bit PNG format with alpha
|
||||
channel (often 60-80% smaller than 24/32-bit PNG files). Compressed images
|
||||
are fully standards-compliant and are supported by all web browsers and
|
||||
operating systems.
|
||||
|
||||
Features:
|
||||
@enumerate
|
||||
@item High-quality palette generation using a combination of vector
|
||||
quantization algorithms.
|
||||
@item Unique adaptive dithering algorithm that adds less noise to images
|
||||
than the standard Floyd-Steinberg.
|
||||
@item Easy to integrate with shell scripts, GUIs and server-side software.
|
||||
@item Fast mode for real-time processing/large numbers of images.
|
||||
@end enumerate")
|
||||
(license license:gpl3+)))
|
||||
|
||||
(define-public libjpeg
|
||||
(package
|
||||
(name "libjpeg")
|
||||
|
|
|
@ -35,6 +35,7 @@
|
|||
;;; Copyright © 2019 Tim Gesthuizen <tim.gesthuizen@yahoo.de>
|
||||
;;; Copyright © 2019 Maxim Cournoyer <maxim.cournoyer@gmail.com>
|
||||
;;; Copyright © 2019 Stefan Stefanović <stefanx2ovic@gmail.com>
|
||||
;;; Copyright © 2019 Pierre Langlois <pierre.langlois@gmx.com>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
|
@ -104,7 +105,6 @@
|
|||
#:use-module (gnu packages samba)
|
||||
#:use-module (gnu packages serialization)
|
||||
#:use-module (gnu packages slang)
|
||||
#:use-module (gnu packages storage)
|
||||
#:use-module (gnu packages texinfo)
|
||||
#:use-module (gnu packages tls)
|
||||
#:use-module (gnu packages valgrind)
|
||||
|
@ -421,26 +421,26 @@ for ARCH and optionally VARIANT, or #f if there is no such configuration."
|
|||
It has been modified to remove all non-free binary blobs.")
|
||||
(license license:gpl2)))
|
||||
|
||||
(define %linux-libre-version "5.1.17")
|
||||
(define %linux-libre-hash "049mij4z1iilrggw6plfdpcj1lnc1vqz5z445ix9677cq1fmiwlh")
|
||||
(define %linux-libre-version "5.2.1")
|
||||
(define %linux-libre-hash "1qj3zsjynz45p97n6sngdbh4xfd1jks3hbn85nmhzds6sxgg4c54")
|
||||
|
||||
(define %linux-libre-5.1-patches
|
||||
(define %linux-libre-5.2-patches
|
||||
(list %boot-logo-patch
|
||||
%linux-libre-arm-export-__sync_icache_dcache-patch))
|
||||
|
||||
(define-public linux-libre-5.1
|
||||
(define-public linux-libre-5.2
|
||||
(make-linux-libre %linux-libre-version
|
||||
%linux-libre-hash
|
||||
'("x86_64-linux" "i686-linux" "armhf-linux" "aarch64-linux")
|
||||
#:patches %linux-libre-5.1-patches
|
||||
#:patches %linux-libre-5.2-patches
|
||||
#:configuration-file kernel-config))
|
||||
|
||||
(define-public linux-libre-headers-5.1
|
||||
(define-public linux-libre-headers-5.2
|
||||
(make-linux-libre-headers %linux-libre-version
|
||||
%linux-libre-hash))
|
||||
|
||||
(define %linux-libre-4.19-version "4.19.58")
|
||||
(define %linux-libre-4.19-hash "0i2mh0zk1h1niba1bpd49bn938sdn3qrwzkqpqzimxnj31xcjhyz")
|
||||
(define %linux-libre-4.19-version "4.19.59")
|
||||
(define %linux-libre-4.19-hash "1c9qfw1mnz68ki48kg1brmv47wmsdvq41ip6202rlnmwgncj5yrw")
|
||||
|
||||
(define %linux-libre-4.19-patches
|
||||
(list %boot-logo-patch
|
||||
|
@ -492,7 +492,7 @@ It has been modified to remove all non-free binary blobs.")
|
|||
(make-linux-libre %linux-libre-version
|
||||
%linux-libre-hash
|
||||
'("armhf-linux")
|
||||
#:patches %linux-libre-5.1-patches
|
||||
#:patches %linux-libre-5.2-patches
|
||||
#:configuration-file kernel-config-veyron
|
||||
#:extra-version "arm-veyron"))
|
||||
|
||||
|
@ -501,13 +501,13 @@ It has been modified to remove all non-free binary blobs.")
|
|||
"1zqiic55viy065lhnkmhn33sz3bbbr2ykbm5f92yzd8lpc9zl7yx"))
|
||||
|
||||
(define-public linux-libre-headers linux-libre-headers-4.19.56)
|
||||
(define-public linux-libre linux-libre-5.1)
|
||||
(define-public linux-libre linux-libre-5.2)
|
||||
|
||||
(define-public linux-libre-arm-generic
|
||||
(make-linux-libre %linux-libre-version
|
||||
%linux-libre-hash
|
||||
'("armhf-linux")
|
||||
#:patches %linux-libre-5.1-patches
|
||||
#:patches %linux-libre-5.2-patches
|
||||
#:defconfig "multi_v7_defconfig"
|
||||
#:extra-version "arm-generic"))
|
||||
|
||||
|
@ -530,7 +530,7 @@ It has been modified to remove all non-free binary blobs.")
|
|||
(make-linux-libre %linux-libre-version
|
||||
%linux-libre-hash
|
||||
'("armhf-linux")
|
||||
#:patches %linux-libre-5.1-patches
|
||||
#:patches %linux-libre-5.2-patches
|
||||
#:defconfig "omap2plus_defconfig"
|
||||
#:extra-version "arm-omap2plus"))
|
||||
|
||||
|
@ -3245,7 +3245,7 @@ arrays when needed.")
|
|||
(define-public multipath-tools
|
||||
(package
|
||||
(name "multipath-tools")
|
||||
(version "0.7.9")
|
||||
(version "0.8.2")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "https://git.opensvc.com/?p=multipath-tools/"
|
||||
|
@ -3253,7 +3253,7 @@ arrays when needed.")
|
|||
(file-name (string-append name "-" version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"1jhi6bhl4ih75rfmyyjxd35ghgch5ls1gw40cjxwy9d6bd41z6q1"))
|
||||
"0kb4mhzwyygdbikikmby6hj39pb3nrzv05v526c75wnycwnpxg31"))
|
||||
(modules '((guix build utils)))
|
||||
(snippet
|
||||
'(begin
|
||||
|
@ -3303,8 +3303,7 @@ arrays when needed.")
|
|||
("pkg-config" ,pkg-config)
|
||||
("valgrind" ,valgrind)))
|
||||
(inputs
|
||||
`(("ceph:lib" ,ceph "lib")
|
||||
("json-c" ,json-c)
|
||||
`(("json-c" ,json-c)
|
||||
("libaio" ,libaio)
|
||||
("liburcu" ,liburcu)
|
||||
("lvm2" ,lvm2)
|
||||
|
|
|
@ -1149,15 +1149,14 @@ which can add many functionalities to the base client.")
|
|||
(define-public msmtp
|
||||
(package
|
||||
(name "msmtp")
|
||||
(version "1.8.4")
|
||||
(version "1.8.5")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "https://marlam.de/msmtp/releases/"
|
||||
"/msmtp-" version ".tar.xz"))
|
||||
(sha256
|
||||
(base32
|
||||
"1xr926lyy44baqdgv9q0sw5z6ll2cb4lx2g4lgpgbqn8bglpzpg5"))))
|
||||
(base32 "0fczpfxlr62wkr7bwhp24clxg962k5khgz14h818qyy4v77dl4qn"))))
|
||||
(build-system gnu-build-system)
|
||||
(inputs
|
||||
`(("libsecret" ,libsecret)
|
||||
|
@ -1949,14 +1948,14 @@ converts them to maildir format directories.")
|
|||
(define-public mpop
|
||||
(package
|
||||
(name "mpop")
|
||||
(version "1.4.4")
|
||||
(version "1.4.5")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "https://marlam.de/mpop/releases/"
|
||||
"mpop-" version ".tar.xz"))
|
||||
(sha256
|
||||
(base32 "0j21cp8bw12vgfymxi3i4av3j97lrcyb5y9xa3mb59wr17izz73x"))))
|
||||
(base32 "1m6743j8g777lijvxqw2wz6pv2g5a9wlh6zq7awk0hvd44xp4sav"))))
|
||||
(build-system gnu-build-system)
|
||||
(inputs
|
||||
`(("gnutls" ,gnutls)
|
||||
|
|
|
@ -15,7 +15,7 @@
|
|||
;;; Copyright © 2016, 2017, 2018, 2019 Ludovic Courtès <ludo@gnu.org>
|
||||
;;; Copyright © 2016 Leo Famulari <leo@famulari.name>
|
||||
;;; Copyright © 2016, 2017 Thomas Danckaert <post@thomasdanckaert.be>
|
||||
;;; Copyright © 2017, 2018 Paul Garlick <pgarlick@tourbillion-technology.com>
|
||||
;;; Copyright © 2017, 2018, 2019 Paul Garlick <pgarlick@tourbillion-technology.com>
|
||||
;;; Copyright © 2017 ng0 <ng0@n0.is>
|
||||
;;; Copyright © 2017 Ben Woodcroft <donttrustben@gmail.com>
|
||||
;;; Copyright © 2017 Theodoros Foradis <theodoros@foradis.org>
|
||||
|
@ -1618,6 +1618,98 @@ Open CASCADE library.")
|
|||
license:expat; file src/OpenGl/OpenGl_glext.h
|
||||
license:bsd-3)))); test framework gtest
|
||||
|
||||
(define-public opencascade-occt
|
||||
(package
|
||||
(name "opencascade-occt")
|
||||
(version "7.3.0p3")
|
||||
(source
|
||||
(origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
(url "https://git.dev.opencascade.org/repos/occt.git")
|
||||
(commit
|
||||
(string-append "V"
|
||||
(string-map (lambda (x) (if (eq? x #\.) #\_ x))
|
||||
version)))))
|
||||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
(base32 "0bdywwxb6mk0ykbiajlvsb37295akqjp0a60y672qjfa67k0ljv4"))
|
||||
(modules '((guix build utils)))
|
||||
(snippet
|
||||
'(begin
|
||||
;; Remove files specific to non-free operating systems.
|
||||
(delete-file-recursively "samples/ios")
|
||||
(delete-file-recursively "samples/mfc")
|
||||
(delete-file-recursively "samples/qt/FuncDemo")
|
||||
(delete-file "genconf.bat")
|
||||
(delete-file "gendoc.bat")
|
||||
(delete-file "genproj.bat")
|
||||
(delete-file "upgrade.bat")
|
||||
;; Remove references to deleted files.
|
||||
(substitute* "dox/FILES_HTML.txt"
|
||||
((".*standard.*") "" )
|
||||
((".*UIKitSample.*") ""))
|
||||
#t))))
|
||||
(build-system cmake-build-system)
|
||||
(arguments
|
||||
'(;; There is no test target for make. OCCT provides an
|
||||
;; 'Automated Testing System', which may be accessed after
|
||||
;; installation via the draw.sh script. draw.sh is located in
|
||||
;; the bin directory. For details see:
|
||||
;; https://www.opencascade.com/doc/occt-7.3.0/overview/html/\
|
||||
;; occt_dev_guides__tests.html
|
||||
#:tests? #f
|
||||
;; Configure without freeimage: attempting to link against the
|
||||
;; freeimage version 3.17 library leads to 'undefined
|
||||
;; reference' errors.
|
||||
#:configure-flags
|
||||
(list "-DUSE_FREEIMAGE:BOOL=OFF"
|
||||
"-DUSE_TBB:BOOL=ON"
|
||||
"-DUSE_VTK:BOOL=OFF"
|
||||
"-DBUILD_DOC_Overview:BOOL=OFF"
|
||||
"-DCMAKE_EXPORT_NO_PACKAGE_REGISTRY=ON"
|
||||
"-DCMAKE_FIND_PACKAGE_NO_PACKAGE_REGISTRY=ON"
|
||||
"-UCMAKE_INSTALL_LIBDIR")))
|
||||
(inputs
|
||||
`(("doxygen" ,doxygen)
|
||||
;("freeimage" ,freeimage)
|
||||
("freetype" ,freetype)
|
||||
("glu" ,glu)
|
||||
("libxext" ,libxext)
|
||||
("libxi" ,libxi)
|
||||
("libxmu" ,libxmu)
|
||||
("mesa" ,mesa)
|
||||
("tbb" ,tbb)
|
||||
("tcl" ,tcl)
|
||||
("tk" ,tk)))
|
||||
;; TODO: build Overview documentation and add 'doc' output.
|
||||
(home-page "https://www.opencascade.com")
|
||||
(synopsis "Libraries for 3D modeling and numerical simulation")
|
||||
(description
|
||||
"Open CASCADE is a set of libraries for the development of applications
|
||||
dealing with 3D CAD data or requiring industrial 3D capabilities. It includes
|
||||
C++ class libraries providing services for 3D surface and solid modeling, CAD
|
||||
data exchange, and visualization. It is used for development of specialized
|
||||
software dealing with 3D models in design (CAD), manufacturing (CAM),
|
||||
numerical simulation (CAE), measurement equipment (CMM), and quality
|
||||
control (CAQ) domains.
|
||||
|
||||
This is the certified version of the Open Cascade Technology (OCCT) library.")
|
||||
(license (list ;; OCCT library:
|
||||
license:lgpl2.1; with an exception for the use of header
|
||||
; files, see OCCT_LGPL_EXCEPTION.txt.
|
||||
;; Files src/OpenGl/glext.h, adm/cmake/cotire.cmake and
|
||||
;; src/OpenGl/OpenGl_HaltonSampler.hxx:
|
||||
license:expat
|
||||
;; Files src/ExprIntrp/ExprIntrp.tab.* and
|
||||
;; src/StepFile/step.tab.*:
|
||||
license:gpl3+ ; with Bison 2.2 exception.
|
||||
;; File src/NCollection/NCollection_UtfIterator.lxx:
|
||||
(license:non-copyleft
|
||||
"https://www.unicode.org/license.html")
|
||||
;; File src/NCollection/NCollection_StdAllocator.hxx:
|
||||
license:public-domain))))
|
||||
|
||||
(define-public gmsh
|
||||
(package
|
||||
(name "gmsh")
|
||||
|
|
|
@ -1855,7 +1855,7 @@ messaging that aren’t available to clients that connect over XMPP.")
|
|||
(define-public telegram-purple
|
||||
(package
|
||||
(name "telegram-purple")
|
||||
(version "1.3.1")
|
||||
(version "1.4.1")
|
||||
(home-page "https://github.com/majn/telegram-purple")
|
||||
(source (origin
|
||||
(method git-fetch)
|
||||
|
@ -1865,7 +1865,7 @@ messaging that aren’t available to clients that connect over XMPP.")
|
|||
(recursive? #t)))
|
||||
(sha256
|
||||
(base32
|
||||
"0p93jpjpx7hszwffzgixw04zkrpsiyzz4za3gfr4j07krc4771fp"))
|
||||
"0xlmqnlp2dqkgsq052d6dwgvqbwch2w0dnwpjslk5na4ih3lfr7k"))
|
||||
(modules '((guix build utils)))
|
||||
(snippet
|
||||
'(begin
|
||||
|
|
|
@ -352,6 +352,7 @@ playing your music.")
|
|||
(inputs
|
||||
`(("alsa-lib" ,alsa-lib)
|
||||
("ao" ,ao)
|
||||
("faad2" ,faad2)
|
||||
("ffmpeg" ,ffmpeg)
|
||||
("flac" ,flac)
|
||||
("jack" ,jack-1)
|
||||
|
|
|
@ -1440,7 +1440,7 @@ gone wild and are suddenly taking up your bandwidth.")
|
|||
(define-public nzbget
|
||||
(package
|
||||
(name "nzbget")
|
||||
(version "20.0")
|
||||
(version "21.0")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
|
@ -1449,7 +1449,7 @@ gone wild and are suddenly taking up your bandwidth.")
|
|||
(file-name (string-append name "-" version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"0q93aqqyzccn5r9sny38499rmg846qdh9pi2v5kvf9m23v54yk60"))
|
||||
"0l3dzxz7d7jf6cyach41zirvsx1x0vs4nh053c0miycv7zjyrly7"))
|
||||
(modules '((guix build utils)))
|
||||
(snippet
|
||||
;; Reported upstream as <https://github.com/nzbget/nzbget/pull/414>.
|
||||
|
|
|
@ -0,0 +1,51 @@
|
|||
From d3026a6d331298003ccc6cd9d2e20dcb7fa9ae1d Mon Sep 17 00:00:00 2001
|
||||
From: =?UTF-8?q?Tom=C3=A1=C5=A1=20=C4=8Cech?= <sleep_walker@gnu.org>
|
||||
Date: Wed, 3 Jul 2019 13:31:54 +0200
|
||||
Subject: [PATCH] respect NM_VPN_PLUGIN_DIR
|
||||
|
||||
---
|
||||
src/vpn/nm-vpn-manager.c | 14 ++++++++++++++
|
||||
1 file changed, 14 insertions(+)
|
||||
|
||||
diff --git a/src/vpn/nm-vpn-manager.c b/src/vpn/nm-vpn-manager.c
|
||||
index d063916..d779166 100644
|
||||
--- a/src/vpn/nm-vpn-manager.c
|
||||
+++ b/src/vpn/nm-vpn-manager.c
|
||||
@@ -223,6 +223,7 @@ nm_vpn_manager_init (NMVpnManager *self)
|
||||
GSList *infos, *info;
|
||||
const char *conf_dir_etc = _nm_vpn_plugin_info_get_default_dir_etc ();
|
||||
const char *conf_dir_lib = _nm_vpn_plugin_info_get_default_dir_lib ();
|
||||
+ const char *conf_dir_user = _nm_vpn_plugin_info_get_default_dir_user ();
|
||||
|
||||
/* Watch the VPN directory for changes */
|
||||
file = g_file_new_for_path (conf_dir_lib);
|
||||
@@ -241,6 +242,14 @@ nm_vpn_manager_init (NMVpnManager *self)
|
||||
G_CALLBACK (vpn_dir_changed), self);
|
||||
}
|
||||
|
||||
+ file = g_file_new_for_path (conf_dir_user);
|
||||
+ priv->monitor_etc = g_file_monitor_directory (file, G_FILE_MONITOR_NONE, NULL, NULL);
|
||||
+ g_object_unref (file);
|
||||
+ if (priv->monitor_etc) {
|
||||
+ priv->monitor_id_etc = g_signal_connect (priv->monitor_etc, "changed",
|
||||
+ G_CALLBACK (vpn_dir_changed), self);
|
||||
+ }
|
||||
+
|
||||
/* first read conf_dir_lib. The name files are not really user configuration, but
|
||||
* plugin configuration. Hence we expect ~newer~ plugins to install their files
|
||||
* in /usr/lib/NetworkManager. We want to prefer those files.
|
||||
@@ -255,6 +264,11 @@ nm_vpn_manager_init (NMVpnManager *self)
|
||||
try_add_plugin (self, info->data);
|
||||
g_slist_free_full (infos, g_object_unref);
|
||||
|
||||
+ infos = _nm_vpn_plugin_info_list_load_dir (conf_dir_user, TRUE, 0, NULL, NULL);
|
||||
+ for (info = infos; info; info = info->next)
|
||||
+ try_add_plugin (self, info->data);
|
||||
+ g_slist_free_full (infos, g_object_unref);
|
||||
+
|
||||
priv->active_services = g_hash_table_new_full (nm_str_hash, g_str_equal, g_free, NULL);
|
||||
}
|
||||
|
||||
--
|
||||
2.22.0
|
||||
|
|
@ -75,14 +75,14 @@
|
|||
(define-public python-aiohttp
|
||||
(package
|
||||
(name "python-aiohttp")
|
||||
(version "3.4.4")
|
||||
(version "3.5.4")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (pypi-uri "aiohttp" version))
|
||||
(sha256
|
||||
(base32
|
||||
"1ykm6kdjkrg556j0zd7dx2l1rsrbh0d9g27ivr6dmaahz9pyrbsi"))))
|
||||
"1gy95ni8rkdwzir9zf14ivpfwp02g69xbhibldykff0rzbs86k4w"))))
|
||||
(build-system python-build-system)
|
||||
(arguments
|
||||
`(#:tests? #f)) ;missing pytest-timeout
|
||||
|
@ -154,22 +154,22 @@ using @url{https://github.com/saghul/pycares,pycares}.")
|
|||
(define-public python-aiorpcx
|
||||
(package
|
||||
(name "python-aiorpcx")
|
||||
(version "0.10.2")
|
||||
(version "0.18.3")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (pypi-uri "aiorpcX" version))
|
||||
(sha256
|
||||
(base32
|
||||
"1p88k15jh0d2a18pnnbfcamsqi2bxvmmhpizmdlxfdxf8vy5ggyj"))))
|
||||
"0k545hc7wl6sh1svydzbv6x7sx5pig2pqkl3yxs9riwmvzawx9xp"))))
|
||||
(build-system python-build-system)
|
||||
(propagated-inputs
|
||||
`(("python-attrs" ,python-attrs)))
|
||||
(home-page "https://github.com/kyuupichan/aiorpcX")
|
||||
(synopsis "Generic asyncio RPC implementation")
|
||||
(description
|
||||
"aiorpcX is a generic asyncio library implementation of RPC suitable for
|
||||
an application that is a client, server or both.
|
||||
"The aiorpcX library is a generic asyncio implementation of RPC suitable
|
||||
for an application that is a client, server or both.
|
||||
|
||||
The package includes a module with full coverage of JSON RPC versions 1.0 and
|
||||
2.0, JSON RPC protocol auto-detection, and arbitrary message framing. It also
|
||||
|
@ -1352,6 +1352,22 @@ WebSocket usage in Python programs.")
|
|||
than Python’s urllib2 library.")
|
||||
(license license:asl2.0)))
|
||||
|
||||
;; Some software requires an older version of Requests, notably Docker/Docker
|
||||
;; Compose.
|
||||
(define-public python-requests-2.20
|
||||
(package (inherit python-requests)
|
||||
(version "2.20.1")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (pypi-uri "requests" version))
|
||||
(sha256
|
||||
(base32
|
||||
"0qzj6cgv3k9wyj7wlxgz7xq0cfg4jbbkfm24pp8dnhczwl31527a"))))
|
||||
(propagated-inputs
|
||||
`(("python-urllib3" ,python-urllib3-1.24)
|
||||
("python-idna" ,python-idna-2.7)
|
||||
,@(package-propagated-inputs python-requests)))))
|
||||
|
||||
;; Some software requires an older version of Requests, notably Docker
|
||||
;; Compose.
|
||||
(define-public python-requests-2.7
|
||||
|
@ -1528,6 +1544,18 @@ can reuse the same socket connection for multiple requests, it can POST files,
|
|||
supports url redirection and retries, and also gzip and deflate decoding.")
|
||||
(license license:expat)))
|
||||
|
||||
;; Some software requires an older version of urllib3, notably Docker.
|
||||
(define-public python-urllib3-1.24
|
||||
(package (inherit python-urllib3)
|
||||
(version "1.24.3")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (pypi-uri "urllib3" version))
|
||||
(sha256
|
||||
(base32
|
||||
"1x0slqrv6kixkbcdnxbglvjliwhc1payavxjvk8fvbqjrnasd4r3"))))))
|
||||
|
||||
|
||||
(define-public python2-urllib3
|
||||
(package-with-python2 python-urllib3))
|
||||
|
||||
|
@ -1954,15 +1982,15 @@ provide an easy-to-use Python interface for building OAuth1 and OAuth2 clients."
|
|||
(version "0.11.6")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(method git-fetch)
|
||||
;; Pypi does not have tests.
|
||||
(uri (string-append
|
||||
"https://github.com/ionrock/cachecontrol/archive/v"
|
||||
version ".tar.gz"))
|
||||
(file-name (string-append name "-" version ".tar.gz"))
|
||||
(uri (git-reference
|
||||
(url "https://github.com/ionrock/cachecontrol")
|
||||
(commit (string-append "v" version))))
|
||||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
(base32
|
||||
"0yj60d0f69a2l8p7y86k4zhzzm6rnxpq74sfl240pry9l0lfw2vw"))))
|
||||
"0pb16bzbkk99nh317xyfk8fxc2ngimsbz7lz9pxsw8c82n83d4dh"))))
|
||||
(build-system python-build-system)
|
||||
(arguments
|
||||
`(#:phases
|
||||
|
@ -2163,6 +2191,30 @@ pretty printer and a tree visitor.")
|
|||
"This package provides HTTP basic access authentication for Flask.")
|
||||
(license license:bsd-3)))
|
||||
|
||||
(define-public python-flask-htpasswd
|
||||
(package
|
||||
(name "python-flask-htpasswd")
|
||||
(version "0.3.1")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (pypi-uri "flask-htpasswd" version))
|
||||
(sha256
|
||||
(base32
|
||||
"14q1y1y9i9bhabdnwd25jqzc4ljli23smxfyyh8abxz1vq93pxra"))))
|
||||
(build-system python-build-system)
|
||||
(propagated-inputs
|
||||
`(("python-flask" ,python-flask)
|
||||
("python-itsdangerous" ,python-itsdangerous)
|
||||
("python-passlib" ,python-passlib)
|
||||
("python-tox" ,python-tox)))
|
||||
(home-page "http://github.com/carsongee/flask-htpasswd")
|
||||
(synopsis "Basic authentication via htpasswd files in Flask applications")
|
||||
(description "This package provides Basic authentication via
|
||||
@file{htpasswd} files and access_token authentication in Flask
|
||||
applications.")
|
||||
(license license:bsd-3)))
|
||||
|
||||
(define-public python-flask-sqlalchemy
|
||||
(package
|
||||
(name "python-flask-sqlalchemy")
|
||||
|
|
|
@ -63,6 +63,7 @@
|
|||
;;; Copyright © 2019 Guillaume Le Vaillant <glv@posteo.net>
|
||||
;;; Copyright © 2019 Alex Griffin <a@ajgrf.com>
|
||||
;;; Copyright © 2019 Pierre Langlois <pierre.langlois@gmx.com>
|
||||
;;; Copyright © 2019 Jacob MacDonald <jaccarmac@gmail.com>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
|
@ -3848,22 +3849,11 @@ convert between colorspaces like sRGB, XYZ, CIEL*a*b*, CIECAM02, CAM02-UCS, etc.
|
|||
("python-pillow" ,python-pillow)
|
||||
("python-pytz" ,python-pytz)
|
||||
("python-six" ,python-six)
|
||||
;; The 'gtk+' package (and 'gdk-pixbuf', 'atk' and 'pango' propagated
|
||||
;; from 'gtk+') provides the required 'typelib' files used by
|
||||
;; 'gobject-introspection'. The location of these files is set with the
|
||||
;; help of the environment variable GI_TYPELIB_PATH. At build time this
|
||||
;; is done automatically by a 'native-search-path' procedure. However,
|
||||
;; at run-time the user must set this variable as follows:
|
||||
;;
|
||||
;; export GI_TYPELIB_PATH=~/.guix-profile/lib/girepository-1.0
|
||||
("gtk+" ,gtk+)
|
||||
;; From version 1.4.0 'matplotlib' makes use of 'cairocffi' instead of
|
||||
;; 'pycairo'. However, 'pygobject' makes use of a 'pycairo' 'context'
|
||||
;; object. For this reason we need to import both libraries.
|
||||
;; https://pythonhosted.org/cairocffi/cffi_api.html#converting-pycairo
|
||||
("python-pycairo" ,python-pycairo)
|
||||
;; XXX: qtwebkit cannot be built reliably.
|
||||
("python-pyqt" ,python-pyqt-without-qtwebkit)
|
||||
("python-cairocffi" ,python-cairocffi)))
|
||||
(inputs
|
||||
`(("libpng" ,libpng)
|
||||
|
@ -3884,12 +3874,10 @@ convert between colorspaces like sRGB, XYZ, CIEL*a*b*, CIECAM02, CAM02-UCS, etc.
|
|||
(modify-phases %standard-phases
|
||||
(add-before 'build 'configure-environment
|
||||
(lambda* (#:key outputs inputs #:allow-other-keys)
|
||||
(let ((cairo (assoc-ref inputs "cairo"))
|
||||
(gtk+ (assoc-ref inputs "gtk+")))
|
||||
;; Setting these directories in the 'basedirlist' of 'setup.cfg'
|
||||
(let ((cairo (assoc-ref inputs "cairo")))
|
||||
;; Setting this directory in the 'basedirlist' of 'setup.cfg'
|
||||
;; has not effect.
|
||||
(setenv "LD_LIBRARY_PATH"
|
||||
(string-append cairo "/lib:" gtk+ "/lib"))
|
||||
(setenv "LD_LIBRARY_PATH" (string-append cairo "/lib"))
|
||||
(setenv "HOME" (getcwd))
|
||||
(call-with-output-file "setup.cfg"
|
||||
(lambda (port)
|
||||
|
@ -5209,7 +5197,17 @@ installing @code{kernelspec}s for use with Jupyter frontends.")
|
|||
(lambda _
|
||||
(setenv "HOME" "/tmp")
|
||||
(invoke "pytest" "-v")
|
||||
#t)))))
|
||||
#t))
|
||||
(add-after 'install 'set-python-file-name
|
||||
(lambda* (#:key outputs #:allow-other-keys)
|
||||
;; Record the absolute file name of the 'python' executable in
|
||||
;; 'kernel.json'.
|
||||
(let ((out (assoc-ref outputs "out")))
|
||||
(substitute* (string-append out "/share/jupyter"
|
||||
"/kernels/python3/kernel.json")
|
||||
(("\"python\"")
|
||||
(string-append "\"" (which "python") "\"")))
|
||||
#t))))))
|
||||
(propagated-inputs
|
||||
`(("python-ipython" ,python-ipython)
|
||||
;; imported at runtime during connect
|
||||
|
@ -7228,6 +7226,17 @@ the Python standard library but currently only supports the older 2003
|
|||
specification.")
|
||||
(license license:bsd-4)))
|
||||
|
||||
(define-public python-idna-2.7
|
||||
(package (inherit python-idna)
|
||||
(version "2.7")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (pypi-uri "idna" version))
|
||||
(sha256
|
||||
(base32
|
||||
"05jam7d31767dr12x0rbvvs8lxnpb1mhdb2zdlfxgh83z6k3hjk8"))))))
|
||||
|
||||
|
||||
(define-public python2-idna
|
||||
(package-with-python2 python-idna))
|
||||
|
||||
|
@ -8136,14 +8145,14 @@ the standard library.")
|
|||
(define-public python-texttable
|
||||
(package
|
||||
(name "python-texttable")
|
||||
(version "0.8.7")
|
||||
(version "0.9.1")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (pypi-uri "texttable" version))
|
||||
(sha256
|
||||
(base32
|
||||
"1liiiydgkg37i46a418aw19fyf6z3ds51wdwwpyjbs12x0phhf4a"))))
|
||||
"0yawv64c0zbawwv6zz84whb32fnb2n9jylwjcfsrcdgh7xvl340i"))))
|
||||
(build-system python-build-system)
|
||||
(arguments '(#:tests? #f)) ; no tests
|
||||
(home-page "https://github.com/foutaise/texttable/")
|
||||
|
@ -8527,6 +8536,28 @@ concurrent.futures package from Python 3.2")
|
|||
("python2-pytest" ,python2-pytest)
|
||||
,@(package-native-inputs promise))))))
|
||||
|
||||
(define-public python-progressbar33
|
||||
(package
|
||||
(name "python-progressbar33")
|
||||
(version "2.4")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (pypi-uri "progressbar33" version))
|
||||
(sha256
|
||||
(base32
|
||||
"1zvf6zs5hzrc03p9nfs4p16vhilqikycvv1yk0pxn8s07fdhvzji"))))
|
||||
(build-system python-build-system)
|
||||
(home-page "http://github.com/germangh/python-progressbar")
|
||||
(synopsis "Text progress bar library for Python")
|
||||
(description
|
||||
"This package provides a text progress bar library for Python. This
|
||||
version only differs from the original @code{progressbar} package in that it
|
||||
uses relative package imports instead of absolute imports, which is necessary
|
||||
for the module to work under Python 3.3.")
|
||||
;; Either or both of these licenses may be selected.
|
||||
(license (list license:lgpl2.1+ license:bsd-3))))
|
||||
|
||||
(define-public python-colorama
|
||||
(package
|
||||
(name "python-colorama")
|
||||
|
@ -13086,17 +13117,18 @@ from your Flask project. It is a fork of Flask-Swagger.")
|
|||
(define-public python-swagger-spec-validator
|
||||
(package
|
||||
(name "python-swagger-spec-validator")
|
||||
(version "2.1.0")
|
||||
(version "2.4.3")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (pypi-uri "swagger-spec-validator" version))
|
||||
(sha256
|
||||
(base32
|
||||
"13hkpn2lycwr0468yqhjb3kwszqf7hjwlq61w7vdxq1caz31k4nw"))))
|
||||
"11g627icrsqwazsncwi0sdvprcj6hwaayw5xk3xsj8d97bmrzqjp"))))
|
||||
(build-system python-build-system)
|
||||
(propagated-inputs
|
||||
`(("python-jsonschema" ,python-jsonschema)
|
||||
("python-pyyaml" ,python-pyyaml)
|
||||
("python-six" ,python-six)))
|
||||
(home-page
|
||||
"https://github.com/Yelp/swagger_spec_validator")
|
||||
|
@ -15939,3 +15971,39 @@ Complete support for Berkeley DB Base Replication. Support for RPC.")
|
|||
types for further processing. It is primarily intended for batch jobs and
|
||||
one-off scripts.")
|
||||
(license license:expat)))
|
||||
|
||||
(define-public python-cached-property
|
||||
(package
|
||||
(name "python-cached-property")
|
||||
(version "1.5.1")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (pypi-uri "cached-property" version))
|
||||
(sha256
|
||||
(base32
|
||||
"010m1bl380l2r3vwq24r5v14l6gwvgm9v0mqqjkjss552jgsa5wj"))))
|
||||
(build-system python-build-system)
|
||||
(arguments
|
||||
`(#:phases
|
||||
(modify-phases %standard-phases
|
||||
;; https://github.com/pydanny/cached-property/issues/131
|
||||
;; recent versions of freezegun break one test
|
||||
(add-after 'unpack 'disable-broken-test
|
||||
(lambda _
|
||||
(substitute* "tests/test_cached_property.py"
|
||||
(("def test_threads_ttl_expiry\\(self\\)" m)
|
||||
(string-append "@unittest.skip(\"Disabled by Guix\")\n"
|
||||
" " m)))
|
||||
#t)))))
|
||||
(native-inputs
|
||||
`(("python-freezegun" ,python-freezegun)))
|
||||
(home-page
|
||||
"https://github.com/pydanny/cached-property")
|
||||
(synopsis
|
||||
"Decorator for caching properties in classes")
|
||||
(description
|
||||
"This package provides a decorator which makes caching
|
||||
time-or-computationally-expensive properties quick and easy and works in Python
|
||||
2 or 3.")
|
||||
(license license:bsd-3)))
|
||||
|
|
|
@ -8372,16 +8372,16 @@ Pathname.")
|
|||
(define-public jekyll
|
||||
(package
|
||||
(name "jekyll")
|
||||
(version "3.8.5")
|
||||
(version "3.8.6")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (rubygems-uri "jekyll" version))
|
||||
(sha256
|
||||
(base32
|
||||
"1nn2sc308l2mz0yiall4r90l6vy67qp4sy9zapi73a948nd4a5k3"))))
|
||||
"1ph1jjjl25vmzif7bvxzviq7azjm384pm7ba4k24cah94285bzhz"))))
|
||||
(build-system ruby-build-system)
|
||||
(arguments
|
||||
;; No rakefile, but a test subdirectory
|
||||
;; No rakefile, but a test subdirectory.
|
||||
`(#:tests? #f
|
||||
#:phases
|
||||
(modify-phases %standard-phases
|
||||
|
|
|
@ -26,14 +26,14 @@
|
|||
(define-public rush
|
||||
(package
|
||||
(name "rush")
|
||||
(version "1.9")
|
||||
(version "2.1")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "mirror://gnu/rush/rush-"
|
||||
version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"12x7dyi9vl3lwlv618156nzpi5s0li93wcx2c26h4z7la20yq2yk"))))
|
||||
"17i4mggr3rnfz0xbhqvd86jqva40c535fhlwkb2l4hjcbpg8blcf"))))
|
||||
(build-system gnu-build-system)
|
||||
(home-page "https://www.gnu.org/software/rush/")
|
||||
(synopsis "Restricted user (login) shell")
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
;;; Copyright © 2017 Ben Woodcroft <donttrustben@gmail.com>
|
||||
;;; Copyright © 2017, 2018 Nikolai Merinov <nikolai.merinov@member.fsf.org>
|
||||
;;; Copyright © 2017 Efraim Flashner <efraim@flashner.co.il>
|
||||
;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
|
||||
;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
|
||||
;;; Copyright © 2018 Danny Milosavljevic <dannym+a@scratchpost.org>
|
||||
;;; Copyright © 2019 Ivan Petkov <ivanppetkov@gmail.com>
|
||||
;;;
|
||||
|
@ -1047,7 +1047,7 @@ jemalloc = \"" jemalloc "/lib/libjemalloc_pic.a" "\"
|
|||
(delete-file-recursively "vendor/jemalloc-sys/jemalloc")
|
||||
#t)))))))
|
||||
|
||||
(define-public rust
|
||||
(define-public rust-1.35
|
||||
(let ((base-rust
|
||||
(rust-bootstrapped-package rust-1.34 "1.35.0"
|
||||
"0bbizy6b7002v1rdhrxrf5gijclbyizdhkglhp81ib3bf5x66kas")))
|
||||
|
@ -1069,3 +1069,15 @@ jemalloc = \"" jemalloc "/lib/libjemalloc_pic.a" "\"
|
|||
(substitute* "src/tools/tidy/src/main.rs"
|
||||
(("bins::check") "//bins::check"))
|
||||
#t)))))))))
|
||||
|
||||
(define-public rust
|
||||
(let ((base-rust
|
||||
(rust-bootstrapped-package rust-1.35 "1.36.0"
|
||||
"06xv2p6zq03lidr0yaf029ii8wnjjqa894nkmrm6s0rx47by9i04")))
|
||||
(package
|
||||
(inherit base-rust)
|
||||
(arguments
|
||||
(substitute-keyword-arguments (package-arguments base-rust)
|
||||
((#:phases phases)
|
||||
`(modify-phases ,phases
|
||||
(delete 'patch-process-docs-rev-cmd))))))))
|
||||
|
|
|
@ -57,6 +57,7 @@
|
|||
#:use-module (gnu packages icu4c)
|
||||
#:use-module (gnu packages image)
|
||||
#:use-module (gnu packages java)
|
||||
#:use-module (gnu packages libffi)
|
||||
#:use-module (gnu packages machine-learning)
|
||||
#:use-module (gnu packages maths)
|
||||
#:use-module (gnu packages multiprecision)
|
||||
|
@ -5765,16 +5766,23 @@ as a boxplot function.")
|
|||
(license license:lgpl3+)))
|
||||
|
||||
(define-public python-rpy2
|
||||
;; We need to take this changeset instead of the RELEASE_3_0_4 tag, because
|
||||
;; it fixes a regression when using ggplot 3.2.0.
|
||||
(let ((changeset "19868a8")
|
||||
(revision "1"))
|
||||
(package
|
||||
(name "python-rpy2")
|
||||
(version "2.9.4")
|
||||
(version (git-version "3.0.4" revision changeset))
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (pypi-uri "rpy2" version))
|
||||
(method hg-fetch)
|
||||
(uri (hg-reference
|
||||
(url "https://bitbucket.org/rpy2/rpy2")
|
||||
(changeset changeset)))
|
||||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
(base32
|
||||
"0bl1d2qhavmlrvalir9hmkjh74w21vzkvc2sg3cbb162s10zfmxy"))))
|
||||
"1bb0wslcbj3wjvyk3jb9yyzdi6adfqh5vfgcvn22dyzxzbhcs8kk"))))
|
||||
(build-system python-build-system)
|
||||
(arguments
|
||||
'(#:modules ((ice-9 ftw)
|
||||
|
@ -5787,17 +5795,23 @@ as a boxplot function.")
|
|||
(replace 'check
|
||||
(lambda* (#:key outputs inputs #:allow-other-keys)
|
||||
(let ((cwd (getcwd)))
|
||||
(setenv "TZ" "UTC")
|
||||
(setenv "PYTHONPATH"
|
||||
(string-append cwd "/build/"
|
||||
(find (cut string-prefix? "lib" <>)
|
||||
(scandir (string-append cwd "/build")))
|
||||
":"
|
||||
(getenv "PYTHONPATH"))))
|
||||
(invoke "python" "-m" "rpy2.tests" "-v"))))))
|
||||
(invoke "pytest" "-v" "rpy/tests/"))))))
|
||||
(propagated-inputs
|
||||
`(("python-six" ,python-six)
|
||||
`(("python-cffi" ,python-cffi)
|
||||
("python-six" ,python-six)
|
||||
("python-jinja2" ,python-jinja2)
|
||||
("python-pytz" ,python-pytz)))
|
||||
("python-numpy" ,python-numpy)
|
||||
("python-pandas" ,python-pandas)
|
||||
("python-pytz" ,python-pytz)
|
||||
("python-ipython" ,python-ipython)
|
||||
("python-tzlocal" ,python-tzlocal)))
|
||||
(inputs
|
||||
`(("readline" ,readline)
|
||||
("icu4c" ,icu4c)
|
||||
|
@ -5810,7 +5824,8 @@ as a boxplot function.")
|
|||
("r-dbplyr" ,r-dbplyr)
|
||||
("python-numpy" ,python-numpy)))
|
||||
(native-inputs
|
||||
`(("zlib" ,zlib)))
|
||||
`(("zlib" ,zlib)
|
||||
("python-pytest" ,python-pytest)))
|
||||
(home-page "https://rpy2.bitbucket.io/")
|
||||
(synopsis "Python interface to the R language")
|
||||
(description "rpy2 is a redesign and rewrite of rpy. It is providing a
|
||||
|
@ -5820,7 +5835,7 @@ functions.")
|
|||
;; Any of these licenses can be picked for the R interface. The whole
|
||||
;; project is released under GPLv2+ according to the license declaration
|
||||
;; in "setup.py".
|
||||
(license (list license:mpl2.0 license:gpl2+ license:lgpl2.1+))))
|
||||
(license (list license:mpl2.0 license:gpl2+ license:lgpl2.1+)))))
|
||||
|
||||
(define-public java-jdistlib
|
||||
(package
|
||||
|
|
|
@ -503,13 +503,13 @@ netcat implementation that supports TLS.")
|
|||
(package
|
||||
(name "python-acme")
|
||||
;; Remember to update the hash of certbot when updating python-acme.
|
||||
(version "0.34.2")
|
||||
(version "0.35.1")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (pypi-uri "acme" version))
|
||||
(sha256
|
||||
(base32
|
||||
"0anwc102fmlva6x2k1bxrgdb7mi1jy9wgrqjzvk2nam8pky0snxx"))))
|
||||
"08y4ankn0di34c9d1c3pqd9by9n0ckzz7b5ld1g0fx6c32sbi259"))))
|
||||
(build-system python-build-system)
|
||||
(arguments
|
||||
`(#:phases
|
||||
|
@ -560,7 +560,7 @@ netcat implementation that supports TLS.")
|
|||
(uri (pypi-uri name version))
|
||||
(sha256
|
||||
(base32
|
||||
"1fy91rnq4wwblp5gi2qb2c3xk6j2w1maf5f52228pk8cn7f2swrh"))))
|
||||
"0q0855qvsvs4mgglss5iim7f1p22rv4rn1n6j731vv869v0yrs6p"))))
|
||||
(build-system python-build-system)
|
||||
(arguments
|
||||
`(,@(substitute-keyword-arguments (package-arguments python-acme)
|
||||
|
|
|
@ -3,6 +3,7 @@
|
|||
;;; Copyright © 2015 Federico Beffa <beffa@fbengineering.ch>
|
||||
;;; Copyright © 2016, 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr>
|
||||
;;; Copyright © 2018 Theodoros Foradis <theodoros@foradis.org>
|
||||
;;; Copyright © 2019 Jens Mølgaard <jens@zete.tk>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
|
@ -21,13 +22,22 @@
|
|||
|
||||
(define-module (gnu packages upnp)
|
||||
#:use-module (gnu packages)
|
||||
#:use-module (gnu packages gettext)
|
||||
#:use-module (gnu packages autotools)
|
||||
#:use-module (gnu packages video)
|
||||
#:use-module (gnu packages photo)
|
||||
#:use-module (gnu packages image)
|
||||
#:use-module (gnu packages mp3)
|
||||
#:use-module (gnu packages xiph)
|
||||
#:use-module (gnu packages sqlite)
|
||||
#:use-module (gnu packages python)
|
||||
#:use-module (guix build-system gnu)
|
||||
#:use-module (guix utils)
|
||||
#:use-module (guix download)
|
||||
#:use-module (guix git-download)
|
||||
#:use-module (guix licenses)
|
||||
#:use-module (guix packages))
|
||||
#:use-module (guix packages)
|
||||
#:use-module (ice-9 match))
|
||||
|
||||
(define-public miniupnpc
|
||||
(package
|
||||
|
@ -150,3 +160,42 @@ compliant with Version 1.0 of the Universal Plug and Play Device Architecture
|
|||
Specification and support several operating systems like Linux, *BSD, Solaris
|
||||
and others.")
|
||||
(license bsd-3)))
|
||||
|
||||
(define-public readymedia
|
||||
(package
|
||||
(name "readymedia")
|
||||
(version "1.2.1")
|
||||
(source
|
||||
(origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
(url "https://git.code.sf.net/p/minidlna/git")
|
||||
(commit (string-append
|
||||
"v"
|
||||
(string-map (match-lambda
|
||||
(#\. #\_)
|
||||
(chr chr))
|
||||
version)))))
|
||||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
(base32
|
||||
"160915yv38k0p5zmyncs12kkbbcd8m8fk9jq70fkfd5x6dz40xm4"))))
|
||||
(build-system gnu-build-system)
|
||||
(native-inputs
|
||||
`(("automake" ,automake)
|
||||
("autoconf" ,autoconf)
|
||||
("gettext" ,gettext-minimal)))
|
||||
(inputs
|
||||
`(("libexif" ,libexif)
|
||||
("libjpeg" ,libjpeg)
|
||||
("libid3tag" ,libid3tag)
|
||||
("flac" ,flac)
|
||||
("libvorbis" ,libvorbis)
|
||||
("sqlite" ,sqlite)
|
||||
("ffmpeg" ,ffmpeg)))
|
||||
(home-page "https://sourceforge.net/projects/minidlna/")
|
||||
(synopsis "DLNA/UPnP-AV media server")
|
||||
(description "ReadyMedia (formerly known as MiniDLNA) is a simple media
|
||||
server, which serves multimedia content to compatible clients on the network.
|
||||
It aims to be fully compliant with DLNA and UPnP-AV standards.")
|
||||
(license gpl2)))
|
||||
|
|
|
@ -1223,14 +1223,14 @@ control to Git repositories.")
|
|||
(define-public mercurial
|
||||
(package
|
||||
(name "mercurial")
|
||||
(version "5.0.1")
|
||||
(version "5.0.2")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "https://www.mercurial-scm.org/"
|
||||
"release/mercurial-" version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"1kk27radafw2q18khg9mk52vny3bmki5wf7pbsmgx5amrpjai62c"))))
|
||||
"1y60hfc8gh4ha9sw650qs7hndqmvbn0qxpmqwpn4q18z5xwm1f19"))))
|
||||
(build-system python-build-system)
|
||||
(arguments
|
||||
`(;; Restrict to Python 2, as Python 3 would require
|
||||
|
|
|
@ -1236,7 +1236,7 @@ modules for building a Wayland compositor.")
|
|||
(define-public swayidle
|
||||
(package
|
||||
(name "swayidle")
|
||||
(version "1.3")
|
||||
(version "1.5")
|
||||
(source
|
||||
(origin
|
||||
(method git-fetch)
|
||||
|
@ -1245,7 +1245,7 @@ modules for building a Wayland compositor.")
|
|||
(commit version)))
|
||||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
(base32 "04agcbhc473jkk7npb40i94ny8naykxzpjcw2lvl05kxv65y5d9v"))))
|
||||
(base32 "05qi96j58xqxjiighay1d39rfanxcpn6vlynj23mb5dymxvlaq9n"))))
|
||||
(build-system meson-build-system)
|
||||
(arguments
|
||||
`(#:configure-flags '("-Dlogind-provider=elogind")))
|
||||
|
|
|
@ -1989,17 +1989,14 @@ server.")
|
|||
(define-public xauth
|
||||
(package
|
||||
(name "xauth")
|
||||
(version "1.0.10")
|
||||
(version "1.1")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (string-append
|
||||
"mirror://xorg/individual/app/xauth-"
|
||||
version
|
||||
(uri (string-append "mirror://xorg/individual/app/xauth-" version
|
||||
".tar.bz2"))
|
||||
(sha256
|
||||
(base32
|
||||
"0kgwz9rmxjfdvi2syf8g0ms5rr5cgyqx4n0n1m960kyz7k745zjs"))))
|
||||
(base32 "032klzzw8r09z36x1272ssd79bcisz8j5p8gbdy111fiknvx27bd"))))
|
||||
(build-system gnu-build-system)
|
||||
(inputs
|
||||
`(("libxmu" ,libxmu)
|
||||
|
@ -6186,13 +6183,14 @@ and embedded platforms.")
|
|||
(inherit uim)
|
||||
(name "uim-qt")
|
||||
(inputs
|
||||
`(("qt" ,qt-4)
|
||||
`(("qt" ,qtbase)
|
||||
("qtx11extras" ,qtx11extras)
|
||||
,@(package-inputs uim)))
|
||||
(arguments
|
||||
(substitute-keyword-arguments (package-arguments uim)
|
||||
((#:configure-flags configure-flags)
|
||||
(append configure-flags (list "--with-qt4-immodule"
|
||||
"--with-qt4")))))
|
||||
(append configure-flags (list "--with-qt5-immodule"
|
||||
"--with-qt5")))))
|
||||
(synopsis "Multilingual input method framework (Qt support)")))
|
||||
|
||||
(define-public keynav
|
||||
|
|
|
@ -51,11 +51,9 @@
|
|||
(("\\$\\(LDFLAGS\\)")
|
||||
"$(LDFLAGS) -Wl,-rpath=$(PREFIX)/lib"))
|
||||
|
||||
;; Delete the bundled TinyXML.
|
||||
(delete-file-recursively "cpp/tinyxml")
|
||||
(substitute* "cpp/build/Makefile"
|
||||
(("LIBS \\+= -ludev")
|
||||
"LIBS += -ludev -ltinyxml "))
|
||||
;; XXX: There's a bundled TinyXML under cpp/tinyxml. Keep
|
||||
;; it because using our own TinyXML leads to double-free
|
||||
;; down the road.
|
||||
|
||||
;; Delete the bundled HIDAPI.
|
||||
(delete-file-recursively "cpp/hidapi")
|
||||
|
@ -80,8 +78,7 @@
|
|||
("pkg-config" ,pkg-config)
|
||||
("perl" ,perl) ;for tests
|
||||
("perl-xml-simple" ,perl-xml-simple)))
|
||||
(inputs `(("tinyxml" ,tinyxml)
|
||||
("hidapi" ,hidapi)
|
||||
(inputs `(("hidapi" ,hidapi)
|
||||
("eudev" ,eudev)))
|
||||
(home-page "http://www.openzwave.net/")
|
||||
(synopsis "Access Z-Wave devices from C++ programs")
|
||||
|
|
|
@ -10,6 +10,7 @@
|
|||
;;; Copyright © 2018 Chris Marusich <cmmarusich@gmail.com>
|
||||
;;; Copyright © 2018 Arun Isaac <arunisaac@systemreboot.net>
|
||||
;;; Copyright © 2019 Florian Pelz <pelzflorian@pelzflorian.de>
|
||||
;;; Copyright © 2019 Maxim Cournoyer <maxim.cournoyer@gmail.com>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
|
@ -937,29 +938,35 @@ and @command{wicd-curses} user interfaces."
|
|||
"--no-daemon")
|
||||
#:environment-variables
|
||||
(list (string-append "NM_VPN_PLUGIN_DIR=" #$vpn
|
||||
"/lib/NetworkManager/VPN"))))
|
||||
"/lib/NetworkManager/VPN")
|
||||
;; Override non-existent default users
|
||||
"NM_OPENVPN_USER="
|
||||
"NM_OPENVPN_GROUP=")))
|
||||
(stop #~(make-kill-destructor))))))))
|
||||
|
||||
(define network-manager-service-type
|
||||
(let
|
||||
((config->package
|
||||
((config->packages
|
||||
(match-lambda
|
||||
(($ <network-manager-configuration> network-manager)
|
||||
(list network-manager)))))
|
||||
(($ <network-manager-configuration> network-manager _ vpn-plugins)
|
||||
`(,network-manager ,@vpn-plugins)))))
|
||||
|
||||
(service-type
|
||||
(name 'network-manager)
|
||||
(extensions
|
||||
(list (service-extension shepherd-root-service-type
|
||||
network-manager-shepherd-service)
|
||||
(service-extension dbus-root-service-type config->package)
|
||||
(service-extension polkit-service-type config->package)
|
||||
(service-extension dbus-root-service-type config->packages)
|
||||
(service-extension polkit-service-type
|
||||
(compose
|
||||
list
|
||||
network-manager-configuration-network-manager))
|
||||
(service-extension activation-service-type
|
||||
network-manager-activation)
|
||||
(service-extension session-environment-service-type
|
||||
network-manager-environment)
|
||||
;; Add network-manager to the system profile.
|
||||
(service-extension profile-service-type config->package)))
|
||||
(service-extension profile-service-type config->packages)))
|
||||
(default-value (network-manager-configuration))
|
||||
(description
|
||||
"Run @uref{https://wiki.gnome.org/Projects/NetworkManager,
|
||||
|
|
|
@ -61,7 +61,7 @@ to NAME and VERSION."
|
|||
(define %cargo-build-system-modules
|
||||
;; Build-side modules imported by default.
|
||||
`((guix build cargo-build-system)
|
||||
(json parser)
|
||||
(guix build json)
|
||||
,@%cargo-utils-modules))
|
||||
|
||||
(define* (cargo-build store name inputs
|
||||
|
|
|
@ -0,0 +1,135 @@
|
|||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2016 Jelle Licht <jlicht@fsfe.org>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
;;; GNU Guix is free software; you can redistribute it and/or modify it
|
||||
;;; under the terms of the GNU General Public License as published by
|
||||
;;; the Free Software Foundation; either version 3 of the License, or (at
|
||||
;;; your option) any later version.
|
||||
;;;
|
||||
;;; GNU Guix is distributed in the hope that it will be useful, but
|
||||
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
;;; GNU General Public License for more details.
|
||||
;;;
|
||||
;;; You should have received a copy of the GNU General Public License
|
||||
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
(define-module (guix build-system node)
|
||||
#:use-module (guix store)
|
||||
#:use-module (guix build json)
|
||||
#:use-module (guix build union)
|
||||
#:use-module (guix utils)
|
||||
#:use-module (guix packages)
|
||||
#:use-module (guix derivations)
|
||||
#:use-module (guix search-paths)
|
||||
#:use-module (guix build-system)
|
||||
#:use-module (guix build-system gnu)
|
||||
#:use-module (ice-9 match)
|
||||
#:export (npm-meta-uri
|
||||
%node-build-system-modules
|
||||
node-build
|
||||
node-build-system))
|
||||
|
||||
(define (npm-meta-uri name)
|
||||
"Return a URI string for the metadata of node module NAME found in the npm
|
||||
registry."
|
||||
(string-append "https://registry.npmjs.org/" name))
|
||||
|
||||
(define %node-build-system-modules
|
||||
;; Build-side modules imported by default.
|
||||
`((guix build node-build-system)
|
||||
(guix build json)
|
||||
(guix build union)
|
||||
,@%gnu-build-system-modules)) ;; TODO: Might be not needed
|
||||
|
||||
(define (default-node)
|
||||
"Return the default Node package."
|
||||
;; Lazily resolve the binding to avoid a circular dependency.
|
||||
(let ((node (resolve-interface '(gnu packages node))))
|
||||
(module-ref node 'node)))
|
||||
|
||||
(define* (lower name
|
||||
#:key source inputs native-inputs outputs system target
|
||||
(node (default-node))
|
||||
#:allow-other-keys
|
||||
#:rest arguments)
|
||||
"Return a bag for NAME."
|
||||
(define private-keywords
|
||||
'(#:source #:target #:node #:inputs #:native-inputs))
|
||||
|
||||
(and (not target) ;XXX: no cross-compilation
|
||||
(bag
|
||||
(name name)
|
||||
(system system)
|
||||
(host-inputs `(,@(if source
|
||||
`(("source" ,source))
|
||||
'())
|
||||
,@inputs
|
||||
|
||||
;; Keep the standard inputs of 'gnu-build-system'.
|
||||
,@(standard-packages)))
|
||||
(build-inputs `(("node" ,node)
|
||||
,@native-inputs))
|
||||
(outputs outputs)
|
||||
(build node-build)
|
||||
(arguments (strip-keyword-arguments private-keywords arguments)))))
|
||||
|
||||
(define* (node-build store name inputs
|
||||
#:key
|
||||
(npm-flags ''())
|
||||
(tests? #t)
|
||||
(phases '(@ (guix build node-build-system)
|
||||
%standard-phases))
|
||||
(outputs '("out"))
|
||||
(search-paths '())
|
||||
(system (%current-system))
|
||||
(guile #f)
|
||||
(imported-modules %node-build-system-modules)
|
||||
(modules '((guix build node-build-system)
|
||||
(guix build json)
|
||||
(guix build union)
|
||||
(guix build utils))))
|
||||
"Build SOURCE using NODE and INPUTS."
|
||||
(define builder
|
||||
`(begin
|
||||
(use-modules ,@modules)
|
||||
(node-build #:name ,name
|
||||
#:source ,(match (assoc-ref inputs "source")
|
||||
(((? derivation? source))
|
||||
(derivation->output-path source))
|
||||
((source)
|
||||
source)
|
||||
(source
|
||||
source))
|
||||
#:system ,system
|
||||
#:npm-flags ,npm-flags
|
||||
#:tests? ,tests?
|
||||
#:phases ,phases
|
||||
#:outputs %outputs
|
||||
#:search-paths ',(map search-path-specification->sexp
|
||||
search-paths)
|
||||
#:inputs %build-inputs)))
|
||||
|
||||
(define guile-for-build
|
||||
(match guile
|
||||
((? package?)
|
||||
(package-derivation store guile system #:graft? #f))
|
||||
(#f
|
||||
(let* ((distro (resolve-interface '(gnu packages commencement)))
|
||||
(guile (module-ref distro 'guile-final)))
|
||||
(package-derivation store guile system #:graft? #f)))))
|
||||
|
||||
(build-expression->derivation store name builder
|
||||
#:inputs inputs
|
||||
#:system system
|
||||
#:modules imported-modules
|
||||
#:outputs outputs
|
||||
#:guile-for-build guile-for-build))
|
||||
|
||||
(define node-build-system
|
||||
(build-system
|
||||
(name 'node)
|
||||
(description "The standard Node build system")
|
||||
(lower lower)))
|
|
@ -20,6 +20,7 @@
|
|||
|
||||
(define-module (guix build cargo-build-system)
|
||||
#:use-module ((guix build gnu-build-system) #:prefix gnu:)
|
||||
#:use-module (guix build json)
|
||||
#:use-module (guix build utils)
|
||||
#:use-module (guix build cargo-utils)
|
||||
#:use-module (ice-9 popen)
|
||||
|
@ -27,7 +28,6 @@
|
|||
#:use-module (ice-9 ftw)
|
||||
#:use-module (ice-9 format)
|
||||
#:use-module (ice-9 match)
|
||||
#:use-module (json parser)
|
||||
#:use-module (srfi srfi-1)
|
||||
#:use-module (srfi srfi-26)
|
||||
#:export (%standard-phases
|
||||
|
@ -42,15 +42,15 @@
|
|||
(define (manifest-targets)
|
||||
"Extract all targets from the Cargo.toml manifest"
|
||||
(let* ((port (open-input-pipe "cargo read-manifest"))
|
||||
(data (json->scm port))
|
||||
(targets (hash-ref data "targets" '())))
|
||||
(data (read-json port))
|
||||
(targets (or (assoc-ref data "targets") '())))
|
||||
(close-port port)
|
||||
targets))
|
||||
|
||||
(define (has-executable-target?)
|
||||
"Check if the current cargo project declares any binary targets."
|
||||
(let* ((bin? (lambda (kind) (string=? kind "bin")))
|
||||
(get-kinds (lambda (dep) (hash-ref dep "kind")))
|
||||
(get-kinds (lambda (dep) (assoc-ref dep "kind")))
|
||||
(bin-dep? (lambda (dep) (find bin? (get-kinds dep)))))
|
||||
(find bin-dep? (manifest-targets))))
|
||||
|
||||
|
@ -99,6 +99,7 @@ Cargo.toml file present at its root."
|
|||
inputs)
|
||||
|
||||
;; Configure cargo to actually use this new directory.
|
||||
(setenv "CARGO_HOME" (string-append (getcwd) "/.cargo"))
|
||||
(mkdir-p ".cargo")
|
||||
(let ((port (open-file ".cargo/config" "w" #:encoding "utf-8")))
|
||||
(display "
|
||||
|
@ -148,9 +149,6 @@ directory = '" port)
|
|||
;; Make cargo reuse all the artifacts we just built instead
|
||||
;; of defaulting to making a new temp directory
|
||||
(setenv "CARGO_TARGET_DIR" "./target")
|
||||
;; Force cargo to honor our .cargo/config definitions
|
||||
;; https://github.com/rust-lang/cargo/issues/6397
|
||||
(setenv "CARGO_HOME" ".")
|
||||
|
||||
;; Only install crates which include binary targets,
|
||||
;; otherwise cargo will raise an error.
|
||||
|
|
|
@ -18,6 +18,7 @@
|
|||
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
(define-module (guix build compile)
|
||||
#:use-module (srfi srfi-1)
|
||||
#:use-module (ice-9 match)
|
||||
#:use-module (ice-9 format)
|
||||
#:use-module (ice-9 threads)
|
||||
|
@ -58,13 +59,23 @@
|
|||
((kw _ rest ...)
|
||||
(loop rest `(#f ,kw ,@result))))))
|
||||
|
||||
(define (supported-warning-type? type)
|
||||
"Return true if TYPE, a symbol, denotes a supported warning type."
|
||||
(find (lambda (warning-type)
|
||||
(eq? type (warning-type-name warning-type)))
|
||||
%warning-types))
|
||||
|
||||
(define %warnings
|
||||
;; FIXME: 'format' is missing because it reports "non-literal format
|
||||
;; strings" due to the fact that we use 'G_' instead of '_'. We'll need
|
||||
;; help from Guile to solve this.
|
||||
'(unsupported-warning unbound-variable arity-mismatch
|
||||
(let ((optional (lambda (type)
|
||||
(if (supported-warning-type? type)
|
||||
(list type)
|
||||
'()))))
|
||||
`(unbound-variable arity-mismatch
|
||||
macro-use-before-definition ;new in 2.2
|
||||
shadowed-toplevel)) ;new in 2.2.5
|
||||
,@(optional 'shadowed-toplevel)))) ;new in 2.2.5
|
||||
|
||||
(define (optimization-options file)
|
||||
"Return the default set of optimizations options for FILE."
|
||||
|
@ -118,8 +129,9 @@ front."
|
|||
(lambda ()
|
||||
(set! path initial-value)))))
|
||||
|
||||
(define (call/exit-on-exception thunk)
|
||||
"Evaluate THUNK and exit right away if an exception is thrown."
|
||||
(define (call/exit-on-exception file thunk)
|
||||
"Evaluate THUNK and exit right away if an exception is thrown. Report FILE
|
||||
as the file that was being compiled when the exception was thrown."
|
||||
(catch #t
|
||||
thunk
|
||||
(const #f)
|
||||
|
@ -130,15 +142,18 @@ front."
|
|||
(stack (make-stack #t))
|
||||
(depth (stack-length stack))
|
||||
(frame (and (> depth 1) (stack-ref stack 1))))
|
||||
(newline port)
|
||||
(format port "error: failed to compile '~a':~%~%" file)
|
||||
(false-if-exception (display-backtrace stack port))
|
||||
(print-exception port frame key args)))
|
||||
|
||||
;; Don't go any further.
|
||||
(primitive-exit 1))))
|
||||
|
||||
(define-syntax-rule (exit-on-exception exp ...)
|
||||
"Evaluate EXP and exit if an exception is thrown."
|
||||
(call/exit-on-exception (lambda () exp ...)))
|
||||
(define-syntax-rule (exit-on-exception file exp ...)
|
||||
"Evaluate EXP and exit if an exception is thrown. Report FILE as the faulty
|
||||
file when an exception is thrown."
|
||||
(call/exit-on-exception file (lambda () exp ...)))
|
||||
|
||||
(define* (compile-files source-directory build-directory files
|
||||
#:key
|
||||
|
@ -162,6 +177,7 @@ files are for HOST, a GNU triplet such as \"x86_64-linux-gnu\"."
|
|||
|
||||
;; Exit as soon as something goes wrong.
|
||||
(exit-on-exception
|
||||
file
|
||||
(with-target host
|
||||
(lambda ()
|
||||
(let ((relative (relative-file source-directory file)))
|
||||
|
|
|
@ -0,0 +1,387 @@
|
|||
;;;; json.scm --- JSON reader/writer
|
||||
;;;; Copyright (C) 2015 Free Software Foundation, Inc.
|
||||
;;;;
|
||||
;;;; This library is free software; you can redistribute it and/or
|
||||
;;;; modify it under the terms of the GNU Lesser General Public
|
||||
;;;; License as published by the Free Software Foundation; either
|
||||
;;;; version 3 of the License, or (at your option) any later version.
|
||||
;;;;
|
||||
;;;; This library is distributed in the hope that it will be useful,
|
||||
;;;; but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
;;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
;;;; Lesser General Public License for more details.
|
||||
;;;;
|
||||
;;;; You should have received a copy of the GNU Lesser General Public
|
||||
;;;; License along with this library; if not, write to the Free Software
|
||||
;;;; Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
;;;;
|
||||
|
||||
(define-module (guix build json) ;; originally (ice-9 json)
|
||||
#:use-module (ice-9 match)
|
||||
#:export (read-json write-json))
|
||||
|
||||
;; Snarfed from
|
||||
;; https://github.com/cwebber/activitystuff/blob/master/activitystuff/contrib/json.scm
|
||||
;;
|
||||
|
||||
;;;
|
||||
;;; Reader
|
||||
;;;
|
||||
|
||||
(define (json-error port)
|
||||
(throw 'json-error port))
|
||||
|
||||
(define (assert-char port char)
|
||||
"Read a character from PORT and throw an invalid JSON error if the
|
||||
character is not CHAR."
|
||||
(unless (eqv? (read-char port) char)
|
||||
(json-error port)))
|
||||
|
||||
(define (whitespace? char)
|
||||
"Return #t if CHAR is a whitespace character."
|
||||
(char-set-contains? char-set:whitespace char))
|
||||
|
||||
(define (consume-whitespace port)
|
||||
"Discard characters from PORT until a non-whitespace character is
|
||||
encountered.."
|
||||
(match (peek-char port)
|
||||
((? eof-object?) *unspecified*)
|
||||
((? whitespace?)
|
||||
(read-char port)
|
||||
(consume-whitespace port))
|
||||
(_ *unspecified*)))
|
||||
|
||||
(define (make-keyword-reader keyword value)
|
||||
"Parse the keyword symbol KEYWORD as VALUE."
|
||||
(let ((str (symbol->string keyword)))
|
||||
(lambda (port)
|
||||
(let loop ((i 0))
|
||||
(cond
|
||||
((= i (string-length str)) value)
|
||||
((eqv? (string-ref str i) (read-char port))
|
||||
(loop (1+ i)))
|
||||
(else (json-error port)))))))
|
||||
|
||||
(define read-true (make-keyword-reader 'true #t))
|
||||
(define read-false (make-keyword-reader 'false #f))
|
||||
(define read-null (make-keyword-reader 'null #nil))
|
||||
|
||||
(define (read-hex-digit port)
|
||||
"Read a hexadecimal digit from PORT."
|
||||
(match (read-char port)
|
||||
(#\0 0)
|
||||
(#\1 1)
|
||||
(#\2 2)
|
||||
(#\3 3)
|
||||
(#\4 4)
|
||||
(#\5 5)
|
||||
(#\6 6)
|
||||
(#\7 7)
|
||||
(#\8 8)
|
||||
(#\9 9)
|
||||
((or #\A #\a) 10)
|
||||
((or #\B #\b) 11)
|
||||
((or #\C #\c) 12)
|
||||
((or #\D #\d) 13)
|
||||
((or #\E #\e) 14)
|
||||
((or #\F #\f) 15)
|
||||
(_ (json-error port))))
|
||||
|
||||
(define (read-utf16-character port)
|
||||
"Read a hexadecimal encoded UTF-16 character from PORT."
|
||||
(integer->char
|
||||
(+ (* (read-hex-digit port) (expt 16 3))
|
||||
(* (read-hex-digit port) (expt 16 2))
|
||||
(* (read-hex-digit port) 16)
|
||||
(read-hex-digit port))))
|
||||
|
||||
(define (read-escape-character port)
|
||||
"Read escape character from PORT."
|
||||
(match (read-char port)
|
||||
(#\" #\")
|
||||
(#\\ #\\)
|
||||
(#\/ #\/)
|
||||
(#\b #\backspace)
|
||||
(#\f #\page)
|
||||
(#\n #\newline)
|
||||
(#\r #\return)
|
||||
(#\t #\tab)
|
||||
(#\u (read-utf16-character port))
|
||||
(_ (json-error port))))
|
||||
|
||||
(define (read-string port)
|
||||
"Read a JSON encoded string from PORT."
|
||||
(assert-char port #\")
|
||||
(let loop ((result '()))
|
||||
(match (read-char port)
|
||||
((? eof-object?) (json-error port))
|
||||
(#\" (list->string (reverse result)))
|
||||
(#\\ (loop (cons (read-escape-character port) result)))
|
||||
(char (loop (cons char result))))))
|
||||
|
||||
(define char-set:json-digit
|
||||
(char-set #\0 #\1 #\2 #\3 #\4 #\5 #\6 #\7 #\8 #\9))
|
||||
|
||||
(define (digit? char)
|
||||
(char-set-contains? char-set:json-digit char))
|
||||
|
||||
(define (read-digit port)
|
||||
"Read a digit 0-9 from PORT."
|
||||
(match (read-char port)
|
||||
(#\0 0)
|
||||
(#\1 1)
|
||||
(#\2 2)
|
||||
(#\3 3)
|
||||
(#\4 4)
|
||||
(#\5 5)
|
||||
(#\6 6)
|
||||
(#\7 7)
|
||||
(#\8 8)
|
||||
(#\9 9)
|
||||
(else (json-error port))))
|
||||
|
||||
(define (read-digits port)
|
||||
"Read a sequence of digits from PORT."
|
||||
(let loop ((result '()))
|
||||
(match (peek-char port)
|
||||
((? eof-object?)
|
||||
(reverse result))
|
||||
((? digit?)
|
||||
(loop (cons (read-digit port) result)))
|
||||
(else (reverse result)))))
|
||||
|
||||
(define (list->integer digits)
|
||||
"Convert the list DIGITS to an integer."
|
||||
(let loop ((i (1- (length digits)))
|
||||
(result 0)
|
||||
(digits digits))
|
||||
(match digits
|
||||
(() result)
|
||||
((n . tail)
|
||||
(loop (1- i)
|
||||
(+ result (* n (expt 10 i)))
|
||||
tail)))))
|
||||
|
||||
(define (read-positive-integer port)
|
||||
"Read a positive integer with no leading zeroes from PORT."
|
||||
(match (read-digits port)
|
||||
((0 . _)
|
||||
(json-error port)) ; no leading zeroes allowed
|
||||
((digits ...)
|
||||
(list->integer digits))))
|
||||
|
||||
(define (read-exponent port)
|
||||
"Read exponent from PORT."
|
||||
(define (read-expt)
|
||||
(list->integer (read-digits port)))
|
||||
|
||||
(unless (memv (read-char port) '(#\e #\E))
|
||||
(json-error port))
|
||||
|
||||
(match (peek-char port)
|
||||
((? eof-object?)
|
||||
(json-error port))
|
||||
(#\-
|
||||
(read-char port)
|
||||
(- (read-expt)))
|
||||
(#\+
|
||||
(read-char port)
|
||||
(read-expt))
|
||||
((? digit?)
|
||||
(read-expt))
|
||||
(_ (json-error port))))
|
||||
|
||||
(define (read-fraction port)
|
||||
"Read fractional number part from PORT as an inexact number."
|
||||
(let* ((digits (read-digits port))
|
||||
(numerator (list->integer digits))
|
||||
(denomenator (expt 10 (length digits))))
|
||||
(/ numerator denomenator)))
|
||||
|
||||
(define (read-positive-number port)
|
||||
"Read a positive number from PORT."
|
||||
(let* ((integer (match (peek-char port)
|
||||
((? eof-object?)
|
||||
(json-error port))
|
||||
(#\0
|
||||
(read-char port)
|
||||
0)
|
||||
((? digit?)
|
||||
(read-positive-integer port))
|
||||
(_ (json-error port))))
|
||||
(fraction (match (peek-char port)
|
||||
(#\.
|
||||
(read-char port)
|
||||
(read-fraction port))
|
||||
(_ 0)))
|
||||
(exponent (match (peek-char port)
|
||||
((or #\e #\E)
|
||||
(read-exponent port))
|
||||
(_ 0)))
|
||||
(n (* (+ integer fraction) (expt 10 exponent))))
|
||||
|
||||
;; Keep integers as exact numbers, but convert numbers encoded as
|
||||
;; floating point numbers to an inexact representation.
|
||||
(if (zero? fraction)
|
||||
n
|
||||
(exact->inexact n))))
|
||||
|
||||
(define (read-number port)
|
||||
"Read a number from PORT"
|
||||
(match (peek-char port)
|
||||
((? eof-object?)
|
||||
(json-error port))
|
||||
(#\-
|
||||
(read-char port)
|
||||
(- (read-positive-number port)))
|
||||
((? digit?)
|
||||
(read-positive-number port))
|
||||
(_ (json-error port))))
|
||||
|
||||
(define (read-object port)
|
||||
"Read key/value map from PORT."
|
||||
(define (read-key+value-pair)
|
||||
(let ((key (read-string port)))
|
||||
(consume-whitespace port)
|
||||
(assert-char port #\:)
|
||||
(consume-whitespace port)
|
||||
(let ((value (read-value port)))
|
||||
(cons key value))))
|
||||
|
||||
(assert-char port #\{)
|
||||
(consume-whitespace port)
|
||||
|
||||
(if (eqv? #\} (peek-char port))
|
||||
(begin
|
||||
(read-char port)
|
||||
'(@)) ; empty object
|
||||
(let loop ((result (list (read-key+value-pair))))
|
||||
(consume-whitespace port)
|
||||
(match (peek-char port)
|
||||
(#\, ; read another value
|
||||
(read-char port)
|
||||
(consume-whitespace port)
|
||||
(loop (cons (read-key+value-pair) result)))
|
||||
(#\} ; end of object
|
||||
(read-char port)
|
||||
(cons '@ (reverse result)))
|
||||
(_ (json-error port))))))
|
||||
|
||||
(define (read-array port)
|
||||
"Read array from PORT."
|
||||
(assert-char port #\[)
|
||||
(consume-whitespace port)
|
||||
|
||||
(if (eqv? #\] (peek-char port))
|
||||
(begin
|
||||
(read-char port)
|
||||
'()) ; empty array
|
||||
(let loop ((result (list (read-value port))))
|
||||
(consume-whitespace port)
|
||||
(match (peek-char port)
|
||||
(#\, ; read another value
|
||||
(read-char port)
|
||||
(consume-whitespace port)
|
||||
(loop (cons (read-value port) result)))
|
||||
(#\] ; end of array
|
||||
(read-char port)
|
||||
(reverse result))
|
||||
(_ (json-error port))))))
|
||||
|
||||
(define (read-value port)
|
||||
"Read a JSON value from PORT."
|
||||
(consume-whitespace port)
|
||||
(match (peek-char port)
|
||||
((? eof-object?) (json-error port))
|
||||
(#\" (read-string port))
|
||||
(#\{ (read-object port))
|
||||
(#\[ (read-array port))
|
||||
(#\t (read-true port))
|
||||
(#\f (read-false port))
|
||||
(#\n (read-null port))
|
||||
((or #\- (? digit?))
|
||||
(read-number port))
|
||||
(_ (json-error port))))
|
||||
|
||||
(define (read-json port)
|
||||
"Read JSON text from port and return an s-expression representation."
|
||||
(let ((result (read-value port)))
|
||||
(consume-whitespace port)
|
||||
(unless (eof-object? (peek-char port))
|
||||
(json-error port))
|
||||
result))
|
||||
|
||||
|
||||
;;;
|
||||
;;; Writer
|
||||
;;;
|
||||
|
||||
(define (write-string str port)
|
||||
"Write STR to PORT in JSON string format."
|
||||
(define (escape-char char)
|
||||
(display (match char
|
||||
(#\" "\\\"")
|
||||
(#\\ "\\\\")
|
||||
(#\/ "\\/")
|
||||
(#\backspace "\\b")
|
||||
(#\page "\\f")
|
||||
(#\newline "\\n")
|
||||
(#\return "\\r")
|
||||
(#\tab "\\t")
|
||||
(_ char))
|
||||
port))
|
||||
|
||||
(display "\"" port)
|
||||
(string-for-each escape-char str)
|
||||
(display "\"" port))
|
||||
|
||||
(define (write-object alist port)
|
||||
"Write ALIST to PORT in JSON object format."
|
||||
;; Keys may be strings or symbols.
|
||||
(define key->string
|
||||
(match-lambda
|
||||
((? string? key) key)
|
||||
((? symbol? key) (symbol->string key))))
|
||||
|
||||
(define (write-pair pair)
|
||||
(match pair
|
||||
((key . value)
|
||||
(write-string (key->string key) port)
|
||||
(display ":" port)
|
||||
(write-json value port))))
|
||||
|
||||
(display "{" port)
|
||||
(match alist
|
||||
(() #f)
|
||||
((front ... end)
|
||||
(for-each (lambda (pair)
|
||||
(write-pair pair)
|
||||
(display "," port))
|
||||
front)
|
||||
(write-pair end)))
|
||||
(display "}" port))
|
||||
|
||||
(define (write-array lst port)
|
||||
"Write LST to PORT in JSON array format."
|
||||
(display "[" port)
|
||||
(match lst
|
||||
(() #f)
|
||||
((front ... end)
|
||||
(for-each (lambda (val)
|
||||
(write-json val port)
|
||||
(display "," port))
|
||||
front)
|
||||
(write-json end port)))
|
||||
(display "]" port))
|
||||
|
||||
(define (write-json exp port)
|
||||
"Write EXP to PORT in JSON format."
|
||||
(match exp
|
||||
(#t (display "true" port))
|
||||
(#f (display "false" port))
|
||||
;; Differentiate #nil from '().
|
||||
((and (? boolean? ) #nil) (display "null" port))
|
||||
((? string? s) (write-string s port))
|
||||
((? real? n) (display n port))
|
||||
(('@ . alist) (write-object alist port))
|
||||
((vals ...) (write-array vals port))))
|
|
@ -0,0 +1,166 @@
|
|||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2015 David Thompson <davet@gnu.org>
|
||||
;;; Copyright © 2016 Jelle Licht <jlicht@fsfe.org>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
;;; GNU Guix is free software; you can redistribute it and/or modify it
|
||||
;;; under the terms of the GNU General Public License as published by
|
||||
;;; the Free Software Foundation; either version 3 of the License, or (at
|
||||
;;; your option) any later version.
|
||||
;;;
|
||||
;;; GNU Guix is distributed in the hope that it will be useful, but
|
||||
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
;;; GNU General Public License for more details.
|
||||
;;;
|
||||
;;; You should have received a copy of the GNU General Public License
|
||||
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
(define-module (guix build node-build-system)
|
||||
#:use-module ((guix build gnu-build-system) #:prefix gnu:)
|
||||
#:use-module (guix build json)
|
||||
#:use-module (guix build union)
|
||||
#:use-module (guix build utils)
|
||||
#:use-module (ice-9 match)
|
||||
#:use-module (ice-9 popen)
|
||||
#:use-module (ice-9 regex)
|
||||
#:use-module (srfi srfi-1)
|
||||
#:use-module (srfi srfi-26)
|
||||
#:export (%standard-phases
|
||||
node-build))
|
||||
|
||||
;; Commentary:
|
||||
;;
|
||||
;; Builder-side code of the standard Node/npm package build procedure.
|
||||
;;
|
||||
;; Code:
|
||||
|
||||
(define* (read-package-data #:key (filename "package.json"))
|
||||
(call-with-input-file filename
|
||||
(lambda (port)
|
||||
(read-json port))))
|
||||
|
||||
(define* (build #:key inputs #:allow-other-keys)
|
||||
(define (build-from-package-json? package-file)
|
||||
(let* ((package-data (read-package-data #:filename package-file))
|
||||
(scripts (assoc-ref package-data "scripts")))
|
||||
(assoc-ref scripts "build")))
|
||||
"Build a new node module using the appropriate build system."
|
||||
;; XXX: Develop a more robust heuristic, allow override
|
||||
(cond ((file-exists? "gulpfile.js")
|
||||
(invoke "gulp"))
|
||||
((file-exists? "gruntfile.js")
|
||||
(invoke "grunt"))
|
||||
((file-exists? "Makefile")
|
||||
(invoke "make"))
|
||||
((and (file-exists? "package.json")
|
||||
(build-from-package-json? "package.json"))
|
||||
(invoke "npm" "run" "build")))
|
||||
#t)
|
||||
|
||||
(define* (link-npm-dependencies #:key inputs #:allow-other-keys)
|
||||
(define (inputs->node-inputs inputs)
|
||||
"Filter the directory part from INPUTS."
|
||||
(filter (lambda (input)
|
||||
(match input
|
||||
((name . _) (node-package? name))))
|
||||
inputs))
|
||||
(define (inputs->directories inputs)
|
||||
"Extract the directory part from INPUTS."
|
||||
(match inputs
|
||||
(((names . directories) ...)
|
||||
directories)))
|
||||
(define (make-node-path root)
|
||||
(string-append root "/lib/node_modules/"))
|
||||
|
||||
(let ((input-node-directories (inputs->directories
|
||||
(inputs->node-inputs inputs))))
|
||||
(union-build "node_modules"
|
||||
(map make-node-path input-node-directories))
|
||||
#t))
|
||||
|
||||
(define configure link-npm-dependencies)
|
||||
|
||||
(define* (check #:key tests? #:allow-other-keys)
|
||||
"Run 'npm test' if TESTS?"
|
||||
(if tests?
|
||||
;; Should only be enabled once we know that there are tests
|
||||
(invoke "npm" "test"))
|
||||
#t)
|
||||
|
||||
(define (node-package? name)
|
||||
"Check if NAME correspond to the name of an Node package."
|
||||
(string-prefix? "node-" name))
|
||||
|
||||
(define* (install #:key outputs inputs #:allow-other-keys)
|
||||
"Install the node module to the output store item. The module itself is
|
||||
installed in a subdirectory of @file{node_modules} and its runtime dependencies
|
||||
as defined by @file{package.json} are symlinked into a @file{node_modules}
|
||||
subdirectory of the module's directory. Additionally, binaries are installed in
|
||||
the @file{bin} directory."
|
||||
(let* ((out (assoc-ref outputs "out"))
|
||||
(target (string-append out "/lib"))
|
||||
(binaries (string-append out "/bin"))
|
||||
(data (read-package-data))
|
||||
(modulename (assoc-ref data "name"))
|
||||
(binary-configuration (match (assoc-ref data "bin")
|
||||
(('@ configuration ...) configuration)
|
||||
((? string? configuration) configuration)
|
||||
(#f #f)))
|
||||
(dependencies (match (assoc-ref data "dependencies")
|
||||
(('@ deps ...) deps)
|
||||
(#f #f))))
|
||||
(mkdir-p target)
|
||||
(copy-recursively "." (string-append target "/node_modules/" modulename))
|
||||
;; Remove references to dependencies
|
||||
(delete-file-recursively
|
||||
(string-append target "/node_modules/" modulename "/node_modules"))
|
||||
(cond
|
||||
((string? binary-configuration)
|
||||
(begin
|
||||
(mkdir-p binaries)
|
||||
(symlink (string-append target "/node_modules/" modulename "/"
|
||||
binary-configuration)
|
||||
(string-append binaries "/" modulename))))
|
||||
((list? binary-configuration)
|
||||
(for-each
|
||||
(lambda (conf)
|
||||
(match conf
|
||||
((key . value)
|
||||
(begin
|
||||
(mkdir-p (dirname (string-append binaries "/" key)))
|
||||
(symlink (string-append target "/node_modules/" modulename "/"
|
||||
value)
|
||||
(string-append binaries "/" key))))))
|
||||
binary-configuration))
|
||||
(else
|
||||
(symlink (string-append target "/node_modules/" modulename "/bin")
|
||||
binaries)))
|
||||
(when dependencies
|
||||
(mkdir-p
|
||||
(string-append target "/node_modules/" modulename "/node_modules"))
|
||||
(for-each
|
||||
(lambda (dependency)
|
||||
(let ((dependency (car dependency)))
|
||||
(symlink
|
||||
(string-append (assoc-ref inputs (string-append "node-" dependency))
|
||||
"/lib/node_modules/" dependency)
|
||||
(string-append target "/node_modules/" modulename
|
||||
"/node_modules/" dependency))))
|
||||
dependencies))
|
||||
#t))
|
||||
|
||||
|
||||
(define %standard-phases
|
||||
(modify-phases gnu:%standard-phases
|
||||
(replace 'configure configure)
|
||||
(replace 'build build)
|
||||
(replace 'install install)
|
||||
(delete 'check)
|
||||
(add-after 'install 'check check)
|
||||
(delete 'strip)))
|
||||
|
||||
(define* (node-build #:key inputs (phases %standard-phases)
|
||||
#:allow-other-keys #:rest args)
|
||||
(apply gnu:gnu-build #:inputs inputs #:phases phases args))
|
|
@ -48,13 +48,6 @@
|
|||
MNT_EXPIRE
|
||||
UMOUNT_NOFOLLOW
|
||||
|
||||
AT_FDCWD
|
||||
AT_SYMLINK_NOFOLLOW
|
||||
AT_REMOVEDIR
|
||||
AT_SYMLINK_FOLLOW
|
||||
AT_NO_AUTOMOUNT
|
||||
AT_EMPTY_PATH
|
||||
|
||||
restart-on-EINTR
|
||||
mount-points
|
||||
swapon
|
||||
|
@ -686,12 +679,12 @@ mounted at FILE."
|
|||
|
||||
;; Flags for the *at command, notably the 'utime' procedure of libguile.
|
||||
;; From <fcntl.h>.
|
||||
(define AT_FDCWD -100)
|
||||
(define AT_SYMLINK_NOFOLLOW #x100)
|
||||
(define AT_REMOVEDIR #x200)
|
||||
(define AT_SYMLINK_FOLLOW #x400)
|
||||
(define AT_NO_AUTOMOUNT #x800)
|
||||
(define AT_EMPTY_PATH #x1000)
|
||||
(define-as-needed AT_FDCWD -100)
|
||||
(define-as-needed AT_SYMLINK_NOFOLLOW #x100)
|
||||
(define-as-needed AT_REMOVEDIR #x200)
|
||||
(define-as-needed AT_SYMLINK_FOLLOW #x400)
|
||||
(define-as-needed AT_NO_AUTOMOUNT #x800)
|
||||
(define-as-needed AT_EMPTY_PATH #x1000)
|
||||
|
||||
(define-syntax BLKRRPART ;<sys/mount.h>
|
||||
(identifier-syntax #x125F))
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2018, 2019 Ludovic Courtès <ludo@gnu.org>
|
||||
;;; Copyright © 2018 Ricardo Wurmus <rekado@elephly.net>
|
||||
;;; Copyright © 2019 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
|
@ -107,9 +108,10 @@
|
|||
(checkout channel-instance-checkout))
|
||||
|
||||
(define-record-type <channel-metadata>
|
||||
(channel-metadata version dependencies)
|
||||
(channel-metadata version directory dependencies)
|
||||
channel-metadata?
|
||||
(version channel-metadata-version)
|
||||
(directory channel-metadata-directory)
|
||||
(dependencies channel-metadata-dependencies))
|
||||
|
||||
(define (channel-reference channel)
|
||||
|
@ -119,18 +121,18 @@
|
|||
(#f `(branch . ,(channel-branch channel)))
|
||||
(commit `(commit . ,(channel-commit channel)))))
|
||||
|
||||
(define (read-channel-metadata instance)
|
||||
"Return a channel-metadata record read from the channel INSTANCE's
|
||||
description file, or return #F if the channel instance does not include the
|
||||
file."
|
||||
(let* ((source (channel-instance-checkout instance))
|
||||
(meta-file (string-append source "/.guix-channel")))
|
||||
(define (read-channel-metadata-from-source source)
|
||||
"Return a channel-metadata record read from channel's SOURCE/.guix-channel
|
||||
description file, or return #F if SOURCE/.guix-channel does not exist."
|
||||
(let ((meta-file (string-append source "/.guix-channel")))
|
||||
(and (file-exists? meta-file)
|
||||
(and-let* ((raw (call-with-input-file meta-file read))
|
||||
(let* ((raw (call-with-input-file meta-file read))
|
||||
(version (and=> (assoc-ref raw 'version) first))
|
||||
(directory (and=> (assoc-ref raw 'directory) first))
|
||||
(dependencies (or (assoc-ref raw 'dependencies) '())))
|
||||
(channel-metadata
|
||||
version
|
||||
directory
|
||||
(map (lambda (item)
|
||||
(let ((get (lambda* (key #:optional default)
|
||||
(or (and=> (assoc-ref item key) first) default))))
|
||||
|
@ -144,12 +146,18 @@ file."
|
|||
(commit (get 'commit))))))
|
||||
dependencies))))))
|
||||
|
||||
(define (read-channel-metadata instance)
|
||||
"Return a channel-metadata record read from the channel INSTANCE's
|
||||
description file, or return #F if the channel instance does not include the
|
||||
file."
|
||||
(read-channel-metadata-from-source (channel-instance-checkout instance)))
|
||||
|
||||
(define (channel-instance-dependencies instance)
|
||||
"Return the list of channels that are declared as dependencies for the given
|
||||
channel INSTANCE."
|
||||
(match (read-channel-metadata instance)
|
||||
(#f '())
|
||||
(($ <channel-metadata> version dependencies)
|
||||
(($ <channel-metadata> version directory dependencies)
|
||||
dependencies)))
|
||||
|
||||
(define* (latest-channel-instances store channels #:optional (previous-channels '()))
|
||||
|
@ -230,10 +238,9 @@ of COMMIT at URL. Use NAME as the channel name."
|
|||
modules in SOURCE and that depend on DEPENDENCIES, a list of lowerable
|
||||
objects. The assumption is that SOURCE contains package modules to be added
|
||||
to '%package-module-path'."
|
||||
;; FIXME: We should load, say SOURCE/.guix-channel.scm, which would allow
|
||||
;; channel publishers to specify things such as the sub-directory where .scm
|
||||
;; files live, files to exclude from the channel, preferred substitute URLs,
|
||||
;; etc.
|
||||
|
||||
(let* ((metadata (read-channel-metadata-from-source source))
|
||||
(directory (and=> metadata channel-metadata-directory)))
|
||||
|
||||
(define build
|
||||
;; This is code that we'll run in CORE, a Guix instance, with its own
|
||||
|
@ -253,13 +260,17 @@ to '%package-module-path'."
|
|||
(string-append #$output "/share/guile/site/"
|
||||
(effective-version)))
|
||||
|
||||
(compile-files #$source go
|
||||
(find-files #$source "\\.scm$"))
|
||||
(let* ((subdir (if #$directory
|
||||
(string-append "/" #$directory)
|
||||
""))
|
||||
(source (string-append #$source subdir)))
|
||||
(compile-files source go (find-files source "\\.scm$"))
|
||||
(mkdir-p (dirname scm))
|
||||
(symlink #$source scm)
|
||||
(symlink (string-append #$source subdir) scm))
|
||||
|
||||
scm)))
|
||||
|
||||
(gexp->derivation-in-inferior name build core))
|
||||
(gexp->derivation-in-inferior name build core)))
|
||||
|
||||
(define* (build-from-source name source
|
||||
#:key core verbose? commit
|
||||
|
@ -424,8 +435,9 @@ derivation."
|
|||
;; "old style" (before commit 8a0d9bc8a3f153159d9e239a151c0fa98f1e12d8,
|
||||
;; dated May 30, 2018) did not depend on "guix-command.drv".
|
||||
(not (find (lambda (input)
|
||||
(string-suffix? "-guix-command.drv"
|
||||
(derivation-input-path input)))
|
||||
(string=? "guix-command"
|
||||
(derivation-name
|
||||
(derivation-input-derivation input))))
|
||||
(derivation-inputs drv))))
|
||||
|
||||
(define (channel-instances->manifest instances)
|
||||
|
|
|
@ -36,6 +36,8 @@
|
|||
#:use-module (guix memoization)
|
||||
#:use-module (guix combinators)
|
||||
#:use-module (guix deprecation)
|
||||
#:use-module (guix diagnostics)
|
||||
#:use-module (guix i18n)
|
||||
#:use-module (guix monads)
|
||||
#:use-module (gcrypt hash)
|
||||
#:use-module (guix base32)
|
||||
|
@ -69,6 +71,7 @@
|
|||
derivation-input-derivation
|
||||
derivation-input-sub-derivations
|
||||
derivation-input-output-paths
|
||||
derivation-input-output-path
|
||||
valid-derivation-input?
|
||||
|
||||
&derivation-error
|
||||
|
@ -219,6 +222,13 @@ download with a fixed hash (aka. `fetchurl')."
|
|||
(map (cut derivation->output-path drv <>)
|
||||
sub-drvs))))
|
||||
|
||||
(define (derivation-input-output-path input)
|
||||
"Return the output file name of INPUT. If INPUT has more than one outputs,
|
||||
an error is raised."
|
||||
(match input
|
||||
(($ <derivation-input> drv (output))
|
||||
(derivation->output-path drv output))))
|
||||
|
||||
(define (valid-derivation-input? store input)
|
||||
"Return true if INPUT is valid--i.e., if all the outputs it requests are in
|
||||
the store."
|
||||
|
@ -705,16 +715,25 @@ name of each input with that input's hash."
|
|||
;; character.
|
||||
(sha256 (derivation->bytevector (derivation/masked-inputs drv)))))))
|
||||
|
||||
|
||||
(define (warn-about-derivation-deprecation name)
|
||||
;; TRANSLATORS: 'derivation' must not be translated; it refers to the
|
||||
;; 'derivation' procedure.
|
||||
(warning (G_ "in '~a': deprecated 'derivation' calling convention used~%")
|
||||
name))
|
||||
|
||||
(define* (derivation store name builder args
|
||||
#:key
|
||||
(system (%current-system)) (env-vars '())
|
||||
(inputs '()) (outputs '("out"))
|
||||
(inputs '()) (sources '())
|
||||
(outputs '("out"))
|
||||
hash hash-algo recursive?
|
||||
references-graphs
|
||||
allowed-references disallowed-references
|
||||
leaked-env-vars local-build?
|
||||
(substitutable? #t)
|
||||
(properties '()))
|
||||
(properties '())
|
||||
(%deprecation-warning? #t))
|
||||
"Build a derivation with the given arguments, and return the resulting
|
||||
<derivation> object. When HASH and HASH-ALGO are given, a
|
||||
fixed-output derivation is created---i.e., one whose result is known in
|
||||
|
@ -831,17 +850,28 @@ derivation. It is kept as-is, uninterpreted, in the derivation."
|
|||
e
|
||||
outputs)))
|
||||
|
||||
(define-syntax-rule (warn-deprecation name)
|
||||
(when %deprecation-warning?
|
||||
(warn-about-derivation-deprecation name)))
|
||||
|
||||
(define input->derivation-input
|
||||
(match-lambda
|
||||
((? derivation-input? input)
|
||||
input)
|
||||
(((? derivation? drv))
|
||||
(warn-deprecation name)
|
||||
(make-derivation-input drv '("out")))
|
||||
(((? derivation? drv) sub-drvs ...)
|
||||
(warn-deprecation name)
|
||||
(make-derivation-input drv sub-drvs))
|
||||
(_ #f)))
|
||||
(_
|
||||
(warn-deprecation name)
|
||||
#f)))
|
||||
|
||||
(define input->source
|
||||
(match-lambda
|
||||
(((? string? input) . _)
|
||||
(warn-deprecation name)
|
||||
(if (direct-store-path? input)
|
||||
input
|
||||
(add-to-store store (basename input)
|
||||
|
@ -858,7 +888,8 @@ derivation. It is kept as-is, uninterpreted, in the derivation."
|
|||
hash recursive?)))
|
||||
(sort outputs string<?)))
|
||||
(sources (sort (delete-duplicates
|
||||
(filter-map input->source inputs))
|
||||
(append (filter-map input->source inputs)
|
||||
sources))
|
||||
string<?))
|
||||
(inputs (sort (coalesce-duplicate-inputs
|
||||
(filter-map input->derivation-input inputs))
|
||||
|
@ -929,12 +960,9 @@ recursively."
|
|||
|
||||
(define input->output-paths
|
||||
(match-lambda
|
||||
(((? derivation? drv))
|
||||
(list (derivation->output-path drv)))
|
||||
(((? derivation? drv) sub-drvs ...)
|
||||
(map (cut derivation->output-path drv <>)
|
||||
sub-drvs))
|
||||
((file)
|
||||
((? derivation-input? input)
|
||||
(derivation-input-output-paths input))
|
||||
((? string? file)
|
||||
(list file))))
|
||||
|
||||
(let ((mapping (fold (lambda (pair result)
|
||||
|
@ -954,11 +982,11 @@ recursively."
|
|||
(($ <derivation-input> drv (sub-drvs ...))
|
||||
(match (vhash-assoc (derivation-file-name drv) mapping)
|
||||
((_ . (? derivation? replacement))
|
||||
(cons replacement sub-drvs))
|
||||
((_ . replacement)
|
||||
(list replacement))
|
||||
(derivation-input replacement sub-drvs))
|
||||
((_ . (? string? source))
|
||||
source)
|
||||
(#f
|
||||
(cons (loop drv) sub-drvs)))))))
|
||||
(derivation-input (loop drv) sub-drvs)))))))
|
||||
|
||||
(let loop ((drv drv))
|
||||
(let* ((inputs (map (cut rewritten-input <> loop)
|
||||
|
@ -997,7 +1025,8 @@ recursively."
|
|||
. ,(substitute value initial
|
||||
replacements))))
|
||||
(derivation-builder-environment-vars drv))
|
||||
#:inputs (append (map list sources) inputs)
|
||||
#:inputs (filter derivation-input? inputs)
|
||||
#:sources (append sources (filter string? inputs))
|
||||
#:outputs (derivation-output-names drv)
|
||||
#:hash (match (derivation-outputs drv)
|
||||
((($ <derivation-output> _ algo hash))
|
||||
|
@ -1318,6 +1347,10 @@ and PROPERTIES."
|
|||
,@(if mod-dir `("-L" ,mod-dir) '())
|
||||
,builder)
|
||||
|
||||
;; 'build-expression->derivation' is somewhat deprecated so
|
||||
;; don't bother warning here.
|
||||
#:%deprecation-warning? #f
|
||||
|
||||
#:system system
|
||||
|
||||
#:inputs `((,(or guile-for-build (%guile-for-build)))
|
||||
|
|
|
@ -436,8 +436,7 @@ download by itself using its own dependencies."
|
|||
#:hash-algo hash-algo
|
||||
#:hash hash
|
||||
#:recursive? executable?
|
||||
#:inputs `((,mirrors)
|
||||
(,content-addressed-mirrors))
|
||||
#:sources (list mirrors content-addressed-mirrors)
|
||||
|
||||
;; Honor the user's proxy and locale settings.
|
||||
#:leaked-env-vars '("http_proxy" "https_proxy"
|
||||
|
|
|
@ -85,6 +85,7 @@
|
|||
lowered-gexp?
|
||||
lowered-gexp-sexp
|
||||
lowered-gexp-inputs
|
||||
lowered-gexp-sources
|
||||
lowered-gexp-guile
|
||||
lowered-gexp-load-path
|
||||
lowered-gexp-load-compiled-path
|
||||
|
@ -574,9 +575,9 @@ list."
|
|||
|
||||
(define* (lower-inputs inputs
|
||||
#:key system target)
|
||||
"Turn any package from INPUTS into a derivation for SYSTEM; return the
|
||||
corresponding input list as a monadic value. When TARGET is true, use it as
|
||||
the cross-compilation target triplet."
|
||||
"Turn any object from INPUTS into a derivation input for SYSTEM or a store
|
||||
item (a \"source\"); return the corresponding input list as a monadic value.
|
||||
When TARGET is true, use it as the cross-compilation target triplet."
|
||||
(define (store-item? obj)
|
||||
(and (string? obj) (store-path? obj)))
|
||||
|
||||
|
@ -584,27 +585,30 @@ the cross-compilation target triplet."
|
|||
(mapm %store-monad
|
||||
(match-lambda
|
||||
(((? struct? thing) sub-drv ...)
|
||||
(mlet %store-monad ((drv (lower-object
|
||||
(mlet %store-monad ((obj (lower-object
|
||||
thing system #:target target)))
|
||||
(return (apply gexp-input drv sub-drv))))
|
||||
(return (match obj
|
||||
((? derivation? drv)
|
||||
(let ((outputs (if (null? sub-drv)
|
||||
'("out")
|
||||
sub-drv)))
|
||||
(derivation-input drv outputs)))
|
||||
((? store-item? item)
|
||||
item)))))
|
||||
(((? store-item? item))
|
||||
(return (gexp-input item)))
|
||||
(input
|
||||
(return (gexp-input input))))
|
||||
(return item)))
|
||||
inputs)))
|
||||
|
||||
(define* (lower-reference-graphs graphs #:key system target)
|
||||
"Given GRAPHS, a list of (FILE-NAME INPUT ...) lists for use as a
|
||||
#:reference-graphs argument, lower it such that each INPUT is replaced by the
|
||||
corresponding derivation."
|
||||
corresponding <derivation-input> or store item."
|
||||
(match graphs
|
||||
(((file-names . inputs) ...)
|
||||
(mlet %store-monad ((inputs (lower-inputs inputs
|
||||
#:system system
|
||||
#:target target)))
|
||||
(return (map (lambda (file input)
|
||||
(cons file (gexp-input->tuple input)))
|
||||
file-names inputs))))))
|
||||
(return (map cons file-names inputs))))))
|
||||
|
||||
(define* (lower-references lst #:key system target)
|
||||
"Based on LST, a list of output names and packages, return a list of output
|
||||
|
@ -637,12 +641,14 @@ names and file names suitable for the #:allowed-references argument to
|
|||
((force proc) system))))
|
||||
|
||||
;; Representation of a gexp instantiated for a given target and system.
|
||||
;; It's an intermediate representation between <gexp> and <derivation>.
|
||||
(define-record-type <lowered-gexp>
|
||||
(lowered-gexp sexp inputs guile load-path load-compiled-path)
|
||||
(lowered-gexp sexp inputs sources guile load-path load-compiled-path)
|
||||
lowered-gexp?
|
||||
(sexp lowered-gexp-sexp) ;sexp
|
||||
(inputs lowered-gexp-inputs) ;list of <gexp-input>
|
||||
(guile lowered-gexp-guile) ;<derivation> | #f
|
||||
(inputs lowered-gexp-inputs) ;list of <derivation-input>
|
||||
(sources lowered-gexp-sources) ;list of store items
|
||||
(guile lowered-gexp-guile) ;<derivation-input> | #f
|
||||
(load-path lowered-gexp-load-path) ;list of store items
|
||||
(load-compiled-path lowered-gexp-load-compiled-path)) ;list of store items
|
||||
|
||||
|
@ -737,26 +743,19 @@ derivations--e.g., code evaluated for its side effects."
|
|||
(mbegin %store-monad
|
||||
(set-grafting graft?) ;restore the initial setting
|
||||
(return (lowered-gexp sexp
|
||||
`(,@(if modules
|
||||
(list (gexp-input modules))
|
||||
`(,@(if (derivation? modules)
|
||||
(list (derivation-input modules))
|
||||
'())
|
||||
,@(if compiled
|
||||
(list (gexp-input compiled))
|
||||
(list (derivation-input compiled))
|
||||
'())
|
||||
,@(map gexp-input exts)
|
||||
,@inputs)
|
||||
guile
|
||||
,@(map derivation-input exts)
|
||||
,@(filter derivation-input? inputs))
|
||||
(filter string? (cons modules inputs))
|
||||
(derivation-input guile '("out"))
|
||||
load-path
|
||||
load-compiled-path)))))
|
||||
|
||||
(define (gexp-input->tuple input)
|
||||
"Given INPUT, a <gexp-input> record, return the corresponding input tuple
|
||||
suitable for the 'derivation' procedure."
|
||||
(match (gexp-input-output input)
|
||||
("out" `(,(gexp-input-thing input)))
|
||||
(output `(,(gexp-input-thing input)
|
||||
,(gexp-input-output input)))))
|
||||
|
||||
(define* (gexp->derivation name exp
|
||||
#:key
|
||||
system (target 'current)
|
||||
|
@ -821,13 +820,10 @@ The other arguments are as for 'derivation'."
|
|||
(define (graphs-file-names graphs)
|
||||
;; Return a list of (FILE-NAME . STORE-PATH) pairs made from GRAPHS.
|
||||
(map (match-lambda
|
||||
;; TODO: Remove 'derivation?' special cases.
|
||||
((file-name (? derivation? drv))
|
||||
(cons file-name (derivation->output-path drv)))
|
||||
((file-name (? derivation? drv) sub-drv)
|
||||
(cons file-name (derivation->output-path drv sub-drv)))
|
||||
((file-name thing)
|
||||
(cons file-name thing)))
|
||||
((file-name . (? derivation-input? input))
|
||||
(cons file-name (first (derivation-input-output-paths input))))
|
||||
((file-name . (? string? item))
|
||||
(cons file-name item)))
|
||||
graphs))
|
||||
|
||||
(define (add-modules exp modules)
|
||||
|
@ -882,7 +878,7 @@ The other arguments are as for 'derivation'."
|
|||
(mbegin %store-monad
|
||||
(set-grafting graft?) ;restore the initial setting
|
||||
(raw-derivation name
|
||||
(string-append (derivation->output-path guile)
|
||||
(string-append (derivation-input-output-path guile)
|
||||
"/bin/guile")
|
||||
`("--no-auto-compile"
|
||||
,@(append-map (lambda (directory)
|
||||
|
@ -895,13 +891,23 @@ The other arguments are as for 'derivation'."
|
|||
#:outputs outputs
|
||||
#:env-vars env-vars
|
||||
#:system system
|
||||
#:inputs `((,guile)
|
||||
(,builder)
|
||||
,@(map gexp-input->tuple
|
||||
(lowered-gexp-inputs lowered))
|
||||
#:inputs `(,guile
|
||||
,@(lowered-gexp-inputs lowered)
|
||||
,@(match graphs
|
||||
(((_ . inputs) ...) inputs)
|
||||
(_ '())))
|
||||
(((_ . inputs) ...)
|
||||
(filter derivation-input? inputs))
|
||||
(#f '())))
|
||||
#:sources `(,builder
|
||||
,@(if (and (string? modules)
|
||||
(store-path? modules))
|
||||
(list modules)
|
||||
'())
|
||||
,@(lowered-gexp-sources lowered)
|
||||
,@(match graphs
|
||||
(((_ . inputs) ...)
|
||||
(filter string? inputs))
|
||||
(#f '())))
|
||||
|
||||
#:hash hash #:hash-algo hash-algo #:recursive? recursive?
|
||||
#:references-graphs (and=> graphs graphs-file-names)
|
||||
#:allowed-references allowed
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -46,7 +46,7 @@
|
|||
(compose object->string object->string))
|
||||
|
||||
(apply open-remote-pipe* session OPEN_READ
|
||||
(string-append (derivation->output-path
|
||||
(string-append (derivation-input-output-path
|
||||
(lowered-gexp-guile lowered))
|
||||
"/bin/guile")
|
||||
"--no-auto-compile"
|
||||
|
@ -76,8 +76,14 @@ result to the current output port using the (guix repl) protocol."
|
|||
(with-imported-modules (source-module-closure '((guix repl)))
|
||||
#~(begin
|
||||
(use-modules (guix repl))
|
||||
(send-repl-response '(primitive-load #$program)
|
||||
|
||||
;; We use CURRENT-OUTPUT-PORT for REPL messages, so redirect PROGRAM's
|
||||
;; output to CURRENT-ERROR-PORT so that it does not interfere.
|
||||
(send-repl-response '(with-output-to-port (current-error-port)
|
||||
(lambda ()
|
||||
(primitive-load #$program)))
|
||||
(current-output-port))
|
||||
|
||||
(force-output))))
|
||||
|
||||
(define* (remote-eval exp session
|
||||
|
@ -95,40 +101,27 @@ remote store."
|
|||
(remote -> (connect-to-remote-daemon session
|
||||
socket-name)))
|
||||
(define inputs
|
||||
(cons (gexp-input (lowered-gexp-guile lowered))
|
||||
(cons (lowered-gexp-guile lowered)
|
||||
(lowered-gexp-inputs lowered)))
|
||||
|
||||
(define to-build
|
||||
(map (lambda (input)
|
||||
(if (derivation? (gexp-input-thing input))
|
||||
(cons (gexp-input-thing input)
|
||||
(gexp-input-output input))
|
||||
(gexp-input-thing input)))
|
||||
inputs))
|
||||
(define sources
|
||||
(lowered-gexp-sources lowered))
|
||||
|
||||
(if build-locally?
|
||||
(let ((to-send (map (lambda (input)
|
||||
(match (gexp-input-thing input)
|
||||
((? derivation? drv)
|
||||
(derivation->output-path
|
||||
drv (gexp-input-output input)))
|
||||
((? store-path? item)
|
||||
item)))
|
||||
inputs)))
|
||||
(let ((to-send (append (append-map derivation-input-output-paths
|
||||
inputs)
|
||||
sources)))
|
||||
(mbegin %store-monad
|
||||
(built-derivations to-build)
|
||||
(built-derivations inputs)
|
||||
((store-lift send-files) to-send remote #:recursive? #t)
|
||||
(return (close-connection remote))
|
||||
(return (%remote-eval lowered session))))
|
||||
(let ((to-send (map (lambda (input)
|
||||
(match (gexp-input-thing input)
|
||||
((? derivation? drv)
|
||||
(derivation-file-name drv))
|
||||
((? store-path? item)
|
||||
item)))
|
||||
inputs)))
|
||||
(let ((to-send (append (map (compose derivation-file-name
|
||||
derivation-input-derivation)
|
||||
inputs)
|
||||
sources)))
|
||||
(mbegin %store-monad
|
||||
((store-lift send-files) to-send remote #:recursive? #t)
|
||||
(return (build-derivations remote to-build))
|
||||
(return (build-derivations remote inputs))
|
||||
(return (close-connection remote))
|
||||
(return (%remote-eval lowered session)))))))
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -694,7 +694,7 @@ to compress or decompress the log file; just return it as-is."
|
|||
(h1 "GNU Guix Substitute Server")
|
||||
(p "Hi, "
|
||||
(a (@ (href
|
||||
"https://gnu.org/s/guix/manual/html_node/Invoking-guix-publish.html"))
|
||||
"https://guix.gnu.org/manual/en/html_node/Invoking-guix-publish.html"))
|
||||
(tt "guix publish"))
|
||||
" speaking. Welcome!")))
|
||||
port)))))
|
||||
|
|
|
@ -917,7 +917,7 @@ Info manual."
|
|||
(package-name "GNU Guix")
|
||||
(package-version "0")
|
||||
(bug-report-address "bug-guix@gnu.org")
|
||||
(home-page-url "https://gnu.org/s/guix"))
|
||||
(home-page-url "https://guix.gnu.org"))
|
||||
|
||||
;; Hack so that Geiser is not confused.
|
||||
(define defmod 'define-module)
|
||||
|
|
|
@ -42,6 +42,7 @@ guix/build/utils.scm
|
|||
guix/scripts.scm
|
||||
guix/scripts/build.scm
|
||||
guix/discovery.scm
|
||||
guix/lint.scm
|
||||
guix/scripts/download.scm
|
||||
guix/scripts/package.scm
|
||||
guix/scripts/install.scm
|
||||
|
@ -82,4 +83,5 @@ guix/channels.scm
|
|||
guix/profiles.scm
|
||||
guix/git.scm
|
||||
guix/deprecation.scm
|
||||
guix/derivations.scm
|
||||
nix/nix-daemon/guix-daemon.cc
|
||||
|
|
|
@ -136,7 +136,7 @@
|
|||
#:env-vars '(("HOME" . "/homeless")
|
||||
("zzz" . "Z!")
|
||||
("AAA" . "A!"))
|
||||
#:inputs `((,%bash) (,builder))))
|
||||
#:sources `(,%bash ,builder)))
|
||||
(succeeded?
|
||||
(build-derivations %store (list drv))))
|
||||
(and succeeded?
|
||||
|
@ -145,36 +145,13 @@
|
|||
(string=? (call-with-input-file path read-line)
|
||||
"hello, world"))))))
|
||||
|
||||
(test-assert "derivation with local file as input"
|
||||
(let* ((builder (add-text-to-store
|
||||
%store "my-builder.sh"
|
||||
"(while read line ; do echo \"$line\" ; done) < $in > $out"
|
||||
'()))
|
||||
(input (search-path %load-path "ice-9/boot-9.scm"))
|
||||
(input* (add-to-store %store (basename input)
|
||||
#t "sha256" input))
|
||||
(drv (derivation %store "derivation-with-input-file"
|
||||
%bash `(,builder)
|
||||
|
||||
;; Cheat to pass the actual file name to the
|
||||
;; builder.
|
||||
#:env-vars `(("in" . ,input*))
|
||||
|
||||
#:inputs `((,%bash)
|
||||
(,builder)
|
||||
(,input))))) ; ← local file name
|
||||
(and (build-derivations %store (list drv))
|
||||
;; Note: we can't compare the files because the above trick alters
|
||||
;; the contents.
|
||||
(valid-path? %store (derivation->output-path drv)))))
|
||||
|
||||
(test-assert "derivation fails but keep going"
|
||||
;; In keep-going mode, 'build-derivations' should fail because of D1, but it
|
||||
;; must return only after D2 has succeeded.
|
||||
(with-store store
|
||||
(let* ((d1 (derivation %store "fails"
|
||||
%bash `("-c" "false")
|
||||
#:inputs `((,%bash))))
|
||||
#:sources (list %bash)))
|
||||
(d2 (build-expression->derivation %store "sleep-then-succeed"
|
||||
`(begin
|
||||
,(random-text)
|
||||
|
@ -204,10 +181,10 @@
|
|||
'()))
|
||||
(drv1 (derivation %store "foo"
|
||||
%bash `(,build1)
|
||||
#:inputs `((,%bash) (,build1))))
|
||||
#:sources `(,%bash ,build1)))
|
||||
(drv2 (derivation %store "bar"
|
||||
%bash `(,build2)
|
||||
#:inputs `((,%bash) (,build2)))))
|
||||
#:sources `(,%bash ,build2))))
|
||||
(and (build-derivations %store (list drv1 drv2))
|
||||
(let ((file1 (derivation->output-path drv1))
|
||||
(file2 (derivation->output-path drv2)))
|
||||
|
@ -343,7 +320,7 @@
|
|||
(hash (sha256 (string->utf8 "hello")))
|
||||
(drv (derivation %store "fixed"
|
||||
%bash `(,builder)
|
||||
#:inputs `((,builder))
|
||||
#:sources (list builder)
|
||||
#:hash hash #:hash-algo 'sha256)))
|
||||
(fixed-output-derivation? drv)))
|
||||
|
||||
|
@ -353,7 +330,7 @@
|
|||
(hash (sha256 (string->utf8 "hello")))
|
||||
(drv (derivation %store "fixed"
|
||||
%bash `(,builder)
|
||||
#:inputs `((,builder)) ; optional
|
||||
#:sources `(,builder) ;optional
|
||||
#:hash hash #:hash-algo 'sha256))
|
||||
(succeeded? (build-derivations %store (list drv))))
|
||||
(and succeeded?
|
||||
|
@ -385,7 +362,7 @@
|
|||
(hash (sha256 (string->utf8 "hello")))
|
||||
(drv (derivation %store "fixed-rec"
|
||||
%bash `(,builder)
|
||||
#:inputs `((,builder))
|
||||
#:sources (list builder)
|
||||
#:hash (base32 "0sg9f58l1jj88w6pdrfdpj5x9b1zrwszk84j81zvby36q9whhhqa")
|
||||
#:hash-algo 'sha256
|
||||
#:recursive? #t))
|
||||
|
@ -419,11 +396,13 @@
|
|||
(final1 (derivation %store "final"
|
||||
%bash `(,builder3)
|
||||
#:env-vars `(("in" . ,fixed-out))
|
||||
#:inputs `((,%bash) (,builder3) (,fixed1))))
|
||||
#:sources (list %bash builder3)
|
||||
#:inputs (list (derivation-input fixed1))))
|
||||
(final2 (derivation %store "final"
|
||||
%bash `(,builder3)
|
||||
#:env-vars `(("in" . ,fixed-out))
|
||||
#:inputs `((,%bash) (,builder3) (,fixed2))))
|
||||
#:sources (list %bash builder3)
|
||||
#:inputs (list (derivation-input fixed2))))
|
||||
(succeeded? (build-derivations %store
|
||||
(list final1 final2))))
|
||||
(and succeeded?
|
||||
|
@ -439,7 +418,7 @@
|
|||
#:env-vars '(("HOME" . "/homeless")
|
||||
("zzz" . "Z!")
|
||||
("AAA" . "A!"))
|
||||
#:inputs `((,%bash) (,builder))
|
||||
#:sources `(,%bash ,builder)
|
||||
#:outputs '("out" "second")))
|
||||
(succeeded? (build-derivations %store (list drv))))
|
||||
(and succeeded?
|
||||
|
@ -459,7 +438,7 @@
|
|||
'()))
|
||||
(drv (derivation %store "fixed"
|
||||
%bash `(,builder)
|
||||
#:inputs `((,%bash) (,builder))
|
||||
#:sources `(,%bash ,builder)
|
||||
#:outputs '("out" "AAA")))
|
||||
(succeeded? (build-derivations %store (list drv))))
|
||||
(and succeeded?
|
||||
|
@ -481,15 +460,15 @@
|
|||
(inputs (map (lambda (file)
|
||||
(derivation %store "derivation-input"
|
||||
%bash '()
|
||||
#:inputs `((,%bash) (,file))))
|
||||
#:sources `(,%bash ,file)))
|
||||
sources))
|
||||
(builder (add-text-to-store %store "builder.sh"
|
||||
"echo one > $one ; echo two > $two"
|
||||
'()))
|
||||
(drv (derivation %store "derivation"
|
||||
%bash `(,builder)
|
||||
#:inputs `((,%bash) (,builder)
|
||||
,@(map list (append sources inputs)))
|
||||
#:sources `(,%bash ,builder ,@sources)
|
||||
#:inputs (map derivation-input inputs)
|
||||
#:outputs '("two" "one")))
|
||||
(drv* (call-with-input-file (derivation-file-name drv)
|
||||
read-derivation)))
|
||||
|
@ -520,7 +499,7 @@
|
|||
'()))
|
||||
(mdrv (derivation %store "multiple-output"
|
||||
%bash `(,builder1)
|
||||
#:inputs `((,%bash) (,builder1))
|
||||
#:sources (list %bash builder1)
|
||||
#:outputs '("out" "two")))
|
||||
(builder2 (add-text-to-store %store "my-mo-user-builder.sh"
|
||||
"read x < $one;
|
||||
|
@ -535,11 +514,11 @@
|
|||
("two"
|
||||
. ,(derivation->output-path
|
||||
mdrv "two")))
|
||||
#:inputs `((,%bash)
|
||||
(,builder2)
|
||||
#:sources (list %bash builder2)
|
||||
;; two occurrences of MDRV:
|
||||
(,mdrv)
|
||||
(,mdrv "two")))))
|
||||
#:inputs
|
||||
(list (derivation-input mdrv)
|
||||
(derivation-input mdrv '("two"))))))
|
||||
(and (build-derivations %store (list (pk 'udrv udrv)))
|
||||
(let ((p (derivation->output-path udrv)))
|
||||
(and (valid-path? %store p)
|
||||
|
@ -565,7 +544,7 @@
|
|||
`(("bash" . ,%bash)
|
||||
("input1" . ,input1)
|
||||
("input2" . ,input2))
|
||||
#:inputs `((,%bash) (,builder))))
|
||||
#:sources (list %bash builder)))
|
||||
(out (derivation->output-path drv)))
|
||||
(define (deps path . deps)
|
||||
(let ((count (length deps)))
|
||||
|
@ -598,7 +577,7 @@
|
|||
(test-assert "derivation #:allowed-references, ok"
|
||||
(let ((drv (derivation %store "allowed" %bash
|
||||
'("-c" "echo hello > $out")
|
||||
#:inputs `((,%bash))
|
||||
#:sources (list %bash)
|
||||
#:allowed-references '())))
|
||||
(build-derivations %store (list drv))))
|
||||
|
||||
|
@ -606,7 +585,7 @@
|
|||
(let* ((txt (add-text-to-store %store "foo" "Hello, world."))
|
||||
(drv (derivation %store "disallowed" %bash
|
||||
`("-c" ,(string-append "echo " txt "> $out"))
|
||||
#:inputs `((,%bash) (,txt))
|
||||
#:sources (list %bash txt)
|
||||
#:allowed-references '())))
|
||||
(guard (c ((store-protocol-error? c)
|
||||
;; There's no specific error message to check for.
|
||||
|
@ -617,14 +596,14 @@
|
|||
(test-assert "derivation #:allowed-references, self allowed"
|
||||
(let ((drv (derivation %store "allowed" %bash
|
||||
'("-c" "echo $out > $out")
|
||||
#:inputs `((,%bash))
|
||||
#:sources (list %bash)
|
||||
#:allowed-references '("out"))))
|
||||
(build-derivations %store (list drv))))
|
||||
|
||||
(test-assert "derivation #:allowed-references, self not allowed"
|
||||
(let ((drv (derivation %store "disallowed" %bash
|
||||
`("-c" ,"echo $out > $out")
|
||||
#:inputs `((,%bash))
|
||||
#:sources (list %bash)
|
||||
#:allowed-references '())))
|
||||
(guard (c ((store-protocol-error? c)
|
||||
;; There's no specific error message to check for.
|
||||
|
@ -635,7 +614,7 @@
|
|||
(test-assert "derivation #:disallowed-references, ok"
|
||||
(let ((drv (derivation %store "disallowed" %bash
|
||||
'("-c" "echo hello > $out")
|
||||
#:inputs `((,%bash))
|
||||
#:sources (list %bash)
|
||||
#:disallowed-references '("out"))))
|
||||
(build-derivations %store (list drv))))
|
||||
|
||||
|
@ -643,7 +622,7 @@
|
|||
(let* ((txt (add-text-to-store %store "foo" "Hello, world."))
|
||||
(drv (derivation %store "disdisallowed" %bash
|
||||
`("-c" ,(string-append "echo " txt "> $out"))
|
||||
#:inputs `((,%bash) (,txt))
|
||||
#:sources (list %bash txt)
|
||||
#:disallowed-references (list txt))))
|
||||
(guard (c ((store-protocol-error? c)
|
||||
;; There's no specific error message to check for.
|
||||
|
@ -662,7 +641,7 @@
|
|||
'("-c" "echo -n $GUIX_STATE_DIRECTORY > $out")
|
||||
#:hash (sha256 (string->utf8 value))
|
||||
#:hash-algo 'sha256
|
||||
#:inputs `((,%bash))
|
||||
#:sources (list %bash)
|
||||
#:leaked-env-vars '("GUIX_STATE_DIRECTORY"))))
|
||||
(and (build-derivations %store (list drv))
|
||||
(call-with-input-file (derivation->output-path drv)
|
||||
|
@ -688,8 +667,8 @@
|
|||
,(string-append
|
||||
(derivation->output-path %coreutils)
|
||||
"/bin")))
|
||||
#:inputs `((,builder)
|
||||
(,%coreutils))))
|
||||
#:sources (list builder)
|
||||
#:inputs (list (derivation-input %coreutils))))
|
||||
(succeeded?
|
||||
(build-derivations %store (list drv))))
|
||||
(and succeeded?
|
||||
|
@ -1239,7 +1218,9 @@
|
|||
(derivation->output-path bash-full)
|
||||
|
||||
`("-e" ,script1)
|
||||
#:inputs `((,bash-full) (,script1))))
|
||||
#:sources (list script1)
|
||||
#:inputs
|
||||
(list (derivation-input bash-full '("out")))))
|
||||
(drv2 (map-derivation %store drv1
|
||||
`((,bash-full . ,%bash)
|
||||
(,script1 . ,script2))))
|
||||
|
|
|
@ -849,8 +849,9 @@
|
|||
#:effective-version "2.0")))
|
||||
(define (matching-input drv output)
|
||||
(lambda (input)
|
||||
(and (eq? (gexp-input-thing input) drv)
|
||||
(string=? (gexp-input-output input) output))))
|
||||
(and (eq? (derivation-input-derivation input) drv)
|
||||
(equal? (derivation-input-sub-derivations input)
|
||||
(list output)))))
|
||||
|
||||
(mbegin %store-monad
|
||||
(return (and (find (matching-input extension-drv "out")
|
||||
|
@ -867,7 +868,8 @@
|
|||
"/lib/guile/2.0/site-ccache")
|
||||
(lowered-gexp-load-compiled-path lexp))
|
||||
(= 2 (length (lowered-gexp-load-compiled-path lexp)))
|
||||
(eq? (lowered-gexp-guile lexp) (%guile-for-build)))))))
|
||||
(eq? (derivation-input-derivation (lowered-gexp-guile lexp))
|
||||
(%guile-for-build)))))))
|
||||
|
||||
(test-assertm "gexp->derivation #:references-graphs"
|
||||
(mlet* %store-monad
|
||||
|
|
755
tests/lint.scm
755
tests/lint.scm
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue