Merge branch 'master' into staging

This commit is contained in:
Marius Bakke 2020-05-26 22:38:12 +02:00
commit 8a7a5dc780
No known key found for this signature in database
GPG Key ID: A2A06DF2A33A54FA
80 changed files with 1933 additions and 1340 deletions

View File

@ -557,6 +557,7 @@ EXTRA_DIST += \
build-aux/cuirass/guix-modular.scm \
build-aux/cuirass/hydra-to-cuirass.scm \
build-aux/check-final-inputs-self-contained.scm \
build-aux/check-channel-news.scm \
build-aux/compile-as-derivation.scm \
build-aux/generate-authors.scm \
build-aux/git-authenticate.scm \
@ -885,6 +886,11 @@ assert-final-inputs-self-contained: $(GOBJECTS)
$(AM_V_at)$(top_builddir)/pre-inst-env "$(GUILE)" \
"$(top_srcdir)/build-aux/check-final-inputs-self-contained.scm"
# Validate channel news.
check-channel-news: $(GOBJECTS)
$(AM_V_at)$(top_builddir)/pre-inst-env "$(GUILE)" \
"$(top_srcdir)/build-aux/check-channel-news.scm"
# Compute the Hydra jobs and write them in the target file.
hydra-jobs.scm: $(GOBJECTS)
$(AM_V_at)$(MKDIR_P) "`dirname "$@"`"
@ -904,7 +910,7 @@ cuirass-jobs.scm: $(GOBJECTS)
.PHONY: gen-ChangeLog gen-AUTHORS gen-tarball-version
.PHONY: assert-no-store-file-names assert-binaries-available
.PHONY: assert-final-inputs-self-contained
.PHONY: assert-final-inputs-self-contained check-channel-news
.PHONY: clean-go make-go as-derivation authenticate
.PHONY: update-guix-package update-NEWS release

View File

