Merge branch 'master' into core-updates

This commit is contained in:
Ludovic Courtès 2017-02-10 17:40:25 +01:00
commit 768f0ac9dd
No known key found for this signature in database
GPG Key ID: 090B11993D9AEBB5
92 changed files with 3483 additions and 759 deletions

1
.gitignore vendored
View File

@ -11,6 +11,7 @@
/INSTALL
/aclocal.m4
/autom4te.cache
/build-aux/ar-lib
/build-aux/compile
/build-aux/config.guess
/build-aux/config.rpath

View File

@ -64,6 +64,7 @@ MODULES = \
guix/build-system/ant.scm \
guix/build-system/cargo.scm \
guix/build-system/cmake.scm \
guix/build-system/dub.scm \
guix/build-system/emacs.scm \
guix/build-system/asdf.scm \
guix/build-system/glib-or-gtk.scm \
@ -88,6 +89,7 @@ MODULES = \
guix/build/download.scm \
guix/build/cargo-build-system.scm \
guix/build/cmake-build-system.scm \
guix/build/dub-build-system.scm \
guix/build/emacs-build-system.scm \
guix/build/asdf-build-system.scm \
guix/build/git.scm \
@ -126,6 +128,7 @@ MODULES = \
guix/import/cabal.scm \
guix/import/cran.scm \
guix/import/hackage.scm \
guix/import/stackage.scm \
guix/import/elpa.scm \
guix/scripts.scm \
guix/scripts/download.scm \
@ -147,6 +150,7 @@ MODULES = \
guix/scripts/import/gnu.scm \
guix/scripts/import/nix.scm \
guix/scripts/import/hackage.scm \
guix/scripts/import/stackage.scm \
guix/scripts/import/elpa.scm \
guix/scripts/environment.scm \
guix/scripts/publish.scm \

View File

@ -5,6 +5,7 @@ AC_MSG_RESULT([$guix_build_daemon])
dnl C++ environment. This macro must be used unconditionnaly.
AC_PROG_CXX
AM_PROG_AR
AC_LANG([C++])
if test "x$guix_build_daemon" = "xyes"; then

View File

