Merge branch 'master' into core-updates

master
Mark H Weaver 2019-08-22 15:53:27 -04:00
commit 893c2df00d
No known key found for this signature in database
GPG Key ID: 7CEF29847562C516
81 changed files with 2651 additions and 464 deletions

View File

@ -25514,6 +25514,7 @@ evaluates to. As an example, @var{file} might contain a definition like this:
(environment managed-host-environment-type)
(configuration (machine-ssh-configuration
(host-name "localhost")
(user "alice")
(identity "./id_rsa")
(port 2222)))))
@end example
@ -25546,6 +25547,15 @@ accepts store items it receives from the coordinator:
# guix archive --authorize < coordinator-public-key.txt
@end example
@code{user}, in this example, specifies the name of the user account to log in
as to perform the deployment. Its default value is @code{root}, but root
login over SSH may be forbidden in some cases. To work around this,
@command{guix deploy} can log in as an unprivileged user and employ
@code{sudo} to escalate privileges. This will only work if @code{sudo} is
currently installed on the remote and can be invoked non-interactively as
@code{user}. That is: the line in @code{sudoers} granting @code{user} the
ability to use @code{sudo} must contain the @code{NOPASSWD} tag.
@deftp {Data Type} machine
This is the data type representing a single machine in a heterogeneous Guix
deployment.
@ -25573,6 +25583,14 @@ with an @code{environment} of @code{managed-host-environment-type}.
@table @asis
@item @code{host-name}
@item @code{build-locally?} (default: @code{#t})
If false, system derivations will be built on the machine being deployed to.
@item @code{system}
The Nix system type describing the architecture of the machine being deployed
to. This should look something like ``x86_64-linux''.
@item @code{authorize?} (default: @code{#t})
If true, the coordinator's signing key will be added to the remote's ACL
keyring.
@item @code{port} (default: @code{22})
@item @code{user} (default: @code{"root"})
@item @code{identity} (default: @code{#f})

View File

@ -4,6 +4,7 @@
;;; Copyright © 2016 Jan Nieuwenhuizen <janneke@gnu.org>
;;; Copyright © 2016 Manolis Fragkiskos Ragkousis <manolis837@gmail.com>
;;; Copyright © 2019 Marius Bakke <mbakke@fastmail.com>
;;; Copyright © 2019 Carl Dong <contact@carldong.me>
;;;
;;; This file is part of GNU Guix.
;;;
@ -93,7 +94,7 @@ C_INCLUDE_PATH et al."
;; We're building the sans-libc cross-compiler, so nothing to do.
#t)))
(define* (set-cross-path/mingw #:key inputs #:allow-other-keys)
(define* (set-cross-path/mingw #:key inputs target #:allow-other-keys)
"Add the cross MinGW headers to CROSS_C_*_INCLUDE_PATH, and remove them from
C_*INCLUDE_PATH."
(let ((libc (assoc-ref inputs "libc"))
@ -110,7 +111,7 @@ C_*INCLUDE_PATH."
(if libc
(let ((cpath (string-append libc "/include"
":" libc "/i686-w64-mingw32/include")))
":" libc "/" target "/include")))
(for-each (cut setenv <> cpath)
%gcc-cross-include-paths))
@ -140,7 +141,7 @@ C_*INCLUDE_PATH."
(when libc
(setenv "CROSS_LIBRARY_PATH"
(string-append libc "/lib"
":" libc "/i686-w64-mingw32/lib")))
":" libc "/" target "/lib")))
(setenv "CPP" (string-append gcc "/bin/cpp"))
(for-each (lambda (var)
@ -166,8 +167,12 @@ C_*INCLUDE_PATH."
a target triplet."
(modify-phases phases
(add-before 'configure 'set-cross-path
(if (string-contains target "mingw")
set-cross-path/mingw
;; This mingw32 target checking logic should match that of target-mingw?
;; in (guix utils), but (guix utils) is too large too copy over to the
;; build side entirely and for now we have no way to select variables to
;; copy over. See (gnu packages cross-base) for more details.
(if (string-suffix? "-mingw32" target)
(cut set-cross-path/mingw #:target target <...>)
set-cross-path))
(add-after 'install 'make-cross-binutils-visible
(cut make-cross-binutils-visible #:target target <...>))

View File

@ -471,10 +471,6 @@ upon error."
mounts)
"ext4"))
(define (lookup-module name)
(string-append linux-module-directory "/"
(ensure-dot-ko name)))
(display "Welcome, this is GNU's early boot Guile.\n")
(display "Use '--repl' for an initrd REPL.\n\n")
@ -489,9 +485,8 @@ upon error."
(start-repl))
(display "loading kernel modules...\n")
(for-each (cut load-linux-module* <>
#:lookup-module lookup-module)
(map lookup-module linux-modules))
(load-linux-modules-from-directory linux-modules
linux-module-directory)
(when keymap-file
(let ((status (system* "loadkeys" keymap-file)))

View File

@ -1,6 +1,7 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2014, 2016, 2018, 2019 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com>
;;; Copyright © 2018 Danny Milosavljevic <dannym@scratchpost.org>
;;;
;;; This file is part of GNU Guix.
;;;
@ -30,8 +31,10 @@
#:use-module (ice-9 vlist)
#:use-module (ice-9 match)
#:use-module (ice-9 rdelim)
#:autoload (ice-9 pretty-print) (pretty-print)
#:export (dot-ko
ensure-dot-ko
module-formal-name
module-aliases
module-dependencies
module-soft-dependencies
@ -42,13 +45,18 @@
modules-loaded
module-loaded?
load-linux-module*
load-linux-modules-from-directory
current-module-debugging-port
device-module-aliases
known-module-aliases
matching-modules
missing-modules))
missing-modules
write-module-name-database
write-module-alias-database
write-module-device-database))
;;; Commentary:
;;;
@ -95,6 +103,14 @@ key/value pairs.."
(define %not-comma
(char-set-complement (char-set #\,)))
(define (module-formal-name file)
"Return the module name of FILE as it appears in its info section. Usually
the module name is the same as the base name of FILE, modulo hyphens and minus
the \".ko\" extension."
(match (assq 'name (modinfo-section-contents file))
(('name . name) name)
(#f #f)))
(define (module-dependencies file)
"Return the list of modules that FILE depends on. The returned list
contains module names, not actual file names."
@ -310,6 +326,18 @@ appears in BLACK-LIST are not loaded."
(or (and recursive? (= EEXIST (system-error-errno args)))
(apply throw args)))))))
(define (load-linux-modules-from-directory modules directory)
"Load MODULES and their dependencies from DIRECTORY, a directory containing
the '.ko' files. The '.ko' suffix is automatically added to MODULES if
needed."
(define module-name->file-name
(module-name-lookup directory))
(for-each (lambda (module)
(load-linux-module* (module-name->file-name module)
#:lookup-module module-name->file-name))
modules))
;;;
;;; Device modules.
@ -486,4 +514,121 @@ are required to access DEVICE."
(remove (cut member <> provided) modules))
'()))
;;;
;;; Module databases.
;;;
(define (module-name->file-name/guess directory name)
"Guess the file name corresponding to NAME, a module name. That doesn't
always work because sometimes underscores in NAME map to hyphens (e.g.,
\"input-leds.ko\"), sometimes not (e.g., \"mac_hid.ko\")."
(string-append directory "/" (ensure-dot-ko name)))
(define (module-name-lookup directory)
"Return a one argument procedure that takes a module name (e.g.,
\"input_leds\") and returns its absolute file name (e.g.,
\"/.../input-leds.ko\")."
(catch 'system-error
(lambda ()
(define mapping
(call-with-input-file (string-append directory "/modules.name")
read))
(lambda (name)
(or (assoc-ref mapping name)
(module-name->file-name/guess directory name))))
(lambda args
(if (= ENOENT (system-error-errno args))
(cut module-name->file-name/guess directory <>)
(apply throw args)))))
(define (write-module-name-database directory)
"Write a database that maps \"module names\" as they appear in the relevant
ELF section of '.ko' files, to actual file names. This format is
Guix-specific. It aims to deal with inconsistent naming, in particular
hyphens vs. underscores."
(define mapping
(map (lambda (file)
(match (module-formal-name file)
(#f (cons (basename file ".ko") file))
(name (cons name file))))
(find-files directory "\\.ko$")))
(call-with-output-file (string-append directory "/modules.name")
(lambda (port)
(display ";; Module name to file name mapping.
;;
;; This format is Guix-specific; it is not supported by upstream Linux tools.
\n"
port)
(pretty-print mapping port))))
(define (write-module-alias-database directory)
"Traverse the '.ko' files in DIRECTORY and create the corresponding
'modules.alias' file."
(define aliases
(map (lambda (file)
(cons (file-name->module-name file) (module-aliases file)))
(find-files directory "\\.ko$")))
(call-with-output-file (string-append directory "/modules.alias")
(lambda (port)
(display "# Aliases extracted from modules themselves.\n" port)
(for-each (match-lambda
((module . aliases)
(for-each (lambda (alias)
(format port "alias ~a ~a\n" alias module))
aliases)))
aliases))))
(define (aliases->device-tuple aliases)
"Traverse ALIASES, a list of module aliases, and search for
\"char-major-M-N\", \"block-major-M-N\", or \"devname:\" aliases. When they
are found, return a tuple (DEVNAME TYPE MAJOR MINOR), otherwise return #f."
(define (char/block-major? alias)
(or (string-prefix? "char-major-" alias)
(string-prefix? "block-major-" alias)))
(define (char/block-major->tuple alias)
(match (string-tokenize alias %not-dash)
((type "major" (= string->number major) (= string->number minor))
(list (match type
("char" "c")
("block" "b"))
major minor))))
(let* ((devname (any (lambda (alias)
(and (string-prefix? "devname:" alias)
(string-drop alias 8)))
aliases))
(major/minor (match (find char/block-major? aliases)
(#f #f)
(str (char/block-major->tuple str)))))
(and devname major/minor
(cons devname major/minor))))
(define %not-dash
(char-set-complement (char-set #\-)))
(define (write-module-device-database directory)
"Traverse the '.ko' files in DIRECTORY and create the corresponding
'modules.devname' file. This file contains information about modules that can
be loaded on-demand, such as file system modules."
(define aliases
(filter-map (lambda (file)
(match (aliases->device-tuple (module-aliases file))
(#f #f)
(tuple (cons (file-name->module-name file) tuple))))
(find-files directory "\\.ko$")))
(call-with-output-file (string-append directory "/modules.devname")
(lambda (port)
(display "# Device nodes to trigger on-demand module loading.\n" port)
(for-each (match-lambda
((module devname type major minor)
(format port "~a ~a ~a~a:~a~%"
module devname type major minor)))
aliases))))
;;; linux-modules.scm ends here

View File

@ -130,7 +130,8 @@ SYSTEM."
"aarch64-linux-gnu"
"powerpc-linux-gnu"
"i586-pc-gnu" ;aka. GNU/Hurd
"i686-w64-mingw32"))
"i686-w64-mingw32"
"x86_64-w64-mingw32"))
(define %guixsd-supported-systems
'("x86_64-linux" "i686-linux" "armhf-linux"))

View File

@ -161,6 +161,7 @@ GNU_SYSTEM_MODULES = \
%D%/packages/electronics.scm \
%D%/packages/elf.scm \
%D%/packages/elixir.scm \
%D%/packages/elm.scm \
%D%/packages/embedded.scm \
%D%/packages/emacs.scm \
%D%/packages/emacs-xyz.scm \
@ -769,9 +770,12 @@ dist_patch_DATA = \
%D%/packages/patches/dstat-fix-crash-when-specifying-delay.patch \
%D%/packages/patches/dstat-skip-devices-without-io.patch \
%D%/packages/patches/dvd+rw-tools-add-include.patch \
%D%/packages/patches/einstein-build.patch \
%D%/packages/patches/elfutils-tests-ptrace.patch \
%D%/packages/patches/elixir-path-length.patch \
%D%/packages/patches/einstein-build.patch \
%D%/packages/patches/elm-compiler-disable-reactor.patch \
%D%/packages/patches/elm-compiler-fix-map-key.patch \
%D%/packages/patches/elm-compiler-relax-glsl-bound.patch \
%D%/packages/patches/emacs-dired-toggle-sudo-emacs-26.patch \
%D%/packages/patches/emacs-exec-path.patch \
%D%/packages/patches/emacs-fix-scheme-indent-function.patch \

View File

@ -24,6 +24,7 @@
#:use-module (guix records)
#:use-module (guix store)
#:use-module ((guix utils) #:select (source-properties->location))
#:use-module (srfi srfi-35)
#:export (environment-type
environment-type?
environment-type-name
@ -40,7 +41,13 @@
machine-display-name
deploy-machine
machine-remote-eval))
roll-back-machine
machine-remote-eval
&deploy-error
deploy-error?
deploy-error-should-roll-back
deploy-error-captured-args))
;;; Commentary:
;;;
@ -66,6 +73,7 @@
;; of the form '(machine-remote-eval machine exp)'.
(machine-remote-eval environment-type-machine-remote-eval) ; procedure
(deploy-machine environment-type-deploy-machine) ; procedure
(roll-back-machine environment-type-roll-back-machine) ; procedure
;; Metadata.
(name environment-type-name) ; symbol
@ -105,3 +113,20 @@ are built and deployed to MACHINE beforehand."
MACHINE, activating it on MACHINE and switching MACHINE to the new generation."
(let ((environment (machine-environment machine)))
((environment-type-deploy-machine environment) machine)))
(define (roll-back-machine machine)
"Monadic procedure rolling back to the previous system generation on
MACHINE. Return the number of the generation that was current before switching
and the new generation number."
(let ((environment (machine-environment machine)))
((environment-type-roll-back-machine environment) machine)))
;;;
;;; Error types.
;;;
(define-condition-type &deploy-error &error
deploy-error?
(should-roll-back deploy-error-should-roll-back)
(captured-args deploy-error-captured-args))

View File

@ -17,6 +17,7 @@
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
(define-module (gnu machine ssh)
#:use-module (gnu bootloader)
#:use-module (gnu machine)
#:autoload (gnu packages gnupg) (guile-gcrypt)
#:use-module (gnu system)
@ -27,15 +28,20 @@
#:use-module (guix i18n)
#:use-module (guix modules)
#:use-module (guix monads)
#:use-module (guix pki)
#:use-module (guix records)
#:use-module (guix remote)
#:use-module (guix scripts system reconfigure)
#:use-module (guix ssh)
#:use-module (guix store)
#:use-module (guix utils)
#:use-module (gcrypt pk-crypto)
#:use-module (ice-9 match)
#:use-module (ice-9 textual-ports)
#:use-module (srfi srfi-1)
#:use-module (srfi srfi-19)
#:use-module (srfi srfi-26)
#:use-module (srfi srfi-34)
#:use-module (srfi srfi-35)
#:export (managed-host-environment-type
@ -45,6 +51,7 @@
machine-ssh-configuration-host-name
machine-ssh-configuration-build-locally?
machine-ssh-configuration-authorize?
machine-ssh-configuration-port
machine-ssh-configuration-user
machine-ssh-configuration-session))
@ -67,16 +74,19 @@
make-machine-ssh-configuration
machine-ssh-configuration?
this-machine-ssh-configuration
(host-name machine-ssh-configuration-host-name) ; string
(build-locally? machine-ssh-configuration-build-locally?
(host-name machine-ssh-configuration-host-name) ; string
(system machine-ssh-configuration-system) ; string
(build-locally? machine-ssh-configuration-build-locally? ; boolean
(default #t))
(port machine-ssh-configuration-port ; integer
(authorize? machine-ssh-configuration-authorize? ; boolean
(default #t))
(port machine-ssh-configuration-port ; integer
(default 22))
(user machine-ssh-configuration-user ; string
(user machine-ssh-configuration-user ; string
(default "root"))
(identity machine-ssh-configuration-identity ; path to a private key
(identity machine-ssh-configuration-identity ; path to a private key
(default #f))
(session machine-ssh-configuration-session ; session
(session machine-ssh-configuration-session ; session
(default #f)))
(define (machine-ssh-session machine)
@ -99,14 +109,26 @@ one from the configuration's parameters if one was not provided."
;;; Remote evaluation.
;;;
(define (machine-become-command machine)
"Return as a list of strings the program and arguments necessary to run a
shell command with escalated privileges for MACHINE's configuration."
(if (string= "root" (machine-ssh-configuration-user
(machine-configuration machine)))
'()
'("/run/setuid-programs/sudo" "-n" "--")))
(define (managed-host-remote-eval machine exp)
"Internal implementation of 'machine-remote-eval' for MACHINE instances with
an environment type of 'managed-host."
(maybe-raise-unsupported-configuration-error machine)
(remote-eval exp (machine-ssh-session machine)
#:build-locally?
(machine-ssh-configuration-build-locally?
(machine-configuration machine))))
(let ((config (machine-configuration machine)))
(remote-eval exp (machine-ssh-session machine)
#:build-locally?
(machine-ssh-configuration-build-locally? config)
#:system
(machine-ssh-configuration-system config)
#:become-command
(machine-become-command machine))))
;;;
@ -144,7 +166,8 @@ MACHINE's 'system' declaration do not exist on the machine."
(define (check-labeled-file-system fs)
(define remote-exp
(with-imported-modules '((gnu build file-systems))
(with-imported-modules (source-module-closure
'((gnu build file-systems)))
#~(begin
(use-modules (gnu build file-systems))
(find-partition-by-label #$(file-system-label->string
@ -221,7 +244,7 @@ MACHINE's 'system' declaration do not exist on the machine."
#$(uuid->string device))))
((file-system-label? device)
#~(find-partition-by-label
(file-system-label->string #$device)))))
#$(file-system-label->string device)))))
(missing-modules dev '#$(operating-system-initrd-modules
(machine-operating-system machine)))))))
@ -240,10 +263,29 @@ MACHINE's 'system' declaration do not exist on the machine."
device)
(return #t)))
(define (machine-check-building-for-appropriate-system machine)
"Raise a '&message' error condition if MACHINE is configured to be built
locally and the 'system' field does not match the '%current-system' reported
by MACHINE."
(let ((config (machine-configuration machine))
(system (remote-system (machine-ssh-session machine))))
(when (and (machine-ssh-configuration-build-locally? config)
(not (string= system (machine-ssh-configuration-system config))))
(raise (condition
(&message
(message (format #f (G_ "incorrect target system \
('~a' was given, while the system reports that it is '~a')~%")
(machine-ssh-configuration-system config)
system)))))))
(with-monad %store-monad (return #t)))
(define (check-deployment-sanity machine)
"Raise a '&message' error condition if it is clear that deploying MACHINE's
'system' declaration would fail."
;; Order is important here -- an incorrect value for 'system' will cause
;; invocations of 'remote-eval' to fail.
(mbegin %store-monad
(machine-check-building-for-appropriate-system machine)
(machine-check-file-system-availability machine)
(machine-check-initrd-modules machine)))
@ -310,10 +352,36 @@ of MACHINE's system profile, ordered from most recent to oldest."
(boot-parameters-kernel-arguments params))))))))
generations))))
(define-syntax-rule (with-roll-back should-roll-back? mbody ...)
"Catch exceptions that arise when binding MBODY, a monadic expression in
%STORE-MONAD, and collect their arguments in a &deploy-error condition, with
the 'should-roll-back' field set to SHOULD-ROLL-BACK?"
(catch #t
(lambda ()
mbody ...)
(lambda args
(raise (condition (&deploy-error
(should-roll-back should-roll-back?)
(captured-args args)))))))
(define (deploy-managed-host machine)
"Internal implementation of 'deploy-machine' for MACHINE instances with an
environment type of 'managed-host."
(maybe-raise-unsupported-configuration-error machine)
(when (machine-ssh-configuration-authorize?
(machine-configuration machine))
(unless (file-exists? %public-key-file)
(raise (condition
(&message
(message (format #f (G_ "no signing key '~a'. \
have you run 'guix archive --generate-key?'")
%public-key-file))))))
(remote-authorize-signing-key (call-with-input-file %public-key-file
(lambda (port)
(string->canonical-sexp
(get-string-all port))))
(machine-ssh-session machine)
(machine-become-command machine)))
(mlet %store-monad ((_ (check-deployment-sanity machine))
(boot-parameters (machine-boot-parameters machine)))
(let* ((os (machine-operating-system machine))
@ -322,9 +390,60 @@ environment type of 'managed-host."
(bootloader-configuration (operating-system-bootloader os))
(bootcfg (operating-system-bootcfg os menu-entries)))
(mbegin %store-monad
(switch-to-system eval os)
(upgrade-shepherd-services eval os)
(install-bootloader eval bootloader-configuration bootcfg)))))
(with-roll-back #f
(switch-to-system eval os))
(with-roll-back #t
(mbegin %store-monad
(upgrade-shepherd-services eval os)
(install-bootloader eval bootloader-configuration bootcfg)))))))
;;;
;;; Roll-back.
;;;
(define (roll-back-managed-host machine)
"Internal implementation of 'roll-back-machine' for MACHINE instances with
an environment type of 'managed-host."
(define remote-exp
(with-extensions (list guile-gcrypt)
(with-imported-modules (source-module-closure '((guix config)
(guix profiles)))
#~(begin
(use-modules (guix config)
(guix profiles))
(define %system-profile
(string-append %state-directory "/profiles/system"))
(define target-generation
(relative-generation %system-profile -1))
(if target-generation
(switch-to-generation %system-profile target-generation)
'error)))))
(define roll-back-failure
(condition (&message (message (G_ "could not roll-back machine")))))
(mlet* %store-monad ((boot-parameters (machine-boot-parameters machine))
(_ -> (if (< (length boot-parameters) 2)
(raise roll-back-failure)))
(entries -> (map boot-parameters->menu-entry
(list (second boot-parameters))))
(old-entries -> (map boot-parameters->menu-entry
(drop boot-parameters 2)))
(bootloader -> (operating-system-bootloader
(machine-operating-system machine)))
(bootcfg (lower-object
((bootloader-configuration-file-generator
(bootloader-configuration-bootloader
bootloader))
bootloader entries
#:old-entries old-entries)))
(remote-result (machine-remote-eval machine remote-exp)))
(when (eqv? 'error remote-result)
(raise roll-back-failure))))
;;;
@ -335,6 +454,7 @@ environment type of 'managed-host."
(environment-type
(machine-remote-eval managed-host-remote-eval)
(deploy-machine deploy-managed-host)
(roll-back-machine roll-back-managed-host)
(name 'managed-host-environment-type)
(description "Provisioning for machines that are accessible over SSH
and have a known host-name. This entails little more than maintaining an SSH

View File

@ -684,7 +684,7 @@ connection alive.")
(define-public isc-dhcp
(let* ((bind-major-version "9")
(bind-minor-version "11")
(bind-patch-version "9")
(bind-patch-version "10")
(bind-release-type "") ; for patch release, use "-P"
(bind-release-version "") ; for patch release, e.g. "6"
(bind-version (string-append bind-major-version
@ -825,7 +825,7 @@ connection alive.")
"/bind-" bind-version ".tar.gz"))
(sha256
(base32
"03n57as73ygw6g3lqsmq2idkykajpbskzgixixdvi5a76m4g0fwn"))))
"1hvhdaar9swh5087kzkbmav1nbn19rxh0m60x0d7gri0v8689fxj"))))
;; When cross-compiling, we need the cross Coreutils and sed.
;; Otherwise just use those from %FINAL-INPUTS.
@ -1240,9 +1240,10 @@ commands and their arguments.")
CONFIG_READLINE=y\n" port)
(close-port port))
#t))
(add-after 'install 'install-man-pages
(add-after 'install 'install-documentation
(lambda* (#:key outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
(doc (string-append out "/share/doc/wpa-supplicant"))
(man (string-append out "/share/man"))
(man5 (string-append man "/man5"))
(man8 (string-append man "/man8")))
@ -1255,6 +1256,15 @@ commands and their arguments.")
(find-files "doc/docbook" "\\.5"))
(for-each (copy-man-page man8)
(find-files "doc/docbook" "\\.8"))
;; wpa_supplicant.conf(5) does not explain all configuration
;; options but refers to the example config file, so install it
;; along with READMEs.
(for-each (lambda (file)
(install-file file doc))
'("README" "README-DPP" "README-HS20"
"README-P2P" "README-WPS"
"wpa_supplicant.conf"))
#t))))
#:make-flags (list "CC=gcc"
@ -1303,7 +1313,7 @@ command.")
CONFIG_CTRL_IFACE_DBUS_INTRO=y\n" port)
(close-port port))
#t))
(add-after 'install-man-pages 'install-dbus-conf
(add-after 'install-documentation 'install-dbus-conf
(lambda* (#:key outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
(dir (string-append out "/etc/dbus-1/system.d")))
@ -2124,14 +2134,14 @@ done with the @code{auditctl} utility.")
(define-public nmap
(package
(name "nmap")
(version "7.70")
(version "7.80")
(source (origin
(method url-fetch)
(uri (string-append "https://nmap.org/dist/nmap-" version
".tar.bz2"))
(sha256
(base32
"063fg8adx23l4irrh5kn57hsmi1xvjkar4vm4k6g94ppan4hcyw4"))
"1aizfys6l9f9grm82bk878w56mg0zpkfns3spzj157h98875mypw"))
(modules '((guix build utils)))
(snippet
'(begin
@ -2744,14 +2754,14 @@ you are running, what theme or icon set you are using, etc.")
(define-public nnn
(package
(name "nnn")
(version "1.9")
(version "2.6")
(source
(origin
(method url-fetch)
(uri (string-append "https://github.com/jarun/nnn/releases/download/v"
version "/nnn-v" version ".tar.gz"))
(sha256
(base32 "1d6z12y4rlg4dzhpm30irpq2ak8hjh5zykkp2n7vxnz5m4ki89zp"))))
(base32 "0xb6crd9vig3xgjwl8m4bmgcs4azfmfdpx3g8pdpzs28jdg7i3rr"))))
(build-system gnu-build-system)
(inputs
`(("ncurses" ,ncurses)

View File

@ -81,15 +81,15 @@ in FITS files.")
(define-public wcslib
(package
(name "wcslib")
(version "6.2")
(version "6.4")
(source
(origin
(method url-fetch)
(uri (string-append
"ftp://ftp.atnf.csiro.au/pub/software/wcslib/wcslib" version
"ftp://ftp.atnf.csiro.au/pub/software/wcslib/wcslib-" version
".tar.bz2"))
(sha256
(base32 "01fqckazhbfqqhyr0wd9vcks1m2afmsh83l981alxg2r54jgwkdv"))))
(base32 "003h23m6d5wcs29v2vbnl63f3z35k5x70lpsqlz5c9bp1bvizh8k"))))
(inputs
`(("cfitsio" ,cfitsio)))
(build-system gnu-build-system)

View File

@ -716,7 +716,7 @@ emulation (valve, tape), bit fiddling (decimator, pointer-cast), etc.")
(define-public csound
(package
(name "csound")
(version "6.12.2")
(version "6.13.0")
(source (origin
(method git-fetch)
(uri (git-reference
@ -725,7 +725,7 @@ emulation (valve, tape), bit fiddling (decimator, pointer-cast), etc.")
(file-name (git-file-name name version))
(sha256
(base32
"01krxcf0alw9k7p5sv0s707600an4sl7lhw3bymbwgqrj0v2p9z2"))))
"14822ybqyp31z18gky2y9zadr9dkbhabg97y139py73w7v3af1bh"))))
(build-system cmake-build-system)
(inputs
`(("alsa-lib" ,alsa-lib)
@ -1107,16 +1107,16 @@ follower.")
(define-public fluidsynth
(package
(name "fluidsynth")
(version "2.0.5")
(version "2.0.6")
(source (origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/FluidSynth/fluidsynth.git")
(commit (string-append "v" version))))
(file-name (string-append name "-" version "-checkout"))
(file-name (git-file-name name version))
(sha256
(base32
"0rv0apxbj0cgm8f8sqf5xr6kdi4q58ph92ip6cg716ha0ca5lr8y"))))
"0nas9pp9r8rnziznxm65x2yzf1ryg98zr3946g0br3s38sjf8l3a"))))
(build-system cmake-build-system)
(arguments
'(#:tests? #f ; no check target

View File

@ -5089,6 +5089,41 @@ by a sparse number of variables, this method can reduce the complexity of
data, to only emphasize the data that actually matters.")
(license license:expat)))
(define-public r-rcistarget
(package
(name "r-rcistarget")
(version "1.4.0")
(source
(origin
(method url-fetch)
(uri (bioconductor-uri "RcisTarget" version))
(sha256
(base32
"133x2vr86ifbk82q08x1c8q19zsk5za7b6qrzz77dhsyf4bhcvpd"))))
(properties `((upstream-name . "RcisTarget")))
(build-system r-build-system)
(propagated-inputs
`(("r-aucell" ,r-aucell)
("r-biocgenerics" ,r-biocgenerics)
("r-data-table" ,r-data-table)
("r-feather" ,r-feather)
("r-gseabase" ,r-gseabase)
("r-r-utils" ,r-r-utils)
("r-summarizedexperiment" ,r-summarizedexperiment)))
(home-page "https://aertslab.org/#scenic")
(synopsis "Identify transcription factor binding motifs enriched on a gene list")
(description
"RcisTarget identifies @dfn{transcription factor binding motifs} (TFBS)
over-represented on a gene list. In a first step, RcisTarget selects DNA
motifs that are significantly over-represented in the surroundings of the
@dfn{transcription start site} (TSS) of the genes in the gene-set. This is
achieved by using a database that contains genome-wide cross-species rankings
for each motif. The motifs that are then annotated to TFs and those that have
a high @dfn{Normalized Enrichment Score} (NES) are retained. Finally, for
each motif and gene-set, RcisTarget predicts the candidate target genes (i.e.
genes in the gene-set that are ranked above the leading edge).")
(license license:gpl3)))
(define-public r-cicero
(package
(name "r-cicero")
@ -5151,3 +5186,47 @@ accessibility data.")
`(("r-monocle3" ,r-monocle3)
,@(alist-delete "r-monocle"
(package-propagated-inputs r-cicero)))))))
(define-public r-cistopic
(let ((commit "29abd8df9afb60ff27ac3f0a590930debe926950")
(revision "0"))
(package
(name "r-cistopic")
(version (git-version "0.2.1" revision commit))
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/aertslab/cisTopic.git")
(commit commit)))
(file-name (git-file-name name version))
(sha256
(base32
"0s8irpsv5d2zcv4ihanvsf1vrpignzliscxnvs4519af3jmx78h8"))))
(build-system r-build-system)
(propagated-inputs
`(("r-aucell" ,r-aucell)
("r-data-table" ,r-data-table)
("r-dplyr" ,r-dplyr)
("r-dosnow" ,r-dosnow)
("r-dt" ,r-dt)
("r-feather" ,r-feather)
("r-fitdistrplus" ,r-fitdistrplus)
("r-genomicranges" ,r-genomicranges)
("r-ggplot2" ,r-ggplot2)
("r-lda" ,r-lda)
("r-matrix" ,r-matrix)
("r-plyr" ,r-plyr)
("r-rcistarget" ,r-rcistarget)
("r-rtracklayer" ,r-rtracklayer)
("r-s4vectors" ,r-s4vectors)))
(home-page "https://github.com/aertslab/cisTopic")
(synopsis "Modelling of cis-regulatory topics from single cell epigenomics data")
(description
"The sparse nature of single cell epigenomics data can be overruled using
probabilistic modelling methods such as @dfn{Latent Dirichlet
Allocation} (LDA). This package allows the probabilistic modelling of
cis-regulatory topics (cisTopics) from single cell epigenomics data, and
includes functionalities to identify cell states based on the contribution of
cisTopics and explore the nature and regulatory proteins driving them.")
(license license:gpl3))))

View File

@ -2740,7 +2740,7 @@ quantitative phenotypes.")
(define-public edirect
(package
(name "edirect")
(version "10.2.20181018")
(version "12.1.20190819")
(source (origin
(method url-fetch)
(uri (string-append "ftp://ftp.ncbi.nlm.nih.gov/entrez/entrezdirect"
@ -2748,7 +2748,7 @@ quantitative phenotypes.")
"/edirect-" version ".tar.gz"))
(sha256
(base32
"091f4aigzpbqih6h82nq566gkp3y07i72yqndmqskfgar1vwgci7"))))
"1i9s9mppcfqd60pfywpm8vdyz5vpnyslw22nd7dv0bhykrdnkz9g"))))
(build-system perl-build-system)
(arguments
`(#:phases
@ -7447,13 +7447,13 @@ names in their natural, rather than lexicographic, order.")
(define-public r-edger
(package
(name "r-edger")
(version "3.26.6")
(version "3.26.7")
(source (origin
(method url-fetch)
(uri (bioconductor-uri "edgeR" version))
(sha256
(base32
"17vadhamjv4x0l4qqq2p2fi6j2bkllz5zd8dq761vgd5ic23zizm"))))
"1xbhb8aa1ygm5crkp1bmqs2x1601ppa2kgc2xlf2zh8jj8zqapg8"))))
(properties `((upstream-name . "edgeR")))
(build-system r-build-system)
(propagated-inputs
@ -10262,14 +10262,14 @@ family of feature/genome hypotheses.")
(define-public r-gviz
(package
(name "r-gviz")
(version "1.28.0")
(version "1.28.1")
(source
(origin
(method url-fetch)
(uri (bioconductor-uri "Gviz" version))
(sha256
(base32
"02alz27w8fnnm2ga71g3jg2b94f95ccv6r1fyszj4yb1k2g7rkxk"))))
"0chsb3ijwd8zh588s1vqgfassn2rzax5rhqrhl0ini6pi4ilchp2"))))
(properties `((upstream-name . "Gviz")))
(build-system r-build-system)
(propagated-inputs

View File

@ -3,6 +3,7 @@
;;; Copyright © 2014, 2015, 2018 Mark H Weaver <mhw@netris.org>
;;; Copyright © 2017 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2018 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
;;; Copyright © 2019 Carl Dong <contact@carldong.me>
;;;
;;; This file is part of GNU Guix.
;;;
@ -276,6 +277,7 @@ or false to signal an error."
((string=? system "avr") "no-ld.so")
((string=? system "propeller-elf") "no-ld.so")
((string=? system "i686-mingw") "no-ld.so")
((string=? system "x86_64-mingw") "no-ld.so")
((string=? system "vc4-elf") "no-ld.so")
(else (error "dynamic linker name not known for this system"

View File

@ -1,7 +1,7 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2014, 2015, 2016, 2018 Eric Bavier <bavier@member.fsf.org>
;;; Copyright © 2016, 2017 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
;;;
;;; This file is part of GNU Guix.
;;;
@ -30,15 +30,14 @@
(define-public ccache
(package
(name "ccache")
(version "3.5")
(version "3.6")
(source
(origin
(method url-fetch)
(uri (string-append "https://www.samba.org/ftp/ccache/ccache-"
version ".tar.xz"))
(sha256
(base32
"04n0xram2416pv98qrd7pi5lfsk0bjqyz7zgvvia41j5mrr4pm5x"))))
(method url-fetch)
(uri (string-append "https://www.samba.org/ftp/ccache/ccache-"
version ".tar.xz"))
(sha256
(base32 "07wv75xdcxpdkfsz9h5ffrm8pjbvr1dh6wnb02nyzz18cdbjkcd6"))))
(build-system gnu-build-system)
(native-inputs `(("perl" ,perl) ; for test/run
("which" ,(@ (gnu packages base) which))))

View File

@ -47,8 +47,8 @@
#:use-module (guix build-system gnu))
(define-public cuirass
(let ((commit "0b40dca734468e8b12b3ff58e3e779679f17d38e")
(revision "21"))
(let ((commit "858b6b8c8f2ae7b1ddaf4ae363147121be1f1fe8")
(revision "22"))
(package
(name "cuirass")
(version (string-append "0.0.1-" revision "." (string-take commit 7)))
@ -60,7 +60,7 @@
(file-name (string-append name "-" version))
(sha256
(base32
"1kdxs8dzdyldfs4wsz5hb64hprkbrnq5ljdll631f3bj8pbvvvc1"))))
"049hg0yaakmfp27950cn0yn43r0v7bqva75xi082n8cxzi6vadgc"))))
(build-system gnu-build-system)
(arguments
'(#:modules ((guix build utils)
@ -121,7 +121,7 @@
`(("guile" ,guile-2.2)
("guile-fibers" ,guile-fibers)
("guile-gcrypt" ,guile-gcrypt)
("guile-json" ,guile-json-1)
("guile-json" ,guile-json-3)
("guile-sqlite3" ,guile-sqlite3)
("guile-git" ,guile-git)
;; FIXME: this is propagated by "guile-git", but it needs to be among

View File

@ -2002,3 +2002,49 @@ reading from and writing to ZIP archives. ")
;; Project is distributed under LGPL, but "quazip/z*" "quazip/unzip.*" are
;; distributed under zlib terms.
(license (list license:lgpl2.1+ license:zlib))))
(define-public zutils
(package
(name "zutils")
;; Check and remove the lint-hidden-cve property when updating.
(version "1.8")
(source
(origin
(method url-fetch)
(uri (string-append "mirror://savannah/zutils/zutils-" version ".tar.lz"))
(sha256
(base32 "0dx35mv78fgqgz6sszs05ng8ipz2xy09ry9vpmka2rmy08b7x907"))))
(build-system gnu-build-system)
(arguments
`(#:configure-flags
(list "--sysconfdir=/etc")
#:phases
(modify-phases %standard-phases
(replace 'install
(lambda* (#:key make-flags outputs #:allow-other-keys)
(apply invoke "make" "install"
(string-append "sysconfdir=" (assoc-ref outputs "out")
"/etc")
make-flags))))))
(native-inputs
;; Needed to extract the source tarball and run the test suite.
`(("lzip" ,lzip)))
(properties `((lint-hidden-cve . ("CVE-2018-1000637"))))
(home-page "https://www.nongnu.org/zutils/zutils.html")
(synopsis "Utilities that transparently operate on compressed files")
(description
"Zutils is a collection of utilities able to process any combination of
compressed and uncompressed files transparently. If any given file, including
standard input, is compressed, its decompressed content is used instead.
@command{zcat}, @command{zcmp}, @command{zdiff}, and @command{zgrep} are
improved replacements for the shell scripts provided by GNU gzip.
@command{ztest} tests the integrity of supported compressed files.
@command{zupdate} recompresses files with lzip, similar to gzip's
@command{znew}.
Supported compression formats are bzip2, gzip, lzip, and xz. Zutils uses
external compressors: the compressor to be used for each format is configurable
at run time, and must be installed separately.")
(license (list license:bsd-2 ; arg_parser.{cc,h}
license:gpl2+)))) ; the rest

View File

@ -2230,14 +2230,14 @@ topics for ecologists (ISBN 978-0-691-12522-0).")
(define-public r-lpsolve
(package
(name "r-lpsolve")
(version "5.6.13.2")
(version "5.6.13.3")
(source
(origin
(method url-fetch)
(uri (cran-uri "lpSolve" version))
(sha256
(base32
"0fc5m259ayc880f5hvnq59ih6nb2rlp394n756n1khmxbjpw1w3m"))))
"1xazby8amb47vw5n12k13awv7x3bjci3q8vdd3vk1ms0ii16ahg6"))))
(properties `((upstream-name . "lpSolve")))
(build-system r-build-system)
(home-page "https://cran.r-project.org/web/packages/lpSolve")
@ -5851,14 +5851,14 @@ functions.")
(define-public r-rjags
(package
(name "r-rjags")
(version "4-8")
(version "4-9")
(source
(origin
(method url-fetch)
(uri (cran-uri "rjags" version))
(sha256
(base32
"17xmjksj69f9wk4x71jxk4cgiqhaf2fj6bjm0mgzp4qln5x84a8m"))))
"1vrmxxfnia2mkmfkp5yaq5qrlh4xg3ggab6fnj14mrp1231wb91a"))))
(build-system r-build-system)
(propagated-inputs
`(("r-coda" ,r-coda)))
@ -6823,13 +6823,13 @@ and coverage methods to tune the choice of threshold.")
(define-public r-ggstance
(package
(name "r-ggstance")
(version "0.3.2")
(version "0.3.3")
(source
(origin
(method url-fetch)
(uri (cran-uri "ggstance" version))
(sha256
(base32 "078ih9s5b0xzf582qg0vjnxvg5qad5ms1v2vdd062ckahi8zz1r8"))))
(base32 "0kdksay61hyb6612b07r84chh7a9aibjyclk3qcypvr9aang8hkh"))))
(build-system r-build-system)
(propagated-inputs
`(("r-ggplot2" ,r-ggplot2)
@ -14752,14 +14752,14 @@ into R and converted to @code{BibEntry} objects.")
(define-public r-citr
(package
(name "r-citr")
(version "0.3.1")
(version "0.3.2")
(source
(origin
(method url-fetch)
(uri (cran-uri "citr" version))
(sha256
(base32
"0p2sg0fl7cppxxmr20qyqzs2469kglmgpsvykynw4qx501as57rc"))))
"1qbarvafjb8jgkrnrhh6jw7mcglmjwf7dpdiibxf39jkmlhf7las"))))
(build-system r-build-system)
(propagated-inputs
`(("r-assertthat" ,r-assertthat)
@ -14945,3 +14945,155 @@ path of values for the regularization parameter.")
library uses. It is also possible to control the number of threads in
OpenMP.")
(license license:agpl3+)))
(define-public r-lda
(package
(name "r-lda")
(version "1.4.2")
(source
(origin
(method url-fetch)
(uri (cran-uri "lda" version))
(sha256
(base32
"03r4h5kgr8mfy44p66mfj5bp4k00g8zh4a1mhn46jw14pkhs21jn"))))
(build-system r-build-system)
(home-page "https://cran.r-project.org/web/packages/lda/")
(synopsis "Collapsed Gibbs sampling methods for topic models")
(description
"This package implements @dfn{latent Dirichlet allocation} (LDA) and
related models. This includes (but is not limited to) sLDA, corrLDA, and the
mixed-membership stochastic blockmodel. Inference for all of these models is
implemented via a fast collapsed Gibbs sampler written in C. Utility
functions for reading/writing data typically used in topic models, as well as
tools for examining posterior distributions are also included.")
;; Any version of the LGPL
(license license:lgpl3+)))
(define-public r-rann-l1
(package
(name "r-rann-l1")
(version "2.5.2")
(source
(origin
(method url-fetch)
(uri (cran-uri "RANN.L1" version))
(sha256
(base32
"1hanh3my84mdr5wy6b89fawqzfc184vff1y65wy4l5ld9qza1n44"))))
(properties `((upstream-name . "RANN.L1")))
(build-system r-build-system)
(home-page "https://github.com/jefferis/RANN/tree/master-L1")
(synopsis "Fast nearest neighbour search using L1 metric")
(description
"This package provides tools to find the k nearest neighbours for every
point in a given dataset in O(N log N) time using Arya and Mount's ANN
library. There is support for approximate as well as exact searches, fixed
radius searches and @code{bd} as well as @code{kd} trees. The distance is
computed using the L1 (Manhattan, taxicab) metric.")
(license license:gpl3+)))
(define-public r-patchwork
;; There has been no public release yet.
(let ((commit "fd7958bae3e7a1e30237c751952e412a0a1d1242")
(revision "1"))
(package
(name "r-patchwork")
(version (git-version "0.0.1" revision commit))
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/thomasp85/patchwork.git")
(commit commit)))
(file-name (git-file-name name version))
(sha256
(base32
"00fq520xwy1ysg4k8x48x9b0yy9wyi8y8zj6dvxjg4bwx0yyp6s4"))))
(build-system r-build-system)
(propagated-inputs
`(("r-ggplot2" ,r-ggplot2)
("r-gtable" ,r-gtable)))
(home-page "https://github.com/thomasp85/patchwork")
(synopsis "Compose ggplot2 plots")
(description
"The @code{ggplot2} package provides a strong API for sequentially
building up a plot, but does not concern itself with composition of multiple
plots. Patchwork is a package that expands the API to allow for arbitrarily
complex composition of plots by providing mathmatical operators for combining
multiple plots.")
(license license:expat))))
(define-public r-liger
(package
(name "r-liger")
(version "0.4.2")
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/MacoskoLab/liger.git")
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
(base32
"16dzwwcpw6n78pxlc5w3kraigki35ix7zhd2cbx5f3y60bbkhlmx"))
(modules '((guix build utils)))
(snippet
'(begin
(delete-file "inst/java/ModularityOptimizer.jar")
#t))))
(build-system r-build-system)
(arguments
`(#:phases
(modify-phases %standard-phases
(add-after 'unpack 'build-java-part
(lambda* (#:key inputs #:allow-other-keys)
(invoke "unzip" (assoc-ref inputs "optimizer-src"))
(for-each (lambda (file) (invoke "javac" file))
(find-files "." "\\.java$"))
(apply invoke "jar" "cf" "inst/java/ModularityOptimizer.jar"
(find-files "." "\\.class$"))
#t)))))
(propagated-inputs
`(("r-cowplot" ,r-cowplot)
("r-dosnow" ,r-dosnow)
("r-dplyr" ,r-dplyr)
("r-fnn" ,r-fnn)
("r-foreach" ,r-foreach)
("r-ggplot2" ,r-ggplot2)
("r-ggrepel" ,r-ggrepel)
("r-hmisc" ,r-hmisc)
("r-ica" ,r-ica)
("r-irlba" ,r-irlba)
("r-matrix" ,r-matrix)
("r-mclust" ,r-mclust)
("r-patchwork" ,r-patchwork)
("r-plyr" ,r-plyr)
("r-rann-l1" ,r-rann-l1)
("r-rcpp" ,r-rcpp)
("r-rcpparmadillo" ,r-rcpparmadillo)
("r-riverplot" ,r-riverplot)
("r-rtsne" ,r-rtsne)
("r-snow" ,r-snow)))
(native-inputs
`(("jdk" ,icedtea "jdk")
;; See https://github.com/MacoskoLab/liger/issues/96
;; The optimizer is released under the Expat license.
("optimizer-src"
,(origin
(method url-fetch)
(uri "http://www.ludowaltman.nl/slm/modularity_optimizer_source.zip")
(sha256
(base32
"01hmm6sapcmldvayknqx2w4cav3qv71mwwkdkwj4qgq6dss09g18"))))
("unzip" ,unzip)
("r-knitr" ,r-knitr))) ; for vignettes
(home-page "https://github.com/MacoskoLab/liger")
(synopsis "Integrate and analyze multiple single-cell datasets")
(description
"LIGER is a package for integrating and analyzing multiple single-cell
datasets, developed and maintained by the Macosko lab. It relies on
integrative non-negative matrix factorization to identify shared and
dataset-specific factors.")
(license license:gpl3)))

View File

@ -5,6 +5,7 @@
;;; Copyright © 2016 Manolis Fragkiskos Ragkousis <manolis837@gmail.com>
;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2019 Marius Bakke <mbakke@fastmail.com>
;;; Copyright © 2019 Carl Dong <contact@carldong.me>
;;;
;;; This file is part of GNU Guix.
;;;
@ -267,7 +268,7 @@ target that libc."
(cond
((target-mingw? target)
(if libc
`(("libc" ,mingw-w64)
`(("libc" ,libc)
,@inputs)
`(("mingw-source" ,(package-source mingw-w64))
,@inputs)))
@ -508,7 +509,8 @@ and the cross tool chain."
#:optional
(libc glibc))
(if (target-mingw? target)
mingw-w64
(let ((machine (substring target 0 (string-index target #\-))))
(make-mingw-w64 machine))
libc))
(define* (cross-newlib? target

View File

@ -2729,13 +2729,13 @@ reasonable substitute.")
(define-public python-redis
(package
(name "python-redis")
(version "3.2.1")
(version "3.3.8")
(source
(origin
(method url-fetch)
(uri (pypi-uri "redis" version))
(sha256
(base32 "0wwj8il4c3aff15xwwcjfci367zxsakq05ps1a2il6yavp91i94c"))))
(base32 "0fyxzqax7lcwzwhvnz0i0q6v62hxyv1mv52ywx3bpff9a2vjz8lq"))))
(build-system python-build-system)
;; Tests require a running Redis server.
(arguments '(#:tests? #f))

View File

@ -109,7 +109,7 @@ and BOOTP/TFTP for network booting of diskless machines.")
(define-public isc-bind
(package
(name "bind")
(version "9.14.4")
(version "9.14.5")
(source (origin
(method url-fetch)
(uri (string-append
@ -117,7 +117,7 @@ and BOOTP/TFTP for network booting of diskless machines.")
"/bind-" version ".tar.gz"))
(sha256
(base32
"0gxqws7ml15lwkjw9mdcd759gv5kk3s9m17j3vrp9448ls1gnbii"))))
"0ic0k0kpavwnbyf10rwx6yypxg66f65fprwc0dbmp61xp0n6gl0j"))))
(build-system gnu-build-system)
(outputs `("out" "utils"))
(inputs
@ -303,14 +303,14 @@ asynchronous fashion.")
(define-public nsd
(package
(name "nsd")
(version "4.2.0")
(version "4.2.2")
(source
(origin
(method url-fetch)
(uri (string-append "https://www.nlnetlabs.nl/downloads/nsd/nsd-"
version ".tar.gz"))
(sha256
(base32 "0k57xl3ybdnqjqw9a3dmi7l6qmhkiic6wsghkz08ir809aj1rpsi"))))
(base32 "1ys608jyp5scc957q4brm094c97sxlwymina7d2nvzi51aa37cw3"))))
(build-system gnu-build-system)
(arguments
`(#:configure-flags

81
gnu/packages/elm.scm Normal file
View File

@ -0,0 +1,81 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2019 Robert Vollmert <rob@vllmrt.net>
;;;
;;; This file is part of GNU Guix.
;;;
;;; GNU Guix is free software; you can redistribute it and/or modify it
;;; under the terms of the GNU General Public License as published by
;;; the Free Software Foundation; either version 3 of the License, or (at
;;; your option) any later version.
;;;
;;; GNU Guix is distributed in the hope that it will be useful, but
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;;; GNU General Public License for more details.
;;;
;;; You should have received a copy of the GNU General Public License
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
(define-module (gnu packages elm)
#:use-module (gnu packages)
#:use-module (gnu packages haskell)
#:use-module (gnu packages haskell-check)
#:use-module (gnu packages haskell-crypto)
#:use-module (gnu packages haskell-xyz)
#:use-module (gnu packages haskell-web)
#:use-module (guix build-system haskell)
#:use-module (guix git-download)
#:use-module ((guix licenses) #:prefix license:)
#:use-module (guix packages))
;; The full elm build calls out to itself via Template Haskell to
;; compile the elm reactor web app. elm reactor isn't required to
;; compile elm applications, so we take this part out of this
;; bootstrap package.
(define-public elm-compiler
(package
(name "elm-compiler")
(version "0.19.0")
(source
(origin
(method git-fetch)
(file-name (git-file-name name version))
(uri (git-reference
(url "https://github.com/elm/compiler/")
(commit version)))
(sha256
(base32 "0s93z9vr0vp5w894ghc5s34nsq09sg1msf59zfiba87sid5vgjqy"))
(patches
(search-patches "elm-compiler-disable-reactor.patch"
"elm-compiler-relax-glsl-bound.patch"
"elm-compiler-fix-map-key.patch"))))
(build-system haskell-build-system)
(inputs
`(("ghc-ansi-terminal" ,ghc-ansi-terminal)
("ghc-ansi-wl-pprint" ,ghc-ansi-wl-pprint)
("ghc-edit-distance" ,ghc-edit-distance)
("ghc-file-embed" ,ghc-file-embed)
("ghc-http" ,ghc-http)
("ghc-http-client" ,ghc-http-client)
("ghc-http-client-tls" ,ghc-http-client-tls)
("ghc-http-types" ,ghc-http-types)
("ghc-language-glsl" ,ghc-language-glsl)
("ghc-logict" ,ghc-logict)
("ghc-network" ,ghc-network)
("ghc-raw-strings-qq" ,ghc-raw-strings-qq)
("ghc-scientific" ,ghc-scientific)
("ghc-sha" ,ghc-sha)
("ghc-snap-core" ,ghc-snap-core)
("ghc-snap-server" ,ghc-snap-server)
("ghc-unordered-containers"
,ghc-unordered-containers)
("ghc-utf8-string" ,ghc-utf8-string)
("ghc-vector" ,ghc-vector)
("ghc-zip-archive" ,ghc-zip-archive)))
(home-page "https://elm-lang.org")
(synopsis "Programming language for Web applications")
(description
"This package provides Elm, a statically-typed functional programming
language for the browser. It includes commands for developers such as
@command{elm make} and @command{elm repl}.")
(license license:bsd-3)))

View File

@ -40,7 +40,7 @@
;;; Copyright © 2018 Pierre-Antoine Rouby <pierre-antoine.rouby@inria.fr>
;;; Copyright © 2018 Alex Branham <alex.branham@gmail.com>
;;; Copyright © 2018 Thorsten Wilms <t_w_@freenet.de>
;;; Copyright © 2018 Pierre Langlois <pierre.langlois@gmx.com>
;;; Copyright © 2018, 2019 Pierre Langlois <pierre.langlois@gmx.com>
;;; Copyright © 2018, 2019 Brett Gilio <brettg@posteo.net>
;;; Copyright © 2019 Dimakakos Dimos <bendersteed@teknik.io>
;;; Copyright © 2019 Brian Leung <bkleung89@gmail.com>
@ -52,6 +52,7 @@
;;; Copyright © 2019 Giacomo Leidi <goodoldpaul@autitici.org>
;;; Copyright © 2019 Jens Mølgaard <jens@zete.tk>
;;; Copyright © 2019 Amin Bandali <bandali@gnu.org>
;;; Copyright © 2019 Jelle Licht <jlicht@fsfe.org>
;;;
;;; This file is part of GNU Guix.
;;;
@ -2255,7 +2256,7 @@ display and behaviour is easily customisable.")
(define-public emacs-git-timemachine
(package
(name "emacs-git-timemachine")
(version "4.10")
(version "4.11")
(source
(origin
(method git-fetch)
@ -2265,7 +2266,7 @@ display and behaviour is easily customisable.")
(file-name (git-file-name name version))
(sha256
(base32
"08zsn3lsnnf01wkv5ls38jga02s5dnf0j3gigy4qd6im3j3d04m1"))))
"1pz4l1xnq6s67w5yq9107vm8dg7rqf8n9dmbn90jys97c722g70n"))))
(build-system emacs-build-system)
(propagated-inputs
`(("emacs-transient" ,emacs-transient)))
@ -2729,6 +2730,78 @@ naming style of a symbol. It supports different naming conventions such as:
tables.")
(license license:gpl2+)))
(define-public emacs-org-rich-yank
(package
(name "emacs-org-rich-yank")
(version "0.2.1")
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/unhammer/org-rich-yank.git")
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
(base32 "0gxb0fnh5gxjmld0hnk5hli0cvdd8gjd27m30bk2b80kwldxlq1z"))))
(build-system emacs-build-system)
(home-page "https://github.com/unhammer/org-rich-yank")
(synopsis "Automatically surround source code pasted into Org with
@code{#+BEGIN_SRC} blocks")
(description
"This package provides a utility function for Org buffers that makes a
@code{_SRC} block with the appropriate language annotation for code that has
been copied from an Emacs major mode.")
(license license:gpl2+)))
(define-public emacs-ob-restclient
(let ((commit "53376667eeddb1388fd6c6976f3222e7c8adcd46"))
(package
(name "emacs-ob-restclient")
(version (git-version "0.02" "1" commit))
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/alf/ob-restclient.el.git")
(commit commit)))
(file-name (git-file-name name version))
(sha256
(base32 "1djg53cp7y83gic2v71y6r5z76kwrbkp0r69hl25rs99dx6p89dy"))))
(propagated-inputs
`(("emacs-restclient" ,emacs-restclient)))
(build-system emacs-build-system)
(home-page "https://github.com/alf/ob-restclient.el")
(synopsis "Org-babel functionality for @code{restclient-mode}")
(description
"This package integrates @code{restclient-mode} with Org.")
(license license:gpl3+))))
(define-public emacs-org-now
(let ((commit "8f6b277a73f1c66e58ccb4b7f40d406851befc91"))
(package
(name "emacs-org-now")
(version (git-version "0.1-pre" "1" commit))
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/alphapapa/org-now.git")
(commit commit)))
(file-name (git-file-name name version))
(sha256
(base32 "117zzkryznznk6h4i1jqzdn888nl019xrgxm2gza0lndx8dxsg2c"))))
(propagated-inputs
`(("emacs-dash" ,emacs-dash)))
(build-system emacs-build-system)
(home-page "https://github.com/alphapapa/org-now")
(synopsis "Show current Org tasks in a sidebar")
(description
"This package provides commands to show Org headings in a sidebar
window while working on them. After defining one heading as the \"now\"
heading, other headings can be refiled to it with one command, and back to
their original location with another.")
(license license:gpl3+))))
(define-public emacs-rich-minority
(package
(name "emacs-rich-minority")
@ -3460,6 +3533,55 @@ completion candidate when using the Company text completion framework.")
a customizable list.")
(license license:gpl3+))))
(define-public emacs-phi-search
(let ((commit "9a089b8271cb1cff9640848850298c9ec855286c")
(revision "1"))
(package
(name "emacs-phi-search")
(version (git-version "20160630" revision commit))
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/zk-phi/phi-search.git")
(commit commit)))
(file-name (git-file-name name version))
(sha256
(base32 "1gr5plcbrfdc4pglfj905s89hf8x0kc083h30wcnd81bnw9jwz1x"))))
(build-system emacs-build-system)
(home-page "https://github.com/zk-phi/phi-search")
(synopsis "Interactive search compatible with @code{multiple-cursors}")
(description "This package can be used with @code{multiple-cursors} to
provide an incremental search that moves all fake cursors in sync.")
(license license:gpl2+))))
(define-public emacs-phi-search-mc
(let ((commit "7aa671910f766437089aec26c3aa7814222d1356")
(revision "1"))
(package
(name "emacs-phi-search-mc")
(version (git-version "2.2.1" revision commit))
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/knu/phi-search-mc.el.git")
(commit commit)))
(file-name (git-file-name name version))
(sha256
(base32 "0wr86ad0yl52im6b9z0b9pzmhcn39qg5m9878yfv1nbxliw40lcd"))))
(build-system emacs-build-system)
(propagated-inputs
`(("emacs-phi-search" ,emacs-phi-search)
("emacs-multiple-cursors" ,emacs-multiple-cursors)))
(home-page "https://github.com/knu/phi-search-mc.el")
(synopsis "Extend @code{phi-search} with additional
@code{multiple-cursors} functionality")
(description "This package provides further integration between
@code{multiple-cursors} and @code{phi-search}, a package that allows for
interactive searches to move multiple fake cursors.")
(license license:bsd-2))))
(define-public emacs-multiple-cursors
(package
(name "emacs-multiple-cursors")
@ -4487,6 +4609,29 @@ regardless of @code{highlight-symbol-idle-delay}.
@code{highlight-symbol-query-replace} can be used to replace the symbol. ")
(license license:gpl2+))))
(define-public emacs-symbol-overlay
(let ((commit "e40a7c407f24158c45eaa5f54ed41f5e416a51dc")
(revision "1"))
(package
(name "emacs-symbol-overlay")
(version (git-version "4.1" revision commit))
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/wolray/symbol-overlay.git")
(commit commit)))
(file-name (git-file-name name version))
(sha256
(base32 "0ibz3392d3jw1l8006h9kf8s7bg6vl7jc92bmqc031a433009ic7"))))
(build-system emacs-build-system)
(home-page "https://github.com/wolray/symbol-overlay")
(synopsis "Highlight symbols and perform various search operations on them")
(description
"This package provides functions for highlighting and navigating
between symbols.")
(license license:gpl3+))))
(define-public emacs-hl-todo
(package
(name "emacs-hl-todo")
@ -6409,6 +6554,33 @@ used for reverse direction.")
end of a line and increment or decrement it.")
(license license:gpl3+))))
(define-public emacs-evil-owl
(let ((commit "36a5fe057f44d48e377e3ef4f04b4eb30e1af309")
(revision "1"))
(package
(name "emacs-evil-owl")
(version (git-version "0.0.1" revision commit))
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/mamapanda/evil-owl")
(commit commit)))
(file-name (git-file-name name version))
(sha256
(base32
"07a6n0gqss1qx9a50dqzqqq0gj6n7a4ykbcv1a0c9qd4fnfnm90m"))))
(build-system emacs-build-system)
(propagated-inputs
`(("emacs-evil" ,emacs-evil)
("emacs-posframe" ,emacs-posframe)))
(home-page "https://github.com/mamapanda/evil-owl")
(synopsis "Preview candidates when using Evil registers and marks")
(description
"This package supplements Evil's register- and mark-based commands with
a popup window for previewing candidates.")
(license license:gpl3+))))
(define-public emacs-evil-exchange
(let ((commit "47691537815150715e64e6f6ec79be7746c96120")
(version "0.41")
@ -7133,6 +7305,60 @@ Additionally it can display the number of unread emails in the
mode-line.")
(license license:gpl3+)))
(define-public emacs-mu4e-jump-to-list
(let ((commit "358bba003543b49ffa266e503e54aebd0ebe614b")
(revision "1"))
(package
(name "emacs-mu4e-jump-to-list")
(version (git-version "1.0" revision commit))
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://gitlab.com/wavexx/mu4e-jump-to-list.el.git")
(commit commit)))
(file-name (git-file-name name version))
(sha256
(base32
"00y9nap61q1z2cdql4k9g7fgi2gdgd9iy5s5lzrd9a4agbx6r7sv"))))
(build-system emacs-build-system)
(propagated-inputs
`(("mu" ,mu)))
(home-page "https://gitlab.com/wavexx/mu4e-jump-to-list.el")
(synopsis "Select and view mailing lists in mu4e")
(description
"@code{mu4e-jump-to-list} allows you to select and view mailing lists
automatically using existing List-ID headers in your mu database. Just press
\"l\" in the headers view and any mailing list you've subscribed to will be
automatically discovered and presented in recency order.")
(license license:gpl3+))))
(define-public emacs-mu4e-patch
(let ((commit "522da46c1653b1cacc79cde91d6534da7ae9517d")
(revision "1"))
(package
(name "emacs-mu4e-patch")
(version (git-version "0.1.0" revision commit))
(source (origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/seanfarley/mu4e-patch")
(commit commit)))
(file-name (git-file-name name version))
(sha256
(base32
"10lzf3b70pk6rzdrgx0ww0gc94v0ydh9zj1gbsa20xw27ds7hmfn"))))
(build-system emacs-build-system)
(propagated-inputs
`(("mu" ,mu)))
(home-page "https://github.com/seanfarley/mu4e-patch")
(synopsis "Colorize patch-like emails in mu4e")
(description
"Extension for mu4e to colorize patch-like emails with diff-mode.
This is based on Frank Terbeck's @code{gnus-article-treat-patch.el} but has
been adapted to work with mu4e.")
(license license:gpl3+))))
(define-public emacs-pretty-mode
(package
(name "emacs-pretty-mode")
@ -7302,7 +7528,7 @@ above over the network.")
(define-public emacs-helm-org-rifle
(package
(name "emacs-helm-org-rifle")
(version "1.6.1")
(version "1.7.0")
(source
(origin
(method git-fetch)
@ -7312,12 +7538,13 @@ above over the network.")
(file-name (git-file-name name version))
(sha256
(base32
"1r38xhwvgbv6kn5x159phz3xgss7f1rc7icq27rnr4d8aj91wm6k"))))
"058zvh7cdall7dl3xay9ibcjvs13fbqp8fli3lz980pinmsds3r2"))))
(build-system emacs-build-system)
(propagated-inputs
`(("emacs-dash" ,emacs-dash)
("emacs-f" ,emacs-f)
("emacs-helm" ,emacs-helm)
("emacs-org" ,emacs-org)
("emacs-s" ,emacs-s)))
(home-page "https://github.com/alphapapa/helm-org-rifle")
(synopsis "Rifle through Org files")
@ -9633,7 +9860,7 @@ Feautures:
(define-public emacs-evil-matchit
(package
(name "emacs-evil-matchit")
(version "2.3.0")
(version "2.3.3")
(source
(origin
(method git-fetch)
@ -9642,7 +9869,7 @@ Feautures:
(commit version)))
(file-name (git-file-name name version))
(sha256
(base32 "0y6q42hml7jgf060d83m7hf270h01858g5kxw12na9n4r4jjpdg1"))))
(base32 "04kllxd7vvziwqiff3vx60a0r6805wynsla73j8xkcz4yzk8q91r"))))
(build-system emacs-build-system)
(propagated-inputs
`(("emacs-evil" ,emacs-evil)))
@ -10051,6 +10278,61 @@ environment variables to be retrieved from the shell, so that Emacs will see
the same values you get in a terminal.")
(license license:gpl3+)))
(define-public emacs-frog-menu
(let ((commit "740bbc88b8535d31f783f3b2043a2a6683afbf31")
(revision "1"))
(package
(name "emacs-frog-menu")
(version (git-version "0.2.9" revision commit))
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/clemera/frog-menu")
(commit commit)))
(file-name (git-file-name name version))
(sha256
(base32
"1g77424jwq62qj06rvld44s5hp0dw8rw2pwmmag6gd536zf65xrj"))))
(build-system emacs-build-system)
(propagated-inputs
`(("emacs-posframe" ,emacs-posframe)
("emacs-avy" ,emacs-avy)))
(home-page "https://github.com/clemera/frog-menu")
(synopsis "Quickly pick items from ad hoc menus")
(description
"This package provides a popup offering a preview of a list of
candidates on which user-defined dispatch actions can act.")
(license license:gpl3+))))
(define-public emacs-frog-jump-buffer
(let ((commit "2d7b342785ae27d45f5d252272df6eb773c78e20")
(revision "1"))
(package
(name "emacs-frog-jump-buffer")
(version (git-version "0.1.4" revision commit))
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/waymondo/frog-jump-buffer")
(commit commit)))
(file-name (git-file-name name version))
(sha256
(base32
"1z00by8hiss1r2lwmzrl8pnz6jykia2849dqqm4l3z5rf6lwvc0f"))))
(build-system emacs-build-system)
(propagated-inputs
`(("emacs-dash" ,emacs-dash)
("emacs-frog-menu" ,emacs-frog-menu)
("emacs-avy" ,emacs-avy)))
(home-page "https://github.com/waymondo/frog-jump-buffer")
(synopsis "Jump to any Emacs buffer with minimal keystrokes")
(description
"This package provides a preview window of buffers that can be switched
to with quicklink-style selections.")
(license license:gpl3+))))
(define-public emacs-deft
(package
(name "emacs-deft")
@ -10724,6 +11006,31 @@ tables of contents.")
files, allowing for actions to be performed based on search criteria.")
(license license:gpl3+)))
(define-public emacs-org-auto-expand
(let ((commit "4938d5f6460e2f8f051ba9ac000b291bfa43ef62")
(revision "1"))
(package
(name "emacs-org-auto-expand")
(version (git-version "0.1" revision commit))
(source (origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/alphapapa/org-auto-expand")
(commit commit)))
(file-name (git-file-name name version))
(sha256
(base32
"1my0c6xmkh37lwi6l472lz9d86lf20h6xcllzlxm1lxa24rhva6v"))))
(build-system emacs-build-system)
(propagated-inputs
`(("emacs-org" ,emacs-org)
("emacs-dash" ,emacs-dash)))
(home-page "https://github.com/alphapapa/org-auto-expand")
(synopsis "Automatically expand certain Org headings")
(description "This package allows a customizable set of headings in Org
files to be expanded upon opening them.")
(license license:gpl3+))))
(define-public emacs-parsebib
(package
(name "emacs-parsebib")
@ -12421,12 +12728,11 @@ perform regression test for packages that provide font-lock rules.")
(license license:gpl3+))))
(define-public emacs-racket-mode
(let ((commit "b977873e6128f8399432dcd60cc39f6a6f803d9c")
(revision "2"))
(let ((commit "5300aa004f08535c3fac99f1af78462f129aca81")
(revision "3"))
(package
(name "emacs-racket-mode")
(version (string-append "0.0.2" "-" revision "."
(string-take commit 7)))
(version (git-version "0.0.2" revision commit))
(source
(origin
(method git-fetch)
@ -12436,7 +12742,7 @@ perform regression test for packages that provide font-lock rules.")
(file-name (git-file-name name version))
(sha256
(base32
"0vp4bbbplqvmnhjpl6ajrlydmrhqzil56cfbs18m5c5fddx0zlh7"))))
"1gkpm4fl1ybsm9qqgrkwyjbd9znddy438x266k27fs90lkxrfray"))))
(build-system emacs-build-system)
(arguments
`(#:include '("\\.el$" "\\.rkt$")))
@ -14385,7 +14691,7 @@ buffers other modes on the TODO list).
(define-public emacs-magit-todos
(package
(name "emacs-magit-todos")
(version "1.3")
(version "1.4")
(source
(origin
(method git-fetch)
@ -14395,7 +14701,7 @@ buffers other modes on the TODO list).
(file-name (git-file-name name version))
(sha256
(base32
"0gfm6wn2a4v5i9lfsvvin0kwpr9n96ddm3z4yf50jd3kg2igzry1"))))
"09pjb4k409gc0h51vb5az1shx02c1hx8cnvhi529n7dm4maildg5"))))
(build-system emacs-build-system)
(propagated-inputs
`(("emacs-async" ,emacs-async)
@ -14771,7 +15077,7 @@ correctly.")
(define-public emacs-helm-slime
(package
(name "emacs-helm-slime")
(version "0.3.0")
(version "0.4.0")
(source (origin
(method git-fetch)
(uri (git-reference
@ -14780,7 +15086,7 @@ correctly.")
(file-name (git-file-name name version))
(sha256
(base32
"1qhb9446rpj17pm0hi3miy5gs5k3ld43bq29kzy0y26bf7ivfcjv"))))
"0mrpjhpijdrq353fnfvdj9l9xfsz390qlcvifcair9732ma7i8l0"))))
(build-system emacs-build-system)
(propagated-inputs
`(("emacs-helm" ,emacs-helm)
@ -14905,7 +15211,7 @@ RPC channels with users and other software.")
(define-public emacs-sesman
(package
(name "emacs-sesman")
(version "0.3.3")
(version "0.3.4")
(source
(origin
(method git-fetch)
@ -14915,10 +15221,18 @@ RPC channels with users and other software.")
(file-name (git-file-name name version))
(sha256
(base32
"0r32f8ma9ddczxrrdz0nadp14j3zmk10q1ch02gb82synkx3xdra"))))
"0z5jb4vpbjsi63w3wjy6d2lgz33qdfvrgfb3bszv4hcf6a96y7fc"))))
(build-system emacs-build-system)
(arguments
`(#:tests? #t
`(#:phases
(modify-phases %standard-phases
(add-after 'unpack 'set-shell
;; Setting the SHELL environment variable is required for the tests
;; to find sh.
(lambda _
(setenv "SHELL" (which "sh"))
#t)))
#:tests? #t
#:test-command '("make" "test")))
(home-page "https://github.com/vspinu/sesman")
(synopsis "Session manager for Emacs based IDEs")
@ -16432,7 +16746,7 @@ previewed by scrolling up and down within a @code{dired} buffer.")
(define-public emacs-counsel-etags
(package
(name "emacs-counsel-etags")
(version "1.8.7")
(version "1.8.9")
(source
(origin
(method git-fetch)
@ -16442,7 +16756,7 @@ previewed by scrolling up and down within a @code{dired} buffer.")
(file-name (git-file-name name version))
(sha256
(base32
"0vjcjspfrz1csnmfi6r7p7f070a496adxkqnsxwx1gx8cpylwp1g"))))
"0rmdl93kgyydwa96yclds9vwly41bpk8v18cbqc1x266w6v77dr9"))))
(build-system emacs-build-system)
(propagated-inputs
`(("emacs-ivy" ,emacs-ivy)))
@ -17241,3 +17555,165 @@ federated microblogging social network.")
Emacs. It's a re-write of the Insidious Big Brother Database (BBDB) using
Emacs Lisp's (relatively new) EIEIO object oriented libraries.")
(license license:gpl3+))))
(define-public emacs-refactor
(package
(name "emacs-refactor")
(version "0.4")
(source (origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/Wilfred/emacs-refactor.git")
(commit version)))
(file-name (git-file-name name version))
(sha256
(base32
"1yky7vlv91501xb43xk19rr8mxlvrsxhawsc98jivf64nad5dqay"))))
(build-system emacs-build-system)
(propagated-inputs
`(("emacs-dash" ,emacs-dash)
("emacs-s" ,emacs-s)
("emacs-popup" ,emacs-popup)
("emacs-list-utils" ,emacs-list-utils)
("emacs-iedit" ,emacs-iedit)))
(home-page "https://github.com/Wilfred/emacs-refactor/")
(synopsis "Language-specific refactoring in Emacs")
(description "Emacs Refactor (EMR) is a framework for providing
language-specific refactoring in Emacs. It includes refactoring commands for
a variety of languages, including elisp itself.")
(license license:gpl3+)))
(define-public emacs-flyspell-correct
(package
(name "emacs-flyspell-correct")
(version "0.5")
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/d12frosted/flyspell-correct.git")
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
(base32
"1r9hmz7sihhy7npv6nxp04sy57glzmfax5d67mwn96fdnc0yhlnd"))))
(build-system emacs-build-system)
(propagated-inputs
`(("emacs-helm" ,emacs-helm)
("emacs-ivy" ,emacs-ivy)
("emacs-popup" ,emacs-popup)))
(home-page
"https://github.com/d12frosted/flyspell-correct")
(synopsis
"Correcting words with flyspell via custom interfaces")
(description
"This package provides functionality for correcting words via custom
interfaces. Several interfaces are supported beside the classic ido: popup,
helm and ivy.")
(license license:gpl3+)))
(define-public emacs-org-emms
(let ((commit "07a8917f3d628c32e5de1dbd118ac08203772533")
(revision "1"))
(package
(name "emacs-org-emms")
(version
(git-version "0.1" revision commit))
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://gitlab.com/jagrg/org-emms.git")
(commit commit)))
(file-name (git-file-name name commit))
(sha256
(base32
"1sqsm5sv311xfdk4f4rsnvprdf2v2vm7l1b3vqi7pc0g8adlnw1d"))))
(build-system emacs-build-system)
(propagated-inputs
`(("emms" ,emacs-emms)
("emacs-org" ,emacs-org)))
(home-page "https://gitlab.com/jagrg/org-emms")
(synopsis "Play multimedia files from org-mode")
(description
"This package provides a new org link type for playing back multimedia
files from org-mode using EMMS, The Emacs Multimedia System. If the link
contains a track position, playback will start at the specified position.")
(license license:gpl3+))))
(define-public emacs-org-jira
(package
(name "emacs-org-jira")
(version "4.3.1")
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/ahungry/org-jira.git")
(commit version)))
(file-name (git-file-name name version))
(sha256
(base32
"1l80r2a9zzbfk2c78i40h0ww79vm9v4j6xi2h5i4w9kqh10rs6h2"))))
(build-system emacs-build-system)
(propagated-inputs
`(("emacs-request" ,emacs-request)
("emacs-s" ,emacs-s)
("emacs-dash" ,emacs-dash)
("emacs-org" ,emacs-org)))
(home-page "https://github.com/ahungry/org-jira")
(synopsis "Syncing between Jira and Org-mode")
(description
"This package provides an extension to org-mode for syncing issues with
JIRA issue servers.")
(license license:gpl3+)))
(define-public emacs-systemd-mode
(package
(name "emacs-systemd-mode")
(version "1.6")
(source (origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/holomorph/systemd-mode.git")
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
(base32
"0ylgnvpfindg4cxccbqy02ic7p0i9rygf1w16dm1filwhbqvjplq"))))
(build-system emacs-build-system)
(arguments '(#:include '("\\.el$" "\\.txt$")))
(home-page "https://github.com/holomorph/systemd-mode")
(synopsis
"Major mode for editing systemd units")
(description
"Major mode for editing systemd units in GNU Emacs.")
(license license:gpl3+)))
(define-public emacs-ssh-config-mode
(let ((commit "4c1dfa57d452cb5654453bf186c8ff63e1e71b56")
(revision "1"))
(package
(name "emacs-ssh-config-mode")
(version (git-version "8.0" revision commit))
(source
(origin
(method git-fetch)
(uri
(git-reference
(url "https://github.com/jhgorrell/ssh-config-mode-el.git")
(commit commit)))
(file-name (git-file-name name commit))
(sha256
(base32
"0crglfdazzckizbwzmgl2rn6j85avfzkr1q7ijxd17rp2anvr9bd"))))
(build-system emacs-build-system)
(arguments '(#:include '("\\.el$" "\\.txt$")))
(home-page
"https://github.com/jhgorrell/ssh-config-mode-el")
(synopsis
"Mode for fontification of ~/.ssh/config")
(description
"This packages fontifies the ssh config keywords and creates
keybindings for skipping from host section to host section.")
(license license:gpl3+))))

View File

@ -980,8 +980,8 @@ Z64 video plugin.")
(string-append "COREDIR=" m64p "/lib/")))
;; There are no tests.
#:tests? #f))
(home-page "http://www.mupen64plus.org/")
(synopsis "Mupen64Plus SDL input plugin")
(home-page "https://www.mupen64plus.org/")
(synopsis "Mupen64Plus command line user interface")
(description
"Mupen64Plus is a cross-platform plugin-based Nintendo 64 (N64) emulator
which is capable of accurately playing many games. This package contains the

View File

@ -448,7 +448,7 @@ other machines/servers. Electroncash does not download the Bitcoin Cash blockch
;; the system's dynamically linked library.
(package
(name "monero")
(version "0.14.1.0")
(version "0.14.1.2")
(source
(origin
(method git-fetch)
@ -469,7 +469,7 @@ other machines/servers. Electroncash does not download the Bitcoin Cash blockch
#t))
(sha256
(base32
"1asa197fad81jfv12qgaa7y7pdr1r1pda96m9pvivkh4v30cx0nh"))))
"00zl883c7lcd9z7g4y3vv7rxmr7ppzrxdblnhk32r9l3qzyw55r6"))))
(build-system cmake-build-system)
(native-inputs
`(("doxygen" ,doxygen)
@ -511,6 +511,11 @@ other machines/servers. Electroncash does not download the Bitcoin Cash blockch
(("return \\(")
"return ((std::string(getenv(\"HOME\"))) / "))
#t))
(add-after 'change-log-path 'fix-file-permissions-for-tests
(lambda _
(for-each make-file-writable
(find-files "tests/data/" "wallet_9svHk1.*"))
#t))
;; Only try tests that don't need access to network or system
(replace 'check
(lambda _
@ -525,11 +530,6 @@ other machines/servers. Electroncash does not download the Bitcoin Cash blockch
"DNSResolver.DNSSECSuccess"
"DNSResolver.DNSSECFailure"
"DNSResolver.GetTXTRecord"
;; TODO: Find why portability_wallet test fails
;; Maybe the Boost version used to create the test
;; wallet and the current Boost version are not
;; completely compatible?
"Serialization.portability_wallet"
"is_hdd.linux_os_root")
":")))
(invoke "tests/unit_tests/unit_tests"
@ -1114,3 +1114,31 @@ information.")
(description "This allows a Trezor hardware wallet to communicate to the
Trezor wallet.")
(license license:lgpl3+)))
(define-public bitcoin-abc
(package
(inherit bitcoin-core)
(name "bitcoin-abc")
(version "0.19.8")
(source (origin
(method url-fetch)
(uri (string-append "https://download.bitcoinabc.org/"
version "/linux/src/bitcoin-abc-"
version ".tar.gz"))
(sha256
(base32
"0ndvkxv5m8346bdhfqzgdiz1k9wyjycj05jp7daf9pml3cw79sz5"))))
(home-page "https://www.bitcoinabc.org/")
(synopsis "Bitcoin ABC peer-to-peer full node for the Bitcoin Cash protocol")
(description
"Bitcoin Cash brings sound money to the world, fulfilling the original
promise of Bitcoin as Peer-to-Peer Electronic Cash. Merchants and users are
empowered with low fees and reliable confirmations is a digital currency that
enables instant payments to anyone anywhere in the world. It uses
peer-to-peer technology to operate without central authority: managing
transactions and issuing money are carried out collectively by the network.
As a fork it implemented changes lowering the time between blocks and now
offers confimations after less than 5 seconds and have significantly lower
fees that BTC. Bitcoin ABC is the reference implementation of the Bitcoin
Cash protocol. This package provides the Bitcoin Cash command line client and
a client based on Qt. This is a fork of Bitcoin Core.")))

View File

@ -26,6 +26,7 @@
;;; Copyright © 2019 Jens Mølgaard <jens@zete.tk>
;;; Copyright © 2019 Nicolas Goaziou <mail@nicolasgoaziou.fr>
;;; Copyright © 2019 Baptiste Strazzulla <bstrazzull@hotmail.fr>
;;; Copyright © 2019 Alva <alva@skogen.is>
;;;
;;; This file is part of GNU Guix.
;;;
@ -66,7 +67,7 @@
(define-public font-ibm-plex
(package
(name "font-ibm-plex")
(version "1.0.1")
(version "2.0.0")
(source (origin
(method url-fetch)
(uri (string-append
@ -74,7 +75,7 @@
"v" version "/OpenType.zip"))
(sha256
(base32
"0nzxw9z6waixslam248yr26ci3fbk83c7jf6m90hncnaj6zxx795"))))
"1lv65z3qnqgh2w36daf5wyz0ma9rg1qj9s9lzlnva8l7q3h8c9b8"))))
(build-system font-build-system)
(home-page "https://github.com/IBM/plex")
(synopsis "IBM Plex typeface")

View File

@ -28,14 +28,14 @@
(define-public freeipmi
(package
(name "freeipmi")
(version "1.6.3")
(version "1.6.4")
(source (origin
(method url-fetch)
(uri (string-append "mirror://gnu/freeipmi/freeipmi-"
version ".tar.gz"))
(sha256
(base32
"1sg12ycig2g5yv9l3vx25wsjmz7ybnrsvji0vs51yjmclwsygm5a"))))
"0g0s4iwx0ng4rv7hp5cc3kkx4drahsc89981gwjblf04lfavppv5"))))
(build-system gnu-build-system)
(inputs
`(("libgcrypt" ,libgcrypt)))

View File

@ -1386,7 +1386,7 @@ that beneath its ruins lay buried an ancient evil.")
(define-public angband
(package
(name "angband")
(version "4.1.3")
(version "4.2.0")
(source
(origin
(method url-fetch)
@ -1395,7 +1395,7 @@ that beneath its ruins lay buried an ancient evil.")
"/angband-" version ".tar.gz"))
(sha256
(base32
"0vs0314lbdc6rzxn4jnb7zp6n1p1cdb8r53savadn7k9vbwc80ll"))
"0vdm1ymm28wawp94nl1p5q3lhc0k7cnn2kkvvrkfx962gif4kqfk"))
(modules '((guix build utils)))
(snippet
;; So, some of the sounds/graphics/tilesets are under different
@ -1409,7 +1409,7 @@ that beneath its ruins lay buried an ancient evil.")
(delete-file-recursively lib-subdir)))
'("fonts" "icons" "sounds" "tiles"))
(substitute* "lib/Makefile"
;; And don't try to invoke makefiles in the directories we removed
;; And don't try to invoke makefiles in the directories we removed.
(("gamedata customize help screens fonts tiles sounds icons user")
"gamedata customize help screens user"))
#t))))
@ -2340,15 +2340,15 @@ on the screen and keyboard to display letters.")
(define-public manaplus
(package
(name "manaplus")
(version "1.7.6.10")
(version "1.9.3.23")
(source (origin
(method url-fetch)
(uri (string-append
"http://repo.manaplus.org/manaplus/download/"
"https://repo.manaplus.org/manaplus/download/"
version "/manaplus-" version ".tar.xz"))
(sha256
(base32
"0l7swvpzq20am4w2rsjpp6fsvbjv07il6wbfy45a7h9zsdihmqhl"))))
"1ky182p4svwdqm6cf7jbns85hidkhkhq4s17cs2p381f0klapfjz"))))
(build-system gnu-build-system)
(arguments
'(#:configure-flags
@ -2363,7 +2363,7 @@ on the screen and keyboard to display letters.")
("libxml2" ,libxml2)
("mesa" ,mesa)
("sdl-union" ,(sdl-union))))
(home-page "http://manaplus.org")
(home-page "https://manaplus.org")
(synopsis "Client for 'The Mana World' and similar games")
(description
"ManaPlus is a 2D MMORPG client for game servers. It is the only
@ -2828,7 +2828,7 @@ players.")
(version "2.0")
(source (origin
(method url-fetch)
(uri (string-append "http://http.debian.net/debian/pool/main/e/"
(uri (string-append "mirror://debian/pool/main/e/"
"einstein/einstein_2.0.dfsg.2.orig.tar.gz"))
(sha256
(base32

View File

@ -38,7 +38,7 @@
(define-public gramps
(package
(name "gramps")
(version "5.0.1")
(version "5.0.2")
(source
(origin
(method git-fetch)
@ -48,7 +48,7 @@
(file-name (git-file-name name version))
(sha256
(base32
"1jz1fbjj6byndvir7qxzhd2ryirrd5h2kwndxpp53xdc05z1i8g7"))))
"0wg743q8ixy5dmwricgkl4zck4109vq5ppmkyi18qjmna9m0aq7r"))))
(build-system python-build-system)
(native-inputs
`(("gettext" ,gettext-minimal)

View File

@ -5962,7 +5962,10 @@ devices using the GNOME desktop.")
(arguments
'(#:glib-or-gtk? #t
#:configure-flags
(list "-Dcheese=false")
(list "-Dcheese=false"
(string-append "-Dgnome_session_libexecdir="
(assoc-ref %build-inputs "gnome-session")
"/libexec"))
#:phases
(modify-phases %standard-phases
(add-before 'configure 'patch-paths
@ -5970,7 +5973,8 @@ devices using the GNOME desktop.")
(let ((libc (assoc-ref inputs "libc"))
(tzdata (assoc-ref inputs "tzdata"))
(libgnomekbd (assoc-ref inputs "libgnomekbd"))
(nm-applet (assoc-ref inputs "network-manager-applet")))
(nm-applet (assoc-ref inputs "network-manager-applet"))
(gnome-desktop (assoc-ref inputs "gnome-desktop")))
(substitute* "panels/datetime/tz.h"
(("/usr/share/zoneinfo/zone.tab")
(string-append tzdata "/share/zoneinfo/zone.tab")))
@ -5990,6 +5994,10 @@ devices using the GNOME desktop.")
(substitute* '("panels/user-accounts/run-passwd.c")
(("/usr/bin/passwd")
"/run/setuid-programs/passwd"))
(substitute* "panels/info/cc-info-overview-panel.c"
(("DATADIR \"/gnome/gnome-version.xml\"")
(string-append "\"" gnome-desktop
"/share/gnome/gnome-version.xml\"")))
#t))))))
(native-inputs
`(("glib:bin" ,glib "bin") ; for glib-mkenums, etc.
@ -6009,6 +6017,7 @@ devices using the GNOME desktop.")
("gnome-desktop" ,gnome-desktop)
("gnome-online-accounts" ,gnome-online-accounts)
("gnome-online-accounts:lib" ,gnome-online-accounts "lib")
("gnome-session" ,gnome-session)
("gnome-settings-daemon" ,gnome-settings-daemon)
("grilo" ,grilo)
("ibus" ,ibus)
@ -8306,3 +8315,35 @@ advanced image management tool")
(description "The aim of the handy library is to help with developing user
intefaces for mobile devices using GTK+.")
(license license:lgpl2.1+)))
(define-public libgit2-glib
(package
(name "libgit2-glib")
(version "0.28.0.1")
(source (origin
(method url-fetch)
(uri (string-append "mirror://gnome/sources/" name "/"
(version-major+minor version) "/"
name "-" version ".tar.xz"))
(sha256
(base32
"0a0g7aw66rfgnqr4z7fgbk5zzcjq66m4rp8v4val3a212941h0g7"))))
(build-system meson-build-system)
(native-inputs
`(("glib:bin" ,glib "bin") ;; For glib-mkenums
("gobject-introspection" ,gobject-introspection)
("intltool" ,intltool)
("libssh2" ,libssh2)
("pkg-config" ,pkg-config)
("python-pygobject" ,python-pygobject)
("python-wrapper" ,python-wrapper)
("vala" ,vala)))
(inputs
`(("glib" ,glib)
("libgit2" ,libgit2)))
(synopsis "GLib wrapper around the libgit2 Git access library")
(description "libgit2-glib is a GLib wrapper library around the libgit2 Git
access library. It only implements the core plumbing functions, not really the
higher level porcelain stuff.")
(home-page "https://wiki.gnome.org/Projects/Libgit2-glib")
(license license:gpl2+)))

View File

@ -12,6 +12,7 @@
;;; Copyright © 2018 Alex Kost <alezost@gmail.com>
;;; Copyright © 2018 Kei Kebreau <kkebreau@posteo.net>
;;; Copyright © 2019 Mark H Weaver <mhw@netris.org>
;;; Copyright © 2019 Carlo Zancanaro <carlo@zancanaro.id.au>
;;;
;;; This file is part of GNU Guix.
;;;
@ -104,6 +105,7 @@
"-DWITH_INSTALL_PORTABLE=OFF"
"-DWITH_JACK=ON"
"-DWITH_MOD_OCEANSIM=ON"
"-DWITH_OPENSUBDIV=ON"
"-DWITH_PYTHON_INSTALL=OFF"
(string-append "-DPYTHON_LIBRARY=python" ,python-version "m")
(string-append "-DPYTHON_LIBPATH=" (assoc-ref %build-inputs "python")
@ -139,6 +141,7 @@
("libx11" ,libx11)
("openimageio" ,openimageio)
("openexr" ,openexr)
("opensubdiv" ,opensubdiv)
("ilmbase" ,ilmbase)
("openjpeg" ,openjpeg)
("libjpeg" ,libjpeg)
@ -972,3 +975,47 @@ your terminal. It comes bundled with predefined styles:
look. The result can be uploaded on any web server without additional
requirements.")
(license license:gpl2+)))
(define-public opensubdiv
(package
(name "opensubdiv")
(version "3_4_0")
(source (origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/PixarAnimationStudios/OpenSubdiv")
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
(base32
"0cippg6aqc5dlya1cmh3908pwssrg52fwgyylnvz5343yrxmgk12"))))
(build-system cmake-build-system)
(arguments
`(#:phases (modify-phases %standard-phases
(add-before 'configure 'set-glew-location
(lambda* (#:key inputs #:allow-other-keys)
(setenv "GLEW_LOCATION" (assoc-ref inputs "glew"))
#t))
(add-before 'check 'start-xorg-server
(lambda* (#:key inputs #:allow-other-keys)
;; The test suite requires a running X server.
(system (string-append (assoc-ref inputs "xorg-server")
"/bin/Xvfb :1 &"))
(setenv "DISPLAY" ":1")
#t)))))
(native-inputs
`(("xorg-server" ,xorg-server)))
(inputs
`(("glew" ,glew)
("libxrandr" ,libxrandr)
("libxcursor" ,libxcursor)
("libxinerama" ,libxinerama)
("libxi" ,libxi)
("zlib" ,zlib)
("glfw" ,glfw)))
(home-page "http://graphics.pixar.com/opensubdiv/")
(synopsis "High performance subdivision surface evaluation")
(description "OpenSubdiv is a set of libraries that implement high
performance subdivision surface (subdiv) evaluation on massively parallel CPU
and GPU architectures.")
(license license:asl2.0)))

View File

@ -916,7 +916,7 @@ tracker's SOAP service, such as @url{https://bugs.gnu.org}.")
version ".tar.lz"))
(sha256
(base32
"05pm0rwdxhjdlpmvhn0kyfslph6j5m1gv76givs0hshb30nirl2x"))))
"0zgvh2329zrclxfb1lh7dnqrq46jj77l0lx7j9y6y3xgbhd2d9l0"))))
(build-system gnu-build-system)
(native-inputs
`(("pkg-config" ,pkg-config)

View File

@ -8361,7 +8361,7 @@ generated SQL and optimize it for your backend.")
(define-public shellcheck
(package
(name "shellcheck")
(version "0.5.0")
(version "0.7.0")
(source
(origin
(method url-fetch)
@ -8369,12 +8369,12 @@ generated SQL and optimize it for your backend.")
"https://hackage.haskell.org/package/ShellCheck/ShellCheck-"
version ".tar.gz"))
(sha256
(base32
"0z1hscbr11hwkq8k1v0vaa947hb9m6k4cm831jk1gpj8dxrk151b"))
(base32 "1vx895cp5k5h0680xfwj74lk97m9y627n965x6srds0gfnbkzy9s"))
(file-name (string-append name "-" version ".tar.gz"))))
(build-system haskell-build-system)
(inputs
`(("ghc-aeson" ,ghc-aeson)
("ghc-diff" ,ghc-diff)
("ghc-quickcheck" ,ghc-quickcheck)
("ghc-regex-tdfa" ,ghc-regex-tdfa)))
(home-page "https://github.com/koalaman/shellcheck")

View File

@ -1,6 +1,6 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2017 John Darrington <jmd@gnu.org>
;;; Copyright © 2017 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2017, 2019 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2014 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2014 Mark H Weaver <mhw@netris.org>
;;; Copyright © 2016 Eric Bavier <bavier@member.fsf.org>
@ -36,10 +36,13 @@
#:use-module (gnu packages algebra)
#:use-module (gnu packages bison)
#:use-module (gnu packages boost)
#:use-module (gnu packages check)
#:use-module (gnu packages compression)
#:use-module (gnu packages curl)
#:use-module (gnu packages documentation)
#:use-module (gnu packages flex)
#:use-module (gnu packages fontutils)
#:use-module (gnu packages geo)
#:use-module (gnu packages ghostscript)
#:use-module (gnu packages gl)
#:use-module (gnu packages glib)
@ -58,13 +61,16 @@
#:use-module (gnu packages protobuf)
#:use-module (gnu packages python)
#:use-module (gnu packages python-xyz)
#:use-module (gnu packages qt)
#:use-module (gnu packages serialization)
#:use-module (gnu packages tbb)
#:use-module (gnu packages tls)
#:use-module (gnu packages video)
#:use-module (gnu packages xiph)
#:use-module (gnu packages xml)
#:use-module (gnu packages xorg)
#:use-module (ice-9 match))
#:use-module (ice-9 match)
#:use-module (srfi srfi-1))
(define-public dcmtk
(package
@ -212,6 +218,22 @@ a suite of 3D interaction widgets, supports parallel processing, and
integrates with various databases on GUI toolkits such as Qt and Tk.")
(license license:bsd-3)))
;; itksnap needs an older variant of VTK.
(define-public vtk-6
(package (inherit vtk)
(version "6.3.0")
(source (origin
(method url-fetch)
(uri (string-append "https://vtk.org/files/release/"
(version-major+minor version)
"/VTK-" version ".tar.gz"))
(sha256
(base32
"0pla1r5mvkgl4sl213gfdhzrypdgai0h3z5mfgm6p9jz9hsr794j"))))
(inputs
`(("jsoncpp" ,jsoncpp-for-tensorflow)
,@(alist-delete "jsoncpp" (package-inputs vtk))))))
(define-public opencv
(package
(name "opencv")
@ -517,3 +539,305 @@ the VIPS image processing library. It's a little like a spreadsheet: you
create a set of formula connecting your objects together, and on a change nip2
recalculates.")
(license license:gpl2+)))
(define-public vxl
(package
(name "vxl")
(version "2.0.2")
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/vxl/vxl.git")
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
(base32 "0949hw57szq8943f1whwqaz591xjmb19kj803hcv74hdai2b0ycg"))
(modules '((guix build utils)))
;; TODO: vxl includes an old version of dcmtk. It won't build with
;; version 3.6.x.
(snippet
'(begin
(for-each delete-file-recursively
'("v3p/bzlib/"
"v3p/geotiff/"
"v3p/jpeg/"
"v3p/png/"
"v3p/tiff/"
"v3p/zlib/"))
(substitute* "v3p/CMakeLists.txt"
(("add_subdirectory\\((tiff|png|jpeg|zlib|bzlib|geotiff)\\)")
""))
#t))))
(build-system cmake-build-system)
(inputs
`(("libgeotiff" ,libgeotiff)
("libtiff" ,libtiff)
("libjpeg" ,libjpeg)
("libpng" ,libpng)
("zlib" ,zlib)))
(home-page "https://github.com/vxl/vxl/")
(synopsis "Collection of C++ libraries for computer vision")
(description "VXL (the Vision-something-Libraries) is a collection of C++
libraries designed for computer vision research and implementation.")
(license license:bsd-3)))
(define-public vxl-1
(package (inherit vxl)
(name "vxl")
(version "1.18.0")
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/vxl/vxl.git")
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
(base32 "1g4mr2cc58jwm0vasscbd4y5380wj3ahkvq121z4gs83fhavvxgz"))
(modules '((guix build utils)))
(snippet
'(begin
(for-each delete-file-recursively
'("v3p/bzlib/"
"v3p/geotiff/"
"v3p/png/"
"v3p/tiff/"
"v3p/zlib/"))
(substitute* "v3p/CMakeLists.txt"
(("add_subdirectory\\((tiff|png|jpeg|zlib|bzlib|geotiff)\\)")
""))
#t))))
(arguments
`(#:configure-flags
;; Needed for itk-snap
(list "-DVNL_CONFIG_LEGACY_METHODS=ON")))))
(define-public insight-toolkit
(package
(name "insight-toolkit")
(version "5.0.0")
(source
(origin
(method url-fetch)
(uri (string-append "https://github.com/InsightSoftwareConsortium/ITK/"
"releases/download/v" version "/InsightToolkit-"
version ".tar.xz"))
(sha256
(base32 "0bs63mk4q8jmx38f031jy5w5n9yy5ng9x8ijwinvjyvas8cichqi"))))
(build-system cmake-build-system)
(arguments
`(#:tests? #f ; tests require network access and external data
#:configure-flags
'("-DITK_USE_GPU=ON"
"-DITK_USE_SYSTEM_LIBRARIES=ON"
"-DITK_USE_SYSTEM_GOOGLETEST=ON"
"-DITK_BUILD_SHARED=ON"
;; This prevents "GTest::GTest" from being added to the ITK_LIBRARIES
;; variable in the installed CMake files. This is necessary as other
;; packages using insight-toolkit could not be configured otherwise.
"-DGTEST_ROOT=gtest")
#:phases
(modify-phases %standard-phases
(add-after 'unpack 'do-not-tune
(lambda _
(substitute* "CMake/ITKSetStandardCompilerFlags.cmake"
(("-mute=native") ""))
#t)))))
(inputs
`(("eigen" ,eigen)
("expat" ,expat)
("fftw" ,fftw)
("fftwf" ,fftwf)
("hdf5" ,hdf5)
("libjpeg" ,libjpeg)
("libpng" ,libpng)
("libtiff" ,libtiff)
("mesa" ,mesa-opencl)
("perl" ,perl)
("python" ,python)
("tbb" ,tbb)
("vxl" ,vxl-1)
("zlib" ,zlib)))
(native-inputs
`(("googletest" ,googletest)
("pkg-config" ,pkg-config)))
(home-page "https://github.com/InsightSoftwareConsortium/ITK/")
(synopsis "Scientific image processing, segmentation and registration")
(description "The Insight Toolkit (ITK) is a toolkit for N-dimensional
scientific image processing, segmentation, and registration. Segmentation is
the process of identifying and classifying data found in a digitally sampled
representation. Typically the sampled representation is an image acquired
from such medical instrumentation as CT or MRI scanners. Registration is the
task of aligning or developing correspondences between data. For example, in
the medical environment, a CT scan may be aligned with a MRI scan in order to
combine the information contained in both.")
(license license:asl2.0)))
(define-public insight-toolkit-4
(package (inherit insight-toolkit)
(version "4.13.2")
(source
(origin
(method url-fetch)
(uri (string-append "https://github.com/InsightSoftwareConsortium/ITK/"
"releases/download/v" version "/InsightToolkit-"
version ".tar.xz"))
(sha256
(base32 "19cgfpd63gqrvc3m27m394gy2d7w79g5y6lvznb5qqr49lihbgns"))))
(arguments
`(#:tests? #f ; tests require network access and external data
#:configure-flags
'("-DITKV3_COMPATIBILITY=ON" ; needed for itk-snap
"-DITK_USE_GPU=ON"
"-DITK_USE_SYSTEM_LIBRARIES=ON"
"-DITK_USE_SYSTEM_GOOGLETEST=ON"
"-DITK_USE_SYSTEM_VXL=ON")))))
(define-public insight-toolkit-4.12
(package (inherit insight-toolkit-4)
(version "4.12.2")
(source
(origin
(method url-fetch)
(uri (string-append "mirror://sourceforge/itk/itk/4.12/"
"InsightToolkit-" version ".tar.xz"))
(sha256
(base32 "1qw9mxbh083siljygahl4gdfv91xvfd8hfl7ghwii19f60xrvn2w"))))))
(define-public itk-snap
(package
(name "itk-snap")
(version "3.8.0")
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://git.code.sf.net/p/itk-snap/src")
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
(base32 "15i5ixpryfrbf3vrrb5rici8fb585f25k0v1ljds16bp1f1msr4q"))))
(build-system cmake-build-system)
(arguments
`(#:configure-flags
(list "-DSNAP_VERSION_GIT_SHA1=release"
"-DSNAP_VERSION_GIT_BRANCH=release"
"-DSNAP_VERSION_GIT_TIMESTAMP=0"
"-DSNAP_PACKAGE_QT_PLUGINS=OFF"
"-DCMAKE_POSITION_INDEPENDENT_CODE=ON"
"-DCMAKE_CXX_FLAGS=-std=gnu++11 -fpermissive")
#:phases
(modify-phases %standard-phases
;; During the installation phase all libraries provided by all
;; dependencies will be copied to the lib directory. That's insane,
;; so we disable this.
(add-after 'unpack 'do-not-copy-dependencies
(lambda _
(substitute* "CMakeLists.txt"
(("install_qt5_executable\
\\(\\$\\{SNAP_MAIN_INSTALL_DIR\\}/\\$\\{SNAP_EXE\\}\\)")
""))
#t))
(add-after 'unpack 'disable-gui-tests
(lambda _
;; The GUI tests just time out.
(substitute* "CMakeLists.txt"
((" (Workspace|DiffSpace|ProbeIntensity|RegionCompetition\
|RandomForest|RandomForestBailOut)")
""))
#t))
(add-after 'unpack 'make-reproducible
(lambda _
(substitute* "CMakeLists.txt"
(("TODAY\\(SNAP_VERSION_COMPILE_DATE\\)")
"SET(SNAP_VERSION_COMPILE_DATE \"(removed for reproducibility)\")"))
#t))
(add-after 'unpack 'prepare-submodules
(lambda* (#:key inputs #:allow-other-keys)
(rmdir "Submodules/c3d")
(copy-recursively (assoc-ref inputs "c3d-src")
"Submodules/c3d")
(substitute* '("Submodules/c3d/adapters/BiasFieldCorrectionN4.cxx"
"Submodules/c3d/adapters/ApplyMetric.cxx")
(("vcl_") "std::"))
(rmdir "Submodules/greedy")
(symlink (assoc-ref inputs "greedy-src")
"Submodules/greedy")
#t))
(add-after 'unpack 'fix-includes
(lambda _
(substitute* "GUI/Model/RegistrationModel.cxx"
(("<vnl_symmetric_eigensystem.h>")
"<vnl/algo/vnl_symmetric_eigensystem.h>"))
#t))
(add-before 'check 'prepare-tests
(lambda _
;; Needed by at least one test.
(setenv "HOME" "/tmp")
#t))
(add-after 'install 'wrap-executable
(lambda* (#:key inputs outputs #:allow-other-keys)
(let ((out (assoc-ref outputs "out")))
(wrap-program (string-append out "/bin/itksnap")
`("QT_PLUGIN_PATH" ":" prefix
,(map (lambda (label)
(string-append (assoc-ref inputs label)
"/lib/qt5/plugins"))
'("qtbase" "qtdeclarative"))))
#t))))))
(inputs
`(("curl" ,curl)
("fftw" ,fftw)
("fftwf" ,fftwf)
("glu" ,glu)
("hdf5" ,hdf5)
("mesa" ,mesa-opencl)
;; This package does not build with either insight-toolkit 5.0.0 and
;; not with 4.13. It really needs to be 4.12.
("itk" ,insight-toolkit-4.12)
("vtk" ,vtk-6)
("qtbase" ,qtbase)
("qtdeclarative" ,qtdeclarative)
("qttools" ,qttools)
("vxl" ,vxl-1)
("zlib" ,zlib)))
(native-inputs
`(("googletest" ,googletest)
("pkg-config" ,pkg-config)
("c3d-src"
,(let* ((commit "f521358db26e00002c911cc47bf463b043942ad3")
(revision "1")
(version (git-version "0" revision commit)))
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/pyushkevich/c3d.git")
(commit commit)))
(file-name (git-file-name "c3d" version))
(sha256
(base32
"0kyv3rxrxwr8c3sa9zv01lsnhk95b27gx1s870k3yi8qp52h7bx3")))))
;; We are using an arbitrary commit from 2017 because the latest
;; version breaks the build...
("greedy-src"
,(let* ((commit "97e340f7e8e66597599144947775e6039e79a0d3")
(revision "1")
(version (git-version "0" revision commit)))
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/pyushkevich/greedy.git")
(commit commit)))
(file-name (git-file-name "greedy" version))
(sha256
(base32
"0k5bc9za4jrc8z9dj08z1rkcp5xf0gnd1d2jmi1w9ny4vxh2q2ab")))))))
(home-page "https://sourceforge.net/p/itk-snap/")
(synopsis "Medical image segmentation")
(description "ITK-SNAP is a tool for segmenting anatomical structures in
medical images. It provides an automatic active contour segmentation
pipeline, along with supporting a manual segmentation toolbox. ITK-SNAP has a
full-featured UI aimed at clinical researchers.")
;; This includes the submodules greedy and c3d.
(license license:gpl3+)))