@ -0,0 +1,82 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2020 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/>.
;;;
;;; Validate 'etc/news.scm'.
;;;
(use-modules (git)
(guix git)
(guix ui)
(guix channels)
(srfi srfi-26)
(ice-9 match))
;; XXX: These two things are currently private.
(define read-channel-news (@@ (guix channels) read-channel-news))
(define channel-news-entries (cut struct-ref <> 0))
(define (all-the-news directory)
"Return the <channel-news> read from DIRECTORY, a checkout of the 'guix'
channel."
(call-with-input-file (string-append directory "/etc/news.scm")
read-channel-news))
(define (validate-texinfo str type language)
"Parse STR as a Texinfo fragment and raise an error if that fails."
(catch #t
(lambda ()
(texi->plain-text str))
(lambda (key . args)
(print-exception (current-error-port) #f key args)
(report-error (G_ "the Texinfo snippet below is invalid (~a, ~a):~%")
type language)
(display str (current-error-port))
(exit 1))))
(define (validate-news-entry repository entry)
"Validate ENTRY, a <channel-news-entry>, making sure it refers to an
existent commit of REPOSITORY and contains only valid Texinfo."
(catch 'git-error
(lambda ()
(let ((commit (commit-lookup repository
(string->oid
(channel-news-entry-commit entry)))))
(for-each (match-lambda
((language . title)
(validate-texinfo title 'title language)))
(channel-news-entry-title entry))
(for-each (match-lambda
((language . body)
(validate-texinfo body 'body language)))
(channel-news-entry-body entry))))
(lambda (key error . rest)
(if (= GIT_ENOTFOUND (git-error-code error))
(leave (G_ "commit '~a' of entry '~a' does not exist~%")
(channel-news-entry-commit entry)
(channel-news-entry-title entry))
(apply throw key error rest)))))
(let* ((this-directory (dirname (current-filename)))
(top-directory (string-append this-directory "/.."))
(entries (channel-news-entries (all-the-news top-directory))))
(with-repository top-directory repository
(for-each (cut validate-news-entry repository <>)
entries)
(info (G_ "All ~a channel news entries are valid.~%")
(length entries))))

View File

@ -1278,6 +1278,14 @@ When pushing a commit on behalf of somebody else, please add a
with @command{git am --signoff}. This improves tracking of who did
what.
When adding channel news entries (@pxref{Channels, Writing Channel
News}), make sure they are well-formed by running the following command
right before pushing:
@example
make check-channel-news
@end example
For anything else, please post to @email{guix-patches@@gnu.org} and
leave time for a review, without committing anything (@pxref{Submitting
Patches}). If you didnt receive any reply after two weeks, and if

View File

@ -1617,6 +1617,47 @@ Then you need to add the following code to a StumpWM configuration file
(set-font (make-instance 'xft:font :family "DejaVu Sans Mono" :subfamily "Book" :size 11))
@end lisp
@node Session lock
@subsection Session lock
@cindex sessionlock
Depending on your environment, locking the screen of your session might come built in
or it might be something you have to set up yourself. If you use a desktop environment
like GNOME or KDE, it's usually built in. If you use a plain window manager like
StumpWM or EXWM, you might have to set it up yourself.
@node Xorg
@subsubsection Xorg
If you use Xorg, you can use the utility
@uref{https://www.mankier.com/1/xss-lock, xss-lock} to lock the screen of your session.
xss-lock is triggered by DPMS which since Xorg 1.8 is auto-detected and enabled if
ACPI is also enabled at kernel runtime.
To use xss-lock, you can simple execute it and put it into the background before
you start your window manager from e.g. your @file{~/.xsession}:
@example
xss-lock -- slock &
exec stumpwm
@end example
In this example, xss-lock uses @code{slock} to do the actual locking of the screen when
it determines it's appropriate, like when you suspend your device.
For slock to be allowed to be a screen locker for the graphical session, it needs to
be made setuid-root so it can authenticate users, and it needs a PAM service. This
can be achieved by adding the following service to your @file{config.scm}:
@lisp
(screen-locker-service slock)
@end lisp
If you manually lock your screen, e.g. by directly calling slock when you want to lock
your screen but not suspend it, it's a good idea to notify xss-lock about this so no
confusion occurs. This can be done by executing @code{xset s activate} immediately
before you execute slock.
@node Setting up a bind mount
@section Setting up a bind mount

View File

@ -35,7 +35,7 @@ Copyright @copyright{} 2016, 2017, 2018 Chris Marusich@*
Copyright @copyright{} 2016, 2017, 2018, 2019, 2020 Efraim Flashner@*
Copyright @copyright{} 2016 John Darrington@*
Copyright @copyright{} 2016, 2017 Nikita Gillmann@*
Copyright @copyright{} 2016, 2017, 2018, 2019 Jan Nieuwenhuizen@*
Copyright @copyright{} 2016, 2017, 2018, 2019, 2020 Jan Nieuwenhuizen@*
Copyright @copyright{} 2016 Julien Lepiller@*
Copyright @copyright{} 2016 Alex ter Weele@*
Copyright @copyright{} 2016, 2017, 2018, 2019 Christopher Baines@*
@ -1831,7 +1831,7 @@ how to use it, hit the @key{RET} key (``return'' or ``enter'') on the
link that follows: @pxref{Top, Info reader,, info-stnd, Stand-alone GNU
Info}. Hit @kbd{l} afterwards to come back here.
Alternately, run @command{info info} in another tty to keep the manual
Alternatively, run @command{info info} in another tty to keep the manual
available.
@end quotation
@end ifinfo
@ -2021,7 +2021,7 @@ Guix System in a virtual machine (VM).
@section Preparing for Installation
Once you have booted, you can use the guided graphical installer, which makes
it easy to get started (@pxref{Guided Graphical Installation}). Alternately,
it easy to get started (@pxref{Guided Graphical Installation}). Alternatively,
if you are already familiar with GNU/Linux and if you want more control than
what the graphical installer provides, you can choose the ``manual''
installation process (@pxref{Manual Installation}).
@ -3900,6 +3900,21 @@ Use @var{profile} instead of @file{~/.config/guix/current}.
Show which channel commit(s) would be used and what would be built or
substituted but do not actually do it.
@item --allow-downgrades
Allow pulling older or unrelated revisions of channels than those
currently in use.
@cindex downgrade attacks, protection against
By default, @command{guix pull} protects against so-called ``downgrade
attacks'' whereby the Git repository of a channel would be reset to an
earlier or unrelated revision of itself, potentially leading you to
install older, known-vulnerable versions of software packages.
@quotation Note
Make sure you understand its security implications before using
@option{--allow-downgrades}.
@end quotation
@item --system=@var{system}
@itemx -s @var{system}
Attempt to build for @var{system}---e.g., @code{i686-linux}---instead of
@ -5966,9 +5981,13 @@ specified in the @code{uri} field as a @code{git-reference} object; a
@end table
@item @code{sha256}
A bytevector containing the SHA-256 hash of the source. Typically the
@code{base32} form is used here to generate the bytevector from a
base-32 string.
A bytevector containing the SHA-256 hash of the source. This is
equivalent to providing a @code{content-hash} SHA256 object in the
@code{hash} field described below.
@item @code{hash}
The @code{content-hash} object of the source---see below for how to use
@code{content-hash}.
You can obtain this information using @code{guix download}
(@pxref{Invoking guix download}) or @code{guix hash} (@pxref{Invoking
@ -6013,6 +6032,30 @@ this is @code{#f}, a sensible default is used.
@end table
@end deftp
@deftp {Data Type} content-hash @var{value} [@var{algorithm}]
Construct a content hash object for the given @var{algorithm}, and with
@var{value} as its hash value. When @var{algorithm} is omitted, assume
it is @code{sha256}.
@var{value} can be a literal string, in which case it is base32-decoded,
or it can be a bytevector.
The following forms are all equivalent:
@lisp
(content-hash "05zxkyz9bv3j9h0xyid1rhvh3klhsmrpkf3bcs6frvlgyr2gwilj")
(content-hash "05zxkyz9bv3j9h0xyid1rhvh3klhsmrpkf3bcs6frvlgyr2gwilj"
sha256)
(content-hash (base32
"05zxkyz9bv3j9h0xyid1rhvh3klhsmrpkf3bcs6frvlgyr2gwilj"))
(content-hash (base64 "kkb+RPaP7uyMZmu4eXPVkM4BN8yhRd8BTHLslb6f/Rc=")
sha256)
@end lisp
Technically, @code{content-hash} is currently implemented as a macro.
It performs sanity checks at macro-expansion time, when possible, such
as ensuring that @var{value} has the right size for @var{algorithm}.
@end deftp
@node Build Systems
@section Build Systems
@ -9018,6 +9061,11 @@ Certificates}), unless @option{--no-check-certificate} is used.
The following options are available:
@table @code
@item --hash=@var{algorithm}
@itemx -H @var{algorithm}
Compute a hash using the specified @var{algorithm}. @xref{Invoking guix
hash}, for more information.
@item --format=@var{fmt}
@itemx -f @var{fmt}
Write the hash in the format specified by @var{fmt}. For more
@ -9057,11 +9105,21 @@ following options:
@table @code
@item --hash=@var{algorithm}
@itemx -H @var{algorithm}
Compute a hash using the specified @var{algorithm}, @code{sha256} by
default.
@var{algorithm} must the name of a cryptographic hash algorithm
supported by Libgcrypt @i{via} Guile-Gcrypt---e.g., @code{sha512} or
@code{sha3-256} (@pxref{Hash Functions,,, guile-gcrypt, Guile-Gcrypt
Reference Manual}).
@item --format=@var{fmt}
@itemx -f @var{fmt}
Write the hash in the format specified by @var{fmt}.
Supported formats: @code{nix-base32}, @code{base32}, @code{base16}
Supported formats: @code{base64}, @code{nix-base32}, @code{base32}, @code{base16}
(@code{hex} and @code{hexadecimal} can be used as well).
If the @option{--format} option is not specified, @command{guix hash}
@ -9542,7 +9600,7 @@ gnu/packages/gettext.scm:29:13: gettext would be upgraded from 0.18.1.1 to 0.18.
gnu/packages/glib.scm:77:12: glib would be upgraded from 2.34.3 to 2.37.0
@end example
Alternately, one can specify packages to consider, in which case a
Alternatively, one can specify packages to consider, in which case a
warning is emitted for packages that lack an updater:
@example
@ -10727,7 +10785,7 @@ guix challenge git \
This automatically invokes @command{diffoscope}, which displays detailed
information about files that differ.
Alternately, we can do something along these lines (@pxref{Invoking guix
Alternatively, we can do something along these lines (@pxref{Invoking guix
archive}):
@example
@ -14519,7 +14577,7 @@ subsystem name and a command (with optional arguments) to execute upon
subsystem request.
The command @command{internal-sftp} implements an in-process SFTP
server. Alternately, one can specify the @command{sftp-server} command:
server. Alternatively, one can specify the @command{sftp-server} command:
@lisp
(service openssh-service-type
(openssh-configuration
@ -26940,14 +26998,14 @@ The GRUB @code{gfxmode} to set (a list of screen resolution strings, see
@end table
@end deftp
@defvr {Scheme Variable} %default-theme
This is the default GRUB theme used by the operating system if no
@deffn {Scheme Procedure} grub-theme
Return the default GRUB theme used by the operating system if no
@code{theme} field is specified in @code{bootloader-configuration}
record.
It comes with a fancy background image displaying the GNU and Guix
logos.
@end defvr
@end deffn
For example, to override the default resolution, you may use something
like
@ -26957,7 +27015,7 @@ like
(bootloader-configuration
;; @dots{}
(theme (grub-theme
(inherit %default-theme)
(inherit (grub-theme))
(gfxmode '("1024x786x32" "auto"))))))
@end lisp
@ -28718,10 +28776,8 @@ Binutils, libc, and the other packages mentioned above---the
@dfn{bootstrap binaries}.
These bootstrap binaries are ``taken for granted'', though we can also
re-create them if needed (more on that later).
For @code{i686-linux} and @code{x86_64-linux} the Guix bootstrap process is
more elaborate, @pxref{Reduced Binary Seed Bootstrap}.
re-create them if needed (@pxref{Preparing to Use the Bootstrap
Binaries}).
@menu
* Reduced Binary Seed Bootstrap:: A Bootstrap worthy of GNU.
@ -28737,60 +28793,71 @@ Coreutils, Awk, Findutils, `sed', and `grep' and Guile, GCC, Binutils, and the
GNU C Library (@pxref{Bootstrapping}). Usually, these bootstrap binaries are
``taken for granted.''
Taking these binaries for granted means that we consider them to be a correct
and trustworthy `seed' for building the complete system. Therein lies a
problem: the current combined size of these bootstrap binaries is about 250MB
(@pxref{Bootstrappable Builds,,, mes, GNU Mes}). Auditing or even inspecting
these is next to impossible.
Taking the bootstrap binaries for granted means that we consider them to
be a correct and trustworthy ``seed'' for building the complete system.
Therein lies a problem: the combined size of these bootstrap binaries is
about 250MB (@pxref{Bootstrappable Builds,,, mes, GNU Mes}). Auditing
or even inspecting these is next to impossible.
For @code{i686-linux} and @code{x86_64-linux}, Guix now features a ``Reduced
Binary Seed'' bootstrap @footnote{We would like to say: ``Full Source
Bootstrap'' and while we are working towards that goal it would be hyperbole
to use that term for what we do now.}.
For @code{i686-linux} and @code{x86_64-linux}, Guix now features a
``Reduced Binary Seed'' bootstrap @footnote{We would like to say: ``Full
Source Bootstrap'' and while we are working towards that goal it would
be hyperbole to use that term for what we do now.}.
The Reduced Binary Seed bootstrap removes the most critical tools---from a
trust perspective---from the bootstrap binaries: GCC, Binutils and the GNU C
Library are replaced by: @code{bootstrap-mescc-tools} (a tiny assembler and
linker) and @code{bootstrap-mes} (a small Scheme Interpreter and a C compiler
written in Scheme and the Mes C Library, built for TinyCC and for GCC). Using
these new binary seeds and a new set of
@c
packages@footnote{@c
nyacc-boot,
mes-boot,
tcc-boot0,
tcc-boot,
make-mesboot0,
diffutils-mesboot,
binutils-mesboot0,
gcc-core-mesboot,
mesboot-headers,
glibc-mesboot0,
gcc-mesboot0,
binutils-mesboot,
make-mesboot,
gcc-mesboot1,
gcc-mesboot1-wrapper,
glibc-headers-mesboot,
glibc-mesboot,
gcc-mesboot,
and
gcc-mesboot-wrapper.
}
@c
the ``missing'' Binutils, GCC, and the GNU C Library are built from source.
From here on the more traditional bootstrap process resumes. This approach
has reduced the bootstrap binaries in size to about 130MB. Work is ongoing to
reduce this further. If you are interested, join us on @code{#bootstrappable}
on the Freenode IRC network.
written in Scheme and the Mes C Library, built for TinyCC and for GCC).
@c ./pre-inst-env guix graph --type=bag -e '(begin (use-modules (guix packages)) (%current-system "i686-linux") (@@ (gnu packages commencement) gcc-mesboot))' > doc/images/gcc-mesboot-bag-graph.dot
@c dot -T png doc/images/gcc-mesboot-bag-graph.dot > doc/images/gcc-mesboot-bag-graph.png
Using these new binary seeds the ``missing'' Binutils, GCC, and the GNU
C Library are built from source. From here on the more traditional
bootstrap process resumes. This approach has reduced the bootstrap
binaries in size to about 145MB in Guix v1.1.
Below is the generated dependency graph for @code{gcc-mesboot}, the bootstrap
compiler used to build the rest of GuixSD.
The next step that Guix has taken is to replace the shell and all its
utilities with implementations in Guile Scheme, the @emph{Scheme-only
bootstrap}. Gash (@pxref{Gash,,, gash, The Gash manual}) is a
POSIX-compatible shell that replaces Bash, and it comes with Gash Utils
which has minimalist replacements for Awk, the GNU Core Utilities, Grep,
Gzip, Sed, and Tar. The rest of the bootstrap binary seeds that were
removed are now built from source.
@image{images/gcc-mesboot-bag-graph,6in,,Dependency graph of the gcc-mesboot}
Building the GNU System from source is currently only possibly by adding
some historical GNU packages as intermediate steps@footnote{Packages
such as @code{gcc-2.95.3}, @code{binutils-2.14}, @code{glibc-2.2.5},
@code{gzip-1.2.4}, @code{tar-1.22}, and some others. For details, see
@file{gnu/packages/commencement.scm}.}. As Gash and Gash Utils mature,
and GNU packages become more bootstrappable again (e.g., new releases of
GNU Sed will also ship as gzipped tarballs again, as alternative to the
hard to bootstrap @code{xz}-compression), this set of added packages can
hopefully be reduced again.
The graph below shows the resulting dependency graph for
@code{gcc-core-mesboot0}, the bootstrap compiler used for the
traditional bootstrap of the rest of the Guix System.
@c ./pre-inst-env guix graph -e '(@@ (gnu packages commencement) gcc-core-mesboot0)' | sed -re 's,((bootstrap-mescc-tools|bootstrap-mes|guile-bootstrap).*shape =) box,\1 ellipse,' > doc/images/gcc-core-mesboot0-graph.dot
@image{images/gcc-core-mesboot0-graph,6in,,Dependency graph of gcc-core-mesboot0}
The only significant binary bootstrap seeds that remain@footnote{
Ignoring the 68KB @code{mescc-tools}; that will be removed later,
together with @code{mes}.} are a Scheme intepreter and a Scheme
compiler: GNU Mes and GNU Guile@footnote{Not shown in this graph are the
static binaries for @file{bash}, @code{tar}, and @code{xz} that are used
to get Guile running.}.
This further reduction has brought down the size of the binary seed to
about 60MB for @code{i686-linux} and @code{x86_64-linux}.
Work is ongoing to remove all binary blobs from our free software
bootstrap stack, working towards a Full Source Bootstrap. Also ongoing
is work to bring these bootstraps to the @code{arm-linux} and
@code{aarch64-linux} architectures and to the Hurd.
If you are interested, join us on @samp{#bootstrappable} on the Freenode
IRC network or discuss on @email{bug-mes@@gnu.org} or
@email{gash-devel@@nongnu.org}.
@node Preparing to Use the Bootstrap Binaries
@section Preparing to Use the Bootstrap Binaries
@ -28810,7 +28877,7 @@ guix graph -t derivation \
| dot -Tps > gcc.ps
@end example
or, for the Reduced Binary Seed bootstrap
or, for the further Reduced Binary Seed bootstrap
@example
guix graph -t derivation \

View File

@ -0,0 +1,114 @@
digraph "Guix package" {
"139781154519456" [label = "gcc-core-mesboot0@2.95.3", shape = box, fontname = Helvetica];
"139781154519456" -> "139781154519632" [color = darkgoldenrod];
"139781154519456" -> "139781154520688" [color = darkgoldenrod];
"139781154519456" -> "139781034971312" [color = darkgoldenrod];
"139781154519456" -> "139781154520160" [color = darkgoldenrod];
"139781154519456" -> "139781034971664" [color = darkgoldenrod];
"139781154519456" -> "139781154519984" [color = darkgoldenrod];
"139781154519456" -> "139781154519808" [color = darkgoldenrod];
"139781154519456" -> "139781154520512" [color = darkgoldenrod];
"139781154519456" -> "139781034971488" [color = darkgoldenrod];
"139781154519456" -> "139781034972896" [color = darkgoldenrod];
"139781154519456" -> "139781034972368" [color = darkgoldenrod];
"139781154519456" -> "139781034973072" [color = darkgoldenrod];
"139781154519456" -> "139781131267872" [color = darkgoldenrod];
"139781154519632" [label = "binutils-mesboot0@2.14", shape = box, fontname = Helvetica];
"139781154519632" -> "139781154520688" [color = peachpuff4];
"139781154519632" -> "139781034971312" [color = peachpuff4];
"139781154519632" -> "139781154520160" [color = peachpuff4];
"139781154519632" -> "139781034971664" [color = peachpuff4];
"139781154519632" -> "139781154519984" [color = peachpuff4];
"139781154519632" -> "139781154519808" [color = peachpuff4];
"139781154519632" -> "139781154520512" [color = peachpuff4];
"139781154519632" -> "139781034971488" [color = peachpuff4];
"139781154519632" -> "139781034972896" [color = peachpuff4];
"139781154519632" -> "139781034972368" [color = peachpuff4];
"139781154519632" -> "139781034973072" [color = peachpuff4];
"139781154519632" -> "139781131267872" [color = peachpuff4];
"139781154520688" [label = "bash-mesboot0@2.05b", shape = box, fontname = Helvetica];
"139781154520688" -> "139781034971488" [color = magenta];
"139781154520688" -> "139781034971840" [color = magenta];
"139781154520688" -> "139781034972896" [color = magenta];
"139781154520688" -> "139781034972368" [color = magenta];
"139781154520688" -> "139781034973072" [color = magenta];
"139781154520688" -> "139781131267872" [color = magenta];
"139781034971488" [label = "make-mesboot0@3.80", shape = box, fontname = Helvetica];
"139781034971488" -> "139781034971840" [color = dimgrey];
"139781034971488" -> "139781034972896" [color = dimgrey];
"139781034971488" -> "139781034972368" [color = dimgrey];
"139781034971488" -> "139781034973072" [color = dimgrey];
"139781034971488" -> "139781131267872" [color = dimgrey];
"139781034971840" [label = "tcc-boot0@0.9.26-1103-g6e62e0e", shape = box, fontname = Helvetica];
"139781034971840" -> "139781034972016" [color = magenta];
"139781034971840" -> "139781131266816" [color = magenta];
"139781034971840" -> "139781034972896" [color = magenta];
"139781034971840" -> "139781034972368" [color = magenta];
"139781034971840" -> "139781034973072" [color = magenta];
"139781034971840" -> "139781131267872" [color = magenta];
"139781034972016" [label = "mes-boot@0.22", shape = box, fontname = Helvetica];
"139781034972016" -> "139781034972192" [color = cyan3];
"139781034972016" -> "139781131266816" [color = cyan3];
"139781034972016" -> "139781034972896" [color = cyan3];
"139781034972016" -> "139781034972368" [color = cyan3];
"139781034972016" -> "139781034973072" [color = cyan3];
"139781034972016" -> "139781131267872" [color = cyan3];
"139781034972192" [label = "bootstrap-mes-rewired@0.19", shape = ellipse, fontname = Helvetica];
"139781034972192" -> "139781131266640" [color = darkseagreen];
"139781034972192" -> "139781034972896" [color = darkseagreen];
"139781131266640" [label = "bootstrap-mes@0", shape = ellipse, fontname = Helvetica];
"139781034972896" [label = "gash-boot@0.2.0", shape = box, fontname = Helvetica];
"139781034972896" -> "139781034973072" [color = darkviolet];
"139781034972896" -> "139781131267872" [color = darkviolet];
"139781034973072" [label = "bootar@1", shape = box, fontname = Helvetica];
"139781034973072" -> "139781131267872" [color = darkviolet];
"139781131267872" [label = "guile-bootstrap@2.0", shape = ellipse, fontname = Helvetica];
"139781131266816" [label = "bootstrap-mescc-tools@0.5.2", shape = ellipse, fontname = Helvetica];
"139781034972368" [label = "gash-utils-boot@0.1.0", shape = box, fontname = Helvetica];
"139781034972368" -> "139781034973072" [color = darkseagreen];
"139781034972368" -> "139781034972896" [color = darkseagreen];
"139781034972368" -> "139781131267872" [color = darkseagreen];
"139781034971312" [label = "bzip2-mesboot@1.0.8", shape = box, fontname = Helvetica];
"139781034971312" -> "139781034971488" [color = cyan3];
"139781034971312" -> "139781034971840" [color = cyan3];
"139781034971312" -> "139781034972896" [color = cyan3];
"139781034971312" -> "139781034972368" [color = cyan3];
"139781034971312" -> "139781034973072" [color = cyan3];
"139781034971312" -> "139781131267872" [color = cyan3];
"139781154520160" [label = "diffutils-mesboot@2.7", shape = box, fontname = Helvetica];
"139781154520160" -> "139781034971488" [color = red];
"139781154520160" -> "139781034971840" [color = red];
"139781154520160" -> "139781034972896" [color = red];
"139781154520160" -> "139781034972368" [color = red];
"139781154520160" -> "139781034973072" [color = red];
"139781154520160" -> "139781131267872" [color = red];
"139781034971664" [label = "gzip-mesboot@1.2.4", shape = box, fontname = Helvetica];
"139781034971664" -> "139781034971840" [color = red];
"139781034971664" -> "139781034972896" [color = red];
"139781034971664" -> "139781034972368" [color = red];
"139781034971664" -> "139781034973072" [color = red];
"139781034971664" -> "139781131267872" [color = red];
"139781154519984" [label = "patch-mesboot@2.5.9", shape = box, fontname = Helvetica];
"139781154519984" -> "139781034971488" [color = blue];
"139781154519984" -> "139781034971840" [color = blue];
"139781154519984" -> "139781034972896" [color = blue];
"139781154519984" -> "139781034972368" [color = blue];
"139781154519984" -> "139781034973072" [color = blue];
"139781154519984" -> "139781131267872" [color = blue];
"139781154519808" [label = "sed-mesboot0@1.18", shape = box, fontname = Helvetica];
"139781154519808" -> "139781034971488" [color = red];
"139781154519808" -> "139781034971840" [color = red];
"139781154519808" -> "139781034972896" [color = red];
"139781154519808" -> "139781034972368" [color = red];
"139781154519808" -> "139781034973072" [color = red];
"139781154519808" -> "139781131267872" [color = red];
"139781154520512" [label = "tcc-boot@0.9.27", shape = box, fontname = Helvetica];
"139781154520512" -> "139781034971312" [color = darkviolet];
"139781154520512" -> "139781034971488" [color = darkviolet];
"139781154520512" -> "139781034971840" [color = darkviolet];
"139781154520512" -> "139781034972896" [color = darkviolet];
"139781154520512" -> "139781034972368" [color = darkviolet];
"139781154520512" -> "139781034973072" [color = darkviolet];
"139781154520512" -> "139781131267872" [color = darkviolet];
}

View File

@ -1,123 +0,0 @@
digraph "Guix bag" {
"/gnu/store/5gkanb1d995yrpdd2h4iqkjmc5g1j0q4-gcc-mesboot-4.9.4.drv" [label = "gcc-mesboot@4.9.4", shape = box, fontname = Helvetica];
"/gnu/store/5gkanb1d995yrpdd2h4iqkjmc5g1j0q4-gcc-mesboot-4.9.4.drv" -> "/gnu/store/91nyq32kpndqj8qywqx17zy1ahv4xzgf-binutils-mesboot-2.20.1a.drv" [color = darkviolet];
"/gnu/store/5gkanb1d995yrpdd2h4iqkjmc5g1j0q4-gcc-mesboot-4.9.4.drv" -> "/gnu/store/86dqsl7b3qrzxl0zd049i5rl7l19gnk0-gcc-mesboot1-wrapper-4.7.4.drv" [color = darkviolet];
"/gnu/store/5gkanb1d995yrpdd2h4iqkjmc5g1j0q4-gcc-mesboot-4.9.4.drv" -> "/gnu/store/8jk8qkbvi8bgf1h2m0f8c2gmriql52p4-gcc-mesboot1-4.7.4.drv" [color = darkviolet];
"/gnu/store/5gkanb1d995yrpdd2h4iqkjmc5g1j0q4-gcc-mesboot-4.9.4.drv" -> "/gnu/store/f89fk16sm2l8amhjqli2zg6hil71c7m3-glibc-mesboot-2.16.0.drv" [color = darkviolet];
"/gnu/store/5gkanb1d995yrpdd2h4iqkjmc5g1j0q4-gcc-mesboot-4.9.4.drv" -> "/gnu/store/00rjhpbkzk86s4pksjg934l310iaxxjr-bootstrap-binaries-0.drv" [color = darkviolet];
"/gnu/store/5gkanb1d995yrpdd2h4iqkjmc5g1j0q4-gcc-mesboot-4.9.4.drv" -> "/gnu/store/00rjhpbkzk86s4pksjg934l310iaxxjr-bootstrap-binaries-0.drv" [color = darkviolet];
"/gnu/store/5gkanb1d995yrpdd2h4iqkjmc5g1j0q4-gcc-mesboot-4.9.4.drv" -> "/gnu/store/yn5ryq346dhxhjsg3glcnb0wmdz4cn8c-diffutils-mesboot-2.7.drv" [color = darkviolet];
"/gnu/store/5gkanb1d995yrpdd2h4iqkjmc5g1j0q4-gcc-mesboot-4.9.4.drv" -> "/gnu/store/q8d60ln0dxjvqd2ymi1g6xyk3046m23n-linux-libre-headers-bootstrap-0.drv" [color = darkviolet];
"/gnu/store/5gkanb1d995yrpdd2h4iqkjmc5g1j0q4-gcc-mesboot-4.9.4.drv" -> "/gnu/store/79zblx3zhbmycl30kvwylpxyhjv52qi4-make-mesboot-3.82.drv" [color = darkviolet];
"/gnu/store/91nyq32kpndqj8qywqx17zy1ahv4xzgf-binutils-mesboot-2.20.1a.drv" [label = "binutils-mesboot@2.20.1a", shape = box, fontname = Helvetica];
"/gnu/store/91nyq32kpndqj8qywqx17zy1ahv4xzgf-binutils-mesboot-2.20.1a.drv" -> "/gnu/store/0w4i240rlsq7bd9ig4nixpbijkf4qy12-binutils-mesboot0-2.20.1a.drv" [color = dimgrey];
"/gnu/store/91nyq32kpndqj8qywqx17zy1ahv4xzgf-binutils-mesboot-2.20.1a.drv" -> "/gnu/store/0admz8igq3lvcyga32gp87q2g7918zwy-glibc-mesboot0-2.2.5.drv" [color = dimgrey];
"/gnu/store/91nyq32kpndqj8qywqx17zy1ahv4xzgf-binutils-mesboot-2.20.1a.drv" -> "/gnu/store/r9rsmhz659147krcvksx53b0mjdavr05-gcc-mesboot0-2.95.3.drv" [color = dimgrey];
"/gnu/store/91nyq32kpndqj8qywqx17zy1ahv4xzgf-binutils-mesboot-2.20.1a.drv" -> "/gnu/store/00rjhpbkzk86s4pksjg934l310iaxxjr-bootstrap-binaries-0.drv" [color = dimgrey];
"/gnu/store/91nyq32kpndqj8qywqx17zy1ahv4xzgf-binutils-mesboot-2.20.1a.drv" -> "/gnu/store/00rjhpbkzk86s4pksjg934l310iaxxjr-bootstrap-binaries-0.drv" [color = dimgrey];
"/gnu/store/91nyq32kpndqj8qywqx17zy1ahv4xzgf-binutils-mesboot-2.20.1a.drv" -> "/gnu/store/yn5ryq346dhxhjsg3glcnb0wmdz4cn8c-diffutils-mesboot-2.7.drv" [color = dimgrey];
"/gnu/store/91nyq32kpndqj8qywqx17zy1ahv4xzgf-binutils-mesboot-2.20.1a.drv" -> "/gnu/store/q8d60ln0dxjvqd2ymi1g6xyk3046m23n-linux-libre-headers-bootstrap-0.drv" [color = dimgrey];
"/gnu/store/91nyq32kpndqj8qywqx17zy1ahv4xzgf-binutils-mesboot-2.20.1a.drv" -> "/gnu/store/mrbi3ffh1v62b7sc3g40qvz0i0dbbvbi-make-mesboot0-3.80.drv" [color = dimgrey];
"/gnu/store/0w4i240rlsq7bd9ig4nixpbijkf4qy12-binutils-mesboot0-2.20.1a.drv" [label = "binutils-mesboot0@2.20.1a", shape = box, fontname = Helvetica];
"/gnu/store/0w4i240rlsq7bd9ig4nixpbijkf4qy12-binutils-mesboot0-2.20.1a.drv" -> "/gnu/store/xjvyz26a4m191p5aqyifi7fw57vjps15-tcc-boot-0.9.27.drv" [color = peachpuff4];
"/gnu/store/0w4i240rlsq7bd9ig4nixpbijkf4qy12-binutils-mesboot0-2.20.1a.drv" -> "/gnu/store/00rjhpbkzk86s4pksjg934l310iaxxjr-bootstrap-binaries-0.drv" [color = peachpuff4];
"/gnu/store/0w4i240rlsq7bd9ig4nixpbijkf4qy12-binutils-mesboot0-2.20.1a.drv" -> "/gnu/store/00rjhpbkzk86s4pksjg934l310iaxxjr-bootstrap-binaries-0.drv" [color = peachpuff4];
"/gnu/store/0w4i240rlsq7bd9ig4nixpbijkf4qy12-binutils-mesboot0-2.20.1a.drv" -> "/gnu/store/yn5ryq346dhxhjsg3glcnb0wmdz4cn8c-diffutils-mesboot-2.7.drv" [color = peachpuff4];
"/gnu/store/0w4i240rlsq7bd9ig4nixpbijkf4qy12-binutils-mesboot0-2.20.1a.drv" -> "/gnu/store/mrbi3ffh1v62b7sc3g40qvz0i0dbbvbi-make-mesboot0-3.80.drv" [color = peachpuff4];
"/gnu/store/xjvyz26a4m191p5aqyifi7fw57vjps15-tcc-boot-0.9.27.drv" [label = "tcc-boot@0.9.27", shape = box, fontname = Helvetica];
"/gnu/store/xjvyz26a4m191p5aqyifi7fw57vjps15-tcc-boot-0.9.27.drv" -> "/gnu/store/as3hax4r1zzxz4ihlzj9yq3rs83gm93c-mes-boot-0.18.drv" [color = cyan3];
"/gnu/store/xjvyz26a4m191p5aqyifi7fw57vjps15-tcc-boot-0.9.27.drv" -> "/gnu/store/p437zhq42yavzknp3miacrgnaw206h7i-tcc-boot0-0.9.26-5.c7b3f59.drv" [color = cyan3];
"/gnu/store/xjvyz26a4m191p5aqyifi7fw57vjps15-tcc-boot-0.9.27.drv" -> "/gnu/store/00rjhpbkzk86s4pksjg934l310iaxxjr-bootstrap-binaries-0.drv" [color = cyan3];
"/gnu/store/as3hax4r1zzxz4ihlzj9yq3rs83gm93c-mes-boot-0.18.drv" [label = "mes-boot@0.18", shape = box, fontname = Helvetica];
"/gnu/store/as3hax4r1zzxz4ihlzj9yq3rs83gm93c-mes-boot-0.18.drv" -> "/gnu/store/gd83makzwnb2aq1x0hylfsi8gaxln5js-bootstrap-mescc-tools-0.5.2.drv" [color = darkviolet];
"/gnu/store/as3hax4r1zzxz4ihlzj9yq3rs83gm93c-mes-boot-0.18.drv" -> "/gnu/store/00rjhpbkzk86s4pksjg934l310iaxxjr-bootstrap-binaries-0.drv" [color = darkviolet];
"/gnu/store/as3hax4r1zzxz4ihlzj9yq3rs83gm93c-mes-boot-0.18.drv" -> "/gnu/store/viccpx5izm9z0ci5nvib0xkdrsfqixlr-bootstrap-mes-0.drv" [color = darkviolet];
"/gnu/store/gd83makzwnb2aq1x0hylfsi8gaxln5js-bootstrap-mescc-tools-0.5.2.drv" [label = "bootstrap-mescc-tools@0.5.2", shape = box, fontname = Helvetica];
"/gnu/store/00rjhpbkzk86s4pksjg934l310iaxxjr-bootstrap-binaries-0.drv" [label = "bootstrap-binaries@0", shape = box, fontname = Helvetica];
"/gnu/store/viccpx5izm9z0ci5nvib0xkdrsfqixlr-bootstrap-mes-0.drv" [label = "bootstrap-mes@0", shape = box, fontname = Helvetica];
"/gnu/store/p437zhq42yavzknp3miacrgnaw206h7i-tcc-boot0-0.9.26-5.c7b3f59.drv" [label = "tcc-boot0@0.9.26-5.c7b3f59", shape = box, fontname = Helvetica];
"/gnu/store/p437zhq42yavzknp3miacrgnaw206h7i-tcc-boot0-0.9.26-5.c7b3f59.drv" -> "/gnu/store/as3hax4r1zzxz4ihlzj9yq3rs83gm93c-mes-boot-0.18.drv" [color = dimgrey];
"/gnu/store/p437zhq42yavzknp3miacrgnaw206h7i-tcc-boot0-0.9.26-5.c7b3f59.drv" -> "/gnu/store/gd83makzwnb2aq1x0hylfsi8gaxln5js-bootstrap-mescc-tools-0.5.2.drv" [color = dimgrey];
"/gnu/store/p437zhq42yavzknp3miacrgnaw206h7i-tcc-boot0-0.9.26-5.c7b3f59.drv" -> "/gnu/store/00rjhpbkzk86s4pksjg934l310iaxxjr-bootstrap-binaries-0.drv" [color = dimgrey];
"/gnu/store/p437zhq42yavzknp3miacrgnaw206h7i-tcc-boot0-0.9.26-5.c7b3f59.drv" -> "/gnu/store/viccpx5izm9z0ci5nvib0xkdrsfqixlr-bootstrap-mes-0.drv" [color = dimgrey];
"/gnu/store/yn5ryq346dhxhjsg3glcnb0wmdz4cn8c-diffutils-mesboot-2.7.drv" [label = "diffutils-mesboot@2.7", shape = box, fontname = Helvetica];
"/gnu/store/yn5ryq346dhxhjsg3glcnb0wmdz4cn8c-diffutils-mesboot-2.7.drv" -> "/gnu/store/as3hax4r1zzxz4ihlzj9yq3rs83gm93c-mes-boot-0.18.drv" [color = peachpuff4];
"/gnu/store/yn5ryq346dhxhjsg3glcnb0wmdz4cn8c-diffutils-mesboot-2.7.drv" -> "/gnu/store/xjvyz26a4m191p5aqyifi7fw57vjps15-tcc-boot-0.9.27.drv" [color = peachpuff4];
"/gnu/store/yn5ryq346dhxhjsg3glcnb0wmdz4cn8c-diffutils-mesboot-2.7.drv" -> "/gnu/store/00rjhpbkzk86s4pksjg934l310iaxxjr-bootstrap-binaries-0.drv" [color = peachpuff4];
"/gnu/store/yn5ryq346dhxhjsg3glcnb0wmdz4cn8c-diffutils-mesboot-2.7.drv" -> "/gnu/store/00rjhpbkzk86s4pksjg934l310iaxxjr-bootstrap-binaries-0.drv" [color = peachpuff4];
"/gnu/store/yn5ryq346dhxhjsg3glcnb0wmdz4cn8c-diffutils-mesboot-2.7.drv" -> "/gnu/store/mrbi3ffh1v62b7sc3g40qvz0i0dbbvbi-make-mesboot0-3.80.drv" [color = peachpuff4];
"/gnu/store/mrbi3ffh1v62b7sc3g40qvz0i0dbbvbi-make-mesboot0-3.80.drv" [label = "make-mesboot0@3.80", shape = box, fontname = Helvetica];
"/gnu/store/mrbi3ffh1v62b7sc3g40qvz0i0dbbvbi-make-mesboot0-3.80.drv" -> "/gnu/store/xjvyz26a4m191p5aqyifi7fw57vjps15-tcc-boot-0.9.27.drv" [color = darkgoldenrod];
"/gnu/store/mrbi3ffh1v62b7sc3g40qvz0i0dbbvbi-make-mesboot0-3.80.drv" -> "/gnu/store/00rjhpbkzk86s4pksjg934l310iaxxjr-bootstrap-binaries-0.drv" [color = darkgoldenrod];
"/gnu/store/mrbi3ffh1v62b7sc3g40qvz0i0dbbvbi-make-mesboot0-3.80.drv" -> "/gnu/store/00rjhpbkzk86s4pksjg934l310iaxxjr-bootstrap-binaries-0.drv" [color = darkgoldenrod];
"/gnu/store/0admz8igq3lvcyga32gp87q2g7918zwy-glibc-mesboot0-2.2.5.drv" [label = "glibc-mesboot0@2.2.5", shape = box, fontname = Helvetica];
"/gnu/store/0admz8igq3lvcyga32gp87q2g7918zwy-glibc-mesboot0-2.2.5.drv" -> "/gnu/store/0w4i240rlsq7bd9ig4nixpbijkf4qy12-binutils-mesboot0-2.20.1a.drv" [color = darkseagreen];
"/gnu/store/0admz8igq3lvcyga32gp87q2g7918zwy-glibc-mesboot0-2.2.5.drv" -> "/gnu/store/ia8z1bsk6hw80inpxxn751n4haas5zbv-gcc-core-mesboot-2.95.3.drv" [color = darkseagreen];
"/gnu/store/0admz8igq3lvcyga32gp87q2g7918zwy-glibc-mesboot0-2.2.5.drv" -> "/gnu/store/00rjhpbkzk86s4pksjg934l310iaxxjr-bootstrap-binaries-0.drv" [color = darkseagreen];
"/gnu/store/0admz8igq3lvcyga32gp87q2g7918zwy-glibc-mesboot0-2.2.5.drv" -> "/gnu/store/00rjhpbkzk86s4pksjg934l310iaxxjr-bootstrap-binaries-0.drv" [color = darkseagreen];
"/gnu/store/0admz8igq3lvcyga32gp87q2g7918zwy-glibc-mesboot0-2.2.5.drv" -> "/gnu/store/yn5ryq346dhxhjsg3glcnb0wmdz4cn8c-diffutils-mesboot-2.7.drv" [color = darkseagreen];
"/gnu/store/0admz8igq3lvcyga32gp87q2g7918zwy-glibc-mesboot0-2.2.5.drv" -> "/gnu/store/kd7b9sba79s1l7hjdhav51gvci5ws4jy-mesboot-headers-0.18.drv" [color = darkseagreen];
"/gnu/store/0admz8igq3lvcyga32gp87q2g7918zwy-glibc-mesboot0-2.2.5.drv" -> "/gnu/store/mrbi3ffh1v62b7sc3g40qvz0i0dbbvbi-make-mesboot0-3.80.drv" [color = darkseagreen];
"/gnu/store/ia8z1bsk6hw80inpxxn751n4haas5zbv-gcc-core-mesboot-2.95.3.drv" [label = "gcc-core-mesboot@2.95.3", shape = box, fontname = Helvetica];
"/gnu/store/ia8z1bsk6hw80inpxxn751n4haas5zbv-gcc-core-mesboot-2.95.3.drv" -> "/gnu/store/0w4i240rlsq7bd9ig4nixpbijkf4qy12-binutils-mesboot0-2.20.1a.drv" [color = dimgrey];
"/gnu/store/ia8z1bsk6hw80inpxxn751n4haas5zbv-gcc-core-mesboot-2.95.3.drv" -> "/gnu/store/xjvyz26a4m191p5aqyifi7fw57vjps15-tcc-boot-0.9.27.drv" [color = dimgrey];
"/gnu/store/ia8z1bsk6hw80inpxxn751n4haas5zbv-gcc-core-mesboot-2.95.3.drv" -> "/gnu/store/00rjhpbkzk86s4pksjg934l310iaxxjr-bootstrap-binaries-0.drv" [color = dimgrey];
"/gnu/store/ia8z1bsk6hw80inpxxn751n4haas5zbv-gcc-core-mesboot-2.95.3.drv" -> "/gnu/store/00rjhpbkzk86s4pksjg934l310iaxxjr-bootstrap-binaries-0.drv" [color = dimgrey];
"/gnu/store/ia8z1bsk6hw80inpxxn751n4haas5zbv-gcc-core-mesboot-2.95.3.drv" -> "/gnu/store/yn5ryq346dhxhjsg3glcnb0wmdz4cn8c-diffutils-mesboot-2.7.drv" [color = dimgrey];
"/gnu/store/ia8z1bsk6hw80inpxxn751n4haas5zbv-gcc-core-mesboot-2.95.3.drv" -> "/gnu/store/mrbi3ffh1v62b7sc3g40qvz0i0dbbvbi-make-mesboot0-3.80.drv" [color = dimgrey];
"/gnu/store/kd7b9sba79s1l7hjdhav51gvci5ws4jy-mesboot-headers-0.18.drv" [label = "mesboot-headers@0.18", shape = box, fontname = Helvetica];
"/gnu/store/kd7b9sba79s1l7hjdhav51gvci5ws4jy-mesboot-headers-0.18.drv" -> "/gnu/store/00rjhpbkzk86s4pksjg934l310iaxxjr-bootstrap-binaries-0.drv" [color = cyan3];
"/gnu/store/kd7b9sba79s1l7hjdhav51gvci5ws4jy-mesboot-headers-0.18.drv" -> "/gnu/store/q8d60ln0dxjvqd2ymi1g6xyk3046m23n-linux-libre-headers-bootstrap-0.drv" [color = cyan3];
"/gnu/store/q8d60ln0dxjvqd2ymi1g6xyk3046m23n-linux-libre-headers-bootstrap-0.drv" [label = "linux-libre-headers-bootstrap@0", shape = box, fontname = Helvetica];
"/gnu/store/r9rsmhz659147krcvksx53b0mjdavr05-gcc-mesboot0-2.95.3.drv" [label = "gcc-mesboot0@2.95.3", shape = box, fontname = Helvetica];
"/gnu/store/r9rsmhz659147krcvksx53b0mjdavr05-gcc-mesboot0-2.95.3.drv" -> "/gnu/store/0w4i240rlsq7bd9ig4nixpbijkf4qy12-binutils-mesboot0-2.20.1a.drv" [color = darkseagreen];
"/gnu/store/r9rsmhz659147krcvksx53b0mjdavr05-gcc-mesboot0-2.95.3.drv" -> "/gnu/store/ia8z1bsk6hw80inpxxn751n4haas5zbv-gcc-core-mesboot-2.95.3.drv" [color = darkseagreen];
"/gnu/store/r9rsmhz659147krcvksx53b0mjdavr05-gcc-mesboot0-2.95.3.drv" -> "/gnu/store/0admz8igq3lvcyga32gp87q2g7918zwy-glibc-mesboot0-2.2.5.drv" [color = darkseagreen];
"/gnu/store/r9rsmhz659147krcvksx53b0mjdavr05-gcc-mesboot0-2.95.3.drv" -> "/gnu/store/00rjhpbkzk86s4pksjg934l310iaxxjr-bootstrap-binaries-0.drv" [color = darkseagreen];
"/gnu/store/r9rsmhz659147krcvksx53b0mjdavr05-gcc-mesboot0-2.95.3.drv" -> "/gnu/store/00rjhpbkzk86s4pksjg934l310iaxxjr-bootstrap-binaries-0.drv" [color = darkseagreen];
"/gnu/store/r9rsmhz659147krcvksx53b0mjdavr05-gcc-mesboot0-2.95.3.drv" -> "/gnu/store/yn5ryq346dhxhjsg3glcnb0wmdz4cn8c-diffutils-mesboot-2.7.drv" [color = darkseagreen];
"/gnu/store/r9rsmhz659147krcvksx53b0mjdavr05-gcc-mesboot0-2.95.3.drv" -> "/gnu/store/q8d60ln0dxjvqd2ymi1g6xyk3046m23n-linux-libre-headers-bootstrap-0.drv" [color = darkseagreen];
"/gnu/store/r9rsmhz659147krcvksx53b0mjdavr05-gcc-mesboot0-2.95.3.drv" -> "/gnu/store/mrbi3ffh1v62b7sc3g40qvz0i0dbbvbi-make-mesboot0-3.80.drv" [color = darkseagreen];
"/gnu/store/86dqsl7b3qrzxl0zd049i5rl7l19gnk0-gcc-mesboot1-wrapper-4.7.4.drv" [label = "gcc-mesboot1-wrapper@4.7.4", shape = box, fontname = Helvetica];
"/gnu/store/86dqsl7b3qrzxl0zd049i5rl7l19gnk0-gcc-mesboot1-wrapper-4.7.4.drv" -> "/gnu/store/00rjhpbkzk86s4pksjg934l310iaxxjr-bootstrap-binaries-0.drv" [color = red];
"/gnu/store/86dqsl7b3qrzxl0zd049i5rl7l19gnk0-gcc-mesboot1-wrapper-4.7.4.drv" -> "/gnu/store/f89fk16sm2l8amhjqli2zg6hil71c7m3-glibc-mesboot-2.16.0.drv" [color = red];
"/gnu/store/86dqsl7b3qrzxl0zd049i5rl7l19gnk0-gcc-mesboot1-wrapper-4.7.4.drv" -> "/gnu/store/8jk8qkbvi8bgf1h2m0f8c2gmriql52p4-gcc-mesboot1-4.7.4.drv" [color = red];
"/gnu/store/f89fk16sm2l8amhjqli2zg6hil71c7m3-glibc-mesboot-2.16.0.drv" [label = "glibc-mesboot@2.16.0", shape = box, fontname = Helvetica];
"/gnu/store/f89fk16sm2l8amhjqli2zg6hil71c7m3-glibc-mesboot-2.16.0.drv" -> "/gnu/store/91nyq32kpndqj8qywqx17zy1ahv4xzgf-binutils-mesboot-2.20.1a.drv" [color = blue];
"/gnu/store/f89fk16sm2l8amhjqli2zg6hil71c7m3-glibc-mesboot-2.16.0.drv" -> "/gnu/store/0admz8igq3lvcyga32gp87q2g7918zwy-glibc-mesboot0-2.2.5.drv" [color = blue];
"/gnu/store/f89fk16sm2l8amhjqli2zg6hil71c7m3-glibc-mesboot-2.16.0.drv" -> "/gnu/store/l92gwa7d9jylv25q7fra0hd4cqsxyxz8-glibc-headers-mesboot-2.16.0.drv" [color = blue];
"/gnu/store/f89fk16sm2l8amhjqli2zg6hil71c7m3-glibc-mesboot-2.16.0.drv" -> "/gnu/store/8jk8qkbvi8bgf1h2m0f8c2gmriql52p4-gcc-mesboot1-4.7.4.drv" [color = blue];
"/gnu/store/f89fk16sm2l8amhjqli2zg6hil71c7m3-glibc-mesboot-2.16.0.drv" -> "/gnu/store/00rjhpbkzk86s4pksjg934l310iaxxjr-bootstrap-binaries-0.drv" [color = blue];
"/gnu/store/f89fk16sm2l8amhjqli2zg6hil71c7m3-glibc-mesboot-2.16.0.drv" -> "/gnu/store/00rjhpbkzk86s4pksjg934l310iaxxjr-bootstrap-binaries-0.drv" [color = blue];
"/gnu/store/f89fk16sm2l8amhjqli2zg6hil71c7m3-glibc-mesboot-2.16.0.drv" -> "/gnu/store/yn5ryq346dhxhjsg3glcnb0wmdz4cn8c-diffutils-mesboot-2.7.drv" [color = blue];
"/gnu/store/f89fk16sm2l8amhjqli2zg6hil71c7m3-glibc-mesboot-2.16.0.drv" -> "/gnu/store/q8d60ln0dxjvqd2ymi1g6xyk3046m23n-linux-libre-headers-bootstrap-0.drv" [color = blue];
"/gnu/store/f89fk16sm2l8amhjqli2zg6hil71c7m3-glibc-mesboot-2.16.0.drv" -> "/gnu/store/79zblx3zhbmycl30kvwylpxyhjv52qi4-make-mesboot-3.82.drv" [color = blue];
"/gnu/store/l92gwa7d9jylv25q7fra0hd4cqsxyxz8-glibc-headers-mesboot-2.16.0.drv" [label = "glibc-headers-mesboot@2.16.0", shape = box, fontname = Helvetica];
"/gnu/store/l92gwa7d9jylv25q7fra0hd4cqsxyxz8-glibc-headers-mesboot-2.16.0.drv" -> "/gnu/store/91nyq32kpndqj8qywqx17zy1ahv4xzgf-binutils-mesboot-2.20.1a.drv" [color = red];
"/gnu/store/l92gwa7d9jylv25q7fra0hd4cqsxyxz8-glibc-headers-mesboot-2.16.0.drv" -> "/gnu/store/0admz8igq3lvcyga32gp87q2g7918zwy-glibc-mesboot0-2.2.5.drv" [color = red];
"/gnu/store/l92gwa7d9jylv25q7fra0hd4cqsxyxz8-glibc-headers-mesboot-2.16.0.drv" -> "/gnu/store/8jk8qkbvi8bgf1h2m0f8c2gmriql52p4-gcc-mesboot1-4.7.4.drv" [color = red];
"/gnu/store/l92gwa7d9jylv25q7fra0hd4cqsxyxz8-glibc-headers-mesboot-2.16.0.drv" -> "/gnu/store/kd7b9sba79s1l7hjdhav51gvci5ws4jy-mesboot-headers-0.18.drv" [color = red];
"/gnu/store/l92gwa7d9jylv25q7fra0hd4cqsxyxz8-glibc-headers-mesboot-2.16.0.drv" -> "/gnu/store/00rjhpbkzk86s4pksjg934l310iaxxjr-bootstrap-binaries-0.drv" [color = red];
"/gnu/store/l92gwa7d9jylv25q7fra0hd4cqsxyxz8-glibc-headers-mesboot-2.16.0.drv" -> "/gnu/store/00rjhpbkzk86s4pksjg934l310iaxxjr-bootstrap-binaries-0.drv" [color = red];
"/gnu/store/l92gwa7d9jylv25q7fra0hd4cqsxyxz8-glibc-headers-mesboot-2.16.0.drv" -> "/gnu/store/yn5ryq346dhxhjsg3glcnb0wmdz4cn8c-diffutils-mesboot-2.7.drv" [color = red];
"/gnu/store/l92gwa7d9jylv25q7fra0hd4cqsxyxz8-glibc-headers-mesboot-2.16.0.drv" -> "/gnu/store/q8d60ln0dxjvqd2ymi1g6xyk3046m23n-linux-libre-headers-bootstrap-0.drv" [color = red];
"/gnu/store/l92gwa7d9jylv25q7fra0hd4cqsxyxz8-glibc-headers-mesboot-2.16.0.drv" -> "/gnu/store/79zblx3zhbmycl30kvwylpxyhjv52qi4-make-mesboot-3.82.drv" [color = red];
"/gnu/store/8jk8qkbvi8bgf1h2m0f8c2gmriql52p4-gcc-mesboot1-4.7.4.drv" [label = "gcc-mesboot1@4.7.4", shape = box, fontname = Helvetica];
"/gnu/store/8jk8qkbvi8bgf1h2m0f8c2gmriql52p4-gcc-mesboot1-4.7.4.drv" -> "/gnu/store/91nyq32kpndqj8qywqx17zy1ahv4xzgf-binutils-mesboot-2.20.1a.drv" [color = darkseagreen];
"/gnu/store/8jk8qkbvi8bgf1h2m0f8c2gmriql52p4-gcc-mesboot1-4.7.4.drv" -> "/gnu/store/r9rsmhz659147krcvksx53b0mjdavr05-gcc-mesboot0-2.95.3.drv" [color = darkseagreen];
"/gnu/store/8jk8qkbvi8bgf1h2m0f8c2gmriql52p4-gcc-mesboot1-4.7.4.drv" -> "/gnu/store/0admz8igq3lvcyga32gp87q2g7918zwy-glibc-mesboot0-2.2.5.drv" [color = darkseagreen];
"/gnu/store/8jk8qkbvi8bgf1h2m0f8c2gmriql52p4-gcc-mesboot1-4.7.4.drv" -> "/gnu/store/00rjhpbkzk86s4pksjg934l310iaxxjr-bootstrap-binaries-0.drv" [color = darkseagreen];
"/gnu/store/8jk8qkbvi8bgf1h2m0f8c2gmriql52p4-gcc-mesboot1-4.7.4.drv" -> "/gnu/store/00rjhpbkzk86s4pksjg934l310iaxxjr-bootstrap-binaries-0.drv" [color = darkseagreen];
"/gnu/store/8jk8qkbvi8bgf1h2m0f8c2gmriql52p4-gcc-mesboot1-4.7.4.drv" -> "/gnu/store/yn5ryq346dhxhjsg3glcnb0wmdz4cn8c-diffutils-mesboot-2.7.drv" [color = darkseagreen];
"/gnu/store/8jk8qkbvi8bgf1h2m0f8c2gmriql52p4-gcc-mesboot1-4.7.4.drv" -> "/gnu/store/q8d60ln0dxjvqd2ymi1g6xyk3046m23n-linux-libre-headers-bootstrap-0.drv" [color = darkseagreen];
"/gnu/store/8jk8qkbvi8bgf1h2m0f8c2gmriql52p4-gcc-mesboot1-4.7.4.drv" -> "/gnu/store/79zblx3zhbmycl30kvwylpxyhjv52qi4-make-mesboot-3.82.drv" [color = darkseagreen];
"/gnu/store/79zblx3zhbmycl30kvwylpxyhjv52qi4-make-mesboot-3.82.drv" [label = "make-mesboot@3.82", shape = box, fontname = Helvetica];
"/gnu/store/79zblx3zhbmycl30kvwylpxyhjv52qi4-make-mesboot-3.82.drv" -> "/gnu/store/0w4i240rlsq7bd9ig4nixpbijkf4qy12-binutils-mesboot0-2.20.1a.drv" [color = magenta];
"/gnu/store/79zblx3zhbmycl30kvwylpxyhjv52qi4-make-mesboot-3.82.drv" -> "/gnu/store/0admz8igq3lvcyga32gp87q2g7918zwy-glibc-mesboot0-2.2.5.drv" [color = magenta];
"/gnu/store/79zblx3zhbmycl30kvwylpxyhjv52qi4-make-mesboot-3.82.drv" -> "/gnu/store/r9rsmhz659147krcvksx53b0mjdavr05-gcc-mesboot0-2.95.3.drv" [color = magenta];
"/gnu/store/79zblx3zhbmycl30kvwylpxyhjv52qi4-make-mesboot-3.82.drv" -> "/gnu/store/mrbi3ffh1v62b7sc3g40qvz0i0dbbvbi-make-mesboot0-3.80.drv" [color = magenta];
"/gnu/store/79zblx3zhbmycl30kvwylpxyhjv52qi4-make-mesboot-3.82.drv" -> "/gnu/store/00rjhpbkzk86s4pksjg934l310iaxxjr-bootstrap-binaries-0.drv" [color = magenta];
"/gnu/store/79zblx3zhbmycl30kvwylpxyhjv52qi4-make-mesboot-3.82.drv" -> "/gnu/store/00rjhpbkzk86s4pksjg934l310iaxxjr-bootstrap-binaries-0.drv" [color = magenta];
"/gnu/store/79zblx3zhbmycl30kvwylpxyhjv52qi4-make-mesboot-3.82.drv" -> "/gnu/store/q8d60ln0dxjvqd2ymi1g6xyk3046m23n-linux-libre-headers-bootstrap-0.drv" [color = magenta];
}

View File

@ -39,7 +39,7 @@ DOT_FILES = \
%D%/images/bootstrap-packages.dot \
%D%/images/coreutils-graph.dot \
%D%/images/coreutils-bag-graph.dot \
%D%/images/gcc-mesboot-bag-graph.dot \
%D%/images/gcc-core-mesboot0-graph.dot \
%D%/images/service-graph.dot \
%D%/images/shepherd-graph.dot

View File

@ -48,6 +48,7 @@ REQUIRE=(
"groupadd"
"tail"
"tr"
"xz"
)
PAS=$'[ \033[32;1mPASS\033[0m ] '
@ -141,7 +142,7 @@ chk_init_sys()
_msg "${INF}init system is: upstart"
INIT_SYS="upstart"
return 0
elif [[ $(systemctl) =~ -\.mount ]]; then
elif [[ $(systemctl 2>/dev/null) =~ -\.mount ]]; then
_msg "${INF}init system is: systemd"
INIT_SYS="systemd"
return 0

View File

@ -859,7 +859,6 @@ dist_patch_DATA = \
%D%/packages/patches/dconf-meson-0.52.patch \
%D%/packages/patches/debops-constants-for-external-program-names.patch \
%D%/packages/patches/debops-debops-defaults-fall-back-to-less.patch \
%D%/packages/patches/deja-dup-use-ref-keyword-for-iter.patch \
%D%/packages/patches/desmume-gcc6-fixes.patch \
%D%/packages/patches/desmume-gcc7-fixes.patch \
%D%/packages/patches/dfu-programmer-fix-libusb.patch \
@ -978,7 +977,6 @@ dist_patch_DATA = \
%D%/packages/patches/ghostscript-no-header-id.patch \
%D%/packages/patches/ghostscript-no-header-uuid.patch \
%D%/packages/patches/ghostscript-no-header-creationdate.patch \
%D%/packages/patches/git-annex-S3v4.patch \
%D%/packages/patches/glib-tests-timer.patch \
%D%/packages/patches/glibc-CVE-2015-5180.patch \
%D%/packages/patches/glibc-CVE-2015-7547.patch \
@ -1052,6 +1050,7 @@ dist_patch_DATA = \
%D%/packages/patches/guile-3.0-relocatable.patch \
%D%/packages/patches/guile-linux-syscalls.patch \
%D%/packages/patches/guile-3.0-linux-syscalls.patch \
%D%/packages/patches/guile-fibers-destroy-peer-schedulers.patch \
%D%/packages/patches/guile-gdbm-ffi-support-gdbm-1.14.patch \
%D%/packages/patches/guile-present-coding.patch \
%D%/packages/patches/guile-rsvg-pkgconfig.patch \
@ -1167,9 +1166,6 @@ dist_patch_DATA = \
%D%/packages/patches/libbonobo-activation-test-race.patch \
%D%/packages/patches/libcanberra-sound-theme-freedesktop.patch \
%D%/packages/patches/libdrm-realpath-virtio.patch \
%D%/packages/patches/libexif-CVE-2016-6328.patch \
%D%/packages/patches/libexif-CVE-2017-7544.patch \
%D%/packages/patches/libexif-CVE-2018-20030.patch \
%D%/packages/patches/libextractor-exiv2.patch \
%D%/packages/patches/libgeotiff-adapt-test-script-for-proj-6.2.patch \
%D%/packages/patches/libgit2-mtime-0.patch \
@ -1295,7 +1291,7 @@ dist_patch_DATA = \
%D%/packages/patches/netsurf-y2038-tests.patch \
%D%/packages/patches/netsurf-longer-test-timeout.patch \
%D%/packages/patches/ngircd-handle-zombies.patch \
%D%/packages/patches/nm-plugin-path.patch \
%D%/packages/patches/network-manager-plugin-path.patch \
%D%/packages/patches/nsis-env-passthru.patch \
%D%/packages/patches/nss-increase-test-timeout.patch \
%D%/packages/patches/nss-pkgconfig.patch \
@ -1363,6 +1359,7 @@ dist_patch_DATA = \
%D%/packages/patches/perl-www-curl-remove-symbol.patch \
%D%/packages/patches/picprog-non-intel-support.patch \
%D%/packages/patches/pidgin-add-search-path.patch \
%D%/packages/patches/pidgin-libnm.patch \
%D%/packages/patches/pinball-const-fix.patch \
%D%/packages/patches/pinball-cstddef.patch \
%D%/packages/patches/pinball-missing-separators.patch \
@ -1411,6 +1408,7 @@ dist_patch_DATA = \
%D%/packages/patches/python-CVE-2018-14647.patch \
%D%/packages/patches/python-aiohttp-3.6.2-no-warning-fail.patch \
%D%/packages/patches/python-alembic-exceptions-cause.patch \
%D%/packages/patches/python-argcomplete-1.11.1-fish31.patch \
%D%/packages/patches/python-axolotl-AES-fix.patch \
%D%/packages/patches/python-cairocffi-dlopen-path.patch \
%D%/packages/patches/python-cross-compile.patch \
@ -1537,6 +1535,7 @@ dist_patch_DATA = \
%D%/packages/patches/ttfautohint-source-date-epoch.patch \
%D%/packages/patches/tomb-fix-errors-on-open.patch \
%D%/packages/patches/tuxpaint-stamps-path.patch \
%D%/packages/patches/twinkle-bcg729.patch \
%D%/packages/patches/u-boot-riscv64-fix-extlinux.patch \
%D%/packages/patches/u-boot-DT-for-Pinebook-Pro.patch \
%D%/packages/patches/u-boot-add-boe-nv140fhmn49-display.patch \

View File

@ -3336,7 +3336,7 @@ Python loading in HPC environments.")
(let ((real-name "inxi"))
(package
(name "inxi-minimal")
(version "3.0.38-1")
(version "3.1.00-1")
(source
(origin
(method git-fetch)
@ -3345,7 +3345,7 @@ Python loading in HPC environments.")
(commit version)))
(file-name (git-file-name real-name version))
(sha256
(base32 "1qw3sxgd3ly916bzzl3873s3flngwd3vh57slw0shsj7ivz8bfnm"))))
(base32 "0md6yfd297l8695g0rsbs4mm74dc3k00rfjl4x2n4i33mkylp6qa"))))
(build-system trivial-build-system)
(inputs
`(("bash" ,bash-minimal)

View File

@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2013, 2014, 2015, 2017, 2018, 2019 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2013, 2014, 2015, 2017, 2018, 2019, 2020 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2015, 2016 Alex Kost <alezost@gmail.com>
;;; Copyright © 2016 John Darrington <jmd@gnu.org>
;;; Copyright © 2016, 2017, 2019 Efraim Flashner <efraim@flashner.co.il>
@ -111,7 +111,7 @@ dictionaries, including personal ones.")
(uri (string-append "mirror://gnu/aspell/dict/" dict-name
"/" prefix dict-name "-"
version ".tar.bz2"))
(sha256 sha256)))
(hash (content-hash sha256))))
(build-system gnu-build-system)
(arguments
`(#:phases
@ -163,7 +163,7 @@ dictionaries, including personal ones.")
(method url-fetch)
(uri (string-append "https://www.softcatala.org/pub/softcatala/aspell/"
version "/aspell6-ca-" version ".tar.bz2"))
(sha256 sha256)))
(hash (content-hash sha256))))
(home-page "https://www.softcatala.org/pub/softcatala/aspell/"))))
(define-public aspell-dict-de
@ -264,7 +264,7 @@ dictionaries, including personal ones.")
(uri (string-append "mirror://sourceforge/linguistico/"
"Dizionario%20italiano%20per%20Aspell/" version "/"
"aspell6-it-" version ".tar.bz2"))
(sha256 sha256)))
(hash (content-hash sha256))))
(home-page
"http://linguistico.sourceforge.net/pages/dizionario_italiano.html"))))

View File

@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2019 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2019, 2020 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2014, 2015, 2018 Mark H Weaver <mhw@netris.org>
;;; Copyright © 2015, 2017 Leo Famulari <leo@famulari.name>
;;; Copyright © 2016, 2017, 2018, 2019 Efraim Flashner <efraim@flashner.co.il>
@ -38,8 +38,11 @@
#:use-module (guix store)
#:use-module (guix build-system gnu)
#:autoload (guix gnupg) (gnupg-verify*)
#:autoload (gcrypt hash) (port-sha256)
#:autoload (guix base32) (bytevector->nix-base32-string)
;; See <https://bugs.gnu.org/41457> for why not #:autoload here.
#:use-module ((gcrypt hash) #:select (port-sha256))
#:use-module (srfi srfi-1)
#:use-module (srfi srfi-26)
#:use-module (ice-9 format))
@ -48,12 +51,12 @@
"Return the URL of Bash patch number SEQNO."
(format #f "mirror://gnu/bash/bash-5.0-patches/bash50-~3,'0d" seqno))
(define (bash-patch seqno sha256)
"Return the origin of Bash patch SEQNO, with expected hash SHA256"
(define (bash-patch seqno sha256-bv)
"Return the origin of Bash patch SEQNO, with expected hash SHA256-BV."
(origin
(method url-fetch)
(uri (patch-url seqno))
(sha256 sha256)))
(sha256 sha256-bv)))
(define-syntax-rule (patch-series (seqno hash) ...)
(list (bash-patch seqno (base32 hash))

View File

@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2014, 2015, 2018, 2019 Mark H Weaver <mhw@netris.org>
;;; Copyright © 2017, 2020 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2018, 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
@ -151,14 +151,14 @@ built for SYSTEM."
(format #f (G_ "could not find bootstrap binary '~a' \
for system '~a'")
program system))))))
((sha256)
((bv)
(origin
(method url-fetch/executable)
(uri (map (cute string-append <>
(bootstrap-executable-file-name system program))
%bootstrap-executable-base-urls))
(file-name program)
(sha256 sha256)))))))
(hash (content-hash bv sha256))))))))
;;;

View File

@ -2518,7 +2518,7 @@ provides a simple way to achieve this.")
(define-public umockdev
(package
(name "umockdev")
(version "0.13.2")
(version "0.14.1")
(source (origin
(method url-fetch)
(uri (string-append "https://github.com/martinpitt/umockdev/"
@ -2526,7 +2526,7 @@ provides a simple way to achieve this.")
"umockdev-" version ".tar.xz"))
(sha256
(base32
"095v3abc321s584sga04y16lcmdzsdi88h24wcrm78v7vq484g74"))))
"1g78jcrvb7yyh0q5kv5409wjqf8nlfqnw1rknm3a247mcx317dpz"))))
(build-system gnu-build-system)
(arguments
`(#:phases
@ -2538,6 +2538,7 @@ provides a simple way to achieve this.")
#t)))))
(native-inputs
`(("vala" ,vala)
("gobject-introspection" ,gobject-introspection)
("gtk-doc" ,gtk-doc)
("pkg-config" ,pkg-config)

View File

@ -39,7 +39,7 @@
(define-public liblcf
(package
(name "liblcf")
(version "0.6.1")
(version "0.6.2")
(source (origin
(method url-fetch)
(uri (string-append
@ -47,7 +47,7 @@
"/liblcf-" version ".tar.gz"))
(sha256
(base32
"1qz387r4shbx48r3z7k8llkzz4b039zmak98wxpiwn6a23cssdn5"))))
"0n2k4brd264jg9p6918x7dnb2iimpzjh8q3v1fws58450xbgnkqc"))))
(build-system gnu-build-system)
(native-inputs
`(("pkg-config" ,pkg-config)))

View File

@ -70,6 +70,7 @@
;;; Copyright © 2020 Alberto Eleuterio Flores Guerrero <barbanegra+guix@posteo.mx>
;;; Copyright © 2020 Marius Bakke <mbakke@fastmail.com>
;;; Copyright © 2020 pinoaffe <pinoaffe@airmail.cc>
;;; Copyright © 2020 Vinicius Monego <monego@posteo.net>
;;;
;;; This file is part of GNU Guix.
;;;
@ -1757,14 +1758,14 @@ as a library for other Emacs packages.")
(define-public emacs-auctex
(package
(name "emacs-auctex")
(version "12.2.0")
(version "12.2.2")
(source
(origin
(method url-fetch)
(uri (string-append "https://elpa.gnu.org/packages/auctex-"
version ".tar"))
(sha256
(base32 "0j919l3q5sq6h1k1kmk4kyv0vkzl4f98fxcd64v34x5q1ahjhg48"))))
(base32 "1map25xn7r28aldhcz9n8pbfk2l3gvnxx8hgih3ax8hyvnfi6brh"))))
(build-system emacs-build-system)
;; We use 'emacs' because AUCTeX requires dbus at compile time
;; ('emacs-minimal' does not provide dbus).
@ -2767,6 +2768,26 @@ Emacs.")
files and directories.")
(license license:gpl3+)))
(define-public emacs-fountain-mode
(package
(name "emacs-fountain-mode")
(version "3.1.0")
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/rnkn/fountain-mode")
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
(base32 "08giwg0jwk8zzj2i4cm08322qr6znrnv9a49za7c6j47bykpwj6s"))))
(build-system emacs-build-system)
(home-page "https://github.com/rnkn/fountain-mode")
(synopsis "Major mode for screenwriting in Fountain markup")
(description "Fountain Mode is a scriptwriting program for GNU Emacs
using the Fountain plain text markup format.")
(license license:gpl3+)))
(define-public emacs-fringe-helper
(let ((commit "ef4a9c023bae18ec1ddd7265f1f2d6d2e775efdd")
(revision "1"))
@ -3776,13 +3797,15 @@ for Flow files.")
#:emacs ,emacs ;need libxml support
#:phases
(modify-phases %standard-phases
(add-after 'unpack 'fix-python-executable
;; Hardcode python3 executable in the Emacs library.
(add-after 'unpack 'specify-python-location
;; Hard-code python3 executable location in the library.
(lambda* (#:key inputs #:allow-other-keys)
(let ((python3 (string-append (assoc-ref inputs "python")
"/bin/python3")))
(substitute* "flycheck-grammalecte.el"
(("\"python3") (string-append "\"" python3)))
(substitute* '("conjugueur.py" "flycheck-grammalecte.py")
(("/usr/bin/env python3?") python3))
#t)))
(add-before 'build 'link-to-grammalecte
;; XXX: The Python part of the package requires grammalecte, but

View File

@ -1,7 +1,7 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2015 Tomáš Čech <sleep_walker@suse.cz>
;;; Copyright © 2015 Daniel Pimentel <d4n1@member.fsf.org>
;;; Copyright © 2015, 2016, 2017, 2018, 2019 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2015, 2016, 2017, 2018, 2019, 2020 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2017 Nikita <nikita@n0.is>
;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2018 Timo Eisenmann <eisenmann@fn.de>
@ -69,7 +69,7 @@
(define-public efl
(package
(name "efl")
(version "1.23.3")
(version "1.24.1")
(source (origin
(method url-fetch)
(uri (string-append
@ -77,7 +77,7 @@
version ".tar.xz"))
(sha256
(base32
"00b9lp3h65254kdb1ys15fv7p3ln7qsvf15jkw4kli5ymagadkjk"))))
"1xsbz5kl74cgzyzwmjy3p50m0iigvi53lklkp92v49k4j99zpak7"))))
(build-system meson-build-system)
(native-inputs
`(("check" ,check)
@ -93,6 +93,7 @@
("libraw" ,libraw)
("librsvg" ,librsvg)
("libspectre" ,libspectre)
("libtiff" ,libtiff)
("libxau" ,libxau)
("libxcomposite" ,libxcomposite)
("libxcursor" ,libxcursor)
@ -102,18 +103,19 @@
("libxi" ,libxi)
("libxfixes" ,libxfixes)
("libxinerama" ,libxinerama)
("libxp" ,libxp)
("libxrandr" ,libxrandr)
("libxrender" ,libxrender)
("libxss" ,libxscrnsaver)
("libxtst" ,libxtst)
("libwebp" ,libwebp)
("openjpeg" ,openjpeg)
("poppler" ,poppler)
("util-linux" ,util-linux "lib")
("wayland-protocols" ,wayland-protocols)))
(propagated-inputs
;; All these inputs are in package config files in section
;; Requires.private.
`(("avahi" ,avahi)
("bullet" ,bullet)
("dbus" ,dbus)
("elogind" ,elogind)
("eudev" ,eudev)
@ -122,30 +124,32 @@
("fribidi" ,fribidi)
("glib" ,glib)
("harfbuzz" ,harfbuzz)
("luajit" ,luajit)
("libinput" ,libinput-minimal)
("libjpeg" ,libjpeg-turbo)
("libpng" ,libpng)
("libsndfile" ,libsndfile)
("libtiff" ,libtiff)
("libwebp" ,libwebp)
("libpng" ,libpng)
("libx11" ,libx11)
("libxkbcommon" ,libxkbcommon)
("luajit" ,luajit)
("lz4" ,lz4)
("openssl" ,openssl)
("pulseaudio" ,pulseaudio)
("util-linux" ,util-linux "lib")
("wayland" ,wayland)
("zlib" ,zlib)))
(arguments
`(#:configure-flags '("-Dsystemd=false"
"-Delogind=true"
"-Dembedded-lz4=false"
"-Devas-loaders-disabler=json"
"-Dbuild-examples=false"
"-Decore-imf-loaders-disabler=scim"
"-Davahi=true"
"-Dglib=true"
"-Dmount-path=/run/setuid-programs/mount"
"-Dunmount-path=/run/setuid-programs/umount"
;(string-append "-Ddictionaries-hyphen-dir="
; (assoc-ref %build-inputs "hyphen")
; "/share/hyphen")
"-Delogind=true"
"-Dnetwork-backend=connman"
,@(match (%current-system)
("armhf-linux"
@ -153,22 +157,27 @@
(_
'("-Dopengl=full")))
;; for wayland
"-Dwl-deprecated=true" ; ecore_wayland
"-Ddrm-deprecated=true" ; ecore_drm
"-Dwl=true"
"-Ddrm=true")
#:tests? #f ; Many tests fail due to timeouts and network requests.
#:phases
(modify-phases %standard-phases
;; If we don't hardcode the location of libcurl.so then we
;; have to wrap the outputs of efl's dependencies in curl.
(add-after 'unpack 'hardcode-libcurl-location
;; If we don't hardcode the location of libcurl.so and others then we
;; have to wrap the outputs of efl's dependencies in those libraries.
(add-after 'unpack 'hardcode-dynamic-libraries
(lambda* (#:key inputs #:allow-other-keys)
(let* ((curl (assoc-ref inputs "curl"))
(lib (string-append curl "/lib/")))
(let ((curl (assoc-ref inputs "curl"))
(pulse (assoc-ref inputs "pulseaudio"))
(sndfile (assoc-ref inputs "libsndfile"))
(lib "/lib/"))
(substitute* "src/lib/ecore_con/ecore_con_url_curl.c"
(("libcurl.so.?" libcurl) ; libcurl.so.[45]
(string-append lib libcurl)))
(string-append curl lib libcurl)))
(substitute* "src/lib/ecore_audio/ecore_audio.c"
(("libpulse.so.0" libpulse)
(string-append pulse lib libpulse))
(("libsndfile.so.1" libsnd)
(string-append sndfile lib libsnd)))
#t)))
(add-after 'unpack 'fix-install-paths
(lambda _
@ -283,7 +292,7 @@ Libraries with some extra bells and whistles.")
(define-public enlightenment
(package
(name "enlightenment")
(version "0.23.1")
(version "0.24.0")
(source (origin
(method url-fetch)
(uri
@ -291,27 +300,27 @@ Libraries with some extra bells and whistles.")
"enlightenment/enlightenment-" version ".tar.xz"))
(sha256
(base32
"0d1cyl07w9pvi2pf029kablazks2q9aislzl46b6fq5m1465jc75"))
"01053hxdmyjfb6gmz1pqmw0llrgc4356np515h5vsqcn59mhvfz7"))
(patches (search-patches "enlightenment-fix-setuid-path.patch"))))
(build-system meson-build-system)
(arguments
`(#:configure-flags '("-Dsystemd=false")
`(#:configure-flags
(let ((efl (assoc-ref %build-inputs "efl")))
(list "-Dsystemd=false"
"-Dpackagekit=false"
(string-append "-Dedje-cc=" efl "/bin/edje_cc")
(string-append "-Deldbus-codegen=" efl "/bin/eldbus-codegen")
(string-append "-Deet=" efl "/bin/eet")))
#:phases
(modify-phases %standard-phases
(delete 'bootstrap) ; We don't want to run the autogen script.
(add-after 'unpack 'fix-dot-desktop-creation
(lambda _
(substitute* "data/session/meson.build"
(("HAVE_WAYLAND'.*") "HAVE_WAYLAND') == true\n"))
#t))
(add-before 'configure 'set-system-actions
(lambda* (#:key inputs #:allow-other-keys)
(setenv "HOME" "/tmp")
(setenv "HOME" "/tmp")
(let ((xkeyboard (assoc-ref inputs "xkeyboard-config"))
(setxkbmap (assoc-ref inputs "setxkbmap"))
(utils (assoc-ref inputs "util-linux"))
(libc (assoc-ref inputs "libc"))
(bluez (assoc-ref inputs "bluez"))
(bc (assoc-ref inputs "bc"))
(efl (assoc-ref inputs "efl")))
;; We need to patch the path to 'base.lst' to be able
@ -328,23 +337,22 @@ Libraries with some extra bells and whistles.")
"src/modules/conf_intl/e_int_config_intl.c"
"src/modules/wizard/page_010.c")
(("locale -a") (string-append libc "/bin/locale -a")))
(substitute* "src/bin/e_import_config_dialog.c"
(("%s/edje_cc -v %s %s %s\", e_prefix_bin_get\\(\\)")
(string-append efl "/bin/edje_cc -v %s %s %s\"")))
(substitute* "src/modules/everything/evry_plug_apps.c"
(("/usr/bin/") ""))
(substitute* '("src/bin/e_sys_main.c"
"src/bin/e_util_suid.h")
(("PATH=/bin:/usr/bin:/sbin:/usr/sbin")
(string-append "PATH=/run/setuid-programs:"
"/run/current-system/profile/bin:"
"/run/current-system/profile/sbin")))
(substitute* "src/modules/everything/evry_plug_calc.c"
(("bc -l") (string-append bc "/bin/bc -l")))
(substitute* "data/etc/meson.build"
(("/bin/mount") "/run/setuid-programs/mount")
(("/bin/umount") "/run/setuid-programs/umount")
(("/usr/bin/eject") (string-append utils "/bin/eject"))
(("/usr/bin/l2ping") (string-append bluez "/bin/l2ling"))
(("/bin/rfkill") (string-append utils "/sbin/rfkill"))
(("SUSPEND = ''") "SUSPEND = '/run/current-system/profile/bin/loginctl suspend'")
(("HIBERNATE = ''") "HIBERNATE = '/run/current-system/profile/bin/loginctl hibernate'")
(("/sbin/shutdown -h now") "/run/current-system/profile/bin/loginctl poweroff now")
(("/sbin/shutdown -r now") "/run/current-system/profile/bin/loginctl reboot now"))
(("/usr/bin/eject") (string-append utils "/bin/eject")))
(substitute* "src/bin/system/e_system_power.c"
(("systemctl") "loginctl"))
#t))))))
(native-inputs
`(("gettext" ,gettext-minimal)
@ -389,7 +397,7 @@ embedded systems.")
(define-public python-efl
(package
(name "python-efl")
(version "1.23.0")
(version "1.24.0")
(source
(origin
(method url-fetch)
@ -397,7 +405,7 @@ embedded systems.")
"python/python-efl-" version ".tar.xz"))
(sha256
(base32
"16yn6a1b9167nfmryyi44ma40m20ansfpwgrvqzfvwix7qaz9pib"))
"1vk1cdd959gia4a9qzyq56a9zw3lqf9ck66k8c9g3c631mp5cfpy"))
(modules '((guix build utils)))
;; Remove files generated by Cython
(snippet

View File

@ -196,7 +196,7 @@ itself."))))
(define-public font-cantarell
(package
(name "font-abattis-cantarell")
(version "0.111")
(version "0.201")
(source (origin
(method url-fetch)
(uri (string-append "mirror://gnome/sources/cantarell-fonts/"
@ -204,11 +204,10 @@ itself."))))
"/cantarell-fonts-" version ".tar.xz"))
(sha256
(base32
"05hpnhihwm9sxlq1qn993g03pwkmpjbn0dvnba71r1gfjv0jp2w5"))))
"0qwqmkczqy09fdj8l11nr841ks0dwsydqg55qyms12m4yvjn87xn"))))
(build-system meson-build-system)
(native-inputs
`(("appstream-glib" ,appstream-glib)
("gettext" ,gettext-minimal))) ;for msgfmt
`(("gettext" ,gettext-minimal))) ; for msgfmt
(home-page "https://wiki.gnome.org/Projects/CantarellFonts")
(synopsis "Cantarell sans-serif typeface")
(description "The Cantarell font family is a contemporary Humanist

View File

@ -1115,7 +1115,7 @@ which speak the Qualcomm MSM Interface (QMI) protocol.")
(define-public modem-manager
(package
(name "modem-manager")
(version "1.10.8")
(version "1.12.10")
(source (origin
(method url-fetch)
(uri (string-append
@ -1123,15 +1123,11 @@ which speak the Qualcomm MSM Interface (QMI) protocol.")
"ModemManager-" version ".tar.xz"))
(sha256
(base32
"16hnl0sdriqgv4v30mfs64mdl9rw7lsh802zlm3ggwxxil3p9qfb"))))
"1apq9camys2gaw6y6ic1ld20cncfwpmxnzvh4j5zkbbjpf5hbcxj"))))
(build-system gnu-build-system)
(arguments
'(#:configure-flags
`(,(string-append "--with-udev-base-dir=" %output "/lib/udev")
;; FIXME: Without this flag the build fails with "error: assignment
;; from incompatible pointer type" whenever the return value of
;; "g_object_ref" is assigned to "ctx->self".
"--disable-more-warnings")))
`(,(string-append "--with-udev-base-dir=" %output "/lib/udev"))))
(native-inputs
`(("glib:bin" ,glib "bin") ; for glib-mkenums
("gobject-introspection" ,gobject-introspection)

View File

@ -1,6 +1,6 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2013 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2015, 2016, 2017 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2015, 2016, 2017, 2020 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2019 Tobias Geerinckx-Rice <me@tobias.gr>
;;;
;;; This file is part of GNU Guix.
@ -28,15 +28,17 @@
(define-public freeipmi
(package
(name "freeipmi")
(version "1.6.4")
(version "1.6.5")
(source (origin
(method url-fetch)
(uri (string-append "mirror://gnu/freeipmi/freeipmi-"
version ".tar.gz"))
(sha256
(base32
"0g0s4iwx0ng4rv7hp5cc3kkx4drahsc89981gwjblf04lfavppv5"))))
"1ncf1s84752xaq07h36wrxa5ww1167s2bizkww0igxv8djyddwk1"))))
(build-system gnu-build-system)
(arguments
'(#:configure-flags '("--disable-static")))
(inputs
`(("libgcrypt" ,libgcrypt)))
(home-page "https://www.gnu.org/software/freeipmi/")

View File

@ -7367,7 +7367,7 @@ where the player draws runes in real time to effect the desired spell.")
(define-public edgar
(package
(name "edgar")
(version "1.32")
(version "1.33")
(source
(origin
(method url-fetch)
@ -7375,7 +7375,7 @@ where the player draws runes in real time to effect the desired spell.")
(string-append "https://github.com/riksweeney/edgar/releases/download/"
version "/edgar-" version "-1.tar.gz"))
(sha256
(base32 "12lam6qcscc5ima1w2ksd1cvsvxbd17h6mqkgsqpzx8ap43p2r5p"))))
(base32 "1mbx7dvizdca4g1blcv3bdh6yxd13k47rkya4rdzg0nvvz24m175"))))
(build-system gnu-build-system)
(arguments '(#:tests? #f ; there are no tests
#:make-flags

View File

@ -679,6 +679,53 @@ OpenGL graphics API.")
"A library for handling OpenGL function pointer management.")
(license license:x11)))
(define-public libglvnd
(package
(name "libglvnd")
(version "1.3.1")
(home-page "https://gitlab.freedesktop.org/glvnd/libglvnd")
(source (origin
(method git-fetch)
(uri (git-reference
(url home-page)
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
(base32
"0mkzdzdxjxjl794rblq4mq33wmb8ikqmfswbqdbr8gw2kw4wlhdl"))))
(build-system meson-build-system)
(arguments
'(#:configure-flags '("-Dx11=enabled")
#:phases (modify-phases %standard-phases
(add-after 'unpack 'disable-glx-tests
(lambda _
;; This package is meant to be used alongside Mesa.
;; To avoid a circular dependency, disable tests that
;; require a running Xorg server.
(substitute* "tests/meson.build"
(("if with_glx")
"if false"))
#t)))))
(native-inputs
`(("pkg-config" ,pkg-config)))
(inputs
`(("libx11" ,libx11)
("libxext" ,libxext)
("xorgproto" ,xorgproto)))
(synopsis "Vendor-neutral OpenGL dispatch library")
(description
"libglvnd is a vendor-neutral dispatch layer for arbitrating OpenGL
API calls between multiple vendors. It allows multiple drivers from
different vendors to coexist on the same filesystem, and determines which
vendor to dispatch each API call to at runtime.
Both GLX and EGL are supported, in any combination with OpenGL and OpenGL ES.")
;; libglvnd is available under a custom X11-style license, and incorporates
;; code with various other licenses. See README.md for details.
(license (list (license:x11-style "file://README.md")
license:x11
license:expat))))
(define-public soil
(package
(name "soil")

View File

@ -51,6 +51,8 @@
;;; Copyright © 2020 Nicolas Goaziou <mail@nicolasgoaziou.fr>
;;; Copyright © 2020 Naga Malleswari <nagamalli@riseup.net>
;;; Copyright © 2020 Ryan Prior <rprior@protonmail.com>
;;; Copyright © 2020 Vinicius Monego <monego@posteo.net>
;;; Copyright © 2020 Brice Waegeneire <brice@waegenei.re>
;;;
;;; This file is part of GNU Guix.
;;;
@ -643,9 +645,9 @@ extraction, and lookup for applications on the desktop.")
("json-glib" ,json-glib)
("krb5" ,mit-krb5)
("libgweather" ,libgweather)
("libnma" ,libnma)
("libsecret" ,libsecret)
("network-manager" ,network-manager)
("network-manager-applet" ,network-manager-applet)
("packagekit" ,packagekit)
("polkit" ,polkit)
("pwquality" ,libpwquality)
@ -806,41 +808,50 @@ client devices can handle.")
(define-public libnma
(package
(name "libnma")
(version "1.8.26")
(source (origin
(method url-fetch)
(uri (string-append "mirror://gnome/sources/" name "/"
(version-major+minor version) "/"
name "-" version ".tar.xz"))
(sha256
(base32
"1w9lld38risnk1krknfwln24kabdxnj274pyz4jhndphwigrshaf"))))
(build-system meson-build-system)
(arguments
`(#:glib-or-gtk? #t))
(native-inputs
`(("gettext" ,gettext-minimal)
("glib:bin" ,glib "bin")
("gtk-doc" ,gtk-doc)
("gobject-introspection" ,gobject-introspection)
("pkg-config" ,pkg-config)))
(inputs
`(("adwaita-icon-theme" ,adwaita-icon-theme)
("gcr" ,gcr)
("gtk+" ,gtk+)
("iso-codes" ,iso-codes)
("mobile-broadband-provider-info" ,mobile-broadband-provider-info)
("network-manager" ,network-manager)))
(synopsis "Network Manager's applet library")
(description "Libnma is an applet library for Network Manager. It was
(name "libnma")
(version "1.8.28")
(source (origin
(method url-fetch)
(uri (string-append "mirror://gnome/sources/" name "/"
(version-major+minor version) "/"
name "-" version ".tar.xz"))
(sha256
(base32
"09mp6k0hfam1vyyv9kcd8j4gb2r58i05ipx2nswb58ris599bxja"))))
(build-system meson-build-system)
(arguments
`(#:phases
(modify-phases %standard-phases
(add-after 'unpack 'patch-docbook-xml
(lambda* (#:key inputs #:allow-other-keys)
(let ((xmldoc (string-append (assoc-ref inputs "docbook-xml")
"/xml/dtd/docbook")))
(substitute* "libnma-docs.xml"
(("http://.*/docbookx\\.dtd")
(string-append xmldoc "/docbookx.dtd")))
#t))))))
(native-inputs
`(("docbook-xml" ,docbook-xml-4.3)
("gettext" ,gettext-minimal)
("glib:bin" ,glib "bin")
("gtk-doc" ,gtk-doc)
("gobject-introspection" ,gobject-introspection)
("pkg-config" ,pkg-config)
("vala" ,vala)))
(inputs
`(("gcr" ,gcr)
("gtk+" ,gtk+)
("iso-codes" ,iso-codes)
("mobile-broadband-provider-info" ,mobile-broadband-provider-info)
("network-manager" ,network-manager)))
(synopsis "Network Manager's applet library")
(description "Libnma is an applet library for Network Manager. It was
initially part of network-manager-applet and has now become a separate
project.")
(home-page "https://gitlab.gnome.org/GNOME/libnma")
;; Some files carry the "GPL-2.0+" SPDX identifier while others say
;; "LGPL-2.1+".
(license license:gpl2+)))
(home-page "https://gitlab.gnome.org/GNOME/libnma")
;; Some files carry the "GPL-2.0+" SPDX identifier while others say
;; "LGPL-2.1+".
(license license:gpl2+)))
(define-public gnome-menus
(package
@ -868,73 +879,72 @@ configuration files for the GNOME menu, as well as a simple menu editor.")
(define-public deja-dup
(package
(name "deja-dup")
(version "34.3")
(version "40.6")
(source (origin
(method url-fetch)
(uri "https://launchpadlibrarian.net/295170991/deja-dup-34.3.tar.xz")
(sha256
(base32
"1xqcr61hpbahbla7gdjn4ngjfz7w6f57y7f5pkb77yk05f60j2n9"))
(patches
(search-patches "deja-dup-use-ref-keyword-for-iter.patch"))))
(build-system glib-or-gtk-build-system)
(method url-fetch)
(uri (string-append "https://gitlab.gnome.org/World/deja-dup/-/archive/"
version "/deja-dup-" version ".tar.bz2"))
(sha256
(base32
"0lwazh6crby5wpy9fg6zvwy4plqbhs2f98bm5lbizjdlbh88n5q0"))))
(build-system meson-build-system)
(arguments
`(#:modules ((guix build gnu-build-system)
((guix build cmake-build-system) #:prefix cmake:)
(guix build glib-or-gtk-build-system)
(guix build utils))
#:imported-modules (,@%glib-or-gtk-build-system-modules
(guix build cmake-build-system))
#:test-target "test"
#:configure-flags (list (string-append
"-DCMAKE_INSTALL_FULL_DATADIR=" %output)
(string-append
"-DCMAKE_INSTALL_LIBEXECDIR=" %output))
`(#:glib-or-gtk? #t
#:configure-flags
(list
;; Otherwise, the RUNPATH will lack the final path component.
(string-append "-Dc_link_args=-Wl,-rpath="
(assoc-ref %outputs "out") "/lib/deja-dup"))
#:phases
(modify-phases %standard-phases
(add-after 'unpack 'patch-lockfile-deletion
(lambda rest
(substitute* "libdeja/tools/duplicity/DuplicityInstance.vala"
(("/bin/rm")
(which "rm")))))
(replace 'configure
(assoc-ref cmake:%standard-phases 'configure))
(delete 'check) ;; Fails due to issues with DBus
(add-after 'install 'wrap-deja-dup
(lambda* (#:key inputs outputs #:allow-other-keys)
(let ((python (assoc-ref inputs "python"))
(python-path (getenv "PYTHONPATH"))
(duplicity (assoc-ref inputs "duplicity"))
(out (assoc-ref outputs "out")))
(for-each
(lambda (program)
(wrap-program program
`("PATH" ":" prefix (,(string-append python "/bin")
,(string-append duplicity "/bin"))))
(wrap-program program
`("PYTHONPATH" ":" prefix (,python-path))))
(find-files (string-append out "/bin")))
#t))))))
(add-after 'unpack 'patch-paths
(lambda* (#:key inputs #:allow-other-keys)
(let ((python (assoc-ref inputs "python")))
(substitute* '("libdeja/tools/duplicity/DuplicityInstance.vala"
"libdeja/tests/scripts/instance-error.test")
(("/bin/rm")
(which "rm")))
(substitute* "libdeja/tests/runner.vala"
(("/bin/sh")
(which "sh")))
(substitute* "libdeja/tests/scripts/instance-error.test"
(("`which python3`")
(string-append python "/bin/python3"))))))
(add-after 'unpack 'patch-libgpg-error
(lambda* (#:key inputs #:allow-other-keys)
(let ((libgpg-error (assoc-ref inputs "libgpg-error")))
(substitute* "meson.build"
(("(gpgerror_libs = ).*" _ var)
(format #f "~a '-L~a/lib -lgpg-error'\n" var libgpg-error))))
#t))
(add-after 'unpack 'skip-gtk-update-icon-cache
;; Don't create 'icon-theme.cache'.
(lambda _
(substitute* "data/post-install.sh"
(("gtk-update-icon-cache") "true"))
#t)))))
(inputs
`(("gsettings-desktop-schemas" ,gsettings-desktop-schemas)
("gobject-introspection" ,gobject-introspection)
("duplicity" ,duplicity)
("python" ,python-2)
("python-pygobject" ,python2-pygobject)
("python" ,python)
("python-pygobject" ,python-pygobject)
("gtk+" ,gtk+)
("json-glib" ,json-glib)
("libnotify" ,libnotify)
("libpeas" ,libpeas)
("libgpg-error" ,libgpg-error)
("libsecret" ,libsecret)
("libsoup" ,libsoup)
("packagekit" ,packagekit)))
(native-inputs
`(("pkg-config" ,pkg-config)
("vala" ,vala)
`(("appstream-glib" ,appstream-glib)
("desktop-file-utils" ,desktop-file-utils)
("gettext" ,gettext-minimal)
("glib" ,glib "bin") ; for glib-compile-schemas.
("gobject-introspection" ,gobject-introspection)
("itstool" ,itstool)
("intltool" ,intltool)
("cmake" ,cmake-minimal)))
(home-page "https://launchpad.net/deja-dup")
("pkg-config" ,pkg-config)
("vala" ,vala)))
(home-page "https://wiki.gnome.org/Apps/DejaDup")
(synopsis "Simple backup tool, for regular encrypted backups")
(description
"Déjà Dup is a simple backup tool, for regular encrypted backups. It
@ -3426,7 +3436,7 @@ and RDP protocols.")
; or /etc/machine-id.
#:glib-or-gtk? #t
#:configure-flags '("-Denable-gtk-doc=true")))
(home-page "https://developer.gnome.org/dconf")
(home-page "https://developer.gnome.org/dconf/")
(synopsis "Low-level GNOME configuration system")
(description "Dconf is a low-level configuration system. Its main purpose
is to provide a backend to GSettings on platforms that don't already have
@ -4148,10 +4158,14 @@ faster results and to avoid unnecessary server load.")
#t))))
(build-system glib-or-gtk-build-system)
(arguments
'( ;; The tests want to contact the system bus, which can't be done in the
;; build environment. The integration test can run, but the last of
;; the up-self-tests doesn't. Disable tests for now.
#:tests? #f
'(#:phases
(modify-phases %standard-phases
(add-before 'check 'pre-check
(lambda* (#:key inputs #:allow-other-keys)
(let ((umockdev (string-append (assoc-ref inputs "umockdev")
"/lib")))
(setenv "LD_LIBRARY_PATH" umockdev))
#t)))
#:configure-flags (list "--localstatedir=/var"
(string-append "--with-udevrulesdir="
(assoc-ref %outputs "out")
@ -4162,6 +4176,12 @@ faster results and to avoid unnecessary server load.")
("intltool" ,intltool)
("python" ,python)
;; For tests.
("python-dbus" ,python-dbus)
("python-dbusmock" ,python-dbusmock)
("python-pygobject" ,python-pygobject)
("umockdev" ,umockdev)
;; For man pages.
("libxslt" ,libxslt) ;for 'xsltproc'
("libxml2" ,libxml2) ;for 'XML_CATALOG_FILES'
@ -6374,56 +6394,58 @@ users.")
(define-public network-manager
(package
(name "network-manager")
(version "1.18.4")
(version "1.24.0")
(source (origin
(method url-fetch)
(uri (string-append "mirror://gnome/sources/NetworkManager/"
(version-major+minor version) "/"
"NetworkManager-" version ".tar.xz"))
(patches (search-patches "nm-plugin-path.patch"))
(patches (search-patches "network-manager-plugin-path.patch"))
(sha256
(base32
"0pnh1wr2p1fqa5pr945fr3lngfc5ccfrmgddqsg55lxnjpv0ggd3"))
"06044fl60bjlj7c6rqqfbm5795h61h6yzp7ch392hzcnm46wwhn3"))
(modules '((guix build utils)))
(snippet
'(begin
(substitute* "src/devices/wwan/nm-modem-manager.c"
(("systemd") "elogind"))
#t))))
(build-system gnu-build-system)
(build-system meson-build-system)
(outputs '("out"
"doc")) ; 8 MiB of gtk-doc HTML
(arguments
'(#:configure-flags
`(#:configure-flags
(let ((out (assoc-ref %outputs "out"))
(doc (assoc-ref %outputs "doc"))
(dhclient (string-append (assoc-ref %build-inputs "isc-dhcp")
"/sbin/dhclient")))
(list "--with-libnm-glib" ; needed by network-manager-applet
"--with-systemd-journal=no"
"--with-session-tracking=elogind"
"--with-suspend-resume=elogind"
"--with-consolekit=no"
"--with-crypto=gnutls"
"--disable-config-plugin-ibft"
"--sysconfdir=/etc"
"--localstatedir=/var"
(string-append "--with-udev-dir="
out "/lib/udev")
(string-append "--with-dbus-sys-dir="
out "/etc/dbus-1/system.d")
(string-append "--with-html-dir="
doc "/share/gtk-doc/html")
(string-append "--with-dhclient=" dhclient)))
(list
;; Otherwise, the RUNPATH will lack the final 'NetworkManager' path
;; component.
(string-append "-Dc_link_args=-Wl,-rpath="
out "/lib:"
out "/lib/NetworkManager/" ,version)
"-Dsystemd_journal=false"
"-Dsession_tracking=elogind"
"-Dsuspend_resume=elogind"
"-Dsystemdsystemunitdir=no"
"-Dsession_tracking_consolekit=false"
"-Ddhcpcd=no"
"-Ddhcpcanon=no"
"-Dcrypto=gnutls"
"-Diwd=true"
"-Dlibaudit=yes"
"-Dqt=false"
"-Ddocs=true"
"--sysconfdir=/etc"
"--localstatedir=/var"
(string-append "-Dudev_dir="
out "/lib/udev")
(string-append "-Ddbus_conf_dir="
out "/etc/dbus-1/system.d")
(string-append "-Ddhclient=" dhclient)))
#:phases
(modify-phases %standard-phases
;; This bare "ls" invocation breaks some tests.
(add-after 'unpack 'patch-ls-invocation
(lambda _
(substitute* "build-aux/ltmain.sh"
(("`ls -")
(string-append "`" (which "ls") " -")))
#t))
(add-before 'configure 'pre-configure
(lambda _
;; These tests try to test aspects of network-manager's
@ -6431,65 +6453,64 @@ users.")
;; cope with being already in the Guix build jail as that jail
;; lacks some features that they would like to proxy over (like
;; a /sys mount).
(substitute* '("Makefile.in")
(("src/platform/tests/test-address-linux") " ")
(("src/platform/tests/test-cleanup-linux") " ")
(("src/platform/tests/test-link-linux") " ")
(("src/platform/tests/test-route-linux") " ")
(("src/devices/tests/test-acd") "")
(("src/devices/tests/test-arping") " ")
(("src/devices/tests/test-lldp") " ")
(("src/tests/test-route-manager-linux") " "))
#t))
(add-after 'unpack 'delete-failing-tests
(lambda _
;; FIXME: These three tests fail for unknown reasons.
;; ERROR:libnm-core/tests/test-general.c:5842:
;; _json_config_check_valid: assertion failed (res == expected): (1 == 0)
;; ERROR:libnm-core/tests/test-keyfile.c:647:
;; test_team_conf_read_invalid: assertion failed: (nm_setting_team_get_config (s_team) == NULL)
;; ERROR:libnm-core/tests/test-setting.c:907:
;; _test_team_config_sync: assertion failed: (nm_streq0 (nm_setting_team_get_runner (s_team), runner))
(substitute* "Makefile.in"
(("libnm-core/tests/test-general") " ")
(("libnm-core/tests/test-keyfile") " ")
(("libnm-core/tests/test-setting\\$\\(EXEEXT\\)") " "))
(substitute* "src/platform/tests/meson.build"
((".*test-address-linux.*") "")
((".*test-cleanup-linux.*") "")
((".*test-link-linux.*") "")
((".*test-route-linux.*") ""))
(substitute* "src/devices/tests/meson.build"
((".*test-acd.*") "")
((".*test-lldp.*") ""))
#t))
(add-after 'unpack 'patch-docbook-xml
(lambda* (#:key inputs #:allow-other-keys)
(let ((xmldoc (string-append (assoc-ref inputs "docbook-xml")
"/xml/dtd/docbook")))
(substitute* (find-files "." ".*\\.(xsl|xml)")
(("http://.*/docbookx\\.dtd")
(string-append xmldoc "/docbookx.dtd")))
#t)))
(add-before 'check 'pre-check
(lambda _
;; For the missing /etc/machine-id.
(setenv "DBUS_FATAL_WARNINGS" "0")
;; XXX: Regenerate some of the tests that are dependent on Python version.
;; Try removing this variable for newer versions of NetworkManager.
(setenv "NM_TEST_REGENERATE" "1")
#t))
(replace 'install
(add-before 'install 'no-polkit-magic
;; Meson magically invokes pkexec, which fails (not setuid).
(lambda _
(invoke "make"
"sysconfdir=/tmp"
"rundir=/tmp"
"statedir=/tmp"
"nmstatedir=/tmp/nm"
"install")
#t)))))
(setenv "PKEXEC_UID" "something")
#t))
(add-after 'install 'move-doc
(lambda* (#:key outputs #:allow-other-keys)
(let ((out (assoc-ref outputs "out"))
(doc (assoc-ref outputs "doc")))
(mkdir-p (string-append doc "/share"))
(for-each (lambda (directory)
(copy-recursively (string-append out directory)
(string-append doc directory))
(delete-file-recursively
(string-append out directory)))
'("/share/doc" "/share/gtk-doc"))
#t))))))
(propagated-inputs
`(("glib" ,glib)))
(native-inputs
`(("glib:bin" ,glib "bin") ; for gdbus-codegen
`(("glib:bin" ,glib "bin") ; for gdbus-codegen
("gtk-doc" ,gtk-doc)
("gobject-introspection" ,gobject-introspection)
("docbook-xml" ,docbook-xml)
("docbook-xsl" ,docbook-xsl)
("intltool" ,intltool)
("libxslt" ,libxslt)
("libxml2" ,libxml2)
("pkg-config" ,pkg-config)
("vala" ,vala)
;; For testing.
("python" ,python-wrapper)
("python-dbus" ,python-dbus)
("python-pygobject" ,python-pygobject)))
(inputs
`(("coreutils" ,coreutils) ; for ls
("curl" ,curl)
`(("curl" ,curl)
("cyrus-sasl" ,cyrus-sasl)
("dbus-glib" ,dbus-glib)
("dnsmasq" ,dnsmasq)
@ -6497,35 +6518,42 @@ users.")
("gnutls" ,gnutls)
("iptables" ,iptables)
("isc-dhcp" ,isc-dhcp)
("iwd" ,iwd) ; wpa_supplicant alternative
("jansson" ,jansson)
("libaudit" ,audit)
("libgcrypt" ,libgcrypt)
("libgudev" ,libgudev)
("libndp" ,libndp)
("libnl" ,libnl)
("libsoup" ,libsoup)
("mobile-broadband-provider-info" ,mobile-broadband-provider-info)
("modem-manager" ,modem-manager)
("newt" ,newt) ;for the 'nmtui' console interface
("openresolv" ,openresolv) ; alternative resolv.conf manager
("polkit" ,polkit)
("ppp" ,ppp)
("readline" ,readline)
("util-linux" ,util-linux)
("elogind" ,elogind)))
(synopsis "Network connection manager")
(home-page "https://www.gnome.org/projects/NetworkManager/")
(home-page "https://wiki.gnome.org/Projects/NetworkManager")
(description
"NetworkManager is a system network service that manages your network
devices and connections, attempting to keep active network connectivity when
available. It manages ethernet, WiFi, mobile broadband (WWAN), and PPPoE
devices, and provides VPN integration with a variety of different VPN
services.")
(license license:gpl2+)
;; “This NetworkManager project consists of the daemon, client tools, and
;; libnm. libnm is licensed LGPL-2.1+, while the rest is licensed under
;; GPL-2.0+.”
(license (list license:gpl2+
license:lgpl2.1+))
(properties '((upstream-name . "NetworkManager")))))
(define-public network-manager-openvpn
(package
(name "network-manager-openvpn")
;; Updating? Check whether network-manager-applet still needs libnm_gtk.
(version "1.8.10")
(version "1.8.12")
(source (origin
(method url-fetch)
(uri (string-append
@ -6534,7 +6562,7 @@ services.")
"/NetworkManager-openvpn-" version ".tar.xz"))
(sha256
(base32
"1vri49yff4lj13dnzkpq9nx3a4z1bmbrv807r151plj8m1mwhg5g"))))
"062kh4zj7jfbwy4zzcwpq2m457bzbpm3l18s0ysnw3mgia3siz8f"))))
(build-system gnu-build-system)
(arguments
`(#:configure-flags '("--enable-absolute-paths" "--localstatedir=/var")
@ -6564,7 +6592,7 @@ services.")
("kmod" ,kmod)
("openvpn" ,openvpn)
("network-manager" ,network-manager)
("network-manager-applet" ,network-manager-applet) ;for libnma
("libnma" ,libnma)
("libsecret" ,libsecret)))
(home-page "https://wiki.gnome.org/Projects/NetworkManager/VPN")
(synopsis "OpenVPN plug-in for NetworkManager")
@ -6589,7 +6617,11 @@ to virtual private networks (VPNs) via OpenVPN.")
"1js5lwcsqws4klgypfxl4ikmakv7v7xgddij1fj6b0y0qicx0kyy"))))
(build-system gnu-build-system)
(arguments
`(#:configure-flags '("--enable-absolute-paths" "--localstatedir=/var")
`(#:configure-flags '("--enable-absolute-paths"
"--localstatedir=/var"
;; libnm-glib has been removed from network-manager
;; 1de8383ad9fdfc8f552117e5d109bdfa7005634b
"--with-libnm-glib=no")
#:phases
(modify-phases %standard-phases
(add-after 'configure 'patch-path
@ -6613,7 +6645,7 @@ to virtual private networks (VPNs) via OpenVPN.")
("kmod" ,kmod)
("vpnc" ,vpnc)
("network-manager" ,network-manager)
("network-manager-applet" ,network-manager-applet) ;for libnma
("libnma" ,libnma)
("libsecret" ,libsecret)))
(home-page "https://wiki.gnome.org/Projects/NetworkManager/VPN")
(synopsis "VPNC plug-in for NetworkManager")
@ -6655,7 +6687,7 @@ Compatible with Cisco VPN concentrators configured to use IPsec.")
#t)))))
(native-inputs
`(("intltool" ,intltool)
("network-manager-applet" ,network-manager-applet) ;for libnma
("libnma" ,libnma)
("pkg-config" ,pkg-config)))
(inputs
`(("gcr" ,gcr)
@ -6704,7 +6736,7 @@ Cisco's AnyConnect SSL VPN.")
(define-public network-manager-applet
(package
(name "network-manager-applet")
(version "1.8.24")
(version "1.16.0")
(source (origin
(method url-fetch)
(uri (string-append "mirror://gnome/sources/network-manager-applet/"
@ -6712,13 +6744,10 @@ Cisco's AnyConnect SSL VPN.")
"network-manager-applet-" version ".tar.xz"))
(sha256
(base32
"1gzvz4wfqfsfclqg56y954al8x6fmz71cnxlx1i4nqr7a25bp2qi"))))
"1rf3nm0hjcy9f8ajb4vmvwy503w8yj8d4daxkcb7w7i7b92qmyfn"))))
(build-system meson-build-system)
(arguments
'(#:configure-flags
;; Nobody should be using this but network-manager-openvpn 1.8.10 does.
(list "-Dlibnm_gtk=true")
#:glib-or-gtk? #t))
'(#:glib-or-gtk? #t))
(native-inputs
`(("intltool" ,intltool)
("glib:bin" ,glib "bin") ; for glib-compile-resources, etc.
@ -6732,16 +6761,15 @@ Cisco's AnyConnect SSL VPN.")
("network-manager" ,network-manager)))
(inputs
`(("gcr" ,gcr)
("iso-codes" ,iso-codes)
("libnma" ,libnma)
("libgudev" ,libgudev)
("libnotify" ,libnotify)
("libsecret" ,libsecret)
("libselinux" ,libselinux)
("jansson" ,jansson) ; for team support
("modem-manager" ,modem-manager)
("mobile-broadband-provider-info" ,mobile-broadband-provider-info)))
("modem-manager" ,modem-manager)))
(synopsis "Applet for managing network connections")
(home-page "https://www.gnome.org/projects/NetworkManager/")
(home-page "https://wiki.gnome.org/Projects/NetworkManager")
(description
"This package contains a systray applet for NetworkManager. It displays
the available networks and allows users to easily switch between them.")
@ -7130,6 +7158,7 @@ devices using the GNOME desktop.")
("libgnomekbd" ,libgnomekbd)
("libgudev" ,libgudev)
("libgtop" ,libgtop)
("libnma" ,libnma)
("libpwquality" ,libpwquality)
("libsecret" ,libsecret)
("libsoup" ,libsoup)
@ -7293,6 +7322,7 @@ properties, screen resolution, and other GNOME parameters.")
("libcroco" ,libcroco)
("libgnomekbd" ,libgnomekbd) ;for gkbd-keyboard-display
("libgweather" ,libgweather)
("libnma" ,libnma)
("libsoup" ,libsoup)
("mesa-headers" ,mesa-headers)
("mutter" ,mutter)
@ -10038,6 +10068,37 @@ to.")
;; snowball
license:bsd-2))))
(define-public glabels
(package
(name "glabels")
(version "3.4.1")
(source
(origin
(method url-fetch)
(uri (string-append "mirror://gnome/sources/" name "/"
(version-major+minor version) "/"
"glabels-" version ".tar.xz"))
(sha256
(base32 "0f2rki8i27pkd9r0gz03cdl1g4vnmvp0j49nhxqn275vi8lmgr0q"))))
(build-system glib-or-gtk-build-system)
(native-inputs
`(("gettext" ,gettext-minimal)
("glib:bin" ,glib "bin")
("intltool" ,intltool)
("itstool" ,itstool)
("pkg-config" ,pkg-config)))
(inputs
`(("gtk+" ,gtk+)
("librsvg" ,librsvg)
("libxml2" ,libxml2)))
(home-page "https://glabels.org/")
(synopsis "Program for creating labels and business cards")
(description
"gLabels is a program for creating labels and business cards. It is
designed to work with various laser/ink-jet peel-off label and business
card sheets that youll find at most office supply stores.")
(license license:gpl3+)))
(define-public libratbag
(package
(name "libratbag")

View File

@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2013, 2015, 2018 Andreas Enge <andreas@enge.fr>
;;; Copyright © 2014, 2018 Eric Bavier <bavier@member.fsf.org>
;;; Copyright © 2014, 2015, 2016 Mark H Weaver <mhw@netris.org>
@ -473,7 +473,7 @@ gpgpme starting with version 1.7.")
(define-public guile-gcrypt
(package
(name "guile-gcrypt")
(version "0.2.1")
(version "0.3.0")
(home-page "https://notabug.org/cwebber/guile-gcrypt")
(source (origin
(method git-fetch)
@ -482,7 +482,7 @@ gpgpme starting with version 1.7.")
(commit (string-append "v" version))))
(sha256
(base32
"0n232iyayc46f7hywmjw0jr7pbmmz5h4b04jskhkzz9gxz0ci99c"))
"0m29fg4pdfifnqqsa437zc5c1bhbfh62mc69ba25ak4x2cla41ll"))
(file-name (git-file-name name version))))
(build-system gnu-build-system)
(arguments
@ -510,7 +510,7 @@ gpgpme starting with version 1.7.")
("libgcrypt" ,libgcrypt)))
(synopsis "Cryptography library for Guile using Libgcrypt")
(description
"Guile-Gcrypt provides a Guile 2.x interface to a subset of the
"Guile-Gcrypt provides a Guile interface to a subset of the
GNU Libgcrypt crytographic library. It provides modules for cryptographic
hash functions, message authentication codes (MAC), public-key cryptography,
strong randomness, and more. It is implemented using the foreign function

View File

@ -1344,6 +1344,32 @@ standards of the IceCat project.")
(lambda _ (invoke "./mach" "build")))
(replace 'install
(lambda _ (invoke "./mach" "install")))
;; Thunderbird doesn't provide any .desktop file.
;; See https://bugzilla.mozilla.org/show_bug.cgi?id=1637575
(add-after 'install 'install-desktop-file
(lambda* (#:key outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
(apps (string-append out "/share/applications")))
(mkdir-p apps)
(with-output-to-file (string-append apps "/icedove.desktop")
(lambda _
(format #t
"[Desktop Entry]~@
Name=Icedove~@
Exec=~a/bin/icedove~@
Icon=icedove~@
GenericName=Mail/News Client~@
Categories=Network;Email;~@
Terminal=false~@
StartupNotify=true~@
MimeType=x-scheme-handler/mailto;~@
Type=Application~@
Actions=ComposeMessage;~@
[Desktop Action ComposeMessage]~@
Name=Write new message~@
Exec=~@*~a/bin/icedove -compose~%"
out))))
#t))
(add-after 'install 'wrap-program
(lambda* (#:key inputs outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))

View File

@ -623,8 +623,8 @@ Go programming language.")
(license license:bsd-3))))
(define-public go-golang-org-x-crypto
(let ((commit "9756ffdc24725223350eb3266ffb92590d28f278")
(revision "4"))
(let ((commit "2aa609cf4a9d7d1126360de73b55b6002f9e052a")
(revision "5"))
(package
(name "go-golang-org-x-crypto")
(version (git-version "0.0.0" revision commit))
@ -637,7 +637,7 @@ Go programming language.")
version "-checkout"))
(sha256
(base32
"0q7hxaaq6lp0v8qqzifvysl47z5rfdlrxkh3d29vsl3wyby3dxl8"))))
"1yvis6fqbsd7f356aqyi18f76vnwj3bry6mxqnkvshq4cwrf92il"))))
(build-system go-build-system)
(arguments
'(#:import-path "golang.org/x/crypto"
@ -723,8 +723,8 @@ processing.")
(license license:bsd-3))))
(define-public go-golang-org-x-sys
(let ((commit "749cb33beabd9aa6d3178e3de05bcc914f70b2bf")
(revision "5"))
(let ((commit "c709ea063b76879dc9915358f55d4d77c16ab6d5")
(revision "6"))
(package
(name "go-golang-org-x-sys")
(version (git-version "0.0.0" revision commit))
@ -736,7 +736,7 @@ processing.")
(file-name (git-file-name name version))
(sha256
(base32
"0dm3257q3rv2kyn5lmqqim2fqg634v6rhrqq4glvbk4wx4l3v337"))))
"15nq53a6kcqchng4j0d1pjw0m6hny6126nhjdwqw5n9dzh6a226d"))))
(build-system go-build-system)
(arguments
`(#:import-path "golang.org/x/sys"
@ -2186,33 +2186,31 @@ Reference algorithm has been slightly hacked as to support the streaming mode
required by Go's standard Hash interface.")
(license license:bsd-3)))
(define-public go-github-com-calmh-murmur3
(let ((commit "74e9af8f47ac56901c490d45546ca167b60c7066")
(revision "0"))
(package
(name "go-github-com-calmh-murmur3")
(version (git-version "1.1.0" revision commit))
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/calmh/murmur3.git")
(commit commit)))
(file-name (git-file-name name version))
(sha256
(base32
"0k8345ivx228qdbkl8bisd2wxwsinkb44ghba6r09538fr3fbr5w"))))
(build-system go-build-system)
(arguments
'(#:import-path "github.com/calmh/murmur3"))
(home-page "https://github.com/calmh/murmur3")
(synopsis "Native MurmurHash3 Go implementation")
(description "Native Go implementation of Austin Appleby's third
(define-public go-github-com-twmb-murmur3
(package
(name "go-github-com-twmb-murmur3")
(version "1.1.3")
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/twmb/murmur3.git")
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
(base32
"00riapwkyf23l5wyis47mbr8rwr4yrjw491jfc30wpzs111c1gyy"))))
(build-system go-build-system)
(arguments
'(#:import-path "github.com/twmb/murmur3"))
(home-page "https://github.com/twmb/murmur3")
(synopsis "Native MurmurHash3 Go implementation")
(description "Native Go implementation of Austin Appleby's third
MurmurHash revision (aka MurmurHash3).
Reference algorithm has been slightly hacked as to support the streaming mode
required by Go's standard Hash interface.")
(license license:bsd-3))))
(license license:bsd-3)))
(define-public go-github-com-multiformats-go-multihash
(let ((commit "97cdb562a04c6ef66d8ed40cd62f8fbcddd396d6")
@ -2803,7 +2801,7 @@ format in Go.")
(define-public go-github-com-kr-pretty
(package
(name "go-github-com-kr-pretty")
(version "0.1.0")
(version "0.2.0")
(source (origin
(method git-fetch)
(uri (git-reference
@ -2812,7 +2810,7 @@ format in Go.")
(file-name (git-file-name name version))
(sha256
(base32
"18m4pwg2abd0j9cn5v3k2ksk9ig4vlwxmlw9rrglanziv9l967qp"))))
"1ywbfzz1h3a3qd8rpkiqwi1dm4w8ls9ijb4x1b7567grns9f0vnp"))))
(build-system go-build-system)
(propagated-inputs
`(("go-github-com-kr-text" ,go-github-com-kr-text)))
@ -3044,7 +3042,7 @@ mutex, simply ignore the RLock/RUnlock functions.")
(define-public go-github-com-marten-seemann-qtls
(package
(name "go-github-com-marten-seemann-qtls")
(version "0.3.2")
(version "0.4.1")
(source (origin
(method git-fetch)
(uri (git-reference
@ -3053,7 +3051,7 @@ mutex, simply ignore the RLock/RUnlock functions.")
(file-name (git-file-name name version))
(sha256
(base32
"1mdymj66qrqy80pfkwy9s9z9ifkg251whngw5lim09zm90wv2q7a"))))
"0dz60y98nm7l70hamq0v2vrs2dspyr5yqhnrds2dfh7hchxvq76j"))))
(build-system go-build-system)
(arguments
'(#:import-path "github.com/marten-seemann/qtls"
@ -3067,6 +3065,28 @@ the Go standard library's TLS 1.3 implementation.")
(home-page "https://github.com/marten-seemann/qtls")
(license license:bsd-3)))
(define-public go-github-com-marten-seemann-chacha20
(package
(name "go-github-com-marten-seemann-chacha20")
(version "0.2.0")
(source (origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/marten-seemann/chacha20")
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
(base32
"0x1j4cvbap45zk962qkjalc1h3axhzzdy9cdzhcjmprmm1ql4gjm"))))
(build-system go-build-system)
(arguments
'(#:import-path "github.com/marten-seemann/chacha20"))
(synopsis "ChaCha20 in Go")
(description "This package is an external copy of the Go standard library's
internal ChaCha20 package.")
(home-page "https://github.com/marten-seemann/chacha20")
(license license:bsd-3)))
(define-public go-github-com-cheekybits-genny
(package
(name "go-github-com-cheekybits-genny")
@ -3094,7 +3114,7 @@ implementation of generics.")
(define-public go-github-com-lucas-clemente-quic-go
(package
(name "go-github-com-lucas-clemente-quic-go")
(version "0.12.1")
(version "0.14.4")
(source (origin
(method git-fetch)
(uri (git-reference
@ -3103,7 +3123,7 @@ implementation of generics.")
(file-name (git-file-name name version))
(sha256
(base32
"156nhq4dvw7mr08j952248v81q7702phbn4mp228319sahnbv65h"))))
"04l3gqbc3gh079n8vgnrsf8ypgv8sl63xjf28jqfrb45v2l73vyz"))))
(build-system go-build-system)
(arguments
'(#:import-path "github.com/lucas-clemente/quic-go"
@ -3112,6 +3132,7 @@ implementation of generics.")
(propagated-inputs
`(("go-golang-org-x-crypto" ,go-golang-org-x-crypto)
("go-github-com-cheekybits-genny" ,go-github-com-cheekybits-genny)
("go-github-com-marten-seemann-chacha20" ,go-github-com-marten-seemann-chacha20)
("go-github-com-marten-seemann-qtls" ,go-github-com-marten-seemann-qtls)
("go-github-com-golang-protobuf-proto" ,go-github-com-golang-protobuf-proto)))
(synopsis "QUIC in Go")
@ -3496,14 +3517,14 @@ efficient space usage.")
(modify-phases %standard-phases
(add-after 'unpack 'patch-import-path
(lambda _
;; See 'go.mod' in the source distribution of Syncthing 1.4.1 for
;; See 'go.mod' in the source distribution of Syncthing 1.5.0 for
;; more information.
;; <https://github.com/spaolacci/murmur3/issues/29>
(substitute* "src/github.com/willf/bloom/bloom.go"
(("spaolacci") "calmh"))
(("spaolacci") "twmb"))
#t)))))
(propagated-inputs
`(("go-github-com-calmh-murmur3" ,go-github-com-calmh-murmur3)
`(("go-github-com-twmb-murmur3" ,go-github-com-twmb-murmur3)
("go-github-com-willf-bitset" ,go-github-com-willf-bitset)))
(synopsis "Bloom filters in Go")
(description "This package provides a Go implementation of bloom filters,

View File

@ -25,6 +25,7 @@
;;; Copyright © 2019 Timothy Sample <samplet@ngyro.com>
;;; Copyright © 2019, 2020 Martin Becze <mjbecze@riseup.net>
;;; Copyright © 2020 Evan Straw <evan.straw99@gmail.com>
;;; Copyright © 2020 Jack Hill <jackhill@jackhill.us>
;;;
;;; This file is part of GNU Guix.
;;;
@ -464,10 +465,23 @@ you send to a FIFO file.")
("automake" ,automake)
("pkg-config" ,pkg-config)
("texinfo" ,texinfo)))
(inputs `(("guile" ,guile-2.2)))
(propagated-inputs `(("guile2.2-lib" ,guile2.2-lib)))
(inputs `(("guile" ,guile-3.0)))
(propagated-inputs `(("guile-lib" ,guile-lib)))
(arguments
'(#:phases (modify-phases %standard-phases
`(#:modules (((guix build guile-build-system)
#:select (target-guile-effective-version))
,@%gnu-build-system-modules)
#:imported-modules ((guix build guile-build-system)
,@%gnu-build-system-modules)
#:phases (modify-phases %standard-phases
;; Support Guile 3.0 in configure from upstream commit
;; 4c724577ccf19bb88580f72f2f6b166a0447ce3f
(add-before 'bootstrap 'configure-support-guile3.0
(lambda _
(substitute* "configure.ac"
(("GUILE_PKG.*")
"GUILE_PKG([3.0 2.0 2.2])"))
#t))
(add-before 'configure 'set-guilesitedir
(lambda _
(substitute* "Makefile.in"
@ -482,6 +496,24 @@ $(datadir)/guile/site/$(GUILE_EFFECTIVE_VERSION)\n"))
(("^guilesitedir =.*$")
"guilesitedir = \
$(datadir)/guile/site/$(GUILE_EFFECTIVE_VERSION)\n"))
#t))
(add-after 'install 'wrap-program
(lambda* (#:key inputs outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
(bin (string-append out "/bin"))
(guile-lib (assoc-ref inputs "guile-lib"))
(version (target-guile-effective-version))
(scm (string-append "/share/guile/site/"
version))
(go (string-append "/lib/guile/"
version "/site-ccache")))
(wrap-program (string-append bin "/dsv")
`("GUILE_LOAD_PATH" prefix
(,(string-append out scm)
,(string-append guile-lib scm)))
`("GUILE_LOAD_COMPILED_PATH" prefix
(,(string-append out go)
,(string-append guile-lib go)))))
#t)))))
(home-page "https://github.com/artyom-poptsov/guile-dsv")
(synopsis "DSV module for Guile")
@ -491,6 +523,13 @@ delimiter-separated values (DSV) data format. Guile-DSV supports the
Unix-style DSV format and RFC 4180 format.")
(license license:gpl3+)))
(define-public guile2.2-dsv
(package
(inherit guile-dsv)
(name "guile2.2-dsv")
(inputs `(("guile" ,guile-2.2)))
(propagated-inputs `(("guile-lib" ,guile2.2-lib)))))
(define-public guile-fibers
(package
(name "guile-fibers")
@ -523,7 +562,10 @@ Unix-style DSV format and RFC 4180 format.")
(("#:use-module \\(fibers\\)")
(string-append "#:use-module (fibers)\n"
"#:use-module (ice-9 threads)\n")))
#t))))
#t))
(patches
;; fixes a resource leak that causes crashes in the tests
(search-patches "guile-fibers-destroy-peer-schedulers.patch"))))
(build-system gnu-build-system)
(arguments
'(;; The code uses 'scm_t_uint64' et al., which are deprecated in 3.0.

View File

@ -37,7 +37,6 @@
#:use-module (guix packages)
#:use-module ((guix licenses) #:prefix license:)
#:use-module (guix build-system haskell)
#:use-module (gnu packages)
#:use-module (gnu packages base)
#:use-module (gnu packages curl)
#:use-module (gnu packages gl)
@ -342,15 +341,14 @@ to @code{cabal repl}).")
(define-public git-annex
(package
(name "git-annex")
(version "8.20200501")
(version "8.20200522")
(source
(origin
(method url-fetch)
(uri (string-append "https://hackage.haskell.org/package/"
"git-annex/git-annex-" version ".tar.gz"))
(patches (search-patches "git-annex-S3v4.patch"))
(sha256
(base32 "19rggaymvqy7r61n2rl2nigwdi2hzq5l1afcd5l0k1vbacwgq4jl"))))
(base32 "1v71k5k9mcj1nq4pb8apx99rgw2rmckr6yshhvjl1dr6j70d67x8"))))
(build-system haskell-build-system)
(arguments
`(#:configure-flags

View File

@ -1986,7 +1986,7 @@ This package can be used to create @code{favicon.ico} files for web sites.")
(define-public libavif
(package
(name "libavif")
(version "0.7.1")
(version "0.7.3")
(source (origin
(method git-fetch)
(uri (git-reference
@ -1995,7 +1995,7 @@ This package can be used to create @code{favicon.ico} files for web sites.")
(file-name (git-file-name name version))
(sha256
(base32
"1xybjbbprvfsrwgysrn7grg6yp7v6ch5vci7zvdcdzcgyrbph172"))))
"17hagdngpc4xzrr0aa48nx399y5lawyyx9cpcdhpds1mqk6p77lp"))))
(build-system cmake-build-system)
(arguments
`(#:configure-flags '("-DAVIF_CODEC_AOM=ON" "-DAVIF_CODEC_DAV1D=ON"

View File

@ -3,7 +3,7 @@
;;; Copyright © 2017, 2019 Marius Bakke <mbakke@fastmail.com>
;;; Copyright © 2017 Oleg Pykhalov <go.wigust@gmail.com>
;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2018 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2018, 2020 Efraim Flashner <efraim@flashner.co.il>
;;;
;;; This file is part of GNU Guix.
;;;
@ -269,7 +269,7 @@ alternatives. In compilers, this can reduce the cascade of secondary errors.")
(define-public kodi
(package
(name "kodi")
(version "18.6")
(version "18.7")
(source (origin
(method git-fetch)
(uri (git-reference
@ -278,7 +278,7 @@ alternatives. In compilers, this can reduce the cascade of secondary errors.")
(file-name (git-file-name name version))
(sha256
(base32
"0rwymipn5hljy5xrslzmrljmj6f9wb191wi7gjw20wl6sv44d0bk"))
"082cpih84j7v29w55qhj0rdia7hdjpwi81qywiwawd4vlyimpv2h"))
(patches (search-patches "kodi-skip-test-449.patch"
"kodi-increase-test-timeout.patch"
"kodi-set-libcurl-ssl-parameters.patch"))

View File

@ -866,35 +866,6 @@ with that of libgomp, the GNU Offloading and Multi Processing Library.")
"This package provides a Python binding to LLVM for use in Numba.")
(license license:bsd-3)))
(define (package-elisp-from-package source-package package-name
source-files)
"Return a package definition named PACKAGE-NAME that packages the Emacs Lisp
SOURCE-FILES found in SOURCE-PACKAGE."
(let ((orig (package-source source-package)))
(package
(inherit source-package)
(name package-name)
(build-system emacs-build-system)
(source (origin
(method (origin-method orig))
(uri (origin-uri orig))
(sha256 (origin-sha256 orig))
(file-name (string-append package-name "-"
(package-version source-package)))
(modules '((guix build utils)
(srfi srfi-1)
(ice-9 ftw)))
(snippet
`(let* ((source-files (quote ,source-files))
(basenames (map basename source-files)))
(map copy-file
source-files basenames)
(map delete-file-recursively
(fold delete
(scandir ".")
(append '("." "..") basenames)))
#t)))))))
(define-public emacs-clang-format
(package
(inherit clang)

View File

@ -2298,14 +2298,14 @@ transfer protocols.")
(define-public opensmtpd
(package
(name "opensmtpd")
(version "6.7.0p1")
(version "6.7.1p1")
(source
(origin
(method url-fetch)
(uri (string-append "https://www.opensmtpd.org/archives/"
"opensmtpd-" version ".tar.gz"))
(sha256
(base32 "1f8bp40ywyixflg5qbnang6l210bv4vqa1k2pgm2356bp7bmsgy1"))))
(base32 "1jh8vxfajm1mvp1v5yh6llrhjzv0n9fgab88mlwllwqynhcfjy3l"))))
(build-system gnu-build-system)
(inputs
`(("bdb" ,bdb)

View File

@ -440,7 +440,16 @@ authentication.")
version "/pidgin-" version ".tar.bz2"))
(sha256
(base32 "13vdqj70315p9rzgnbxjp9c51mdzf1l4jg1kvnylc4bidw61air7"))
(patches (search-patches "pidgin-add-search-path.patch"))))
(patches (search-patches "pidgin-add-search-path.patch"
;; Remove the snippet and bootstrapping
;; native-inputs together with this patch.
"pidgin-libnm.patch"))
(modules '((guix build utils)))
(snippet
'(begin
;; Remove stale generated file after applying pidgin-libnm.patch.
(delete-file "configure")
#t))))
(build-system glib-or-gtk-build-system)
(native-inputs
`(("pkg-config" ,pkg-config)
@ -448,7 +457,12 @@ authentication.")
("intltool" ,intltool)
("gconf" ,gconf)
("python" ,python-2)
("doxygen" ,doxygen)))
("doxygen" ,doxygen)
;; For bootstrapping after applying pidgin-libnm.patch.
("autoconf" ,autoconf)
("automake" ,automake)
("libtool" ,libtool)))
(inputs
`(("gtk+" ,gtk+-2)
("libgcrypt" ,libgcrypt)

View File

@ -2499,14 +2499,14 @@ from the command line.")
(define-public qtractor
(package
(name "qtractor")
(version "0.9.12")
(version "0.9.14")
(source (origin
(method url-fetch)
(uri (string-append "http://downloads.sourceforge.net/qtractor/"
(uri (string-append "https://downloads.sourceforge.net/qtractor/"
"qtractor-" version ".tar.gz"))
(sha256
(base32
"06493sf4hr178jkvric3rmc2phh1ph2jlyh8kl9z248amq3zfnhy"))))
"1gh268gdpj7nw19xfh7k2l3aban4yrs1lmx33qswrnngs2izj1fk"))))
(build-system gnu-build-system)
(arguments
`(#:tests? #f)) ; no "check" target

View File

@ -30,13 +30,13 @@
(define-public nano
(package
(name "nano")
(version "4.9.2")
(version "4.9.3")
(source
(origin
(method url-fetch)
(uri (string-append "mirror://gnu/nano/nano-" version ".tar.xz"))
(sha256
(base32 "1xifbn1xaklrrf7knxvqif0hy0wgnas7w0wfggay5kifjkm5x8nq"))))
(base32 "1d2i3wvsq5lvpxxinq51dcvd58xx7j0d0c2csz9hgvd06gq3hd3f"))))
(build-system gnu-build-system)
(inputs
`(("gettext" ,gettext-minimal)

View File

@ -21,7 +21,7 @@
;;; Copyright © 2018 Arun Isaac <arunisaac@systemreboot.net>
;;; Copyright © 2018 Pierre Neidhardt <mail@ambrevar.xyz>
;;; Copyright © 2018 Amirouche Boubekki <amirouche@hypermove.net>
;;; Copyright © 2018, 2019 Tim Gesthuizen <tim.gesthuizen@yahoo.de>
;;; Copyright © 2018, 2019, 2020 Tim Gesthuizen <tim.gesthuizen@yahoo.de>
;;; Copyright © 2019 Jens Mølgaard <jens@zete.tk>
;;; Copyright © 2019 Tanguy Le Carrour <tanguy@bioneland.org>
;;; Copyright © 2020 Guillaume Le Vaillant <glv@posteo.net>
@ -196,7 +196,7 @@ algorithms AES or Twofish.")
(define-public pwsafe
(package
(name "pwsafe")
(version "3.50.0")
(version "3.52.0")
(home-page "https://www.pwsafe.org/")
(source
(origin
@ -205,7 +205,7 @@ algorithms AES or Twofish.")
(url "https://github.com/pwsafe/pwsafe.git")
(commit version)))
(sha256
(base32 "01kfssd2vr64yh4dqhch58x36n3aj3hpj5n560f41rsxym69c6qs"))
(base32 "1ka7xsl63v0559fzf3pwc1iqr37gwr4vq5iaxa2hzar2g28hsxvh"))
(file-name (git-file-name name version))))
(build-system cmake-build-system)
(native-inputs
@ -232,15 +232,7 @@ algorithms AES or Twofish.")
(display "find_package(GTest)
add_subdirectory(src/test)\n" cmake-port)
(close cmake-port)
#t)))
(add-after 'add-gtest 'patch-executables
(lambda* (#:key inputs #:allow-other-keys)
(chmod "src/test/OSTest.cpp" #o644)
(substitute* "src/os/unix/media.cpp"
(("/usr/bin/file")
(string-append (assoc-ref inputs "file")
"/bin/file")))
#t)))))
#t))))))
(synopsis "Password safe with automatic input and key generation")
(description "pwsafe is a password manager originally designed by Bruce
Schneier. It offers a simple UI to manage passwords for different services.

View File

@ -1,41 +0,0 @@
From 5676766be5e845ccb6cdf46cfa8722497f151752 Mon Sep 17 00:00:00 2001
From: Jeremy Bicha <jbicha@ubuntu.com>
Date: Fri, 16 Jun 2017 15:11:37 -0400
Subject: Use 'ref' keyword for iter, requires vala 0.36
diff --git a/deja-dup/widgets/ConfigList.vala b/deja-dup/widgets/ConfigList.vala
index 15de2d6..02cd81a 100644
--- a/deja-dup/widgets/ConfigList.vala
+++ b/deja-dup/widgets/ConfigList.vala
@@ -333,7 +333,7 @@ public class ConfigList : ConfigWidget
model.row_deleted.disconnect(write_to_config);
foreach (Gtk.TreeIter iter in iters) {
- (model as Gtk.ListStore).remove(iter);
+ (model as Gtk.ListStore).remove(ref iter);
}
model.row_deleted.connect(write_to_config);
diff --git a/deja-dup/widgets/ConfigLocation.vala b/deja-dup/widgets/ConfigLocation.vala
index 869e2a8..d21c556 100644
--- a/deja-dup/widgets/ConfigLocation.vala
+++ b/deja-dup/widgets/ConfigLocation.vala
@@ -397,12 +397,12 @@ public class ConfigLocation : ConfigWidget
if (uuid == saved_uuid)
return;
- store.remove(iter);
+ store.remove(ref iter);
if (--num_volumes == 0) {
Gtk.TreeIter sep_iter;
if (store.get_iter_from_string(out sep_iter, index_vol_sep.to_string())) {
- store.remove(sep_iter);
+ store.remove(ref sep_iter);
index_vol_sep = -2;
}
}
--
cgit v0.10.2

View File

@ -1,34 +1,31 @@
diff --git a/src/bin/e_auth.c b/src/bin/e_auth.c
index 00b0e5d84..98ab4518f 100644
index 8b0aa6641..f15d2c2a2 100644
--- a/src/bin/e_auth.c
+++ b/src/bin/e_auth.c
@@ -9,8 +9,7 @@ e_auth_begin(char *passwd)
@@ -11,9 +11,7 @@ e_auth_begin(char *passwd)
pwlen = strlen(passwd);
if (pwlen == 0) goto out;
if (strlen(passwd) == 0) goto out;
- snprintf(buf, sizeof(buf), "%s/enlightenment/utils/enlightenment_ckpasswd",
- snprintf(buf, sizeof(buf),
- "%s/enlightenment/utils/enlightenment_ckpasswd pw",
- e_prefix_lib_get());
+ snprintf(buf, sizeof(buf), "/run/setuid-programs/enlightenment_ckpasswd");
exe = ecore_exe_pipe_run(buf, ECORE_EXE_PIPE_WRITE, NULL);
if (ecore_exe_send(exe, passwd, strlen(passwd)) != EINA_TRUE) goto out;
diff --git a/src/bin/e_backlight.c b/src/bin/e_backlight.c
index 2bced6766..208e583ba 100644
--- a/src/bin/e_backlight.c
+++ b/src/bin/e_backlight.c
@@ -521,8 +521,8 @@ _bl_sys_level_set(double val)
}
// fprintf(stderr, "SET: %1.3f\n", val);
snprintf(buf, sizeof(buf),
- "%s/enlightenment/utils/enlightenment_backlight %i %s",
- e_prefix_lib_get(), (int)(val * 1000.0), bl_sysval);
+ "/run/setuid-programs/enlightenment_backlight %i %s",
+ (int)(val * 1000.0), bl_sysval);
bl_sys_set_exe = ecore_exe_run(buf, NULL);
}
#endif // HAVE_EEZE || __FreeBSD_kernel__
if (!exe) goto out;
if (ecore_exe_send(exe, passwd, pwlen) != EINA_TRUE) goto out;
@@ -46,9 +44,7 @@ e_auth_polkit_begin(char *passwd, const char *cookie, unsigned int uid)
pwlen = strlen(passwd);
if (pwlen == 0) goto out;
- snprintf(buf, sizeof(buf),
- "%s/enlightenment/utils/enlightenment_ckpasswd pk",
- e_prefix_lib_get());
+ snprintf(buf, sizeof(buf), "/run/setuid-programs/enlightenment_ckpasswd");
exe = ecore_exe_pipe_run(buf, ECORE_EXE_PIPE_WRITE, NULL);
if (!exe) goto out;
snprintf(buf, sizeof(buf), "%s %u %s", cookie, uid, passwd);
diff --git a/src/bin/e_fm/e_fm_main_eeze.c b/src/bin/e_fm/e_fm_main_eeze.c
index 0fcffa249..c1921121d 100644
index 9b10b3117..74e6b72ad 100644
--- a/src/bin/e_fm/e_fm_main_eeze.c
+++ b/src/bin/e_fm/e_fm_main_eeze.c
@@ -318,7 +318,7 @@ _e_fm_main_eeze_volume_eject(E_Volume *v)
@ -58,163 +55,29 @@ index 0fcffa249..c1921121d 100644
eeze_disk_mount_wrapper_set(v->disk, buf2);
}
v->guard = ecore_timer_loop_add(E_FM_MOUNT_TIMEOUT, (Ecore_Task_Cb)_e_fm_main_eeze_vol_mount_timeout, v);
diff --git a/src/bin/e_sys.c b/src/bin/e_sys.c
index 671fbcd9a..90ee04cf1 100644
--- a/src/bin/e_sys.c
+++ b/src/bin/e_sys.c
@@ -702,20 +702,16 @@ _e_sys_cb_timer(void *data EINA_UNUSED)
diff --git a/src/bin/e_start_main.c b/src/bin/e_start_main.c
index b2c439455..cb16c7bd4 100644
--- a/src/bin/e_start_main.c
+++ b/src/bin/e_start_main.c
@@ -710,7 +710,7 @@ main(int argc, char **argv)
"E_ALERT_FONT_DIR=%s/data/fonts", eina_prefix_data_get(pfx));
putenv(buf2);
snprintf(buf3, sizeof(buf3),
- "E_ALERT_SYSTEM_BIN=%s/enlightenment/utils/enlightenment_system", eina_prefix_lib_get(pfx));
+ "E_ALERT_SYSTEM_BIN=/run/setuid-programs/enlightenment_system");
putenv(buf3);
e_init_status_set(_("Checking System Permissions"));
if ((valgrind_mode || valgrind_tool) &&
diff --git a/src/bin/e_system.c b/src/bin/e_system.c
index 1e7aabb64..dc0173219 100644
--- a/src/bin/e_system.c
+++ b/src/bin/e_system.c
@@ -132,7 +132,7 @@ _system_spawn(void)
else _respawn_count = 0;
if (_respawn_count > 5) return;
snprintf(buf, sizeof(buf),
- "%s/enlightenment/utils/enlightenment_sys -t halt",
- e_prefix_lib_get());
+ "/run/setuid-programs/enlightenment_sys -t halt");
_e_sys_halt_check_exe = ecore_exe_run(buf, NULL);
snprintf(buf, sizeof(buf),
- "%s/enlightenment/utils/enlightenment_sys -t reboot",
- e_prefix_lib_get());
+ "/run/setuid-programs/enlightenment_sys -t reboot");
_e_sys_reboot_check_exe = ecore_exe_run(buf, NULL);
snprintf(buf, sizeof(buf),
- "%s/enlightenment/utils/enlightenment_sys -t suspend",
- e_prefix_lib_get());
+ "/run/setuid-programs/enlightenment_sys -t suspend");
_e_sys_suspend_check_exe = ecore_exe_run(buf, NULL);
snprintf(buf, sizeof(buf),
- "%s/enlightenment/utils/enlightenment_sys -t hibernate",
- e_prefix_lib_get());
+ "/run/setuid-programs/enlightenment_sys -t hibernate");
_e_sys_hibernate_check_exe = ecore_exe_run(buf, NULL);
return ECORE_CALLBACK_CANCEL;
}
@@ -1134,8 +1130,7 @@ _e_sys_action_do(E_Sys_Action a, char *param EINA_UNUSED, Eina_Bool raw)
if (e_util_immortal_check()) return 0;
e_fm2_die();
snprintf(buf, sizeof(buf),
- "%s/enlightenment/utils/enlightenment_sys halt",
- e_prefix_lib_get());
+ "/run/setuid-programs/enlightenment_sys halt");
if (_e_sys_exe)
{
if ((ecore_time_get() - _e_sys_begin_time) > 2.0)
@@ -1170,8 +1165,7 @@ _e_sys_action_do(E_Sys_Action a, char *param EINA_UNUSED, Eina_Bool raw)
if (e_util_immortal_check()) return 0;
e_fm2_die();
snprintf(buf, sizeof(buf),
- "%s/enlightenment/utils/enlightenment_sys reboot",
- e_prefix_lib_get());
+ "/run/setuid-programs/enlightenment_sys reboot");
if (_e_sys_exe)
{
if ((ecore_time_get() - _e_sys_begin_time) > 2.0)
@@ -1204,8 +1198,7 @@ _e_sys_action_do(E_Sys_Action a, char *param EINA_UNUSED, Eina_Bool raw)
case E_SYS_SUSPEND:
/* /etc/acpi/sleep.sh force */
snprintf(buf, sizeof(buf),
- "%s/enlightenment/utils/enlightenment_sys suspend",
- e_prefix_lib_get());
+ "/run/setuid-programs/enlightenment_sys suspend");
if (_e_sys_exe)
{
if ((ecore_time_get() - _e_sys_begin_time) > 2.0)
@@ -1265,8 +1258,7 @@ _e_sys_action_do(E_Sys_Action a, char *param EINA_UNUSED, Eina_Bool raw)
case E_SYS_HIBERNATE:
/* /etc/acpi/hibernate.sh force */
snprintf(buf, sizeof(buf),
- "%s/enlightenment/utils/enlightenment_sys hibernate",
- e_prefix_lib_get());
+ "/run/setuid-programs/enlightenment_sys hibernate");
if (_e_sys_exe)
{
if ((ecore_time_get() - _e_sys_begin_time) > 2.0)
diff --git a/src/modules/bluez4/e_mod_main.c b/src/modules/bluez4/e_mod_main.c
index 4b5148634..47d34b07f 100644
--- a/src/modules/bluez4/e_mod_main.c
+++ b/src/modules/bluez4/e_mod_main.c
@@ -49,8 +49,8 @@ _ebluez_l2ping_poller(void *data EINA_UNUSED)
if (tmp)
{
- eina_strbuf_append_printf(buf, "%s/enlightenment/utils/enlightenment_sys l2ping %s",
- e_prefix_lib_get(), tmp);
+ eina_strbuf_append_printf(buf, "/run/setuid-programs/enlightenment_sys l2ping %s",
+ tmp);
autolock_exe = ecore_exe_run(eina_strbuf_string_get(buf), NULL);
}
@@ -692,8 +692,7 @@ e_modapi_init(E_Module *m)
autolock_desklock = ecore_event_handler_add(E_EVENT_DESKLOCK, _ebluez_desklock, NULL);
buf = eina_strbuf_new();
- eina_strbuf_append_printf(buf, "%s/enlightenment/utils/enlightenment_sys -t l2ping",
- e_prefix_lib_get());
+ eina_strbuf_append_printf(buf, "/run/setuid-programs/enlightenment_sys -t l2ping");
autolock_exe = ecore_exe_run(eina_strbuf_string_get(buf), NULL);
eina_strbuf_free(buf);
diff --git a/src/modules/bluez5/e_mod_main.c b/src/modules/bluez5/e_mod_main.c
index a581c466c..095d8f360 100644
--- a/src/modules/bluez5/e_mod_main.c
+++ b/src/modules/bluez5/e_mod_main.c
@@ -321,8 +321,8 @@ ebluez5_rfkill_unblock(const char *name)
if (buf)
{
eina_strbuf_append_printf
- (buf, "%s/enlightenment/utils/enlightenment_sys rfkill-unblock %s",
- e_prefix_lib_get(), name);
+ (buf, "/run/setuid-programs/enlightenment_sys rfkill-unblock %s",
+ name);
_rfkill_exe = ecore_exe_run(eina_strbuf_string_get(buf), NULL);
eina_strbuf_free(buf);
}
diff --git a/src/modules/cpufreq/e_mod_main.c b/src/modules/cpufreq/e_mod_main.c
index b66b365d8..bab0802cc 100644
--- a/src/modules/cpufreq/e_mod_main.c
+++ b/src/modules/cpufreq/e_mod_main.c
@@ -1452,8 +1452,7 @@ e_modapi_init(E_Module *m)
}
E_CONFIG_LIMIT(cpufreq_config->poll_interval, 1, 1024);
- snprintf(buf, sizeof(buf), "%s/%s/freqset",
- e_module_dir_get(m), MODULE_ARCH);
+ snprintf(buf, sizeof(buf), "/run/setuid-programs/freqset");
cpufreq_config->set_exe_path = strdup(buf);
if (stat(buf, &st) < 0)
diff --git a/src/modules/sysinfo/cpuclock/cpuclock.c b/src/modules/sysinfo/cpuclock/cpuclock.c
index 938916e53..00d5067d0 100644
--- a/src/modules/sysinfo/cpuclock/cpuclock.c
+++ b/src/modules/sysinfo/cpuclock/cpuclock.c
@@ -80,8 +80,7 @@ _cpuclock_set_governor(const char *governor)
char buf[4096 + 100], exe[4096];
struct stat st;
- snprintf(exe, 4096, "%s/%s/cpuclock_sysfs",
- e_module_dir_get(sysinfo_config->module), MODULE_ARCH);
+ snprintf(exe, 4096, "/run/setuid-programs/cpuclock_sysfs");
if (stat(exe, &st) < 0) return;
snprintf(buf, sizeof(buf),
@@ -108,8 +107,7 @@ _cpuclock_set_frequency(int frequency)
if (system(buf) != 0)
ERR("Error code from trying to run \"%s\"", buf);
#else
- snprintf(exe, 4096, "%s/%s/cpuclock_sysfs",
- e_module_dir_get(sysinfo_config->module), MODULE_ARCH);
+ snprintf(exe, 4096, "/run/setuid-programs/cpuclock_sysfs");
if (stat(exe, &st) < 0) return;
snprintf(buf, sizeof(buf),
"%s %s %i", exe, "frequency", frequency);
@@ -127,8 +125,7 @@ _cpuclock_set_pstate(int min, int max, int turbo)
char buf[4096 + 100], exe[4096];
struct stat st;
- snprintf(exe, 4096, "%s/%s/cpuclock_sysfs",
- e_module_dir_get(sysinfo_config->module), MODULE_ARCH);
+ snprintf(exe, 4096, "/run/setuid-programs/cpuclock_sysfs");
if (stat(exe, &st) < 0) return;
snprintf(buf, sizeof(buf),
"%s %s %i %i %i", exe, "pstate", min, max, turbo);
--
2.23.0
- "%s/enlightenment/utils/enlightenment_system", e_prefix_lib_get());
+ "/run/setuid-programs/enlightenment_system");
_system_exe = ecore_exe_pipe_run
(buf, ECORE_EXE_NOT_LEADER | ECORE_EXE_TERM_WITH_PARENT |
ECORE_EXE_PIPE_READ | ECORE_EXE_PIPE_WRITE, NULL);

View File

@ -1,77 +0,0 @@
From the upstream commit, with the changes to CHANGELOG and the docs
folder removed.
From 1532d67c3ecf452b8c86bcc5928525398755cd01 Mon Sep 17 00:00:00 2001
From: Joey Hess <joeyh@joeyh.name>
Date: Thu, 7 May 2020 13:18:11 -0400
Subject: [PATCH] S3: Support signature=v4
To use S3 Signature Version 4. Some S3 services seem to require v4, while
others may only support v2, which remains the default.
I'm also not sure if v4 works correctly in all cases, there is this
upstream bug report: https://github.com/aristidb/aws/issues/262
I've only tested it against the default S3 endpoint.
---
CHANGELOG | 3 +++
Remote/S3.hs | 23 ++++++++++++++++++-
..._3bbdf23c8a4a480f4f6b8e8a2f8ddecd._comment | 13 +++++++++++
..._854390b9a781da82ecb85ad85eecad04._comment | 13 +++++++++++
doc/special_remotes/S3.mdwn | 4 ++++
..._cf57e8dbd9fdc7c487565b61808b6bb2._comment | 10 ++++++++
6 files changed, 65 insertions(+), 1 deletion(-)
create mode 100644 doc/bugs/S3_special_remote_support_for_DigitalOcean_Spaces/comment_2_3bbdf23c8a4a480f4f6b8e8a2f8ddecd._comment
create mode 100644 doc/forum/backblaze_s3/comment_1_854390b9a781da82ecb85ad85eecad04._comment
create mode 100644 doc/special_remotes/S3/comment_34_cf57e8dbd9fdc7c487565b61808b6bb2._comment
diff --git a/Remote/S3.hs b/Remote/S3.hs
index cb345d1f8..e3ea492f2 100644
--- a/Remote/S3.hs
+++ b/Remote/S3.hs
@@ -99,6 +99,8 @@ remote = specialRemoteType $ RemoteType
(FieldDesc "port to connect to")
, optionalStringParser requeststyleField
(FieldDesc "for path-style requests, set to \"path\"")
+ , signatureVersionParser signatureField
+ (FieldDesc "S3 signature version")
, optionalStringParser mungekeysField HiddenField
, optionalStringParser AWS.s3credsField HiddenField
]
@@ -148,6 +150,22 @@ protocolField = Accepted "protocol"
requeststyleField :: RemoteConfigField
requeststyleField = Accepted "requeststyle"
+signatureField :: RemoteConfigField
+signatureField = Accepted "signature"
+
+newtype SignatureVersion = SignatureVersion Int
+
+signatureVersionParser :: RemoteConfigField -> FieldDesc -> RemoteConfigFieldParser
+signatureVersionParser f fd =
+ genParser go f defver fd
+ (Just (ValueDesc "v2 or v4"))
+ where
+ go "v2" = Just (SignatureVersion 2)
+ go "v4" = Just (SignatureVersion 4)
+ go _ = Nothing
+
+ defver = SignatureVersion 2
+
portField :: RemoteConfigField
portField = Accepted "port"
@@ -877,7 +895,10 @@ s3Configuration c = cfg
Nothing
| port == 443 -> AWS.HTTPS
| otherwise -> AWS.HTTP
- cfg = S3.s3 proto endpoint False
+ cfg = case getRemoteConfigValue signatureField c of
+ Just (SignatureVersion 4) ->
+ S3.s3v4 proto endpoint False S3.SignWithEffort
+ _ -> S3.s3 proto endpoint False
data S3Info = S3Info
{ bucket :: S3.Bucket
--
2.26.2

View File

@ -0,0 +1,24 @@
Fibers 1.0.0 has a bug in run-fibers in which peer schedulers aren't destroyed -
so if you had 4 cores, 1 would be destroyed when run-fibers returned, but the
other 3 would stay around. Each scheduler uses 3 file descriptors, so for
machines with many cores, this resource leak adds up quickly - quickly enough
that the test suite can even fail because of it.
See https://github.com/wingo/fibers/issues/36.
This fixes that. It should be safe to destroy the peer schedulers at the given
point because the threads that could be running them are all either dead or the
current thread.
As of May 21, 2020, this bug still existed in the 1.0.0 (latest) release and in
git master.
--- a/fibers.scm 2020-05-21 18:38:06.890690154 -0500
+++ b/fibers.scm 2020-05-21 18:38:56.395686693 -0500
@@ -137,5 +137,6 @@
(%run-fibers scheduler hz finished? affinity))
(lambda ()
(stop-auxiliary-threads scheduler)))))
+ (for-each destroy-scheduler (scheduler-remote-peers scheduler))
(destroy-scheduler scheduler)
(apply values (atomic-box-ref ret))))))

View File

@ -1,72 +0,0 @@
Fix CVE-2016-6328:
https://bugzilla.redhat.com/show_bug.cgi?id=1366239
https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2016-6328
Patch copied from upstream source repository:
https://github.com/libexif/libexif/commit/41bd04234b104312f54d25822f68738ba8d7133d
From 41bd04234b104312f54d25822f68738ba8d7133d Mon Sep 17 00:00:00 2001
From: Marcus Meissner <marcus@jet.franken.de>
Date: Tue, 25 Jul 2017 23:44:44 +0200
Subject: [PATCH] fixes some (not all) buffer overreads during decoding pentax
makernote entries.
This should fix:
https://sourceforge.net/p/libexif/bugs/125/ CVE-2016-6328
---
libexif/pentax/mnote-pentax-entry.c | 16 +++++++++++++---
1 file changed, 13 insertions(+), 3 deletions(-)
diff --git a/libexif/pentax/mnote-pentax-entry.c b/libexif/pentax/mnote-pentax-entry.c
index d03d159..ea0429a 100644
--- a/libexif/pentax/mnote-pentax-entry.c
+++ b/libexif/pentax/mnote-pentax-entry.c
@@ -425,24 +425,34 @@ mnote_pentax_entry_get_value (MnotePentaxEntry *entry,
case EXIF_FORMAT_SHORT:
{
const unsigned char *data = entry->data;
- size_t k, len = strlen(val);
+ size_t k, len = strlen(val), sizeleft;
+
+ sizeleft = entry->size;
for(k=0; k<entry->components; k++) {
+ if (sizeleft < 2)
+ break;
vs = exif_get_short (data, entry->order);
snprintf (val+len, maxlen-len, "%i ", vs);
len = strlen(val);
data += 2;
+ sizeleft -= 2;
}
}
break;
case EXIF_FORMAT_LONG:
{
const unsigned char *data = entry->data;
- size_t k, len = strlen(val);
+ size_t k, len = strlen(val), sizeleft;
+
+ sizeleft = entry->size;
for(k=0; k<entry->components; k++) {
+ if (sizeleft < 4)
+ break;
vl = exif_get_long (data, entry->order);
snprintf (val+len, maxlen-len, "%li", (long int) vl);
len = strlen(val);
data += 4;
+ sizeleft -= 4;
}
}
break;
@@ -455,5 +465,5 @@ mnote_pentax_entry_get_value (MnotePentaxEntry *entry,
break;
}
- return (val);
+ return val;
}
--
2.16.0

View File

@ -1,29 +0,0 @@
Fix CVE-2017-7544:
https://sourceforge.net/p/libexif/bugs/130/
https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2017-7544
Patch copied from upstream bug tracker:
https://sourceforge.net/p/libexif/bugs/130/#489a
Index: libexif/exif-data.c
===================================================================
RCS file: /cvsroot/libexif/libexif/libexif/exif-data.c,v
retrieving revision 1.131
diff -u -r1.131 exif-data.c
--- a/libexif/exif-data.c 12 Jul 2012 17:28:26 -0000 1.131
+++ b/libexif/exif-data.c 25 Jul 2017 21:34:06 -0000
@@ -255,6 +255,12 @@
exif_mnote_data_set_offset (data->priv->md, *ds - 6);
exif_mnote_data_save (data->priv->md, &e->data, &e->size);
e->components = e->size;
+ if (exif_format_get_size (e->format) != 1) {
+ /* e->format is taken from input code,
+ * but we need to make sure it is a 1 byte
+ * entity due to the multiplication below. */
+ e->format = EXIF_FORMAT_UNDEFINED;
+ }
}
}

View File

@ -1,120 +0,0 @@
https://github.com/libexif/libexif/commit/6aa11df549114ebda520dde4cdaea2f9357b2c89.patch
NEWS section was removed
'12' -> '30' on line 79
From 6aa11df549114ebda520dde4cdaea2f9357b2c89 Mon Sep 17 00:00:00 2001
From: Dan Fandrich <dan@coneharvesters.com>
Date: Fri, 12 Oct 2018 16:01:45 +0200
Subject: [PATCH] Improve deep recursion detection in
exif_data_load_data_content.
The existing detection was still vulnerable to pathological cases
causing DoS by wasting CPU. The new algorithm takes the number of tags
into account to make it harder to abuse by cases using shallow recursion
but with a very large number of tags. This improves on commit 5d28011c
which wasn't sufficient to counter this kind of case.
The limitation in the previous fix was discovered by Laurent Delosieres,
Secunia Research at Flexera (Secunia Advisory SA84652) and is assigned
the identifier CVE-2018-20030.
---
NEWS | 1 +
libexif/exif-data.c | 45 +++++++++++++++++++++++++++++++++++++--------
2 files changed, 38 insertions(+), 8 deletions(-)
diff --git a/libexif/exif-data.c b/libexif/exif-data.c
index e35403d..a6f9c94 100644
--- a/libexif/exif-data.c
+++ b/libexif/exif-data.c
@@ -35,6 +35,7 @@
#include <libexif/olympus/exif-mnote-data-olympus.h>
#include <libexif/pentax/exif-mnote-data-pentax.h>
+#include <math.h>
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
@@ -350,6 +351,20 @@ if (data->ifd[(i)]->count) { \
break; \
}
+/*! Calculate the recursion cost added by one level of IFD loading.
+ *
+ * The work performed is related to the cost in the exponential relation
+ * work=1.1**cost
+ */
+static unsigned int
+level_cost(unsigned int n)
+{
+ static const double log_1_1 = 0.09531017980432493;
+
+ /* Adding 0.1 protects against the case where n==1 */
+ return ceil(log(n + 0.1)/log_1_1);
+}
+
/*! Load data for an IFD.
*
* \param[in,out] data #ExifData
@@ -357,13 +372,13 @@ if (data->ifd[(i)]->count) { \
* \param[in] d pointer to buffer containing raw IFD data
* \param[in] ds size of raw data in buffer at \c d
* \param[in] offset offset into buffer at \c d at which IFD starts
- * \param[in] recursion_depth number of times this function has been
- * recursively called without returning
+ * \param[in] recursion_cost factor indicating how expensive this recursive
+ * call could be
*/
static void
exif_data_load_data_content (ExifData *data, ExifIfd ifd,
const unsigned char *d,
- unsigned int ds, unsigned int offset, unsigned int recursion_depth)
+ unsigned int ds, unsigned int offset, unsigned int recursion_cost)
{
ExifLong o, thumbnail_offset = 0, thumbnail_length = 0;
ExifShort n;
@@ -378,9 +393,20 @@ exif_data_load_data_content (ExifData *data, ExifIfd ifd,
if ((((int)ifd) < 0) || ( ((int)ifd) >= EXIF_IFD_COUNT))
return;
- if (recursion_depth > 30) {
+ if (recursion_cost > 170) {
+ /*
+ * recursion_cost is a logarithmic-scale indicator of how expensive this
+ * recursive call might end up being. It is an indicator of the depth of
+ * recursion as well as the potential for worst-case future recursive
+ * calls. Since it's difficult to tell ahead of time how often recursion
+ * will occur, this assumes the worst by assuming every tag could end up
+ * causing recursion.
+ * The value of 170 was chosen to limit typical EXIF structures to a
+ * recursive depth of about 6, but pathological ones (those with very
+ * many tags) to only 2.
+ */
exif_log (data->priv->log, EXIF_LOG_CODE_CORRUPT_DATA, "ExifData",
- "Deep recursion detected!");
+ "Deep/expensive recursion detected!");
return;
}
@@ -422,15 +448,18 @@ exif_data_load_data_content (ExifData *data, ExifIfd ifd,
switch (tag) {
case EXIF_TAG_EXIF_IFD_POINTER:
CHECK_REC (EXIF_IFD_EXIF);
- exif_data_load_data_content (data, EXIF_IFD_EXIF, d, ds, o, recursion_depth + 1);
+ exif_data_load_data_content (data, EXIF_IFD_EXIF, d, ds, o,
+ recursion_cost + level_cost(n));
break;
case EXIF_TAG_GPS_INFO_IFD_POINTER:
CHECK_REC (EXIF_IFD_GPS);
- exif_data_load_data_content (data, EXIF_IFD_GPS, d, ds, o, recursion_depth + 1);
+ exif_data_load_data_content (data, EXIF_IFD_GPS, d, ds, o,
+ recursion_cost + level_cost(n));
break;
case EXIF_TAG_INTEROPERABILITY_IFD_POINTER:
CHECK_REC (EXIF_IFD_INTEROPERABILITY);
- exif_data_load_data_content (data, EXIF_IFD_INTEROPERABILITY, d, ds, o, recursion_depth + 1);
+ exif_data_load_data_content (data, EXIF_IFD_INTEROPERABILITY, d, ds, o,
+ recursion_cost + level_cost(n));
break;
case EXIF_TAG_JPEG_INTERCHANGE_FORMAT:
thumbnail_offset = o;

View File

@ -0,0 +1,60 @@
From: Tobias Geerinckx-Rice <me@tobias.gr>
Date: Sun, 24 May 2020 16:11:01 +0200
Subject: [PATCH] gnu: pidgin: Find libnm.
Copied verbatim from[0].
[0]: https://git.archlinux.org/svntogit/packages.git/plain/trunk/pidgin-nm-1.0.patch?h=packages/pidgin
diff --git a/configure.ac b/configure.ac
index 04836fa..0a2d451 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1423,18 +1423,24 @@ fi
dnl Check for NetworkManager.h; if we don't have it, oh well
if test "x$enable_dbus" = "xyes" ; then
if test "x$enable_nm" = "xyes" ; then
- PKG_CHECK_MODULES(NETWORKMANAGER, [NetworkManager >= 0.5.0], [
+ PKG_CHECK_MODULES(NETWORKMANAGER, [libnm], [
AC_SUBST(NETWORKMANAGER_CFLAGS)
AC_SUBST(NETWORKMANAGER_LIBS)
AC_DEFINE(HAVE_NETWORKMANAGER, 1, [Define if we have NetworkManager.])
], [
- enable_nm=no
- if test "x$force_deps" = "xyes" ; then
- AC_MSG_ERROR([
+ PKG_CHECK_MODULES(NETWORKMANAGER, [NetworkManager >= 0.5.0], [
+ AC_SUBST(NETWORKMANAGER_CFLAGS)
+ AC_SUBST(NETWORKMANAGER_LIBS)
+ AC_DEFINE(HAVE_NETWORKMANAGER, 1, [Define if we have NetworkManager.])
+ ], [
+ enable_nm=no
+ if test "x$force_deps" = "xyes" ; then
+ AC_MSG_ERROR([
NetworkManager development headers not found.
Use --disable-nm if you do not need NetworkManager support.
])
- fi])
+ fi])
+ ])
fi
else
enable_nm=no
diff --git a/libpurple/network.c b/libpurple/network.c
index c43e3c7..b17e439 100644
--- a/libpurple/network.c
+++ b/libpurple/network.c
@@ -939,8 +939,13 @@ nm_update_state(NMState state)
#if NM_CHECK_VERSION(0,8,992)
case NM_STATE_DISCONNECTING:
#endif
+#if NM_CHECK_VERSION(1,0,0)
+ if (prev != NM_STATE_CONNECTED_GLOBAL && prev != NM_STATE_UNKNOWN)
+ break;
+#else
if (prev != NM_STATE_CONNECTED && prev != NM_STATE_UNKNOWN)
break;
+#endif
if (ui_ops != NULL && ui_ops->network_disconnected != NULL)
ui_ops->network_disconnected();
break;

View File

@ -0,0 +1,29 @@
Upstream commit fixing testcases for fish>=3.1, see
https://github.com/kislyuk/argcomplete/commit/08bfc8a788e8081515d733e67be026d051c726f7
diff --git a/test/test.py b/test/test.py
index e91352b..2c34806 100755
--- a/test/test.py
+++ b/test/test.py
@@ -28,6 +28,8 @@
BASH_VERSION = subprocess.check_output(['bash', '-c', 'echo $BASH_VERSION']).decode()
BASH_MAJOR_VERSION = int(BASH_VERSION.split('.')[0])
+FISH_VERSION_STR = subprocess.check_output(['fish', '-c', 'echo -n $FISH_VERSION']).decode()
+FISH_VERSION_TUPLE = tuple(int(x) for x in FISH_VERSION_STR.split('.'))
class TempDir(object):
@@ -1258,8 +1260,11 @@ class TestFish(_TestSh, unittest.TestCase):
expected_failures = [
'test_parse_special_characters',
'test_comp_point',
- 'test_special_characters_double_quoted'
]
+ if FISH_VERSION_TUPLE < (3, 1):
+ expected_failures.extend([
+ 'test_special_characters_double_quoted'
+ ])
skipped = [
'test_single_quotes_in_single_quotes',

View File

@ -206,17 +206,17 @@ cameras (CRW/CR2, NEF, RAF, DNG, and others).")
(define-public libexif
(package
(name "libexif")
(version "0.6.21")
(version "0.6.22")
(source (origin
(method url-fetch)
(uri (string-append "mirror://sourceforge/libexif/libexif/"
version "/libexif-" version ".tar.bz2"))
(patches (search-patches "libexif-CVE-2016-6328.patch"
"libexif-CVE-2017-7544.patch"
"libexif-CVE-2018-20030.patch"))
(uri (string-append
"https://github.com/libexif/libexif/releases"
"/download/libexif-"
(string-map (lambda (x) (if (char=? x #\.) #\_ x)) version)
"-release/libexif-" version ".tar.xz"))
(sha256
(base32
"06nlsibr3ylfwp28w8f5466l6drgrnydgxrm4jmxzrmk5svaxk8n"))))
"0mhcad5zab7fsn120rd585h8ncwkq904nzzrq8vcd72hzk4g2j2h"))))
(build-system gnu-build-system)
(home-page "https://libexif.github.io/")
(synopsis "Read and manipulate EXIF data in digital photographs")
@ -228,14 +228,14 @@ data as produced by digital cameras.")
(define-public libgphoto2
(package
(name "libgphoto2")
(version "2.5.24")
(version "2.5.25")
(source (origin
(method url-fetch)
(uri (string-append "mirror://sourceforge/gphoto/libgphoto/"
version "/libgphoto2-" version ".tar.bz2"))
(sha256
(base32
"0cgvsk06c4kcfj16plc27nm7g16r9ci0y4k83sf3iyphd63mfg7x"))))
"0fkz2rx7xlmr6zl6f56hhxps6bx16dwcw5pyd8c2icf273s9h3kw"))))
(build-system gnu-build-system)
(native-inputs `(("pkg-config" ,pkg-config)))
(inputs

View File

@ -77,6 +77,7 @@
;;; Copyright © 2020 Lars-Dominik Braun <ldb@leibniz-psychology.org>
;;; Copyright © 2020 Alex ter Weele <alex.ter.weele@gmail.com>
;;; Copyright © 2020 Matthew Kraai <kraai@ftbfs.org>
;;; Copyright © 2020 Ryan Prior <rprior@protonmail.com>
;;;
;;; This file is part of GNU Guix.
;;;
@ -5767,6 +5768,25 @@ them as the version argument or in a SCM managed file.")
(define-public python2-setuptools-scm
(package-with-python2 python-setuptools-scm))
(define-public python-sexpdata
(package
(name "python-sexpdata")
(version "0.0.3")
(source
(origin
(method url-fetch)
(uri (pypi-uri "sexpdata" version))
(sha256
(base32
"1q4lsjyzzqrdv64l0pv4ij9nd8gqhvxqcrpxc2xpxs652sk2gj0s"))))
(build-system python-build-system)
(home-page "https://github.com/jd-boyd/sexpdata")
(synopsis "S-expression parser for Python")
(description
"Sexpdata is an S-expression parser/serializer. It has load and dump
functions like pickle, json or PyYAML module.")
(license license:bsd-3)))
(define-public python-pathlib2
(package
(name "python-pathlib2")
@ -5896,6 +5916,25 @@ need to use the older and less efficient @code{pkg_resources} package.")
("python-contextlib2" ,python2-contextlib2-bootstrap)
("python-importlib-resources" ,python2-importlib-resources-bootstrap))))))
(define-public python-importmagic
(package
(name "python-importmagic")
(version "0.1.7")
(source
(origin
(method url-fetch)
(uri (pypi-uri "importmagic" version))
(sha256
(base32
"1n7qxa1snj06aw45mcfz7bxc46zp7fxj687140g2k6jcnyjmfxrz"))))
(build-system python-build-system)
(home-page "https://github.com/alecthomas/importmagic")
(synopsis "Library for adding, removing and managing Python imports")
(description
"Importmagic is a Python library for automatically managing imports by
finding unresolved symbols in Python code and their corresponding imports.")
(license license:bsd-3)))
(define-public python-jaraco-packaging
(package
(name "python-jaraco-packaging")
@ -8786,6 +8825,29 @@ functions to find and load entry points.")
(define-public python2-entrypoints
(package-with-python2 python-entrypoints))
(define-public python-epc
(package
(name "python-epc")
(version "0.0.5")
(source
(origin
(method url-fetch)
(uri (pypi-uri "epc" version))
(sha256
(base32
"09bx1ln1bwa00917dndlgs4k589h8qx2x080xch5m58p92kjwkd1"))))
(build-system python-build-system)
(propagated-inputs
`(("python-sexpdata" ,python-sexpdata)))
(native-inputs
`(("python-nose" ,python-nose)))
(home-page "https://github.com/tkf/python-epc")
(synopsis "Remote procedure call (RPC) stack for Emacs Lisp and Python")
(description
"Python-EPC can call elisp functions from Python and Python functions
from elisp.")
(license license:gpl3)))
(define-public python-nbconvert
(package
(name "python-nbconvert")
@ -13008,33 +13070,16 @@ PNG, JPEG, JPEG2000 and GIF files in pure Python.")
(define-public python-argcomplete
(package
(name "python-argcomplete")
(version "1.10.3")
(version "1.11.1")
(source
(origin
(method url-fetch)
(uri (pypi-uri "argcomplete" version))
(sha256
(base32
"02jkc44drb0yjz6x28lvg6rj607n8r2irdpdvyylm8xnycn54zx3"))))
"0h1przxffrhqvi46k40pzjsvdrq4zc3sl1pc96kkigqppq0vdrss"))
(patches (search-patches "python-argcomplete-1.11.1-fish31.patch"))))
(build-system python-build-system)
(arguments
`(#:phases
(modify-phases %standard-phases
(add-after 'unpack 'embed-tool-references
(lambda _
(substitute* "argcomplete/bash_completion.d/python-argcomplete.sh"
((" grep")
(string-append " " (which "grep")))
((" egrep")
(string-append " " (which "egrep")))
(("elif which")
(string-append "elif " (which "which")))
(("\\$\\(which")
(string-append "$(" (which "which"))))
#t)))))
(inputs
`(("grep" ,grep)
("which" ,which)))
(native-inputs
`(("python-coverage" ,python-coverage)
("python-flake8" ,python-flake8)

View File

@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2012, 2013, 2014 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2012, 2013, 2014, 2020 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2016, 2019 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2016 Jan Nieuwenhuizen <janneke@gnu.org>
;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
@ -35,12 +35,12 @@
(format #f "mirror://gnu/readline/readline-~a-patches/readline~a-~3,'0d"
version (string-join (string-split version #\.) "") seqno))
(define (readline-patch version seqno sha256)
"Return the origin of Readline patch SEQNO, with expected hash SHA256"
(define (readline-patch version seqno sha256-bv)
"Return the origin of Readline patch SEQNO, with expected hash SHA256-BV"
(origin
(method url-fetch)
(uri (patch-url version seqno))
(sha256 sha256)))
(sha256 sha256-bv)))
(define-syntax-rule (patch-series version (seqno hash) ...)
(list (readline-patch version seqno (base32 hash))

View File

@ -43,6 +43,7 @@
#:use-module (gnu packages xiph)
#:use-module (gnu packages xml)
#:use-module (guix build-system gnu)
#:use-module (guix build-system meson)
#:use-module (guix download)
#:use-module (guix packages)
#:use-module ((guix licenses) #:prefix license:)
@ -101,16 +102,26 @@ system to use the host GPU to accelerate 3D rendering.")
(define-public spice-protocol
(package
(name "spice-protocol")
(version "0.14.1")
(version "0.14.2")
(source (origin
(method url-fetch)
(uri (string-append
"https://www.spice-space.org/download/releases/"
"spice-protocol-" version ".tar.bz2"))
"spice-protocol-" version ".tar.xz"))
(sha256
(base32
"0ahk5hlanwhbc64r80xmchdav3ls156cvh9l68a0l22bhdhxmrkr"))))
(build-system gnu-build-system)
"1sgi9ksb781qs47pdbw0bmnyg8dgayn5xrzj6vzdy043nv466flg"))))
(build-system meson-build-system)
(arguments
`(#:phases
(modify-phases %standard-phases
(add-after 'unpack 'install-documentation
(lambda* (#:key outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
(doc (string-append out "/share/doc/"
,name "-" ,version)))
(install-file "COPYING" doc)
#t))))))
(synopsis "Protocol headers for the SPICE protocol")
(description "SPICE (the Simple Protocol for Independent Computing
Environments) is a remote-display system built for virtual environments

View File

@ -32,7 +32,7 @@
(define-public syncthing
(package
(name "syncthing")
(version "1.4.2")
(version "1.5.0")
(source (origin
(method url-fetch)
(uri (string-append "https://github.com/syncthing/syncthing"
@ -40,7 +40,7 @@
"/syncthing-source-v" version ".tar.gz"))
(sha256
(base32
"16dqpbn4saxmmmqd5ya8zdkwvxzz4nim1p4w954zkkdz3cyg86h6"))
"1394b8y4nllihnjngc0kjpdy7pvyh6v1h09hkn8rdmwxpsdkqkjb"))
(modules '((guix build utils)))
;; Delete bundled ("vendored") free software source code.
(snippet '(begin
@ -77,7 +77,7 @@
("go-github-com-syndtr-goleveldb" ,go-github-com-syndtr-goleveldb)
("go-github-com-thejerf-suture" ,go-github-com-thejerf-suture)
("go-golang-org-x-time" ,go-golang-org-x-time)
("go-gopkg.in-ldap.v2" ,go-gopkg.in-ldap.v2)
("go-github-com-go-ldap-ldap" ,go-github-com-go-ldap-ldap)
("go-github-com-gogo-protobuf" ,go-github-com-gogo-protobuf)
("go-github-com-shirou-gopsutil" ,go-github-com-shirou-gopsutil)
("go-github-com-prometheus-client-golang"
@ -394,7 +394,7 @@ compression format.")
(define-public go-github-com-jackpal-gateway
(package
(name "go-github-com-jackpal-gateway")
(version "1.0.5")
(version "1.0.6")
(source (origin
(method git-fetch)
(uri (git-reference
@ -403,7 +403,7 @@ compression format.")
(file-name (git-file-name name version))
(sha256
(base32
"1ird5xmizj632l3dq24s2xgb8w1dn6v8xznlqz252gvngyr2gjl1"))))
"1yms2dw4dnz4cvj9vhwh6193d50jhvn5awsp2g3a4lcc3sjrgd6m"))))
(build-system go-build-system)
(arguments
`(#:import-path "github.com/jackpal/gateway"))
@ -942,60 +942,51 @@ server tools for Prometheus metrics.")
(home-page "https://github.com/prometheus/client_golang")
(license asl2.0)))
(define-public go-gopkg.in-asn1-ber.v1
(define-public go-github-com-go-asn1-ber-asn1-ber
(package
(name "go-gopkg.in-asn1-ber.v1")
(version "1.3")
(name "go-github-com-go-asn1-ber-asn1-ber")
(version "1.3.1")
(source (origin
(method git-fetch)
(uri (git-reference
(url "https://gopkg.in/asn1-ber.v1")
(url "https://github.com/go-asn1-ber/asn1-ber")
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
(base32
"00ixms8x3lrhywbvq5v2sagcqsxa1pcnlk17dp5lnwckv3xg4psb"))))
"0dxfmgk84fn0p6pz3i0cspynh6rly5pfk9wghm1q07mx99npln02"))))
(build-system go-build-system)
(arguments
'(#:import-path "gopkg.in/asn1-ber.v1"
;; Tests don't pass "vet" on Go since 1.11. See
;; https://github.com/go-asn1-ber/asn1-ber/issues/20.
#:phases
(modify-phases %standard-phases
(replace 'check
(lambda* (#:key import-path #:allow-other-keys)
(invoke "go" "test"
"-vet=off"
import-path))))))
'(#:import-path "github.com/go-asn1-ber/asn1-ber"))
(synopsis "ASN.1 BER encoding and decoding in Go")
(description "This package provides ASN.1 BER encoding and decoding in the
Go language.")
(home-page "https://gopkg.in/asn1-ber.v1")
(home-page "https://github.com/go-asn1-ber/asn1-ber")
(license expat)))
(define-public go-gopkg.in-ldap.v2
(define-public go-github-com-go-ldap-ldap
(package
(name "go-gopkg.in-ldap.v2")
(version "2.5.1")
(name "go-github-com-go-ldap-ldap")
(version "3.1.7")
(source (origin
(method git-fetch)
(uri (git-reference
(url "https://gopkg.in/ldap.v2")
(url "https://github.com/go-ldap/ldap")
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
(base32
"1wf81wy04nhkqs0dg5zkivr4sh37r83bxrfwjz9vr4jq6vmljr3h"))))
"1z6wxia7a1jkmasa9mm6g4n8f0qqbp5rw6vk0zyh4vzk7azklnj2"))))
(build-system go-build-system)
(arguments
'(#:import-path "gopkg.in/ldap.v2"
#:tests? #f)) ; the test suite requires network access
'(#:import-path "github.com/go-ldap/ldap/v3"
#:tests? #f)) ; test suite requires internet access
(propagated-inputs
`(("go-gopkg.in-asn1-ber.v1" ,go-gopkg.in-asn1-ber.v1)))
`(("go-github-com-go-asn1-ber-asn1-ber" ,go-github-com-go-asn1-ber-asn1-ber)))
(home-page "https://github.com/go-ldap/ldap")
(synopsis "LDAP v3 functionality for Go")
(description "This package provides basic LDAP v3 functionality in the Go
language.")
(home-page "https://gopkg.in/ldap.v2")
(license expat)))
(define-public go-github-com-flynn-archive-go-shlex

View File

@ -41,6 +41,7 @@
;;; Copyright © 2020 Vincent Legoll <vincent.legoll@gmail.com>
;;; Copyright © 2020 Guillaume Le Vaillant <glv@posteo.net>
;;; Copyright © 2020 Alex McGrath <amk@amk.ie>
;;; Copyright © 2020 Michael Rohleder <mike@rohleder.de>
;;;
;;; This file is part of GNU Guix.
;;;
@ -283,7 +284,7 @@ television and DVD. It is also known as AC-3.")
(define-public libaom
(package
(name "libaom")
(version "1.0.0-errata1-avif")
(version "2.0.0")
(source (origin
(method git-fetch)
(uri (git-reference
@ -292,7 +293,7 @@ television and DVD. It is also known as AC-3.")
(file-name (git-file-name name version))
(sha256
(base32
"169yfgh7zigc21h71qclfyr7s4wwp2i9vbr4z6pkabypvass4v7m"))))
"1616xjhj6770ykn82ml741h8hx44v507iky3s9h7a5lnk9d4cxzy"))))
(build-system cmake-build-system)
(native-inputs
`(("perl" ,perl)
@ -3019,15 +3020,15 @@ practically any type of media.")
(define-public libmediainfo
(package
(name "libmediainfo")
(version "0.7.95")
(version "20.03")
(source (origin
(method url-fetch)
(uri (string-append "https://mediaarea.net/download/source/"
name "/" version"/"
name "_" version ".tar.bz2"))
name "/" version "/"
name "_" version ".tar.xz"))
(sha256
(base32
"1kchh6285b07z5nixv619hc9gml2ysdayicdiv30frrlqiyxqw4b"))))
"0wkzj5s34m8dvy7hif4h8f90q8ncrzd930gij1zzw3h5nw732j38"))))
;; TODO add a Big Buck Bunny webm for tests.
(native-inputs
`(("autoconf" ,autoconf)
@ -3077,7 +3078,7 @@ MPEG-2, MPEG-4, DVD (VOB)...
(define-public mediainfo
(package
(name "mediainfo")
(version "18.12")
(version "20.03")
(source (origin
(method url-fetch)
;; Warning: This source has proved unreliable 1 time at least.
@ -3085,10 +3086,10 @@ MPEG-2, MPEG-4, DVD (VOB)...
;; happens again.
(uri (string-append "https://mediaarea.net/download/source/"
name "/" version "/"
name "_" version ".tar.bz2"))
name "_" version ".tar.xz"))
(sha256
(base32
"1ix95ilcjlawcq6phh25cgplm3riqa2ii7ql82g8yagqs4ldqp6a"))))
"1f1shnycf0f1fwka9k9s250l228xjkg0k4k73h8bpld8msighgnw"))))
(native-inputs
`(("autoconf" ,autoconf)
("automake" ,automake)
@ -3693,7 +3694,7 @@ transitions, and effects and then export your film to many common formats.")
(define-public dav1d
(package
(name "dav1d")
(version "0.6.0")
(version "0.7.0")
(source
(origin
(method url-fetch)
@ -3701,7 +3702,7 @@ transitions, and effects and then export your film to many common formats.")
"/dav1d/" version "/dav1d-" version ".tar.xz"))
(sha256
(base32
"0w5k572jzxp7zwdbsa0jgjzri6hsrkydawzzilrw46nxpcak37q9"))))
"0xcykraf42gkymzqx1k1lcdclgk9y5yf7rr56vslrgmr0r849qnk"))))
(build-system meson-build-system)
(native-inputs `(("nasm" ,nasm)))
(home-page "https://code.videolan.org/videolan/dav1d")

View File

@ -104,14 +104,14 @@
#:use-module (srfi srfi-1)
#:use-module (ice-9 match))
(define (qemu-patch commit file-name sha256)
(define (qemu-patch commit file-name sha256-bv)
"Return an origin for COMMIT."
(origin
(method url-fetch)
(uri (string-append
"http://git.qemu.org/?p=qemu.git;a=commitdiff_plain;h="
commit))
(sha256 sha256)
(hash (content-hash sha256-bv sha256))
(file-name file-name)))
(define-public qemu

View File

@ -12,6 +12,7 @@
;;; Copyright © 2019 Rutger Helling <rhelling@mykolab.com>
;;; Copyright © 2019 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2020 Brice Waegeneire <brice@waegenei.re>
;;; Copyright © 2020 Ryan Prior <rprior@protonmail.com>
;;;
;;; This file is part of GNU Guix.
;;;
@ -55,6 +56,7 @@
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages python)
#:use-module (gnu packages python-xyz)
#:use-module (gnu packages python-web)
#:use-module (gnu packages tls)
#:use-module (gnu packages xml))
@ -311,6 +313,40 @@ security protocol that utilizes SSL/TLS for key exchange. It is capable of
traversing network address translators (@dfn{NAT}s) and firewalls.")
(license license:gpl2)))
(define-public protonvpn-cli
(package
(name "protonvpn-cli")
(version "2.2.2")
(source
(origin
;; PyPI has a ".whl" file but not a proper source release.
;; Thus, fetch code from Git.
(method git-fetch)
(uri (git-reference
(url "https://github.com/ProtonVPN/linux-cli.git")
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
(base32
"0ixjb02kj4z79whm1izd8mrn2h0rp9cmw4im1qvp93rahqxdd4n8"))))
(build-system python-build-system)
(arguments '(#:tests? #f)) ; no tests in repo
(native-inputs
`(("docopt" ,python-docopt)))
(inputs
`(("pythondialog" ,python-pythondialog)
("requests" ,python-requests)))
(propagated-inputs
`(("openvpn" ,openvpn)))
(synopsis "Command-line client for ProtonVPN")
(description
"This is the official command-line interface for ProtonVPN, a secure
point-to-point virtual private networking (VPN) service with a gratis tier.
It can automatically find and connect to the fastest servers or use Tor over
VPN. The gratis tier offers unlimited bandwidth for up to 10 devices.")
(home-page "https://github.com/ProtonVPN/linux-cli")
(license license:gpl3+)))
(define-public tinc
(package
(name "tinc")

View File

@ -1268,14 +1268,14 @@ its size
(define-public polybar
(package
(name "polybar")
(version "3.4.2")
(version "3.4.3")
(source
(origin
(method url-fetch)
(uri (string-append "https://github.com/polybar/polybar/releases/"
"download/" version "/polybar-" version ".tar"))
(sha256
(base32 "0fmnviz4b01aw50nkv4yibm8ykc5ff860ynw3xb1ymlsjrvwj8jd"))))
(base32 "0bw22qvbcdvyd0qv3ax48r34rnclbbb6dyb8h8zljq1r3lf15vfl"))))
(build-system cmake-build-system)
(arguments
;; Test is disabled because it requires downloading googletest from the

View File

@ -14,7 +14,7 @@
;;; Copyright © 2016, 2017, 2018, 2019 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2016 Leo Famulari <leo@famulari.name>
;;; Copyright © 2016 Alex Kost <alezost@gmail.com>
;;; Copyright © 2016, 2017, 2019 Marius Bakke <mbakke@fastmail.com>
;;; Copyright © 2016, 2017, 2019, 2020 Marius Bakke <mbakke@fastmail.com>
;;; Copyright © 2016 Petter <petter@mykolab.ch>
;;; Copyright © 2017 Mekeor Melire <mekeor.melire@gmail.com>
;;; Copyright © 2017 Nikita <nikita@n0.is>
@ -1150,6 +1150,50 @@ the X.Org X Server version 1.7 and later (X11R7.5 or later).")
(base32
"1fi27b73x85qqar526dbd33av7mahca2ykaqwr7siqiw1qqcby6j"))))
(build-system gnu-build-system)
(arguments
`(#:imported-modules (,@%gnu-build-system-modules
(guix build python-build-system))
#:phases
(modify-phases %standard-phases
(add-after 'install 'split-outputs
(lambda* (#:key outputs #:allow-other-keys)
(let ((out (assoc-ref outputs "out"))
(gtk (assoc-ref outputs "gtk"))
(desktop-file "/share/applications/redshift-gtk.desktop"))
(mkdir-p (string-append gtk "/bin"))
(link (string-append out "/bin/redshift-gtk")
(string-append gtk "/bin/redshift-gtk"))
(delete-file (string-append out "/bin/redshift-gtk"))
(copy-recursively (string-append out "/lib")
(string-append gtk "/lib"))
(delete-file-recursively (string-append out "/lib"))
(mkdir-p (string-append gtk "/share/applications"))
(link (string-append out desktop-file)
(string-append gtk desktop-file))
(delete-file (string-append out desktop-file))
(with-directory-excursion (string-append out "/share")
(for-each (lambda (dir)
(copy-recursively
(string-append out "/share/" dir)
(string-append gtk "/share/" dir))
(delete-file-recursively dir))
'("appdata" "icons")))
#t)))
(add-after 'split-outputs 'wrap
(lambda* (#:key inputs outputs #:allow-other-keys)
(let* ((gtk (assoc-ref outputs "gtk"))
(python-version
(@ (guix build python-build-system) python-version))
(python (assoc-ref inputs "python"))
(sitedir (string-append gtk "/lib/python"
(python-version python)
"/site-packages")))
(wrap-program (string-append gtk "/bin/redshift-gtk")
`("PYTHONPATH" ":" prefix
(,(string-append sitedir ":" (getenv "PYTHONPATH"))))
`("GI_TYPELIB_PATH" ":" prefix (,(getenv "GI_TYPELIB_PATH"))))
#t))))))
(outputs '("out" "gtk"))
(native-inputs
`(("pkg-config" ,pkg-config)
("intltool" ,intltool)))
@ -1158,7 +1202,13 @@ the X.Org X Server version 1.7 and later (X11R7.5 or later).")
("libx11" ,libx11)
("libxcb" ,libxcb)
("libxxf86vm" ,libxxf86vm)
("glib" ,glib))) ; for Geoclue2 support
("glib" ,glib) ;for Geoclue2 support
;; To build the GTK3 GUI, we need these.
("gtk+" ,gtk+)
("python" ,python)
("python-pygobject" ,python-pygobject)
("python-pyxdg" ,python-pyxdg)))
(home-page "https://github.com/jonls/redshift")
(synopsis "Adjust the color temperature of your screen")
(description
@ -1186,6 +1236,24 @@ color temperature should be set to match the lamps in your room.")
(base32
"0nbkcw3avmzjg1jr1g9yfpm80kzisy55idl09b6wvzv2sz27n957"))))
(build-system gnu-build-system)
(arguments
'(#:phases (modify-phases %standard-phases
(add-after 'install 'create-desktop-file
(lambda* (#:key outputs #:allow-other-keys)
;; For the GeoClue provider to work, a .desktop file
;; needs to be provided. A template is available,
;; but it only gets installed when the GUI is enabled.
;; Install it manually for this Wayland variant.
(let* ((out (assoc-ref outputs "out"))
(desktop-file
(string-append
out "/share/applications/redshift.desktop")))
(mkdir-p (dirname desktop-file))
(copy-file "data/applications/redshift.desktop.in"
desktop-file)
(substitute* desktop-file
(("^_") ""))
#t))))))
(native-inputs
`(("autoconf" ,autoconf)
("automake" ,automake)

View File

@ -1036,29 +1036,12 @@ with the administrator's password."
(match-record enlightenment-desktop-configuration
<enlightenment-desktop-configuration>
(enlightenment)
(let ((module-arch (match (string-tokenize (%current-system)
(char-set-complement (char-set #\-)))
((arch "linux") (string-append "linux-gnu-" arch))
((arch "gnu") (string-append "gnu-" arch)))))
(list (file-append enlightenment
"/lib/enlightenment/utils/enlightenment_sys")
(file-append enlightenment
"/lib/enlightenment/utils/enlightenment_backlight")
;; TODO: Move this binary to a screen-locker service.
(file-append enlightenment
"/lib/enlightenment/utils/enlightenment_ckpasswd")
(file-append enlightenment
(string-append
"/lib/enlightenment/modules/cpufreq/"
module-arch "-"
(package-version enlightenment)
"/freqset"))
(file-append enlightenment
(string-append
"/lib/enlightenment/modules/sysinfo/"
module-arch "-"
(package-version enlightenment)
"/cpuclock_sysfs"))))))
(list (file-append enlightenment
"/lib/enlightenment/utils/enlightenment_sys")
(file-append enlightenment
"/lib/enlightenment/utils/enlightenment_system")
(file-append enlightenment
"/lib/enlightenment/utils/enlightenment_ckpasswd"))))
(define enlightenment-desktop-service-type
(service-type

View File

@ -73,6 +73,7 @@
channel-instances->manifest
%channel-profile-hooks
channel-instances->derivation
ensure-forward-channel-update
profile-channels
@ -212,15 +213,18 @@ result is unspecified."
(loop rest)))))
(define* (latest-channel-instance store channel
#:key (patches %patches))
"Return the latest channel instance for CHANNEL."
#:key (patches %patches)
starting-commit)
"Return two values: the latest channel instance for CHANNEL, and its
relation to STARTING-COMMIT when provided."
(define (dot-git? file stat)
(and (string=? (basename file) ".git")
(eq? 'directory (stat:type stat))))
(let-values (((checkout commit)
(let-values (((checkout commit relation)
(update-cached-checkout (channel-url channel)
#:ref (channel-reference channel))))
#:ref (channel-reference channel)
#:starting-commit starting-commit)))
(when (guix-channel? channel)
;; Apply the relevant subset of PATCHES directly in CHECKOUT. This is
;; safe to do because 'switch-to-ref' eventually does a hard reset.
@ -229,12 +233,55 @@ result is unspecified."
(let* ((name (url+commit->name (channel-url channel) commit))
(checkout (add-to-store store name #t "sha256" checkout
#:select? (negate dot-git?))))
(channel-instance channel commit checkout))))
(values (channel-instance channel commit checkout)
relation))))
(define* (latest-channel-instances store channels #:optional (previous-channels '()))
(define (ensure-forward-channel-update channel start instance relation)
"Raise an error if RELATION is not 'ancestor, meaning that START is not an
ancestor of the commit in INSTANCE, unless CHANNEL specifies a commit.
This procedure implements a channel update policy meant to be used as a
#:validate-pull argument."
(match relation
('ancestor #t)
('self #t)
(_
(raise (make-compound-condition
(condition
(&message (message
(format #f (G_ "\
aborting update of channel '~a' to commit ~a, which is not a descendant of ~a")
(channel-name channel)
(channel-instance-commit instance)
start))))
;; If the user asked for a specific commit, they might want
;; that to happen nevertheless, so tell them about the
;; relevant 'guix pull' option.
(if (channel-commit channel)
(condition
(&fix-hint
(hint (G_ "Use @option{--allow-downgrades} to force
this downgrade."))))
(condition
(&fix-hint
(hint (G_ "This could indicate that the channel has
been tampered with and is trying to force a roll-back, preventing you from
getting the latest updates. If you think this is not the case, explicitly
allow non-forward updates."))))))))))
(define* (latest-channel-instances store channels
#:key
(current-channels '())
(validate-pull
ensure-forward-channel-update))
"Return a list of channel instances corresponding to the latest checkouts of
CHANNELS and the channels on which they depend. PREVIOUS-CHANNELS is a list
of previously processed channels."
CHANNELS and the channels on which they depend.
CURRENT-CHANNELS is the list of currently used channels. It is compared
against the newly-fetched instances of CHANNELS, and VALIDATE-PULL is called
for each channel update and can choose to emit warnings or raise an error,
depending on the policy it implements."
;; Only process channels that are unique, or that are more specific than a
;; previous channel specification.
(define (ignore? channel others)
@ -245,38 +292,53 @@ of previously processed channels."
(not (or (channel-commit a)
(channel-commit b))))))))
;; Accumulate a list of instances. A list of processed channels is also
;; accumulated to decide on duplicate channel specifications.
(define-values (resulting-channels instances)
(fold2 (lambda (channel previous-channels instances)
(if (ignore? channel previous-channels)
(values previous-channels instances)
(begin
(format (current-error-port)
(G_ "Updating channel '~a' from Git repository at '~a'...~%")
(channel-name channel)
(channel-url channel))
(let ((instance (latest-channel-instance store channel)))
(let-values (((new-instances new-channels)
(latest-channel-instances
store
(channel-instance-dependencies instance)
previous-channels)))
(values (append (cons channel new-channels)
previous-channels)
(append (cons instance new-instances)
instances)))))))
previous-channels
'() ;instances
channels))
(define (current-commit name)
;; Return the current commit for channel NAME.
(any (lambda (channel)
(and (eq? (channel-name channel) name)
(channel-commit channel)))
current-channels))
(let ((instance-name (compose channel-name channel-instance-channel)))
;; Remove all earlier channel specifications if they are followed by a
;; more specific one.
(values (delete-duplicates instances
(lambda (a b)
(eq? (instance-name a) (instance-name b))))
resulting-channels)))
(let loop ((channels channels)
(previous-channels '()))
;; Accumulate a list of instances. A list of processed channels is also
;; accumulated to decide on duplicate channel specifications.
(define-values (resulting-channels instances)
(fold2 (lambda (channel previous-channels instances)
(if (ignore? channel previous-channels)
(values previous-channels instances)
(begin
(format (current-error-port)
(G_ "Updating channel '~a' from Git repository at '~a'...~%")
(channel-name channel)
(channel-url channel))
(let*-values (((current)
(current-commit (channel-name channel)))
((instance relation)
(latest-channel-instance store channel
#:starting-commit
current)))
(when relation
(validate-pull channel current instance relation))
(let-values (((new-instances new-channels)
(loop (channel-instance-dependencies instance)
previous-channels)))
(values (append (cons channel new-channels)
previous-channels)
(append (cons instance new-instances)
instances)))))))
previous-channels
'() ;instances
channels))
(let ((instance-name (compose channel-name channel-instance-channel)))
;; Remove all earlier channel specifications if they are followed by a
;; more specific one.
(values (delete-duplicates instances
(lambda (a b)
(eq? (instance-name a) (instance-name b))))
resulting-channels))))
(define* (checkout->channel-instance checkout
#:key commit
@ -618,10 +680,20 @@ channel instances."
(define latest-channel-instances*
(store-lift latest-channel-instances))
(define* (latest-channel-derivation #:optional (channels %default-channels))
(define* (latest-channel-derivation #:optional (channels %default-channels)
#:key
(current-channels '())
(validate-pull
ensure-forward-channel-update))
"Return as a monadic value the derivation that builds the profile for the
latest instances of CHANNELS."
(mlet %store-monad ((instances (latest-channel-instances* channels)))
latest instances of CHANNELS. CURRENT-CHANNELS and VALIDATE-PULL are passed
to 'latest-channel-instances'."
(mlet %store-monad ((instances
(latest-channel-instances* channels
#:current-channels
current-channels
#:validate-pull
validate-pull)))
(channel-instances->derivation instances)))
(define (profile-channels profile)

View File

@ -43,6 +43,7 @@
url+commit->name
latest-repository-commit
commit-difference
commit-relation
git-checkout
git-checkout?
@ -261,14 +262,16 @@ definitely available in REPOSITORY, false otherwise."
#:key
(ref '(branch . "master"))
recursive?
starting-commit
(log-port (%make-void-port "w"))
(cache-directory
(url-cache-directory
url (%repository-cache-directory)
#:recursive? recursive?)))
"Update the cached checkout of URL to REF in CACHE-DIRECTORY. Return two
"Update the cached checkout of URL to REF in CACHE-DIRECTORY. Return three
values: the cache directory name, and the SHA1 commit (a string) corresponding
to REF.
to REF, and the relation of the new commit relative to STARTING-COMMIT (if
provided) as returned by 'commit-relation'.
REF is pair whose key is [branch | commit | tag | tag-or-commit ] and value
the associated data: [<branch name> | <sha1> | <tag name> | <string>].
@ -301,7 +304,17 @@ When RECURSIVE? is true, check out submodules as well, if any."
(remote-fetch (remote-lookup repository "origin"))))
(when recursive?
(update-submodules repository #:log-port log-port))
(let ((oid (switch-to-ref repository canonical-ref)))
;; Note: call 'commit-relation' from here because it's more efficient
;; than letting users re-open the checkout later on.
(let* ((oid (switch-to-ref repository canonical-ref))
(new (and starting-commit
(commit-lookup repository oid)))
(old (and starting-commit
(commit-lookup repository
(string->oid starting-commit))))
(relation (and starting-commit
(commit-relation old new))))
;; Reclaim file descriptors and memory mappings associated with
;; REPOSITORY as soon as possible.
@ -309,7 +322,7 @@ When RECURSIVE? is true, check out submodules as well, if any."
'repository-close!)
(repository-close! repository))
(values cache-directory (oid->string oid))))))
(values cache-directory (oid->string oid) relation)))))
(define* (latest-repository-commit store url
#:key
@ -342,7 +355,7 @@ Log progress and checkout info to LOG-PORT."
(format log-port "updating checkout of '~a'...~%" url)
(let*-values
(((checkout commit)
(((checkout commit _)
(update-cached-checkout url
#:recursive? recursive?
#:ref ref
@ -405,6 +418,21 @@ that of OLD."
(cons head result)
(set-insert head visited)))))))
(define (commit-relation old new)
"Return a symbol denoting the relation between OLD and NEW, two commit
objects: 'ancestor (meaning that OLD is an ancestor of NEW), 'descendant, or
'unrelated, or 'self (OLD and NEW are the same commit)."
(if (eq? old new)
'self
(let ((newest (commit-closure new)))
(if (set-contains? newest old)
'ancestor
(let* ((seen (list->setq (commit-parents new)))
(oldest (commit-closure old seen)))
(if (set-contains? oldest new)
'descendant
'unrelated))))))
;;;
;;; Checkouts.

View File

@ -115,7 +115,7 @@
(define (get-opam-repository)
"Update or fetch the latest version of the opam repository and return the
path to the repository."
(receive (location commit)
(receive (location commit _)
(update-cached-checkout "https://github.com/ocaml/opam-repository")
location))

View File

@ -24,7 +24,7 @@
(define-module (guix import utils)
#:use-module (guix base32)
#:use-module ((guix build download) #:prefix build:)
#:use-module (gcrypt hash)
#:use-module ((gcrypt hash) #:hide (sha256))
#:use-module (guix http-client)
#:use-module ((guix licenses) #:prefix license:)
#:use-module (guix utils)

View File

@ -1154,15 +1154,18 @@ try again later")
((? origin? origin)
;; Since "save" origins are not supported for non-VCS source, all
;; we can do is tell whether a given tarball is available or not.
(if (origin-sha256 origin) ;XXX: for ungoogled-chromium
(match (lookup-content (origin-sha256 origin) "sha256")
(#f
(list (make-warning package
(G_ "source not archived on Software \
(if (origin-hash origin) ;XXX: for ungoogled-chromium
(let ((hash (origin-hash origin)))
(match (lookup-content (content-hash-value hash)
(symbol->string
(content-hash-algorithm hash)))
(#f
(list (make-warning package
(G_ "source not archived on Software \
Heritage")
#:field 'source)))
((? content?)
'()))
#:field 'source)))
((? content?)
'())))
'()))))
(match-lambda*
((key url method response)

View File

@ -28,12 +28,15 @@
#:use-module (guix monads)
#:use-module (guix gexp)
#:use-module (guix base32)
#:autoload (guix base64) (base64-decode)
#:use-module (guix grafts)
#:use-module (guix derivations)
#:use-module (guix memoization)
#:use-module (guix build-system)
#:use-module (guix search-paths)
#:use-module (guix sets)
#:use-module (guix deprecation)
#:use-module (guix i18n)
#:use-module (ice-9 match)
#:use-module (ice-9 vlist)
#:use-module (ice-9 regex)
@ -43,16 +46,23 @@
#:use-module (srfi srfi-26)
#:use-module (srfi srfi-34)
#:use-module (srfi srfi-35)
#:use-module (rnrs bytevectors)
#:use-module (web uri)
#:re-export (%current-system
%current-target-system
search-path-specification) ;for convenience
#:export (origin
#:export (content-hash
content-hash?
content-hash-algorithm
content-hash-value
origin
origin?
this-origin
origin-uri
origin-method
origin-sha256
origin-hash
origin-sha256 ;deprecated
origin-file-name
origin-actual-file-name
origin-patches
@ -62,6 +72,7 @@
origin-snippet
origin-modules
base32
base64
package
package?
@ -155,15 +166,79 @@
;;;
;;; Code:
;; Crytographic content hash.
(define-immutable-record-type <content-hash>
(%content-hash algorithm value)
content-hash?
(algorithm content-hash-algorithm) ;symbol
(value content-hash-value)) ;bytevector
(define-syntax-rule (define-content-hash-constructor name
(algorithm size) ...)
"Define NAME as a <content-hash> constructor that ensures that (1) its
second argument is among the listed ALGORITHM, and (2), when possible, that
its first argument has the right size for the chosen algorithm."
(define-syntax name
(lambda (s)
(syntax-case s (algorithm ...)
((_ bv algorithm)
(let ((bv* (syntax->datum #'bv)))
(when (and (bytevector? bv*)
(not (= size (bytevector-length bv*))))
(syntax-violation 'content-hash "invalid content hash length" s))
#'(%content-hash 'algorithm bv)))
...))))
(define-content-hash-constructor build-content-hash
(sha256 32)
(sha512 64))
(define-syntax content-hash
(lambda (s)
"Return a content hash with the given parameters. The default hash
algorithm is sha256. If the first argument is a literal string, it is decoded
as base32. Otherwise, it must be a bytevector."
;; What we'd really want here is something like C++ 'constexpr'.
(syntax-case s ()
((_ str)
(string? (syntax->datum #'str))
#'(content-hash str sha256))
((_ str algorithm)
(string? (syntax->datum #'str))
(with-syntax ((bv (base32 (syntax->datum #'str))))
#'(content-hash bv algorithm)))
((_ (id str) algorithm)
(and (string? (syntax->datum #'str))
(free-identifier=? #'id #'base32))
(with-syntax ((bv (nix-base32-string->bytevector (syntax->datum #'str))))
#'(content-hash bv algorithm)))
((_ (id str) algorithm)
(and (string? (syntax->datum #'str))
(free-identifier=? #'id #'base64))
(with-syntax ((bv (base64-decode (syntax->datum #'str))))
#'(content-hash bv algorithm)))
((_ bv)
#'(content-hash bv sha256))
((_ bv hash)
#'(build-content-hash bv hash)))))
(define (print-content-hash hash port)
(format port "#<content-hash ~a:~a>"
(content-hash-algorithm hash)
(bytevector->nix-base32-string (content-hash-value hash))))
(set-record-type-printer! <content-hash> print-content-hash)
;; The source of a package, such as a tarball URL and fetcher---called
;; "origin" to avoid name clash with `package-source', `source', etc.
(define-record-type* <origin>
origin make-origin
%origin make-origin
origin?
this-origin
(uri origin-uri) ; string
(method origin-method) ; procedure
(sha256 origin-sha256) ; bytevector
(hash origin-hash) ; <content-hash>
(file-name origin-file-name (default #f)) ; optional file name
;; Patches are delayed so that the 'search-patch' calls are made lazily,
@ -186,30 +261,60 @@
(patch-guile origin-patch-guile ; package or #f
(default #f)))
(define-syntax origin-compatibility-helper
(syntax-rules (sha256)
((_ () (fields ...))
(%origin fields ...))
((_ ((sha256 exp) rest ...) (others ...))
(%origin others ...
(hash (content-hash exp sha256))
rest ...))
((_ (field rest ...) (others ...))
(origin-compatibility-helper (rest ...)
(others ... field)))))
(define-syntax-rule (origin fields ...)
"Build an <origin> record, automatically converting 'sha256' field
specifications to 'hash'."
(origin-compatibility-helper (fields ...) ()))
(define-deprecated (origin-sha256 origin)
origin-hash
(let ((hash (origin-hash origin)))
(unless (eq? (content-hash-algorithm hash) 'sha256)
(raise (condition (&message
(message (G_ "no SHA256 hash for origin"))))))
(content-hash-value hash)))
(define (print-origin origin port)
"Write a concise representation of ORIGIN to PORT."
(match origin
(($ <origin> uri method sha256 file-name patches)
(($ <origin> uri method hash file-name patches)
(simple-format port "#<origin ~s ~a ~s ~a>"
uri (bytevector->base32-string sha256)
uri hash
(force patches)
(number->string (object-address origin) 16)))))
(set-record-type-printer! <origin> print-origin)
(define-syntax base32
(lambda (s)
"Return the bytevector corresponding to the given Nix-base32
(define-syntax-rule (define-compile-time-decoder name string->bytevector)
"Define NAME as a macro that runs STRING->BYTEVECTOR at macro expansion time
if possible."
(define-syntax name
(lambda (s)
"Return the bytevector corresponding to the given textual
representation."
(syntax-case s ()
((_ str)
(string? (syntax->datum #'str))
;; A literal string: do the conversion at expansion time.
(with-syntax ((bv (nix-base32-string->bytevector
(syntax->datum #'str))))
#''bv))
((_ str)
#'(nix-base32-string->bytevector str)))))
(syntax-case s ()
((_ str)
(string? (syntax->datum #'str))
;; A literal string: do the conversion at expansion time.
(with-syntax ((bv (string->bytevector (syntax->datum #'str))))
#''bv))
((_ str)
#'(string->bytevector str))))))
(define-compile-time-decoder base32 nix-base32-string->bytevector)
(define-compile-time-decoder base64 base64-decode)
(define (origin-actual-file-name origin)
"Return the file name of ORIGIN, either its 'file-name' field or the file
@ -231,6 +336,7 @@ name of its URI."
;; git, svn, cvs, etc. reference
#f))))
(define %supported-systems
;; This is the list of system types that are supported. By default, we
;; expect all packages to build successfully here.
@ -1381,14 +1487,19 @@ unless you know what you are doing."
#:optional (system (%current-system)))
"Return the derivation corresponding to ORIGIN."
(match origin
(($ <origin> uri method sha256 name (= force ()) #f)
(($ <origin> uri method hash name (= force ()) #f)
;; No patches, no snippet: this is a fixed-output derivation.
(method uri 'sha256 sha256 name #:system system))
(($ <origin> uri method sha256 name (= force (patches ...)) snippet
(method uri
(content-hash-algorithm hash)
(content-hash-value hash)
name #:system system))
(($ <origin> uri method hash name (= force (patches ...)) snippet
(flags ...) inputs (modules ...) guile-for-build)
;; Patches and/or a snippet.
(mlet %store-monad ((source (method uri 'sha256 sha256 name
#:system system))
(mlet %store-monad ((source (method uri
(content-hash-algorithm hash)
(content-hash-value hash)
name #:system system))
(guile (package->derivation (or guile-for-build
(default-guile))
system

View File

@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2012, 2013, 2015, 2016, 2017 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2012, 2013, 2015, 2016, 2017, 2020 Ludovic Courtès <ludo@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;
@ -23,6 +23,7 @@
#:use-module (gcrypt hash)
#:use-module (guix base16)
#:use-module (guix base32)
#:autoload (guix base64) (base64-encode)
#:use-module ((guix download) #:hide (url-fetch))
#:use-module ((guix build download)
#:select (url-fetch))
@ -77,18 +78,22 @@
(define %default-options
;; Alist of default option values.
`((format . ,bytevector->nix-base32-string)
(hash-algorithm . ,(hash-algorithm sha256))
(verify-certificate? . #t)
(download-proc . ,download-to-store*)))
(define (show-help)
(display (G_ "Usage: guix download [OPTION] URL
Download the file at URL to the store or to the given file, and print its
file name and the hash of its contents.
Supported formats: 'nix-base32' (default), 'base32', and 'base16'
('hex' and 'hexadecimal' can be used as well).\n"))
file name and the hash of its contents.\n"))
(newline)
(display (G_ "\
Supported formats: 'base64', 'nix-base32' (default), 'base32',
and 'base16' ('hex' and 'hexadecimal' can be used as well).\n"))
(format #t (G_ "
-f, --format=FMT write the hash in the given format"))
(format #t (G_ "
-H, --hash=ALGORITHM use the given hash ALGORITHM"))
(format #t (G_ "
--no-check-certificate
do not validate the certificate of HTTPS servers "))
@ -108,6 +113,8 @@ Supported formats: 'nix-base32' (default), 'base32', and 'base16'
(lambda (opt name arg result)
(define fmt-proc
(match arg
("base64"
base64-encode)
("nix-base32"
bytevector->nix-base32-string)
("base32"
@ -119,6 +126,13 @@ Supported formats: 'nix-base32' (default), 'base32', and 'base16'
(alist-cons 'format fmt-proc
(alist-delete 'format result))))
(option '(#\H "hash") #t #f
(lambda (opt name arg result)
(match (lookup-hash-algorithm (string->symbol arg))
(#f
(leave (G_ "~a: unknown hash algorithm~%") arg))
(algo
(alist-cons 'hash-algorithm algo result)))))
(option '("no-check-certificate") #f #f
(lambda (opt name arg result)
(alist-cons 'verify-certificate? #f result)))
@ -175,7 +189,7 @@ Supported formats: 'nix-base32' (default), 'base32', and 'base16'
(or path
(leave (G_ "~a: download failed~%")
arg))
port-sha256))
(cute port-hash (assoc-ref opts 'hash-algorithm) <>)))
(fmt (assq-ref opts 'format)))
(format #t "~a~%~a~%" path (fmt hash))
#t)))

View File

@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2012, 2013, 2014, 2016, 2017 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2012, 2013, 2014, 2016, 2017, 2020 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2013 Nikita Karetnikov <nikita@karetnikov.org>
;;; Copyright © 2016 Jan Nieuwenhuizen <janneke@gnu.org>
;;; Copyright © 2018 Tim Gesthuizen <tim.gesthuizen@yahoo.de>
@ -20,12 +20,13 @@
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
(define-module (guix scripts hash)
#:use-module (guix base32)
#:use-module (gcrypt hash)
#:use-module (guix serialization)
#:use-module (guix ui)
#:use-module (guix scripts)
#:use-module (guix base16)
#:use-module (guix base32)
#:autoload (guix base64) (base64-encode)
#:use-module (ice-9 binary-ports)
#:use-module (rnrs files)
#:use-module (ice-9 match)
@ -42,17 +43,21 @@
(define %default-options
;; Alist of default option values.
`((format . ,bytevector->nix-base32-string)))
`((format . ,bytevector->nix-base32-string)
(hash-algorithm . ,(hash-algorithm sha256))))
(define (show-help)
(display (G_ "Usage: guix hash [OPTION] FILE
Return the cryptographic hash of FILE.
Supported formats: 'nix-base32' (default), 'base32', and 'base16' ('hex'
and 'hexadecimal' can be used as well).\n"))
Return the cryptographic hash of FILE.\n"))
(newline)
(display (G_ "\
Supported formats: 'base64', 'nix-base32' (default), 'base32',
and 'base16' ('hex' and 'hexadecimal' can be used as well).\n"))
(format #t (G_ "
-x, --exclude-vcs exclude version control directories"))
(format #t (G_ "
-H, --hash=ALGORITHM use the given hash ALGORITHM"))
(format #t (G_ "
-f, --format=FMT write the hash in the given format"))
(format #t (G_ "
-r, --recursive compute the hash on FILE recursively"))
@ -69,10 +74,19 @@ and 'hexadecimal' can be used as well).\n"))
(list (option '(#\x "exclude-vcs") #f #f
(lambda (opt name arg result)
(alist-cons 'exclude-vcs? #t result)))
(option '(#\H "hash") #t #f
(lambda (opt name arg result)
(match (lookup-hash-algorithm (string->symbol arg))
(#f
(leave (G_ "~a: unknown hash algorithm~%") arg))
(algo
(alist-cons 'hash-algorithm algo result)))))
(option '(#\f "format") #t #f
(lambda (opt name arg result)
(define fmt-proc
(match arg
("base64"
base64-encode)
("nix-base32"
bytevector->nix-base32-string)
("base32"
@ -139,8 +153,11 @@ and 'hexadecimal' can be used as well).\n"))
(force-output port)
(get-hash))
(match file
("-" (port-sha256 (current-input-port)))
(_ (call-with-input-file file port-sha256))))))
("-" (port-hash (assoc-ref opts 'hash-algorithm)
(current-input-port)))
(_ (call-with-input-file file
(cute port-hash (assoc-ref opts 'hash-algorithm)
<>)))))))
(match args
((file)

View File

@ -675,12 +675,13 @@ doesn't need it."
(define (process-query opts)
"Process any query specified by OPTS. Return #t when a query was actually
processed, #f otherwise."
(let* ((profiles (match (filter-map (match-lambda
(('profile . p) p)
(_ #f))
opts)
(() (list %current-profile))
(lst (reverse lst))))
(let* ((profiles (delete-duplicates
(match (filter-map (match-lambda
(('profile . p) p)
(_ #f))
opts)
(() (list %current-profile))
(lst (reverse lst)))))
(profile (match profiles
((head tail ...) head))))
(match (assoc-ref opts 'query)
@ -718,7 +719,8 @@ processed, #f otherwise."
(('list-installed regexp)
(let* ((regexp (and regexp (make-regexp* regexp regexp/icase)))
(manifest (profile-manifest profile))
(manifest (concatenate-manifests
(map profile-manifest profiles)))
(installed (manifest-entries manifest)))
(leave-on-EPIPE
(for-each (match-lambda
@ -729,8 +731,8 @@ processed, #f otherwise."
name (or version "?") output path))))
;; Show most recently installed packages last.
(reverse installed)))
#t))
(reverse installed))))
#t)
(('list-available regexp)
(let* ((regexp (and regexp (make-regexp* regexp regexp/icase)))

View File

@ -81,7 +81,8 @@
(multiplexed-build-output? . #t)
(graft? . #t)
(debug . 0)
(verbosity . 1)))
(verbosity . 1)
(validate-pull . ,ensure-forward-channel-update)))
(define (show-help)
(display (G_ "Usage: guix pull [OPTION]...
@ -94,6 +95,8 @@ Download and deploy the latest version of Guix.\n"))
--commit=COMMIT download the specified COMMIT"))
(display (G_ "
--branch=BRANCH download the tip of the specified BRANCH"))
(display (G_ "
--allow-downgrades allow downgrades to earlier channel revisions"))
(display (G_ "
-N, --news display news compared to the previous generation"))
(display (G_ "
@ -158,6 +161,10 @@ Download and deploy the latest version of Guix.\n"))
(option '("branch") #t #f
(lambda (opt name arg result)
(alist-cons 'ref `(branch . ,arg) result)))
(option '("allow-downgrades") #f #f
(lambda (opt name arg result)
(alist-cons 'validate-pull warn-about-backward-updates
result)))
(option '(#\p "profile") #t #f
(lambda (opt name arg result)
(alist-cons 'profile (canonicalize-profile arg)
@ -188,6 +195,21 @@ Download and deploy the latest version of Guix.\n"))
%standard-build-options))
(define (warn-about-backward-updates channel start instance relation)
"Warn about non-forward updates of CHANNEL from START to INSTANCE, without
aborting."
(match relation
((or 'ancestor 'self)
#t)
('descendant
(warning (G_ "rolling back channel '~a' from ~a to ~a~%")
(channel-name channel) start
(channel-instance-commit instance)))
('unrelated
(warning (G_ "moving channel '~a' from ~a to unrelated commit ~a~%")
(channel-name channel) start
(channel-instance-commit instance)))))
(define* (display-profile-news profile #:key concise?
current-is-newer?)
"Display what's up in PROFILE--new packages, and all that. If
@ -749,7 +771,9 @@ Use '~/.config/guix/channels.scm' instead."))
(substitutes? (assoc-ref opts 'substitutes?))
(dry-run? (assoc-ref opts 'dry-run?))
(channels (channel-list opts))
(profile (or (assoc-ref opts 'profile) %current-profile)))
(profile (or (assoc-ref opts 'profile) %current-profile))
(current-channels (profile-channels profile))
(validate-pull (assoc-ref opts 'validate-pull)))
(cond ((assoc-ref opts 'query)
(process-query opts profile))
((assoc-ref opts 'generation)
@ -766,7 +790,12 @@ Use '~/.config/guix/channels.scm' instead."))
(ensure-default-profile)
(honor-x509-certificates store)
(let ((instances (latest-channel-instances store channels)))
(let ((instances
(latest-channel-instances store channels
#:current-channels
current-channels
#:validate-pull
validate-pull)))
(format (current-error-port)
(N_ "Building from this channel:~%"
"Building from these channels:~%"

View File

@ -26,7 +26,7 @@
#:use-module (guix monads)
#:use-module ((guix utils) #:select (substitute-keyword-arguments))
#:use-module ((guix build utils) #:select (mkdir-p))
#:use-module (gcrypt hash)
#:use-module ((gcrypt hash) #:hide (sha256))
#:use-module (guix build-system gnu)
#:use-module (gnu packages base)
#:use-module (gnu packages bootstrap)

View File

@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2015 Alex Kost <alezost@gmail.com>
;;; Copyright © 2019 Ricardo Wurmus <rekado@elephly.net>
;;;
@ -441,7 +441,8 @@ new version string if an update was made, and #f otherwise."
(if version-loc
(let* ((loc (package-location package))
(old-version (package-version package))
(old-hash (origin-sha256 (package-source package)))
(old-hash (content-hash-value
(origin-hash (package-source package))))
(old-url (match (origin-uri (package-source package))
((? string? url) url)
(_ #f)))

View File

@ -175,6 +175,7 @@ etc/guix-%.service: etc/guix-%.service.in \
"$<" > "$@.tmp"; \
mv "$@.tmp" "$@"
# The service script for sysvinit.
sysvinitservicedir = $(sysconfdir)/init.d
nodist_sysvinitservice_DATA = etc/init.d/guix-daemon

View File

@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2015, 2017, 2019 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2015, 2017, 2019, 2020 Ludovic Courtès <ludo@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;
@ -19,7 +19,7 @@
(define-module (test-challenge)
#:use-module (guix tests)
#:use-module (guix tests http)
#:use-module (gcrypt hash)
#:use-module ((gcrypt hash) #:prefix gcrypt:)
#:use-module (guix store)
#:use-module (guix monads)
#:use-module (guix derivations)
@ -135,7 +135,7 @@
(mlet* %store-monad ((drv (gexp->derivation "something"
#~(list #$output #$text)))
(out -> (derivation->output-path drv))
(hash -> (sha256 #vu8())))
(hash -> (gcrypt:sha256 #vu8())))
(with-derivation-narinfo* drv (sha256 => hash)
(>>= (compare-contents (list out) (%test-substitute-urls))
(match-lambda

View File

@ -37,6 +37,7 @@
#:use-module (srfi srfi-34)
#:use-module (srfi srfi-35)
#:use-module (srfi srfi-64)
#:use-module (ice-9 control)
#:use-module (ice-9 match))
(test-begin "channels")
@ -136,11 +137,11 @@
(url "test")))
(test-dir (channel-instance-checkout instance--simple)))
(mock ((guix git) update-cached-checkout
(lambda* (url #:key ref)
(lambda* (url #:key ref starting-commit)
(match url
("test" (values test-dir "caf3cabba9e"))
("test" (values test-dir "caf3cabba9e" #f))
(_ (values (channel-instance-checkout instance--no-deps)
"abcde1234")))))
"abcde1234" #f)))))
(with-store store
(let ((instances (latest-channel-instances store (list channel))))
(and (eq? 2 (length instances))
@ -155,11 +156,11 @@
(url "test")))
(test-dir (channel-instance-checkout instance--with-dupes)))
(mock ((guix git) update-cached-checkout
(lambda* (url #:key ref)
(lambda* (url #:key ref starting-commit)
(match url
("test" (values test-dir "caf3cabba9e"))
("test" (values test-dir "caf3cabba9e" #f))
(_ (values (channel-instance-checkout instance--no-deps)
"abcde1234")))))
"abcde1234" #f)))))
(with-store store
(let ((instances (latest-channel-instances store (list channel))))
(and (= 2 (length instances))
@ -178,6 +179,40 @@
"abc1234")))
instances)))))))
(unless (which (git-command)) (test-skip 1))
(test-equal "latest-channel-instances #:validate-pull"
'descendant
;; Make sure the #:validate-pull procedure receives the right values.
(let/ec return
(with-temporary-git-repository directory
'((add "a.txt" "A")
(commit "first commit")
(add "b.scm" "#t")
(commit "second commit"))
(with-repository directory repository
(let* ((commit1 (find-commit repository "first"))
(commit2 (find-commit repository "second"))
(spec (channel (url (string-append "file://" directory))
(name 'foo)))
(new (channel (inherit spec)
(commit (oid->string (commit-id commit2)))))
(old (channel (inherit spec)
(commit (oid->string (commit-id commit1))))))
(define (validate-pull channel current instance relation)
(return (and (eq? channel old)
(string=? (oid->string (commit-id commit2))
current)
(string=? (oid->string (commit-id commit1))
(channel-instance-commit instance))
relation)))
(with-store store
;; Attempt a downgrade from NEW to OLD.
(latest-channel-instances store (list old)
#:current-channels (list new)
#:validate-pull validate-pull)))))))
(test-assert "channel-instances->manifest"
;; Compute the manifest for a graph of instances and make sure we get a
;; derivation graph that mirrors the instance graph. This test also ensures

View File

@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020 Ludovic Courtès <ludo@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;
@ -23,7 +23,7 @@
#:use-module (guix grafts)
#:use-module (guix store)
#:use-module (guix utils)
#:use-module (gcrypt hash)
#:use-module ((gcrypt hash) #:prefix gcrypt:)
#:use-module (guix base32)
#:use-module (guix tests)
#:use-module (guix tests http)
@ -215,7 +215,7 @@
#:env-vars `(("url"
. ,(object->string (%local-url))))
#:hash-algo 'sha256
#:hash (sha256 (string->utf8 text)))))
#:hash (gcrypt:sha256 (string->utf8 text)))))
(and (build-derivations %store (list drv))
(string=? (call-with-input-file (derivation->output-path drv)
get-string-all)
@ -230,7 +230,7 @@
#:env-vars `(("url"
. ,(object->string (%local-url))))
#:hash-algo 'sha256
#:hash (sha256 (random-bytevector 100))))) ;wrong
#:hash (gcrypt:sha256 (random-bytevector 100))))) ;wrong
(guard (c ((store-protocol-error? c)
(string-contains (store-protocol-error-message c) "failed")))
(build-derivations %store (list drv))
@ -245,7 +245,7 @@
#:env-vars `(("url"
. ,(object->string (%local-url))))
#:hash-algo 'sha256
#:hash (sha256 (random-bytevector 100)))))
#:hash (gcrypt:sha256 (random-bytevector 100)))))
(guard (c ((store-protocol-error? c)
(string-contains (store-protocol-error-message (pk c)) "failed")))
(build-derivations %store (list drv))
@ -273,7 +273,7 @@
#:env-vars `(("url"
. ,(object->string (%local-url))))
#:hash-algo 'sha256
#:hash (sha256 (string->utf8 text)))))
#:hash (gcrypt:sha256 (string->utf8 text)))))
(and (with-http-server `((200 ,text))
(build-derivations %store (list drv)))
(with-http-server `((200 ,text))
@ -317,34 +317,43 @@
(test-assert "fixed-output-derivation?"
(let* ((builder (add-text-to-store %store "my-fixed-builder.sh"
"echo -n hello > $out" '()))
(hash (sha256 (string->utf8 "hello")))
(hash (gcrypt:sha256 (string->utf8 "hello")))
(drv (derivation %store "fixed"
%bash `(,builder)
#:sources (list builder)
#:hash hash #:hash-algo 'sha256)))
(fixed-output-derivation? drv)))
(test-assert "fixed-output derivation"
(let* ((builder (add-text-to-store %store "my-fixed-builder.sh"
"echo -n hello > $out" '()))
(hash (sha256 (string->utf8 "hello")))
(drv (derivation %store "fixed"
%bash `(,builder)
#:sources `(,builder) ;optional
#:hash hash #:hash-algo 'sha256))
(succeeded? (build-derivations %store (list drv))))
(and succeeded?
(let ((p (derivation->output-path drv)))
(and (equal? (string->utf8 "hello")
(call-with-input-file p get-bytevector-all))
(bytevector? (query-path-hash %store p)))))))
(test-equal "fixed-output derivation"
'(sha1 sha256 sha512)
(map (lambda (hash-algorithm)
(let* ((builder (add-text-to-store %store "my-fixed-builder.sh"
"echo -n hello > $out" '()))
(sha256 (gcrypt:sha256 (string->utf8 "hello")))
(hash (gcrypt:bytevector-hash
(string->utf8 "hello")
(gcrypt:lookup-hash-algorithm hash-algorithm)))
(drv (derivation %store
(string-append
"fixed-" (symbol->string hash-algorithm))
%bash `(,builder)
#:sources `(,builder) ;optional
#:hash hash
#:hash-algo hash-algorithm)))
(build-derivations %store (list drv))
(let ((p (derivation->output-path drv)))
(and (bytevector=? (string->utf8 "hello")
(call-with-input-file p get-bytevector-all))
(bytevector? (query-path-hash %store p))
hash-algorithm))))
'(sha1 sha256 sha512)))
(test-assert "fixed-output derivation: output paths are equal"
(let* ((builder1 (add-text-to-store %store "fixed-builder1.sh"
"echo -n hello > $out" '()))
(builder2 (add-text-to-store %store "fixed-builder2.sh"
"echo hey; echo -n hello > $out" '()))
(hash (sha256 (string->utf8 "hello")))
(hash (gcrypt:sha256 (string->utf8 "hello")))
(drv1 (derivation %store "fixed"
%bash `(,builder1)
#:hash hash #:hash-algo 'sha256))
@ -359,7 +368,7 @@
(test-assert "fixed-output derivation, recursive"
(let* ((builder (add-text-to-store %store "my-fixed-builder.sh"
"echo -n hello > $out" '()))
(hash (sha256 (string->utf8 "hello")))
(hash (gcrypt:sha256 (string->utf8 "hello")))
(drv (derivation %store "fixed-rec"
%bash `(,builder)
#:sources (list builder)
@ -381,7 +390,7 @@
"echo -n hello > $out" '()))
(builder2 (add-text-to-store %store "fixed-builder2.sh"
"echo hey; echo -n hello > $out" '()))
(hash (sha256 (string->utf8 "hello")))
(hash (gcrypt:sha256 (string->utf8 "hello")))
(fixed1 (derivation %store "fixed"
%bash `(,builder1)
#:hash hash #:hash-algo 'sha256))
@ -418,7 +427,7 @@
"echo -n hello > $out" '()))
(builder2 (add-text-to-store %store "fixed-builder2.sh"
"echo hey; echo -n hello > $out" '()))
(hash (sha256 (string->utf8 "hello")))
(hash (gcrypt:sha256 (string->utf8 "hello")))
(fixed1 (derivation %store "fixed"
%bash `(,builder1)
#:hash hash #:hash-algo 'sha256))
@ -671,7 +680,7 @@
(let* ((value (getenv "GUIX_STATE_DIRECTORY"))
(drv (derivation %store "leaked-env-vars" %bash
'("-c" "echo -n $GUIX_STATE_DIRECTORY > $out")
#:hash (sha256 (string->utf8 value))
#:hash (gcrypt:sha256 (string->utf8 value))
#:hash-algo 'sha256
#:sources (list %bash)
#:leaked-env-vars '("GUIX_STATE_DIRECTORY"))))
@ -1097,7 +1106,7 @@
(builder2 '(call-with-output-file (pk 'difference-here! %output)
(lambda (p)
(write "hello" p))))
(hash (sha256 (string->utf8 "hello")))
(hash (gcrypt:sha256 (string->utf8 "hello")))
(input1 (build-expression->derivation %store "fixed" builder1
#:hash hash
#:hash-algo 'sha256))
@ -1118,7 +1127,7 @@
(builder2 '(call-with-output-file (pk 'difference-here! %output)
(lambda (p)
(write "hello" p))))
(hash (sha256 (string->utf8 "hello")))
(hash (gcrypt:sha256 (string->utf8 "hello")))
(input1 (build-expression->derivation %store "fixed" builder1
#:hash hash
#:hash-algo 'sha256))

View File

@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2019 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2019, 2020 Ludovic Courtès <ludo@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;
@ -122,4 +122,44 @@
(lset= eq? (commit-difference commit4 commit1 (list commit5))
(list commit2 commit3 commit4)))))))
(unless (which (git-command)) (test-skip 1))
(test-equal "commit-relation"
'(self ;master3 master3
ancestor ;master1 master3
descendant ;master3 master1
unrelated ;master2 branch1
unrelated ;branch1 master2
ancestor ;branch1 merge
descendant ;merge branch1
ancestor ;master1 merge
descendant) ;merge master1
(with-temporary-git-repository directory
'((add "a.txt" "A")
(commit "first commit")
(branch "hack")
(checkout "hack")
(add "1.txt" "1")
(commit "branch commit")
(checkout "master")
(add "b.txt" "B")
(commit "second commit")
(add "c.txt" "C")
(commit "third commit")
(merge "hack" "merge"))
(with-repository directory repository
(let ((master1 (find-commit repository "first"))
(master2 (find-commit repository "second"))
(master3 (find-commit repository "third"))
(branch1 (find-commit repository "branch"))
(merge (find-commit repository "merge")))
(list (commit-relation master3 master3)
(commit-relation master1 master3)
(commit-relation master3 master1)
(commit-relation master2 branch1)
(commit-relation branch1 master2)
(commit-relation branch1 merge)
(commit-relation merge branch1)
(commit-relation master1 merge)
(commit-relation merge master1))))))
(test-end "git")

View File

@ -162,7 +162,11 @@ edges."
(let-values (((backend nodes+edges) (make-recording-backend)))
(let* ((m (lambda* (uri hash-type hash name #:key system)
(text-file "foo-1.2.3.tar.gz" "This is a fake!")))
(o (origin (method m) (uri "the-uri") (sha256 #vu8(0 1 2))))
(o (origin
(method m) (uri "the-uri")
(sha256
(base32
"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"))))
(p (dummy-package "p" (source o))))
(run-with-store %store
(export-graph (list p) 'port

View File

@ -1,5 +1,5 @@
# GNU Guix --- Functional package management for GNU
# Copyright © 2013, 2014, 2016 Ludovic Courtès <ludo@gnu.org>
# Copyright © 2013, 2014, 2016, 2020 Ludovic Courtès <ludo@gnu.org>
# Copyright © 2016 Jan Nieuwenhuizen <janneke@gnu.org>
#
# This file is part of GNU Guix.
@ -31,6 +31,11 @@ test `echo -n | guix hash -` = 0mdqa9w1p6cmli6976v4wi0sw9r4p5prkj7lzfd1877wk11c9
test `guix hash -f nix-base32 /dev/null` = 0mdqa9w1p6cmli6976v4wi0sw9r4p5prkj7lzfd1877wk11c9c73
test `guix hash -f hex /dev/null` = e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
test `guix hash -f base32 /dev/null` = 4oymiquy7qobjgx36tejs35zeqt24qpemsnzgtfeswmrw6csxbkq
test `guix hash -H sha512 -f hex /dev/null` = cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e
test `guix hash -H sha1 -f base64 /dev/null` = "2jmj7l5rSw0yVb/vlWAYkK/YBwk="
if guix hash -H abcd1234 /dev/null;
then false; else true; fi
mkdir "$tmpdir"
echo -n executable > "$tmpdir/exe"

View File

@ -1,6 +1,7 @@
# GNU Guix --- Functional package management for GNU
# Copyright © 2012, 2013, 2014, 2015, 2017, 2019 Ludovic Courtès <ludo@gnu.org>
# Copyright © 2013 Nikita Karetnikov <nikita@karetnikov.org>
# Copyright © 2020 Simon Tournier <zimon.toutoune@gmail.com>
#
# This file is part of GNU Guix.
#
@ -78,6 +79,17 @@ esac
test "`guix package -p "$profile" -I 'g.*e' | cut -f1`" = "guile-bootstrap"
guix package --bootstrap -p "$profile_alt" -i gcc-bootstrap
installed="`guix package -p "$profile" -p "$profile_alt" -I | cut -f1 | xargs echo | sort`"
case "x$installed" in
"gcc-bootstrap guile-bootstrap make-boot0")
true;;
"*")
false;;
esac
test "`guix package -p "$profile_alt" -p "$profile" -I | wc -l`" = "3"
rm "$profile_alt"
# List generations.
test "`guix package -p "$profile" -l | cut -f1 | grep guile | head -n1`" \
= " guile-bootstrap"

View File

@ -29,7 +29,7 @@
#:renamer (lambda (name)
(cond ((eq? name 'location) 'make-location)
(else name))))
#:use-module (gcrypt hash)
#:use-module ((gcrypt hash) #:prefix gcrypt:)
#:use-module (guix derivations)
#:use-module (guix packages)
#:use-module (guix grafts)
@ -51,6 +51,7 @@
#:use-module (srfi srfi-34)
#:use-module (srfi srfi-35)
#:use-module (srfi srfi-64)
#:use-module (rnrs bytevectors)
#:use-module (rnrs io ports)
#:use-module (ice-9 vlist)
#:use-module (ice-9 regex)
@ -497,6 +498,32 @@
(search-path %load-path "guix/base32.scm")
get-bytevector-all)))))
(test-equal "package-source-derivation, origin, sha512"
"hello"
(let* ((bash (search-bootstrap-binary "bash" (%current-system)))
(builder (add-text-to-store %store "my-fixed-builder.sh"
"echo -n hello > $out" '()))
(method (lambda* (url hash-algo hash #:optional name
#:rest rest)
(and (eq? hash-algo 'sha512)
(raw-derivation name bash (list builder)
#:sources (list builder)
#:hash hash
#:hash-algo hash-algo))))
(source (origin
(method method)
(uri "unused://")
(file-name "origin-sha512")
(hash (content-hash
(gcrypt:bytevector-hash (string->utf8 "hello")
(gcrypt:lookup-hash-algorithm
'sha512))
sha512))))
(drv (package-source-derivation %store source))
(output (derivation->output-path drv)))
(build-derivations %store (list drv))
(call-with-input-file output get-string-all)))
(unless (network-reachable?) (test-skip 1))
(test-equal "package-source-derivation, snippet"
"OK"

View File

@ -22,7 +22,7 @@
#:use-module (guix store)
#:use-module (guix utils)
#:use-module (guix monads)
#:use-module (gcrypt hash)
#:use-module ((gcrypt hash) #:prefix gcrypt:)
#:use-module (guix base32)
#:use-module (guix packages)
#:use-module (guix derivations)
@ -115,6 +115,18 @@
(passwd:name (getpwuid (getuid)))))))
(list (stat:uid s) (stat:perms s))))
(test-equal "add-to-store"
'("sha1" "sha256" "sha512")
(let* ((file (search-path %load-path "guix.scm"))
(content (call-with-input-file file get-bytevector-all)))
(map (lambda (hash-algo)
(let ((file (add-to-store %store "guix.scm" #f hash-algo file)))
(and (direct-store-path? file)
(bytevector=? (call-with-input-file file get-bytevector-all)
content)
hash-algo)))
'("sha1" "sha256" "sha512"))))
(test-equal "add-data-to-store"
#vu8(1 2 3 4 5)
(call-with-input-file (add-data-to-store %store "data" #vu8(1 2 3 4 5))
@ -309,7 +321,7 @@
#:env-vars `(("t2" . ,t2))))
(o (derivation->output-path d)))
(with-derivation-narinfo d
(sha256 => (sha256 (string->utf8 t2)))
(sha256 => (gcrypt:sha256 (string->utf8 t2)))
(references => (list t2))
(equal? (references/substitutes s (list o t3 t2 t1))
@ -928,7 +940,7 @@
(foldm %store-monad
(lambda (item result)
(define ref-hash
(let-values (((port get) (open-sha256-port)))
(let-values (((port get) (gcrypt:open-sha256-port)))
(write-file item port)
(close-port port)
(get)))
@ -1132,7 +1144,7 @@
(info (query-path-info %store item)))
(and (equal? (path-info-references info) (list ref))
(equal? (path-info-hash info)
(sha256
(gcrypt:sha256
(string->utf8
(call-with-output-string (cut write-file item <>))))))))