diff options
-rw-r--r-- | NEWS | 4 | ||||
-rw-r--r-- | doc/emacs.texi | 26 | ||||
-rw-r--r-- | doc/guix.texi | 61 | ||||
-rw-r--r-- | emacs.am | 3 | ||||
-rw-r--r-- | emacs/guix-info.el | 6 | ||||
-rw-r--r-- | emacs/guix-license.el | 130 | ||||
-rw-r--r-- | emacs/guix-list.el | 27 | ||||
-rw-r--r-- | emacs/guix-main.scm | 63 | ||||
-rw-r--r-- | emacs/guix-messages.el | 15 | ||||
-rw-r--r-- | emacs/guix-read.el | 11 | ||||
-rw-r--r-- | emacs/guix-ui-generation.el | 2 | ||||
-rw-r--r-- | emacs/guix-ui-package.el | 24 | ||||
-rw-r--r-- | emacs/guix-ui-system-generation.el | 2 | ||||
-rw-r--r-- | gnu-system.am | 1 | ||||
-rw-r--r-- | gnu/packages/admin.scm | 29 | ||||
-rw-r--r-- | gnu/packages/adns.scm | 29 | ||||
-rw-r--r-- | gnu/packages/aria2.scm | 49 | ||||
-rw-r--r-- | gnu/packages/aspell.scm | 6 | ||||
-rw-r--r-- | gnu/packages/audio.scm | 4 | ||||
-rw-r--r-- | gnu/packages/bioinformatics.scm | 12 | ||||
-rw-r--r-- | gnu/packages/bittorrent.scm | 67 | ||||
-rw-r--r-- | gnu/packages/check.scm | 25 | ||||
-rw-r--r-- | gnu/packages/compression.scm | 29 | ||||
-rw-r--r-- | gnu/packages/enlightenment.scm | 40 | ||||
-rw-r--r-- | gnu/packages/ruby.scm | 841 | ||||
-rw-r--r-- | gnu/packages/tls.scm | 4 | ||||
-rw-r--r-- | gnu/packages/web.scm | 4 | ||||
-rw-r--r-- | gnu/services/base.scm | 6 | ||||
-rw-r--r-- | gnu/services/dmd.scm | 6 | ||||
-rw-r--r-- | gnu/system.scm | 1 |
30 files changed, 1426 insertions, 101 deletions
@@ -14,9 +14,10 @@ Please send Guix bug reports to bug-guix@gnu.org. ** Package management +*** Emacs interface for licenses *** Emacs interface for system generations *** Emacs interface for hydra.gnu.org -*** Changes in Emacs interface variables +*** Changes in Emacs interface variables and faces In the following names, BUFFER-TYPE means "info" or "list"; ENTRY-TYPE means "package", "output" or "generation". @@ -30,6 +31,7 @@ ENTRY-TYPE means "package", "output" or "generation". - guix-buffer-name-function -> guix-ui-buffer-name-function - guix-update-after-operation -> guix-ui-update-after-operation - guix-search-params -> guix-package-search-params +- guix-BUFFER-TYPE-file-path (face) -> guix-BUFFER-TYPE-file-name **** Replaced - guix-list-column-format, guix-list-column-value-methods -> diff --git a/doc/emacs.texi b/doc/emacs.texi index eb470ab4ca..8020e0ace3 100644 --- a/doc/emacs.texi +++ b/doc/emacs.texi @@ -9,6 +9,7 @@ Guix convenient and fun. @menu * Initial Setup: Emacs Initial Setup. Preparing @file{~/.emacs}. * Package Management: Emacs Package Management. Managing packages and generations. +* Licenses: Emacs Licenses. Interface for licenses of Guix packages. * Popup Interface: Emacs Popup Interface. Magit-like interface for guix commands. * Prettify Mode: Emacs Prettify. Abbreviating @file{/gnu/store/@dots{}} file names. * Build Log Mode: Emacs Build Log. Highlighting Guix build logs. @@ -158,6 +159,9 @@ but cannot be found among available packages). @item M-x guix-packages-by-name Display package(s) with the specified name. +@item M-x guix-packages-by-license +Display package(s) with the specified license. + @item M-x guix-search-by-regexp Search for packages by a specified regexp. By default ``name'', ``synopsis'' and ``description'' of the packages will be searched. This @@ -355,6 +359,7 @@ emacs, The GNU Emacs Manual}) which can be used to: @item install/remove a package; @item jump to a package location; @item browse home page of a package; +@item browse license URL; @item describe packages from ``Inputs'' fields. @end itemize @@ -516,6 +521,27 @@ Various settings for ``info'' buffers. @end table +@node Emacs Licenses +@section Licenses + +If you want to browse the URL of a particular license, or to look at a +list of licenses, you may use the following commands: + +@table @kbd + +@item M-x guix-browse-license-url +Choose a license from a completion list to browse its URL using +@code{browse-url} function (@pxref{Browse-URL,,, emacs, The GNU Emacs +Manual}). + +@item M-x guix-licenses +Display a list of available licenses. You can press @kbd{@key{RET}} +there to display packages with this license in the same way as @kbd{M-x +guix-packages-by-license} would do (@pxref{Emacs Commands}). + +@end table + + @node Emacs Popup Interface @section Popup Interface diff --git a/doc/guix.texi b/doc/guix.texi index a650a55d51..a6ba9485eb 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -15,8 +15,8 @@ Copyright @copyright{} 2013, 2014 Andreas Enge@* Copyright @copyright{} 2013 Nikita Karetnikov@* Copyright @copyright{} 2015 Mathieu Lirzin@* Copyright @copyright{} 2014 Pierre-Antoine Rault@* -Copyright @copyright{} 2015 Taylan Ulrich Bayırlı/Kammer -Copyright @copyright{} 2015 Leo Famulari +Copyright @copyright{} 2015 Taylan Ulrich Bayırlı/Kammer@* +Copyright @copyright{} 2015, 2016 Leo Famulari Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or @@ -111,6 +111,7 @@ Emacs Interface * Initial Setup: Emacs Initial Setup. Preparing @file{~/.emacs}. * Package Management: Emacs Package Management. Managing packages and generations. +* Licenses: Emacs Licenses. Interface for licenses of Guix packages. * Popup Interface: Emacs Popup Interface. Magit-like interface for guix commands. * Prettify Mode: Emacs Prettify. Abbreviating @file{/gnu/store/@dots{}} file names. * Build Log Mode: Emacs Build Log. Highlighting Guix build logs. @@ -174,6 +175,7 @@ System Configuration * Initial RAM Disk:: Linux-Libre bootstrapping. * GRUB Configuration:: Configuring the boot loader. * Invoking guix system:: Instantiating a system configuration. +* Running GuixSD in a VM:: How to run GuixSD in a virtual machine. * Defining Services:: Adding new service definitions. Services @@ -5693,6 +5695,7 @@ instance to support new system services. * Initial RAM Disk:: Linux-Libre bootstrapping. * GRUB Configuration:: Configuring the boot loader. * Invoking guix system:: Instantiating a system configuration. +* Running GuixSD in a VM:: How to run GuixSD in a virtual machine. * Defining Services:: Adding new service definitions. @end menu @@ -9194,7 +9197,8 @@ in @var{file} that stands alone. Use the @option{--image-size} option to specify the size of the image. When using @code{vm-image}, the returned image is in qcow2 format, which -the QEMU emulator can efficiently use. +the QEMU emulator can efficiently use. @xref{Running GuixSD in a VM}, +for more information on how to run the image in a virtual machine. When using @code{disk-image}, a raw disk image is produced; it can be copied as is to a USB stick, for instance. Assuming @code{/dev/sdc} is @@ -9333,6 +9337,57 @@ graph} of dmd services of the operating system defined in @var{file}. @end table +@node Running GuixSD in a VM +@subsection Running GuixSD in a virtual machine + +One way to run GuixSD in a virtual machine (VM) is to build a GuixSD +virtual machine image using @command{guix system vm-image} +(@pxref{Invoking guix system}). The returned image is in qcow2 format, +which the @uref{http://qemu.org/, QEMU emulator} can efficiently use. + +To run the image in QEMU, copy it out of the store (@pxref{The Store}) +and give yourself permission to write to the copy. When invoking QEMU, +you must choose a system emulator that is suitable for your hardware +platform. Here is a minimal QEMU invocation that will boot the result +of @command{guix system vm-image} on x86_64 hardware: + +@example +$ qemu-system-x86_64 \ + -net user -net nic,model=virtio \ + -enable-kvm -m 256 /tmp/qemu-image +@end example + +Here is what each of these options means: + +@table @code +@item qemu-system-x86_64 +This specifies the hardware platform to emulate. This should match the +host. + +@item -net user +Enable the unprivileged user-mode network stack. The guest OS can +access the host but not vice versa. This is the simplest way to get the +guest OS online. If you don't choose a network stack, the boot will +fail. + +@item -net nic,model=virtio +You must create a network interface of a given model. If you don't +create a NIC, the boot will fail. Assuming your hardware platform is +x86_64, you can get a list of available NIC models by running +@command{qemu-system-x86_64 -net nic,model=help}. + +@item -enable-kvm +If your system has hardware virtualization extensions, enabling the +Linux kernel's virtual machine support (KVM) will make things run +faster. + +@item -m 256 +RAM available to the guest OS, in mebibytes. Defaults to 128@tie{}MiB, +which may be insufficent for some operations. + +@item /tmp/qemu-image +The file name of the qcow2 image. +@end table @node Defining Services @subsection Defining Services @@ -1,5 +1,5 @@ # GNU Guix --- Functional package management for GNU -# Copyright © 2014, 2015 Alex Kost <alezost@gmail.com> +# Copyright © 2014, 2015, 2016 Alex Kost <alezost@gmail.com> # # This file is part of GNU Guix. # @@ -37,6 +37,7 @@ ELFILES = \ emacs/guix-hydra-jobset.el \ emacs/guix-info.el \ emacs/guix-init.el \ + emacs/guix-license.el \ emacs/guix-list.el \ emacs/guix-messages.el \ emacs/guix-pcomplete.el \ diff --git a/emacs/guix-info.el b/emacs/guix-info.el index 644533eb29..6aefd2f3f6 100644 --- a/emacs/guix-info.el +++ b/emacs/guix-info.el @@ -42,9 +42,9 @@ "Face used for titles of parameters." :group 'guix-info-faces) -(defface guix-info-file-path +(defface guix-info-file-name '((t :inherit link)) - "Face used for file paths." + "Face used for file names." :group 'guix-info-faces) (defface guix-info-url @@ -337,7 +337,7 @@ BUTTON-OR-FACE is a button type)." (define-button-type 'guix-file :supertype 'guix - 'face 'guix-info-file-path + 'face 'guix-info-file-name 'help-echo "Find file" 'action (lambda (btn) (guix-find-file (button-label btn)))) diff --git a/emacs/guix-license.el b/emacs/guix-license.el new file mode 100644 index 0000000000..a99d7af98d --- /dev/null +++ b/emacs/guix-license.el @@ -0,0 +1,130 @@ +;;; guix-license.el --- Licenses + +;; Copyright © 2016 Alex Kost <alezost@gmail.com> + +;; 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 this program. If not, see <http://www.gnu.org/licenses/>. + +;;; Commentary: + +;; This file provides the code to work with licenses of Guix packages. + +;;; Code: + +(require 'guix-buffer) +(require 'guix-list) +(require 'guix-info) +(require 'guix-read) +(require 'guix-backend) +(require 'guix-guile) + +(guix-define-entry-type license) + +(defun guix-lookup-license-url (license) + "Return URL of a LICENSE." + (or (guix-eval-read (guix-make-guile-expression + 'lookup-license-uri license)) + (error "Hm, I don't know URL of '%s' license" license))) + +(defun guix-license-get-entries (search-type &rest args) + "Receive 'license' entries. +SEARCH-TYPE may be one of the following symbols: `all', `id', `name'." + (guix-eval-read + (apply #'guix-make-guile-expression + 'license-entries search-type args))) + +(defun guix-license-get-display (search-type &rest args) + "Search for licenses and show results." + (apply #'guix-list-get-display-entries + 'license search-type args)) + + +;;; License 'info' + +(guix-info-define-interface license + :buffer-name "*Guix License Info*" + :get-entries-function 'guix-license-get-entries + :format '((name ignore (simple guix-info-heading)) + ignore + guix-license-insert-packages-button + (url ignore (simple guix-url)) + guix-license-insert-comment) + :titles '((url . "URL"))) + +(declare-function guix-packages-by-license "guix-ui-package") + +(defun guix-license-insert-packages-button (entry) + "Insert button to display packages by license ENTRY." + (guix-info-insert-action-button + "Packages" + (lambda (btn) + (guix-packages-by-license (button-get btn 'license))) + "Show packages with this license" + 'license (guix-entry-value entry 'name))) + +(defun guix-license-insert-comment (entry) + "Insert 'comment' of a license ENTRY." + (let ((comment (guix-entry-value entry 'comment))) + (if (and comment + (string-match-p "^http" comment)) + (guix-info-insert-value-simple comment 'guix-url) + (guix-info-insert-title-simple + (guix-info-param-title 'license 'comment)) + (guix-info-insert-value-indent comment)))) + + +;;; License 'list' + +(guix-list-define-interface license + :buffer-name "*Guix Licenses*" + :get-entries-function 'guix-license-get-entries + :describe-function 'guix-license-list-describe + :format '((name nil 40 t) + (url guix-list-get-url 50 t)) + :titles '((name . "License")) + :sort-key '(name)) + +(let ((map guix-license-list-mode-map)) + (define-key map (kbd "RET") 'guix-license-list-show-packages)) + +(defun guix-license-list-describe (ids) + "Describe licenses with IDS (list of identifiers)." + (guix-buffer-display-entries + (guix-entries-by-ids ids (guix-buffer-current-entries)) + 'info 'license (cl-list* 'id ids) 'add)) + +(defun guix-license-list-show-packages () + "Display packages with the license at point." + (interactive) + (guix-packages-by-license (guix-list-current-id))) + + +;;; Interactive commands + +;;;###autoload +(defun guix-browse-license-url (license) + "Browse URL of a LICENSE." + (interactive (list (guix-read-license-name))) + (browse-url (guix-lookup-license-url license))) + +;;;###autoload +(defun guix-licenses () + "Display licenses of the Guix packages." + (interactive) + (guix-license-get-display 'all)) + +(provide 'guix-license) + +;;; guix-license.el ends here diff --git a/emacs/guix-list.el b/emacs/guix-list.el index 7e57f42cb2..c91c67cb29 100644 --- a/emacs/guix-list.el +++ b/emacs/guix-list.el @@ -33,9 +33,14 @@ (guix-define-buffer-type list) -(defface guix-list-file-path - '((t :inherit guix-info-file-path)) - "Face used for file paths." +(defface guix-list-file-name + '((t :inherit guix-info-file-name)) + "Face used for file names." + :group 'guix-list-faces) + +(defface guix-list-url + '((t :inherit guix-info-url)) + "Face used for URLs." :group 'guix-list-faces) (defface guix-list-time @@ -214,14 +219,22 @@ VAL may be nil." (guix-get-string (guix-get-time-string seconds) 'guix-list-time)) -(defun guix-list-get-file-path (path &optional _) - "Return PATH button specification for `tabulated-list-entries'." - (list path - 'face 'guix-list-file-path +(defun guix-list-get-file-name (file-name &optional _) + "Return FILE-NAME button specification for `tabulated-list-entries'." + (list file-name + 'face 'guix-list-file-name 'action (lambda (btn) (find-file (button-label btn))) 'follow-link t 'help-echo "Find file")) +(defun guix-list-get-url (url &optional _) + "Return URL button specification for `tabulated-list-entries'." + (list url + 'face 'guix-list-url + 'action (lambda (btn) (browse-url (button-label btn))) + 'follow-link t + 'help-echo "Browse URL")) + ;;; 'List' lines diff --git a/emacs/guix-main.scm b/emacs/guix-main.scm index 236c882e3c..335686ed25 100644 --- a/emacs/guix-main.scm +++ b/emacs/guix-main.scm @@ -403,6 +403,12 @@ MATCH-PARAMS is a list of parameters that REGEXP can match." (let ((re (make-regexp regexp regexp/icase))) (matching-packages (cut package-match? <> re)))) +(define (packages-by-license license) + "Return a list of packages with LICENSE." + (matching-packages + (lambda (package) + (memq license (list-maybe (package-license package)))))) + (define (all-available-packages) "Return a list of all available packages." (matching-packages (const #t))) @@ -663,6 +669,9 @@ ENTRIES is a list of installed manifest entries." (manifest-output-proc (apply-to-first manifest-output-patterns)) (regexp-proc (lambda (_ regexp params . __) (packages-by-regexp regexp params))) + (license-proc (lambda (_ license-name) + (packages-by-license + (lookup-license license-name)))) (all-proc (lambda _ (all-available-packages))) (newest-proc (lambda _ (newest-available-packages)))) `((package @@ -671,6 +680,7 @@ ENTRIES is a list of installed manifest entries." (installed . ,manifest-package-proc) (obsolete . ,(apply-to-first obsolete-package-patterns)) (regexp . ,regexp-proc) + (license . ,license-proc) (all-available . ,all-proc) (newest-available . ,newest-proc)) (output @@ -679,6 +689,7 @@ ENTRIES is a list of installed manifest entries." (installed . ,manifest-output-proc) (obsolete . ,(apply-to-first obsolete-output-patterns)) (regexp . ,regexp-proc) + (license . ,license-proc) (all-available . ,all-proc) (newest-available . ,newest-proc))))) @@ -1042,3 +1053,55 @@ Return #t if the shell command was executed successfully." ;; See the comment to 'guix-package-names' function in "guix-popup.el". (define (package-names-lists) (map list (package-names))) + + +;;; Licenses + +(define %licenses + (delay + (filter license? + (module-map (lambda (_ var) + (variable-ref var)) + (resolve-interface '(guix licenses)))))) + +(define (licenses) + (force %licenses)) + +(define (license-names) + "Return a list of names of available licenses." + (map license-name (licenses))) + +(define lookup-license + (memoize + (lambda (name) + "Return a license by its name." + (find (lambda (l) + (string=? name (license-name l))) + (licenses))))) + +(define (lookup-license-uri name) + "Return a license URI by its name." + (and=> (lookup-license name) + license-uri)) + +(define %license-param-alist + `((id . ,license-name) + (name . ,license-name) + (url . ,license-uri) + (comment . ,license-comment))) + +(define license->sexp + (object-transformer %license-param-alist)) + +(define (find-licenses search-type . search-values) + "Return a list of licenses depending on SEARCH-TYPE and SEARCH-VALUES." + (case search-type + ((id name) + (let ((names search-values)) + (filter-map lookup-license names))) + ((all) + (licenses)))) + +(define (license-entries search-type . search-values) + (map license->sexp + (apply find-licenses search-type search-values))) diff --git a/emacs/guix-messages.el b/emacs/guix-messages.el index c4f15dcac2..de0331fff8 100644 --- a/emacs/guix-messages.el +++ b/emacs/guix-messages.el @@ -36,6 +36,10 @@ (name ,(lambda (_ entries names) (guix-message-packages-by-name entries 'package names))) + (license + ,(lambda (_ entries licenses) + (apply #'guix-message-packages-by-license + entries 'package licenses))) (regexp (0 "No packages matching '%s'." val) (1 "A single package matching '%s'." val) @@ -64,6 +68,10 @@ (name ,(lambda (_ entries names) (guix-message-packages-by-name entries 'output names))) + (license + ,(lambda (_ entries licenses) + (apply #'guix-message-packages-by-license + entries 'output licenses))) (regexp (0 "No package outputs matching '%s'." val) (1 "A single package output matching '%s'." val) @@ -159,6 +167,13 @@ Try \"M-x guix-search-by-name\"." (guix-message-string-name (car names)))))) (message "%s %s." str-beg str-end))) +(defun guix-message-packages-by-license (entries entry-type license) + "Display a message for packages or outputs searched by LICENSE." + (let* ((count (length entries)) + (str-beg (guix-message-string-entries count entry-type)) + (str-end (format "with license '%s'" license))) + (message "%s %s." str-beg str-end))) + (defun guix-message-generations-by-time (profile entries times) "Display a message for generations searched by TIMES." (let* ((count (length entries)) diff --git a/emacs/guix-read.el b/emacs/guix-read.el index 3bc7b16587..a1a6b86364 100644 --- a/emacs/guix-read.el +++ b/emacs/guix-read.el @@ -1,6 +1,6 @@ ;;; guix-read.el --- Minibuffer readers -;; Copyright © 2015 Alex Kost <alezost@gmail.com> +;; Copyright © 2015, 2016 Alex Kost <alezost@gmail.com> ;; This file is part of GNU Guix. @@ -58,6 +58,10 @@ 'package-names-lists))) #'string<)) +(guix-memoized-defun guix-license-names () + "Return a list of names of available licenses." + (guix-eval-read (guix-make-guile-expression 'license-names))) + ;;; Readers @@ -122,6 +126,11 @@ :multiple-prompt "Package,s: " :multiple-separator " ") +(guix-define-readers + :completions-getter guix-license-names + :single-reader guix-read-license-name + :single-prompt "License: ") + (provide 'guix-read) ;;; guix-read.el ends here diff --git a/emacs/guix-ui-generation.el b/emacs/guix-ui-generation.el index 4047850f23..74b8ff2579 100644 --- a/emacs/guix-ui-generation.el +++ b/emacs/guix-ui-generation.el @@ -166,7 +166,7 @@ current profile's GENERATION." :format '((number nil 5 guix-list-sort-numerically-0 :right-align t) (current guix-generation-list-get-current 10 t) (time guix-list-get-time 20 t) - (path guix-list-get-file-path 30 t)) + (path guix-list-get-file-name 30 t)) :titles '((number . "N.")) :sort-key '(number . t) :marks '((delete . ?D))) diff --git a/emacs/guix-ui-package.el b/emacs/guix-ui-package.el index 29514527ce..414bc9b9d2 100644 --- a/emacs/guix-ui-package.el +++ b/emacs/guix-ui-package.el @@ -35,6 +35,8 @@ (require 'guix-entry) (require 'guix-utils) (require 'guix-hydra-build) +(require 'guix-read) +(require 'guix-license) (guix-ui-define-entry-type package) (guix-ui-define-entry-type output) @@ -220,7 +222,7 @@ ENTRIES is a list of package entries to get info about packages." (source simple guix-package-info-insert-source) (location format (format guix-package-location)) (home-url format (format guix-url)) - (license format (format guix-package-info-license)) + (license format (format guix-package-license)) (systems format guix-package-info-insert-systems) (inputs format (format guix-package-input)) (native-inputs format (format guix-package-native-input)) @@ -338,6 +340,13 @@ formatted with this string, an action button is inserted.") 'action (lambda (btn) (guix-find-location (button-label btn)))) +(define-button-type 'guix-package-license + :supertype 'guix + 'face 'guix-package-info-license + 'help-echo "Browse license URL" + 'action (lambda (btn) + (guix-browse-license-url (button-label btn)))) + (define-button-type 'guix-package-name :supertype 'guix 'face 'guix-package-info-name-button @@ -767,7 +776,7 @@ for all ARGS." (dependencies simple (indent guix-file)) (location format (format guix-package-location)) (home-url format (format guix-url)) - (license format (format guix-package-info-license)) + (license format (format guix-package-license)) (systems format guix-package-info-insert-systems) (inputs format (format guix-package-input)) (native-inputs format (format guix-package-native-input)) @@ -925,6 +934,17 @@ Interactively with prefix, prompt for PROFILE." (guix-package-get-display profile 'name name)) ;;;###autoload +(defun guix-packages-by-license (license &optional profile) + "Display Guix packages with LICENSE. +LICENSE is a license name string. +If PROFILE is nil, use `guix-current-profile'. +Interactively with prefix, prompt for PROFILE." + (interactive + (list (guix-read-license-name) + (guix-ui-read-profile))) + (guix-package-get-display profile 'license license)) + +;;;###autoload (defun guix-search-by-regexp (regexp &optional params profile) "Search for Guix packages by REGEXP. PARAMS are package parameters that should be searched. diff --git a/emacs/guix-ui-system-generation.el b/emacs/guix-ui-system-generation.el index d79f3bceef..7f4d76d489 100644 --- a/emacs/guix-ui-system-generation.el +++ b/emacs/guix-ui-system-generation.el @@ -71,7 +71,7 @@ SEARCH-VALUES." (current guix-generation-list-get-current 10 t) (label nil 40 t) (time guix-list-get-time 20 t) - (path guix-list-get-file-path 30 t)) + (path guix-list-get-file-name 30 t)) :titles guix-generation-list-titles :sort-key '(number . t) :marks '((delete . ?D))) diff --git a/gnu-system.am b/gnu-system.am index 45511d2eb8..ac386355df 100644 --- a/gnu-system.am +++ b/gnu-system.am @@ -36,7 +36,6 @@ GNU_SYSTEM_MODULES = \ gnu/packages/animation.scm \ gnu/packages/apl.scm \ gnu/packages/apr.scm \ - gnu/packages/aria2.scm \ gnu/packages/asciidoc.scm \ gnu/packages/aspell.scm \ gnu/packages/attr.scm \ diff --git a/gnu/packages/admin.scm b/gnu/packages/admin.scm index 953c5b4cf8..eca4d9208f 100644 --- a/gnu/packages/admin.scm +++ b/gnu/packages/admin.scm @@ -58,9 +58,11 @@ #:use-module (gnu packages image) #:use-module (gnu packages xorg) #:use-module (gnu packages python) - #:use-module (gnu packages man)) + #:use-module (gnu packages man) + #:use-module (gnu packages autotools)) (define-public dmd + ;; Deprecated. Kept around "just in case." (let ((base-version "0.2") (patch-level "01")) (package @@ -99,6 +101,31 @@ interface and is based on GNU Guile.") (license license:gpl3+) (home-page "http://www.gnu.org/software/dmd/")))) +(define-public shepherd + (package + (name "shepherd") + (version "0.3") + (source (origin + (method url-fetch) + (uri (string-append "ftp://alpha.gnu.org/gnu/dmd/shepherd-" + version ".tar.gz")) + (sha256 + (base32 + "13mcy2131h7hggqvxbfxyrnbz46aaiaq2agng3x3f789a78n4mnn")))) + (build-system gnu-build-system) + (arguments + '(#:configure-flags '("--localstatedir=/var"))) + (native-inputs `(("pkg-config" ,pkg-config))) + (inputs `(("guile" ,guile-2.0))) + (synopsis "System service manager") + (description + "The GNU Shepherd is a daemon-managing daemon, meaning that it supervises +the execution of system services, replacing similar functionality found in +typical init systems. It provides dependency-handling through a convenient +interface and is based on GNU Guile.") + (license license:gpl3+) + (home-page "http://www.gnu.org/software/shepherd/"))) + (define-public dfc (package (name "dfc") diff --git a/gnu/packages/adns.scm b/gnu/packages/adns.scm index f96b0ab5d0..1af735b6eb 100644 --- a/gnu/packages/adns.scm +++ b/gnu/packages/adns.scm @@ -1,5 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2014 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2015 Efraim Flashner <efraim@flashner.co.il> ;;; ;;; This file is part of GNU Guix. ;;; @@ -20,7 +21,8 @@ #:use-module (guix licenses) #:use-module (guix packages) #:use-module (guix download) - #:use-module (guix build-system gnu)) + #:use-module (guix build-system gnu) + #:use-module (gnu packages pkg-config)) (define-public adns (package @@ -53,3 +55,28 @@ functionality. The library is asynchronous, allowing several concurrent calls. The package also includes several command-line utilities for use in scripts.") (license gpl3+))) + +(define-public c-ares + (package + (name "c-ares") + (version "1.10.0") + (source (origin + (method url-fetch) + (uri (string-append + "http://c-ares.haxx.se/download/" name "-" version + ".tar.gz")) + (sha256 + (base32 + "1nyka87yf2jfd0y6sspll0yxwb8zi7kyvajrdbjmh4axc5s1cw1x")))) + (build-system gnu-build-system) + (native-inputs + `(("pkg-config" ,pkg-config))) + (home-page "http://c-ares.haxx.se/") + (synopsis "C library for asynchronous DNS requests") + (description + "C-ares is a C library that performs DNS requests and name resolution +asynchronously. It is intended for applications which need to perform DNS +queries without blocking, or need to perform multiple DNS queries in parallel. +The primary examples of such applications are servers which communicate with +multiple clients and programs with graphical user interfaces.") + (license (x11-style "http://c-ares.haxx.se/license.html")))) diff --git a/gnu/packages/aria2.scm b/gnu/packages/aria2.scm deleted file mode 100644 index 707a3ce0e4..0000000000 --- a/gnu/packages/aria2.scm +++ /dev/null @@ -1,49 +0,0 @@ -;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2015 Efraim Flashner <efraim@flashner.co.il> -;;; -;;; 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 aria2) - #:use-module ((guix licenses) #:prefix license:) - #:use-module (guix download) - #:use-module (guix packages) - #:use-module (guix build-system gnu) - #:use-module (gnu packages pkg-config)) - -(define-public c-ares - (package - (name "c-ares") - (version "1.10.0") - (source (origin - (method url-fetch) - (uri (string-append - "http://c-ares.haxx.se/download/" name "-" version - ".tar.gz")) - (sha256 - (base32 - "1nyka87yf2jfd0y6sspll0yxwb8zi7kyvajrdbjmh4axc5s1cw1x")))) - (build-system gnu-build-system) - (native-inputs - `(("pkg-config" ,pkg-config))) - (home-page "http://c-ares.haxx.se/") - (synopsis "C library for asynchronous DNS requests") - (description - "C-ares is a C library that performs DNS requests and name resolution -asynchronously. It is intended for applications which need to perform DNS -queries without blocking, or need to perform multiple DNS queries in parallel. -The primary examples of such applications are servers which communicate with -multiple clients and programs with graphical user interfaces.") - (license (license:x11-style "http://c-ares.haxx.se/license.html")))) diff --git a/gnu/packages/aspell.scm b/gnu/packages/aspell.scm index 38ed997163..2425d1cbec 100644 --- a/gnu/packages/aspell.scm +++ b/gnu/packages/aspell.scm @@ -1,6 +1,6 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2013, 2014, 2015 Ludovic Courtès <ludo@gnu.org> -;;; Copyright © 2015 Alex Kost <alezost@gmail.com> +;;; Copyright © 2015, 2016 Alex Kost <alezost@gmail.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -89,10 +89,10 @@ dictionaries, including personal ones.") (define-public aspell-dict-en (aspell-dictionary "en" "English" - #:version "7.1-0" + #:version "2016.01.19-0" #:sha256 (base32 - "02ldfiny4iakgfgy4sdrzjqdzi7l1rmb6y30lv31kfy5x31g77gz"))) + "01h4cl4lngp6mcfbyb47cjrc2gspyg2519dvknd97ki896nx7vcn"))) (define-public aspell-dict-eo (aspell-dictionary "eo" "Esperanto" diff --git a/gnu/packages/audio.scm b/gnu/packages/audio.scm index 0823aad91e..7f0d87ddf7 100644 --- a/gnu/packages/audio.scm +++ b/gnu/packages/audio.scm @@ -70,14 +70,14 @@ (define-public alsa-modular-synth (package (name "alsa-modular-synth") - (version "2.1.1") + (version "2.1.2") (source (origin (method url-fetch) (uri (string-append "mirror://sourceforge/alsamodular/ams-" version ".tar.bz2")) (sha256 (base32 - "1nb7qzzqlqa2x8h797jbwi18ihnfkxqg9lyi0c4nvf8ybwzxkzd2")))) + "1azbrhpfk4nnybr7kgmc7w6al6xnzppg853vas8gmkh185kk11l0")))) (build-system gnu-build-system) (inputs `(("alsa-lib" ,alsa-lib) diff --git a/gnu/packages/bioinformatics.scm b/gnu/packages/bioinformatics.scm index a9df676fc6..992ab30fe9 100644 --- a/gnu/packages/bioinformatics.scm +++ b/gnu/packages/bioinformatics.scm @@ -2647,7 +2647,7 @@ Roche 454, Ion Torrent and Pacific BioSciences SMRT.") (define-public ngs-sdk (package (name "ngs-sdk") - (version "1.2.2") + (version "1.2.3") (source (origin (method url-fetch) @@ -2657,7 +2657,7 @@ Roche 454, Ion Torrent and Pacific BioSciences SMRT.") (file-name (string-append name "-" version ".tar.gz")) (sha256 (base32 - "0rvq61zfw2h9jcz6a33b9xrl20r7s5a9rldvv6rs2qy42khpmf5j")))) + "15074fdi94c6pjy83hhk22r86kfvzpaz2i07h3rqg9yy6x3w0pk2")))) (build-system gnu-build-system) (arguments `(#:parallel-build? #f ; not supported @@ -2711,7 +2711,7 @@ simultaneously.") (define-public ncbi-vdb (package (name "ncbi-vdb") - (version "2.5.4") + (version "2.5.7") (source (origin (method url-fetch) @@ -2721,7 +2721,7 @@ simultaneously.") (file-name (string-append name "-" version ".tar.gz")) (sha256 (base32 - "1rcnyc4xkdfcjww2i0s0qrbapys0cxbjcx2sy3qkpslf9f400fgj")))) + "0hay5hy8ynva3mi5wbn4wmq1q23qwxc3aqzbb86hg3x4f1r73270")))) (build-system gnu-build-system) (arguments `(#:parallel-build? #f ; not supported @@ -2951,7 +2951,7 @@ complexity samples.") (define-public sra-tools (package (name "sra-tools") - (version "2.5.4") + (version "2.5.7") (source (origin (method url-fetch) @@ -2961,7 +2961,7 @@ complexity samples.") (file-name (string-append name "-" version ".tar.gz")) (sha256 (base32 - "1rxxc8a34g70jcaa2j8sys2x93amlbc24k7az39wldhkzgi96825")))) + "0q93qg744x787d08qmjmdafki1wkbvkdwynayjnjd454gkd26jl5")))) (build-system gnu-build-system) (arguments `(#:parallel-build? #f ; not supported diff --git a/gnu/packages/bittorrent.scm b/gnu/packages/bittorrent.scm index 94383dba20..16673edf68 100644 --- a/gnu/packages/bittorrent.scm +++ b/gnu/packages/bittorrent.scm @@ -2,6 +2,7 @@ ;;; Copyright © 2014 Taylan Ulrich Bayirli/Kammer <taylanbayirli@gmail.com> ;;; Copyright © 2014, 2015 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2016 Leo Famulari <leo@famulari.name> +;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il> ;;; ;;; This file is part of GNU Guix. ;;; @@ -25,20 +26,25 @@ #:use-module (guix build-system python) #:use-module (guix build-system glib-or-gtk) #:use-module ((guix licenses) #:prefix l:) - #:use-module (gnu packages libevent) + #:use-module (gnu packages adns) + #:use-module (gnu packages check) + #:use-module (gnu packages compression) #:use-module (gnu packages curl) - #:use-module (gnu packages pkg-config) + #:use-module (gnu packages cyrus-sasl) + #:use-module (gnu packages databases) #:use-module (gnu packages file) - #:use-module (gnu packages linux) - #:use-module (gnu packages compression) #:use-module (gnu packages glib) #:use-module (gnu packages gtk) - #:use-module (gnu packages check) + #:use-module (gnu packages libevent) + #:use-module (gnu packages linux) + #:use-module (gnu packages multiprecision) + #:use-module (gnu packages nettle) #:use-module (gnu packages ncurses) + #:use-module (gnu packages pkg-config) #:use-module (gnu packages python) - #:use-module (gnu packages curl) - #:use-module (gnu packages cyrus-sasl) - #:use-module (gnu packages tls)) + #:use-module (gnu packages ssh) + #:use-module (gnu packages tls) + #:use-module (gnu packages xml)) (define-public transmission (package @@ -192,3 +198,48 @@ XML-RPC over SCGI.") interface, for the Transmission BitTorrent daemon.") (home-page "https://github.com/fagga/transmission-remote-cli") (license l:gpl3+))) + +(define-public aria2 + (package + (name "aria2") + (version "1.19.3") + (source (origin + (method url-fetch) + (uri (string-append "https://github.com/tatsuhiro-t/aria2/" + "releases/download/release-" version "/" + name "-" version ".tar.xz")) + (sha256 + (base32 + "1qwr4al6wlh5f558r0mr1hvdnf7d8ss6qwqn2361k99phk1cdg3a")))) + (build-system gnu-build-system) + (arguments + `(#:configure-flags '("--enable-libaria2") + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'delete-socket-tests + (lambda _ + (substitute* "test/LpdMessageDispatcherTest.cc" + (("CPPUNIT_TEST_SUITE_REGISTRATION\\(LpdMessageDispatcherTest\\);" text) + (string-append "// " text))) + (substitute* "test/LpdMessageReceiverTest.cc" + (("CPPUNIT_TEST_SUITE_REGISTRATION\\(LpdMessageReceiverTest\\);" text) + (string-append "// " text)))))))) + (native-inputs + `(("pkg-config", pkg-config))) + (inputs + `(("c-ares" ,c-ares) + ("cppunit" ,cppunit) ; for the tests + ("gnutls" ,gnutls) + ("gmp" ,gmp) + ("libssh2" ,libssh2) + ("libxml2" ,libxml2) + ("nettle" ,nettle) + ("sqlite" ,sqlite) + ("zlib" ,zlib))) + (home-page "http://aria2.sourceforge.net/") + (synopsis "Utility for parallel downloading files") + (description + "Aria2 is a lightweight, multi-protocol & multi-source command-line +download utility. It supports HTTP/HTTPS, FTP, SFTP, BitTorrent and Metalink. +Aria2 can be manipulated via built-in JSON-RPC and XML-RPC interfaces.") + (license l:gpl2+))) diff --git a/gnu/packages/check.scm b/gnu/packages/check.scm index 3b7a243ba7..21ecd8413a 100644 --- a/gnu/packages/check.scm +++ b/gnu/packages/check.scm @@ -3,6 +3,7 @@ ;;; Copyright © 2015 Paul van der Walt <paul@denknerd.org> ;;; Copyright © 2015 Eric Bavier <bavier@member.fsf.org> ;;; Copyright © 2015 Andreas Enge <andreas@enge.fr> +;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il> ;;; ;;; This file is part of GNU Guix. ;;; @@ -26,6 +27,7 @@ #:use-module (guix packages) #:use-module (guix download) #:use-module (guix git-download) + #:use-module (guix build-system cmake) #:use-module (guix build-system gnu) #:use-module (guix build-system trivial)) @@ -147,3 +149,26 @@ supervised tests.") "Catch stands for C++ Automated Test Cases in Headers and is a multi-paradigm automated test framework for C++ and Objective-C.") (license boost1.0))) + +(define-public cmocka + (package + (name "cmocka") + (version "1.0.1") + (source (origin + (method url-fetch) + (uri (string-append "https://cmocka.org/files/1.0/cmocka-" + version ".tar.xz")) + (sha256 + (base32 + "0fvm6rdalqcxckbddch8ycdw6n2ckldblv117n09chi2l7bm0q5k")))) + (build-system cmake-build-system) + (arguments + `(#:tests? #f)) ; No test target + (home-page "https://cmocka.org/") + (synopsis "Unit testing framework for C") + (description "Cmocka is a unit testing framework for C with support for +mock objects. It only requires the standard C library, and works with +different compilers. Cmocka supports several different message output formats +like Test Anything Protocol, Subunit, xUnit XML or the original cmockery output +format.") + (license asl2.0))) diff --git a/gnu/packages/compression.scm b/gnu/packages/compression.scm index 7d22095df1..4a31bf79e2 100644 --- a/gnu/packages/compression.scm +++ b/gnu/packages/compression.scm @@ -8,6 +8,7 @@ ;;; Copyright © 2015 Leo Famulari <leo@famulari.name> ;;; Copyright © 2015 Jeff Mickey <j@codemac.net> ;;; Copyright © 2015, 2016 Efraim Flashner <efraim@flashner.co.il> +;;; Copyright © 2016 Ben Woodcroft <donttrustben@gmail.com> ;;; ;;; This file is part of GNU Guix. ;;; @@ -32,8 +33,10 @@ #:use-module (guix git-download) #:use-module (guix build-system gnu) #:use-module (guix build-system perl) + #:use-module (gnu packages backup) #:use-module (gnu packages base) #:use-module (gnu packages perl) + #:use-module (gnu packages pkg-config) #:use-module (gnu packages valgrind) #:use-module ((srfi srfi-1) #:select (last))) @@ -659,3 +662,29 @@ multiple processors and multiple cores when compressing data.") ;; Things under zopfli/ are under ASL2.0, but 4 files at the top-level, ;; written by Mark Adler, are under another non-copyleft license. (license license:asl2.0))) + +(define-public pixz + (package + (name "pixz") + (version "1.0.6") + (source (origin + (method url-fetch) + (uri (string-append + "https://github.com/vasi/pixz/releases/download/v" version + "/pixz-" version ".tar.xz")) + (sha256 + (base32 + "1s3j7zw6j5zi3fhdxg287ndr3wf6swac7z21mqd1pyiln530gi82")))) + (build-system gnu-build-system) + (native-inputs + `(("pkg-config" ,pkg-config) + ("libarchive" ,libarchive))) + (home-page "https://github.com/vasi/pixz") + (synopsis "Parallel indexing implementation of LZMA") + (description + "The existing XZ Utils provide great compression in the .xz file format, +but they produce just one big block of compressed data. Pixz instead produces +a collection of smaller blocks which makes random access to the original data +possible and can compress in parallel. This is especially useful for large +tarballs.") + (license license:bsd-2))) diff --git a/gnu/packages/enlightenment.scm b/gnu/packages/enlightenment.scm index 3fec6c6fc7..7fbbaac071 100644 --- a/gnu/packages/enlightenment.scm +++ b/gnu/packages/enlightenment.scm @@ -23,6 +23,7 @@ #:use-module (guix packages) #:use-module (guix download) #:use-module (guix build-system gnu) + #:use-module (guix build-system python) #:use-module (gnu packages) #:use-module (gnu packages bash) #:use-module (gnu packages compression) @@ -41,9 +42,10 @@ #:use-module (gnu packages linux) #:use-module (gnu packages lua) #:use-module (gnu packages pdf) - #:use-module (gnu packages pulseaudio) #:use-module (gnu packages photo) #:use-module (gnu packages pkg-config) + #:use-module (gnu packages pulseaudio) + #:use-module (gnu packages python) #:use-module (gnu packages tls) #:use-module (gnu packages valgrind) #:use-module (gnu packages video) @@ -306,3 +308,39 @@ file manager, wide range of configuration options, plugin system allowing to unload unused functionality, with support for touchscreen and suitable for embedded systems.") (license license:bsd-2))) + +(define-public python-efl + (package + (name "python-efl") + (version "1.16.0") + (source + (origin + (method url-fetch) + (uri (pypi-uri "python-efl" version)) + (sha256 + (base32 + "1ihay90agl2jx12m7jj8j1cspd7vsak1w7q95rhb6r2srkq0ppxk")))) + (build-system python-build-system) + (arguments + '(#:phases + (modify-phases %standard-phases + (add-before 'build 'set-flags + (lambda _ + (setenv "CFLAGS" + (string-append "-I" (assoc-ref %build-inputs "python-dbus") + "/include/dbus-1.0"))))))) + (native-inputs + `(("pkg-config" ,pkg-config))) + (inputs + `(("efl" ,efl) + ("elementary" ,elementary) + ("python-dbus" ,python-dbus))) + (home-page "https://www.enlightenment.org/") + (synopsis "Python bindings for EFL") + (description + "PYTHON-EFL are the python bindings for the whole Enlightenment Foundation +Libraries stack (eo, evas, ecore, edje, emotion, ethumb and elementary).") + (license license:lgpl3))) + +(define-public python2-efl + (package-with-python2 python-efl)) diff --git a/gnu/packages/ruby.scm b/gnu/packages/ruby.scm index 6e5553bd30..fa7c2f7691 100644 --- a/gnu/packages/ruby.scm +++ b/gnu/packages/ruby.scm @@ -1557,6 +1557,161 @@ functionality, making it easier to migrate test suites from bacon to minitest.") (home-page "https://github.com/seattlerb/minitest-bacon") (license license:expat))) +(define-public ruby-minitest-focus + (package + (name "ruby-minitest-focus") + (version "1.1.2") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "minitest-focus" version)) + (sha256 + (base32 + "1zgjslp6d7dzcn8smj595idymgd5j603p9g2jqkfgi28sqbhz6m0")))) + (build-system ruby-build-system) + (propagated-inputs + `(("ruby-minitest" ,ruby-minitest))) + (native-inputs + `(("ruby-hoe" ,ruby-hoe))) + (synopsis "Allows a few specific tests to be focused on") + (description + "@code{minitest-focus} gives the ability focus on a few tests with ease +without having to use command-line arguments. It introduces a @code{focus} +class method for use in testing classes, specifying that the next defined test +is to be run.") + (home-page "https://github.com/seattlerb/minitest-focus") + (license license:expat))) + +(define-public ruby-minitest-pretty-diff + ;; Use git reference because gem is out of date and does not contain testing + ;; script. There are no releases on GitHub. + (let ((commit "11f32e930f574225432f42e5e1ef6e7471efe572")) + (package + (name "ruby-minitest-pretty-diff") + (version (string-append "0.1-1." (string-take commit 8))) + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/adammck/minitest-pretty_diff.git") + (commit commit))) + (file-name (string-append name "-" version "-checkout")) + (sha256 + (base32 + "13y5dhmcckhzd83gj1nfwh41iykbjcm2w7y4pr6j6rpqa5as122r")))) + (build-system ruby-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (replace 'check + (lambda _ + (zero? (system* "script/test"))))))) + (native-inputs + `(("bundler" ,bundler) + ("ruby-turn" ,ruby-turn))) + (synopsis "Pretty-print hashes and arrays in MiniTest") + (description + "@code{minitest-pretty_diff} monkey-patches +@code{MiniTest::Assertions#mu_pp} to pretty-print hashes and arrays before +diffing them. This makes it easier to spot differences between nested +structures when tests fail.") + (home-page "https://github.com/adammck/minitest-pretty_diff") + (license license:expat)))) + +(define-public ruby-minitest-moar + (package + (name "ruby-minitest-moar") + (version "0.0.4") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "minitest-moar" version)) + (sha256 + (base32 + "0nb83blrsab92gcy6nfpw39njys7zisia8pw4igzzfzfl51cis0x")))) + (build-system ruby-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-before 'check 'clean-dependencies + (lambda _ + ;; Remove all gems defined in the Gemfile because these are not + ;; truly needed. + (substitute* "Gemfile" + (("gem .*") "")) + ;; Remove byebug as not needed to run tests. + (substitute* "test/test_helper.rb" + (("require 'byebug'") "")) + #t))))) + (native-inputs + `(("bundler" ,bundler) + ("ruby-minitest" ,ruby-minitest))) + (synopsis "Extra features and changes to MiniTest") + (description "@code{MiniTest Moar} add some additional features and +changes some default behaviours in MiniTest. For instance, Moar replaces the +MiniTest @code{Object#stub} with a global @code{stub} method.") + (home-page "https://github.com/dockyard/minitest-moar") + (license license:expat))) + +(define-public ruby-minitest-bonus-assertions + (package + (name "ruby-minitest-bonus-assertions") + (version "2.0") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "minitest-bonus-assertions" version)) + (sha256 + (base32 + "11nrd32kwy61ndg9csk7l1ifya79ghrrv3vsrxj57k50m7na6jkm")))) + (build-system ruby-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-before 'check 'clean-dependencies + (lambda _ + ;; Remove unneeded require statement that would entail another + ;; dependency. + (substitute* "test/minitest_config.rb" + (("require 'minitest/bisect'") "")) + #t))))) + (native-inputs + `(("ruby-hoe" ,ruby-hoe) + ("ruby-minitest-pretty-diff" ,ruby-minitest-pretty-diff) + ("ruby-minitest-focus" ,ruby-minitest-focus) + ("ruby-minitest-moar" ,ruby-minitest-moar))) + (synopsis "Bonus assertions for @code{Minitest}") + (description + "Minitest bonus assertions provides extra MiniTest assertions. For +instance, it provides @code{assert_true}, @code{assert_false} and +@code{assert_set_equal}.") + (home-page "https://github.com/halostatue/minitest-bonus-assertions") + (license license:expat))) + +(define-public ruby-minitest-rg + (package + (name "ruby-minitest-rg") + (version "5.2.0") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "minitest-rg" version)) + (sha256 + (base32 + "0sq509ax1x62rd0w10b0hcydcxyk5bxxr3fwrgxv02r8drq2r354")))) + (build-system ruby-build-system) + (arguments + ;; Some tests fail even outside Guix, so disable tests. + ;; https://github.com/blowmage/minitest-rg/issues/12 + ;; https://github.com/blowmage/minitest-rg/pull/13 + `(#:tests? #f)) + (propagated-inputs + `(("ruby-minitest" ,ruby-minitest))) + (synopsis "Coloured output for Minitest") + (description + "@code{minitest-rg} changes the colour of the output from Minitest.") + (home-page "http://blowmage.com/minitest-rg") + (license license:expat))) + (define-public ruby-daemons (package (name "ruby-daemons") @@ -2943,6 +3098,369 @@ used to create both network servers and clients.") (home-page "http://rubyeventmachine.com") (license (list license:ruby license:gpl3)))) ; GPLv3 only AFAICT +(define-public ruby-turn + (package + (name "ruby-turn") + (version "0.9.7") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "turn" version)) + (sha256 + (base32 + "1691rc2sq04cw8mxxh340k2j04ll90kwgcy8ddrp6rligmfrf8fw")))) + (build-system ruby-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + ;; Tests fail because turn changes its environment so can no longer + ;; find test/unit. Instead simply test if the executable runs + ;; without issue. + (replace 'check + (lambda _ + (zero? (system* "ruby" "-Ilib" "bin/turn" "-h"))))))) + (propagated-inputs + `(("ruby-ansi" ,ruby-ansi) + ("ruby-minitest" ,ruby-minitest-4))) + (synopsis "Alternate set of alternative runners for MiniTest") + (description + "TURN provides a set of alternative runners for MiniTest which are both +colorful and informative. TURN displays each test on a separate line with +failures being displayed immediately instead of at the end of the tests. Note +that TURN is no longer being maintained.") + (home-page "http://rubygems.org/gems/turn") + (license license:expat))) + +(define-public ruby-mime-types-data + (package + (name "ruby-mime-types-data") + (version "3.2015.1120") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "mime-types-data" version)) + (sha256 + (base32 + "04fzvy02w8d0rrsg8avncn7h58pvwdxj82aps54srb3sam2dkhic")))) + (build-system ruby-build-system) + (native-inputs + `(("ruby-hoe" ,ruby-hoe))) + (synopsis "Registry for information about MIME media type definitions") + (description + "@code{mime-types-data} provides a registry for information about +Multipurpose Internet Mail Extensions (MIME) media type definitions. It can +be used with the Ruby mime-types library or other software to determine +defined filename extensions for MIME types, or to use filename extensions to +look up the likely MIME type definitions.") + (home-page "https://github.com/mime-types/mime-types-data/") + (license license:expat))) + +(define-public ruby-mime-types + (package + (name "ruby-mime-types") + (version "3.0") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "mime-types" version)) + (sha256 + (base32 + "1snjc38a9vqvy8j41xld1i1byq9prbl955pbjw7dxqcfcirqlzra")))) + (build-system ruby-build-system) + (propagated-inputs + `(("ruby-mime-types-data" ,ruby-mime-types-data))) + (native-inputs + `(("ruby-hoe" ,ruby-hoe) + ("ruby-fivemat" ,ruby-fivemat) + ("ruby-minitest-focus" ,ruby-minitest-focus) + ("ruby-minitest-rg" ,ruby-minitest-rg) + ("ruby-minitest-bonus-assertions" ,ruby-minitest-bonus-assertions))) + (synopsis "Library and registry for MIME content type definitions") + (description "The mime-types library provides a library and registry for +information about Multipurpose Internet Mail Extensions (MIME) content type +definitions. It can be used to determine defined filename extensions for MIME +types, or to use filename extensions to look up the likely MIME type +definitions.") + (home-page "https://github.com/mime-types/ruby-mime-types") + (license license:expat))) + +(define-public ruby-fivemat + (package + (name "ruby-fivemat") + (version "1.3.2") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "fivemat" version)) + (sha256 + (base32 + "1gvw6g4yc96l2pcyvigahyfsjxpdjx21iiwzvf965zippchdh6gk")))) + (build-system ruby-build-system) + (arguments + `(#:tests? #f)) ; no tests + (synopsis "Each test file given its own line of dots") + (description + "Fivemat is a MiniTest/RSpec/Cucumber formatter that gives each test file +its own line of dots during testing. It aims to provide test output that is +neither too verbose nor too minimal.") + (home-page "https://github.com/tpope/fivemat") + (license license:expat))) + +(define-public ruby-sqlite3 + (package + (name "ruby-sqlite3") + (version "1.3.11") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "sqlite3" version)) + (sha256 + (base32 + "19r06wglnm6479ffj9dl0fa4p5j2wi6dj7k6k3d0rbx7036cv3ny")))) + (build-system ruby-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-before 'check 'add-gemtest-file + ;; This file exists in the repository but is not distributed. + (lambda _ (zero? (system* "touch" ".gemtest"))))))) + (inputs + `(("sqlite" ,sqlite))) + (native-inputs + `(("ruby-hoe" ,ruby-hoe) + ("ruby-rake-compiler" ,ruby-rake-compiler) + ("ruby-mini-portile" ,ruby-mini-portile))) + (synopsis "Interface with SQLite3 databases") + (description + "This module allows Ruby programs to interface with the SQLite3 database +engine.") + (home-page + "https://github.com/sparklemotion/sqlite3-ruby") + (license license:bsd-3))) + +(define-public ruby-shoulda-context + (package + (name "ruby-shoulda-context") + (version "1.2.1") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "shoulda-context" version)) + (sha256 + (base32 + "06wv2ika5zrbxn0m3qxwk0zkbspxids3zmlq3xxays5qmvl1qb55")))) + (build-system ruby-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (replace 'check + (lambda _ + ;; Do not run tests to avoid circular dependence with rails. + ;; Instead just import the library to test. + (zero? (system* "ruby" "-Ilib" "-r" "shoulda-context"))))))) + (synopsis "Test::Unit context framework extracted from Shoulda") + (description + "@code{shoulda-context} is the context framework extracted from Shoulda. +Instead of writing Ruby methods with lots_of_underscores, shoulda-context adds +context, setup, and should blocks combine to produce natural test method +names.") + (home-page "https://github.com/thoughtbot/shoulda-context") + (license license:expat))) + +(define-public ruby-shoulda-matchers + (package + (name "ruby-shoulda-matchers") + (version "3.0.1") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "shoulda-matchers" version)) + (sha256 + (base32 + "1agabvb8i39mjrp3kb78nvhl41xk1i258hdwdlj0fm8nj9yzn1jb")))) + (build-system ruby-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-before 'build 'fix-import + (lambda _ + ;; A presumed bug reported upstream at + ;; https://github.com/thoughtbot/shoulda-matchers/pull/871 + (substitute* (string-append "lib/shoulda/matchers/active_model/" + "validate_inclusion_of_matcher.rb") + (("^require 'bigdecimal'") + "require 'bigdecimal'; require 'date'")))) + (replace 'check + (lambda _ + ;; Do not run tests to avoid circular dependence with rails. Instead + ;; just import the library to test. + (zero? (system* "ruby" "-Ilib" "-r" "shoulda-matchers"))))))) + (propagated-inputs + `(("ruby-activesupport" ,ruby-activesupport))) + (synopsis "Collection of testing matchers extracted from Shoulda") + (description + "Shoulda Matchers provides RSpec- and Minitest-compatible one-liners that +test common Rails functionality. These tests would otherwise be much longer, +more complex, and error-prone.") + (home-page "https://github.com/thoughtbot/shoulda-matchers") + (license license:expat))) + +(define-public ruby-shoulda-matchers-2 + (package + (inherit ruby-shoulda-matchers) + (version "2.8.0") + (source (origin + (method url-fetch) + (uri (rubygems-uri "shoulda-matchers" version)) + (sha256 + (base32 + "0d3ryqcsk1n9y35bx5wxnqbgw4m8b3c79isazdjnnbg8crdp72d0")))))) + +(define-public ruby-shoulda + (package + (name "ruby-shoulda") + (version "3.5.0") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "shoulda" version)) + (sha256 + (base32 + "0csmf15a7mcinfq54lfa4arp0f4b2jmwva55m0p94hdf3pxnjymy")))) + (build-system ruby-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (replace 'check + ;; Don't run tests to avoid circular dependence with rails. Instead + ;; just import the library to test. + (lambda _ (zero? (system* "ruby" "-Ilib" "-r" "shoulda"))))))) + (propagated-inputs + `(("ruby-shoulda-context" ,ruby-shoulda-context) + ("ruby-shoulda-matchers" ,ruby-shoulda-matchers-2))) + (synopsis "Context framework and matchers for testing") + (description + "@code{shoulda} is a meta-package combining @code{shoulda-context} and +@code{shoulda-matchers} providing tools for writing tests.") + (home-page "https://github.com/thoughtbot/shoulda") + (license license:expat))) + +(define-public ruby-unf + (package + (name "ruby-unf") + (version "0.1.4") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "unf" version)) + (sha256 + (base32 + "0bh2cf73i2ffh4fcpdn9ir4mhq8zi50ik0zqa1braahzadx536a9")))) + (build-system ruby-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-before 'check 'add-dependency-to-bundler + (lambda _ + ;; test-unit is required but not provided by the bundler + ;; environment. This is fixed in the upstream repository but fix + ;; has not been released. + (substitute* "Gemfile" + (("^gemspec") "gem 'test-unit'\ngemspec")) + #t))))) + (propagated-inputs + `(("ruby-unf-ext" ,ruby-unf-ext))) + (native-inputs + `(("ruby-shoulda" ,ruby-shoulda) + ("bundler" ,bundler) + ("ruby-test-unit" ,ruby-test-unit))) + (synopsis "Unicode Normalization Form support to Ruby and JRuby") + (description + "@code{ruby-unf} is a wrapper library to bring Unicode Normalization Form +support to both Ruby and JRuby. It uses @code{unf_ext} on CRuby and +@code{java.text.Normalizer} on JRuby.") + (home-page "https://github.com/knu/ruby-unf") + (license license:bsd-2))) + +(define-public ruby-domain-name + (package + (name "ruby-domain-name") + (version "0.5.25") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "domain_name" version)) + (sha256 + (base32 + "16qvfrmcwlzz073aas55mpw2nhyhjcn96s524w0g1wlml242hjav")))) + (build-system ruby-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-before 'check 'fix-versions + (lambda _ + ;; Fix NameError that appears to already be fixed upstream. + (substitute* "Rakefile" + (("DomainName::VERSION") + "Bundler::GemHelper.gemspec.version")) + ;; Loosen unnecessarily strict test-unit version specification. + (substitute* "domain_name.gemspec" + (("<test-unit>, \\[\\\"~> 2.5.5") "<test-unit>, [\">0")) + #t))))) + (propagated-inputs + `(("ruby-unf" ,ruby-unf))) + (native-inputs + `(("ruby-shoulda" ,ruby-shoulda) + ("bundler" ,bundler) + ("ruby-test-unit" ,ruby-test-unit))) + (synopsis "Domain name manipulation library") + (description + "@code{domain_name} is a Domain name manipulation library. It parses a +domain name ready for extracting the registered domain and TLD (Top Level +Domain). It can also be used for cookie domain validation based on the Public +Suffix List.") + (home-page "https://github.com/knu/ruby-domain_name") + (license license:bsd-2))) + +(define-public ruby-http-cookie + (package + (name "ruby-http-cookie") + (version "1.0.2") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "http-cookie" version)) + (sha256 + (base32 + "0cz2fdkngs3jc5w32a6xcl511hy03a7zdiy988jk1sf3bf5v3hdw")))) + (build-system ruby-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (add-before 'check 'add-dependency-to-bundler + (lambda _ + ;; Fix NameError + (substitute* "Rakefile" + (("HTTP::Cookie::VERSION") + "Bundler::GemHelper.gemspec.version")) + #t))))) + (propagated-inputs + `(("ruby-domain-name" ,ruby-domain-name))) + (native-inputs + `(("rubysimplecov" ,ruby-simplecov) + ("bundler" ,bundler) + ("ruby-sqlite3" ,ruby-sqlite3) + ("ruby-test-unit" ,ruby-test-unit))) + (synopsis "Handle HTTP Cookies based on RFC 6265") + (description + "@code{HTTP::Cookie} is a Ruby library to handle HTTP Cookies based on +RFC 6265. It has been designed with security, standards compliance and +compatibility in mind, to behave just the same as today's major web browsers. +It has built-in support for the legacy @code{cookies.txt} and +@code{cookies.sqlite} formats of Mozilla Firefox.") + (home-page "https://github.com/sparklemotion/http-cookie") + (license license:expat))) + (define-public ruby-ansi (package (name "ruby-ansi") @@ -3042,3 +3560,326 @@ to the @code{STDOUT} and @code{STDERR} streams are reported, giving extra detail to ease debugging.") (home-page "http://github.com/wwood/bioruby-commandeer") (license license:expat))) + +(define-public ruby-rubytest + (package + (name "ruby-rubytest") + (version "0.8.1") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "rubytest" version)) + (sha256 + (base32 + "19jydsdnkl81i9dhdcr4dc34j0ilm68ff2ngnka1hi38xiw4p5qz")))) + (build-system ruby-build-system) + (arguments + ;; Disable regular testing to break the cycle rubytest, qed, brass, + ;; rubytest, as well as the cycle rubytest, qed, ansi, rubytest. Instead + ;; simply test that the library can be require'd. + `(#:phases + (modify-phases %standard-phases + (replace 'check + (lambda _ + (zero? (system* "ruby" "-Ilib" "-r" "rubytest"))))))) + (propagated-inputs + `(("ruby-ansi" ,ruby-ansi))) + (synopsis "Universal test harness for Ruby") + (description + "Rubytest is a testing meta-framework for Ruby. It can handle any +compliant test framework and can run tests from multiple frameworks in a +single pass.") + (home-page "http://rubyworks.github.io/rubytest") + (license license:bsd-2))) + +(define-public ruby-brass + (package + (name "ruby-brass") + (version "1.2.1") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "brass" version)) + (sha256 + (base32 + "154lp8rp1vmg60ri1j4cb8hqlw37z7bn575h899v8hzxwi11sxka")))) + (build-system ruby-build-system) + (arguments + ;; Disable tests to break the cycle brass, lemon, ae, qed, brass. + ;; Instead simply test that the library can be require'd. + `(#:phases + (modify-phases %standard-phases + (replace 'check + (lambda _ + (zero? (system* "ruby" "-Ilib" "-r" "brass"))))))) + (synopsis "Basic foundational assertions framework") + (description + "BRASS (Bare-Metal Ruby Assertion System Standard) is a basic +foundational assertions framework for other assertion and test frameworks to +make use of.") + (home-page "http://rubyworks.github.io/brass") + (license license:bsd-2))) + +(define-public ruby-qed + (package + (name "ruby-qed") + (version "2.9.2") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "qed" version)) + (sha256 + (base32 + "03h4lmlxpcya8j7s2cnyscqlx8v3xl1xgsw5y1wk1scxcgz2vbmr")))) + (build-system ruby-build-system) + (arguments + ;; Disable testing to break the cycle qed, ansi, qed, among others. + ;; Instead simply test that the executable runs using --copyright. + `(#:phases + (modify-phases %standard-phases + (replace 'check + (lambda _ + (zero? (system* "ruby" "-Ilib" "bin/qed" "--copyright"))))))) + (propagated-inputs + `(("ruby-ansi" ,ruby-ansi) + ("ruby-brass" ,ruby-brass))) + (synopsis "Test framework utilizing literate programming techniques") + (description + "@dfn{Quality Ensured Demonstrations} (QED) is a test framework for +@dfn{Test Driven Development} (TDD) and @dfn{Behaviour Driven +Development} (BDD) utilizing Literate Programming techniques. QED sits +somewhere between lower-level testing tools like @code{Test::Unit} and +requirement specifications systems like Cucumber.") + (home-page "http://rubyworks.github.io/qed") + (license license:bsd-2))) + +(define-public ruby-ae + (package + (name "ruby-ae") + (version "1.8.2") + (source + (origin + (method url-fetch) + ;; Fetch from github so tests are included. + (uri (string-append + "https://github.com/rubyworks/ae/archive/" + version ".tar.gz")) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "147jmkx54x7asy2d8m4dyrhhf4hdx4galpnhwzai030y3cdsfrrl")))) + (build-system ruby-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (replace 'check + (lambda _ (zero? (system* "qed"))))))) + (propagated-inputs + `(("ruby-ansi" ,ruby-ansi))) + (native-inputs + `(("ruby-qed" ,ruby-qed))) + (synopsis "Assertions library") + (description + "Assertive Expressive (AE) is an assertions library specifically designed +for reuse by other test frameworks.") + (home-page "http://rubyworks.github.io/ae") + (license license:bsd-2))) + +(define-public ruby-lemon + (package + (name "ruby-lemon") + (version "0.9.1") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "lemon" version)) + (sha256 + (base32 + "0gqhpgjavgpvx23rqpfqcv3d5bs8gc7lr9yvj8kxgp7mfbdc2jcm")))) + (build-system ruby-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (replace 'check (lambda _ (zero? (system* "qed"))))))) + (propagated-inputs + `(("ruby-ae" ,ruby-ae) + ("ruby-ansi" ,ruby-ansi) + ("ruby-rubytest" ,ruby-rubytest))) + (native-inputs + `(("ruby-qed" ,ruby-qed))) + (synopsis "Test framework correlating code structure and test unit") + (description + "Lemon is a unit testing framework that enforces highly formal +case-to-class and unit-to-method test construction. This enforcement can help +focus concern on individual units of behavior.") + (home-page "http://rubyworks.github.io/lemon") + (license license:bsd-2))) + +(define-public ruby-rubytest-cli + (package + (name "ruby-rubytest-cli") + (version "0.2.0") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "rubytest-cli" version)) + (sha256 + (base32 + "0n7hv4k1ba4fm3i98c6ydbsqhkxgbp52mhi70ba1x3mqzfvk438p")))) + (build-system ruby-build-system) + (arguments + `(#:tests? #f)) ; no tests + (propagated-inputs + `(("ruby-ansi" ,ruby-ansi) + ("ruby-rubytest" ,ruby-rubytest))) + (synopsis "Command-line interface for rubytest") + (description + "Rubytest CLI is a command-line interface for running tests for +Rubytest-based test frameworks. It provides the @code{rubytest} executable.") + (home-page "http://rubyworks.github.io/rubytest-cli") + (license license:bsd-2))) + +(define-public ruby-hashery + (package + (name "ruby-hashery") + (version "2.1.1") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "hashery" version)) + (sha256 + (base32 + "0xawbljsjarl9l7700bka672ixwznzwih4s9i38p1y9mp8hyx54g")))) + (build-system ruby-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (replace 'check + (lambda _ + (and (zero? (system* "qed")) + (zero? (system* "rubytest" "-Ilib" "-Itest" "test/")))))))) + (native-inputs + `(("ruby-rubytest-cli" ,ruby-rubytest-cli) + ("ruby-qed" ,ruby-qed) + ("ruby-lemon" ,ruby-lemon))) + (synopsis "Hash-like classes with extra features") + (description + "The Hashery is a tight collection of @code{Hash}-like classes. +Included are the auto-sorting @code{Dictionary} class, the efficient +@code{LRUHash}, the flexible @code{OpenHash} and the convenient +@code{KeyHash}. Nearly every class is a subclass of the @code{CRUDHash} which +defines a CRUD (Create, Read, Update and Delete) model on top of Ruby's +standard @code{Hash} making it possible to subclass and augment to fit any +specific use case.") + (home-page "http://rubyworks.github.io/hashery") + (license license:bsd-2))) + +(define-public ruby-rc4 + (package + (name "ruby-rc4") + (version "0.1.5") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "ruby-rc4" version)) + (sha256 + (base32 + "00vci475258mmbvsdqkmqadlwn6gj9m01sp7b5a3zd90knil1k00")))) + (build-system ruby-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (replace 'check + (lambda _ + (zero? (system* "rspec" "spec/rc4_spec.rb"))))))) + (native-inputs + `(("ruby-rspec" ,ruby-rspec-2))) + (synopsis "Implementation of the RC4 algorithm") + (description + "RubyRC4 is a pure Ruby implementation of the RC4 algorithm.") + (home-page "https://github.com/caiges/Ruby-RC4") + (license license:expat))) + +(define-public ruby-afm + (package + (name "ruby-afm") + (version "0.2.2") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "afm" version)) + (sha256 + (base32 + "06kj9hgd0z8pj27bxp2diwqh6fv7qhwwm17z64rhdc4sfn76jgn8")))) + (build-system ruby-build-system) + (native-inputs + `(("bundler" ,bundler))) + (synopsis "Read Adobe Font Metrics (afm) files") + (description + "This library provides methods to read @dfn{Adobe Font Metrics} (afm) +files and use the data therein.") + (home-page "http://github.com/halfbyte/afm") + (license license:expat))) + +(define-public ruby-ascii85 + (package + (name "ruby-ascii85") + (version "1.0.2") + (source + (origin + (method url-fetch) + (uri (rubygems-uri "Ascii85" version)) + (sha256 + (base32 + "0j95sbxd18kc8rhcnvl1w37kflqpax1r12h1x47gh4xxn3mz4m7q")))) + (build-system ruby-build-system) + (native-inputs + `(("bundler" ,bundler))) + (synopsis "Encode and decode Ascii85 binary-to-text encoding") + (description + "This library provides methods to encode and decode Ascii85 +binary-to-text encoding. The main modern use of Ascii85 is in PostScript and +@dfn{Portable Document Format} (PDF) file formats.") + (home-page "https://github.com/datawraith/ascii85gem") + (license license:expat))) + +(define-public ruby-ttfunk + (package + (name "ruby-ttfunk") + (version "1.4.0") + (source + (origin + (method url-fetch) + ;; fetch from github as the gem does not contain testing code + (uri (string-append + "https://github.com/prawnpdf/ttfunk/archive/" + version ".tar.gz")) + (file-name (string-append name "-" version ".tar.gz")) + (sha256 + (base32 + "1izq84pnm9niyvkzp8k0vl232q9zj41hwmp9na9fzycfh1pbnsl6")))) + (build-system ruby-build-system) + (arguments + `(#:test-target "spec" + #:phases + (modify-phases %standard-phases + (add-before 'check 'remove-rubocop + (lambda _ + ;; remove rubocop as a dependency as not needed for testing + (substitute* "ttfunk.gemspec" + (("spec.add_development_dependency\\('rubocop'.*") "")) + (substitute* "Rakefile" + (("require 'rubocop/rake_task'") "") + (("Rubocop::RakeTask.new") "")) + #t))))) + (native-inputs + `(("ruby-rspec" ,ruby-rspec) + ("bundler" ,bundler))) + (synopsis "Font metrics parser for the Prawn PDF generator") + (description + "TTFunk is a TrueType font parser written in pure Ruby. It is used as +part of the Prawn PDF generator.") + (home-page "https://github.com/prawnpdf/ttfunk") + ;; From the README: "Matz's terms for Ruby, GPLv2, or GPLv3. See LICENSE + ;; for details." + (license (list license:gpl2 license:gpl3 license:ruby)))) diff --git a/gnu/packages/tls.scm b/gnu/packages/tls.scm index be48b25c9a..a22991c906 100644 --- a/gnu/packages/tls.scm +++ b/gnu/packages/tls.scm @@ -303,7 +303,7 @@ required structures.") (define-public libressl (package (name "libressl") - (version "2.2.0") + (version "2.2.5") (source (origin (method url-fetch) @@ -311,7 +311,7 @@ required structures.") "http://ftp.openbsd.org/pub/OpenBSD/LibreSSL/libressl-" version ".tar.gz")) (sha256 (base32 - "0h1haqb4y39p1zihwvnr1ib0zfq5bcqfnbj5jm9l4j2xibrxi44n")))) + "0jwidi7fafcdh5qml72dx0ad0kfsk94qxzm29i7wd3cx8v8dxjp3")))) (build-system gnu-build-system) (native-search-paths ;; FIXME: These two variables must designate a single file or directory diff --git a/gnu/packages/web.scm b/gnu/packages/web.scm index 02317d2fef..a4f4c021e4 100644 --- a/gnu/packages/web.scm +++ b/gnu/packages/web.scm @@ -100,14 +100,14 @@ and its related documentation.") (define-public nginx (package (name "nginx") - (version "1.8.0") + (version "1.8.1") (source (origin (method url-fetch) (uri (string-append "http://nginx.org/download/nginx-" version ".tar.gz")) (sha256 (base32 - "1mgkkmmwkhmpn68sdvbd73ssv6lpqhh864fsyvc1ij4hk4is3k13")))) + "1dwpyw4pvhj68vxramqxm8f79pqz9lrm8mvifbn49h3615ikqjwg")))) (build-system gnu-build-system) (inputs `(("pcre" ,pcre) ("openssl" ,openssl) diff --git a/gnu/services/base.scm b/gnu/services/base.scm index 25143c80a6..0399c0049d 100644 --- a/gnu/services/base.scm +++ b/gnu/services/base.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2013, 2014, 2015 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2013, 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2015 Alex Kost <alezost@gmail.com> ;;; Copyright © 2015 Mark H Weaver <mhw@netris.org> ;;; Copyright © 2015 Sou Bunnbu <iyzsong@gmail.com> @@ -946,7 +946,9 @@ failed to register hydra.gnu.org public key: ~a~%" status)))))))) (extensions (list (service-extension dmd-root-service-type guix-dmd-service) (service-extension account-service-type guix-accounts) - (service-extension activation-service-type guix-activation))))) + (service-extension activation-service-type guix-activation) + (service-extension profile-service-type + (compose list guix-configuration-guix)))))) (define* (guix-service #:optional (config %default-guix-configuration)) "Return a service that runs the Guix build daemon according to diff --git a/gnu/services/dmd.scm b/gnu/services/dmd.scm index 545087acc9..fb3d3326f8 100644 --- a/gnu/services/dmd.scm +++ b/gnu/services/dmd.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2013, 2014, 2015 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2013, 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org> ;;; ;;; This file is part of GNU Guix. ;;; @@ -88,7 +88,9 @@ ;; list of services provided by the extensions. (compose concatenate) (extend append) - (extensions (list (service-extension boot-service-type dmd-boot-gexp))))) + (extensions (list (service-extension boot-service-type dmd-boot-gexp) + (service-extension profile-service-type + (const (list dmd))))))) (define %dmd-root-service ;; The root dmd service, aka. PID 1. Its parameter is a list of diff --git a/gnu/system.scm b/gnu/system.scm index edcfaf66fe..024518445d 100644 --- a/gnu/system.scm +++ b/gnu/system.scm @@ -353,7 +353,6 @@ explicitly appear in OS." ;; Default set of packages globally visible. It should include anything ;; required for basic administrator tasks. (cons* procps psmisc which less zile nano - (@ (gnu packages admin) dmd) guix lsof ;for Guix's 'list-runtime-roots' pciutils usbutils util-linux inetutils isc-dhcp |