View File

@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2013, 2017, 2018 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2013, 2017, 2018, 2019 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2014 Ian Denhardt <ian@zenhack.net>
;;; Copyright © 2015, 2016 Alex Kost <alezost@gmail.com>
;;; Copyright © 2016, 2017, 2018 Efraim Flashner <efraim@flashner.co.il>
@ -131,6 +131,11 @@ actions.")
`( ;; Enable support for a "map" pane using GPS data.
#:configure-flags '("--enable-map")
;; Parallel builds fail with something like:
;; image-load.c:143:9: error: gq_marshal_VOID__INT_INT_INT_INT undeclared
;; due to unexpressed makefile dependencies.
#:parallel-build? #f
#:phases
(modify-phases %standard-phases
(add-before 'bootstrap 'pre-bootstrap
@ -496,14 +501,14 @@ preloading.")
(define-public chafa
(package
(name "chafa")
(version "1.0.1")
(version "1.2.1")
(source (origin
(method url-fetch)
(uri (string-append "https://hpjansson.org/chafa/releases/chafa-"
version ".tar.xz"))
(sha256
(base32
"00cf2z52az0z6bzc3hfm4l8infipy5ck410wqmbaybd2csjr3m29"))))
"1hj4vdyczby8h52ff23qxl8ng18p5jy549idngpiddwszf5s4drz"))))
(build-system gnu-build-system)
(native-inputs
`(("pkg-config" ,pkg-config)))