@ -236,6 +236,15 @@ dnl Emacs (optional), for 'etc/indent-package.el'.
AC_PATH_PROG([EMACS], [emacs], [/usr/bin/emacs])
AC_SUBST([EMACS])
case "$storedir" in
/gnu/store)
;;
*)
AC_MSG_WARN([Using a store directory other than '/gnu/store' will prevent you])
AC_MSG_WARN([from downloading substitutes from gnu.org.])
;;
esac
AC_CONFIG_FILES([Makefile
po/guix/Makefile.in
po/packages/Makefile.in

View File

@ -31,7 +31,8 @@ Copyright @copyright{} 2016 Jan Nieuwenhuizen@*
Copyright @copyright{} 2016 Julien Lepiller@*
Copyright @copyright{} 2016 Alex ter Weele@*
Copyright @copyright{} 2017 Clément Lassieur@*
Copyright @copyright{} 2017 Mathieu Othacehe
Copyright @copyright{} 2017 Mathieu Othacehe@*
Copyright @copyright{} 2017 Federico Beffa
Permission is granted to copy, distribute and/or modify this document
under the terms of the GNU Free Documentation License, Version 1.3 or
@ -3437,6 +3438,16 @@ Which Haskell compiler is used can be specified with the @code{#:haskell}
parameter which defaults to @code{ghc}.
@end defvr
@defvr {Scheme Variable} dub-build-system
This variable is exported by @code{(guix build-system dub)}. It
implements the Dub build procedure used by D packages, which
involves running @code{dub build} and @code{dub run}.
Installation is done by copying the files manually.
Which D compiler is used can be specified with the @code{#:ldc}
parameter which defaults to @code{ldc}.
@end defvr
@defvr {Scheme Variable} emacs-build-system
This variable is exported by @code{(guix build-system emacs)}. It
implements an installation procedure similar to the packaging system
@ -5340,6 +5351,34 @@ package name by an at-sign and a version number as in the following example:
guix import hackage mtl@@2.1.3.1
@end example
@item stackage
@cindex stackage
The @code{stackage} importer is a wrapper around the @code{hackage} one.
It takes a package name, looks up the package version included in a
long-term support (LTS) @uref{https://www.stackage.org, Stackage}
release and uses the @code{hackage} importer to retrieve its metadata.
Note that it is up to you to select an LTS release compatible with the
GHC compiler used by Guix.
Specific command-line options are:
@table @code
@item --no-test-dependencies
@itemx -t
Do not include dependencies required only by the test suites.
@item --lts-version=@var{version}
@itemx -r @var{version}
@var{version} is the desired LTS release version. If omitted the latest
release is used.
@end table
The command below imports metadata for the @code{HTTP} Haskell package
included in the LTS Stackage release version 7.18:
@example
guix import stackage --lts-version=7.18 HTTP
@end example
@item elpa
@cindex elpa
Import metadata from an Emacs Lisp Package Archive (ELPA) package
@ -5504,6 +5543,8 @@ the updater for @uref{https://rubygems.org, RubyGems} packages.
the updater for @uref{https://github.com, GitHub} packages.
@item hackage
the updater for @uref{https://hackage.haskell.org, Hackage} packages.
@item stackage
the updater for @uref{https://www.stackage.org, Stackage} packages.
@item crate
the updater for @uref{https://crates.io, Crates} packages.
@end table
@ -8272,6 +8313,50 @@ this:
@end example
@end defvr
@defvr {Scheme Variable} special-files-service-type
This is the service that sets up ``special files'' such as
@file{/bin/sh}; an instance of it is part of @code{%base-services}.
The value associated with @code{special-files-service-type} services
must be a list of tuples where the first element is the ``special file''
and the second element is its target. By default it is:
@cindex @file{/bin/sh}
@cindex @file{sh}, in @file{/bin}
@example
`(("/bin/sh" ,(file-append @var{bash} "/bin/sh")))
@end example
@cindex @file{/usr/bin/env}
@cindex @file{env}, in @file{/usr/bin}
If you want to add, say, @code{/usr/bin/env} to your system, you can
change it to:
@example
`(("/bin/sh" ,(file-append @var{bash} "/bin/sh"))
("/usr/bin/env" ,(file-append @var{coreutils} "/bin/env")))
@end example
Since this is part of @code{%base-services}, you can use
@code{modify-services} to customize the set of special files
(@pxref{Service Reference, @code{modify-services}}). But the simple way
to add a special file is @i{via} the @code{extra-special-file} procedure
(see below.)
@end defvr
@deffn {Scheme Procedure} extra-special-file @var{file} @var{target}
Use @var{target} as the ``special file'' @var{file}.
For example, adding the following lines to the @code{services} field of
your operating system declaration leads to a @file{/usr/bin/env}
symlink:
@example
(extra-special-file "/usr/bin/env"
(file-append coreutils "/bin/env"))
@end example
@end deffn
@deffn {Scheme Procedure} host-name-service @var{name}
Return a service that sets the host name to @var{name}.
@end deffn

View File

@ -1,5 +1,5 @@
# GNU Guix --- Functional package management for GNU
# Copyright © 2015, 2016 Ludovic Courtès <ludo@gnu.org>
# Copyright © 2015, 2016, 2017 Ludovic Courtès <ludo@gnu.org>
#
# This file is part of GNU Guix.
#
@ -26,7 +26,7 @@ _guix_complete_subcommand ()
local subcommands="$(${COMP_WORDS[0]} $command --help 2> /dev/null \
| grep '^ [a-z]' \
| sed -e's/^ \+\([a-z-]\+\).*$/\1/g')"
COMPREPLY=($(compgen -W "$subcommands" -- "${COMP_WORDS[${#COMP_WORDS[*]} - 1]}"))
COMPREPLY=($(compgen -W "$subcommands" -- "${COMP_WORDS[$COMP_CWORD]}"))
}
_guix_complete_available_package ()
@ -113,6 +113,12 @@ _guix_complete_file ()
COMPREPLY=()
}
_guix_complete_pid ()
{
local pids="$(cd /proc; echo [0-9]*)"
COMPREPLY=($(compgen -W "$pids" -- "$1"))
}
declare _guix_subcommands
_guix_complete ()
@ -154,11 +160,21 @@ _guix_complete ()
fi
elif _guix_is_command "system"
then
_guix_complete_subcommand
case $COMP_CWORD in
2) _guix_complete_subcommand;;
*) _guix_complete_file;; # TODO: restrict to *.scm
esac
elif _guix_is_command "container"
then
case $COMP_CWORD in
2) _guix_complete_subcommand;;
3) _guix_complete_pid "$word_at_point";;
*) _guix_complete_file;;
esac
elif _guix_is_command "import"
then
_guix_complete_subcommand
elif _guix_is_command "hash"
elif _guix_is_command "hash" || _guix_is_command "gc"
then
_guix_complete_file
else

View File

@ -40,17 +40,29 @@ do
else
if [ "$remote_sha" = $z40 ]
then
# New branch, examine all commits
range="$local_sha"
# We are pushing a new branch. To prevent wasting too
# much time for this relatively rare case, we examine
# all commits since the first signed commit, rather than
# the full history. This check *will* fail, and the user
# will need to temporarily disable the hook to push the
# new branch.
range="e3d0fcbf7e55e8cbe8d0a1c5a24d73f341d7243b..$local_sha"
else
# Update to existing branch, examine new commits
range="$remote_sha..$local_sha"
fi
# Verify the signatures of all commits being pushed.
git verify-commit $(git rev-list $range) >/dev/null 2>&1
exit $?
ret=0
for commit in $(git rev-list $range)
do
if ! git verify-commit $commit >/dev/null 2>&1
then
printf "%s failed signature check\n" $commit
ret=1
fi
done
exit $ret
fi
done

View File

@ -28,7 +28,7 @@
activate-user-home
activate-etc
activate-setuid-programs
activate-/bin/sh
activate-special-files
activate-modprobe
activate-firmware
activate-ptrace-attach
@ -80,16 +80,27 @@
(member file '("." "..")))
(define* (copy-account-skeletons home
#:optional (directory %skeleton-directory))
"Copy the account skeletons from DIRECTORY to HOME."
#:key
(directory %skeleton-directory)
uid gid)
"Copy the account skeletons from DIRECTORY to HOME. When UID is an integer,
make it the owner of all the files created; likewise for GID."
(define (set-owner file)
(when (or uid gid)
(chown file (or uid -1) (or gid -1))))
(let ((files (scandir directory (negate dot-or-dot-dot?)
string<?)))
(mkdir-p home)
(set-owner home)
(for-each (lambda (file)
(let ((target (string-append home "/" file)))
(copy-recursively (string-append directory "/" file)
target
#:log (%make-void-port "w"))
(for-each set-owner
(find-files target (const #t)
#:directories? #t))
(make-file-writable target)))
files)))
@ -272,9 +283,14 @@ they already exist."
((name uid group supplementary-groups comment home create-home?
shell password system?)
(unless (or (not home) (directory-exists? home))
(mkdir-p home)
(unless system?
(copy-account-skeletons home))))))
(let* ((pw (getpwnam name))
(uid (passwd:uid pw))
(gid (passwd:gid pw)))
(mkdir-p home)
(chown home uid gid)
(unless system?
(copy-account-skeletons home
#:uid uid #:gid gid)))))))
(for-each ensure-user-home users))
@ -362,10 +378,23 @@ copy SOURCE to TARGET."
(for-each make-setuid-program programs))
(define (activate-/bin/sh shell)
"Change /bin/sh to point to SHELL."
(symlink shell "/bin/sh.new")
(rename-file "/bin/sh.new" "/bin/sh"))
(define (activate-special-files special-files)
"Install the files listed in SPECIAL-FILES. Each element of SPECIAL-FILES
is a pair where the first element is the name of the special file and the
second element is the name it should appear at, such as:
((\"/bin/sh\" \"/gnu/store/…-bash/bin/sh\")
(\"/usr/bin/env\" \"/gnu/store/…-coreutils/bin/env\"))
"
(define install-special-file
(match-lambda
((target file)
(let ((pivot (string-append target ".new")))
(mkdir-p (dirname target))
(symlink file pivot)
(rename-file pivot target)))))
(for-each install-special-file special-files))
(define (activate-modprobe modprobe)
"Tell the kernel to use MODPROBE to load modules."

View File

@ -1,5 +1,6 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2015 David Thompson <davet@gnu.org>
;;; Copyright © 2017 Ludovic Courtès <ludo@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;
@ -32,7 +33,8 @@
%namespaces
run-container
call-with-container
container-excursion))
container-excursion
container-excursion*))
(define (user-namespace-supported?)
"Return #t if user namespaces are supported on this system."
@ -128,13 +130,19 @@ for the process."
"/dev/fuse"))
;; Setup the container's /dev/console by bind mounting the pseudo-terminal
;; associated with standard input.
(let ((in (current-input-port))
(console (scope "/dev/console")))
(when (isatty? in)
;; associated with standard input when there is one.
(let* ((in (current-input-port))
(tty (catch 'system-error
(lambda ()
;; This call throws if IN does not correspond to a tty.
;; This is more reliable than 'isatty?'.
(ttyname in))
(const #f)))
(console (scope "/dev/console")))
(when tty
(touch console)
(chmod console #o600)
(bind-mount (ttyname in) console)))
(bind-mount tty console)))
;; Setup standard input/output/error.
(symlink "/proc/self/fd" (scope "/dev/fd"))
@ -229,6 +237,8 @@ host user identifiers to map into the user namespace."
namespaces)))
(lambda args
;; Forward the exception to the parent process.
;; FIXME: SRFI-35 conditions and non-trivial objects
;; cannot be 'read' so they shouldn't be written as is.
(write args child)
(primitive-exit 3))))
;; TODO: Manage capabilities.
@ -318,3 +328,21 @@ return the exit status."
(match (waitpid pid)
((_ . status)
(status:exit-val status))))))
(define (container-excursion* pid thunk)
"Like 'container-excursion', but return the return value of THUNK."
(match (pipe)
((in . out)
(match (container-excursion pid
(lambda ()
(close-port in)
(write (thunk) out)))
(0
(close-port out)
(let ((result (read in)))
(close-port in)
result))
(_ ;maybe PID died already
(close-port out)
(close-port in)
#f)))))

177
gnu/build/shepherd.scm Normal file
View File

@ -0,0 +1,177 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2017 Ludovic Courtès <ludo@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;
;;; GNU Guix is free software; you can redistribute it and/or modify it
;;; under the terms of the GNU General Public License as published by
;;; the Free Software Foundation; either version 3 of the License, or (at
;;; your option) any later version.
;;;
;;; GNU Guix is distributed in the hope that it will be useful, but
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;;; GNU General Public License for more details.
;;;
;;; You should have received a copy of the GNU General Public License
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
(define-module (gnu build shepherd)
#:use-module (gnu system file-systems)
#:use-module (gnu build linux-container)
#:use-module (guix build utils)
#:use-module (srfi srfi-1)
#:use-module (ice-9 match)
#:export (make-forkexec-constructor/container))
;;; Commentary:
;;;
;;; This module provides extensions to the GNU Shepherd. In particular, it
;;; provides a helper to start services in a container.
;;;
;;; Code:
(define (clean-up file)
(when file
(catch 'system-error
(lambda ()
(delete-file file))
(lambda args
(unless (= ENOENT (system-error-errno args))
(apply throw args))))))
(define-syntax-rule (catch-system-error exp)
(catch 'system-error
(lambda ()
exp)
(const #f)))
(define (default-namespaces args)
;; Most daemons are here to talk to the network, and most of them expect to
;; run under a non-zero UID.
(fold delq %namespaces '(net user)))
(define* (default-mounts #:key (namespaces (default-namespaces '())))
(define (tmpfs directory)
(file-system
(device "none")
(title 'device)
(mount-point directory)
(type "tmpfs")
(check? #f)))
(define passwd
;; This is for processes in the default user namespace but living in a
;; different mount namespace, so that they can lookup users.
(file-system-mapping
(source "/etc/passwd") (target source)))
(define nscd-socket
(file-system-mapping
(source "/var/run/nscd") (target source)
(writable? #t)))
(append (cons (tmpfs "/tmp") %container-file-systems)
(let ((mappings `(,@(if (memq 'net namespaces)
'()
(cons nscd-socket
%network-file-mappings))
,@(if (and (memq 'mnt namespaces)
(not (memq 'user namespaces)))
(list passwd)
'())
,%store-mapping))) ;XXX: coarse-grain
(map file-system-mapping->bind-mount
(filter (lambda (mapping)
(file-exists? (file-system-mapping-source mapping)))
mappings)))))
;; XXX: Lazy-bind the Shepherd to avoid a compile-time dependency.
(module-autoload! (current-module)
'(shepherd service) '(read-pid-file exec-command))
(define* (read-pid-file/container pid pid-file #:key (max-delay 5))
"Read PID-FILE in the container namespaces of PID, which exists in a
separate mount and PID name space. Return the \"outer\" PID. "
(match (container-excursion* pid
(lambda ()
(read-pid-file pid-file
#:max-delay max-delay)))
(#f
(catch-system-error (kill pid SIGTERM))
#f)
((? integer? container-pid)
;; XXX: When COMMAND is started in a separate PID namespace, its
;; PID is always 1, but that's not what Shepherd needs to know.
pid)))
(define* (make-forkexec-constructor/container command
#:key
(namespaces
(default-namespaces args))
(mappings '())
(user #f)
(group #f)
(log-file #f)
pid-file
(pid-file-timeout 5)
(directory "/")
(environment-variables
(environ))
#:rest args)
"This is a variant of 'make-forkexec-constructor' that starts COMMAND in
NAMESPACES, a list of Linux namespaces such as '(mnt ipc). MAPPINGS is the
list of <file-system-mapping> to make in the case of a separate mount
namespace, in addition to essential bind-mounts such /proc."
(define container-directory
(match command
((program _ ...)
(string-append "/var/run/containers/" (basename program)))))
(define auto-mappings
`(,@(if log-file
(list (file-system-mapping
(source log-file)
(target source)
(writable? #t)))
'())))
(define mounts
(append (map file-system-mapping->bind-mount
(append auto-mappings mappings))
(default-mounts #:namespaces namespaces)))
(lambda args
(mkdir-p container-directory)
(when log-file
;; Create LOG-FILE so we can map it in the container.
(unless (file-exists? log-file)
(call-with-output-file log-file (const #t))))
(let ((pid (run-container container-directory
mounts namespaces 1
(lambda ()
(mkdir-p "/var/run")
(clean-up pid-file)
(clean-up log-file)
(exec-command command
#:user user
#:group group
#:log-file log-file
#:directory directory
#:environment-variables
environment-variables)))))
(if pid-file
(if (or (memq 'mnt namespaces) (memq 'pid namespaces))
(read-pid-file/container pid pid-file
#:max-delay pid-file-timeout)
(read-pid-file pid-file #:max-delay pid-file-timeout))
pid))))
;; Local Variables:
;; eval: (put 'container-excursion* 'scheme-indent-function 1)
;; End:
;;; shepherd.scm ends here

View File

@ -4,7 +4,7 @@
# Copyright © 2016 Mathieu Lirzin <mthl@gnu.org>
# Copyright © 2013, 2014, 2015, 2016 Mark H Weaver <mhw@netris.org>
# Copyright © 2016 Chris Marusich <cmmarusich@gmail.com>
# Copyright © 2016 Kei Kebreau <kei@openmailbox.org>
# Copyright © 2016, 2017 Kei Kebreau <kei@openmailbox.org>
# Copyright © 2016 Rene Saavedra <rennes@openmailbox.org>
# Copyright © 2016 Adonay "adfeno" Felipe Nogueira <https://libreplanet.org/wiki/User:Adfeno> <adfeno@openmailbox.org>
# Copyright © 2016, 2017 Ricardo Wurmus <rekado@elephly.net>
@ -64,6 +64,7 @@ GNU_SYSTEM_MODULES = \
%D%/packages/bittorrent.scm \
%D%/packages/bison.scm \
%D%/packages/boost.scm \
%D%/packages/bootloaders.scm \
%D%/packages/bootstrap.scm \
%D%/packages/busybox.scm \
%D%/packages/c.scm \
@ -170,7 +171,6 @@ GNU_SYSTEM_MODULES = \
%D%/packages/graphics.scm \
%D%/packages/graphviz.scm \
%D%/packages/groff.scm \
%D%/packages/grub.scm \
%D%/packages/gsasl.scm \
%D%/packages/gstreamer.scm \
%D%/packages/gtk.scm \
@ -318,6 +318,7 @@ GNU_SYSTEM_MODULES = \
%D%/packages/ratpoison.scm \
%D%/packages/rdesktop.scm \
%D%/packages/rdf.scm \
%D%/packages/re2c.scm \
%D%/packages/readline.scm \
%D%/packages/regex.scm \
%D%/packages/rrdtool.scm \
@ -372,7 +373,6 @@ GNU_SYSTEM_MODULES = \
%D%/packages/unrtf.scm \
%D%/packages/upnp.scm \
%D%/packages/uucp.scm \
%D%/packages/u-boot.scm \
%D%/packages/valgrind.scm \
%D%/packages/version-control.scm \
%D%/packages/video.scm \
@ -450,6 +450,7 @@ GNU_SYSTEM_MODULES = \
%D%/build/linux-initrd.scm \
%D%/build/linux-modules.scm \
%D%/build/marionette.scm \
%D%/build/shepherd.scm \
%D%/build/svg.scm \
%D%/build/vm.scm \
\
@ -603,6 +604,7 @@ dist_patch_DATA = \
%D%/packages/patches/grub-gets-undeclared.patch \
%D%/packages/patches/grub-freetype.patch \
%D%/packages/patches/gsl-test-i686.patch \
%D%/packages/patches/gst-plugins-base-fix-test-on-32bit.patch \
%D%/packages/patches/guile-1.8-cpp-4.5.patch \
%D%/packages/patches/guile-arm-fixes.patch \
%D%/packages/patches/guile-default-utf8.patch \
@ -771,6 +773,7 @@ dist_patch_DATA = \
%D%/packages/patches/ninja-zero-mtime.patch \
%D%/packages/patches/node-9077.patch \
%D%/packages/patches/nss-pkgconfig.patch \
%D%/packages/patches/ntfs-3g-CVE-2017-0358.patch \
%D%/packages/patches/nvi-assume-preserve-path.patch \
%D%/packages/patches/nvi-dbpagesize-binpower.patch \
%D%/packages/patches/nvi-db4.patch \
@ -793,6 +796,7 @@ dist_patch_DATA = \
%D%/packages/patches/openssl-c-rehash-in.patch \
%D%/packages/patches/orpheus-cast-errors-and-includes.patch \
%D%/packages/patches/ots-no-include-missing-file.patch \
%D%/packages/patches/p7zip-CVE-2016-9296.patch \
%D%/packages/patches/p7zip-remove-unused-code.patch \
%D%/packages/patches/patchelf-page-size.patch \
%D%/packages/patches/patchelf-rework-for-arm.patch \
@ -855,9 +859,13 @@ dist_patch_DATA = \
%D%/packages/patches/python2-pygobject-2-gi-info-type-error-domain.patch \
%D%/packages/patches/python-pygpgme-fix-pinentry-tests.patch \
%D%/packages/patches/qemu-CVE-2016-10155.patch \
%D%/packages/patches/qemu-CVE-2017-2615.patch \
%D%/packages/patches/qemu-CVE-2017-5525.patch \
%D%/packages/patches/qemu-CVE-2017-5526.patch \
%D%/packages/patches/qemu-CVE-2017-5552.patch \
%D%/packages/patches/qemu-CVE-2017-5578.patch \
%D%/packages/patches/qemu-CVE-2017-5579.patch \
%D%/packages/patches/qemu-CVE-2017-5856.patch \
%D%/packages/patches/qt4-ldflags.patch \
%D%/packages/patches/quickswitch-fix-dmenu-check.patch \
%D%/packages/patches/rapicorn-isnan.patch \

View File

@ -474,7 +474,7 @@ connection alive.")
(bind-minor-version "9")
(bind-patch-version "9")
(bind-release-type "-P") ; for patch release, use "-P"
(bind-release-version "5") ; for patch release, e.g. "4"
(bind-release-version "6") ; for patch release, e.g. "6"
(bind-version (string-append bind-major-version
"."
bind-minor-version
@ -590,7 +590,7 @@ connection alive.")
"/bind-" bind-version ".tar.gz"))
(sha256
(base32
"1yn15chkfqf4d7961ip2x10jm27a9wqymz2xqh0a2g89arrirkaw"))))
"1qf9j0nyqx0qy871mj22xh4dg0n1pqlv94lpiijb8vr7n7m3svhr"))))
;; When cross-compiling, we need the cross Coreutils and sed.
;; Otherwise just use those from %FINAL-INPUTS.
@ -639,18 +639,8 @@ network statistics collection, security monitoring, network debugging, etc.")
(version "4.9.0")
(source (origin
(method url-fetch)
;; We use this Debian URL while the upstream URL is still
;; officially private. This is the result of a botched
;; coordinated release of tcpdump 4.9.0. I verified with
;; the tcpdump maintainers that the upstream URL provides
;; the same data as this Debian URL.
(uri
(list
(string-append "http://http.debian.net/debian/pool/main/t/"
name "/" name "_" version ".orig.tar.gz")
(string-append "http://www.tcpdump.org/release/tcpdump-"
version ".tar.gz")))
(file-name (string-append name "-" version ".tar.gz"))
(uri (string-append "http://www.tcpdump.org/release/tcpdump-"
version ".tar.gz"))
(sha256
(base32
"0pjsxsy8l71i813sa934cwf1ryp9xbr7nxwsvnzavjdirchq3sga"))))
@ -1715,7 +1705,7 @@ throughput (in the same interval).")
("python-decorator" ,python-decorator)
("python-psutil" ,python-psutil)
("python-six" ,python-six)))
(inputs
(native-inputs
;; Requires setuptools >= 17.1 due to some features used, while our
;; python currently only includes 12.0. TODO: Remove this input.
`(("python-setuptools" ,python-setuptools)))

View File

@ -29,6 +29,9 @@
#:use-module (guix packages)
#:use-module (guix download)
#:use-module (guix utils)
#:use-module (guix gexp)
#:use-module (guix monads)
#:use-module (guix store)
#:use-module (guix build-system gnu)
#:autoload (guix gnupg) (gnupg-verify*)
#:autoload (guix hash) (port-sha256)
@ -107,6 +110,7 @@ number/base32-hash tuples, directly usable in the 'patch-series' form."
(version "4.4"))
(package
(name "bash")
(replacement bash/fixed)
(source (origin
(method url-fetch)
(uri (string-append
@ -200,6 +204,7 @@ without modification.")
;; A stripped-down Bash for non-interactive use.
(package (inherit bash)
(name "bash-minimal")
(replacement #f) ;not vulnerable to CVE-2017-5932 since it lacks completion
(inputs '()) ; no readline, no curses
;; No "include" output because there's no support for loadable modules.
@ -255,6 +260,43 @@ without modification.")
(delete-file-recursively (string-append out "/share"))
#t))))))))))
(define* (url-fetch/reset-patch-level url hash-algo hash
#:optional name
#:key (system (%current-system)) guile)
"Fetch the Bash patch from URL and reset its 'PATCHLEVEL' definition so it
can apply to a patch-level 0 Bash."
(mlet* %store-monad ((name -> (or name (basename url)))
(patch (url-fetch url hash-algo hash
(string-append name ".orig")
#:system system
#:guile guile)))
(gexp->derivation name
(with-imported-modules '((guix build utils))
#~(begin
(use-modules (guix build utils))
(copy-file #$patch #$output)
(substitute* #$output
(("PATCHLEVEL [0-6]+")
"PATCHLEVEL 0"))))
#:guile-for-build guile
#:system system)))
(define bash/fixed ;CVE-2017-5932 (RCE with completion)
(package
(inherit bash)
(version "4.4.A") ;4.4.0 + patch #7
(replacement #f)
(source
(origin
(inherit (package-source bash))
(patches (cons (origin
(method url-fetch/reset-patch-level)
(uri (patch-url 7))
(sha256
(base32
"1bzdsnqaf05gdbqpsixhan8vygjxpcxlz1dd8d9f5jdznw3wq76y")))
(origin-patches (package-source bash))))))))
(define-public bash-completion
(package
(name "bash-completion")

View File

@ -5748,7 +5748,7 @@ track. The database is exposed as a @code{TxDb} object.")
(define-public vsearch
(package
(name "vsearch")
(version "2.3.4")
(version "2.4.0")
(source
(origin
(method url-fetch)
@ -5758,31 +5758,12 @@ track. The database is exposed as a @code{TxDb} object.")
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
"1xyraxmhyx62mxx8z7c8waygvcijwkh48ms1ar60w2cv2y2sn4al"))
(modules '((guix build utils)))
"007q9a50hdw4vs2iajabvbw7qccml4r8cbqzyi5ipkkf42jk3vnr"))
(patches (search-patches "vsearch-unbundle-cityhash.patch"))
(snippet
'(begin
;; Remove bundled cityhash and '-mtune=native'.
(substitute* "src/Makefile.am"
(("^AM_CXXFLAGS=-I\\$\\{srcdir\\}/cityhash \
-O3 -mtune=native -Wall -Wsign-compare")
(string-append "AM_CXXFLAGS=-lcityhash"
" -O3 -Wall -Wsign-compare"))
(("^__top_builddir__bin_vsearch_SOURCES = city.h \\\\")
"__top_builddir__bin_vsearch_SOURCES = \\")
(("^city.h \\\\") "\\")
(("^citycrc.h \\\\") "\\")
(("^libcityhash_a.*") "")
(("noinst_LIBRARIES = libcpu_sse2.a libcpu_ssse3.a \
libcityhash.a")
"noinst_LIBRARIES = libcpu_sse2.a libcpu_ssse3.a")
(("__top_builddir__bin_vsearch_LDADD = libcpu_ssse3.a \
libcpu_sse2.a libcityhash.a")
"__top_builddir__bin_vsearch_LDADD = libcpu_ssse3.a \
libcpu_sse2.a -lcityhash"))
(substitute* "src/vsearch.h"
(("^\\#include \"city.h\"") "#include <city.h>")
(("^\\#include \"citycrc.h\"") "#include <citycrc.h>"))
;; Remove bundled cityhash sources. The vsearch source is adjusted
;; for this in the patch.
(delete-file "src/city.h")
(delete-file "src/citycrc.h")
(delete-file "src/city.cc")

View File

@ -0,0 +1,332 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2013, 2014, 2015, 2016, 2017 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2015 Mark H Weaver <mhw@netris.org>
;;; Copyright © 2015 Leo Famulari <leo@famulari.name>
;;; Copyright © 2016 Jan Nieuwenhuizen <janneke@gnu.org>
;;; Copyright © 2016, 2017 Marius Bakke <mbakke@fastmail.com>
;;; Copyright © 2016, 2017 Danny Milosavljevic <dannym@scratchpost.org>
;;; Copyright © 2016, 2017 David Craven <david@craven.ch>
;;;
;;; 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 bootloaders)
#:use-module (gnu packages)
#:use-module (gnu packages admin)
#:use-module ((gnu packages algebra) #:select (bc))
#:use-module (gnu packages assembly)
#:use-module (gnu packages flex)
#:use-module (gnu packages disk)
#:use-module (gnu packages bison)
#:use-module (gnu packages cdrom)
#:use-module (gnu packages cross-base)
#:use-module (gnu packages disk)
#:use-module (gnu packages flex)
#:use-module (gnu packages fontutils)
#:use-module (gnu packages gettext)
#:use-module (gnu packages linux)
#:use-module (gnu packages man)
#:use-module (gnu packages ncurses)
#:use-module (gnu packages perl)
#:use-module (gnu packages python)
#:use-module (gnu packages qemu)
#:use-module (gnu packages texinfo)
#:use-module (guix build-system gnu)
#:use-module (guix download)
#:use-module (guix git-download)
#:use-module ((guix licenses) #:prefix license:)
#:use-module (guix packages)
#:use-module (guix utils))
(define unifont
;; GNU Unifont, <http://gnu.org/s/unifont>.
;; GRUB needs it for its graphical terminal, gfxterm.
(origin
(method url-fetch)
(uri
"http://unifoundry.com/pub/unifont-7.0.06/font-builds/unifont-7.0.06.bdf.gz")
(sha256
(base32
"0p2vhnc18cnbmb39vq4m7hzv4mhnm2l0a2s7gx3ar277fwng3hys"))))
(define-public grub
(package
(name "grub")
(version "2.02rc1")
(source (origin
(method url-fetch)
(uri (string-append
"ftp://alpha.gnu.org/gnu/grub/grub-"
"2.02~rc1"
".tar.xz"))
(file-name (string-append name "-" version ".tar.xz"))
(sha256
(base32
"0y02v19x9sb5jvj740f604vvi5j1rx8pily1jk0l64bdp7lkjlj4"))))
(build-system gnu-build-system)
(arguments
'(#:phases (modify-phases %standard-phases
(add-after 'unpack 'patch-stuff
(lambda* (#:key inputs #:allow-other-keys)
(substitute* "grub-core/Makefile.in"
(("/bin/sh") (which "sh")))
;; Give the absolute file name of 'mdadm', used to
;; determine the root file system when it's a RAID
;; device. Failing to do that, 'grub-probe' silently
;; fails if 'mdadm' is not in $PATH.
(substitute* "grub-core/osdep/linux/getroot.c"
(("argv\\[0\\] = \"mdadm\"")
(string-append "argv[0] = \""
(assoc-ref inputs "mdadm")
"/sbin/mdadm\"")))
;; Make the font visible.
(copy-file (assoc-ref inputs "unifont") "unifont.bdf.gz")
(system* "gunzip" "unifont.bdf.gz")
#t)))))
(inputs
`(("gettext" ,gettext-minimal)
;; Depend on LVM2 for libdevmapper, used by 'grub-probe' and
;; 'grub-install' to recognize mapped devices (LUKS, etc.)
("lvm2" ,lvm2)
;; Depend on mdadm, which is invoked by 'grub-probe' and 'grub-install'
;; to determine whether the root file system is RAID.
("mdadm" ,mdadm)
("freetype" ,freetype)
;; ("libusb" ,libusb)
;; ("fuse" ,fuse)
("ncurses" ,ncurses)))
(native-inputs
`(("unifont" ,unifont)
("bison" ,bison)
("flex" ,flex)
("texinfo" ,texinfo)
("help2man" ,help2man)
;; Dependencies for the test suite. The "real" QEMU is needed here,
;; because several targets are used.
("parted" ,parted)
("qemu" ,qemu-minimal)
("xorriso" ,xorriso)))
(home-page "https://www.gnu.org/software/grub/")
(synopsis "GRand Unified Boot loader")
(description
"GRUB is a multiboot bootloader. It is used for initially loading the
kernel of an operating system and then transferring control to it. The kernel
then goes on to load the rest of the operating system. As a multiboot
bootloader, GRUB handles the presence of multiple operating systems installed
on the same computer; upon booting the computer, the user is presented with a
menu to select one of the installed operating systems.")
(license license:gpl3+)
(properties '((cpe-name . "grub2")))))
(define-public grub-efi
(package
(inherit grub)
(name "grub-efi")
(synopsis "GRand Unified Boot loader (UEFI version)")
(inputs
`(("efibootmgr" ,efibootmgr)
,@(package-inputs grub)))
(arguments
`(;; TODO: Tests need a UEFI firmware for qemu. There is one at
;; https://github.com/tianocore/edk2/tree/master/OvmfPkg .
;; Search for 'OVMF' in "tests/util/grub-shell.in".
#:tests? #f
,@(substitute-keyword-arguments (package-arguments grub)
((#:configure-flags flags ''())
`(cons "--with-platform=efi" ,flags))
((#:phases phases)
`(modify-phases ,phases
(add-after 'patch-stuff 'use-absolute-efibootmgr-path
(lambda* (#:key inputs #:allow-other-keys)
(substitute* "grub-core/osdep/unix/platform.c"
(("efibootmgr")
(string-append (assoc-ref inputs "efibootmgr")
"/sbin/efibootmgr")))
#t)))))))))
(define-public syslinux
(let ((commit "bb41e935cc83c6242de24d2271e067d76af3585c"))
(package
(name "syslinux")
(version (git-version "6.04-pre" "1" commit))
(source (origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/geneC/syslinux")
(commit commit)))
(file-name (git-file-name name version))
(sha256
(base32
"0k8dvafd6410kqxf3kyr4y8jzmpmrih6wbjqg6gklak7945yflrc"))))
(build-system gnu-build-system)
(native-inputs
`(("nasm" ,nasm)
("perl" ,perl)
("python-2" ,python-2)))
(inputs
`(("libuuid" ,util-linux)))
(arguments
`(#:parallel-build? #f
#:make-flags
(list (string-append "BINDIR=" %output "/bin")
(string-append "SBINDIR=" %output "/sbin")
(string-append "LIBDIR=" %output "/lib")
(string-append "INCDIR=" %output "/include")
(string-append "DATADIR=" %output "/share")
(string-append "MANDIR=" %output "/share/man")
"PERL=perl"
"bios")
#:phases
(modify-phases %standard-phases
(add-after 'unpack 'patch-files
(lambda _
(substitute* (find-files "." "Makefile.*|ppmtolss16")
(("/bin/pwd") (which "pwd"))
(("/bin/echo") (which "echo"))
(("/usr/bin/perl") (which "perl")))
#t))
(delete 'configure)
(add-before 'build 'set-permissions
(lambda _
(zero? (system* "chmod" "a+w" "utils/isohybrid.in"))))
(replace 'check
(lambda _
(setenv "CC" "gcc")
(substitute* "tests/unittest/include/unittest/unittest.h"
;; Don't look up headers under /usr.
(("/usr/include/") ""))
(zero? (system* "make" "unittest")))))))
(home-page "http://www.syslinux.org")
(synopsis "Lightweight Linux bootloader")
(description "Syslinux is a lightweight Linux bootloader.")
(license (list license:gpl2+
license:bsd-3 ; gnu-efi/*
license:bsd-4 ; gnu-efi/inc/* gnu-efi/lib/*
;; Also contains:
license:expat license:isc license:zlib)))))
(define-public dtc
(package
(name "dtc")
(version "1.4.2")
(source (origin
(method url-fetch)
(uri (string-append
"https://www.kernel.org/pub/software/utils/dtc/"
"dtc-" version ".tar.xz"))
(sha256
(base32
"1b7si8niyca4wxbfah3qw4p4wli81mc1qwfhaswvrfqahklnwi8k"))))
(build-system gnu-build-system)
(native-inputs
`(("bison" ,bison)
("flex" ,flex)))
(arguments
`(#:make-flags
(list "CC=gcc"
(string-append "PREFIX=" (assoc-ref %outputs "out"))
"INSTALL=install")
#:phases
(modify-phases %standard-phases
(delete 'configure))))
(home-page "https://www.devicetree.org")
(synopsis "Compiles device tree source files")
(description "@command{dtc} compiles
@uref{http://elinux.org/Device_Tree_Usage, device tree source files} to device
tree binary files. These are board description files used by Linux and BSD.")
(license license:gpl2+)))
(define u-boot
(package
(name "u-boot")
(version "2017.01")
(source (origin
(method url-fetch)
(uri (string-append
"ftp://ftp.denx.de/pub/u-boot/"
"u-boot-" version ".tar.bz2"))
(sha256
(base32
"1wpc51jm3zyibgcr78jng2yksqvrya76bxgsr4pcyjrsz5sm2hkc"))))
(native-inputs
`(("bc" ,bc)
("dtc" ,dtc)
("python-2" ,python-2)))
(build-system gnu-build-system)
(home-page "http://www.denx.de/wiki/U-Boot/")
(synopsis "ARM bootloader")
(description "U-Boot is a bootloader used mostly for ARM boards. It
also initializes the boards (RAM etc).")
(license license:gpl2+)))
(define (make-u-boot-package board triplet)
"Returns a u-boot package for BOARD cross-compiled for TRIPLET."
(package
(inherit u-boot)
(name (string-append "u-boot-" (string-downcase board)))
(native-inputs
`(("cross-gcc" ,(cross-gcc triplet))
("cross-binutils" ,(cross-binutils triplet))
,@(package-native-inputs u-boot)))
(arguments
`(#:modules ((ice-9 ftw) (guix build utils) (guix build gnu-build-system))
#:test-target "test"
#:make-flags
(list "HOSTCC=gcc" (string-append "CROSS_COMPILE=" ,triplet "-"))
#:phases
(modify-phases %standard-phases
(replace 'configure
(lambda* (#:key outputs make-flags #:allow-other-keys)
(let ((config-name (string-append ,board "_defconfig")))
(if (file-exists? (string-append "configs/" config-name))
(zero? (apply system* "make" `(,@make-flags ,config-name)))
(begin
(display "Invalid board name. Valid board names are:")
(let ((suffix-len (string-length "_defconfig")))
(scandir "configs"
(lambda (file-name)
(when (string-suffix? "_defconfig" file-name)
(format #t
"- ~A\n"
(string-drop-right file-name
suffix-len))))))
#f)))))
(replace 'install
(lambda* (#:key outputs make-flags #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
(libexec (string-append out "/libexec"))
(uboot-files (find-files "." ".*\\.(bin|efi|spl)$")))
(mkdir-p libexec)
(for-each
(lambda (file)
(let ((target-file (string-append libexec "/" file)))
(mkdir-p (dirname target-file))
(copy-file file target-file)))
uboot-files)))))))))
(define-public u-boot-vexpress
(make-u-boot-package "vexpress_ca9x4" "arm-linux-gnueabihf"))
(define-public u-boot-malta
(make-u-boot-package "malta" "mips64el-linux-gnuabi64"))
(define-public u-boot-beagle-bone-black
(make-u-boot-package "am335x_boneblack" "arm-linux-gnueabihf"))

View File

@ -3,7 +3,7 @@
;;; Copyright © 2013, 2014 Andreas Enge <andreas@enge.fr>
;;; Copyright © 2015 Taylan Ulrich Bayırlı/Kammer <taylanbayirli@gmail.com>
;;; Copyright © 2015 Paul van der Walt <paul@denknerd.org>
;;; Copyright © 2015, 2016 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2015, 2016, 2017 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2016 Alex Kost <alezost@gmail.com>
;;; Copyright © 2016 Marius Bakke <mbakke@fastmail.com>
;;;
@ -294,7 +294,7 @@ from an audio CD.")
(define-public abcde
(package
(name "abcde")
(version "2.7.2")
(version "2.8.1")
(home-page "https://abcde.einval.com/")
(source (origin
(method url-fetch)
@ -302,7 +302,7 @@ from an audio CD.")
version ".tar.gz"))
(sha256
(base32
"1pakpi41k8yd780mfp0snhia6mmwjwxk9lcrq6gynimch8b8hfda"))
"0f9bjs0phk23vry7gvh0cll9vl6kmc1y4fwwh762scfdvpbp3774"))
(modules '((guix build utils)))
(snippet
'(substitute* "Makefile"

View File

@ -14,6 +14,7 @@
;;; Copyright © 2016 David Craven <david@craven.ch>
;;; Copyright © 2016 Kei Kebreau <kei@openmailbox.org>
;;; Copyright © 2016 Marius Bakke <mbakke@fastmail.com>
;;; Copyright © 2017 ng0 <contact.ng0@cryptolab.net>
;;;
;;; This file is part of GNU Guix.
;;;
@ -38,6 +39,7 @@
#:use-module (guix git-download)
#:use-module (guix build-system gnu)
#:use-module (guix build-system perl)
#:use-module (guix build-system python)
#:use-module (gnu packages)
#:use-module (gnu packages assembly)
#:use-module (gnu packages autotools)
@ -45,6 +47,7 @@
#:use-module (gnu packages base)
#:use-module (gnu packages perl)
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages python)
#:use-module (gnu packages valgrind)
#:use-module (ice-9 match)
#:use-module ((srfi srfi-1) #:select (last)))
@ -362,6 +365,44 @@ LZO is written in ANSI C. Both the source code and the compressed data
format are designed to be portable across platforms.")
(license license:gpl2+)))
(define-public python-lzo
(package
(name "python-lzo")
(version "1.11")
(source
(origin
(method url-fetch)
(uri (pypi-uri "python-lzo" version))
(sha256
(base32
"11p3ifg14p086byhhin6azx5svlkg8dzw2b5abixik97xd6fm81q"))))
(build-system python-build-system)
(arguments
`(#:test-target "check"
#:phases
(modify-phases %standard-phases
(add-after 'unpack 'patch-setuppy
(lambda _
(substitute* "setup.py"
(("include_dirs.append\\(.*\\)")
(string-append "include_dirs.append('"
(assoc-ref %build-inputs "lzo")
"/include/lzo"
"')")))
#t)))))
(inputs
`(("lzo" ,lzo)))
(home-page "https://github.com/jd-boyd/python-lzo")
(synopsis "Python bindings for the LZO data compression library")
(description
"Python-LZO provides Python bindings for LZO, i.e. you can access
the LZO library from your Python scripts thereby compressing ordinary
Python strings.")
(license license:gpl2+)))
(define-public python2-lzo
(package-with-python2 python-lzo))
(define-public lzop
(package
(name "lzop")
@ -633,6 +674,31 @@ time for compression ratio.")
;; line interface programs (lz4, fullbench, fuzzer, datagen) are GPL2+.
(license (list license:bsd-2 license:gpl2+))))
(define-public python-lz4
(package
(name "python-lz4")
(version "0.8.2")
(source
(origin
(method url-fetch)
(uri (pypi-uri "lz4" version))
(sha256
(base32
"1irad4sq4hdr30fr53smvv3zzk4rddcf9b4jx19w8s9xsxhr1x3b"))))
(build-system python-build-system)
(native-inputs
`(("python-nose" ,python-nose)))
(home-page "https://github.com/python-lz4/python-lz4")
(synopsis "LZ4 Bindings for Python")
(description
"This package provides python bindings for the lz4 compression library
by Yann Collet. The project contains bindings for the LZ4 block format and
the LZ4 frame format.")
(license license:bsd-3)))
(define-public python2-lz4
(package-with-python2 python-lz4))
(define-public squashfs-tools
(package
(name "squashfs-tools")
@ -924,7 +990,8 @@ for most inputs, but the resulting compressed files are anywhere from 20% to
(delete-file-recursively "CPP/7zip/Archive/Rar")
(delete-file-recursively "CPP/7zip/Compress/Rar")
#t))
(patches (search-patches "p7zip-remove-unused-code.patch"))))
(patches (search-patches "p7zip-CVE-2016-9296.patch"
"p7zip-remove-unused-code.patch"))))
(build-system gnu-build-system)
(arguments
`(#:make-flags
@ -1034,11 +1101,12 @@ functionality in a C++ iostream.")
(_ " -DNOJIT")))
;; These should be safe, lowest-common-denominator instruction sets,
;; allowing for some optimisation while remaining reproducible.
(string-append "CXXFLAGS=-O3 -mtune=generic -DNDEBUG"
(string-append "CXXFLAGS=-O3 -DNDEBUG"
,(match (or (%current-target-system)
(%current-system))
("x86_64-linux" " -march=nocona")
("i686-linux" " -march=i686")
("x86_64-linux" " -march=nocona -mtune=generic")
("i686-linux" " -march=i686 -mtune=generic")
("armhf-linux" " -mtune=generic-armv7-a")
(_ "")))
(string-append "PREFIX="
(assoc-ref %outputs "out")))))

View File

@ -33,39 +33,37 @@
(define-module (gnu packages databases)
#:use-module (gnu packages)
#:use-module (gnu packages algebra)
#:use-module (gnu packages autotools)
#:use-module (gnu packages avahi)
#:use-module (gnu packages base)
#:use-module (gnu packages bash)
#:use-module (gnu packages bison)
#:use-module (gnu packages boost)
#:use-module (gnu packages crypto)
#:use-module (gnu packages gettext)
#:use-module (gnu packages glib)
#:use-module (gnu packages perl)
#:use-module (gnu packages language)
#:use-module (gnu packages linux)
#:use-module (gnu packages tcl)
#:use-module (gnu packages tls)
#:use-module (gnu packages compression)
#:use-module (gnu packages ncurses)
#:use-module (gnu packages readline)
#:use-module (gnu packages emacs)
#:use-module (gnu packages check)
#:use-module (gnu packages algebra)
#:use-module (gnu packages compression)
#:use-module (gnu packages crypto)
#:use-module (gnu packages curl)
#:use-module (gnu packages cyrus-sasl)
#:use-module (gnu packages emacs)
#:use-module (gnu packages gettext)
#:use-module (gnu packages glib)
#:use-module (gnu packages gnupg)
#:use-module (gnu packages python)
#:use-module (gnu packages jemalloc)
#:use-module (gnu packages language)
#:use-module (gnu packages linux)
#:use-module (gnu packages ncurses)
#:use-module (gnu packages parallel)
#:use-module (gnu packages pcre)
#:use-module (gnu packages perl)
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages popt)
#:use-module (gnu packages python)
#:use-module (gnu packages rdf)
#:use-module (gnu packages readline)
#:use-module (gnu packages tcl)
#:use-module (gnu packages tls)
#:use-module (gnu packages xml)
#:use-module (gnu packages bison)
#:use-module (gnu packages jemalloc)
#:use-module ((guix licenses)
#:select (gpl2 gpl3 gpl3+ lgpl2.1+ lgpl3+ x11-style non-copyleft
bsd-2 bsd-3 public-domain asl2.0))
#:use-module ((guix licenses) #:prefix license:)
#:use-module (guix packages)
#:use-module (guix download)
@ -120,7 +118,7 @@
(synopsis "Clustered RDF storage and query engine")
(description "4store is a RDF/SPARQL store written in C, supporting
either single machines or networked clusters.")
(license gpl3+)))
(license license:gpl3+)))
(define-public gdbm
(package
@ -142,7 +140,7 @@ either single machines or networked clusters.")
"GDBM is a library for manipulating hashed databases. It is used to
store key/value pairs in a file in a manner similar to the Unix dbm library
and provides interfaces to the traditional file format.")
(license gpl3+)))
(license license:gpl3+)))
(define-public bdb
(package
@ -194,8 +192,9 @@ and provides interfaces to the traditional file format.")
(description
"Berkeley DB is an embeddable database allowing developers the choice of
SQL, Key/Value, XML/XQuery or Java Object storage for their data model.")
(license (non-copyleft "file://LICENSE"
"See LICENSE in the distribution."))
;; Starting with version 6, BDB is distributed under AGPL3. Many individual
;; files are covered by the 3-clause BSD license.
(license (list license:agpl3+ license:bsd-3))
(home-page
"http://www.oracle.com/us/products/database/berkeley-db/overview/index.html")))
@ -203,6 +202,8 @@ SQL, Key/Value, XML/XQuery or Java Object storage for their data model.")
(package (inherit bdb)
(name "bdb")
(version "5.3.28")
(license (license:non-copyleft "file://LICENSE"
"See LICENSE in the distribution."))
(source (origin
(method url-fetch)
(uri (string-append "http://download.oracle.com/berkeley-db/db-"
@ -247,7 +248,7 @@ SQL, Key/Value, XML/XQuery or Java Object storage for their data model.")
(description
"LevelDB is a fast key-value storage library that provides an ordered
mapping from string keys to string values.")
(license bsd-3)))
(license license:bsd-3)))
(define-public mysql
(package
@ -322,7 +323,7 @@ mapping from string keys to string values.")
"MySQL is a fast, reliable, and easy to use relational database
management system that supports the standardized Structured Query
Language.")
(license gpl2)))
(license license:gpl2)))
(define-public mariadb
(package
@ -390,7 +391,7 @@ Language.")
(description
"MariaDB is a multi-user and multi-threaded SQL database server, designed
as a drop-in replacement of MySQL.")
(license gpl2)))
(license license:gpl2)))
(define-public postgresql
(package
@ -426,7 +427,7 @@ stored procedures (in multiple languages). It includes most SQL:2008 data
types, including INTEGER, NUMERIC, BOOLEAN, CHAR, VARCHAR, DATE, INTERVAL, and
TIMESTAMP. It also supports storage of binary large objects, including
pictures, sounds, or video.")
(license (x11-style "file://COPYRIGHT"))))
(license (license:x11-style "file://COPYRIGHT"))))
(define-public qdbm
(package
@ -509,13 +510,13 @@ manipulating text-based, human-editable databases. Despite being text-based,
databases created with Recutils carry all of the expected features such as
unique fields, primary keys, time stamps and more. Many different field
types are supported, as is encryption.")
(license gpl3+)
(license license:gpl3+)
(home-page "http://www.gnu.org/software/recutils/")))
(define-public rocksdb
(package
(name "rocksdb")
(version "5.0.2")
(version "5.1.2")
(source (origin
(method url-fetch)
(uri (string-append "https://github.com/facebook/rocksdb"
@ -523,7 +524,7 @@ types are supported, as is encryption.")
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
"1jj8b50w8jr3bnyjzk2hmlzq9x49yihjilx3xlq2rfdx3q9x4fay"))
"1qdbs13al7g45xc2j44wzx0ywrg32q1gsdhk5j6j4952xg91rfmh"))
(modules '((guix build utils)))
(snippet
'(begin
@ -578,7 +579,8 @@ types are supported, as is encryption.")
`(("parallel" ,parallel)
("perl" ,perl)
("procps" ,procps)
("python" ,python-2)))
("python" ,python-2)
("which" ,which)))
(inputs
`(("bzip2" ,bzip2)
("gflags" ,gflags)
@ -597,7 +599,7 @@ between @dfn{Write-Amplification-Factor} (WAF), @dfn{Read-Amplification-Factor}
compactions, making it specially suitable for storing multiple terabytes of
data in a single database. RocksDB is partially based on @code{LevelDB}.")
;; RocksDB is BSD-3 and the JNI adapter is Apache 2.0.
(license (list bsd-3 asl2.0))))
(license (list license:bsd-3 license:asl2.0))))
(define-public sparql-query
(package
@ -658,7 +660,7 @@ edit previous queries, even across sessions. It can be used non-interactively,
for example from a shell script.")
;; Some files (like scan-sparql.c) contain a GPLv3+ license header, while
;; others (like sparql-query.c) contain a GPLv2+ license header.
(license (list gpl3+))))
(license (list license:gpl3+))))
(define-public sqlite
(package
@ -697,7 +699,7 @@ for example from a shell script.")
zero-configuration, transactional SQL database engine. SQLite is the most
widely deployed SQL database engine in the world. The source code for SQLite
is in the public domain.")
(license public-domain)))
(license license:public-domain)))
(define-public tdb
(package
@ -734,7 +736,7 @@ is in the public domain.")
and BSD's DB except that it allows multiple simultaneous writers and uses
locking internally to keep writers from trampling on each other. TDB is also
extremely small.")
(license lgpl3+)))
(license license:lgpl3+)))
(define-public perl-dbi
(package
@ -1079,7 +1081,7 @@ valid SQL query.")
(description "Unixodbc is a library providing an API with which to access
data sources. Data sources include SQL Servers and any software with an ODBC
Driver.")
(license lgpl2.1+)
(license license:lgpl2.1+)
;; COPYING contains copy of lgpl2.1 - but copyright notices just say "LGPL"
(home-page "http://www.unixodbc.org")))
@ -1107,7 +1109,7 @@ self-contained, serverless, zero-configuration, transactional NoSQL
database engine. UnQLite is a document store database similar to
MongoDB, Redis, CouchDB, etc. as well as a standard Key/Value store
similar to BerkeleyDB, LevelDB, etc.")
(license bsd-2)))
(license license:bsd-2)))
(define-public redis
(package
@ -1135,7 +1137,7 @@ similar to BerkeleyDB, LevelDB, etc.")
supports many data structures including strings, hashes, lists, sets, sorted
sets, bitmaps and hyperloglogs.")
(home-page "http://redis.io/")
(license bsd-3)))
(license license:bsd-3)))
(define-public kyotocabinet
(package
@ -1162,7 +1164,7 @@ sets, bitmaps and hyperloglogs.")
"Kyoto Cabinet is a standalone file-based database that supports Hash
and B+ Tree data storage models. It is a fast key-value lightweight
database and supports many programming languages. It is a NoSQL database.")
(license gpl3+)))
(license license:gpl3+)))
(define-public wiredtiger
(package
@ -1198,7 +1200,7 @@ row-oriented storage (where all columns of a row are stored together),
column-oriented storage (where columns are stored in groups, allowing for
more efficient access and storage of column subsets) and log-structured merge
trees (LSM), for sustained throughput under random insert workloads.")
(license gpl3) ; or GPL-2
(license license:gpl3) ; or GPL-2
;; configure.ac: WiredTiger requires a 64-bit build.
(supported-systems '("x86_64-linux" "mips64el-linux"))))
@ -1366,3 +1368,31 @@ development.")
;; test/crypto.test are licensed under a 3-clause BSD license. All other
;; source files are in the public domain.
(license (list license:public-domain license:bsd-3))))
(define-public python-pyodbc-c
(package
(name "python-pyodbc-c")
(version "3.1.2")
(source
(origin
(method url-fetch)
(uri (string-append "https://gitlab.com/daym/pyodbc-c/repository/"
"archive.tar.gz?ref=v" version))
(sha256
(base32
"0nl11n3mgrcfnhimjqgv48rxqnb21l5m6s7p8ps2fa4nn4z6rzy0"))
(file-name (string-append name "-" version ".tar.gz"))))
(build-system python-build-system)
(inputs
`(("unixodbc" ,unixodbc)))
(arguments
`(;; No unit tests exist.
#:tests? #f))
(home-page "https://github.com/mkleehammer/pyodbc")
(synopsis "Python ODBC Library")
(description "@code{python-pyodbc-c} provides a Python DB-API driver
for ODBC.")
(license (license:x11-style "file://LICENSE.TXT"))))
(define-public python2-pyodbc-c
(package-with-python2 python-pyodbc-c))

View File

@ -6,7 +6,7 @@
;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2016 Jan Nieuwenhuizen <janneke@gnu.org>
;;; Copyright © 2016 Roel Janssen <roel@gnu.org>
;;; Copyright © 2016 Marius Bakke <mbakke@fastmail.com>
;;; Copyright © 2016, 2017 Marius Bakke <mbakke@fastmail.com>
;;;
;;; This file is part of GNU Guix.
;;;
@ -45,6 +45,7 @@
#:use-module (gnu packages readline)
#:use-module (gnu packages guile)
#:use-module (gnu packages compression)
#:use-module (gnu packages vim)
#:use-module (gnu packages xml))
(define-public parted
@ -154,7 +155,7 @@ tables.")
(define-public ddrescue
(package
(name "ddrescue")
(version "1.21")
(version "1.22")
(source
(origin
(method url-fetch)
@ -162,9 +163,9 @@ tables.")
version ".tar.lz"))
(sha256
(base32
"1b71hb42lh33y9843nd1mxlwkk9qh9ajvnz6ivzd1jq9lav4x7ph"))))
"19qhx9ggkkjl0g3a88g501wmybkj1y4n5lm5kp0km0blh0p7p189"))))
(build-system gnu-build-system)
(home-page "http://www.gnu.org/software/ddrescue/ddrescue.html")
(home-page "https://www.gnu.org/software/ddrescue/ddrescue.html")
(synopsis "Data recovery utility")
(native-inputs `(("lzip" ,lzip)))
(description
@ -177,7 +178,7 @@ to recover data more efficiently by only reading the necessary blocks.")
(define-public dosfstools
(package
(name "dosfstools")
(version "4.0")
(version "4.1")
(source
(origin
(method url-fetch)
@ -186,12 +187,13 @@ to recover data more efficiently by only reading the necessary blocks.")
name "-" version ".tar.xz"))
(sha256
(base32
"1bvxbv1w6vhbx0nx7ygp700wq5k2hjv0hm7w0kz1x7amaf4p6dwh"))))
"0wy13i3i4x2bw1hf5m4fd0myh61f9bcrs035fdlf6gyc1jksrcp6"))))
(build-system gnu-build-system)
(arguments
`(#:make-flags (list (string-append "PREFIX=" %output)
"CC=gcc")
#:tests? #f)) ;no tests
"CC=gcc")))
(native-inputs
`(("xxd" ,vim))) ; for tests
(home-page "https://github.com/dosfstools/dosfstools")
(synopsis "Utilities for making and checking MS-DOS FAT file systems")
(description

View File

@ -82,7 +82,7 @@ and BOOTP/TFTP for network booting of diskless machines.")
(define-public bind
(package
(name "bind")
(version "9.10.4-P5")
(version "9.10.4-P6")
(source (origin
(method url-fetch)
(uri (string-append
@ -90,7 +90,7 @@ and BOOTP/TFTP for network booting of diskless machines.")
version ".tar.gz"))
(sha256
(base32
"1sqg7wg05h66vdjc8j215r04f8pg7lphkb93nsqxvzhk6r0ppi49"))))
"0rgffdm0h6dks0np4h9q4kd8nyb3azrdxw2skqnjzd8ws78vzpx1"))))
(build-system gnu-build-system)
(outputs `("out" "utils"))
(inputs

View File

@ -110,7 +110,18 @@
(find-files "." "loaddefs\\.el$")
;; This is the only "autoloads" file that
;; does not have "*loaddefs.el" name.
'("eshell/esh-groups.el")))))))
'("eshell/esh-groups.el")))
;; Make sure Tramp looks for binaries in the right places on
;; remote GuixSD machines, where 'getconf PATH' returns
;; something bogus.
(substitute* "net/tramp-sh.el"
;; Patch the line after "(defcustom tramp-remote-path".
(("\\(tramp-default-remote-path")
(format #f "(tramp-default-remote-path ~s ~s ~s ~s "
"~/.guix-profile/bin" "~/.guix-profile/sbin"
"/run/current-system/profile/bin"
"/run/current-system/profile/sbin")))))))
(build-system glib-or-gtk-build-system)
(arguments
`(#:phases

View File

@ -1,6 +1,7 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2016 Eric Bavier <bavier@member.fsf.org>
;;; Copyright © 2017 David Craven <david@craven.ch>
;;;
;;; This file is part of GNU Guix.
;;;
@ -18,17 +19,21 @@
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
(define-module (gnu packages firmware)
#:use-module (guix licenses)
#:use-module ((guix licenses) #:prefix license:)
#:use-module (guix packages)
#:use-module (guix download)
#:use-module (guix git-download)
#:use-module (guix build-system gnu)
#:use-module (gnu packages)
#:use-module (gnu packages admin)
#:use-module (gnu packages assembly)
#:use-module (gnu packages bison)
#:use-module (gnu packages cmake)
#:use-module (gnu packages cross-base)
#:use-module (gnu packages flex)
#:use-module (gnu packages perl))
#:use-module (gnu packages linux)
#:use-module (gnu packages perl)
#:use-module (gnu packages python))
(define-public ath9k-htc-firmware
(package
@ -85,7 +90,7 @@
"This is the firmware for the Qualcomm Atheros AR7010 and AR9271 USB
802.11n NICs (aka Wi-Fi USB dongles). It is used by the ath9k driver of
Linux-libre.")
(license (non-copyleft "http://directory.fsf.org/wiki/License:ClearBSD"))))
(license (license:non-copyleft "http://directory.fsf.org/wiki/License:ClearBSD"))))
(define-public b43-tools
(let ((commit "8dce53297966b31b6c70a7a03c2433978dd9f288")
@ -143,7 +148,7 @@ Linux-libre.")
"The b43 firmware tools is a collection of firmware extractor,
assembler, disassembler, and debugging tools for the Linux kernel b43 wireless
driver.")
(license gpl2))))
(license license:gpl2))))
(define-public openfwwf-firmware
(package
@ -173,4 +178,125 @@ driver.")
"This is firmware from Open FirmWare for WiFi networks (OpenFWWF) for the
Broadcom/AirForce chipset BCM43xx with Wireless-Core Revision 5. It is used
by the b43-open driver of Linux-libre.")
(license gpl2)))
(license license:gpl2)))
(define-public seabios
(package
(name "seabios")
(version "1.10.1")
(source (origin
(method url-fetch)
(uri (string-append "https://code.coreboot.org/p/seabios/downloads/get/"
"seabios-" version ".tar.gz"))
(sha256
(base32
"1jyjl719drnl1v0gf0l5q6qjjmkyqcqkka6s28dfdi0yqsxdsqsh"))))
(build-system gnu-build-system)
(native-inputs
`(("python-2" ,python-2)))
(arguments
`(#:tests? #f ; No check target.
#:phases
(modify-phases %standard-phases
(replace 'configure
(lambda _
(setenv "CC" "gcc")
#t))
(replace 'install
(lambda* (#:key outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
(fmw (string-append out "/share/firmware")))
(mkdir-p fmw)
(copy-file "out/bios.bin" (string-append fmw "/bios.bin"))))))))
(home-page "https://www.seabios.org/SeaBIOS")
(synopsis "x86 BIOS implementation")
(description "SeaBIOS is an open source implementation of a 16bit x86 BIOS.
SeaBIOS can run in an emulator or it can run natively on X86 hardware with the
use of coreboot.")
;; Dual licensed.
(license (list license:gpl3+ license:lgpl3+
;; src/fw/acpi-dsdt.dsl is lgpl2
license:lgpl2.1
;; src/fw/lzmadecode.c and src/fw/lzmadecode.h are lgpl3+ and
;; cpl with a linking exception.
license:cpl1.0))))
;; OVMF is part of the edk2 source tree.
(define edk2-commit "13a50a6fe1dcfa6600c38456ee24e0f9ecf51b5f")
(define edk2-version (git-version "20170116" "1" edk2-commit))
(define edk2-origin
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/tianocore/edk2")
(commit edk2-commit)))
(file-name (git-file-name "edk2" edk2-version))
(sha256
(base32
"1gy2332kdqk8bjzpcsripx10896rbvgl0ic7r344kmpiwdgm948b"))))
(define-public ovmf
(package
(name "ovmf")
(version edk2-version)
(source edk2-origin)
(build-system gnu-build-system)
(native-inputs
`(("acpica" ,acpica)
("nasm" ,nasm)
("python-2" ,python-2)
("util-linux" ,util-linux)))
(arguments
`(#:tests? #f ; No check target.
#:phases
(modify-phases %standard-phases
(replace 'configure
(lambda _
(let* ((cwd (getcwd))
(tools (string-append cwd "/BaseTools"))
(bin (string-append tools "/BinWrappers/PosixLike")))
(setenv "WORKSPACE" cwd)
(setenv "EDK_TOOLS_PATH" tools)
(setenv "PATH" (string-append (getenv "PATH") ":" bin))
(system* "bash" "edksetup.sh" "BaseTools")
(substitute* "Conf/target.txt"
(("^TARGET[ ]*=.*$") "TARGET = RELEASE\n")
(("^TOOL_CHAIN_TAG[ ]*=.*$") "TOOL_CHAIN_TAG = GCC49\n")
(("^MAX_CONCURRENT_THREAD_NUMBER[ ]*=.*$")
(format #f "MAX_CONCURRENT_THREAD_NUMBER = ~a~%"
(number->string (parallel-job-count)))))
;; Build build support.
(setenv "BUILD_CC" "gcc")
(zero? (system* "make" "-C" (string-append tools "/Source/C"))))))
(add-after 'build 'build-ia32
(lambda _
(substitute* "Conf/target.txt"
(("^TARGET_ARCH[ ]*=.*$") "TARGET_ARCH = IA32\n")
(("^ACTIVE_PLATFORM[ ]*=.*$")
"ACTIVE_PLATFORM = OvmfPkg/OvmfPkgIa32.dsc\n"))
(zero? (system* "build"))))
(add-after 'build 'build-x64
(lambda _
(substitute* "Conf/target.txt"
(("^TARGET_ARCH[ ]*=.*$") "TARGET_ARCH = X64\n")
(("^ACTIVE_PLATFORM[ ]*=.*$")
"ACTIVE_PLATFORM = OvmfPkg/OvmfPkgX64.dsc\n"))
(zero? (system* "build"))))
(delete 'build)
(replace 'install
(lambda* (#:key outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
(fmw (string-append out "/share/firmware")))
(mkdir-p fmw)
(copy-file "Build/OvmfIa32/RELEASE_GCC49/FV/OVMF.fd"
(string-append fmw "/ovmf_ia32.bin"))
(copy-file "Build/OvmfX64/RELEASE_GCC49/FV/OVMF.fd"
(string-append fmw "/ovmf_x64.bin")))
#t)))))
(supported-systems '("x86_64-linux" "i686-linux"))
(home-page "http://www.tianocore.org")
(synopsis "UEFI firmware for QEMU")
(description "OVMF is an EDK II based project to enable UEFI support for
Virtual Machines. OVMF contains a sample UEFI firmware for QEMU and KVM.")
(license (list license:expat
license:bsd-2 license:bsd-3 license:bsd-4))))

View File

@ -16,6 +16,7 @@
;;; Copyright © 2016 Toni Reina <areina@riseup.net>
;;; Copyright © 2017 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2017 José Miguel Sánchez García <jmi2k@openmailbox.com>
;;; Copyright © 2017 Alex Griffin <a@ajgrf.com>
;;;
;;; This file is part of GNU Guix.
;;;
@ -38,11 +39,13 @@
#:use-module ((guix licenses) #:prefix license:)
#:use-module (guix packages)
#:use-module (guix download)
#:use-module (guix git-download)
#:use-module (guix build-system gnu)
#:use-module (guix build-system trivial)
#:use-module (gnu packages base)
#:use-module (gnu packages compression)
#:use-module (gnu packages fontutils)
#:use-module (gnu packages golang)
#:use-module (gnu packages perl)
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages python)
@ -525,13 +528,11 @@ ko (Korean) locales for @code{fontconfig}.")
(let ((PATH (string-append (assoc-ref %build-inputs "tar") "/bin:"
(assoc-ref %build-inputs "gzip") "/bin"))
(font-dir (string-append (assoc-ref %outputs "out")
"/share/fonts/wenquanyi/")))
(setenv "PATH" PATH)
"/share/fonts/wenquanyi")))
(mkdir-p font-dir)
(setenv "PATH" PATH)
(system* "tar" "xvf" (assoc-ref %build-inputs "source"))
(chdir "wqy-microhei")
(copy-file "wqy-microhei.ttc"
(string-append font-dir "wqy-microhei.ttc"))))))
(install-file "wqy-microhei/wqy-microhei.ttc" font-dir)))))
(native-inputs
`(("gzip" ,gzip)
("tar" ,tar)))
@ -760,8 +761,7 @@ display all Unicode symbols.")
(mkdir-p font-dir)
(chdir "roboto-hinted")
(for-each (lambda (ttf)
(copy-file ttf
(string-append font-dir "/" ttf)))
(install-file ttf font-dir))
(find-files "." "\\.ttf$"))))))
(home-page "https://github.com/google/roboto")
(synopsis "The Roboto family of fonts")
@ -1034,3 +1034,111 @@ designed to work well in user interface environments.")
"Font Awesome is a full suite of pictographic icons for easy scalable
vector graphics.")
(license license:silofl1.1)))
(define-public font-comic-neue
(package
(name "font-comic-neue")
(version "2.3")
(source (origin
(method url-fetch)
(uri (string-append
"http://www.comicneue.com/comic-neue-" version ".zip"))
(sha256
(base32
"1695hkpd8kqnr2a88p8xs496slgzxjjkzpa9aa33ml3pnh7519zk"))))
(build-system trivial-build-system)
(arguments
`(#:modules ((guix build utils))
#:builder (begin
(use-modules (guix build utils))
(let ((font-dir (string-append %output
"/share/fonts/truetype"))
(source (assoc-ref %build-inputs "source"))
(unzip (string-append (assoc-ref %build-inputs "unzip")
"/bin/unzip")))
(mkdir-p font-dir)
(system* unzip source)
(with-directory-excursion
(string-append "Web")
(for-each (lambda (ttf)
(install-file ttf font-dir))
(find-files "." "\\.ttf$")))))))
(native-inputs `(("unzip" ,unzip)))
(home-page "http://www.comicneue.com/")
(synopsis "Font that fixes the shortcomings of Comic Sans")
(description
"Comic Neue is a font that attempts to create a respectable casual
typeface, by mimicking Comic Sans while fixing its most obvious shortcomings.")
(license license:silofl1.1)))
(define-public font-iosevka
(package
(name "font-iosevka")
(version "1.11.0")
(source (origin
(method url-fetch)
(uri (string-append
"https://github.com/be5invis/Iosevka/releases/download/v"
version "/iosevka-pack-" version ".zip"))
(sha256
(base32
"0d8prdk7s5z94sdfd0y92cvqq531yqrlg7hnadbnhd7fs9jqr5hj"))))
(build-system trivial-build-system)
(arguments
`(#:modules ((guix build utils))
#:builder (begin
(use-modules (guix build utils))
(let ((font-dir (string-append %output
"/share/fonts/truetype"))
(source (assoc-ref %build-inputs "source"))
(unzip (string-append (assoc-ref %build-inputs "unzip")
"/bin/unzip")))
(mkdir-p font-dir)
(system* unzip "-d" font-dir source)))))
(native-inputs `(("unzip" ,unzip)))
(home-page "https://be5invis.github.io/Iosevka/")
(synopsis "Coders' typeface, built from code")
(description
"Iosevka is a slender monospace sans-serif or slab-serif typeface inspired
by Pragmata Pro, M+, and PF DIN Mono, designed to be the ideal font for
programming. Iosevka is completely generated from its source code.")
(license (list license:silofl1.1 ; build artifacts (i.e. the fonts)
license:bsd-3)))) ; supporting code
(define-public font-go
(let ((commit "b7f8df6bc082334698d4505fb85fa05e99156b72")
(revision "1"))
(package
(name "font-go")
(version (string-append "20161115-" revision "." (string-take commit 7)))
(source (origin
(file-name (string-append "go-image-" version "-checkout"))
(method git-fetch)
(uri (git-reference
(url "https://go.googlesource.com/image")
(commit commit)))
(sha256
(base32
"1ywxs6dmcyzwwsmnan3qqza7znprnbvmdi260x6sjmydz6dyq2zs"))))
(build-system trivial-build-system)
(arguments
`(#:modules ((guix build utils))
#:builder (begin
(use-modules (guix build utils))
(let ((font-dir (string-append %output
"/share/fonts/truetype"))
(source (assoc-ref %build-inputs "source")))
(mkdir-p font-dir)
(with-directory-excursion
(string-append source "/font/gofont/ttfs")
(for-each (lambda (ttf)
(install-file ttf font-dir))
(find-files "." "\\.ttf$")))))))
(home-page "https://blog.golang.org/go-fonts")
(synopsis "The Go font family")
(description
"The Go font family is a set of WGL4 TrueType fonts from the Bigelow &
Holmes type foundry, released under the same license as the Go programming
language. It includes a set of proportional, sans-serif fonts, and a set of
monospace, slab-serif fonts.")
(license (package-license go-1.4)))))

View File

@ -17,13 +17,14 @@
;;; Copyright © 2015 Taylan Ulrich Bayırlı/Kammer <taylanbayirli@gmail.com>
;;; Copyright © 2016 Rodger Fox <thylakoid@openmailbox.org>
;;; Copyright © 2016 Manolis Fragkiskos Ragkousis <manolis837@gmail.com>
;;; Copyright © 2016 ng0 <ng0@we.make.ritual.n0.is>
;;; Copyright © 2016, 2017 ng0 <contact.ng0@cryptolab.net>
;;; Copyright © 2016 Albin Söderqvist <albin@fripost.org>
;;; Copyright © 2016 Kei Kebreau <kei@openmailbox.org>
;;; Copyright © 2016 Alex Griffin <a@ajgrf.com>
;;; Copyright © 2016 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2016 Jan Nieuwenhuizen <janneke@gnu.org>
;;; Copyright © 2016 Steve Webber <webber.sl@gmail.com>
;;; Copyright © 2017 Adonay "adfeno" Felipe Nogueira <https://libreplanet.org/wiki/User:Adfeno> <adfeno@openmailbox.org>
;;;
;;; This file is part of GNU Guix.
;;;
@ -177,22 +178,23 @@ scriptable with Guile.")
(define-public abbaye
(package
(name "abbaye")
(version "1.13")
(version "2.0.1")
(source
(origin
(method url-fetch)
(uri (string-append "https://storage.googleapis.com/"
"google-code-archive-downloads/v2/code.google.com/"
"abbaye-for-linux/abbaye-for-linux-src-"
version ".tar.gz"))
(uri (string-append "https://github.com/nevat/abbayedesmorts-gpl/"
"archive/v" version ".tar.gz"))
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
"1wgvckgqa2084rbskxif58wbb83xbas8s1i8s7d57xbj08ryq8rk"))))
"1a67b0hq6271dd7pvwndjq29cwn2n8gawwz17xafa3k1hrhf8vw3"))
(modules '((guix build utils)))
(snippet
;; Unbundle fonts.
'(delete-file-recursively "fonts"))))
(build-system gnu-build-system)
(arguments
'(#:modules ((ice-9 match)
(guix build gnu-build-system)
(guix build utils))
'(#:make-flags '("CC=gcc")
#:phases (modify-phases %standard-phases
(add-after 'set-paths 'set-sdl-paths
(lambda* (#:key inputs #:allow-other-keys)
@ -202,10 +204,8 @@ scriptable with Guile.")
(add-after 'patch-source-shebangs 'patch-makefile
(lambda* (#:key outputs #:allow-other-keys)
;; Replace /usr with package output directory.
(for-each (lambda (file)
(substitute* file
(("/usr") (assoc-ref outputs "out"))))
'("makefile" "src/pantallas.c" "src/comun.h"))))
(substitute* "Makefile"
(("/usr") (assoc-ref outputs "out")))))
(add-before 'install 'make-install-dirs
(lambda* (#:key outputs #:allow-other-keys)
(let ((prefix (assoc-ref outputs "out")))
@ -217,15 +217,15 @@ scriptable with Guile.")
(delete 'configure))
#:tests? #f)) ;; No check target.
(native-inputs `(("pkg-config" ,pkg-config)))
(inputs `(("sdl-union" ,(sdl-union))))
(home-page "http://code.google.com/p/abbaye-for-linux/")
(inputs `(("sdl-union" ,(sdl-union (list sdl2 sdl2-image sdl2-mixer)))))
(home-page "https://github.com/nevat/abbayedesmorts-gpl")
(synopsis "GNU/Linux port of the indie game \"l'Abbaye des Morts\"")
(description "L'Abbaye des Morts is a 2D platform game set in 13th century
France. The Cathars, who preach about good Christian beliefs, were being
expelled by the Catholic Church out of the Languedoc region in France. One of
them, called Jean Raymond, found an old church in which to hide, not knowing
that beneath its ruins lay buried an ancient evil.")
(license license:gpl3+)))
(license license:gpl3)))
(define-public pingus
(package
@ -3102,3 +3102,39 @@ inspired by the history of human civilization. The game commences in
prehistory and your mission is to lead your tribe from the Stone Age
to the Space Age.")
(license license:gpl2+)))
(define-public no-more-secrets
(package
(name "no-more-secrets")
(version "0.3.0")
(source
(origin
(method url-fetch)
(uri (string-append "https://github.com/bartobri/no-more-secrets/"
"archive/v" version ".tar.gz"))
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
"038flwqr0kqv55im2v76xjn01zbvvkb3nzb5ridwm2kbnk9cgg4v"))))
(build-system gnu-build-system)
(arguments
`(#:tests? #f
#:make-flags (list "CC=gcc" "all-ncurses"
(string-append "prefix="
(assoc-ref %outputs "out")))
#:phases
(modify-phases %standard-phases
(delete 'configure))))
(inputs
`(("ncurses" ,ncurses)))
(home-page "https://github.com/bartobri/no-more-secrets")
(synopsis "Recreation of data decryption effect in \"Sneakers\"")
(description
"@code{No More Secrets} provides a command line tool called \"nms\"
that recreates the famous data decryption effect seen on screen in the 1992
movie \"Sneakers\".
This command works on piped data. Pipe any ASCII or UTF-8 text to nms, and
it will apply the hollywood effect, initially showing encrypted data, then
starting a decryption sequence to reveal the original plaintext characters.")
(license license:expat)))

View File

@ -30,6 +30,7 @@
#:use-module (guix build-system python)
#:use-module (gnu packages)
#:use-module (gnu packages base)
#:use-module (gnu packages backup)
#:use-module (gnu packages bison)
#:use-module (gnu packages compression)
#:use-module (gnu packages enlightenment)
@ -39,6 +40,7 @@
#:use-module (gnu packages gtk)
#:use-module (gnu packages libffi)
#:use-module (gnu packages linux)
#:use-module (gnu packages nettle)
#:use-module (gnu packages pcre)
#:use-module (gnu packages perl)
#:use-module (gnu packages pkg-config)
@ -665,7 +667,6 @@ many applications simultaneously.
This package provides the library for GLib applications.")
(license license:lgpl2.1+)))
(define-public dbus-c++
(package
(name "dbus-c++")
@ -705,3 +706,46 @@ programming langauage. It also contains the utility
@command{dbuscxx-xml2cpp}.")
(home-page "https://sourceforge.net/projects/dbus-cplusplus/")
(license license:lgpl2.1+)))
(define-public appstream-glib
(package
(name "appstream-glib")
(version "0.6.7")
(source (origin
(method url-fetch)
(uri (string-append "https://people.freedesktop.org/~hughsient/"
"appstream-glib/releases/"
"appstream-glib-" version ".tar.xz"))
(sha256
(base32
"08mrf4k0jhnpdd4fig2grmi2vbxkgdhrwk0d0zq0j1wp5ip7arwp"))))
(build-system gnu-build-system)
(native-inputs
`(("pkg-config" ,pkg-config)))
(inputs
`(("gdk-pixbuf" ,gdk-pixbuf)
("glib" ,glib)
("gtk+" ,gtk+)
("json-glib" ,json-glib)
("libarchive" ,libarchive)
("libsoup" ,libsoup)
("nettle" ,nettle)
("util-linux" ,util-linux)))
(arguments
`(#:configure-flags
'("--disable-firmware" "--disable-dep11")
#:phases
(modify-phases %standard-phases
(add-after 'unpack 'patch-tests
(lambda _
(substitute* "libappstream-glib/as-self-test.c"
(("g_test_add_func.*as_test_store_local_appdata_func);") "")
(("g_test_add_func.*as_test_store_speed_appdata_func);") "")
(("g_test_add_func.*as_test_store_speed_desktop_func);") ""))
#t)))))
(home-page "https://github.com/hughsie/appstream-glib")
(synopsis "Library for reading and writing AppStream metadata")
(description "This library provides objects and helper methods to help
reading and writing @uref{https://www.freedesktop.org/wiki/Distributions/AppStream,AppStream}
metadata.")
(license license:lgpl2.1+)))

View File

@ -22,6 +22,7 @@
;;; Copyright © 2016 ng0 <ng0@we.make.ritual.n0.is>
;;; Copyright © 2016 David Craven <david@craven.ch>
;;; Copyright © 2016 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2017 Thomas Danckaert <post@thomasdanckaert.be>
;;;
;;; This file is part of GNU Guix.
;;;
@ -96,11 +97,13 @@
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages pulseaudio)
#:use-module (gnu packages python)
#:use-module (gnu packages rdesktop)
#:use-module (gnu packages scanner)
#:use-module (gnu packages ssh)
#:use-module (gnu packages xml)
#:use-module (gnu packages gl)
#:use-module (gnu packages compression)
#:use-module (gnu packages spice)
#:use-module (gnu packages tex)
#:use-module (gnu packages tls)
#:use-module (gnu packages web)
@ -321,6 +324,43 @@ Gnome project. It includes xml2po tool which makes it easier to translate
and keep up to date translations of documentation.")
(license license:gpl2+))) ; xslt under lgpl
(define-public gnome-disk-utility
(package
(name "gnome-disk-utility")
(version "3.22.1")
(source (origin
(method url-fetch)
(uri (string-append "mirror://gnome/sources/" name "/"
(version-major+minor version) "/"
name "-" version ".tar.xz"))
(sha256
(base32
"1hqynlcgwm72il2rdml98gcarz0alsgxs5xf6ww2x0czaj3s3953"))))
(build-system gnu-build-system)
(native-inputs
`(("glib:bin" ,glib "bin")
("intltool" ,intltool)
("pkg-config" ,pkg-config)
("docbook-xml" ,docbook-xml)
("docbook-xsl" ,docbook-xsl)
("libxml2" ,libxml2)
("libxslt" ,libxslt)))
(inputs
`(("glib" ,glib)
("appstream-glib" ,appstream-glib)
("gnome-settings-daemon" ,gnome-settings-daemon)
("gtk+" ,gtk+)
("libcanberra" ,libcanberra)
("libdvdread" ,libdvdread)
("libnotify" ,libnotify)
("libpwquality" ,libpwquality)
("libsecret" ,libsecret)
("udisks" ,udisks)))
(home-page "https://git.gnome.org/browse/gnome-disk-utility")
(synopsis "Disk management utility for GNOME")
(description "Disk management utility for GNOME.")
(license license:gpl2+)))
(define-public gcr
(package
(name "gcr")
@ -1824,7 +1864,7 @@ editors, IDEs, etc.")
(package
(inherit vte)
(name "vte-ng")
(version "0.44.1.b")
(version "0.46.1.a")
(native-inputs
`(("gtk-doc" ,gtk-doc)
("gperf" ,gperf)
@ -1839,7 +1879,7 @@ editors, IDEs, etc.")
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
"1mhz4i1qkdlrs49vgm7nsrb60lry9v6wsgwsmji7fln1nyrp1pag"))))
"1c0czhsn28b5h4pk3kx89jjbdc5d2qkxhl4ywqvxfivphf2nicbp"))))
(arguments
`(#:configure-flags '("CXXFLAGS=-Wformat=0")
#:phases (modify-phases %standard-phases
@ -1900,6 +1940,43 @@ selection and URL hints.")))
`(("gtk+" ,gtk+-2) ; required by libvte.pc
("ncurses" ,ncurses))))) ; required by libvte.la
(define-public vinagre
(package
(name "vinagre")
(version "3.22.0")
(source (origin
(method url-fetch)
(uri (string-append "mirror://gnome/sources/" name "/"
(version-major+minor version) "/"
name "-" version ".tar.xz"))
(sha256
(base32
"10jya3jyrm18nbw3v410gbkc7677bqamax44pzgd3j15randn76d"))))
(build-system glib-or-gtk-build-system)
(native-inputs
`(("pkg-config" ,pkg-config)
("intltool" ,intltool)
("itstool" ,itstool)
("glib-bin" ,glib "bin") ;for glib-compile-schemas
("gtk+-bin" ,gtk+ "bin"))) ;for gtk-update-icon-cache
(inputs
`(("libxml2" ,libxml2)
("gtk-vnc" ,gtk-vnc)
("gnome-keyring" ,gnome-keyring)
("libsecret" ,libsecret)
("freerdp" ,freerdp)
("spice" ,spice)
("spice-gtk" ,spice-gtk)
("telepathy-glib" ,telepathy-glib)
("vte" ,vte)))
(arguments
`(#:configure-flags '("--enable-rdp")))
(home-page "https://wiki.gnome.org/Apps/Vinagre")
(synopsis "Remote desktop viewer for GNOME")
(description "Vinagre is a remote display client supporting the VNC, SPICE
and RDP protocols.")
(license license:gpl3+)))
(define-public dconf
(package
(name "dconf")
@ -3634,7 +3711,7 @@ work and the interface is well tested.")
(define-public epiphany
(package
(name "epiphany")
(version "3.22.4")
(version "3.22.6")
(source (origin
(method url-fetch)
(uri (string-append "mirror://gnome/sources/" name "/"
@ -3642,7 +3719,7 @@ work and the interface is well tested.")
name "-" version ".tar.xz"))
(sha256
(base32
"0skdsma9rmq01703andigmpbdn2rl34y3lqny19a93v1ph3jb9qk"))))
"1hpwjwiviwh9dgc9cwq0gmr5jy40rvigjcq0cbg2nw2hqiyshzny"))))
(build-system glib-or-gtk-build-system)
(arguments
;; FIXME: tests run under Xvfb, but fail with:
@ -3650,7 +3727,8 @@ work and the interface is well tested.")
;; ** (test-ephy-bookmarks:19591): WARNING **: Unable to start Zeroconf
;; subsystem
;; FAIL
'(#:tests? #f))
'(#:tests? #f
#:configure-flags '("CFLAGS=-std=gnu99")))
(propagated-inputs
`(("dconf" ,dconf)))
(native-inputs
@ -4203,17 +4281,20 @@ to display dialog boxes from the commandline and shell scripts.")
(license license:lgpl2.0+)))
(define-public mutter
;; Uses the gnome 3.22 branch that only contains bug fixes.
(let ((commit "23c315ea7121e9bd108e2837d0b4beeba53c5e18"))
(package
(name "mutter")
(version "3.22.2")
(version (git-version "3.22.2" "1" commit))
(source (origin
(method url-fetch)
(uri (string-append "mirror://gnome/sources/" name "/"
(version-major+minor version) "/"
name "-" version ".tar.xz"))
(method git-fetch)
(uri (git-reference
(url "git://git.gnome.org/mutter")
(commit commit)))
(file-name (git-file-name name version))
(sha256
(base32
"18lj80klfnkwh0cb3ab0i1vfvzbp0zjl73x9d7pna4dsdhsmi6ym"))))
"1v1f9xyzjr1ihmfwpq9kzlv2lyr9qn63ck8zny699mbp5hsi11mb"))))
;; NOTE: Since version 3.21.x, mutter now bundles and exports forked
;; versions of cogl and clutter. As a result, many of the inputs,
;; propagated-inputs, and configure flags used in cogl and clutter are
@ -4236,12 +4317,21 @@ to display dialog boxes from the commandline and shell scripts.")
"--enable-cogl-gst"
(string-append "--with-gl-libname="
(assoc-ref %build-inputs "mesa")
"/lib/libGL.so"))))
"/lib/libGL.so"))
#:phases
(modify-phases %standard-phases
(add-after 'unpack 'autoreconf
(lambda _
(zero? (system* "autoreconf" "-vfi")))))))
(native-inputs
`(("glib:bin" ,glib "bin") ; for glib-compile-schemas, etc.
("gobject-introspection" ,gobject-introspection)
("intltool" ,intltool)
("pkg-config" ,pkg-config)))
("pkg-config" ,pkg-config)
;; For git build
("autoconf" ,autoconf)
("automake" ,automake)
("libtool" ,libtool)))
(propagated-inputs
`(;; libmutter.pc refers to these:
("gsettings-desktop-schemas" ,gsettings-desktop-schemas)
@ -4287,7 +4377,7 @@ to display dialog boxes from the commandline and shell scripts.")
desktop via OpenGL. Mutter combines a sophisticated display engine using the
Clutter toolkit with solid window-management logic inherited from the Metacity
window manager.")
(license license:gpl2+)))
(license license:gpl2+))))
(define-public gnome-online-accounts
(package

View File

@ -5,7 +5,7 @@
;;; Copyright © 2015 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2016 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2016 Mark H Weaver <mhw@netris.org>
;;; Copyright © 2016 ng0 <ng0@libertad.pw>
;;; Copyright © 2016, 2017 ng0 <contact.ng0@cryptolab.net>
;;;
;;; This file is part of GNU Guix.
;;;
@ -44,7 +44,9 @@
#:use-module (gnu packages libunistring)
#:use-module (gnu packages maths)
#:use-module (gnu packages multiprecision)
#:use-module (gnu packages music)
#:use-module (gnu packages ncurses)
#:use-module (gnu packages package-management)
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages perl)
#:use-module (gnu packages pulseaudio)
@ -87,13 +89,11 @@
;; The following dependencies are all optional, but should be
;; available for maximum coverage:
;; * libmagic (file)
;; * libmp4v2 ; package it
;; * librpm ; package it
;; * libsmf ; package it
;; * libtidy ; package it
;; * librpm (rpm) ; investigate failure
;; * libgif (giflib) ; investigate failure
(inputs
`(("exiv2" ,exiv2)
("bzip2" ,bzip2)
("flac" ,flac)
("ffmpeg" ,ffmpeg)
("file" ,file) ;libmagic, for the MIME plug-in
@ -106,17 +106,39 @@
("libjpeg" ,libjpeg)
("libltdl" ,libltdl)
("libmpeg2" ,libmpeg2)
("libmp4v2" ,libmp4v2)
("libsmf" ,libsmf)
("tidy-html" ,tidy-html)
("libogg" ,libogg)
("libtiff" ,libtiff)
("libvorbis" ,libvorbis)
("zlib" ,zlib)))
(native-inputs
`(("pkg-config" ,pkg-config)))
(outputs '("out"
"static")) ; 396 KiB .a files
(arguments
`(#:configure-flags
(list (string-append "--with-ltdl="
(assoc-ref %build-inputs "libltdl")))
#:parallel-tests? #f))
(assoc-ref %build-inputs "libltdl"))
(string-append "--with-tidy="
(assoc-ref %build-inputs "tidy-html")))
#:parallel-tests? #f
#:phases
(modify-phases %standard-phases
(add-after 'install 'move-static-libraries
(lambda* (#:key outputs #:allow-other-keys)
;; Move static libraries to the "static" output.
(let* ((out (assoc-ref outputs "out"))
(lib (string-append out "/lib"))
(static (assoc-ref outputs "static"))
(slib (string-append static "/lib")))
(mkdir-p slib)
(for-each (lambda (file)
(install-file file slib)
(delete-file file))
(find-files lib "\\.a$"))
#t))))))
(synopsis "Library to extract meta-data from media files")
(description
"GNU libextractor is a library for extracting metadata from files. It

View File

@ -1,161 +0,0 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2013, 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2015 Mark H Weaver <mhw@netris.org>
;;; Copyright © 2015 Leo Famulari <leo@famulari.name>
;;; Copyright © 2016 Jan Nieuwenhuizen <janneke@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;
;;; GNU Guix is free software; you can redistribute it and/or modify it
;;; under the terms of the GNU General Public License as published by
;;; the Free Software Foundation; either version 3 of the License, or (at
;;; your option) any later version.
;;;
;;; GNU Guix is distributed in the hope that it will be useful, but
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;;; GNU General Public License for more details.
;;;
;;; You should have received a copy of the GNU General Public License
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
(define-module (gnu packages grub)
#:use-module (guix download)
#:use-module (guix packages)
#:use-module (guix utils)
#:use-module ((guix licenses) #:select (gpl3+))
#:use-module (guix build-system gnu)
#:use-module (gnu packages)
#:use-module (gnu packages flex)
#:use-module (gnu packages disk)
#:use-module (gnu packages bison)
#:use-module (gnu packages gettext)
#:use-module (gnu packages fontutils)
#:use-module (gnu packages linux)
#:use-module (gnu packages qemu)
#:use-module (gnu packages man)
#:use-module (gnu packages texinfo)
#:use-module (gnu packages ncurses)
#:use-module (gnu packages cdrom))
(define unifont
;; GNU Unifont, <http://gnu.org/s/unifont>.
;; GRUB needs it for its graphical terminal, gfxterm.
(origin
(method url-fetch)
(uri
"http://unifoundry.com/pub/unifont-7.0.06/font-builds/unifont-7.0.06.bdf.gz")
(sha256
(base32
"0p2vhnc18cnbmb39vq4m7hzv4mhnm2l0a2s7gx3ar277fwng3hys"))))
(define-public grub
(package
(name "grub")
(version "2.02beta3")
(source (origin
(method url-fetch)
(uri (string-append
"ftp://alpha.gnu.org/gnu/grub/grub-"
"2.02~beta3"
".tar.xz"))
(file-name (string-append name "-" version ".tar.xz"))
(sha256
(base32
"18ddwnw0vxs7zigvah0g6a5z5vvlz0p8fjglxv1h59sjbrakvv1h"))))
(build-system gnu-build-system)
(arguments
'(;; Two warnings: suggest braces, signed/unsigned comparison.
#:configure-flags '("--disable-werror")
#:phases (modify-phases %standard-phases
(add-after 'unpack 'patch-stuff
(lambda* (#:key inputs #:allow-other-keys)
(substitute* "grub-core/Makefile.in"
(("/bin/sh") (which "sh")))
;; Give the absolute file name of 'mdadm', used to
;; determine the root file system when it's a RAID
;; device. Failing to do that, 'grub-probe' silently
;; fails if 'mdadm' is not in $PATH.
(substitute* "grub-core/osdep/linux/getroot.c"
(("argv\\[0\\] = \"mdadm\"")
(string-append "argv[0] = \""
(assoc-ref inputs "mdadm")
"/sbin/mdadm\"")))
;; Make the font visible.
(copy-file (assoc-ref inputs "unifont") "unifont.bdf.gz")
(system* "gunzip" "unifont.bdf.gz")
;; We hit an assertion failure in
;; grub-core/tests/video_checksum.c, as reported at
;; <https://lists.gnu.org/archive/html/grub-devel/2016-07/msg00026.html>.
;; Disable this test for now.
(substitute* "tests/grub_func_test.in"
(("set -e") "exit 77\nset -e"))
#t)))))
(inputs
`(("gettext" ,gettext-minimal)
;; Depend on LVM2 for libdevmapper, used by 'grub-probe' and
;; 'grub-install' to recognize mapped devices (LUKS, etc.)
("lvm2" ,lvm2)
;; Depend on mdadm, which is invoked by 'grub-probe' and 'grub-install'
;; to determine whether the root file system is RAID.
("mdadm" ,mdadm)
("freetype" ,freetype)
;; ("libusb" ,libusb)
;; ("fuse" ,fuse)
("ncurses" ,ncurses)))
(native-inputs
`(("unifont" ,unifont)
("bison" ,bison)
("flex" ,flex)
("texinfo" ,texinfo)
("help2man" ,help2man)
;; Dependencies for the test suite. The "real" QEMU is needed here,
;; because several targets are used.
("parted" ,parted)
("qemu" ,qemu-minimal)
("xorriso" ,xorriso)))
(home-page "https://www.gnu.org/software/grub/")
(synopsis "GRand Unified Boot loader")
(description
"GRUB is a multiboot bootloader. It is used for initially loading the
kernel of an operating system and then transferring control to it. The kernel
then goes on to load the rest of the operating system. As a multiboot
bootloader, GRUB handles the presence of multiple operating systems installed
on the same computer; upon booting the computer, the user is presented with a
menu to select one of the installed operating systems.")
(license gpl3+)
(properties '((cpe-name . "grub2")))))
(define-public grub-efi
(package
(inherit grub)
(name "grub-efi")
(synopsis "GRand Unified Boot loader (UEFI version)")
(inputs
`(("efibootmgr" ,efibootmgr)
,@(package-inputs grub)))
(arguments
`(;; TODO: Tests need a UEFI firmware for qemu. There is one at
;; https://github.com/tianocore/edk2/tree/master/OvmfPkg .
;; Search for 'OVMF' in "tests/util/grub-shell.in".
#:tests? #f
,@(substitute-keyword-arguments (package-arguments grub)
((#:configure-flags flags) `(cons* "--with-platform=efi"
,flags))
((#:phases phases)
`(modify-phases ,phases
(add-after 'patch-stuff 'use-absolute-efibootmgr-path
(lambda* (#:key inputs #:allow-other-keys)
(substitute* "grub-core/osdep/unix/platform.c"
(("efibootmgr")
(string-append (assoc-ref inputs "efibootmgr")
"/sbin/efibootmgr")))
#t)))))))))

View File

@ -154,7 +154,9 @@ This package provides the core library and elements.")
name "-" version ".tar.xz"))
(sha256
(base32
"040pifl4cgsqqz2si4s1y5khj3zwm39w21siagxwp805swbrcag6"))))
"040pifl4cgsqqz2si4s1y5khj3zwm39w21siagxwp805swbrcag6"))
(patches
(search-patches "gst-plugins-base-fix-test-on-32bit.patch"))))
(build-system gnu-build-system)
(outputs '("out" "doc"))
(propagated-inputs

View File

@ -624,12 +624,15 @@ for Guile\".")
(home-page "http://savannah.nongnu.org/projects/guile-json/")
(synopsis "JSON module for Guile")
(description
"Guile-json supports parsing and building JSON documents according to the
http:://json.org specification. These are the main features:
- Strictly complies to http://json.org specification.
- Build JSON documents programmatically via macros.
- Unicode support for strings.
- Allows JSON pretty printing.")
"Guile-JSON supports parsing and building JSON documents according to the
specification. These are the main features:
@itemize
@item Strictly complies to @uref{http://json.org, specification}.
@item Build JSON documents programmatically via macros.
@item Unicode support for strings.
@item Allows JSON pretty printing.
@end itemize\n")
(license lgpl3+)))
(define-public guile2.2-json

View File

@ -46,14 +46,14 @@
;; The 7 release series has an incompatible API, while the 6 series is still
;; maintained. Don't update to 7 until we've made sure that the ImageMagick
;; users are ready for the 7-series API.
(version "6.9.7-5")
(version "6.9.7-7")
(source (origin
(method url-fetch)
(uri (string-append "mirror://imagemagick/ImageMagick-"
version ".tar.xz"))
(sha256
(base32
"013f3g9pvvqgxchdkjxx4nr80sfq51nmkc3ij39m2xzyc438bq8c"))))
"02x463z31j449pfm8czb7jlpkd3nx4a3yyjxq3bhpjfq13i20d62"))))
(build-system gnu-build-system)
(arguments
`(#:configure-flags '("--with-frozenpaths" "--without-gcc-arch")

View File

@ -4,6 +4,7 @@
;;; Copyright © 2015 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2015, 2016 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2016 ng0 <ng0@libertad.pw>
;;; Copyright © 2017 Marius Bakke <mbakke@fastmail.com>
;;;
;;; This file is part of GNU Guix.
;;;
@ -180,14 +181,13 @@ SILC and ICB protocols via plugins.")
(add-before 'configure 'autogen
(lambda _
(zero? (system* "./autogen.sh"))))
(add-before 'build 'set-python-file-name
(lambda* (#:key inputs #:allow-other-keys)
(substitute* "src/plugins/python/weechat-python.c"
(("python2_bin = weechat_python_get_python2_bin.*;")
(string-append "python2_bin = strdup (\""
(assoc-ref inputs "python")
"/bin/python\");\n")))
#t)))))
(add-after 'install 'wrap
(lambda* (#:key inputs outputs #:allow-other-keys)
(let ((out (assoc-ref outputs "out"))
(py2 (assoc-ref inputs "python")))
(wrap-program (string-append out "/bin/weechat")
`("PATH" ":" prefix (,(string-append py2 "/bin"))))
#t))))))
(synopsis "Extensible chat client")
(description "WeeChat (Wee Enhanced Environment for Chat) is an
Internet Relay Chat client, which is designed to be light and fast.

View File

@ -37,47 +37,44 @@
#:use-module (gnu packages zip))
(define-public rdmd
(let ((commit "da0a2e0a379b08294015eec9d531f1e5dd4226f0"))
(package
(name "rdmd")
(version (string-append "v2.070.0-1." (string-take commit 7)))
(source (origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/D-Programming-Language/tools.git")
(commit commit)))
(file-name (string-append name "-" version "-checkout"))
(sha256
(base32
"1pcx5lyqzrip86f4vv60x292rpvnwsq2hvl1znm9x9rn68f34m45"))))
(build-system gnu-build-system)
(arguments
'(#:phases
(modify-phases %standard-phases
(delete 'configure)
(delete 'check) ; There is no Makefile, so there's no 'make check'.
(replace
'build
(lambda _
(zero? (system* "ldc2" "rdmd.d"))))
(replace
'install
(lambda* (#:key outputs #:allow-other-keys)
(let ((bin (string-append (assoc-ref outputs "out") "/bin")))
(install-file "rdmd" bin)))))))
(native-inputs
`(("ldc" ,ldc)))
(home-page "https://github.com/D-Programming-Language/tools/")
(synopsis "Specialized equivalent to 'make' for the D language")
(description
"rdmd is a companion to the dmd compiler that simplifies the typical
(package
(name "rdmd")
(version "2.073.0")
(source (origin
(method url-fetch)
(uri (string-append "https://github.com/dlang/tools/archive/v" version ".tar.gz"))
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
"01if3ivnb7g2myfhymp4d9346s4vmvcl82i1kxfs5iza45almh7v"))))
(build-system gnu-build-system)
(arguments
'(#:phases
(modify-phases %standard-phases
(delete 'configure)
(delete 'check) ; There is no Makefile, so there's no 'make check'.
(replace
'build
(lambda _
(zero? (system* "ldc2" "rdmd.d"))))
(replace
'install
(lambda* (#:key outputs #:allow-other-keys)
(let ((bin (string-append (assoc-ref outputs "out") "/bin")))
(install-file "rdmd" bin)))))))
(native-inputs
`(("ldc" ,ldc)))
(home-page "https://github.com/D-Programming-Language/tools/")
(synopsis "Specialized equivalent to 'make' for the D language")
(description
"rdmd is a companion to the dmd compiler that simplifies the typical
edit-compile-link-run or edit-make-run cycle to a rapid edit-run cycle. Like
make and other tools, rdmd uses the relative dates of the files involved to
minimize the amount of work necessary. Unlike make, rdmd tracks dependencies
and freshness without requiring additional information from the user.")
(license license:boost1.0))))
(license license:boost1.0)))
(define-public ldc
(define-public ldc-bootstrap
(package
(name "ldc")
(version "0.17.2")
@ -176,15 +173,15 @@ latest DMD frontend and uses LLVM as backend.")
license:boost1.0))))
(define-public ldc-1.1.0-beta6
(define-public ldc
;; The phobos, druntime and dmd-testsuite dependencies do not have a newer
;; release than 1.1.0-beta4, hence the need to make use of the older-version
;; variable to hold this variable.
(let ((older-version "1.1.0-beta4"))
(let ((older-version "1.1.0"))
(package
(inherit ldc)
(inherit ldc-bootstrap)
(name "ldc")
(version "1.1.0-beta6")
(version "1.1.0")
;; Beta version needed to compile various scientific tools that require
;; the newer beta versions, and won't compile successfully with the
;; older stable version.
@ -196,7 +193,7 @@ latest DMD frontend and uses LLVM as backend.")
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
"0n53brlkm86jjkppy9xmzx7nyxykzj68kcxgv8q7d10s5hfscxs8"))))
"10zkrmx9bcmhfxvgykm3fkjamzc8js96wm032bv0fyil5c9ja2y1"))))
(arguments
`(#:phases
(modify-phases %standard-phases
@ -227,7 +224,7 @@ latest DMD frontend and uses LLVM as backend.")
(native-inputs
`(("llvm" ,llvm)
("clang" ,clang)
("ldc" ,ldc)
("ldc" ,ldc-bootstrap)
("python-lit" ,python-lit)
("python-wrapper" ,python-wrapper)
("unzip" ,unzip)
@ -240,7 +237,7 @@ latest DMD frontend and uses LLVM as backend.")
older-version ".tar.gz"))
(sha256
(base32
"1iwy5rs0rqkicj1zfsa5yqvk8ard99bfr8g69qmhlbzb98q0kpks"))
"0z5v55b9s1ppf0c2ivjq7sbmq688c37c92ihc3qwrbxnqvkkvrlk"))
;; This patch deactivates some tests that depend on network access
;; to pass. It also deactivates some tests that have some reliance
;; on timezone.
@ -259,7 +256,7 @@ latest DMD frontend and uses LLVM as backend.")
older-version ".tar.gz"))
(sha256
(base32
"1qsiw5lz1pr8ms9myjf8b94nqi7f1781k226jvxwnhkjg11d0s63"))))
"07qvrqj6vgakd6qr4x5f70w6zwkzd1li5x8i1b5ywnds1z5lnfp6"))))
("dmd-testsuite-src"
,(origin
(method url-fetch)
@ -268,13 +265,13 @@ latest DMD frontend and uses LLVM as backend.")
older-version ".tar.gz"))
(sha256
(base32
"0jp54hyi75i9g41rvgmm3zg21yzv57q8dghrhb432rb0n9j15mbp"))
"12cak7yqmsgjlflx0dp6fwmwb9dac25amgi86n0bb95ard3547wy"))
;; Remove the gdb tests that fails with a "Error: No such file or
;; directory" error, despite the files being present in the debug
;; files left with the --keep-failed flag to guix build.
(patches (search-patches "ldc-1.1.0-disable-dmd-tests.patch")))))))))
(define-public ldc-beta ldc-1.1.0-beta6)
(define-public ldc-beta ldc)
(define-public dub
(package

View File

@ -19,6 +19,7 @@
(define-module (gnu packages libidn)
#:use-module (gnu packages)
#:use-module (gnu packages libunistring)
#:use-module (guix licenses)
#:use-module (guix packages)
#:use-module (guix download)
@ -51,14 +52,16 @@ Java libraries.")
(define-public libidn2
(package
(name "libidn2")
(version "0.11")
(version "0.16")
(source (origin
(method url-fetch)
(uri (string-append "ftp://alpha.gnu.org/gnu/libidn/libidn2-"
version ".tar.gz"))
(sha256
(base32
"1zxzhzx14q2b1xkx746pz4lawvqd8d055yy84n52ndwb4pf7nfax"))))
"13v8kh4d5nfkymai88zlw3h7k4x9khrpdpv97waf4ah8ykzrxb9g"))))
(inputs
`(("libunistring" ,libunistring)))
(build-system gnu-build-system)
(synopsis "Internationalized domain name library for IDNA2008")
(description "Libidn2 is an internationalized domain library implementing

View File

@ -21,6 +21,8 @@
;;; Copyright © 2016 ng0 <ng0@libertad.pw>
;;; Copyright © 2017 Leo Famulari <leo@famulari.name>
;;; Copyright © 2017 José Miguel Sánchez García <jmi2k@openmailbox.com>
;;; Copyright © 2017 Gábor Boskovits <boskovits@gmail.com>
;;; Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com>
;;;
;;; This file is part of GNU Guix.
;;;
@ -45,6 +47,7 @@
#:use-module (gnu packages attr)
#:use-module (gnu packages autotools)
#:use-module (gnu packages base)
#:use-module (gnu packages bash)
#:use-module (gnu packages bison)
#:use-module (gnu packages calendar)
#:use-module (gnu packages check)
@ -66,6 +69,7 @@
#:use-module (gnu packages man)
#:use-module (gnu packages maths)
#:use-module (gnu packages ncurses)
#:use-module (gnu packages networking)
#:use-module (gnu packages perl)
#:use-module (gnu packages pciutils)
#:use-module (gnu packages pkg-config)
@ -344,15 +348,18 @@ It has been modified to remove all non-free binary blobs.")
(define %intel-compatible-systems '("x86_64-linux" "i686-linux"))
(define %linux-libre-version "4.9.9")
(define %linux-libre-hash "0grk94jym0wz581c7pimia0rszq4h2xqjmf818i4l4qrjd0bnqvk")
(define-public linux-libre
(make-linux-libre "4.9.6"
"0mafa628la5qj26rff014mmih2widl5k2sjxg152lmpgijmf6qhd"
(make-linux-libre %linux-libre-version
%linux-libre-hash
%intel-compatible-systems
#:configuration-file kernel-config))
(define-public linux-libre-4.4
(make-linux-libre "4.4.45"
"1c6nigbl8yrqpaz89954la956lshr3p0llm52phxq2h06zblsp87"
(make-linux-libre "4.4.48"
"0g7ram0b5b7p0c6v5m5im6m5pwa348mhkhf67rs036lzvcw1bvyk"
%intel-compatible-systems
#:configuration-file kernel-config))
@ -362,10 +369,6 @@ It has been modified to remove all non-free binary blobs.")
%intel-compatible-systems
#:configuration-file kernel-config))
;; Avoid rebuilding kernel variants when there is a minor version bump.
(define %linux-libre-version "4.9.6")
(define %linux-libre-hash "0mafa628la5qj26rff014mmih2widl5k2sjxg152lmpgijmf6qhd")
(define-public linux-libre-arm-generic
(make-linux-libre %linux-libre-version
%linux-libre-hash
@ -1770,14 +1773,14 @@ time.")
(define-public lvm2
(package
(name "lvm2")
(version "2.02.166")
(version "2.02.168")
(source (origin
(method url-fetch)
(uri (string-append "ftp://sources.redhat.com/pub/lvm2/releases/LVM2."
version ".tgz"))
(sha256
(base32
"150v0mawd2swdvypcmkjd3h3s4n5i1220h6sxx94a8jvp1kb0871"))
"03b62hcsj9z37ckd8c21wwpm07s9zblq7grfh58yzcs1vp6x38r3"))
(modules '((guix build utils)))
(snippet
'(begin
@ -2915,6 +2918,7 @@ from userspace.")
(base32
"180y5y09h30ryf2vim8j30a2npwz1iv9ly5yjmh3wjdkwh2jrdyp"))
(modules '((guix build utils)))
(patches (search-patches "ntfs-3g-CVE-2017-0358.patch"))
(snippet
;; Install under $prefix.
'(substitute* '("src/Makefile.in" "ntfsprogs/Makefile.in")
@ -3129,14 +3133,14 @@ the default @code{nsswitch} and the experimental @code{umich_ldap}.")
(define-public mcelog
(package
(name "mcelog")
(version "147")
(version "148")
(source (origin
(method url-fetch)
(uri (string-append "https://git.kernel.org/cgit/utils/cpu/mce/"
"mcelog.git/snapshot/v" version ".tar.gz"))
(sha256
(base32
"10xxmqpd348ifbs7w8j0m53agp28r6imv237ha3kmhp632hmyf1d"))
"1d5g09ndfsnl56vyhb5xw0zxspnh0f937biw3agqhdfbvw40j9jr"))
(file-name (string-append name "-" version ".tar.gz"))
(modules '((guix build utils)))
(snippet
@ -3417,3 +3421,126 @@ set the screen to be pitch black at a vaĺue of 0 (or higher).
Light is the successor of lightscript.")
(license license:gpl3+)))
(define-public tlp
(package
(name "tlp")
(version "0.9")
(source (origin
(method url-fetch)
(uri (string-append
"https://github.com/linrunner/"
(string-upcase name)
"/archive/" version ".tar.gz"))
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
"0xksm8ar6dbq0azbfz8qs9yyzqg1j333lyd5znc074rz8inj4yw8"))))
(inputs `(("bash" ,bash)
("dbus" ,dbus)
("ethtool" ,ethtool)
("eudev" ,eudev)
("grep" ,grep)
("hdparm" ,hdparm)
("inetutils" ,inetutils)
("iw" ,iw)
("kmod" ,kmod)
("pciutils" ,pciutils)
("perl" ,perl)
("rfkill" ,rfkill)
("sed" ,sed)
("usbutils" ,usbutils)
("util-linux" ,util-linux)
("wireless-tools" ,wireless-tools)))
(build-system gnu-build-system)
(arguments
`(#:phases
(modify-phases %standard-phases
(delete 'configure)
(add-before 'build 'setenv
(lambda* (#:key outputs #:allow-other-keys)
(let ((out (assoc-ref outputs "out")))
(setenv "TLP_WITH_SYSTEMD" "0")
(setenv "TLP_NO_INIT" "1")
(setenv "TLP_NO_PMUTILS" "1")
(setenv "TLP_SBIN" (string-append out "/bin"))
(setenv "TLP_BIN" (string-append out "/bin"))
(setenv "TLP_TLIB" (string-append out "/share/tlp-pm"))
(setenv "TLP_ULIB" (string-append out "/lib/udev"))
(setenv "TLP_CONF" (string-append out "/etc/tlp"))
(setenv "TLP_SHCPL"
(string-append out "/share/bash-completion/completions"))
(setenv "TLP_MAN" (string-append out "/share/man")))))
(delete 'check)
(replace 'install
(lambda _
(system "make install-tlp install-man")))
(add-after 'install 'wrap
(lambda* (#:key inputs outputs #:allow-other-keys)
(let* ((bin (string-append (assoc-ref outputs "out") "/bin"))
(bin-files (find-files bin ".*")))
(define (bin-directory input-name)
(string-append (assoc-ref inputs input-name) "/bin"))
(define (sbin-directory input-name)
(string-append (assoc-ref inputs input-name) "/sbin"))
(for-each (lambda (program)
(wrap-program program
`("PATH" ":" prefix
,(append
(map bin-directory '("bash"
"coreutils"
"dbus"
"eudev"
"grep"
"inetutils"
"kmod"
"perl"
"sed"
"usbutils"
"util-linux"))
(map sbin-directory '("ethtool"
"hdparm"
"iw"
"pciutils"
"rfkill"
"wireless-tools"))))))
bin-files)))))))
(home-page "http://linrunner.de/en/tlp/tlp.html")
(synopsis "Power management tool for Linux")
(description "TLP is a power management tool for Linux. It comes with
a default configuration already optimized for battery life. Nevertheless,
TLP is customizable to fulfil system requirements. TLP settings are applied
every time the power supply source is changed.")
;; 'COPYING' is a custom version that says that one file is GPLv3+ and the
;; rest is GPLv2+.
(license (list license:gpl2+ license:gpl3+))))
(define-public lshw
(package
(name "lshw")
(version "B.02.18")
(source (origin
(method url-fetch)
(uri (string-append "https://www.ezix.org/software/"
"files/lshw-" version
".tar.gz"))
(sha256
(base32
"0brwra4jld0d53d7jsgca415ljglmmx1l2iazpj4ndilr48yy8mf"))))
(build-system gnu-build-system)
(arguments
`(#:phases (modify-phases %standard-phases (delete 'configure))
#:tests? #f ; no tests
#:make-flags
(list (string-append "PREFIX=" (assoc-ref %outputs "out")))))
(synopsis "List hardware information")
(description
"@command{lshw} (Hardware Lister) is a small tool to provide
detailed information on the hardware configuration of the machine.
It can report exact memory configuration, firmware version, mainboard
configuration, CPU version and speed, cache configuration, bus speed,
and more on DMI-capable x86 or EFI (IA-64) systems and on some PowerPC
machines (PowerMac G4 is known to work).")
(home-page "https://www.ezix.org/project/wiki/HardwareLiSter")
(license license:gpl2+)))

View File

@ -43,13 +43,13 @@
(define-public lua
(package
(name "lua")
(version "5.3.3")
(version "5.3.4")
(source (origin
(method url-fetch)
(uri (string-append "https://www.lua.org/ftp/lua-"
version ".tar.gz"))
(sha256
(base32 "18mcfbbmjyp8f2l9yy7n6dzk066nq6man0kpwly4bppphilc04si"))
(base32 "0320a8dg3aci4hxla380dx1ifkw8gj4gbw5c4dz41g1kh98sm0gn"))
(patches (search-patches "lua-pkgconfig.patch"
"lua-liblua-so.patch"))))
(build-system gnu-build-system)

View File

@ -20,6 +20,7 @@
;;; Copyright © 2016 Arun Isaac <arunisaac@systemreboot.net>
;;; Copyright © 2016 John Darrington <jmd@gnu.org>
;;; Copyright © 2016 Marius Bakke <mbakke@fastmail.com>
;;; Copyright © 2017 Thomas Danckaert <post@thomasdanckaert.be>
;;;
;;; This file is part of GNU Guix.
;;;
@ -79,6 +80,7 @@
#:use-module (gnu packages flex)
#:use-module (gnu packages gdb)
#:use-module (gnu packages man)
#:use-module (gnu packages ruby)
#:use-module (gnu packages samba)
#:use-module (gnu packages screen)
#:use-module (gnu packages tls)
@ -455,6 +457,57 @@ can read the same mailbox from multiple computers. It supports IMAP as REMOTE
repository and Maildir/IMAP as LOCAL repository.")
(license gpl2+)))
(define-public emacs-mew
(package
(name "emacs-mew")
(version "6.7")
(source (origin
(method url-fetch)
(uri (string-append "http://mew.org/Release/mew-"
version ".tar.gz"))
(sha256
(base32
"03fzky2kz73vgx4cbps2psbbnrgqgkk5q7jwfldisymkzr9iz03y"))))
(native-inputs
`(("emacs" ,emacs)))
(propagated-inputs
`(("ruby-sqlite3" ,ruby-sqlite3) ; optional for the database of messages
("ruby" ,ruby))) ; to set GEM_PATH so ruby-sqlite3 is found at runtime
(build-system gnu-build-system)
(arguments
(let ((elisp-dir "/share/emacs/site-lisp/guix.d/mew")
(icon-dir "/share/mew"))
`(#:modules ((guix build gnu-build-system)
(guix build utils)
(guix build emacs-utils))
#:imported-modules (,@%gnu-build-system-modules
(guix build emacs-utils))
#:configure-flags
(list (string-append "--with-elispdir=" %output ,elisp-dir)
(string-append "--with-etcdir=" %output ,icon-dir))
#:phases
(modify-phases %standard-phases
(add-after 'configure 'patch-mew-icon-directory
(lambda* (#:key outputs #:allow-other-keys)
(emacs-substitute-sexps "mew-key.el"
("(def.* mew-icon-directory"
`(progn
(add-to-list 'image-load-path 'mew-icon-directory)
,(string-append (assoc-ref outputs "out") ,icon-dir))))
#t))
(add-after 'install 'generate-autoloads
(lambda* (#:key outputs #:allow-other-keys)
(emacs-generate-autoloads
"mew" (string-append (assoc-ref outputs "out") ,elisp-dir))
#t)))
#:tests? #f)))
(home-page "http://www.mew.org")
(synopsis "Emacs e-mail client")
(description "Mew (Messaging in the Emacs World) is a user interface
for text messages, multimedia messages (MIME), news articles and
security functionality including PGP, S/MIME, SSH, and SSL.")
(license bsd-3)))
(define-public mu
(package
(name "mu")

View File

@ -313,7 +313,7 @@ integer programming problems and computes Markov bases for statistics.")
(source
(origin
(method url-fetch)
(uri (string-append "ftp://ftp.ifor.math.ethz.ch/pub/fukuda/cdd/cddlib-"
(uri (string-append "ftp://ftp.math.ethz.ch/users/fukudak/cdd/cddlib-"
(string-delete #\. version) ".tar.gz"))
(sha256
(base32
@ -1035,6 +1035,7 @@ Open CASCADE library.")
("lapack" ,lapack)
("mesa" ,mesa)
("glu" ,glu)
("opencascade-oce" ,opencascade-oce)
("libx11" ,libx11)
("libxext" ,libxext)))
(inputs
@ -1043,15 +1044,7 @@ Open CASCADE library.")
(arguments
`(#:configure-flags `("-DENABLE_METIS:BOOL=OFF"
"-DENABLE_BUILD_SHARED:BOOL=ON"
"-DENABLE_BUILD_DYNAMIC:BOOL=ON")
#:phases (modify-phases %standard-phases
(replace
'check
(lambda _
(zero? (system* "make" "test"
;; Disable this test. See
;; https://geuz.org/trac/gmsh/ticket/271
"ARGS=-E component8_in_a_box")))))))
"-DENABLE_BUILD_DYNAMIC:BOOL=ON")))
(home-page "http://www.geuz.org/gmsh/")
(synopsis "3D finite element grid generator")
(description "Gmsh is a 3D finite element grid generator with a built-in
@ -1992,7 +1985,7 @@ point numbers.")
(define-public wxmaxima
(package
(name "wxmaxima")
(version "16.12.0")
(version "16.12.2")
(source
(origin
(method url-fetch)
@ -2000,7 +1993,7 @@ point numbers.")
version "/" name "-" version ".tar.gz"))
(sha256
(base32
"01kas9viqabw5id6crbhz8ahjimmv78gqzizs5hgnj9kngrgrm1h"))))
"0y22zhyhyxj2cbhzvs9c4pxr44i55ryfy5xi96d39bg2nbgs9h22"))))
(build-system gnu-build-system)
(inputs
`(("wxwidgets" ,wxwidgets)

View File

@ -8,6 +8,7 @@
;;; Copyright © 2016 Kei Kebreau <kei@openmailbox.org>
;;; Copyright © 2016 John J. Foerch <jjfoerch@earthlink.net>
;;; Copyright © 2016 Alex Griffin <a@ajgrf.com>
;;; Copyright © 2017 ng0 <contact.ng0@cryptolab.net>
;;;
;;; This file is part of GNU Guix.
;;;
@ -2769,3 +2770,51 @@ collections and wantlists, inventory, and orders.")
(define-public python2-discogs-client
(package-with-python2 python-discogs-client))
(define-public libsmf
(package
(name "libsmf")
(version "1.3")
(source
(origin
(method url-fetch)
;; SF download page says development moved, but the link it points to
;; is gone (https://github.com/nilsgey/libsmf). Someone else adopted
;; it but made no release so far (https://github.com/stump/libsmf).
(uri (string-append "mirror://sourceforge/libsmf/libsmf/"
version "/libsmf-" version ".tar.gz"))
(sha256
(base32
"16c0n40h0r56gzbh5ypxa4dwp296dan3jminml2qkb4lvqarym6k"))))
(build-system gnu-build-system)
(outputs '("out"
"static")) ; 88KiB of .a files
(arguments
`(#:phases
(modify-phases %standard-phases
(add-after 'install 'move-static-libraries
(lambda* (#:key outputs #:allow-other-keys)
;; Move static libraries to the "static" output.
(let* ((out (assoc-ref outputs "out"))
(lib (string-append out "/lib"))
(static (assoc-ref outputs "static"))
(slib (string-append static "/lib")))
(mkdir-p slib)
(for-each (lambda (file)
(install-file file slib)
(delete-file file))
(find-files lib "\\.a$"))
#t))))))
(inputs
`(("readline" ,readline)
("glib" ,glib)))
(native-inputs
`(("doxygen" ,doxygen)
("pkg-config" ,pkg-config)))
(home-page "http://libsmf.sourceforge.net/")
(synopsis "Standard MIDI File format library")
(description
"LibSMF is a C library for handling SMF (\"*.mid\") files. It transparently handles
conversions between time and pulses, tempo map handling and more. The only dependencies
are a C compiler and glib. Full API documentation and examples are included.")
(license license:bsd-2)))

View File

@ -25,7 +25,6 @@
#:use-module (guix utils)
#:use-module (guix build-system gnu)
#:use-module (guix build-system python)
#:use-module ((guix build utils) #:select (with-directory-excursion))
#:use-module ((guix licenses) #:select (gpl2+ gpl3+ lgpl2.1+ asl2.0))
#:use-module (gnu packages)
#:use-module (gnu packages guile)
@ -53,10 +52,6 @@
#:use-module (gnu packages tls)
#:use-module (gnu packages ssh)
#:use-module (gnu packages vim)
#:use-module (srfi srfi-1)
#:use-module (srfi srfi-26)
#:use-module (ice-9 popen)
#:use-module (ice-9 rdelim)
#:use-module (ice-9 match))
(define (boot-guile-uri arch)
@ -275,38 +270,8 @@ generated file."
(_
#t)))
(define (make-git-predicate directory)
"Return a predicate that returns true if a file is part of the Git checkout
living at DIRECTORY. Upon Git failure, return #f instead of a predicate."
(define (parent-directory? thing directory)
;; Return #t if DIRECTORY is the parent of THING.
(or (string-suffix? thing directory)
(and (string-index thing #\/)
(parent-directory? (dirname thing) directory))))
(let* ((pipe (with-directory-excursion directory
(open-pipe* OPEN_READ "git" "ls-files")))
(files (let loop ((lines '()))
(match (read-line pipe)
((? eof-object?)
(reverse lines))
(line
(loop (cons line lines))))))
(status (close-pipe pipe)))
(and (zero? status)
(lambda (file stat)
(match (stat:type stat)
('directory
;; 'git ls-files' does not list directories, only regular files,
;; so we need this special trick.
(any (cut parent-directory? <> file) files))
((or 'regular 'symlink)
(any (cut string-suffix? <> file) files))
(_
#f))))))
(define-public current-guix
(let ((select? (delay (or (make-git-predicate
(let ((select? (delay (or (git-predicate
(string-append (current-source-directory)
"/../.."))
source-file?))))
@ -329,14 +294,14 @@ out) and returning a package that uses that as its 'source'."
(define-public nix
(package
(name "nix")
(version "1.11.2")
(version "1.11.6")
(source (origin
(method url-fetch)
(uri (string-append "http://nixos.org/releases/nix/nix-"
version "/nix-" version ".tar.xz"))
(sha256
(base32
"1mk9z75gklxcv6kzwwz1h5r2ci5kjy6bh7qwk4m5lf5v9s0k64pw"))))
"18xjg7cfvqzhsmvir6xmw95jxvl2w7icphbbll462xbnj9ddaag7"))))
(build-system gnu-build-system)
;; XXX: Should we pass '--with-store-dir=/gnu/store'? But then we'd also
;; need '--localstatedir=/var'. But then! The thing would use /var/nix

View File

@ -0,0 +1,32 @@
This fixes a test failure on i686.
Patch copied from upstream source repository:
https://cgit.freedesktop.org/gstreamer/gst-plugins-base/commit/?id=5e2e111627871c566ffc6607eda8f4ef4699d040
From 5e2e111627871c566ffc6607eda8f4ef4699d040 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Sebastian=20Dr=C3=B6ge?= <sebastian@centricular.com>
Date: Thu, 2 Feb 2017 14:56:39 +0200
Subject: [PATCH] multifdsink: Make sure to use a 64 bit integer for the
units-max property
---
tests/check/elements/multifdsink.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/tests/check/elements/multifdsink.c b/tests/check/elements/multifdsink.c
index af138cc92..951b1b9fa 100644
--- a/tests/check/elements/multifdsink.c
+++ b/tests/check/elements/multifdsink.c
@@ -869,7 +869,7 @@ GST_START_TEST (test_client_kick)
gint i, initial_buffers = 3, num_buffers = 0;
sink = setup_multifdsink ();
- g_object_set (sink, "units-max", initial_buffers, NULL);
+ g_object_set (sink, "units-max", (gint64) initial_buffers, NULL);
fail_if (pipe (pfd1) == -1);
fail_if (pipe (pfd2) == -1);
--
2.11.0

View File

@ -9,15 +9,15 @@ Patch contents copied from Mozilla esr45 changeset 312077:7ebfe49f001c
--- libvpx-1.5.0/vp8/vp8_cx_iface.c.orig 2015-11-09 17:12:38.000000000 -0500
+++ libvpx-1.5.0/vp8/vp8_cx_iface.c 2016-06-08 08:48:46.037213092 -0400
@@ -925,11 +925,19 @@
{
res = image2yuvconfig(img, &sd);
@@ -860,11 +860,20 @@
if (img != NULL) {
res = image2yuvconfig(img, &sd);
- if (vp8_receive_raw_frame(ctx->cpi, ctx->next_frame_flag | lib_flags,
- &sd, dst_time_stamp, dst_end_time_stamp))
- {
- VP8_COMP *cpi = (VP8_COMP *)ctx->cpi;
- res = update_error_state(ctx, &cpi->common.error);
- if (vp8_receive_raw_frame(ctx->cpi, ctx->next_frame_flag | lib_flags, &sd,
- dst_time_stamp, dst_end_time_stamp)) {
- VP8_COMP *cpi = (VP8_COMP *)ctx->cpi;
- res = update_error_state(ctx, &cpi->common.error);
- }
+ if (sd.y_width != ctx->cfg.g_w || sd.y_height != ctx->cfg.g_h) {
+ /* from vp8_encoder.h for g_w/g_h:
+ "Note that the frames passed as input to the encoder must have this resolution"
@ -31,6 +31,7 @@ Patch contents copied from Mozilla esr45 changeset 312077:7ebfe49f001c
+ VP8_COMP *cpi = (VP8_COMP *)ctx->cpi;
+ res = update_error_state(ctx, &cpi->common.error);
+ }
}
+ }
/* reset for next frame */
/* reset for next frame */
ctx->next_frame_flag = 0;

View File

@ -0,0 +1,42 @@
Fix CVE-2017-0358:
http://seclists.org/oss-sec/2017/q1/259
This patch was copied from the above URL.
diff -ur ntfs-3g.old/src/lowntfs-3g.c ntfs-3g/src/lowntfs-3g.c
--- ntfs-3g.old/src/lowntfs-3g.c 2017-02-09 15:01:04.074331542 -0500
+++ ntfs-3g/src/lowntfs-3g.c 2017-02-09 15:06:35.757580937 -0500
@@ -3827,13 +3827,14 @@
struct stat st;
pid_t pid;
const char *cmd = "/sbin/modprobe";
+ char *env = (char*)NULL;
struct timespec req = { 0, 100000000 }; /* 100 msec */
fuse_fstype fstype;
if (!stat(cmd, &st) && !geteuid()) {
pid = fork();
if (!pid) {
- execl(cmd, cmd, "fuse", NULL);
+ execle(cmd, cmd, "fuse", NULL, &env);
_exit(1);
} else if (pid != -1)
waitpid(pid, NULL, 0);
diff -ur ntfs-3g.old/src/ntfs-3g.c ntfs-3g/src/ntfs-3g.c
--- ntfs-3g.old/src/ntfs-3g.c 2017-02-09 15:01:04.074331542 -0500
+++ ntfs-3g/src/ntfs-3g.c 2017-02-09 15:06:26.077252571 -0500
@@ -3612,13 +3612,14 @@
struct stat st;
pid_t pid;
const char *cmd = "/sbin/modprobe";
+ char *env = (char*)NULL;
struct timespec req = { 0, 100000000 }; /* 100 msec */
fuse_fstype fstype;
if (!stat(cmd, &st) && !geteuid()) {
pid = fork();
if (!pid) {
- execl(cmd, cmd, "fuse", NULL);
+ execle(cmd, cmd, "fuse", NULL, &env);
_exit(1);
} else if (pid != -1)
waitpid(pid, NULL, 0);

View File

@ -0,0 +1,24 @@
From: Robert Luberda <robert@debian.org>
Date: Sat, 19 Nov 2016 08:48:08 +0100
Subject: Fix nullptr dereference (CVE-2016-9296)
Patch taken from https://sourceforge.net/p/p7zip/bugs/185/
This patch file taken from Debian's patch set for p7zip
---
CPP/7zip/Archive/7z/7zIn.cpp | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/CPP/7zip/Archive/7z/7zIn.cpp b/CPP/7zip/Archive/7z/7zIn.cpp
index b0c6b98..7c6dde2 100644
--- a/CPP/7zip/Archive/7z/7zIn.cpp
+++ b/CPP/7zip/Archive/7z/7zIn.cpp
@@ -1097,7 +1097,8 @@ HRESULT CInArchive::ReadAndDecodePackedStreams(
if (CrcCalc(data, unpackSize) != folders.FolderCRCs.Vals[i])
ThrowIncorrect();
}
- HeadersSize += folders.PackPositions[folders.NumPackStreams];
+ if (folders.PackPositions)
+ HeadersSize += folders.PackPositions[folders.NumPackStreams];
return S_OK;
}

View File

@ -0,0 +1,52 @@
http://git.qemu.org/?p=qemu.git;a=patch;h=62d4c6bd5263bb8413a06c80144fc678df6dfb64
this patch is from qemu-git.
From 62d4c6bd5263bb8413a06c80144fc678df6dfb64 Mon Sep 17 00:00:00 2001
From: Li Qiang <liqiang6-s@360.cn>
Date: Wed, 1 Feb 2017 09:35:01 +0100
Subject: [PATCH] cirrus: fix oob access issue (CVE-2017-2615)
When doing bitblt copy in backward mode, we should minus the
blt width first just like the adding in the forward mode. This
can avoid the oob access of the front of vga's vram.
Signed-off-by: Li Qiang <liqiang6-s@360.cn>
{ kraxel: with backward blits (negative pitch) addr is the topmost
address, so check it as-is against vram size ]
Cc: qemu-stable@nongnu.org
Cc: P J P <ppandit@redhat.com>
Cc: Laszlo Ersek <lersek@redhat.com>
Cc: Paolo Bonzini <pbonzini@redhat.com>
Cc: Wolfgang Bumiller <w.bumiller@proxmox.com>
Fixes: d3532a0db02296e687711b8cdc7791924efccea0 (CVE-2014-8106)
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
Message-id: 1485938101-26602-1-git-send-email-kraxel@redhat.com
Reviewed-by: Laszlo Ersek <lersek@redhat.com>
---
hw/display/cirrus_vga.c | 7 +++----
1 file changed, 3 insertions(+), 4 deletions(-)
diff --git a/hw/display/cirrus_vga.c b/hw/display/cirrus_vga.c
index 7db6409dc5..16f27e8ac5 100644
--- a/hw/display/cirrus_vga.c
+++ b/hw/display/cirrus_vga.c
@@ -274,10 +274,9 @@ static bool blit_region_is_unsafe(struct CirrusVGAState *s,
{
if (pitch < 0) {
int64_t min = addr
- + ((int64_t)s->cirrus_blt_height-1) * pitch;
- int32_t max = addr
- + s->cirrus_blt_width;
- if (min < 0 || max > s->vga.vram_size) {
+ + ((int64_t)s->cirrus_blt_height - 1) * pitch
+ - s->cirrus_blt_width;
+ if (min < -1 || addr >= s->vga.vram_size) {
return true;
}
} else {
--
2.11.0

View File

@ -0,0 +1,39 @@
http://git.qemu.org/?p=qemu.git;a=patch;h=204f01b30975923c64006f8067f0937b91eea68b
this patch is from qemu-git.
From 204f01b30975923c64006f8067f0937b91eea68b Mon Sep 17 00:00:00 2001
From: Li Qiang <liq3ea@gmail.com>
Date: Thu, 29 Dec 2016 04:28:41 -0500
Subject: [PATCH] virtio-gpu: fix memory leak in resource attach backing
In the resource attach backing function, everytime it will
allocate 'res->iov' thus can leading a memory leak. This
patch avoid this.
Signed-off-by: Li Qiang <liq3ea@gmail.com>
Message-id: 1483003721-65360-1-git-send-email-liq3ea@gmail.com
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
---
hw/display/virtio-gpu.c | 5 +++++
1 file changed, 5 insertions(+)
diff --git a/hw/display/virtio-gpu.c b/hw/display/virtio-gpu.c
index 6a26258cac..ca88cf478d 100644
--- a/hw/display/virtio-gpu.c
+++ b/hw/display/virtio-gpu.c
@@ -714,6 +714,11 @@ virtio_gpu_resource_attach_backing(VirtIOGPU *g,
return;
}
+ if (res->iov) {
+ cmd->error = VIRTIO_GPU_RESP_ERR_UNSPEC;
+ return;
+ }
+
ret = virtio_gpu_create_mapping_iov(&ab, cmd, &res->addrs, &res->iov);
if (ret != 0) {
cmd->error = VIRTIO_GPU_RESP_ERR_UNSPEC;
--
2.11.0

View File

@ -0,0 +1,44 @@
http://git.qemu.org/?p=qemu.git;a=patch;h=8409dc884a201bf74b30a9d232b6bbdd00cb7e2b
this patch is from qemu-git.
From 8409dc884a201bf74b30a9d232b6bbdd00cb7e2b Mon Sep 17 00:00:00 2001
From: Li Qiang <liqiang6-s@360.cn>
Date: Wed, 4 Jan 2017 00:43:16 -0800
Subject: [PATCH] serial: fix memory leak in serial exit
The serial_exit_core function doesn't free some resources.
This can lead memory leak when hotplug and unplug. This
patch avoid this.
Signed-off-by: Li Qiang <liqiang6-s@360.cn>
Message-Id: <586cb5ab.f31d9d0a.38ac3.acf2@mx.google.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
hw/char/serial.c | 10 ++++++++++
1 file changed, 10 insertions(+)
diff --git a/hw/char/serial.c b/hw/char/serial.c
index ffbacd8227..67b18eda12 100644
--- a/hw/char/serial.c
+++ b/hw/char/serial.c
@@ -906,6 +906,16 @@ void serial_realize_core(SerialState *s, Error **errp)
void serial_exit_core(SerialState *s)
{
qemu_chr_fe_deinit(&s->chr);
+
+ timer_del(s->modem_status_poll);
+ timer_free(s->modem_status_poll);
+
+ timer_del(s->fifo_timeout_timer);
+ timer_free(s->fifo_timeout_timer);
+
+ fifo8_destroy(&s->recv_fifo);
+ fifo8_destroy(&s->xmit_fifo);
+
qemu_unregister_reset(serial_reset, s);
}
--
2.11.0

View File

@ -0,0 +1,68 @@
http://git.qemu.org/?p=qemu.git;a=patch;h=765a707000e838c30b18d712fe6cb3dd8e0435f3
this patch is from qemu-git.
From 765a707000e838c30b18d712fe6cb3dd8e0435f3 Mon Sep 17 00:00:00 2001
From: Paolo Bonzini <pbonzini@redhat.com>
Date: Mon, 2 Jan 2017 11:03:33 +0100
Subject: [PATCH] megasas: fix guest-triggered memory leak
If the guest sets the sglist size to a value >=2GB, megasas_handle_dcmd
will return MFI_STAT_MEMORY_NOT_AVAILABLE without freeing the memory.
Avoid this by returning only the status from map_dcmd, and loading
cmd->iov_size in the caller.
Reported-by: Li Qiang <liqiang6-s@360.cn>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
---
hw/scsi/megasas.c | 11 ++++++-----
1 files changed, 6 insertions(+), 5 deletions(-)
diff --git a/hw/scsi/megasas.c b/hw/scsi/megasas.c
index 67fc1e7..6233865 100644
--- a/hw/scsi/megasas.c
+++ b/hw/scsi/megasas.c
@@ -683,14 +683,14 @@ static int megasas_map_dcmd(MegasasState *s, MegasasCmd *cmd)
trace_megasas_dcmd_invalid_sge(cmd->index,
cmd->frame->header.sge_count);
cmd->iov_size = 0;
- return -1;
+ return -EINVAL;
}
iov_pa = megasas_sgl_get_addr(cmd, &cmd->frame->dcmd.sgl);
iov_size = megasas_sgl_get_len(cmd, &cmd->frame->dcmd.sgl);
pci_dma_sglist_init(&cmd->qsg, PCI_DEVICE(s), 1);
qemu_sglist_add(&cmd->qsg, iov_pa, iov_size);
cmd->iov_size = iov_size;
- return cmd->iov_size;
+ return 0;
}
static void megasas_finish_dcmd(MegasasCmd *cmd, uint32_t iov_size)
@@ -1559,19 +1559,20 @@ static const struct dcmd_cmd_tbl_t {
static int megasas_handle_dcmd(MegasasState *s, MegasasCmd *cmd)
{
- int opcode, len;
+ int opcode;
int retval = 0;
+ size_t len;
const struct dcmd_cmd_tbl_t *cmdptr = dcmd_cmd_tbl;
opcode = le32_to_cpu(cmd->frame->dcmd.opcode);
trace_megasas_handle_dcmd(cmd->index, opcode);
- len = megasas_map_dcmd(s, cmd);
- if (len < 0) {
+ if (megasas_map_dcmd(s, cmd) < 0) {
return MFI_STAT_MEMORY_NOT_AVAILABLE;
}
while (cmdptr->opcode != -1 && cmdptr->opcode != opcode) {
cmdptr++;
}
+ len = cmd->iov_size;
if (cmdptr->opcode == -1) {
trace_megasas_dcmd_unhandled(cmd->index, opcode, len);
retval = megasas_dcmd_dummy(s, cmd);
--
1.7.0.4

View File

@ -0,0 +1,73 @@
diff --git a/src/Makefile.am b/src/Makefile.am
index e56a8a2..4adcc48 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -3,7 +3,7 @@ bin_PROGRAMS = $(top_builddir)/bin/vsearch
if TARGET_PPC
AM_CXXFLAGS=-Wall -Wsign-compare -O3 -g -mcpu=power8
else
-AM_CXXFLAGS=-Wall -Wsign-compare -O3 -g
+AM_CXXFLAGS=-Wall -Wsign-compare -O3 -g -lcityhash
endif
AM_CFLAGS=$(AM_CXXFLAGS)
@@ -18,8 +18,6 @@ allpairs.h \
arch.h \
bitmap.h \
chimera.h \
-city.h \
-citycrc.h \
cluster.h \
cpu.h \
db.h \
@@ -59,31 +57,26 @@ xstring.h
if TARGET_PPC
libcpu_a_SOURCES = cpu.cc $(VSEARCHHEADERS)
-noinst_LIBRARIES = libcpu.a libcityhash.a
+noinst_LIBRARIES = libcpu.a
else
libcpu_sse2_a_SOURCES = cpu.cc $(VSEARCHHEADERS)
libcpu_sse2_a_CXXFLAGS = $(AM_CXXFLAGS) -msse2
libcpu_ssse3_a_SOURCES = cpu.cc $(VSEARCHHEADERS)
libcpu_ssse3_a_CXXFLAGS = $(AM_CXXFLAGS) -mssse3 -DSSSE3
-noinst_LIBRARIES = libcpu_sse2.a libcpu_ssse3.a libcityhash.a
+noinst_LIBRARIES = libcpu_sse2.a libcpu_ssse3.a
endif
-libcityhash_a_SOURCES = city.cc city.h
-
if TARGET_WIN
-libcityhash_a_CXXFLAGS = -Wall -Wno-sign-compare -O3 -g -D_MSC_VER
-__top_builddir__bin_vsearch_LDFLAGS = -static
-__top_builddir__bin_vsearch_LDADD = libregex.a libcityhash.a libcpu_ssse3.a libcpu_sse2.a
+__top_builddir__bin_vsearch_LDFLAGS = -static -lcityhash
+__top_builddir__bin_vsearch_LDADD = libregex.a libcpu_ssse3.a libcpu_sse2.a
else
-libcityhash_a_CXXFLAGS = -Wall -Wno-sign-compare -O3 -g
-
if TARGET_PPC
-__top_builddir__bin_vsearch_LDADD = libcityhash.a libcpu.a
+__top_builddir__bin_vsearch_LDADD = libcpu.a
else
-__top_builddir__bin_vsearch_LDADD = libcityhash.a libcpu_ssse3.a libcpu_sse2.a
+__top_builddir__bin_vsearch_LDADD = libcpu_ssse3.a libcpu_sse2.a
endif
endif
diff --git a/src/vsearch.h b/src/vsearch.h
index f2c244b..5f51bbe 100644
--- a/src/vsearch.h
+++ b/src/vsearch.h
@@ -148,7 +148,7 @@
#include <bzlib.h>
#endif
-#include "city.h"
+#include <city.h>
#include "md5.h"
#include "sha1.h"

View File

@ -23,7 +23,7 @@
;;; Copyright © 2016 Daniel Pimentel <d4n1@d4n1.org>
;;; Copyright © 2016 Sou Bunnbu <iyzsong@gmail.com>
;;; Copyright © 2016 Troy Sankey <sankeytms@gmail.com>
;;; Copyright © 2016 ng0 <ng0@we.make.ritual.n0.is>
;;; Copyright © 2016, 2017 ng0 <contact.ng0@cryptolab.net>
;;; Copyright © 2016 Dylan Jeffers <sapientech@sapientech@openmailbox.org>
;;; Copyright © 2016 David Craven <david@craven.ch>
;;; Copyright © 2016, 2017 Marius Bakke <mbakke@fastmail.com>
@ -35,6 +35,7 @@
;;; Copyright © 2016, 2017 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2016 Thomas Danckaert <post@thomasdanckaert.be>
;;; Copyright © 2017 Carlo Zancanaro <carlo@zancanaro.id.au>
;;; Copyright © 2017 Frederick M. Muriithi <fredmanglis@gmail.com>
;;;
;;; This file is part of GNU Guix.
;;;
@ -1064,14 +1065,14 @@ Python file, so it can be easily copied into your project.")
(define-public python-dateutil-2
(package
(name "python-dateutil")
(version "2.5.2")
(version "2.5.3")
(source
(origin
(method url-fetch)
(uri (pypi-uri "python-dateutil" version))
(sha256
(base32
"0jrfpcgvgya6hs45dhrd9yiqgdgz9qp9aa07zsw8gqgn8zphff86"))))
"1v9j9fmf8g911yg6k01xa2db6dx3wv73zkk7fncsj7vagjqgs20l"))))
(build-system python-build-system)
(propagated-inputs
`(("python-six" ,python-six)))
@ -5993,6 +5994,28 @@ complexity of Python source code.")
(define-public python2-flake8-2.2.4
(package-with-python2 python-flake8-2.2.4))
(define-public python-flake8-polyfill
(package
(name "python-flake8-polyfill")
(version "1.0.1")
(source
(origin
(method url-fetch)
(uri (pypi-uri "flake8-polyfill" version))
(sha256
(base32
"02gn2wxvh9vnf7m7dld7ca4l60mg5c370hv3swwppkngwaqmcw67"))))
(build-system python-build-system)
(home-page "https://gitlab.com/pycqa/flake8-polyfill")
(synopsis "Polyfill package for Flake8 plugins")
(description
"This package that provides some compatibility helpers for Flake8
plugins that intend to support Flake8 2.x and 3.x simultaneously.")
(license license:expat)))
(define-public python2-flake8-polyfill
(package-with-python2 python-flake8-polyfill))
(define-public python-mistune
(package
(name "python-mistune")
@ -12537,3 +12560,111 @@ console.")
This implementation is slow (hence the project name) but still useful when
faster ones are not available.")
(license license:asl2.0)))
(define-public python-rst2ansi
(package
(name "python-rst2ansi")
(version "0.1.5")
(source
(origin
(method url-fetch)
(uri (pypi-uri "rst2ansi" version))
(sha256
(base32
"0vzy6gd60l79ff750scl0sz48r1laalkl6md6dwzah4dcadgn5qv"))))
(build-system python-build-system)
(propagated-inputs
`(("python-docutils" ,python-docutils)))
(home-page "https://github.com/Snaipe/python-rst-to-ansi")
(synopsis "Convert RST to ANSI-decorated console output")
(description
"Python module dedicated to rendering RST (reStructuredText) documents
to ansi-escaped strings suitable for display in a terminal.")
(license license:expat)))
(define-public python-ddt
(package
(name "python-ddt")
(version "1.1.1")
(source
(origin
(method url-fetch)
(uri (pypi-uri "ddt" version))
(sha256
(base32
"1c00ikkxr7lha97c81k938bzhgd4pbwamkjn0h4nkhr3xk00zp6n"))))
(build-system python-build-system)
(native-inputs
`(("python-mock" ,python-mock)
("python-nose" ,python-nose)))
(propagated-inputs
`(("python-six" ,python-six)
("python-pyyaml" ,python-pyyaml)))
(home-page "https://github.com/txels/ddt")
(synopsis "Data-Driven Tests")
(description
"DDT (Data-Driven Tests) allows you to multiply one test case by running
it with different test data, and make it appear as multiple test cases.")
(license license:expat)))
(define-public python2-ddt
(package-with-python2 python-ddt))
(define-public python-pycosat
(package
(name "python-pycosat")
(version "0.6.1")
(source
(origin
(method url-fetch)
(uri (pypi-uri "pycosat" version))
(sha256
(base32
"1kl3wh1f47rc712n4bmwplbx3fqz3x9i1b587jrbpmvdva4c8f6l"))))
;; TODO: Unundle picosat. http://fmv.jku.at/picosat/
(build-system python-build-system)
(home-page "https://github.com/ContinuumIO/pycosat")
(synopsis "Bindings to picosat (a SAT solver)")
(description
"This package provides efficient Python bindings to @code{picosat} on
the C level. When importing pycosat, the @code{picosat} solver becomes part
of the Python process itself. @code{picosat} is a @dfn{Boolean Satisfiability
Problem} (SAT) solver.")
(license license:expat)))
(define-public python2-pycosat
(package-with-python2 python-pycosat))
(define-public python2-ruamel.ordereddict
(package
(name "python2-ruamel.ordereddict")
(version "0.4.9")
(source
(origin
(method url-fetch)
(uri (pypi-uri "ruamel.ordereddict" version))
(sha256
(base32
"1xmkl8v9l9inm2pyxgc1fm5005yxm7fkd5gv74q7lj1iy5qc8n3h"))))
(build-system python-build-system)
(arguments
`(#:python ,python-2
#:phases
(modify-phases %standard-phases
(delete 'check)
(add-after 'install 'check
(lambda* (#:key inputs outputs #:allow-other-keys)
(add-installed-pythonpath inputs outputs)
(zero? (system* "python" "test/testordereddict.py")))))))
(home-page "https://bitbucket.org/ruamel/ordereddict")
(synopsis "Version of dict that keeps keys in insertion order")
(description
"This is an implementation of an ordered dictionary with @dfn{Key
Insertion Order} (KIO: updates of values do not affect the position of the
key), @dfn{Key Value Insertion Order} (KVIO, an existing key's position is
removed and put at the back). The standard library module @code{OrderedDict},
implemented later, implements a subset of @code{ordereddict} functionality.
Sorted dictionaries are also provided. Currently only with @dfn{Key Sorted
Order} (KSO, no sorting function can be specified, but a transform can be
specified to apply on the key before comparison (e.g. @code{string.lower})).")
(license license:expat)))

View File

@ -78,9 +78,13 @@
(base32
"0qjy3rcrn89n42y5iz60kgr0rrl29hpnj8mq2yvbc1wrcizmvzfs"))
(patches (search-patches "qemu-CVE-2016-10155.patch"
"qemu-CVE-2017-2615.patch"
"qemu-CVE-2017-5525.patch"
"qemu-CVE-2017-5526.patch"
"qemu-CVE-2017-5552.patch"))))
"qemu-CVE-2017-5552.patch"
"qemu-CVE-2017-5578.patch"
"qemu-CVE-2017-5579.patch"
"qemu-CVE-2017-5856.patch"))))
(build-system gnu-build-system)
(arguments
'(;; Running tests in parallel can occasionally lead to failures, like:

View File

@ -1,5 +1,6 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2015 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2017 Thomas Danckaert <post@thomasdanckaert.be>
;;;
;;; This file is part of GNU Guix.
;;;
@ -20,9 +21,19 @@
#:use-module ((guix licenses) #:prefix license:)
#: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 (gnu packages compression)
#:use-module (gnu packages cups)
#:use-module (gnu packages gstreamer)
#:use-module (gnu packages linux)
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages pulseaudio)
#:use-module (gnu packages tls)
#:use-module (gnu packages xorg))
#:use-module (gnu packages video)
#:use-module (gnu packages xorg)
#:use-module (gnu packages xml))
(define-public rdesktop
(package
@ -57,3 +68,63 @@
capable of natively speaking Remote Desktop Protocol (RDP). It allows users
to remotely control a user's Windows desktop.")
(license license:gpl3+)))
(define-public freerdp
(package
(name "freerdp")
(version "1.2.0-beta1+android9")
(source (origin
(method git-fetch)
(uri (git-reference
(url "git://github.com/FreeRDP/FreeRDP.git")
(commit version)))
(file-name (git-file-name name version))
(sha256
(base32 "1m0lzrr7hkxfvc5f9p8snimv0rmin2463zhg25mv36wig8g5k7l3"))))
(build-system cmake-build-system)
(native-inputs
`(("pkg-config" ,pkg-config)
("xmlto" ,xmlto)))
(inputs
`(("libx11" ,libx11)
("libxkbfile" ,libxkbfile)
("libxcursor" ,libxcursor)
("libxext" ,libxext)
("libxi" ,libxi)
("libxv" ,libxv)
("libxrandr" ,libxrandr)
("libxrender" ,libxrender)
("libxinerama" ,libxinerama)
("libxshmfence" ,libxshmfence)
("libxml2" ,libxml2)
("libxslt" ,libxslt)
("cups" ,cups)
("ffmpeg" ,ffmpeg)
("pulseaudio" ,pulseaudio)
("alsa-lib" ,alsa-lib)
("gstreamer" ,gstreamer)
("gst-plugins-base" ,gst-plugins-base)
("zlib" ,zlib)
("openssl" ,openssl)))
(arguments
`(#:configure-flags
'("-DCMAKE_INSTALL_LIBDIR=lib"
"-DWITH_PULSE=ON"
"-DWITH_CUPS=ON")
#:phases
(modify-phases %standard-phases
(add-before 'configure 'patch-cmakelists
(lambda _
;; CMake would return an error on REMOVE_DUPLICATES because this
;; list is empty.
(substitute* "channels/client/CMakeLists.txt"
(("list\\(REMOVE_DUPLICATES CHANNEL_STATIC_CLIENT_ENTRIES\\)")
"")))))
#:tests? #f)) ; no 'test' target
(home-page "https://www.freerdp.com")
(synopsis "Remote Desktop Protocol implementation")
(description "FreeRDP implements Microsoft's Remote Desktop Protocol. It
consists of the @code{xfreerdp} client, libraries for client and server
functionality, and Windows Portable Runtime (WinPR), a portable implementation
of parts of the Windows API.")
(license license:asl2.0)))

47
gnu/packages/re2c.scm Normal file
View File

@ -0,0 +1,47 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2017 Sergei Trofimovich <slyfox@inbox.ru>
;;;
;;; 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 re2c)
#:use-module (guix licenses)
#:use-module (guix packages)
#:use-module (guix download)
#:use-module (guix build-system gnu))
(define-public re2c
(package
(name "re2c")
(version "0.16")
(source (origin
(method url-fetch)
(uri (string-append "https://github.com/skvadrik/" name
"/releases/download/" version "/"
name "-" version ".tar.gz"))
(sha256
(base32
"114y0s4vmzip4hkf4cbz4yv8s498gzaylnphbzmwqhbn55j2bha8"))))
(build-system gnu-build-system)
(home-page "http://re2c.org/")
(synopsis "Lexer generator for C/C++")
(description
"@code{re2c} generates minimalistic hard-coded state machine (as opposed
to full-featured table-based lexers). Flexible API allows generated code
to be wired into virtually any environment. Instead of exposing traditional
@code{yylex()} style API, re2c exposes its internals. Be sure to take a look
at examples, they cover a lot of real-world cases and shed some light on dark
corners of re2c API.")
(license public-domain)))

View File

@ -2,6 +2,7 @@
;;; Copyright © 2016 David Craven <david@craven.ch>
;;; Copyright © 2016 Eric Le Bihan <eric.le.bihan.dev@free.fr>
;;; Copyright © 2016 ng0 <ng0@libertad.pw>
;;; Copyright © 2017 Ben Woodcroft <donttrustben@gmail.com>
;;;
;;; This file is part of GNU Guix.
;;;
@ -272,6 +273,8 @@ rustc-bootstrap and cargo-bootstrap packages.")
(wrap-program (string-append out "/bin/rustc")
`("PATH" ":" prefix (,(string-append ld-wrapper "/bin")))
`("LIBRARY_PATH" ":" suffix (,(string-append libc "/lib"))))))))))
;; rustc invokes gcc, so we need to set its search paths accordingly.
(native-search-paths (package-native-search-paths gcc))
(synopsis "Compiler for the Rust progamming language")
(description "Rust is a systems programming language that provides memory
safety and thread safety guarantees.")

View File

@ -83,14 +83,14 @@ direct descendant of NetBSD's Almquist Shell (@command{ash}).")
(define-public fish
(package
(name "fish")
(version "2.4.0")
(version "2.5.0")
(source (origin
(method url-fetch)
(uri (string-append "https://fishshell.com/files/"
version "/fish-" version ".tar.gz"))
(sha256
(base32
"1iggr6ah0siyak073v2w4sx1man19q8jsxns8i09qhv06crb5fq6"))
"0kn2n9qr9cksg2cl78f3w0yd24368d35djhi6w5x3gbdxk23ywq3"))
(modules '((guix build utils)))
;; Don't try to install /etc/fish/config.fish.
(snippet
@ -98,7 +98,12 @@ direct descendant of NetBSD's Almquist Shell (@command{ash}).")
((".*INSTALL.*sysconfdir.*fish.*") "")))))
(build-system gnu-build-system)
(native-inputs
`(("doxygen" ,doxygen)))
`(("doxygen" ,doxygen)
;; XXX These are needed to bootstrap the 2.5.0 tarball, and can probably
;; be removed along with the bootstrap phase on the next update.
("autoconf" ,autoconf)
("automake" ,automake)
("libtool" ,libtool)))
(inputs
`(("bc" ,bc)
("ncurses" ,ncurses)
@ -119,7 +124,10 @@ direct descendant of NetBSD's Almquist Shell (@command{ash}).")
"/bin/bc")))
(substitute* "share/functions/fish_update_completions.fish"
(("python") (which "python")))
#t)))))
#t))
(add-before 'configure 'bootstrap
(lambda _
(zero? (system* "autoreconf" "-vfi")))))))
(synopsis "The friendly interactive shell")
(description
"Fish (friendly interactive shell) is a shell focused on interactive use,
@ -332,14 +340,14 @@ ksh, and tcsh.")
(define-public xonsh
(package
(name "xonsh")
(version "0.5.2")
(version "0.5.3")
(source
(origin
(method url-fetch)
(uri (pypi-uri "xonsh" version))
(sha256
(base32
"13ndyq9cal2j93qqbjyp2jn3cshiavdxsaj2qjzm6mas0gzywmf0"))
"1pb1am26wl21g798lpl091j95900py7jj4g98rs9qkhywiln4z4q"))
(modules '((guix build utils)))
(snippet
`(begin

View File

@ -6,7 +6,7 @@
;;; Copyright © 2016 Pjotr Prins <pjotr.guix@thebird.nl>
;;; Copyright © 2016 Roel Janssen <roel@gnu.org>
;;; Copyright © 2016 Ben Woodcroft <donttrustben@gmail.com>
;;; Copyright © 2016 Raoul Bonnal <ilpuccio.febo@gmail.com>
;;; Copyright © 2016, 2017 Raoul Bonnal <ilpuccio.febo@gmail.com>
;;;
;;; This file is part of GNU Guix.
;;;
@ -116,7 +116,9 @@ be output in text, PostScript, PDF or HTML.")
`(#:make-flags
(list (string-append "LDFLAGS=-Wl,-rpath="
(assoc-ref %outputs "out")
"/lib/R/lib"))
"/lib/R/lib")
;; This affects the embedded timestamp of only the core packages.
"PKG_BUILT_STAMP=1970-01-01")
#:phases
(modify-phases %standard-phases
(add-before 'configure 'patch-uname
@ -126,8 +128,13 @@ be output in text, PostScript, PDF or HTML.")
(substitute* "src/scripts/R.sh.in"
(("uname") uname-bin)))
#t))
(add-before
'configure 'set-default-pager
(add-after 'unpack 'build-recommended-packages-reproducibly
(lambda _
(substitute* "src/library/Recommended/Makefile.in"
(("INSTALL_OPTS =.*" line)
(string-append line " --built-timestamp=1970-01-01")))
#t))
(add-before 'configure 'set-default-pager
;; Set default pager to "cat", because otherwise it is "false",
;; making "help()" print nothing at all.
(lambda _ (setenv "PAGER" "cat") #t))
@ -4006,6 +4013,27 @@ dispersion modeling and Tweedie power-law families.")
;; Statmod is distributed under either license
(license (list license:gpl2 license:gpl3))))
(define-public r-rann
(package
(name "r-rann")
(version "2.5")
(source (origin
(method url-fetch)
(uri (cran-uri "RANN" version))
(sha256
(base32
"007cgqg9bybg2zlljbv5m6cmlm3r6i251018rpgjcn0xnm9sjsj7"))))
(properties
`((upstream-name . "RANN")))
(build-system r-build-system)
(home-page "https://github.com/jefferis/RANN")
(synopsis "Fast nearest neighbour search")
(description
"This package finds the k nearest neighbours for every point in a given
dataset in O(N log N) time using Arya and Mount's ANN library. Provides
approximate, exact searches, fixed radius searches, bd and kb trees.")
(license license:gpl3+)))
(define-public r-fivethirtyeight
(package
(name "r-fivethirtyeight")
@ -4145,3 +4173,25 @@ regression.")
perform @dfn{independent component analysis} (ICA) and projection pursuit.")
;; Any GPL version.
(license license:gpl3+)))
(define-public r-randomforest
(package
(name "r-randomforest")
(version "4.6-12")
(source
(origin
(method url-fetch)
(uri (cran-uri "randomForest" version))
(sha256
(base32
"1i43idaihhl6nwqw42v9dqpl6f8z3ykcn2in32lh2755i27jylbf"))))
(properties `((upstream-name . "randomForest")))
(build-system r-build-system)
(home-page "https://www.stat.berkeley.edu/~breiman/RandomForests/")
(native-inputs
`(("gfortran" ,gfortran)))
(synopsis "Breiman and Cutler's random forests for classification and regression")
(description
"This package provides the Breiman and Cutler's random forests algorithm, based on a
forest of trees using random inputs, for classification and regression.")
(license license:gpl2+)))

View File

@ -489,13 +489,14 @@ security, and applying best practice development processes.")
(define-public python-acme
(package
(name "python-acme")
(version "0.10.2")
;; Remember to update the hash of certbot when updating python-acme.
(version "0.11.1")
(source (origin
(method url-fetch)
(uri (pypi-uri "acme" version))
(sha256
(base32
"0y6y8d66yvwdcby96g0dlqqwy72b81yh6hws4va8r7w4aribcrb4"))))
"0kk95iqxygrg0cd66kq8kbyalg2x5pz9hn1175cgwgf1vy72adfv"))))
(build-system python-build-system)
(arguments
`(#:phases
@ -538,13 +539,15 @@ security, and applying best practice development processes.")
(define-public certbot
(package
(name "certbot")
(version "0.10.2")
;; Certbot and python-acme are developed in the same repository, and their
;; versions should remain synchronized.
(version (package-version python-acme))
(source (origin
(method url-fetch)
(uri (pypi-uri name version))
(sha256
(base32
"0c8nidbbq8p4rjhcrw31saw04n5rz4zgr08chbch17gw03hrqwik"))))
"1wis5kgqcsrs60kkcmbrbx8z9yasmwa6lg9ir5im232hdm4285vc"))))
(build-system python-build-system)
(arguments
`(#:python ,python-2

View File

@ -1,137 +0,0 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2016 Danny Milosavljevic <dannym@scratchpost.org>
;;; Copyright © 2016 David Craven <david@craven.ch>
;;;
;;; 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 u-boot)
#:use-module (guix build-system gnu)
#:use-module (guix download)
#:use-module (guix packages)
#:use-module ((guix licenses) #:prefix license:)
#:use-module (gnu packages)
#:use-module ((gnu packages algebra) #:select (bc))
#:use-module (gnu packages bison)
#:use-module (gnu packages cross-base)
#:use-module (gnu packages flex)
#:use-module (gnu packages python))
(define-public dtc
(package
(name "dtc")
(version "1.4.2")
(source (origin
(method url-fetch)
(uri (string-append
"https://www.kernel.org/pub/software/utils/dtc/"
"dtc-" version ".tar.xz"))
(sha256
(base32
"1b7si8niyca4wxbfah3qw4p4wli81mc1qwfhaswvrfqahklnwi8k"))))
(build-system gnu-build-system)
(native-inputs
`(("bison" ,bison)
("flex" ,flex)))
(arguments
`(#:make-flags
(list "CC=gcc"
(string-append "PREFIX=" (assoc-ref %outputs "out"))
"INSTALL=install")
#:phases
(modify-phases %standard-phases
(delete 'configure))))
(home-page "https://www.devicetree.org")
(synopsis "Compiles device tree source files")
(description "@command{dtc} compiles
@uref{http://elinux.org/Device_Tree_Usage, device tree source files} to device
tree binary files. These are board description files used by Linux and BSD.")
(license license:gpl2+)))
(define u-boot
(package
(name "u-boot")
(version "2016.07")
(source (origin
(method url-fetch)
(uri (string-append
"ftp://ftp.denx.de/pub/u-boot/"
"u-boot-" version ".tar.bz2"))
(sha256
(base32
"0lqj4ckmfqiap8mc6z2d5albs3g2h5mzccbn60hsgxhabhibfkwp"))))
(native-inputs
`(("bc" ,bc)
("dtc" ,dtc)
("python-2" ,python-2)))
(build-system gnu-build-system)
(home-page "http://www.denx.de/wiki/U-Boot/")
(synopsis "ARM bootloader")
(description "U-Boot is a bootloader used mostly for ARM boards. It
also initializes the boards (RAM etc).")
(license license:gpl2+)))
(define (make-u-boot-package board triplet)
"Returns a u-boot package for BOARD cross-compiled for TRIPLET."
(package
(inherit u-boot)
(name (string-append "u-boot-" (string-downcase board)))
(native-inputs
`(("cross-gcc" ,(cross-gcc triplet))
("cross-binutils" ,(cross-binutils triplet))
,@(package-native-inputs u-boot)))
(arguments
`(#:test-target "test"
#:make-flags
(list "HOSTCC=gcc" (string-append "CROSS_COMPILE=" ,triplet "-"))
#:phases
(modify-phases %standard-phases
(replace 'configure
(lambda* (#:key outputs make-flags #:allow-other-keys)
(let ((config-name (string-append ,board "_defconfig")))
(if (file-exists? (string-append "configs/" config-name))
(zero? (apply system* "make" `(,@make-flags ,config-name)))
(begin
(display "Invalid board name. Valid board names are:")
(let ((dir (opendir "configs"))
(suffix-length (string-length "_defconfig")))
(do ((file-name (readdir dir) (readdir dir)))
((eof-object? file-name))
(when (string-suffix? "_defconfig" file-name)
(format #t "- ~A\n"
(string-drop-right file-name suffix-length))))
(closedir dir))
#f)))))
(replace 'install
(lambda* (#:key outputs make-flags #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
(libexec (string-append out "/libexec"))
(uboot-files (find-files "." ".*\\.(bin|efi|spl)$")))
(mkdir-p libexec)
(for-each
(lambda (file)
(let ((target-file (string-append libexec "/" file)))
(mkdir-p (dirname target-file))
(copy-file file target-file)))
uboot-files)))))))))
(define-public u-boot-vexpress
(make-u-boot-package "vexpress_ca9x4" "arm-linux-gnueabihf"))
(define-public u-boot-malta
(make-u-boot-package "malta" "mips64el-linux-gnuabi64"))
(define-public u-boot-beagle-bone-black
(make-u-boot-package "am335x_boneblack" "arm-linux-gnueabihf"))

View File

@ -112,14 +112,14 @@ as well as the classic centralized workflow.")
(define-public git
(package
(name "git")
(version "2.11.0")
(version "2.11.1")
(source (origin
(method url-fetch)
(uri (string-append "mirror://kernel.org/software/scm/git/git-"
version ".tar.xz"))
(sha256
(base32
"02zx368id8rys0bh2sjrxz0ln2l2wm5nf1vhp1rj72clsilqszky"))))
"05b4jw86w77c3pyh3nm6aw31vhxwzvhnx2x0bcfqmm15wg57k9y0"))))
(build-system gnu-build-system)
(native-inputs
`(("native-perl" ,perl)
@ -132,7 +132,7 @@ as well as the classic centralized workflow.")
version ".tar.xz"))
(sha256
(base32
"1n18jnpi0z3skwc1ckrm7zdld6i3zvn0g95cg9r9pdn0564fglxk"))))))
"0cfa3c2r7d86ksswxdl0jqdka9mai3446gg8380921gf779nwj39"))))))
(inputs
`(("curl" ,curl)
("expat" ,expat)
@ -275,16 +275,7 @@ as well as the classic centralized workflow.")
(wrap-program git-sm
`("PATH" ":" prefix
(,(string-append (assoc-ref inputs "perl")
"/bin"))))
;; Tell 'git' to look for core programs in the user's profile.
;; This allows user to install other outputs of this package and
;; have them transparently taken into account. There's a
;; 'GIT_EXEC_PATH' environment variable, but it's supposed to
;; specify a single directory, not a search path.
(wrap-program (string-append out "/bin/git")
`("PATH" ":" prefix
("$HOME/.guix-profile/libexec/git-core"))))))
"/bin")))))))
(add-after 'split 'install-man-pages
(lambda* (#:key inputs outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
@ -301,7 +292,10 @@ as well as the classic centralized workflow.")
(variable "GIT_SSL_CAINFO")
(file-type 'regular)
(separator #f) ;single entry
(files '("etc/ssl/certs/ca-certificates.crt")))))
(files '("etc/ssl/certs/ca-certificates.crt")))
(search-path-specification
(variable "GIT_EXEC_PATH")
(files '("libexec/git-core")))))
(synopsis "Distributed version control system")
(description
@ -367,6 +361,47 @@ write native speed custom Git applications in any language with bindings.")
;; GPLv2 with linking exception
(license license:gpl2)))
(define-public git-crypt
(package
(name "git-crypt")
(version "0.5.0")
(source (origin
(method url-fetch)
(uri (string-append "https://github.com/AGWA/git-crypt"
"/archive/" version ".tar.gz"))
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
"0454fdmgm5f3razkn8n03lfqm5zyzvr4r2528zmlxiwba9518l2i"))))
(build-system gnu-build-system)
(inputs
`(("git" ,git)
("openssl" ,openssl)))
(arguments
`(#:tests? #f ; No tests.
#:phases
(modify-phases %standard-phases
(delete 'configure)
(replace 'build
(lambda _
(zero? (system* "make"))))
(replace 'install
(lambda* (#:key outputs #:allow-other-keys)
(let ((out (assoc-ref outputs "out")))
(zero? (system* "make" "install"
(string-append "PREFIX=" out)))))))))
(home-page "https://www.agwa.name/projects/git-crypt")
(synopsis "Transparent encryption of files in a git repository")
(description "git-crypt enables transparent encryption and decryption of
files in a git repository. Files which you choose to protect are encrypted when
committed, and decrypted when checked out. git-crypt lets you freely share a
repository containing a mix of public and private content. git-crypt gracefully
degrades, so developers without the secret key can still clone and commit to a
repository with encrypted files. This lets you store your secret material (such
as keys or passwords) in the same repository as your code, without requiring you
to lock down your entire repository.")
(license license:gpl3+)))
(define-public cgit
(package
(name "cgit")

View File

@ -11,7 +11,7 @@
;;; Copyright © 2016 Kei Kebreau <kei@openmailbox.org>
;;; Copyright © 2016 Dmitry Nikolaev <cameltheman@gmail.com>
;;; Copyright © 2016 Andy Patterson <ajpatter@uwaterloo.ca>
;;; Copyright © 2016 ng0 <ng0@we.make.ritual.n0.is>
;;; Copyright © 2016, 2017 ng0 <contact.ng0@cryptolab.net>
;;; Copyright © 2016 Eric Bavier <bavier@member.fsf.org>
;;; Copyright © 2016 Jan Nieuwenhuizen <janneke@gnu.org>
;;;
@ -57,6 +57,7 @@
#:use-module (gnu packages compression)
#:use-module (gnu packages curl)
#:use-module (gnu packages databases)
#:use-module (gnu packages dejagnu)
#:use-module (gnu packages elf)
#:use-module (gnu packages flex)
#:use-module (gnu packages fontutils)
@ -75,6 +76,7 @@
#:use-module (gnu packages linux)
#:use-module (gnu packages lua)
#:use-module (gnu packages m4)
#:use-module (gnu packages man)
#:use-module (gnu packages mp3)
#:use-module (gnu packages ncurses)
#:use-module (gnu packages ocr)
@ -442,14 +444,14 @@ standards (MPEG-2, MPEG-4 ASP/H.263, MPEG-4 AVC/H.264, and VC-1/VMW3).")
(define-public ffmpeg
(package
(name "ffmpeg")
(version "3.2.2")
(version "3.2.3")
(source (origin
(method url-fetch)
(uri (string-append "https://ffmpeg.org/releases/ffmpeg-"
version ".tar.xz"))
(sha256
(base32
"1z7d5y5crhsl5fm74236rdwbkd4jj5frx1l4iizjfym1w4gvs09z"))))
"1ifwjh68zw0mwq9swmfjqk2ck84gysi0w8hrkw2yddqhr8m51kjl"))))
(build-system gnu-build-system)
(inputs
`(("fontconfig" ,fontconfig)
@ -891,7 +893,9 @@ SVCD, DVD, 3ivx, DivX 3/4/5, WMV and H.264 movies.")
(lambda* (#:key inputs #:allow-other-keys)
(copy-file (assoc-ref inputs "waf") "waf")
(setenv "CC" "gcc"))))
#:configure-flags (list "--enable-libmpv-shared" "--enable-zsh-comp")
#:configure-flags (list "--enable-libmpv-shared"
"--enable-zsh-comp"
"--disable-build-date")
;; No check function defined.
#:tests? #f))
(home-page "https://mpv.io/")
@ -932,7 +936,7 @@ access to mpv's powerful playback capabilities.")
(define-public libvpx
(package
(name "libvpx")
(version "1.6.0")
(version "1.6.1")
(source (origin
(method url-fetch)
(uri (string-append "http://storage.googleapis.com/"
@ -940,7 +944,7 @@ access to mpv's powerful playback capabilities.")
name "-" version ".tar.bz2"))
(sha256
(base32
"1basd6dda5di9p7jhc0f4f52wzm9c3hsravqspw6ibpcn5gbpbyh"))
"06d8hqjkfs6wl45qf4pwh1kpbvkx6cwywd5y8d4lgagvjwm0qb0w"))
(patches (search-patches "libvpx-CVE-2016-2818.patch"))))
(build-system gnu-build-system)
(arguments
@ -970,7 +974,7 @@ access to mpv's powerful playback capabilities.")
(define-public youtube-dl
(package
(name "youtube-dl")
(version "2017.01.29")
(version "2017.02.07")
(source (origin
(method url-fetch)
(uri (string-append "https://yt-dl.org/downloads/"
@ -978,7 +982,7 @@ access to mpv's powerful playback capabilities.")
version ".tar.gz"))
(sha256
(base32
"0visxc4rb6kw4hjcgcv5llis08z0syhian1m5hr1fdbz4w73hx9l"))))
"1grq3aqa1zc0xdq1y6vqnk0y0vcd1j2jjn85696hw98mi0w1am73"))))
(build-system python-build-system)
(arguments
;; The problem here is that the directory for the man page and completion
@ -1862,3 +1866,62 @@ of modern, widely supported codecs.")
(description
"Openh264 is a library which can decode H264 video streams.")
(license license:bsd-2)))
(define-public libmp4v2
(package
(name "libmp4v2")
(version "2.0.0")
(source
(origin
(method url-fetch)
;; XXX: The new location of upstream is uncertain and will become relevant the
;; moment when the googlecode archive shuts down. It is past the date it
;; should've been turned off. I tried to communicate with upstream, but this
;; wasn't very responsive and not very helpful. The short summary is, it is
;; chaos when it comes to the amount of forks and only time will tell where
;; the new upstream location is.
(uri (string-append "https://storage.googleapis.com/google-"
"code-archive-downloads/v2/"
"code.google.com/mp4v2/mp4v2-" version ".tar.bz2"))
(file-name (string-append name "-" version ".tar.bz2"))
(sha256
(base32
"0f438bimimsvxjbdp4vsr8hjw2nwggmhaxgcw07g2z361fkbj683"))))
(build-system gnu-build-system)
(outputs '("out"
"static")) ; 3.7MiB .a file
(arguments
`(#:phases
(modify-phases %standard-phases
(add-after 'unpack 'remove-dates
(lambda _
;; Make the build reproducible.
(substitute* "configure"
(("PROJECT_build=\"`date`\"") "PROJECT_build=\"\"")
(("ac_abs_top_builddir=$ac_pwd") "ac_abs_top_builddir=\"\""))
#t))
(add-after 'install 'move-static-libraries
(lambda* (#:key outputs #:allow-other-keys)
;; Move static libraries to the "static" output.
(let* ((out (assoc-ref outputs "out"))
(lib (string-append out "/lib"))
(static (assoc-ref outputs "static"))
(slib (string-append static "/lib")))
(mkdir-p slib)
(for-each (lambda (file)
(install-file file slib)
(delete-file file))
(find-files lib "\\.a$"))
#t))))))
(native-inputs
`(("help2man" ,help2man)
("dejagnu" ,dejagnu)))
(home-page "https://code.google.com/archive/p/mp4v2/")
(synopsis "API to create and modify mp4 files")
(description
"The MP4v2 library provides an API to create and modify mp4 files as defined by
ISO-IEC:14496-1:2001 MPEG-4 Systems. This file format is derived from Apple's QuickTime
file format that has been used as a multimedia file format in a variety of platforms and
applications. It is a very powerful and extensible format that can accommodate
practically any type of media.")
(license license:mpl1.1)))

View File

@ -57,7 +57,7 @@
(define-public vim
(package
(name "vim")
(version "8.0.0257")
(version "8.0.0300")
(source (origin
(method url-fetch)
(uri (string-append "https://github.com/vim/vim/archive/v"
@ -65,7 +65,7 @@
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
"05vz59iw77lmhnywfv9ihd0d895axqf2y81ddpjkn1qdspvw8ijj"))))
"04samk2bakyixbxyc3p0g6ypls45105sikibg0wc6lmak9bqjs85"))))
(build-system gnu-build-system)
(arguments
`(#:test-target "test"

View File

@ -13,7 +13,7 @@
;;; Copyright © 2016 Rene Saavedra <rennes@openmailbox.org>
;;; Copyright © 2016 Ben Woodcroft <donttrustben@gmail.com>
;;; Copyright © 2016 Clément Lassieur <clement@lassieur.org>
;;; Copyright © 2016 ng0 <ng0@we.make.ritual.n0.is>
;;; Copyright © 2016, 2017 ng0 <contact.ng0@cryptolab.net>
;;; Copyright © 2016 Arun Isaac <arunisaac@systemreboot.net>
;;; Copyright © 2016 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2016 Bake Timmons <b3timmons@speedymail.org>
@ -4018,3 +4018,51 @@ service for that request. Requests are made using port numbers as identifiers
and xinetd usually launches another daemon to handle the request. It can be
used to start services with both privileged and non-privileged port numbers.")
(license (l:fsf-free "file://COPYRIGHT"))))
(define-public tidy-html
(package
(name "tidy-html")
(version "5.2.0")
(source
(origin
(method url-fetch)
(uri (string-append "https://github.com/htacg/tidy-html5/archive/"
version ".tar.gz"))
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
"0kbwzh15dlapp3s3vff2qgz0yfcf8hwsnx5q4igwa6pimhak8lw0"))))
(build-system cmake-build-system)
(outputs '("out"
"static")) ; 1.0MiB of .a files
(arguments
`(#:tests? #f ; No tests available
#:configure-flags (list "-DCMAKE_BUILD_TYPE=Release")
#:phases
(modify-phases %standard-phases
(add-after 'install 'move-static-libraries
(lambda* (#:key outputs #:allow-other-keys)
;; Move static libraries to the "static" output.
(let* ((out (assoc-ref outputs "out"))
(lib (string-append out "/lib"))
(static (assoc-ref outputs "static"))
(slib (string-append static "/lib")))
(mkdir-p slib)
(for-each (lambda (file)
(install-file file slib)
(delete-file file))
(find-files lib "\\.a$"))
#t))))))
(native-inputs
`(("libxslt" ,libxslt)))
(home-page "http://www.html-tidy.org/")
(synopsis "HTML Tidy with HTML5 support")
(description
"Tidy is a console application which corrects and cleans up
HTML and XML documents by fixing markup errors and upgrading
legacy code to modern standards.
Tidy also provides @code{libtidy}, a C static and dynamic library that
developers can integrate into their applications to make use of the
functions of Tidy.")
(license l:bsd-3)))

View File

@ -53,14 +53,14 @@
(define-public webkitgtk
(package
(name "webkitgtk")
(version "2.14.3")
(version "2.14.4")
(source (origin
(method url-fetch)
(uri (string-append "https://www.webkitgtk.org/releases/"
name "-" version ".tar.xz"))
(sha256
(base32
"0v0hkvggxi38cdb3v672qwr0m0y3x2rmnwh8j3q28869li8d9shb"))))
"1b73rcyfqjyg5rqw6f4760b2h1kixwva88clp2wl9vnl3psjvbni"))))
(build-system cmake-build-system)
(arguments
'(#:tests? #f ; no tests

View File

@ -33,7 +33,7 @@
(define-public wget
(package
(name "wget")
(version "1.18")
(version "1.19")
(source
(origin
(method url-fetch)
@ -41,11 +41,11 @@
version ".tar.xz"))
(sha256
(base32
"1hcwx8ww3sxzdskkx3l7q70a7wd6569yrnjkw9pw013cf9smpddm"))))
"1133c14g19ysv74j7am66jwgwrr0rdn0rdyxw7rikbnsyjxmf48g"))))
(build-system gnu-build-system)
(inputs
`(("gnutls" ,gnutls)
("libidn" ,libidn)
("libidn2" ,libidn2)
("libpsl" ,libpsl)))
(native-inputs
`(("pkg-config" ,pkg-config)
@ -53,7 +53,7 @@
("python" ,python) ;for testenv suite
("perl-http-daemon" ,perl-http-daemon)
("perl-io-socket-ssl" ,perl-io-socket-ssl)))
(home-page "http://www.gnu.org/software/wget/")
(home-page "https://www.gnu.org/software/wget/")
(synopsis "Non-interactive command-line utility for downloading files")
(description
"GNU Wget is a non-interactive tool for fetching files using the HTTP,

View File

@ -844,7 +844,6 @@ the X.Org X Server version 1.7 and later (X11R7.5 or later).")
("libx11" ,libx11)
("libxcb" ,libxcb)
("libxxf86vm" ,libxxf86vm)
("libjpeg" ,libjpeg)
("glib" ,glib))) ;for Geoclue2 support
(home-page "https://github.com/jonls/redshift")
(synopsis "Adjust the color temperature of your screen")
@ -920,7 +919,7 @@ demos. It also acts as a nice screen locker.")
(license (license:non-copyleft
(string-append
"http://metadata.ftp-master.debian.org/changelogs/"
"/main/x/xscreensaver/xscreensaver_5.34-2_copyright")))))
"/main/x/xscreensaver/xscreensaver_5.36-1_copyright")))))
(define-public xdpyprobe
(package

View File

@ -2386,7 +2386,7 @@ including most mice, keyboards, tablets and touchscreens.")
(define-public xf86-input-libinput
(package
(name "xf86-input-libinput")
(version "0.23.0")
(version "0.24.0")
(source (origin
(method url-fetch)
(uri (string-append
@ -2394,7 +2394,7 @@ including most mice, keyboards, tablets and touchscreens.")
name "-" version ".tar.bz2"))
(sha256
(base32
"1p596v3kbmjpdz3kz8z19bnd79l860f1pbwjvma7bz7qx3gynlqb"))))
"0a1nn65qq71bbfhxq39zdb4b1h6ickzv98cjdacv4ngd18shgjyx"))))
(build-system gnu-build-system)
(arguments
'(#:configure-flags
@ -2805,10 +2805,10 @@ X server.")
(define-public xf86-video-intel
(let ((commit "9fe04af4bce3057e3e94a6bf36a3d8d2e48d592c"))
(let ((commit "e4fe79cf0d9a05ee3f3a027148ef0aeb2b1b34e1"))
(package
(name "xf86-video-intel")
(version (string-append "2.99.917-2-" (string-take commit 7)))
(version (string-append "2.99.917-3-" (string-take commit 7)))
(source
(origin
;; there's no current tarball
@ -2818,7 +2818,7 @@ X server.")
(commit commit)))
(sha256
(base32
"06nnm9kjvmwxazp2ki0i5x1xv03bysfgpw30nd2jlf71qllybxml"))
"0hf3fxv5jchyh820h449c1ld9x19gc8081w1yk98mab6zr89zswp"))
(file-name (string-append name "-" version))))
(build-system gnu-build-system)
(inputs `(("mesa" ,mesa)

View File

@ -72,6 +72,8 @@
activation-service-type
activation-service->script
%linux-bare-metal-service
special-files-service-type
extra-special-file
etc-service-type
etc-directory
setuid-program-service-type
@ -336,10 +338,6 @@ ACTIVATION-SCRIPT-TYPE."
#~(begin
(use-modules (gnu build activation))
;; Make sure /bin/sh is valid and current.
(activate-/bin/sh
(string-append #$(canonical-package bash) "/bin/sh"))
;; 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.
@ -413,6 +411,25 @@ ACTIVATION-SCRIPT-TYPE."
;; necessary or impossible in a container.
(service linux-bare-metal-service-type #f))
(define special-files-service-type
;; Service to install "special files" such as /bin/sh and /usr/bin/env.
(service-type
(name 'special-files)
(extensions
(list (service-extension activation-service-type
(lambda (files)
#~(activate-special-files '#$files)))))
(compose concatenate)
(extend append)))
(define (extra-special-file file target)
"Use TARGET as the \"special file\" FILE. For example, TARGET might be
(file-append coreutils \"/bin/env\")
and FILE could be \"/usr/bin/env\"."
(simple-service (string->symbol (string-append "special-file-" file))
special-files-service-type
`((,file ,target))))
(define (etc-directory service)
"Return the directory for SERVICE, a service of type ETC-SERVICE-TYPE."
(files->etc-directory (service-parameters service)))

View File

@ -36,6 +36,7 @@
#:select (alsa-utils crda eudev e2fsprogs fuse gpm kbd lvm2 rng-tools))
#:use-module ((gnu packages base)
#:select (canonical-package glibc))
#:use-module (gnu packages bash)
#:use-module (gnu packages package-management)
#:use-module (gnu packages lsof)
#:use-module (gnu packages terminals)
@ -1558,6 +1559,10 @@ This service is not part of @var{%base-services}."
;; The LVM2 rules are needed as soon as LVM2 or the device-mapper is
;; used, so enable them by default. The FUSE and ALSA rules are
;; less critical, but handy.
(udev-service #:rules (list lvm2 fuse alsa-utils crda))))
(udev-service #:rules (list lvm2 fuse alsa-utils crda))
(service special-files-service-type
`(("/bin/sh" ,(file-append (canonical-package bash)
"/bin/sh"))))))
;;; base.scm ends here

View File

@ -36,6 +36,7 @@
#:use-module (gnu packages gnome)
#:use-module (guix gexp)
#:use-module (guix records)
#:use-module (guix modules)
#:use-module (srfi srfi-1)
#:use-module (srfi srfi-9)
#:use-module (srfi srfi-26)
@ -624,13 +625,29 @@ project's documentation} for more information."
DaemonPort = " (number->string port) "
" extra-settings))))
(list (shepherd-service
(provision '(bitlbee))
(requirement '(user-processes loopback))
(start #~(make-forkexec-constructor
(list (string-append #$bitlbee "/sbin/bitlbee")
"-n" "-F" "-u" "bitlbee" "-c" #$conf)))
(stop #~(make-kill-destructor))))))))
(with-imported-modules (source-module-closure
'((gnu build shepherd)
(gnu system file-systems)))
(list (shepherd-service
(provision '(bitlbee))
;; Note: If networking is not up, then /etc/resolv.conf
;; doesn't get mapped in the container, hence the dependency
;; on 'networking'.
(requirement '(user-processes networking))
(modules '((gnu build shepherd)
(gnu system file-systems)))
(start #~(make-forkexec-constructor/container
(list #$(file-append bitlbee "/sbin/bitlbee")
"-n" "-F" "-u" "bitlbee" "-c" #$conf)
#:pid-file "/var/run/bitlbee.pid"
#:mappings (list (file-system-mapping
(source "/var/lib/bitlbee")
(target source)
(writable? #t)))))
(stop #~(make-kill-destructor)))))))))
(define %bitlbee-accounts
;; User group and account to run BitlBee.

View File

@ -1,5 +1,6 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2013, 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2017 Clément Lassieur <clement@lassieur.org>
;;;
;;; This file is part of GNU Guix.
;;;
@ -195,6 +196,7 @@ stored."
(string-append "shepherd-"
(string-map (match-lambda
(#\/ #\-)
(#\ #\-)
(chr chr))
provisions)
".scm")))

View File

@ -18,8 +18,8 @@
(define-module (gnu system file-systems)
#:use-module (ice-9 match)
#:use-module (srfi srfi-1)
#:use-module (guix records)
#:use-module (guix store)
#:use-module ((gnu build file-systems)
#:select (string->uuid uuid->string))
#:re-export (string->uuid
@ -63,7 +63,11 @@
file-system-mapping-target
file-system-mapping-writable?
%store-mapping))
file-system-mapping->bind-mount
%store-mapping
%network-configuration-files
%network-file-mappings))
;;; Commentary:
;;;
@ -95,6 +99,20 @@
(dependencies file-system-dependencies ; list of <file-system>
(default '()))) ; or <mapped-device>
;; Note: This module is used both on the build side and on the host side.
;; Arrange not to pull (guix store) and (guix config) because the latter
;; differs from user to user.
(define (%store-prefix)
"Return the store prefix."
(cond ((resolve-module '(guix store) #:ensure #f)
=>
(lambda (store)
((module-ref store '%store-prefix))))
((getenv "NIX_STORE")
=> identity)
(else
"/gnu/store")))
(define %not-slash
(char-set-complement (char-set #\/)))
@ -352,6 +370,21 @@ TARGET in the other system."
(writable? file-system-mapping-writable? ;Boolean
(default #f)))
(define (file-system-mapping->bind-mount mapping)
"Return a file system that realizes MAPPING, a <file-system-mapping>, using
a bind mount."
(match mapping
(($ <file-system-mapping> source target writable?)
(file-system
(mount-point target)
(device source)
(type "none")
(flags (if writable?
'(bind-mount)
'(bind-mount read-only)))
(check? #f)
(create-mount-point? #t)))))
(define %store-mapping
;; Mapping of the host's store into the guest.
(file-system-mapping
@ -359,4 +392,23 @@ TARGET in the other system."
(target (%store-prefix))
(writable? #f)))
(define %network-configuration-files
;; List of essential network configuration files.
'("/etc/resolv.conf"
"/etc/nsswitch.conf"
"/etc/services"
"/etc/hosts"))
(define %network-file-mappings
;; List of file mappings for essential network files.
(filter-map (lambda (file)
(file-system-mapping
(source file)
(target file)
;; XXX: On some GNU/Linux systems, /etc/resolv.conf is a
;; symlink to a file in a tmpfs which, for an unknown reason,
;; cannot be bind mounted read-only within the container.
(writable? (string=? file "/etc/resolv.conf"))))
%network-configuration-files))
;;; file-systems.scm ends here

View File

@ -27,7 +27,7 @@
#:use-module (guix download)
#:use-module (gnu artwork)
#:use-module (gnu system file-systems)
#:autoload (gnu packages grub) (grub)
#:autoload (gnu packages bootloaders) (grub)
#:autoload (gnu packages compression) (gzip)
#:autoload (gnu packages gtk) (guile-cairo guile-rsvg)
#:use-module (ice-9 match)
@ -108,7 +108,7 @@ denoting a file name."
grub-configuration make-grub-configuration
grub-configuration?
(grub grub-configuration-grub ; package
(default (@ (gnu packages grub) grub)))
(default (@ (gnu packages bootloaders) grub)))
(device grub-configuration-device) ; string
(menu-entries grub-configuration-menu-entries ; list
(default '()))

View File

@ -28,11 +28,11 @@
#:use-module (gnu services shepherd)
#:use-module (gnu packages admin)
#:use-module (gnu packages bash)
#:use-module (gnu packages bootloaders)
#:use-module (gnu packages linux)
#:use-module (gnu packages cryptsetup)
#:use-module (gnu packages package-management)
#:use-module (gnu packages disk)
#:use-module (gnu packages grub)
#:use-module (gnu packages texinfo)
#:use-module (gnu packages compression)
#:use-module (gnu packages nvi)
@ -388,7 +388,7 @@ Use Alt-F2 for documentation.
(base-pam-services #:allow-empty-passwords? #t))
(packages (cons* (canonical-package glibc) ;for 'tzselect' & co.
parted ddrescue
parted gptfdisk ddrescue
grub ;mostly so xrefs to its manual work
cryptsetup
mdadm

View File

@ -1,6 +1,6 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2015 David Thompson <davet@gnu.org>
;;; Copyright © 2016 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2016, 2017 Ludovic Courtès <ludo@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;
@ -30,25 +30,10 @@
#:use-module (gnu services)
#:use-module (gnu system)
#:use-module (gnu system file-systems)
#:export (mapping->file-system
system-container
#:export (system-container
containerized-operating-system
container-script))
(define (mapping->file-system mapping)
"Return a file system that realizes MAPPING."
(match mapping
(($ <file-system-mapping> source target writable?)
(file-system
(mount-point target)
(device source)
(type "none")
(flags (if writable?
'(bind-mount)
'(bind-mount read-only)))
(check? #f)
(create-mount-point? #t)))))
(define (containerized-operating-system os mappings)
"Return an operating system based on OS for use in a Linux container
environment. MAPPINGS is a list of <file-system-mapping> to realize in the
@ -66,7 +51,7 @@ containerized OS."
(operating-system-file-systems os)))
(define (mapping->fs fs)
(file-system (inherit (mapping->file-system fs))
(file-system (inherit (file-system-mapping->bind-mount fs))
(needed-for-boot? #t)))
(operating-system (inherit os)

View File

@ -31,6 +31,7 @@
#:use-module ((gnu build vm)
#:select (qemu-command))
#:use-module (gnu packages base)
#:use-module (gnu packages bootloaders)
#:use-module (gnu packages guile)
#:use-module (gnu packages gawk)
#:use-module (gnu packages bash)
@ -38,7 +39,6 @@
#:use-module (gnu packages qemu)
#:use-module (gnu packages disk)
#:use-module (gnu packages zile)
#:use-module (gnu packages grub)
#:use-module (gnu packages linux)
#:use-module (gnu packages package-management)
#:use-module ((gnu packages make-bootstrap)

View File

@ -77,6 +77,11 @@ When INITIALIZATION is true, it must be a one-argument procedure that is
passed a gexp denoting the marionette, and it must return gexp that is
inserted before the first test. This is used to introduce an extra
initialization step, such as entering a LUKS passphrase."
(define special-files
(service-parameters
(fold-services (operating-system-services os)
#:target-type special-files-service-type)))
(define test
(with-imported-modules '((gnu build marionette)
(guix build syscalls))
@ -120,6 +125,18 @@ grep --version
info --version")
marionette)))
(test-equal "special files"
'#$special-files
(marionette-eval
'(begin
(use-modules (ice-9 match))
(map (match-lambda
((file target)
(list file (readlink file))))
'#$special-files))
marionette))
(test-assert "accounts"
(let ((users (marionette-eval '(begin
(use-modules (ice-9 match))
@ -166,21 +183,41 @@ info --version")
marionette)))
(test-assert "skeletons in home directories"
(let ((homes
(let ((users+homes
'#$(filter-map (lambda (account)
(and (user-account-create-home-directory?
account)
(not (user-account-system? account))
(user-account-home-directory account)))
(list (user-account-name account)
(user-account-home-directory
account))))
(operating-system-user-accounts os))))
(marionette-eval
`(begin
(use-modules (srfi srfi-1) (ice-9 ftw))
(every (lambda (home)
(null? (lset-difference string=?
(scandir "/etc/skel/")
(scandir home))))
',homes))
(use-modules (srfi srfi-1) (ice-9 ftw)
(ice-9 match))
(every (match-lambda
((user home)
;; Make sure HOME has all the skeletons...
(and (null? (lset-difference string=?
(scandir "/etc/skel/")
(scandir home)))
;; ... and that everything is user-owned.
(let* ((pw (getpwnam user))
(uid (passwd:uid pw))
(gid (passwd:gid pw))
(st (lstat home)))
(define (user-owned? file)
(= uid (stat:uid (lstat file))))
(and (= uid (stat:uid st))
(eq? 'directory (stat:type st))
(every user-owned?
(find-files home
#:directories? #t)))))))
',users+homes))
marionette)))
(test-equal "login on tty1"

147
guix/build-system/dub.scm Normal file
View File

@ -0,0 +1,147 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2013, 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2013 Andreas Enge <andreas@enge.fr>
;;; Copyright © 2013 Nikita Karetnikov <nikita@karetnikov.org>
;;; Copyright © 2016 David Craven <david@craven.ch>
;;; Copyright © 2016 Danny Milosavljevic <dannym@scratchpost.org>
;;;
;;; This file is part of GNU Guix.
;;;
;;; GNU Guix is free software; you can redistribute it and/or modify it
;;; under the terms of the GNU General Public License as published by
;;; the Free Software Foundation; either version 3 of the License, or (at
;;; your option) any later version.
;;;
;;; GNU Guix is distributed in the hope that it will be useful, but
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;;; GNU General Public License for more details.
;;;
;;; You should have received a copy of the GNU General Public License
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
(define-module (guix build-system dub)
#:use-module (guix search-paths)
#:use-module (guix store)
#:use-module (guix utils)
#:use-module (guix derivations)
#:use-module (guix packages)
#:use-module (guix build-system)
#:use-module (guix build-system gnu)
#:use-module (ice-9 match)
#:use-module (srfi srfi-26)
#:export (dub-build-system))
(define (default-ldc)
"Return the default ldc package."
;; Lazily resolve the binding to avoid a circular dependency.
(let ((ldc (resolve-interface '(gnu packages ldc))))
(module-ref ldc 'ldc)))
(define (default-dub)
"Return the default dub package."
;; Lazily resolve the binding to avoid a circular dependency.
(let ((ldc (resolve-interface '(gnu packages ldc))))
(module-ref ldc 'dub)))
(define (default-pkg-config)
"Return the default pkg-config package."
;; Lazily resolve the binding to avoid a circular dependency.
(let ((pkg-config (resolve-interface '(gnu packages pkg-config))))
(module-ref pkg-config 'pkg-config)))
(define %dub-build-system-modules
;; Build-side modules imported by default.
`((guix build dub-build-system)
(guix build syscalls)
,@%gnu-build-system-modules))
(define* (dub-build store name inputs
#:key
(tests? #t)
(test-target #f)
(dub-build-flags ''())
(phases '(@ (guix build dub-build-system)
%standard-phases))
(outputs '("out"))
(search-paths '())
(system (%current-system))
(guile #f)
(imported-modules %dub-build-system-modules)
(modules '((guix build dub-build-system)
(guix build utils))))
"Build SOURCE using DUB, and with INPUTS."
(define builder
`(begin
(use-modules ,@modules)
(dub-build #:name ,name
#:source ,(match (assoc-ref inputs "source")
(((? derivation? source))
(derivation->output-path source))
((source)
source)
(source
source))
#:system ,system
#:test-target ,test-target
#:dub-build-flags ,dub-build-flags
#:tests? ,tests?
#:phases ,phases
#:outputs %outputs
#:search-paths ',(map search-path-specification->sexp
search-paths)
#:inputs %build-inputs)))
(define guile-for-build
(match guile
((? package?)
(package-derivation store guile system #:graft? #f))
(#f ; the default
(let* ((distro (resolve-interface '(gnu packages commencement)))
(guile (module-ref distro 'guile-final)))
(package-derivation store guile system #:graft? #f)))))
(build-expression->derivation store name builder
#:inputs inputs
#:system system
#:modules imported-modules
#:outputs outputs
#:guile-for-build guile-for-build))
(define* (lower name
#:key source inputs native-inputs outputs system target
(ldc (default-ldc))
(dub (default-dub))
(pkg-config (default-pkg-config))
#:allow-other-keys
#:rest arguments)
"Return a bag for NAME."
(define private-keywords
'(#:source #:target #:ldc #:dub #:pkg-config #:inputs #:native-inputs #:outputs))
(and (not target) ;; TODO: support cross-compilation
(bag
(name name)
(system system)
(target target)
(host-inputs `(,@(if source
`(("source" ,source))
'())
,@inputs
;; Keep the standard inputs of 'gnu-build-system'
,@(standard-packages)))
(build-inputs `(("ldc" ,ldc)
("dub" ,dub)
,@native-inputs))
(outputs outputs)
(build dub-build)
(arguments (strip-keyword-arguments private-keywords arguments)))))
(define dub-build-system
(build-system
(name 'dub)
(description
"DUB build system, to build D packages")
(lower lower)))

View File

@ -0,0 +1,125 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2016 David Craven <david@craven.ch>
;;; Copyright © 2017 Danny Milosavljevic <dannym@scratchpost.org>
;;;
;;; This file is part of GNU Guix.
;;;
;;; GNU Guix is free software; you can redistribute it and/or modify it
;;; under the terms of the GNU General Public License as published by
;;; the Free Software Foundation; either version 3 of the License, or (at
;;; your option) any later version.
;;;
;;; GNU Guix is distributed in the hope that it will be useful, but
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;;; GNU General Public License for more details.
;;;
;;; You should have received a copy of the GNU General Public License
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
(define-module (guix build dub-build-system)
#:use-module ((guix build gnu-build-system) #:prefix gnu:)
#:use-module (guix build syscalls)
#:use-module (guix build utils)
#:use-module (ice-9 popen)
#:use-module (ice-9 rdelim)
#:use-module (ice-9 ftw)
#:use-module (ice-9 format)
#:use-module (ice-9 match)
#:use-module (rnrs io ports)
#:use-module (srfi srfi-1)
#:use-module (srfi srfi-26)
#:export (%standard-phases
dub-build))
;; Commentary:
;;
;; Builder-side code of the DUB (the build tool for D) build system.
;;
;; Code:
;; FIXME: Needs to be parsed from url not package name.
(define (package-name->d-package-name name)
"Return the package name of NAME."
(match (string-split name #\-)
(("d" rest ...)
(string-join rest "-"))
(_ #f)))
(define* (configure #:key inputs #:allow-other-keys)
"Prepare one new directory with all the required dependencies.
It's necessary to do this (instead of just using /gnu/store as the
directory) because we want to hide the libraries in subdirectories
lib/dub/... instead of polluting the user's profile root."
(let* ((dir (mkdtemp! "/tmp/dub.XXXXXX"))
(vendor-dir (string-append dir "/vendor")))
(setenv "HOME" dir)
(mkdir vendor-dir)
(for-each
(match-lambda
((name . path)
(let* ((d-package (package-name->d-package-name name))
(d-basename (basename path)))
(when (and d-package path)
(match (string-split (basename path) #\-)
((_ ... version)
(symlink (string-append path "/lib/dub/" d-basename)
(string-append vendor-dir "/" d-basename))))))))
inputs)
(zero? (system* "dub" "add-path" vendor-dir))))
(define (grep string file-name)
"Find the first occurence of STRING in the file named FILE-NAME.
Return the position of this occurence, or #f if none was found."
(string-contains (call-with-input-file file-name get-string-all)
string))
(define (grep* string file-name)
"Find the first occurence of STRING in the file named FILE-NAME.
Return the position of this occurence, or #f if none was found.
If the file named FILE-NAME doesn't exist, return #f."
(catch 'system-error
(lambda ()
(grep string file-name))
(lambda args
#f)))
(define* (build #:key (dub-build-flags '())
#:allow-other-keys)
"Build a given DUB package."
(if (or (grep* "sourceLibrary" "package.json")
(grep* "sourceLibrary" "dub.sdl") ; note: format is different!
(grep* "sourceLibrary" "dub.json"))
#t
(let ((status (zero? (apply system* `("dub" "build" ,@dub-build-flags)))))
(system* "dub" "run") ; might fail for "targetType": "library"
status)))
(define* (check #:key tests? #:allow-other-keys)
(if tests?
(zero? (system* "dub" "test"))
#t))
(define* (install #:key inputs outputs #:allow-other-keys)
"Install a given DUB package."
(let* ((out (assoc-ref outputs "out"))
(outbin (string-append out "/bin"))
(outlib (string-append out "/lib/dub/" (basename out))))
(mkdir-p outbin)
;; TODO remove "-test-application"
(copy-recursively "bin" outbin)
(mkdir-p outlib)
(copy-recursively "." (string-append outlib))
#t))
(define %standard-phases
(modify-phases gnu:%standard-phases
(replace 'configure configure)
(replace 'build build)
(replace 'check check)
(replace 'install install)))
(define* (dub-build #:key inputs (phases %standard-phases)
#:allow-other-keys #:rest args)
"Build the given DUB package, applying all of PHASES in order."
(apply gnu:gnu-build #:inputs inputs #:phases phases args))

View File

@ -1,5 +1,6 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2014, 2015, 2016 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2017 Mathieu Lirzin <mthl@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;
@ -17,6 +18,7 @@
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
(define-module (guix git-download)
#:use-module (guix build utils)
#:use-module (guix gexp)
#:use-module (guix store)
#:use-module (guix monads)
@ -24,6 +26,9 @@
#:use-module (guix packages)
#:autoload (guix build-system gnu) (standard-packages)
#:use-module (ice-9 match)
#:use-module (ice-9 popen)
#:use-module (ice-9 rdelim)
#:use-module (srfi srfi-1)
#:export (git-reference
git-reference?
git-reference-url
@ -32,7 +37,8 @@
git-fetch
git-version
git-file-name))
git-file-name
git-predicate))
;;; Commentary:
;;;
@ -119,4 +125,39 @@ HASH-ALGO (a symbol). Use NAME as the file name, or a generic name if #f."
"Return the file-name for packages using git-download."
(string-append name "-" version "-checkout"))
(define (git-predicate directory)
"Return a predicate that returns true if a file is part of the Git checkout
living at DIRECTORY. Upon Git failure, return #f instead of a predicate.
The returned predicate takes two arguments FILE and STAT where FILE is an
absolute file name and STAT is the result of 'lstat'."
(define (parent-directory? thing directory)
;; Return #t if DIRECTORY is the parent of THING.
(or (string-suffix? thing directory)
(and (string-index thing #\/)
(parent-directory? (dirname thing) directory))))
(let* ((pipe (with-directory-excursion directory
(open-pipe* OPEN_READ "git" "ls-files")))
(files (let loop ((lines '()))
(match (read-line pipe)
((? eof-object?)
(reverse lines))
(line
(loop (cons line lines))))))
(status (close-pipe pipe)))
(and (zero? status)
(lambda (file stat)
(match (stat:type stat)
('directory
;; 'git ls-files' does not list directories, only regular files,
;; so we need this special trick.
(any (lambda (f) (parent-directory? f file))
files))
((or 'regular 'symlink)
(any (lambda (f) (string-suffix? f file))
files))
(_
#f))))))
;;; git-download.scm ends here

View File

@ -21,6 +21,7 @@
(define-module (guix import hackage)
#:use-module (ice-9 match)
#:use-module (ice-9 regex)
#:use-module (srfi srfi-34)
#:use-module (srfi srfi-26)
#:use-module (srfi srfi-11)
#:use-module (srfi srfi-1)
@ -37,7 +38,13 @@
#:use-module (guix packages)
#:use-module ((guix utils) #:select (call-with-temporary-output-file))
#:export (hackage->guix-package
%hackage-updater))
%hackage-updater
guix-package->hackage-name
hackage-fetch
hackage-source-url
hackage-cabal-url
hackage-package?))
(define ghc-standard-libraries
;; List of libraries distributed with ghc (7.10.2). We include GHC itself as
@ -109,12 +116,15 @@ version is returned."
"Return the Cabal file for the package NAME-VERSION, or #f on failure. If
the version part is omitted from the package name, then return the latest
version."
(let-values (((name version) (package-name->name+version name-version)))
(let* ((url (hackage-cabal-url name version))
(port (http-fetch url))
(result (read-cabal (canonical-newline-port port))))
(close-port port)
result)))
(guard (c ((and (http-get-error? c)
(= 404 (http-get-error-code c)))
#f)) ;"expected" if package is unknown
(let-values (((name version) (package-name->name+version name-version)))
(let* ((url (hackage-cabal-url name version))
(port (http-fetch url))
(result (read-cabal (canonical-newline-port port))))
(close-port port)
result))))
(define string->license
;; List of valid values from

View File

@ -29,7 +29,8 @@
(guard (c ((and (http-get-error? c)
(= 404 (http-get-error-code c)))
#f)) ;"expected" if package is unknown
(let* ((port (http-fetch url))
(let* ((port (http-fetch url #:headers '((user-agent . "GNU Guile")
(Accept . "application/json"))))
(result (hash-table->alist (json->scm port))))
(close-port port)
result)))

View File

@ -1,7 +1,7 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2014 David Thompson <davet@gnu.org>
;;; Copyright © 2015 Cyril Roelandt <tipecaml@gmail.com>
;;; Copyright © 2015, 2016 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2015, 2016, 2017 Ludovic Courtès <ludo@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;
@ -89,9 +89,16 @@ package."
(define (guix-package->pypi-name package)
"Given a Python PACKAGE built from pypi.python.org, return the name of the
package on PyPI."
(let ((source-url (and=> (package-source package) origin-uri)))
(define (url->pypi-name url)
(hyphen-package-name->name+version
(basename (file-sans-extension source-url)))))
(basename (file-sans-extension url))))
(match (and=> (package-source package) origin-uri)
((? string? url)
(url->pypi-name url))
((lst ...)
(any url->pypi-name lst))
(#f #f)))
(define (wheel-url->extracted-directory wheel-url)
(match (string-split (basename wheel-url) #\-)

135
guix/import/stackage.scm Normal file
View File

@ -0,0 +1,135 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2017 Federico Beffa <beffa@fbengineering.ch>
;;;
;;; This file is part of GNU Guix.
;;;
;;; GNU Guix is free software; you can redistribute it and/or modify it
;;; under the terms of the GNU General Public License as published by
;;; the Free Software Foundation; either version 3 of the License, or (at
;;; your option) any later version.
;;;
;;; GNU Guix is distributed in the hope that it will be useful, but
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;;; GNU General Public License for more details.
;;;
;;; You should have received a copy of the GNU General Public License
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
(define-module (guix import stackage)
#:use-module (ice-9 match)
#:use-module (ice-9 regex)
#:use-module (srfi srfi-1)
#:use-module (srfi srfi-26)
#:use-module (guix import json)
#:use-module (guix import hackage)
#:use-module (guix memoization)
#:use-module (guix packages)
#:use-module (guix upstream)
#:use-module (guix ui)
#:export (stackage->guix-package
%stackage-updater))
;;;
;;; Stackage info fetcher and access functions
;;;
(define %stackage-url "http://www.stackage.org")
(define (lts-info-ghc-version lts-info)
"Retruns the version of the GHC compiler contained in LTS-INFO."
(match lts-info
((("snapshot" ("ghc" . version) _ _) _) version)
(_ #f)))
(define (lts-info-packages lts-info)
"Retruns the alist of packages contained in LTS-INFO."
(match lts-info
((_ ("packages" pkg ...)) pkg)
(_ '())))
(define stackage-lts-info-fetch
;; "Retrieve the information about the LTS Stackage release VERSION."
(memoize
(lambda* (#:optional (version ""))
(let* ((url (if (string=? "" version)
(string-append %stackage-url "/lts")
(string-append %stackage-url "/lts-" version)))
(lts-info (json-fetch url)))
(if lts-info
(reverse lts-info)
(leave (_ "LTS release version not found: ~A~%") version))))))
(define (stackage-package-name pkg-info)
(assoc-ref pkg-info "name"))
(define (stackage-package-version pkg-info)
(assoc-ref pkg-info "version"))
(define (lts-package-version pkgs-info name)
"Return the version of the package with upstream NAME included in PKGS-INFO."
(let ((pkg (find (lambda (pkg) (string=? (stackage-package-name pkg) name))
pkgs-info)))
(stackage-package-version pkg)))
;;;
;;; Importer entry point
;;;
(define (hackage-name-version name version)
(and version (string-append name "@" version)))
(define* (stackage->guix-package package-name ; upstream name
#:key
(include-test-dependencies? #t)
(lts-version "")
(packages-info
(lts-info-packages
(stackage-lts-info-fetch lts-version))))
"Fetch Cabal file for PACKAGE-NAME from hackage.haskell.org. The retrieved
vesion corresponds to the version of PACKAGE-NAME specified in the LTS-VERSION
release at stackage.org. Return the `package' S-expression corresponding to
that package, or #f on failure. PACKAGES-INFO is the alist with the packages
included in the Stackage LTS release."
(let* ((version (lts-package-version packages-info package-name))
(name-version (hackage-name-version package-name version)))
(if name-version
(hackage->guix-package name-version
#:include-test-dependencies?
include-test-dependencies?)
(leave (_ "package not found: ~A~%") package-name))))
;;;
;;; Updater
;;;
(define latest-lts-release
(let ((pkgs-info (mlambda () (lts-info-packages (stackage-lts-info-fetch)))))
(lambda* (package)
"Return an <upstream-source> for the latest Stackage LTS release of
PACKAGE or #f it the package is not inlucded in the Stackage LTS release."
(let* ((hackage-name (guix-package->hackage-name package))
(version (lts-package-version (pkgs-info) hackage-name))
(name-version (hackage-name-version hackage-name version)))
(match (and=> name-version hackage-fetch)
(#f (format (current-error-port)
"warning: failed to parse ~a~%"
(hackage-cabal-url hackage-name))
#f)
(_ (let ((url (hackage-source-url hackage-name version)))
(upstream-source
(package (package-name package))
(version version)
(urls (list url))))))))))
(define %stackage-updater
(upstream-updater
(name 'stackage)
(description "Updater for Stackage LTS packages")
(pred hackage-package?)
(latest latest-lts-release)))
;;; stackage.scm ends here

View File

@ -739,7 +739,7 @@ for both major versions of GTK+."
(mlet %store-monad ((gtk+ (manifest-lookup-package manifest "gtk+" "3"))
(gtk+-2 (manifest-lookup-package manifest "gtk+" "2")))
(define (build gtk gtk-version)
(define (build gtk gtk-version query)
(let ((major (string-take gtk-version 1)))
(with-imported-modules '((guix build utils)
(guix build union)
@ -756,8 +756,6 @@ for both major versions of GTK+."
(let* ((prefix (string-append "/lib/gtk-" #$major ".0/"
#$gtk-version))
(query (string-append #$gtk "/bin/gtk-query-immodules-"
#$major ".0"))
(destdir (string-append #$output prefix))
(moddirs (cons (string-append #$gtk prefix "/immodules")
(filter file-exists?
@ -768,7 +766,7 @@ for both major versions of GTK+."
;; Generate a new immodules cache file.
(mkdir-p (string-append #$output prefix))
(let ((pipe (apply open-pipe* OPEN_READ query modules))
(let ((pipe (apply open-pipe* OPEN_READ #$query modules))
(outfile (string-append #$output prefix
"/immodules-gtk" #$major ".cache")))
(dynamic-wind
@ -783,9 +781,23 @@ for both major versions of GTK+."
(close-pipe pipe)))))))))
;; Don't run the hook when there's nothing to do.
(let ((gexp #~(begin
#$(if gtk+ (build gtk+ "3.0.0") #t)
#$(if gtk+-2 (build gtk+-2 "2.10.0") #t))))
(let* ((pkg-gtk+ (module-ref ; lazy reference
(resolve-interface '(gnu packages gtk)) 'gtk+))
(gexp #~(begin
#$(if gtk+
(build
gtk+ "3.0.0"
;; Use 'gtk-query-immodules-3.0' from the 'bin'
;; output of latest gtk+ package.
#~(string-append
#$pkg-gtk+:bin "/bin/gtk-query-immodules-3.0"))
#t)
#$(if gtk+-2
(build
gtk+-2 "2.10.0"
#~(string-append
#$gtk+-2 "/bin/gtk-query-immodules-2.0"))
#t))))
(if (or gtk+ gtk+-2)
(gexp->derivation "gtk-im-modules" gexp
#:local-build? #t

View File

@ -60,12 +60,6 @@ directories in PROFILE, the store path of a profile."
(define %default-shell
(or (getenv "SHELL") "/bin/sh"))
(define %network-configuration-files
'("/etc/resolv.conf"
"/etc/nsswitch.conf"
"/etc/services"
"/etc/hosts"))
(define (purify-environment)
"Unset almost all environment variables. A small number of variables such
as 'HOME' and 'USER' are left untouched."
@ -408,22 +402,7 @@ host file systems to mount inside the container."
;; When in Rome, do as Nix build.cc does: Automagically
;; map common network configuration files.
(if network?
(filter-map (lambda (file)
(and (file-exists? file)
(file-system-mapping
(source file)
(target file)
;; XXX: On some GNU/Linux
;; systems, /etc/resolv.conf is a
;; symlink to a file in a tmpfs
;; which, for an unknown reason,
;; cannot be bind mounted
;; read-only within the
;; container.
(writable?
(string=? file
"/etc/resolv.conf")))))
%network-configuration-files)
%network-file-mappings
'())
;; Mappings for the union closure of all inputs.
(map (lambda (dir)
@ -433,7 +412,8 @@ host file systems to mount inside the container."
(writable? #f)))
reqs)))
(file-systems (append %container-file-systems
(map mapping->file-system mappings))))
(map file-system-mapping->bind-mount
mappings))))
(exit/status
(call-with-container file-systems
(lambda ()

View File

@ -73,7 +73,8 @@ rather than \\n."
;;; Entry point.
;;;
(define importers '("gnu" "nix" "pypi" "cpan" "hackage" "elpa" "gem" "cran" "crate"))
(define importers '("gnu" "nix" "pypi" "cpan" "hackage" "stackage" "elpa" "gem"
"cran" "crate"))
(define (resolve-importer name)
(let ((module (resolve-interface

View File

@ -0,0 +1,115 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2017 Federico Beffa <beffa@fbengineering.ch>
;;;
;;; This file is part of GNU Guix.
;;;
;;; GNU Guix is free software; you can redistribute it and/or modify it
;;; under the terms of the GNU General Public License as published by
;;; the Free Software Foundation; either version 3 of the License, or (at
;;; your option) any later version.
;;;
;;; GNU Guix is distributed in the hope that it will be useful, but
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;;; GNU General Public License for more details.
;;;
;;; You should have received a copy of the GNU General Public License
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
(define-module (guix scripts import stackage)
#:use-module (guix ui)
#:use-module (guix utils)
#:use-module (guix packages)
#:use-module (guix scripts)
#:use-module (guix import stackage)
#:use-module (guix scripts import)
#:use-module (srfi srfi-1)
#:use-module (srfi srfi-11)
#:use-module (srfi srfi-37)
#:use-module (ice-9 match)
#:use-module (ice-9 format)
#:export (guix-import-stackage))
;;;
;;; Command-line options.
;;;
(define %default-options
`((lts-version . "")
(include-test-dependencies? . #t)))
(define (show-help)
(display (_ "Usage: guix import stackage PACKAGE-NAME
Import and convert the LTS Stackage package for PACKAGE-NAME.\n"))
(display (_ "
-r VERSION, --lts-version=VERSION
specify the LTS version to use"))
(display (_ "
-h, --help display this help and exit"))
(display (_ "
-t, --no-test-dependencies don't include test-only dependencies"))
(display (_ "
-V, --version display version information and exit"))
(newline)
(show-bug-report-information))
(define %options
;; Specification of the command-line options.
(cons* (option '(#\h "help") #f #f
(lambda args
(show-help)
(exit 0)))
(option '(#\V "version") #f #f
(lambda args
(show-version-and-exit "guix import stackage")))
(option '(#\t "no-test-dependencies") #f #f
(lambda (opt name arg result)
(alist-cons 'include-test-dependencies? #f
(alist-delete 'include-test-dependencies?
result))))
(option '(#\r "lts-version") #t #f
(lambda (opt name arg result)
(alist-cons 'lts-version arg
(alist-delete 'lts-version
result))))
%standard-import-options))
;;;
;;; Entry point.
;;;
(define (guix-import-stackage . args)
(define (parse-options)
;; Return the alist of option values.
(args-fold* args %options
(lambda (opt name arg result)
(leave (_ "~A: unrecognized option~%") name))
(lambda (arg result)
(alist-cons 'argument arg result))
%default-options))
(let* ((opts (parse-options))
(args (filter-map (match-lambda
(('argument . value)
value)
(_ #f))
(reverse opts))))
(match args
((package-name)
(let ((sexp (stackage->guix-package
package-name
#:include-test-dependencies?
(assoc-ref opts 'include-test-dependencies?)
#:lts-version (assoc-ref opts 'lts-version))))
(unless sexp
(leave (_ "failed to download cabal file for package '~a'~%")
package-name))
sexp))
(()
(leave (_ "too few arguments~%")))
((many ...)
(leave (_ "too many arguments~%"))))))
;;; stackage.scm ends here

View File

@ -205,6 +205,7 @@ unavailable optional dependencies such as Guile-JSON."
%elpa-updater
%cran-updater
%bioconductor-updater
((guix import stackage) => %stackage-updater)
%hackage-updater
((guix import cpan) => %cpan-updater)
((guix import pypi) => %pypi-updater)

View File

@ -21,6 +21,7 @@
#include <globals.hh>
#include <unistd.h>
#include <cstdlib>
namespace nix {
@ -41,6 +42,11 @@ static void builtinDownload(const Derivation &drv,
"download", drvPath.c_str(), output.c_str(), NULL
};
/* Tell the script what the store file name is, so that
'strip-store-file-name' (used for instance to determine the URL of
content-addressed mirrors) works correctly. */
setenv("NIX_STORE", settings.nixStore.c_str(), 1);
/* XXX: Hack our way to use the 'download' script from 'LIBEXECDIR/guix'
or just 'LIBEXECDIR', depending on whether we're running uninstalled or
not. */

View File

@ -180,4 +180,31 @@
(lambda ()
(primitive-exit 42))))
(skip-if-unsupported)
(test-assert "container-excursion*"
(call-with-temporary-directory
(lambda (root)
(define (namespaces pid)
(let ((pid (number->string pid)))
(map (lambda (ns)
(readlink (string-append "/proc/" pid "/ns/" ns)))
'("user" "ipc" "uts" "net" "pid" "mnt"))))
(let* ((pid (run-container root '()
%namespaces 1
(lambda ()
(sleep 100))))
(result (container-excursion* pid
(lambda ()
(namespaces 1)))))
(kill pid SIGKILL)
(equal? result (namespaces pid))))))
(skip-if-unsupported)
(test-equal "container-excursion*, same namespaces"
42
(container-excursion* (getpid)
(lambda ()
(* 6 7))))
(test-end)

View File

@ -18,6 +18,7 @@
(define-module (test-file-systems)
#:use-module (guix store)
#:use-module (guix modules)
#:use-module (gnu system file-systems)
#:use-module (srfi srfi-64)
#:use-module (rnrs bytevectors))
@ -72,4 +73,11 @@
(device "/foo")
(flags '(bind-mount read-only)))))))))
(test-assert "does not pull (guix config)"
;; This module is meant both for the host side and "build side", so make
;; sure it doesn't pull in (guix config), which depends on the user's
;; config.
(not (member '(guix config)
(source-module-closure '((gnu system file-systems))))))
(test-end)

View File

@ -22,6 +22,7 @@
#:use-module (guix base32)
#:use-module (guix hash)
#:use-module (guix tests)
#:use-module (guix build-system python)
#:use-module ((guix build utils) #:select (delete-file-recursively which))
#:use-module (srfi srfi-64)
#:use-module (ice-9 match))
@ -90,6 +91,15 @@ baz > 13.37")
(uri
"https://pypi.python.org/packages/a2/3b/4756e6a0ceb14e084042a2a65c615d68d25621c6fd446d0fc10d14c4ce7d/certbot-0.8.1.tar.gz"))))))
(test-equal "guix-package->pypi-name, several URLs"
"cram"
(guix-package->pypi-name
(dummy-package "foo"
(source
(dummy-origin
(uri (list "https://bitheap.org/cram/cram-0.7.tar.gz"
(pypi-uri "cram" "0.7"))))))))
(test-assert "pypi->guix-package"
;; Replace network resources with sample data.
(mock ((guix import utils) url-fetch