View File

@ -339,8 +339,8 @@ as Alfresco or Nuxeo.")
(source
(origin
(method url-fetch)
(uri (string-append "https://dev-www.libreoffice.org/src/" name "/"
name "-" version ".tar.xz"))
(uri (string-append "https://dev-www.libreoffice.org/src/libabw/"
"libabw-" version ".tar.xz"))
(sha256 (base32
"11949iscdb99f2jplxjd39282jxcrf2fw0sqbh5dl7gqb96r8whb"))))
(build-system gnu-build-system)

View File

@ -349,26 +349,26 @@ corresponding UPSTREAM-SOURCE (an origin), using the given DEBLOB-SCRIPTS."
"linux-" version ".tar.xz"))
(sha256 hash)))
(define-public linux-libre-5.2-version "5.2.8")
(define-public linux-libre-5.2-version "5.2.9")
(define-public linux-libre-5.2-pristine-source
(let ((version linux-libre-5.2-version)
(hash (base32 "0dv91zfjkil29lp2l35lswkrhrqbc4kjh965ciaqwih1rh3cs9x1")))
(hash (base32 "1rnlnphw9rih4qhdld9ic5lnj5jh4vy5nqbj9lqwv9bc615jmw5n")))
(make-linux-libre-source version
(%upstream-linux-source version hash)
deblob-scripts-5.2)))
(define-public linux-libre-4.19-version "4.19.66")
(define-public linux-libre-4.19-version "4.19.67")
(define-public linux-libre-4.19-pristine-source
(let ((version linux-libre-4.19-version)
(hash (base32 "0r6vzarmi77fhivd1n6f667sgcw8zd54ykmhmp6rd52bbkhsp0f9")))
(hash (base32 "00m5k0nfcvgff70686rbhn3w8c9wc3jxqvyddw40lylaqdh3s72s")))
(make-linux-libre-source version
(%upstream-linux-source version hash)
deblob-scripts-4.19)))
(define-public linux-libre-4.14-version "4.14.138")
(define-public linux-libre-4.14-version "4.14.139")
(define-public linux-libre-4.14-pristine-source
(let ((version linux-libre-4.14-version)
(hash (base32 "0yw39cqpk6g42q0xcv2aq8yyzsi0kzx9nvlfbw0iyg58wcfvsl7j")))
(hash (base32 "0hkhwcbxg6bry13w9kspx48b10274w6pgv200wh91fjd8jax8qlc")))
(make-linux-libre-source version
(%upstream-linux-source version hash)
deblob-scripts-4.14)))
@ -3928,6 +3928,49 @@ repair and easy administration.")
from the btrfs-progs package. It is meant to be used in initrds.")
(license (package-license btrfs-progs))))
(define-public compsize
(package
(name "compsize")
(version "1.3")
(home-page "https://github.com/kilobyte/compsize")
(source (origin
(method git-fetch)
(uri (git-reference
(url home-page)
(commit (string-append "v" version))))
(sha256
(base32 "1c69whla844nwis30jxbj00zkpiw3ccndhkmzjii8av5358mjn43"))
(file-name (git-file-name name version))))
(build-system gnu-build-system)
(inputs
`(("btrfs-progs" ,btrfs-progs)))
(arguments
`(#:tests? #f ; No tests.
#:make-flags (list "CC=gcc")
#:phases
(modify-phases %standard-phases
(delete 'configure)
(replace 'install
(lambda* (#:key outputs #:allow-other-keys)
(let ((out (assoc-ref outputs "out")))
(install-file "compsize" (string-append out "/bin"))
(install-file "compsize.8" (string-append out "/share/man/man8"))))))))
(synopsis "Find compression type/ratio on Btrfs files")
(description "@command{compsize} takes a list of files (given as
arguments) on a Btrfs file system and measures used compression types and
effective compression ratio, producing a report.
A directory has no extents but has a (recursive) list of files. A non-regular
file is silently ignored.
As it makes no sense to talk about compression ratio of a partial extent,
every referenced extent is counted whole, exactly once -- no matter if you use
only a few bytes of a 1GB extent or reflink it a thousand times. Thus, the
uncompressed size will not match the number given by @command{tar} or
@command{du}. On the other hand, the space used should be accurate (although
obviously it can be shared with files outside our set).")
(license license:gpl2+)))
(define-public f2fs-tools-1.7
(package
(name "f2fs-tools")

View File

@ -5319,7 +5319,7 @@ port within a range.")
(define-public txr
(package
(name "txr")
(version "216")
(version "223")
(source
(origin
(method url-fetch)
@ -5329,7 +5329,7 @@ port within a range.")
(patches (search-patches "txr-shell.patch"))
(sha256
(base32
"07cxdpc9zsqd0c2668g00dqjpd6zc4mfdn74aarr6d2hpzdhh937"))))
"0109q8idqggba3kx58dpm5ccfpdrki68npkcxm18p5ga24611fcv"))))
(build-system gnu-build-system)
(arguments
'(#:configure-flags '("cc=gcc")
@ -5343,7 +5343,7 @@ port within a range.")
#t))
(replace 'check
(lambda _
(zero? (system* "make" "tests")))))))
(invoke "make" "tests"))))))
(native-inputs
`(("bison" ,bison)
("flex" ,flex)))

View File

@ -1245,6 +1245,39 @@ easily publishing them on internet image hosting services.")
(license license:gpl2+)))
(define-public lxqt-archiver
(package
(name "lxqt-archiver")
(version "0.0.96")
(source
(origin
(method git-fetch)
(uri (git-reference
(url (string-append "https://github.com/lxqt/" name ".git"))
(commit version)))
(file-name (git-file-name name version))
(sha256
(base32 "09rw774vxj96wcpxxncz6nr9bmw7l4l0kwylmz1saq6rpa2yvn2i"))))
(build-system cmake-build-system)
(inputs
`(("glib" ,glib)
("json-glib" ,json-glib)
("libfm-qt" ,libfm-qt)
("qtbase" ,qtbase)
("qtx11extras" ,qtx11extras)))
(native-inputs
`(("pkg-config" ,pkg-config)
("lxqt-build-tools" ,lxqt-build-tools)
("qttools" ,qttools)))
(arguments
'(#:tests? #f))
(home-page "https://lxqt.org/")
(synopsis "Simple & lightweight desktop-agnostic Qt file archiver")
(description
"This package provides a Qt graphical interface to archiving programs
like @command{tar} and @command{zip}.")
(license license:gpl2+)))
;; The LXQt Desktop Environment
(define-public lxqt

View File

@ -998,18 +998,17 @@ and search library.")
(define-public getmail
(package
(name "getmail")
(version "5.6")
(version "5.14")
(source
(origin
(method url-fetch)
(uri (string-append "http://pyropus.ca/software/getmail/old-versions/"
name "-" version ".tar.gz"))
"getmail-" version ".tar.gz"))
(sha256
(base32
"16nmvj80szr6yvcxxgmxn2lxqpjqqj4xg5a0b66zhvck6j42q3a6"))))
(base32 "1hcrd9h4g12f5gvl1djsbchcjry02ghq4icdr897s8v48pkrzagk"))))
(build-system python-build-system)
(arguments
`(#:tests? #f ; no tests
`(#:tests? #f ; no tests
#:python ,python-2))
(home-page "http://pyropus.ca/software/getmail/")
(synopsis "Mail retriever")
@ -2270,14 +2269,14 @@ e-mails with other systems speaking the SMTP protocol.")
(define-public opensmtpd-next
(package
(name "opensmtpd-next")
(version "6.4.1p2")
(version "6.4.2p1")
(source
(origin
(method url-fetch)
(uri (string-append "https://www.opensmtpd.org/archives/"
"opensmtpd-" version ".tar.gz"))
(sha256
(base32 "0cppqlx4fk6l8rbim5symh2fm1kzshf421256g596j6c9f9q96xn"))))
(base32 "0pgv080ai7d98l9340jadp9wjiaqj2qvgpqhilcz0kps2mdiawbd"))))
(build-system gnu-build-system)
(inputs
`(("bdb" ,bdb)

View File

@ -224,6 +224,18 @@ Linux kernel and C library interfaces employed by user-space programs.")
automatically.")
(license gpl3+)))
(define-public help2man/latest
(package
(inherit help2man)
(version "1.47.11")
(source (origin
(method url-fetch)
(uri (string-append "mirror://gnu/help2man/help2man-"
version ".tar.xz"))
(sha256
(base32
"123vsimgx8zq1h077sbyh3bd0hbmlc3wih2231wwh133z1bv51ar"))))))
(define-public scdoc
(package
(name "scdoc")

View File

@ -2967,7 +2967,7 @@ point numbers.")
(define-public wxmaxima
(package
(name "wxmaxima")
(version "19.05.7")
(version "19.08.0")
(source
(origin
(method git-fetch)
@ -2977,7 +2977,7 @@ point numbers.")
(file-name (git-file-name name version))
(sha256
(base32
"0zaz71fh156b9inrxf86scnix247al5pl9v18cxhjxcm0lanqxdp"))))
"028g4g2081vsgslbdliskfy5q2wknvknw89lk3zp89py6wranxas"))))
(build-system cmake-build-system)
(native-inputs
`(("gettext" ,gettext-minimal)))

View File

@ -1,6 +1,7 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2016 Jan Nieuwenhuizen <janneke@gnu.org>
;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2019 Carl Dong <contact@carldong.me>
;;;
;;; This file is part of GNU Guix.
;;;
@ -31,56 +32,56 @@
#:use-module (guix utils)
#:use-module (ice-9 match))
(define %mingw-triplet
"i686-w64-mingw32")
(define-public mingw-w64
(package
(name "mingw-w64")
(version "5.0.4")
(source (origin
(method url-fetch)
(uri (string-append
"https://sourceforge.net/projects/mingw-w64/files/mingw-w64/"
"mingw-w64-release/mingw-w64-v" version ".tar.bz2"))
(sha256
(base32 "00zq3z1hbzd5yzmskskjg79xrzwsqx7ihyprfaxy4hb897vf29sm"))
(patches (search-patches "mingw-w64-5.0rc2-gcc-4.9.3.patch"))))
(native-inputs `(("xgcc-core" ,(cross-gcc %mingw-triplet))
("xbinutils" ,(cross-binutils %mingw-triplet))))
(build-system gnu-build-system)
(search-paths
(list (search-path-specification
(variable "CROSS_C_INCLUDE_PATH")
(files '("include" "i686-w64-mingw32/include")))
(search-path-specification
(variable "CROSS_LIBRARY_PATH")
(files
'("lib" "lib64" "i686-w64-mingw32/lib" "i686-w64-mingw32/lib64")))))
(arguments
`(#:configure-flags '("--host=i686-w64-mingw32")
#:phases
(modify-phases %standard-phases
(add-before 'configure 'setenv
(lambda* (#:key inputs #:allow-other-keys)
(let ((xgcc-core (assoc-ref inputs "xgcc-core"))
(mingw-headers (string-append (getcwd) "/mingw-w64-headers")))
(setenv "CPP"
(string-append xgcc-core "/bin/i686-w64-mingw32-cpp"))
(setenv "CROSS_C_INCLUDE_PATH"
(string-append
mingw-headers
":" mingw-headers "/include"
":" mingw-headers "/crt"
":" mingw-headers "/defaults/include"
":" mingw-headers "/direct-x/include"))))))
#:make-flags (list "DEFS=-DHAVE_CONFIG_H -D__MINGW_HAS_DXSDK=1")
#:tests? #f ; compiles and includes glibc headers
#:strip-binaries? #f))
(home-page "https://mingw-w64.org")
(synopsis "Minimalist GNU for Windows")
(description
"Minimalist GNU for Windows (@dfn{MinGW}) is a complete software
(define-public (make-mingw-w64 machine)
(let ((triplet (string-append machine "-" "w64-mingw32")))
(package
(name (string-append "mingw-w64" "-" machine))
(version "5.0.4")
(source (origin
(method url-fetch)
(uri (string-append
"https://sourceforge.net/projects/mingw-w64/files/mingw-w64/"
"mingw-w64-release/mingw-w64-v" version ".tar.bz2"))
(sha256
(base32 "00zq3z1hbzd5yzmskskjg79xrzwsqx7ihyprfaxy4hb897vf29sm"))
(patches (search-patches "mingw-w64-5.0rc2-gcc-4.9.3.patch"))))
(native-inputs `(("xgcc-core" ,(cross-gcc triplet))
("xbinutils" ,(cross-binutils triplet))))
(build-system gnu-build-system)
(search-paths
(list (search-path-specification
(variable "CROSS_C_INCLUDE_PATH")
(files `("include" ,(string-append triplet "/include"))))
(search-path-specification
(variable "CROSS_LIBRARY_PATH")
(files
`("lib" "lib64"
,(string-append triplet "/lib")
,(string-append triplet "/lib64"))))))
(arguments
`(#:configure-flags '(,(string-append "--host=" triplet))
#:phases
(modify-phases %standard-phases
(add-before 'configure 'setenv
(lambda* (#:key inputs #:allow-other-keys)
(let ((xgcc-core (assoc-ref inputs "xgcc-core"))
(mingw-headers (string-append (getcwd) "/mingw-w64-headers")))
(setenv "CPP"
(string-append xgcc-core ,(string-append "/bin/" triplet "-cpp")))
(setenv "CROSS_C_INCLUDE_PATH"
(string-append
mingw-headers
":" mingw-headers "/include"
":" mingw-headers "/crt"
":" mingw-headers "/defaults/include"
":" mingw-headers "/direct-x/include"))))))
#:make-flags (list "DEFS=-DHAVE_CONFIG_H -D__MINGW_HAS_DXSDK=1")
#:tests? #f ; compiles and includes glibc headers
#:strip-binaries? #f))
(home-page "https://mingw-w64.org")
(synopsis "Minimalist GNU for Windows")
(description
"Minimalist GNU for Windows (@dfn{MinGW}) is a complete software
development environment for creating native Microsoft Windows applications.
It includes a set of Windows-specific header files and static import libraries
@ -89,4 +90,12 @@ runtime dynamic-link libraries (@dfn{DLL}s).
Mingw-w64 is an advancement of the original mingw.org project and provides
several new APIs such as DirectX and DDK, and 64-bit support.")
(license license:fdl1.3+)))
(license license:fdl1.3+))))
(define-public mingw-w64-i686
(make-mingw-w64 "i686"))
(define-public mingw-w64-x86_64
(make-mingw-w64 "x86_64"))
(define-public mingw-w64 mingw-w64-i686)

View File

@ -90,7 +90,7 @@ interfacing MPD in the C, C++ & Objective C languages.")
(define-public mpd
(package
(name "mpd")
(version "0.21.13")
(version "0.21.14")
(source (origin
(method url-fetch)
(uri
@ -99,7 +99,7 @@ interfacing MPD in the C, C++ & Objective C languages.")
"/mpd-" version ".tar.xz"))
(sha256
(base32
"1sjyhmq50nlccwmd8xn7m0bk8xvyixvfyr24v9dy3g86hhk0pdwm"))))
"0iknnm9xvwfgk8h82hjwrmbijpk9l0dgap0794c2nyg8i66qlb0y"))))
(build-system meson-build-system)
(arguments
`(#:configure-flags '("-Ddocumentation=true"))) ;the default is 'false'...

View File

@ -1535,7 +1535,7 @@ reverb effects.")
(define-public setbfree
(package
(name "setbfree")
(version "0.8.8")
(version "0.8.9")
(source (origin
(method git-fetch)
(uri (git-reference
@ -1544,7 +1544,7 @@ reverb effects.")
(file-name (git-file-name name version))
(sha256
(base32
"15dr1nyj69wc9jnjq5z8ril90a3c0mcrii4zjyz0z3h7dhia3382"))))
"1lpsa64xvwa9xbbp8zcwxy5w0daffc7fziny2pizabqh7m9xqjl2"))))
(build-system gnu-build-system)
(arguments
`(#:tests? #f ; no "check" target
@ -1782,7 +1782,7 @@ export.")
(define-public pd
(package
(name "pd")
(version "0.49-0")
(version "0.50-0")
(source (origin
(method url-fetch)
(uri
@ -1790,10 +1790,10 @@ export.")
version ".src.tar.gz"))
(sha256
(base32
"18rzqbpgnnvyslap7k0ly87aw1bbxkb0rk5agpr423ibs9slxq6j"))))
"0hg4n5b55f650qsc0mjx559072dp7vfza7w0pvk6rk2l831cvsps"))))
(build-system gnu-build-system)
(arguments
`(#:tests? #f ; no "check" target
`(#:tests? #f ; no "check" target
#:configure-flags
(list
"--enable-jack"

View File

@ -29,6 +29,7 @@
;;; Copyright © 2019 Maxim Cournoyer <maxim.cournoyer@gmail.com>
;;; Copyright © 2019 Vasile Dumitrascu <va511e@yahoo.com>
;;; Copyright © 2019 Julien Lepiller <julien@lepiller.eu>
;;; Copyright © 2019 Timotej Lazar <timotej.lazar@araneo.si>
;;;
;;; This file is part of GNU Guix.
;;;
@ -549,15 +550,14 @@ and up to 1 Mbit/s downstream.")
(define-public whois
(package
(name "whois")
(version "5.5.0")
(version "5.5.1")
(source
(origin
(method url-fetch)
(uri (string-append "mirror://debian/pool/main/w/whois/"
name "_" version ".tar.xz"))
"whois_" version ".tar.xz"))
(sha256
(base32
"0gbg9fis05zf2fl4264jplbphy75l50k3g92cz6mkmbsklrn7v34"))))
(base32 "10mc7iqhdnvd1kk8gnnhihd5ga2rw3sz69n3nd6x8fb65qpq13gf"))))
(build-system gnu-build-system)
(arguments
`(#:tests? #f ; no test suite
@ -945,6 +945,82 @@ attacking, testing, and cracking. All tools are command-line driven, which
allows for heavy scripting.")
(license (list license:gpl2+ license:bsd-3))))
(define-public pixiewps
(package
(name "pixiewps")
(version "1.4.2")
(source (origin
(method url-fetch)
(uri (string-append
"https://github.com/wiire-a/pixiewps/releases/"
"download/v" version "/" name "-" version ".tar.xz"))
(sha256
(base32
"07nym6bqml0k9v29vnj003nrgnwrywgjvnljb7cdpsvnwilhbp64"))))
(build-system gnu-build-system)
(arguments
'(#:make-flags
(list "CC=gcc"
(string-append "PREFIX=" (assoc-ref %outputs "out")))
#:phases
(modify-phases %standard-phases
(delete 'configure)) ; no configure script
#:tests? #f)) ; there are no tests
(home-page "https://github.com/wiire-a/pixiewps/")
(synopsis "Offline brute-force tool for Wi-Fi Protected Setup")
(description "Pixiewps implements the pixie-dust attack to brute
force the Wi-Fi Protected Setup (WPS) PIN by exploiting the low or
non-existing entropy of some access points.")
(license license:gpl3+)))
(define-public reaver
(package
(name "reaver")
(version "1.6.5")
(source (origin
(method url-fetch)
(uri (string-append
"https://github.com/t6x/reaver-wps-fork-t6x/releases/"
"download/v" version "/" name "-" version ".tar.xz"))
(sha256
(base32
"0sva3g0kwgv143n9l3lg4qp5iiqz7nk76nr0hwivsnglbhk9sbil"))))
(build-system gnu-build-system)
(arguments
`(#:configure-flags
;; Save session files to current directory instead of /var.
(list "--enable-savetocurrent"
"--localstatedir=/tmp/dummy") ; prevent creating /var during install
#:phases
(modify-phases %standard-phases
(add-before 'configure 'change-directory
(lambda _
(chdir "src")
#t))
(add-after 'install 'install-doc
(lambda* (#:key outputs #:allow-other-keys)
(chdir "../docs")
(let* ((out (assoc-ref outputs "out"))
(doc (string-append out "/share/doc/" ,name "-" ,version))
(man1 (string-append out "/share/man/man1")))
(for-each (lambda (file) (install-file file doc))
(find-files "." "README.*"))
(install-file "reaver.1" man1)
#t))))
#:tests? #f)) ; there are no tests
(inputs
`(("libpcap" ,libpcap)))
(propagated-inputs
`(("aircrack-ng" ,aircrack-ng)
("pixiewps" ,pixiewps)))
(home-page "https://github.com/t6x/reaver-wps-fork-t6x/")
(synopsis "Attack tool for Wi-Fi Protected Setup")
(description "Reaver performs a brute force attack against an access
point's Wi-Fi Protected Setup (WPS) PIN. Once the PIN is found, the WPA
passphrase can be recovered and the AP's wireless settings can be
reconfigured.")
(license license:gpl2+)))
(define-public perl-danga-socket
(package
(name "perl-danga-socket")
@ -2287,7 +2363,7 @@ Ethernet and TAP interfaces is supported. Packet capture is also supported.")
(define-public hcxtools
(package
(name "hcxtools")
(version "5.1.6")
(version "5.2.0")
(source
(origin
(method git-fetch)
@ -2295,7 +2371,7 @@ Ethernet and TAP interfaces is supported. Packet capture is also supported.")
(url "https://github.com/ZerBea/hcxtools.git")
(commit version)))
(sha256
(base32 "05sjbmv2wq3nlmammrwxqc62c4sagjjgczzddr1jcqkf6kywzkl8"))
(base32 "0k2qlq9hz5zc21nyc6yrnfqzga7hydn5mm0x3rpl2fhkwl81lxcn"))
(file-name (git-file-name name version))))
(build-system gnu-build-system)
(inputs
@ -2329,7 +2405,7 @@ packets from wireless devices for use with hashcat or John the Ripper.")
(define-public hcxdumptool
(package
(name "hcxdumptool")
(version "5.1.5")
(version "5.2.0")
(source
(origin
(method git-fetch)
@ -2337,7 +2413,7 @@ packets from wireless devices for use with hashcat or John the Ripper.")
(url "https://github.com/ZerBea/hcxdumptool.git")
(commit version)))
(sha256
(base32 "0xkzdvwpi6dq9wsrn882f2ljb7d5v2bvarq8gs6jm8znfx3y8hi2"))
(base32 "0pg1pvg029gm4rj0fj5kcsjb32hixgn4cxsgiir7spkmacf1qm4q"))
(file-name (git-file-name name version))))
(build-system gnu-build-system)
(arguments

View File

@ -110,8 +110,8 @@
;; Note: the 'update-guix-package.scm' script expects this definition to
;; start precisely like this.
(let ((version "1.0.1")
(commit "4a54ed774913480c0f8dad3caf0cd627e4fa8ebf")
(revision 3))
(commit "c902458863d1d341ffd74970b75e69c2bb848183")
(revision 4))
(package
(name "guix")
@ -127,7 +127,7 @@
(commit commit)))
(sha256
(base32
"14m4a4bn0d5hav6mrks5d7r223knx9dpswgbsc875wgr2921na2h"))
"0w93qjgy9n0qqyij12s7hm7fl4wb6h99bmfril4cqf4ynckpdvbb"))
(file-name (string-append "guix-" version "-checkout"))))
(build-system gnu-build-system)
(arguments
@ -292,7 +292,7 @@
(propagated-inputs
`(("gnutls" ,gnutls)
("guile-gcrypt" ,guile-gcrypt)
("guile-json" ,guile-json-1)
("guile-json" ,guile-json-3)
("guile-sqlite3" ,guile-sqlite3)
("guile-ssh" ,guile-ssh)
("guile-git" ,guile-git)))
@ -324,7 +324,7 @@ the Nix package manager.")
(inputs
`(("gnutls" ,gnutls)
("guile-git" ,guile-git)
("guile-json" ,guile-json-1)
("guile-json" ,guile-json-3)
("guile-gcrypt" ,guile-gcrypt)
,@(fold alist-delete (package-inputs guix)
'("boot-guile" "boot-guile/i686" "util-linux"))))

View File

@ -0,0 +1,71 @@
commit 20d80e2323b565a36751c9455e535d8f73fa32f7
Author: Robert Vollmert <rob@vllmrt.net>
Date: Fri Jun 14 16:05:47 2019 +0200
disable reactor
diff --git a/elm.cabal b/elm.cabal
index c75f9689..ece63c46 100644
--- a/elm.cabal
+++ b/elm.cabal
@@ -45,9 +45,6 @@ Executable elm
builder/src
ui/terminal/src
- other-extensions:
- TemplateHaskell
-
Main-Is:
Main.hs
@@ -56,8 +53,6 @@ Executable elm
Develop
Develop.Generate.Help
Develop.Generate.Index
- Develop.StaticFiles
- Develop.StaticFiles.Build
Diff
Init
Install
diff --git a/ui/terminal/src/Develop.hs b/ui/terminal/src/Develop.hs
index 4b2252e1..7ed7716e 100644
--- a/ui/terminal/src/Develop.hs
+++ b/ui/terminal/src/Develop.hs
@@ -23,7 +23,6 @@ import Snap.Util.FileServe
import qualified Elm.Project as Project
import qualified Develop.Generate.Help as Generate
import qualified Develop.Generate.Index as Index
-import qualified Develop.StaticFiles as StaticFiles
import qualified Generate.Output as Output
import qualified Json.Encode as Encode
import qualified Reporting.Exit as Exit
@@ -219,16 +218,7 @@ compileToHtmlBuilder mode file =
serveAssets :: Snap ()
-serveAssets =
- do file <- getSafePath
- case StaticFiles.lookup file of
- Nothing ->
- pass
-
- Just (content, mimeType) ->
- do modifyResponse (setContentType (mimeType <> ";charset=utf-8"))
- writeBS content
-
+serveAssets = pass
-- MIME TYPES
diff --git a/ui/terminal/src/Main.hs b/terminal/src/Main.hs
index 7000f3ca..2c76965a 100644
--- a/ui/terminal/src/Main.hs
+++ b/ui/terminal/src/Main.hs
@@ -39,7 +39,6 @@ main =
complex intro outro
[ repl
, init
- , reactor
, make
, install
, bump

View File

@ -0,0 +1,38 @@
commit e3512d887df41a8162c3e361171c04beca08415b
Author: Tom Stejskal <tom.stejskal@gmail.com>
Date: Mon Nov 19 20:09:43 2018 +0100
Fix Map.!: given key is not an element in the map
diff --git a/compiler/src/Elm/Compiler/Type/Extract.hs b/compiler/src/Elm/Compiler/Type/Extract.hs
index 1aafe1d4..99763392 100644
--- a/compiler/src/Elm/Compiler/Type/Extract.hs
+++ b/compiler/src/Elm/Compiler/Type/Extract.hs
@@ -10,6 +10,7 @@ module Elm.Compiler.Type.Extract
import Data.Map ((!))
+import qualified Data.Map as Map
import qualified Data.Maybe as Maybe
import qualified Data.Set as Set
@@ -134,11 +135,15 @@ extractUnion interfaces (Opt.Global home name) =
else
let
pname = toPublicName home name
- unions = I._unions (interfaces ! home)
+ maybeUnions = I._unions <$> Map.lookup home interfaces
in
- case I.toUnionInternals (unions ! name) of
- Can.Union vars ctors _ _ ->
- T.Union pname vars <$> traverse extractCtor ctors
+ case Map.lookup name =<< maybeUnions of
+ Just union ->
+ case I.toUnionInternals union of
+ Can.Union vars ctors _ _ ->
+ T.Union pname vars <$> traverse extractCtor ctors
+ Nothing ->
+ return $ T.Union pname [] []
extractCtor :: Can.Ctor -> Extractor (N.Name, [T.Type])

View File

@ -0,0 +1,19 @@
commit 4c649a5a270aba15cc6a3913c3ad51a293047f40
Author: Rémi Lefèvre <rlefevre@gmail.com>
Date: Mon Sep 3 19:18:54 2018 +0200
update language-glsl maximum version
diff --git a/elm.cabal b/elm.cabal
index 48aa84f0..464fe9d5 100644
--- a/elm.cabal
+++ b/elm.cabal
@@ -246,7 +246,7 @@ Executable elm
http-client >= 0.5 && < 0.6,
http-client-tls >= 0.3 && < 0.4,
http-types >= 0.9 && < 1.0,
- language-glsl >= 0.0.2 && < 0.3,
+ language-glsl >= 0.0.2 && < 0.4,
logict,
mtl >= 2.2.1 && < 3,
network >= 2.4 && < 2.7,

View File

@ -24,7 +24,7 @@
;;; Copyright © 2015, 2016 David Thompson <davet@gnu.org>
;;; Copyright © 2017 Mark Meyer <mark@ofosos.org>
;;; Copyright © 2018 Tomáš Čech <sleep_walker@gnu.org>
;;; Copyright © 2018 Nicolas Goaziou <mail@nicolasgoaziou.fr>
;;; Copyright © 2018, 2019 Nicolas Goaziou <mail@nicolasgoaziou.fr>
;;; Copyright © 2018 Mathieu Othacehe <m.othacehe@gmail.com>
;;; Copyright © 2018 Maxim Cournoyer <maxim.cournoyer@gmail.com>
;;; Copyright © 2019 Vagrant Cascadian <vagrant@debian.org>
@ -1808,13 +1808,13 @@ Python.")
(define-public python-responses
(package
(name "python-responses")
(version "0.5.1")
(version "0.10.6")
(source (origin
(method url-fetch)
(uri (pypi-uri "responses" version))
(sha256
(base32
"1spcfxixyk9k7pk82jm6zqkwk031s95lh8q0mz7539jrb7269bcc"))))
"147pacwkkqy3qf3hr33fnl1xbzgw0zsm3qppvvy9qhq8h069qbah"))))
(build-system python-build-system)
(arguments
`(;; Test suite is not distributed:
@ -3248,3 +3248,26 @@ Python.")
(description "This package provides a @command{slufigy} command and
library to create slugs from unicode strings while keeping it DRY.")
(license license:expat)))
(define-public python-branca
(package
(name "python-branca")
(version "0.3.1")
(source
(origin
(method url-fetch)
(uri (pypi-uri "branca" version))
(sha256
(base32
"0pmigd521j2228xf8x34vbx0niwvms7xl7za0lymywj0vydjqxiy"))))
(build-system python-build-system)
(propagated-inputs
`(("python-jinja2" ,python-jinja2)
("python-six" ,python-six)))
(native-inputs
`(("python-pytest" ,python-pytest)))
(home-page "https://github.com/python-visualization/branca")
(synopsis "Generate complex HTML+JS pages with Python")
(description "Generate complex HTML+JS pages with Python")
(license license:expat)))

View File

@ -16057,3 +16057,34 @@ one-off scripts.")
time-or-computationally-expensive properties quick and easy and works in Python
2 or 3.")
(license license:bsd-3)))
(define-public python-folium
(package
(name "python-folium")
(version "0.10.0")
(source
(origin
(method url-fetch)
(uri (pypi-uri "folium" version))
(sha256
(base32
"18fzxijsgrb95r0a8anc9ba5ijyw3nlnv3rpavfbkqa5v878x84f"))))
(build-system python-build-system)
(propagated-inputs
`(("python-branca" ,python-branca)
("python-jinja2" ,python-jinja2)
("python-numpy" ,python-numpy)
("python-requests" ,python-requests)))
(native-inputs
`(("python-pytest" ,python-pytest)))
(home-page "https://github.com/python-visualization/folium")
(synopsis "Make beautiful maps with Leaflet.js & Python")
(description "@code{folium} makes it easy to visualize data thats been
manipulated in Python on an interactive leaflet map. It enables both the
binding of data to a map for @code{choropleth} visualizations as well as
passing rich vector/raster/HTML visualizations as markers on the map.
The library has a number of built-in tilesets from OpenStreetMap, Mapbox, and
Stamen, and supports custom tilesets with Mapbox or Cloudmade API keys. It
supports Image, Video, GeoJSON and TopoJSON overlays.")
(license license:expat)))

View File

@ -15,6 +15,7 @@
;;; Copyright © 2018 Alex Vong <alexvong1995@gmail.com>
;;; Copyright © 2019 Pierre Neidhardt <mail@ambrevar.xyz>
;;; Copyright © 2019 Mikhail Kirillov <w96k.ru@gmail.com>
;;; Copyright © 2019 Jelle Licht <jlicht@fsfe.org>
;;;
;;; This file is part of GNU Guix.
;;;
@ -8737,3 +8738,72 @@ then check out http://127.0.0.1:1080 to see the mail.")
"This package provides a pure Ruby library for event-driven IO.")
(home-page "https://github.com/castwide/backport")
(license license:expat)))
(define-public ruby-json-schema
(package
(name "ruby-json-schema")
(version "2.8.1")
(source
(origin
(method url-fetch)
(uri (rubygems-uri "json-schema" version))
(sha256
(base32
"1yv5lfmr2nzd14af498xqd5p89f3g080q8wk0klr3vxgypsikkb5"))))
(build-system ruby-build-system)
(arguments
`(#:tests? #f ; no tests
#:phases
(modify-phases %standard-phases
(replace 'build
(lambda _
(invoke "gem" "build" ".gemspec"))))))
(propagated-inputs
`(("ruby-addressable" ,ruby-addressable)))
(synopsis "Ruby JSON Schema Validator")
(description "This library provides Ruby with an interface for validating
JSON objects against a JSON schema conforming to JSON Schema Draft 4. Legacy
support for JSON Schema Draft 3, JSON Schema Draft 2, and JSON Schema Draft 1
is also included.")
(home-page "https://github.com/ruby-json-schema/json-schema")
(license license:expat)))
(define-public swagger-diff
(package
(name "swagger-diff")
(version "1.1.2")
(source
(origin
(method url-fetch)
(uri (rubygems-uri "swagger-diff" version))
(sha256
(base32
"1hxx50nga1bqn254iqjcdwkc9c72364ks9lyjyw10ajz0l0ly7sn"))))
(build-system ruby-build-system)
(arguments
`(#:test-target "spec"
#:phases
(modify-phases %standard-phases
;; Don't run or require rubocop, the code linting tool, as this is a
;; bit unnecessary.
(add-after 'unpack 'dont-run-rubocop
(lambda _
(substitute* "Rakefile"
((".*rubocop.*") "")
((".*RuboCop.*") ""))
#t)))))
(propagated-inputs
`(("ruby-json-schema" ,ruby-json-schema)))
(native-inputs
`(("bundler" ,bundler)
("ruby-rspec-core" ,ruby-rspec-core)
("ruby-rspec-expectations" ,ruby-rspec-expectations)))
(synopsis
"Compare Open API Initiative specification files")
(description
"Swagger::Diff is a utility for comparing two different Open API
Initiative (OAI) specifications (formerly known as Swagger specifications).
It is intended to determine whether a newer API specification is
backwards-compatible with an older API specification.")
(home-page "https://github.com/civisanalytics/swagger-diff")
(license license:bsd-3)))

View File

@ -183,8 +183,20 @@ their folder.
#:test-target "tests"
#:phases
(modify-phases %standard-phases
;; No install target.
(add-after 'unpack 'search-$PATH-for-binaries
;; lsyncd requires and hard-codes absolute file names to binaries.
;; Make it fall back to searching $PATH for relative file names.
(lambda _
(substitute* "lsyncd.c"
(("execv\\(") "execvp("))
(substitute* (list "lsyncd.lua"
"default-direct.lua"
"default-rsync.lua"
"default-rsyncssh.lua")
(("(|/usr)/bin/") ""))
#t))
(replace 'install
;; No install target.
(lambda* (#:key outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
(bin (string-append out "/bin"))

View File

@ -38,7 +38,7 @@
(define-public tmux
(package
(name "tmux")
(version "2.9")
(version "2.9a")
(source (origin
(method url-fetch)
(uri (string-append
@ -46,12 +46,12 @@
version "/tmux-" version ".tar.gz"))
(sha256
(base32
"10195hp5ydkwwmpcr7188fgx9daqwrslb1lylgrrkzc6yhr1541l"))))
"099vn8mg2nnizbqqc87a5mxm8c46kadfhx30dgxbz9hp8mx1d7c3"))))
(build-system gnu-build-system)
(inputs
`(("libevent" ,libevent)
("ncurses" ,ncurses)))
(home-page "http://tmux.github.io/")
(home-page "https://tmux.github.io/")
(synopsis "Terminal multiplexer")
(description
"tmux is a terminal multiplexer: it enables a number of terminals (or

View File

@ -4,7 +4,7 @@
;;; Copyright © 2016, 2017, 2018 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2016, 2017 ng0 <ng0@n0.is>
;;; Copyright © 2017, 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2017, 2018 Eric Bavier <bavier@member.fsf.org>
;;; Copyright © 2017, 2018, 2019 Eric Bavier <bavier@member.fsf.org>
;;; Copyright © 2017 Rutger Helling <rhelling@mykolab.com>
;;; Copyright © 2018 Ricardo Wurmus <rekado@elephly.net>
;;;
@ -39,6 +39,7 @@
#:use-module (gnu packages pcre)
#: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 qt)
@ -49,14 +50,14 @@
(define-public tor
(package
(name "tor")
(version "0.4.0.5")
(version "0.4.1.5")
(source (origin
(method url-fetch)
(uri (string-append "https://dist.torproject.org/tor-"
version ".tar.gz"))
(sha256
(base32
"0vk9j3ybz5dwwbmqrdj1bjcsxy76pc8frmfvflkdzwfkvkqcp8mm"))))
"0984jb6hdcc10f7aq8xzl7l4jf93skp45wkv2v63z4zv0nvf0r58"))))
(build-system gnu-build-system)
(native-inputs
`(("pkg-config" ,pkg-config)
@ -157,7 +158,7 @@ networks.")
(define-public onionshare
(package
(name "onionshare")
(version "1.3.2")
(version "2.1")
(source
(origin
(method git-fetch)
@ -166,7 +167,7 @@ networks.")
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
(base32 "19zrz9kh7k4pdk4lh3cm0kv02ngdqkrggwma1xdskrrmp2rjkgz7"))))
(base32 "1lx21p12888qnbhsyin4lrnn4xizb39ldk77r71y53hn8mfxi54z"))))
(build-system python-build-system)
(arguments
`(#:phases
@ -184,20 +185,21 @@ networks.")
(("/usr") out))
#t)))
(delete 'check)
(add-before 'strip 'tests
(add-before 'strip 'check
;; After all the patching we run the tests after installing.
;; This is also a known issue:
;; https://github.com/micahflee/onionshare/issues/284
(lambda _
(invoke "pytest" "test")
(setenv "HOME" "/tmp") ; Some tests need a writable homedir
(invoke "pytest" "tests/")
#t)))))
(native-inputs
`(("python-pytest" ,python-pytest)))
(inputs
`(("python-flask" ,python-flask)
`(("python-pycrypto" ,python-pycrypto)
("python-flask" ,python-flask)
("python-nautilus" ,python-nautilus)
("python-sip" ,python-sip)
("python-stem" ,python-stem)
("python-pysocks" ,python-pysocks)
("python-pyqt" ,python-pyqt)))
(home-page "https://onionshare.org/")
(synopsis "Securely and anonymously share files")
@ -209,8 +211,7 @@ using a third party filesharing service. You host the file on your own computer
and use a Tor hidden service to make it temporarily accessible over the
internet. The other user just needs to use Tor Browser to download the file
from you.")
(license (list license:gpl3+
license:bsd-3)))) ; onionshare/socks.py
(license license:gpl3+)))
(define-public nyx
(package

View File

@ -146,14 +146,14 @@ as well as the classic centralized workflow.")
(name "git")
;; XXX When updating Git, check if the special 'git-source' input to cgit
;; needs to be updated as well.
(version "2.22.1")
(version "2.23.0")
(source (origin
(method url-fetch)
(uri (string-append "mirror://kernel.org/software/scm/git/git-"
version ".tar.xz"))
(sha256
(base32
"093qjgagha937w96izkpsjkhxf5drsa7rvk5snlyjivqnwxgkqac"))))
"0rv0y45gcd3h191isppn77acih695v4pipdj031jvs9rd1ds0kr3"))))
(build-system gnu-build-system)
(native-inputs
`(("native-perl" ,perl)
@ -166,7 +166,7 @@ as well as the classic centralized workflow.")
version ".tar.xz"))
(sha256
(base32
"17vpqv9g8li58njx7z5124b3c2zb2n63z4dalh5gw9iys7qb8446"))))
"0sllhyl0w29v4n303hqfmcc3apafnwk4sk78anyjjhpzd0zl6n4m"))))
;; For subtree documentation.
("asciidoc" ,asciidoc)
("docbook-xsl" ,docbook-xsl)

View File

@ -1052,7 +1052,7 @@ videoformats depend on the configuration flags of ffmpeg.")
(define-public vlc
(package
(name "vlc")
(version "3.0.7.1")
(version "3.0.8")
(source (origin
(method url-fetch)
(uri (string-append
@ -1061,7 +1061,7 @@ videoformats depend on the configuration flags of ffmpeg.")
"/vlc-" version ".tar.xz"))
(sha256
(base32
"1xb4c8n0hkwijzfdlbwadhxnx9z8rlhmrdq4c7q74rq9f51q0m86"))))
"1xmxjpyzdhabchwncz6lvx3kzvl7fz9c42bkv3nbj68albs9w570"))))
(build-system gnu-build-system)
(native-inputs
`(("flex" ,flex)
@ -3378,30 +3378,32 @@ online.")
(license license:expat)))
(define-public vidstab
(package
(name "vidstab")
(version "1.1.0")
(source (origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/georgmartius/vid.stab.git")
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
(base32
"0a3frpm2kdbx7vszhg64p3alisag73bcspl7fp3a2f1kgq7rbh38"))))
(build-system cmake-build-system)
(arguments
'(#:tests? #f)) ; tests are not run as part of standard build process
(home-page "http://public.hronopik.de/vid.stab/")
(synopsis "Video stabilization library")
(description "Vidstab is a video stabilization library which can be used
(let ((commit "aeabc8daa7904f9edf7441a11f293965a5ef53b8")
(revision "0"))
(package
(name "vidstab")
(version (git-version "1.1.0" revision commit))
(source (origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/georgmartius/vid.stab.git")
(commit commit)))
(file-name (git-file-name name version))
(sha256
(base32
"042iy0f3khwzr68djzvqgn301sy21ljvkf52rnc2c73q7ircnzzn"))))
(build-system cmake-build-system)
(arguments
'(#:tests? #f)) ; tests are not run as part of standard build process
(home-page "http://public.hronopik.de/vid.stab/")
(synopsis "Video stabilization library")
(description "Vidstab is a video stabilization library which can be used
with FFmpeg. A video acquired using a hand-held camera or a camera mounted on a
vehicle typically suffers from undesirable shakes and jitters. Activities such
as surfing, skiing, riding and walking while shooting videos are especially
prone to erratic camera shakes. Vidstab targets these video contents to help
create smoother and stable videos.")
(license license:gpl2+)))
(license license:gpl2+))))
(define-public libopenshot
(package

View File

@ -133,14 +133,14 @@
(define-public httpd
(package
(name "httpd")
(version "2.4.39")
(version "2.4.41")
(source (origin
(method url-fetch)
(uri (string-append "mirror://apache/httpd/httpd-"
version ".tar.bz2"))
(sha256
(base32
"18ngvsjq65qxk3biggnkhkq8jlll9dsg9n3csra9p99sfw2rvjml"))))
"0h7a31yxwyh7h521frnmlppl0h7sh9icc3ka6vlmlcg5iwllhg8k"))))
(build-system gnu-build-system)
(native-inputs `(("pcre" ,pcre "bin"))) ;for 'pcre-config'
(inputs `(("apr" ,apr)
@ -5362,14 +5362,8 @@ command-line arguments or read from stdin.")
(description "@code{ia} is a command-line tool for using
@url{archive.org} from the command-line. It also emplements the
internetarchive python module for programmatic access to archive.org.")
(properties
`((python2-variant . ,(delay python2-internetarchive))))
(license license:agpl3+)))
(define-public python2-internetarchive
(package-with-python2
(strip-python2-variant python-internetarchive)))
(define-public python-clf
(let ((commit-test-clf "d01d25923c599d3261910f79fb948825b4270d07")) ; 0.5.7
(package
@ -5426,7 +5420,7 @@ snippets on @url{https://commandlinefu.com}.")
(define-public rss-bridge
(package
(name "rss-bridge")
(version "2019-01-13")
(version "2019-07-06")
(source
(origin
(method git-fetch)
@ -5436,7 +5430,7 @@ snippets on @url{https://commandlinefu.com}.")
(file-name (git-file-name name version))
(sha256
(base32
"1m0dq491954f0d7k4508ddlywk09whcz9j21rc4yk3lbwpf0nd4c"))))
"0zd0c9xzvpx55mvj8xrafakfkvafnwkkvhw9b1j0bf897xdkfsyb"))))
(build-system trivial-build-system)
(arguments
'(#:modules ((guix build utils))

View File

@ -318,7 +318,7 @@ integrate Windows applications into your desktop.")
(define-public wine-staging-patchset-data
(package
(name "wine-staging-patchset-data")
(version "4.13")
(version "4.14")
(source
(origin
(method git-fetch)
@ -328,7 +328,7 @@ integrate Windows applications into your desktop.")
(file-name (git-file-name name version))
(sha256
(base32
"0bbwsd2qpjilxpjscqbp78p0gl0awj1yj62g0wvybh4x89fzy8zj"))))
"1s17hcrp1aa0v99y5iav2s0lxdx2rzgm7z0c4zhxyydqxj399f5j"))))
(build-system trivial-build-system)
(native-inputs
`(("bash" ,bash)
@ -374,7 +374,7 @@ integrate Windows applications into your desktop.")
(file-name (string-append name "-" version ".tar.xz"))
(sha256
(base32
"0rqx8g394aj5q913cd18zsi60sldvxarrp178w6ja0y4rd8l25vr"))))
"1rl1a3k5sr0hyxc61d68kwandhxcnxwv6b77vh7x2rkl1h4nxmfs"))))
(inputs `(("autoconf" ,autoconf) ; for autoreconf
("faudio" ,faudio)
("ffmpeg" ,ffmpeg)
@ -499,7 +499,6 @@ integrated into the main branch.")
(script (string-append (assoc-ref %build-inputs
"wine-staging-patchset-data")
"/share/wine-staging/patches/patchinstall.sh")))
;; Exclude specific patches that conflict with FAudio.
(invoke script (string-append "DESTDIR=" ".") "--all")
#t)))
(add-after 'install 'copy-wine32-binaries

View File

@ -716,18 +716,18 @@ shows it again when the mouse cursor moves or a mouse button is pressed.")
(define-public xlockmore
(package
(name "xlockmore")
(version "5.57")
(version "5.58")
(source (origin
(method url-fetch)
(uri (list (string-append "http://sillycycle.com/xlock/"
name "-" version ".tar.xz")
"xlockmore-" version ".tar.xz")
;; Previous releases are moved to a subdirectory.
(string-append "http://sillycycle.com/xlock/"
"recent-releases/"
name "-" version ".tar.xz")))
"xlockmore-" version ".tar.xz")))
(sha256
(base32
"18r8rh8fzdn9miicbpc3qbdd4mm2g1jpsbcvj29sr66pxydzkb7r"))))
"1va11sbv5lbkxkp0i0msz5md3n2n82nzppk27rzdrw7y79vq37zw"))))
(build-system gnu-build-system)
(arguments
'(#:configure-flags (list (string-append "--enable-appdefaultdir="

View File

@ -1805,7 +1805,7 @@ used with other display managers such as gdm or kdm.")
(define-public setxkbmap
(package
(name "setxkbmap")
(version "1.3.1")
(version "1.3.2")
(source
(origin
(method url-fetch)
@ -1815,7 +1815,7 @@ used with other display managers such as gdm or kdm.")
".tar.bz2"))
(sha256
(base32
"1qfk097vjysqb72pq89h0la3462kbb2dh1d11qzs2fr67ybb7pd9"))))
"1xdrxs65v7d0rw1yaz0vsz55w4hxym99216p085ya9978j379wlg"))))
(build-system gnu-build-system)
(inputs
`(("libxkbfile" ,libxkbfile)
@ -4167,16 +4167,16 @@ an X server.")
(define-public xrandr
(package
(name "xrandr")
(version "1.5.0")
(version "1.5.1")
(source
(origin
(method url-fetch)
(uri (string-append
"mirror://xorg/individual/app/xrandr-"
version ".tar.bz2"))
version ".tar.xz"))
(sha256
(base32
"1kaih7rmzxr1vp5a5zzjhm5x7dn9mckya088sqqw026pskhx9ky1"))))
"0ql75s1n3dm2m3g1ilb9l6hqh15r0v709bgghpwazy3jknpnvivv"))))
(build-system gnu-build-system)
(inputs
`(("libxrender" ,libxrender)

View File

@ -430,34 +430,34 @@ ACTIVATION-SCRIPT-TYPE."
(define (activation-script gexps)
"Return the system's activation script, which evaluates GEXPS."
(define actions
(map (cut scheme-file "activate-service" <>) gexps))
(map (cut program-file "activate-service.scm" <>) gexps))
(scheme-file "activate"
(with-imported-modules (source-module-closure
'((gnu build activation)
(guix build utils)))
#~(begin
(use-modules (gnu build activation)
(guix build utils))
(program-file "activate.scm"
(with-imported-modules (source-module-closure
'((gnu build activation)
(guix build utils)))
#~(begin
(use-modules (gnu build activation)
(guix build utils))
;; Make sure the user accounting database exists. If it
;; does not exist, 'setutxent' does not create it and
;; thus there is no accounting at all.
(close-port (open-file "/var/run/utmpx" "a0"))
;; Make sure the user accounting database exists. If it
;; does not exist, 'setutxent' does not create it and
;; thus there is no accounting at all.
(close-port (open-file "/var/run/utmpx" "a0"))
;; Same for 'wtmp', which is populated by mingetty et
;; al.
(mkdir-p "/var/log")
(close-port (open-file "/var/log/wtmp" "a0"))
;; Same for 'wtmp', which is populated by mingetty et
;; al.
(mkdir-p "/var/log")
(close-port (open-file "/var/log/wtmp" "a0"))
;; Set up /run/current-system. Among other things this
;; sets up locales, which the activation snippets
;; executed below may expect.
(activate-current-system)
;; Set up /run/current-system. Among other things this
;; sets up locales, which the activation snippets
;; executed below may expect.
(activate-current-system)
;; Run the services' activation snippets.
;; TODO: Use 'load-compiled'.
(for-each primitive-load '#$actions)))))
;; Run the services' activation snippets.
;; TODO: Use 'load-compiled'.
(for-each primitive-load '#$actions)))))
(define (gexps->activation-gexp gexps)
"Return a gexp that runs the activation script containing GEXPS."

View File

@ -8,6 +8,7 @@
;;; Copyright © 2016 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2018 Mathieu Othacehe <m.othacehe@gmail.com>
;;; Copyright © 2019 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2019 John Soo <jsoo1@asu.edu>
;;;
;;; This file is part of GNU Guix.
;;;
@ -801,10 +802,14 @@ to add @var{device} to the kernel's entropy pool. The service will fail if
(description
"Install the given fonts on the specified ttys (fonts are per
virtual console on GNU/Linux). The value of this service is a list of
tty/font pairs like:
tty/font pairs. The font can be the name of a font provided by the @code{kbd}
package or any valid argument to @command{setfont}, as in this example:
@example
'((\"tty1\" . \"LatGrkCyr-8x16\"))
'((\"tty1\" . \"LatGrkCyr-8x16\")
(\"tty2\" . (file-append
font-tamzen
\"/share/kbd/consolefonts/TamzenForPowerline10x20.psf\")))
@end example\n")))
(define* (console-font-service tty #:optional (font "LatGrkCyr-8x16"))

View File

@ -133,7 +133,10 @@ MODULES and taken from LINUX."
(copy-file module
(string-append #$output "/"
(basename module))))
(delete-duplicates modules)))))
(delete-duplicates modules))
;; Hyphen or underscore? This database tells us.
(write-module-name-database #$output))))
(computed-file "linux-modules" build-exp))

View File

@ -47,14 +47,22 @@ available via the first URI, the second URI points to the archived version."
(string-append "mirror://cran/src/contrib/Archive/"
name "/" name "_" version ".tar.gz")))
(define (bioconductor-uri name version)
(define* (bioconductor-uri name version #:optional type)
"Return a URI string for the R package archive on Bioconductor for the
release corresponding to NAME and VERSION."
(list (string-append "https://bioconductor.org/packages/release/bioc/src/contrib/"
name "_" version ".tar.gz")
;; TODO: use %bioconductor-version from (guix import cran)
(string-append "https://bioconductor.org/packages/3.9/bioc/src/contrib/Archive/"
name "_" version ".tar.gz")))
(let ((type-url-part (match type
('annotation "/data/annotation")
('experiment "/data/experiment")
(_ "/bioc"))))
(list (string-append "https://bioconductor.org/packages/release"
type-url-part
"/src/contrib/"
name "_" version ".tar.gz")
;; TODO: use %bioconductor-version from (guix import cran)
(string-append "https://bioconductor.org/packages/3.9"
type-url-part
"/src/contrib/Archive/"
name "_" version ".tar.gz"))))
(define %r-build-system-modules
;; Build-side modules imported by default.

View File

@ -65,7 +65,9 @@
latest-channel-derivation
channel-instances->manifest
%channel-profile-hooks
channel-instances->derivation))
channel-instances->derivation
profile-channels))
;;; Commentary:
;;;
@ -534,3 +536,27 @@ channel instances."
latest instances of CHANNELS."
(mlet %store-monad ((instances (latest-channel-instances* channels)))
(channel-instances->derivation instances)))
(define (profile-channels profile)
"Return the list of channels corresponding to entries in PROFILE. If
PROFILE is not a profile created by 'guix pull', return the empty list."
(filter-map (lambda (entry)
(match (assq 'source (manifest-entry-properties entry))
(('source ('repository ('version 0)
('url url)
('branch branch)
('commit commit)
_ ...))
(channel (name (string->symbol
(manifest-entry-name entry)))
(url url)
(commit commit)))
;; No channel information for this manifest entry.
;; XXX: Pre-0.15.0 Guix did not provide that information,
;; but there's not much we can do in that case.
(_ #f)))
;; Show most recently installed packages last.
(reverse
(manifest-entries (profile-manifest profile)))))

View File

@ -376,8 +376,8 @@ of SUBSTITUTABLES."
(substitution-oracle
store inputs #:mode mode)))
"Given INPUTS, a list of derivation-inputs, return two values: the list of
derivation to build, and the list of substitutable items that, together,
allows INPUTS to be realized.
derivations to build, and the list of substitutable items that, together,
allow INPUTS to be realized.
SUBSTITUTABLE-INFO must be a one-argument procedure similar to that returned
by 'substitution-oracle'."
@ -685,7 +685,7 @@ name of each input with that input's hash."
(make-derivation-input hash sub-drvs))))
inputs)))
(make-derivation outputs
(sort inputs
(sort (delete-duplicates inputs)
(lambda (drv1 drv2)
(string<? (derivation-input-derivation drv1)
(derivation-input-derivation drv2))))

View File

@ -132,14 +132,19 @@ package definition."
;; updated together.
(define %bioconductor-version "3.9")
(define %bioconductor-packages-list-url
(define* (bioconductor-packages-list-url #:optional type)
(string-append "https://bioconductor.org/packages/"
%bioconductor-version "/bioc/src/contrib/PACKAGES"))
%bioconductor-version
(match type
('annotation "/data/annotation")
('experiment "/data/experiment")
(_ "/bioc"))
"/src/contrib/PACKAGES"))
(define (bioconductor-packages-list)
(define* (bioconductor-packages-list #:optional type)
"Return the latest version of package NAME for the current bioconductor
release."
(let ((url (string->uri %bioconductor-packages-list-url)))
(let ((url (string->uri (bioconductor-packages-list-url type))))
(guard (c ((http-get-error? c)
(format (current-error-port)
"error: failed to retrieve list of packages from ~s: ~a (~s)~%"
@ -153,12 +158,12 @@ release."
(description->alist (string-join chunk "\n")))
(chunk-lines (read-lines (http-fetch/cached url)))))))
(define (latest-bioconductor-package-version name)
(define* (latest-bioconductor-package-version name #:optional type)
"Return the version string corresponding to the latest release of the
bioconductor package NAME, or #F if the package is unknown."
(and=> (find (lambda (meta)
(string=? (assoc-ref meta "Package") name))
(bioconductor-packages-list))
(bioconductor-packages-list type))
(cut assoc-ref <> "Version")))
;; Little helper to download URLs only once.
@ -187,8 +192,12 @@ from ~s: ~a (~s)~%"
;; Currently, the bioconductor project does not offer a way to access a
;; package's DESCRIPTION file over HTTP, so we determine the version,
;; download the source tarball, and then extract the DESCRIPTION file.
(and-let* ((version (latest-bioconductor-package-version name))
(url (car (bioconductor-uri name version)))
(and-let* ((type (or
(and (latest-bioconductor-package-version name) #t)
(and (latest-bioconductor-package-version name 'annotation) 'annotation)
(and (latest-bioconductor-package-version name 'experiment) 'experiment)))
(version (latest-bioconductor-package-version name type))
(url (car (bioconductor-uri name version type)))
(tarball (download url)))
(call-with-temporary-directory
(lambda (dir)
@ -198,8 +207,11 @@ from ~s: ~a (~s)~%"
"--strip-components=1"
"-C" dir
"-f" tarball "*/DESCRIPTION"))
(description->alist (with-input-from-file
(string-append dir "/DESCRIPTION") read-string))))))))))
(and=> (description->alist (with-input-from-file
(string-append dir "/DESCRIPTION") read-string))
(lambda (meta)
(if (boolean? type) meta
(cons `(bioconductor-type . ,type) meta))))))))))))
(define (listify meta field)
"Look up FIELD in the alist META. If FIELD contains a comma-separated
@ -306,7 +318,11 @@ from the alist META, which was derived from the R package's DESCRIPTION file."
(home-page (match (listify meta "URL")
((url rest ...) url)
(_ (string-append base-url name))))
(source-url (match (uri-helper name version)
(source-url (match (apply uri-helper name version
(case repository
((bioconductor)
(list (assoc-ref meta 'bioconductor-type)))
(else '())))
((url rest ...) url)
((? string? url) url)
(_ #f)))
@ -330,7 +346,11 @@ from the alist META, which was derived from the R package's DESCRIPTION file."
(version ,version)
(source (origin
(method url-fetch)
(uri (,(procedure-name uri-helper) ,name version))
(uri (,(procedure-name uri-helper) ,name version
,@(or (and=> (assoc-ref meta 'bioconductor-type)
(lambda (type)
(list (list 'quote type))))
'())))
(sha256
(base32
,(bytevector->nix-base32-string (file-sha256 tarball))))))

View File

@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2017 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2017, 2019 Ludovic Courtès <ludo@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;
@ -46,7 +46,7 @@ source for metadata."
(package name)
(version version)
(urls (filter-map (lambda (extension)
(match (hash-ref dictionary extension)
(match (assoc-ref dictionary extension)
(#f
#f)
((? string? relative-url)
@ -86,21 +86,22 @@ not be determined."
(json (json->scm port)))
(close-port port)
(match json
((4 (? hash-table? releases) _ ...)
(let* ((releases (hash-ref releases upstream-name))
(latest (hash-fold (lambda (key value result)
(cond ((even-minor-version? key)
(match result
(#f
(cons key value))
((newest . _)
(if (version>? key newest)
(cons key value)
result))))
(else
result)))
#f
releases)))
(#(4 releases _ ...)
(let* ((releases (assoc-ref releases upstream-name))
(latest (fold (match-lambda*
(((key . value) result)
(cond ((even-minor-version? key)
(match result
(#f
(cons key value))
((newest . _)
(if (version>? key newest)
(cons key value)
result))))
(else
result))))
#f
releases)))
(and latest
(jsonish->upstream-source upstream-name latest))))))))

View File

@ -19,13 +19,17 @@
(define-module (guix remote)
#:use-module (guix ssh)
#:use-module (guix gexp)
#:use-module (guix i18n)
#:use-module (guix inferior)
#:use-module (guix store)
#:use-module (guix monads)
#:use-module (guix modules)
#:use-module (guix derivations)
#:use-module (guix utils)
#:use-module (ssh popen)
#:use-module (srfi srfi-1)
#:use-module (srfi srfi-34)
#:use-module (srfi srfi-35)
#:use-module (ice-9 match)
#:export (remote-eval))
@ -40,29 +44,41 @@
;;;
;;; Code:
(define (remote-pipe-for-gexp lowered session)
"Return a remote pipe for the given SESSION to evaluate LOWERED."
(define* (remote-pipe-for-gexp lowered session #:optional become-command)
"Return a remote pipe for the given SESSION to evaluate LOWERED. If
BECOME-COMMAND is given, use that to invoke the remote Guile REPL."
(define shell-quote
(compose object->string object->string))
(apply open-remote-pipe* session OPEN_READ
(string-append (derivation-input-output-path
(lowered-gexp-guile lowered))
"/bin/guile")
"--no-auto-compile"
(append (append-map (lambda (directory)
`("-L" ,directory))
(lowered-gexp-load-path lowered))
(append-map (lambda (directory)
`("-C" ,directory))
(lowered-gexp-load-path lowered))
`("-c"
,(shell-quote (lowered-gexp-sexp lowered))))))
(define repl-command
(append (or become-command '())
(list
(string-append (derivation-input-output-path
(lowered-gexp-guile lowered))
"/bin/guile")
"--no-auto-compile")
(append-map (lambda (directory)
`("-L" ,directory))
(lowered-gexp-load-path lowered))
(append-map (lambda (directory)
`("-C" ,directory))
(lowered-gexp-load-path lowered))
`("-c"
,(shell-quote (lowered-gexp-sexp lowered)))))
(define (%remote-eval lowered session)
(let ((pipe (apply open-remote-pipe* session OPEN_READ repl-command)))
(when (eof-object? (peek-char pipe))
(raise (condition
(&message
(message (format #f (G_ "failed to run '~{~a~^ ~}'")
repl-command))))))
pipe))
(define* (%remote-eval lowered session #:optional become-command)
"Evaluate LOWERED, a lowered gexp, in SESSION. This assumes that all the
prerequisites of EXP are already available on the host at SESSION."
(let* ((pipe (remote-pipe-for-gexp lowered session))
prerequisites of EXP are already available on the host at SESSION. If
BECOME-COMMAND is given, use that to invoke the remote Guile REPL."
(let* ((pipe (remote-pipe-for-gexp lowered session become-command))
(result (read-repl-response pipe)))
(close-port pipe)
result))
@ -71,7 +87,7 @@ prerequisites of EXP are already available on the host at SESSION."
"Return a \"trampoline\" gexp that evaluates EXP and writes the evaluation
result to the current output port using the (guix repl) protocol."
(define program
(scheme-file "remote-exp.scm" exp))
(program-file "remote-exp.scm" exp))
(with-imported-modules (source-module-closure '((guix repl)))
#~(begin
@ -89,17 +105,21 @@ result to the current output port using the (guix repl) protocol."
(define* (remote-eval exp session
#:key
(build-locally? #t)
(system (%current-system))
(module-path %load-path)
(socket-name "/var/guix/daemon-socket/socket"))
(socket-name (%daemon-socket-uri))
(become-command #f))
"Evaluate EXP, a gexp, on the host at SESSION, an SSH session. Ensure that
all the elements EXP refers to are built and deployed to SESSION beforehand.
When BUILD-LOCALLY? is true, said dependencies are built locally and sent to
the remote store afterwards; otherwise, dependencies are built directly on the
remote store."
(mlet %store-monad ((lowered (lower-gexp (trampoline exp)
#:module-path %load-path))
(remote -> (connect-to-remote-daemon session
socket-name)))
(mlet* %store-monad ((lowered (lower-gexp (trampoline exp)
#:system system
#:guile-for-build #f
#:module-path %load-path))
(remote -> (connect-to-remote-daemon session
socket-name)))
(define inputs
(cons (lowered-gexp-guile lowered)
(lowered-gexp-inputs lowered)))
@ -115,7 +135,7 @@ remote store."
(built-derivations inputs)
((store-lift send-files) to-send remote #:recursive? #t)
(return (close-connection remote))
(return (%remote-eval lowered session))))
(return (%remote-eval lowered session become-command))))
(let ((to-send (append (map (compose derivation-file-name
derivation-input-derivation)
inputs)
@ -124,4 +144,4 @@ remote store."
((store-lift send-files) to-send remote #:recursive? #t)
(return (build-derivations remote inputs))
(return (close-connection remote))
(return (%remote-eval lowered session)))))))
(return (%remote-eval lowered session become-command)))))))

View File

@ -28,6 +28,8 @@
#:use-module (guix grafts)
#:use-module (ice-9 format)
#:use-module (srfi srfi-1)
#:use-module (srfi srfi-34)
#:use-module (srfi srfi-35)
#:use-module (srfi srfi-37)
#:export (guix-deploy))
@ -43,8 +45,6 @@
(define (show-help)
(display (G_ "Usage: guix deploy [OPTION] FILE...
Perform the deployment specified by FILE.\n"))
(display (G_ "
-s, --system=SYSTEM attempt to build for SYSTEM--e.g., \"i686-linux\""))
(show-build-options-help)
(newline)
(display (G_ "
@ -66,8 +66,7 @@ Perform the deployment specified by FILE.\n"))
%standard-build-options))
(define %default-options
`((system . ,(%current-system))
(substitutes? . #t)
`((substitutes? . #t)
(build-hook? . #t)
(graft? . #t)
(debug . 0)
@ -91,8 +90,18 @@ Perform the deployment specified by FILE.\n"))
(with-store store
(set-build-options-from-command-line store opts)
(for-each (lambda (machine)
(info (G_ "deploying to ~a...") (machine-display-name machine))
(parameterize ((%current-system (assq-ref opts 'system))
(%graft? (assq-ref opts 'graft?)))
(run-with-store store (deploy-machine machine))))
(info (G_ "deploying to ~a...~%")
(machine-display-name machine))
(parameterize ((%graft? (assq-ref opts 'graft?)))
(guard (c ((message-condition? c)
(report-error (G_ "failed to deploy ~a: '~a'~%")
(machine-display-name machine)
(condition-message c)))
((deploy-error? c)
(when (deploy-error-should-roll-back c)
(info (G_ "rolling back ~a...~%")
(machine-display-name machine))
(run-with-store store (roll-back-machine machine)))
(apply throw (deploy-error-captured-args c))))
(run-with-store store (deploy-machine machine)))))
machines))))

View File

@ -153,30 +153,9 @@ in the format specified by FMT."
(generation-number profile))
(define channels
(map (lambda (entry)
(match (assq 'source (manifest-entry-properties entry))
(('source ('repository ('version 0)
('url url)
('branch branch)
('commit commit)
_ ...))
(channel (name (string->symbol (manifest-entry-name entry)))
(url url)
(commit commit)))
;; Pre-0.15.0 Guix does not provide that information,
;; so there's not much we can do in that case.
(_ (channel (name 'guix)
(url "?")
(commit "?")))))
;; Show most recently installed packages last.
(reverse
(manifest-entries
(profile-manifest
(if (zero? number)
profile
(generation-file-name profile number)))))))
(profile-channels (if (zero? number)
profile
(generation-file-name profile number))))
(match fmt
('human

View File

@ -285,10 +285,9 @@ update would trigger a complete rebuild."
(exit 0))
(define (warn-no-updater package)
(format (current-error-port)
(G_ "~a: warning: no updater for ~a~%")
(location->string (package-location package))
(package-name package)))
(warning (package-location package)
(G_ "no updater for ~a~%")
(package-name package)))
(define* (update-package store package updaters
#:key (key-download 'interactive) warn?)
@ -306,11 +305,10 @@ warn about packages that have no matching updater."
(when version
(if (and=> tarball file-exists?)
(begin
(format (current-error-port)
(G_ "~a: ~a: updating from version ~a to version ~a...~%")
(location->string loc)
(package-name package)
(package-version package) version)
(info loc
(G_ "~a: updating from version ~a to version ~a...~%")
(package-name package)
(package-version package) version)
(for-each
(lambda (change)
(format (current-error-port)
@ -350,27 +348,24 @@ WARN? is true and no updater exists for PACKAGE, print a warning."
(case (version-compare (upstream-source-version source)
(package-version package))
((>)
(format (current-error-port)
(G_ "~a: ~a would be upgraded from ~a to ~a~%")
(location->string loc)
(package-name package) (package-version package)
(upstream-source-version source)))
(info loc
(G_ "~a would be upgraded from ~a to ~a~%")
(package-name package) (package-version package)
(upstream-source-version source)))
((=)
(when warn?
(format (current-error-port)
(G_ "~a: info: ~a is already the latest version of ~a~%")
(location->string loc)
(package-version package)
(package-name package))))
(info loc
(G_ "~a is already the latest version of ~a~%")
(package-version package)
(package-name package))))
(else
(when warn?
(format (current-error-port)
(G_ "~a: warning: ~a is greater than \
(warning loc
(G_ "~a is greater than \
the latest known version of ~a (~a)~%")
(location->string loc)
(package-version package)
(package-name package)
(upstream-source-version source)))))))
(package-version package)
(package-name package)
(upstream-source-version source)))))))
(#f
(when warn?
(warn-no-updater package)))))

View File

@ -21,6 +21,7 @@
#:use-module (guix inferior)
#:use-module (guix i18n)
#:use-module ((guix utils) #:select (&fix-hint))
#:use-module (gcrypt pk-crypto)
#:use-module (ssh session)
#:use-module (ssh auth)
#:use-module (ssh key)
@ -39,6 +40,8 @@
remote-inferior
remote-daemon-channel
connect-to-remote-daemon
remote-system
remote-authorize-signing-key
send-files
retrieve-files
retrieve-files*
@ -97,16 +100,27 @@ specifies; otherwise use them. Throw an error on failure."
(message (format #f (G_ "SSH connection to '~a' failed: ~a~%")
host (get-error session))))))))))
(define (remote-inferior session)
"Return a remote inferior for the given SESSION."
(let ((pipe (open-remote-pipe* session OPEN_BOTH
"guix" "repl" "-t" "machine")))
(define* (remote-inferior session #:optional become-command)
"Return a remote inferior for the given SESSION. If BECOME-COMMAND is
given, use that to invoke the remote Guile REPL."
(let* ((repl-command (append (or become-command '())
'("guix" "repl" "-t" "machine")))
(pipe (apply open-remote-pipe* session OPEN_BOTH repl-command)))
;; XXX: 'channel-get-exit-status' would be better here, but hangs if the
;; process does succeed. This doesn't reflect the documentation, so it's
;; possible that it's a bug in guile-ssh.
(when (eof-object? (peek-char pipe))
(raise (condition
(&message
(message (format #f (G_ "failed to run '~{~a~^ ~}'")
repl-command))))))
(port->inferior pipe)))
(define (inferior-remote-eval exp session)
(define* (inferior-remote-eval exp session #:optional become-command)
"Evaluate EXP in a new inferior running in SESSION, and close the inferior
right away."
(let ((inferior (remote-inferior session)))
right away. If BECOME-COMMAND is given, use that to invoke the remote Guile
REPL."
(let ((inferior (remote-inferior session become-command)))
(dynamic-wind
(const #t)
(lambda ()
@ -282,6 +296,34 @@ be read. When RECURSIVE? is true, the closure of FILES is exported."
,(object->string
(object->string export))))))
(define (remote-system session)
"Return the system type as expected by Nix, usually ARCHITECTURE-KERNEL, of
the machine on the other end of SESSION."
(inferior-remote-eval '(begin (use-modules (guix utils)) (%current-system))
session))
(define* (remote-authorize-signing-key key session #:optional become-command)
"Send KEY, a canonical sexp containing a public key, over SESSION and add it
to the system ACL file if it has not yet been authorized."
(inferior-remote-eval
`(begin
(use-modules (guix build utils)
(guix pki)
(guix utils)
(gcrypt pk-crypto)
(srfi srfi-26))
(define acl (current-acl))
(define key (string->canonical-sexp ,(canonical-sexp->string key)))
(unless (authorized-key? key)
(let ((acl (public-keys->acl (cons key (acl->public-keys acl)))))
(mkdir-p (dirname %acl-file))
(with-atomic-file-output %acl-file
(cut write-acl acl <>)))))
session
become-command))
(define* (send-files local files remote
#:key
recursive?

View File

@ -362,6 +362,7 @@ SOURCE, an <upstream-source>."
(_
"gz")))
((url signature-url)
;; Try to find a URL that matches ARCHIVE-TYPE.
(find2 (lambda (url sig-url)
;; Some URIs lack a file extension, like
;; 'https://crates.io/???/0.1/download'. In that
@ -370,7 +371,13 @@ SOURCE, an <upstream-source>."
(string-suffix? archive-type url)))
urls
(or signature-urls (circular-list #f)))))
(let ((tarball (download-tarball store url signature-url
;; If none of URLS matches ARCHIVE-TYPE, then URL is #f; in that case,
;; pick up the first element of URLS.
(let ((tarball (download-tarball store
(or url (first urls))
(and (pair? signature-urls)
(or signature-url
(first signature-urls)))
#:key-download key-download)))
(values version tarball source))))))

View File

@ -184,9 +184,8 @@ AC_DEFUN([GUIX_CHECK_GUILE_JSON], [
[guix_cv_have_recent_guile_json],
[GUILE_CHECK([retval],
[(use-modules (json) (ice-9 match))
(match (json-string->scm \"[[] { \\\"a\\\": 42 } []]\")
(#(("a" . 42)) #t)
(_ #f))])
(match (json-string->scm \"[[ { \\\"a\\\": 42 } ]]\")
(#((("a" . 42))) #t))])
if test "$retval" = 0; then
guix_cv_have_recent_guile_json="yes"
else

View File

@ -409,6 +409,38 @@
(equal? (derivation->output-path final1)
(derivation->output-path final2)))))
(test-assert "derivation with duplicate fixed-output inputs"
;; Here we create a derivation that has two inputs, both of which are
;; fixed-output leading to the same result. This test ensures the hash of
;; that derivation is correctly computed, namely that duplicate inputs are
;; coalesced. See <https://bugs.gnu.org/36777>.
(let* ((builder1 (add-text-to-store %store "fixed-builder1.sh"
"echo -n hello > $out" '()))
(builder2 (add-text-to-store %store "fixed-builder2.sh"
"echo hey; echo -n hello > $out" '()))
(hash (sha256 (string->utf8 "hello")))
(fixed1 (derivation %store "fixed"
%bash `(,builder1)
#:hash hash #:hash-algo 'sha256))
(fixed2 (derivation %store "fixed"
%bash `(,builder2)
#:hash hash #:hash-algo 'sha256))
(builder3 (add-text-to-store %store "builder.sh"
"echo fake builder"))
(final (derivation %store "final"
%bash `(,builder3)
#:sources (list %bash builder3)
#:inputs (list (derivation-input fixed1)
(derivation-input fixed2)))))
(and (derivation? final)
(match (derivation-inputs final)
(((= derivation-input-derivation one)
(= derivation-input-derivation two))
(and (not (string=? (derivation-file-name one)
(derivation-file-name two)))
(string=? (derivation->output-path one)
(derivation->output-path two))))))))
(test-assert "multiple-output derivation"
(let* ((builder (add-text-to-store %store "my-fixed-builder.sh"
"echo one > $out ; echo two > $second"

View File

@ -144,6 +144,13 @@ HOME="$tmpdir" guix environment --bootstrap --container --user=foognu \
--share="$tmpdir/umock" \
-- guile -c "$usertest"
# if not sharing CWD, chdir home
(
cd "$tmpdir" \
&& guix environment --bootstrap --container --no-cwd --user=foo \
--ad-hoc guile-bootstrap --pure \
-- /bin/sh -c 'test $(pwd) == "/home/foo" -a ! -d '"$tmpdir"
)
# Check the exit code.

View File

@ -84,14 +84,6 @@ echo "(use-modules (guix profiles) (gnu packages bootstrap))
guix environment --bootstrap --manifest=$tmpdir/manifest.scm --pure \
-- "$SHELL" -c 'test -f "$GUIX_ENVIRONMENT/bin/guile"'
# if not sharing CWD, chdir home
(
cd "$tmpdir" \
&& guix environment --bootstrap --container --no-cwd --user=foo \
--ad-hoc guile-bootstrap --pure \
-- /bin/sh -c 'test $(pwd) == "/home/foo" -a ! -d '"$tmpdir"
)
# Make sure '-r' works as expected.
rm -f "$gcroot"
expected="`guix environment --bootstrap --ad-hoc guile-bootstrap \

View File

@ -74,6 +74,12 @@
(((and (? lint-warning?) warning))
(lint-warning-message warning))))
(define (warning-contains? str warnings)
"Return true if WARNINGS is a singleton with a warning that contains STR."
(match warnings
(((? lint-warning? warning))
(string-contains (lint-warning-message warning) str))))
(test-begin "lint")
@ -366,13 +372,11 @@
(single-lint-warning-message
(check-home-page pkg))))
(test-equal "home-page: host not found"
"URI http://does-not-exist domain not found: Name or service not known"
(test-assert "home-page: host not found"
(let ((pkg (package
(inherit (dummy-package "x"))
(home-page "http://does-not-exist"))))
(single-lint-warning-message
(check-home-page pkg))))
(warning-contains? "domain not found" (check-home-page pkg))))
(test-skip (if (http-server-can-listen?) 0 1))
(test-equal "home-page: Connection refused"