Archived
1
0
Fork 0

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/guix-modular.scm \
build-aux/cuirass/hydra-to-cuirass.scm \ build-aux/cuirass/hydra-to-cuirass.scm \
build-aux/check-final-inputs-self-contained.scm \ build-aux/check-final-inputs-self-contained.scm \
build-aux/check-channel-news.scm \
build-aux/compile-as-derivation.scm \ build-aux/compile-as-derivation.scm \
build-aux/generate-authors.scm \ build-aux/generate-authors.scm \
build-aux/git-authenticate.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)" \ $(AM_V_at)$(top_builddir)/pre-inst-env "$(GUILE)" \
"$(top_srcdir)/build-aux/check-final-inputs-self-contained.scm" "$(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. # Compute the Hydra jobs and write them in the target file.
hydra-jobs.scm: $(GOBJECTS) hydra-jobs.scm: $(GOBJECTS)
$(AM_V_at)$(MKDIR_P) "`dirname "$@"`" $(AM_V_at)$(MKDIR_P) "`dirname "$@"`"
@ -904,7 +910,7 @@ cuirass-jobs.scm: $(GOBJECTS)
.PHONY: gen-ChangeLog gen-AUTHORS gen-tarball-version .PHONY: gen-ChangeLog gen-AUTHORS gen-tarball-version
.PHONY: assert-no-store-file-names assert-binaries-available .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: clean-go make-go as-derivation authenticate
.PHONY: update-guix-package update-NEWS release .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 with @command{git am --signoff}. This improves tracking of who did
what. 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 For anything else, please post to @email{guix-patches@@gnu.org} and
leave time for a review, without committing anything (@pxref{Submitting leave time for a review, without committing anything (@pxref{Submitting
Patches}). If you didnt receive any reply after two weeks, and if 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)) (set-font (make-instance 'xft:font :family "DejaVu Sans Mono" :subfamily "Book" :size 11))
@end lisp @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 @node Setting up a bind mount
@section 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, 2017, 2018, 2019, 2020 Efraim Flashner@*
Copyright @copyright{} 2016 John Darrington@* Copyright @copyright{} 2016 John Darrington@*
Copyright @copyright{} 2016, 2017 Nikita Gillmann@* 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 Julien Lepiller@*
Copyright @copyright{} 2016 Alex ter Weele@* Copyright @copyright{} 2016 Alex ter Weele@*
Copyright @copyright{} 2016, 2017, 2018, 2019 Christopher Baines@* 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 link that follows: @pxref{Top, Info reader,, info-stnd, Stand-alone GNU
Info}. Hit @kbd{l} afterwards to come back here. 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. available.
@end quotation @end quotation
@end ifinfo @end ifinfo
@ -2021,7 +2021,7 @@ Guix System in a virtual machine (VM).
@section Preparing for Installation @section Preparing for Installation
Once you have booted, you can use the guided graphical installer, which makes 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 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'' what the graphical installer provides, you can choose the ``manual''
installation process (@pxref{Manual Installation}). 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 Show which channel commit(s) would be used and what would be built or
substituted but do not actually do it. 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} @item --system=@var{system}
@itemx -s @var{system} @itemx -s @var{system}
Attempt to build for @var{system}---e.g., @code{i686-linux}---instead of 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 @end table
@item @code{sha256} @item @code{sha256}
A bytevector containing the SHA-256 hash of the source. Typically the A bytevector containing the SHA-256 hash of the source. This is
@code{base32} form is used here to generate the bytevector from a equivalent to providing a @code{content-hash} SHA256 object in the
base-32 string. @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} You can obtain this information using @code{guix download}
(@pxref{Invoking guix download}) or @code{guix hash} (@pxref{Invoking (@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 table
@end deftp @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 @node Build Systems
@section Build Systems @section Build Systems
@ -9018,6 +9061,11 @@ Certificates}), unless @option{--no-check-certificate} is used.
The following options are available: The following options are available:
@table @code @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} @item --format=@var{fmt}
@itemx -f @var{fmt} @itemx -f @var{fmt}
Write the hash in the format specified by @var{fmt}. For more Write the hash in the format specified by @var{fmt}. For more
@ -9057,11 +9105,21 @@ following options:
@table @code @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} @item --format=@var{fmt}
@itemx -f @var{fmt} @itemx -f @var{fmt}
Write the hash in the format specified by @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). (@code{hex} and @code{hexadecimal} can be used as well).
If the @option{--format} option is not specified, @command{guix hash} 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 gnu/packages/glib.scm:77:12: glib would be upgraded from 2.34.3 to 2.37.0
@end example @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: warning is emitted for packages that lack an updater:
@example @example
@ -10727,7 +10785,7 @@ guix challenge git \
This automatically invokes @command{diffoscope}, which displays detailed This automatically invokes @command{diffoscope}, which displays detailed
information about files that differ. 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}): archive}):
@example @example
@ -14519,7 +14577,7 @@ subsystem name and a command (with optional arguments) to execute upon
subsystem request. subsystem request.
The command @command{internal-sftp} implements an in-process SFTP 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 @lisp
(service openssh-service-type (service openssh-service-type
(openssh-configuration (openssh-configuration
@ -26940,14 +26998,14 @@ The GRUB @code{gfxmode} to set (a list of screen resolution strings, see
@end table @end table
@end deftp @end deftp
@defvr {Scheme Variable} %default-theme @deffn {Scheme Procedure} grub-theme
This is the default GRUB theme used by the operating system if no Return the default GRUB theme used by the operating system if no
@code{theme} field is specified in @code{bootloader-configuration} @code{theme} field is specified in @code{bootloader-configuration}
record. record.
It comes with a fancy background image displaying the GNU and Guix It comes with a fancy background image displaying the GNU and Guix
logos. logos.
@end defvr @end deffn
For example, to override the default resolution, you may use something For example, to override the default resolution, you may use something
like like
@ -26957,7 +27015,7 @@ like
(bootloader-configuration (bootloader-configuration
;; @dots{} ;; @dots{}
(theme (grub-theme (theme (grub-theme
(inherit %default-theme) (inherit (grub-theme))
(gfxmode '("1024x786x32" "auto")))))) (gfxmode '("1024x786x32" "auto"))))))
@end lisp @end lisp
@ -28718,10 +28776,8 @@ Binutils, libc, and the other packages mentioned above---the
@dfn{bootstrap binaries}. @dfn{bootstrap binaries}.
These bootstrap binaries are ``taken for granted'', though we can also These bootstrap binaries are ``taken for granted'', though we can also
re-create them if needed (more on that later). re-create them if needed (@pxref{Preparing to Use the Bootstrap
Binaries}).
For @code{i686-linux} and @code{x86_64-linux} the Guix bootstrap process is
more elaborate, @pxref{Reduced Binary Seed Bootstrap}.
@menu @menu
* Reduced Binary Seed Bootstrap:: A Bootstrap worthy of GNU. * 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 GNU C Library (@pxref{Bootstrapping}). Usually, these bootstrap binaries are
``taken for granted.'' ``taken for granted.''
Taking these binaries for granted means that we consider them to be a correct Taking the bootstrap binaries for granted means that we consider them to
and trustworthy `seed' for building the complete system. Therein lies a be a correct and trustworthy ``seed'' for building the complete system.
problem: the current combined size of these bootstrap binaries is about 250MB Therein lies a problem: the combined size of these bootstrap binaries is
(@pxref{Bootstrappable Builds,,, mes, GNU Mes}). Auditing or even inspecting about 250MB (@pxref{Bootstrappable Builds,,, mes, GNU Mes}). Auditing
these is next to impossible. or even inspecting these is next to impossible.
For @code{i686-linux} and @code{x86_64-linux}, Guix now features a ``Reduced For @code{i686-linux} and @code{x86_64-linux}, Guix now features a
Binary Seed'' bootstrap @footnote{We would like to say: ``Full Source ``Reduced Binary Seed'' bootstrap @footnote{We would like to say: ``Full
Bootstrap'' and while we are working towards that goal it would be hyperbole Source Bootstrap'' and while we are working towards that goal it would
to use that term for what we do now.}. be hyperbole to use that term for what we do now.}.
The Reduced Binary Seed bootstrap removes the most critical tools---from a The Reduced Binary Seed bootstrap removes the most critical tools---from a
trust perspective---from the bootstrap binaries: GCC, Binutils and the GNU C trust perspective---from the bootstrap binaries: GCC, Binutils and the GNU C
Library are replaced by: @code{bootstrap-mescc-tools} (a tiny assembler and 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 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 written in Scheme and the Mes C Library, built for TinyCC and for GCC).
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.
@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 Using these new binary seeds the ``missing'' Binutils, GCC, and the GNU
@c dot -T png doc/images/gcc-mesboot-bag-graph.dot > doc/images/gcc-mesboot-bag-graph.png 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 The next step that Guix has taken is to replace the shell and all its
compiler used to build the rest of GuixSD. 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 @node Preparing to Use the Bootstrap Binaries
@section 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 | dot -Tps > gcc.ps
@end example @end example
or, for the Reduced Binary Seed bootstrap or, for the further Reduced Binary Seed bootstrap
@example @example
guix graph -t derivation \ 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/bootstrap-packages.dot \
%D%/images/coreutils-graph.dot \ %D%/images/coreutils-graph.dot \
%D%/images/coreutils-bag-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/service-graph.dot \
%D%/images/shepherd-graph.dot %D%/images/shepherd-graph.dot

View file

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

View file

@ -859,7 +859,6 @@ dist_patch_DATA = \
%D%/packages/patches/dconf-meson-0.52.patch \ %D%/packages/patches/dconf-meson-0.52.patch \
%D%/packages/patches/debops-constants-for-external-program-names.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/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-gcc6-fixes.patch \
%D%/packages/patches/desmume-gcc7-fixes.patch \ %D%/packages/patches/desmume-gcc7-fixes.patch \
%D%/packages/patches/dfu-programmer-fix-libusb.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-id.patch \
%D%/packages/patches/ghostscript-no-header-uuid.patch \ %D%/packages/patches/ghostscript-no-header-uuid.patch \
%D%/packages/patches/ghostscript-no-header-creationdate.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/glib-tests-timer.patch \
%D%/packages/patches/glibc-CVE-2015-5180.patch \ %D%/packages/patches/glibc-CVE-2015-5180.patch \
%D%/packages/patches/glibc-CVE-2015-7547.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-3.0-relocatable.patch \
%D%/packages/patches/guile-linux-syscalls.patch \ %D%/packages/patches/guile-linux-syscalls.patch \
%D%/packages/patches/guile-3.0-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-gdbm-ffi-support-gdbm-1.14.patch \
%D%/packages/patches/guile-present-coding.patch \ %D%/packages/patches/guile-present-coding.patch \
%D%/packages/patches/guile-rsvg-pkgconfig.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/libbonobo-activation-test-race.patch \
%D%/packages/patches/libcanberra-sound-theme-freedesktop.patch \ %D%/packages/patches/libcanberra-sound-theme-freedesktop.patch \
%D%/packages/patches/libdrm-realpath-virtio.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/libextractor-exiv2.patch \
%D%/packages/patches/libgeotiff-adapt-test-script-for-proj-6.2.patch \ %D%/packages/patches/libgeotiff-adapt-test-script-for-proj-6.2.patch \
%D%/packages/patches/libgit2-mtime-0.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-y2038-tests.patch \
%D%/packages/patches/netsurf-longer-test-timeout.patch \ %D%/packages/patches/netsurf-longer-test-timeout.patch \
%D%/packages/patches/ngircd-handle-zombies.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/nsis-env-passthru.patch \
%D%/packages/patches/nss-increase-test-timeout.patch \ %D%/packages/patches/nss-increase-test-timeout.patch \
%D%/packages/patches/nss-pkgconfig.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/perl-www-curl-remove-symbol.patch \
%D%/packages/patches/picprog-non-intel-support.patch \ %D%/packages/patches/picprog-non-intel-support.patch \
%D%/packages/patches/pidgin-add-search-path.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-const-fix.patch \
%D%/packages/patches/pinball-cstddef.patch \ %D%/packages/patches/pinball-cstddef.patch \
%D%/packages/patches/pinball-missing-separators.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-CVE-2018-14647.patch \
%D%/packages/patches/python-aiohttp-3.6.2-no-warning-fail.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-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-axolotl-AES-fix.patch \
%D%/packages/patches/python-cairocffi-dlopen-path.patch \ %D%/packages/patches/python-cairocffi-dlopen-path.patch \
%D%/packages/patches/python-cross-compile.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/ttfautohint-source-date-epoch.patch \
%D%/packages/patches/tomb-fix-errors-on-open.patch \ %D%/packages/patches/tomb-fix-errors-on-open.patch \
%D%/packages/patches/tuxpaint-stamps-path.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-riscv64-fix-extlinux.patch \
%D%/packages/patches/u-boot-DT-for-Pinebook-Pro.patch \ %D%/packages/patches/u-boot-DT-for-Pinebook-Pro.patch \
%D%/packages/patches/u-boot-add-boe-nv140fhmn49-display.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")) (let ((real-name "inxi"))
(package (package
(name "inxi-minimal") (name "inxi-minimal")
(version "3.0.38-1") (version "3.1.00-1")
(source (source
(origin (origin
(method git-fetch) (method git-fetch)
@ -3345,7 +3345,7 @@ Python loading in HPC environments.")
(commit version))) (commit version)))
(file-name (git-file-name real-name version)) (file-name (git-file-name real-name version))
(sha256 (sha256
(base32 "1qw3sxgd3ly916bzzl3873s3flngwd3vh57slw0shsj7ivz8bfnm")))) (base32 "0md6yfd297l8695g0rsbs4mm74dc3k00rfjl4x2n4i33mkylp6qa"))))
(build-system trivial-build-system) (build-system trivial-build-system)
(inputs (inputs
`(("bash" ,bash-minimal) `(("bash" ,bash-minimal)

View file

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

View file

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

View file

@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU ;;; 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 © 2014, 2015, 2018, 2019 Mark H Weaver <mhw@netris.org>
;;; Copyright © 2017, 2020 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2017, 2020 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2018, 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org> ;;; 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' \ (format #f (G_ "could not find bootstrap binary '~a' \
for system '~a'") for system '~a'")
program system)))))) program system))))))
((sha256) ((bv)
(origin (origin
(method url-fetch/executable) (method url-fetch/executable)
(uri (map (cute string-append <> (uri (map (cute string-append <>
(bootstrap-executable-file-name system program)) (bootstrap-executable-file-name system program))
%bootstrap-executable-base-urls)) %bootstrap-executable-base-urls))
(file-name program) (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 (define-public umockdev
(package (package
(name "umockdev") (name "umockdev")
(version "0.13.2") (version "0.14.1")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append "https://github.com/martinpitt/umockdev/" (uri (string-append "https://github.com/martinpitt/umockdev/"
@ -2526,7 +2526,7 @@ provides a simple way to achieve this.")
"umockdev-" version ".tar.xz")) "umockdev-" version ".tar.xz"))
(sha256 (sha256
(base32 (base32
"095v3abc321s584sga04y16lcmdzsdi88h24wcrm78v7vq484g74")))) "1g78jcrvb7yyh0q5kv5409wjqf8nlfqnw1rknm3a247mcx317dpz"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(arguments (arguments
`(#:phases `(#:phases
@ -2538,6 +2538,7 @@ provides a simple way to achieve this.")
#t))))) #t)))))
(native-inputs (native-inputs
`(("vala" ,vala) `(("vala" ,vala)
("gobject-introspection" ,gobject-introspection)
("gtk-doc" ,gtk-doc) ("gtk-doc" ,gtk-doc)
("pkg-config" ,pkg-config) ("pkg-config" ,pkg-config)

View file

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

View file

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

View file

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

View file

@ -196,7 +196,7 @@ itself."))))
(define-public font-cantarell (define-public font-cantarell
(package (package
(name "font-abattis-cantarell") (name "font-abattis-cantarell")
(version "0.111") (version "0.201")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append "mirror://gnome/sources/cantarell-fonts/" (uri (string-append "mirror://gnome/sources/cantarell-fonts/"
@ -204,11 +204,10 @@ itself."))))
"/cantarell-fonts-" version ".tar.xz")) "/cantarell-fonts-" version ".tar.xz"))
(sha256 (sha256
(base32 (base32
"05hpnhihwm9sxlq1qn993g03pwkmpjbn0dvnba71r1gfjv0jp2w5")))) "0qwqmkczqy09fdj8l11nr841ks0dwsydqg55qyms12m4yvjn87xn"))))
(build-system meson-build-system) (build-system meson-build-system)
(native-inputs (native-inputs
`(("appstream-glib" ,appstream-glib) `(("gettext" ,gettext-minimal))) ; for msgfmt
("gettext" ,gettext-minimal))) ;for msgfmt
(home-page "https://wiki.gnome.org/Projects/CantarellFonts") (home-page "https://wiki.gnome.org/Projects/CantarellFonts")
(synopsis "Cantarell sans-serif typeface") (synopsis "Cantarell sans-serif typeface")
(description "The Cantarell font family is a contemporary Humanist (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 (define-public modem-manager
(package (package
(name "modem-manager") (name "modem-manager")
(version "1.10.8") (version "1.12.10")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append (uri (string-append
@ -1123,15 +1123,11 @@ which speak the Qualcomm MSM Interface (QMI) protocol.")
"ModemManager-" version ".tar.xz")) "ModemManager-" version ".tar.xz"))
(sha256 (sha256
(base32 (base32
"16hnl0sdriqgv4v30mfs64mdl9rw7lsh802zlm3ggwxxil3p9qfb")))) "1apq9camys2gaw6y6ic1ld20cncfwpmxnzvh4j5zkbbjpf5hbcxj"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(arguments (arguments
'(#:configure-flags '(#:configure-flags
`(,(string-append "--with-udev-base-dir=" %output "/lib/udev") `(,(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")))
(native-inputs (native-inputs
`(("glib:bin" ,glib "bin") ; for glib-mkenums `(("glib:bin" ,glib "bin") ; for glib-mkenums
("gobject-introspection" ,gobject-introspection) ("gobject-introspection" ,gobject-introspection)

View file

@ -1,6 +1,6 @@
;;; GNU Guix --- Functional package management for GNU ;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2013 Ludovic Courtès <ludo@gnu.org> ;;; 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> ;;; Copyright © 2019 Tobias Geerinckx-Rice <me@tobias.gr>
;;; ;;;
;;; This file is part of GNU Guix. ;;; This file is part of GNU Guix.
@ -28,15 +28,17 @@
(define-public freeipmi (define-public freeipmi
(package (package
(name "freeipmi") (name "freeipmi")
(version "1.6.4") (version "1.6.5")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append "mirror://gnu/freeipmi/freeipmi-" (uri (string-append "mirror://gnu/freeipmi/freeipmi-"
version ".tar.gz")) version ".tar.gz"))
(sha256 (sha256
(base32 (base32
"0g0s4iwx0ng4rv7hp5cc3kkx4drahsc89981gwjblf04lfavppv5")))) "1ncf1s84752xaq07h36wrxa5ww1167s2bizkww0igxv8djyddwk1"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(arguments
'(#:configure-flags '("--disable-static")))
(inputs (inputs
`(("libgcrypt" ,libgcrypt))) `(("libgcrypt" ,libgcrypt)))
(home-page "https://www.gnu.org/software/freeipmi/") (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 (define-public edgar
(package (package
(name "edgar") (name "edgar")
(version "1.32") (version "1.33")
(source (source
(origin (origin
(method url-fetch) (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/" (string-append "https://github.com/riksweeney/edgar/releases/download/"
version "/edgar-" version "-1.tar.gz")) version "/edgar-" version "-1.tar.gz"))
(sha256 (sha256
(base32 "12lam6qcscc5ima1w2ksd1cvsvxbd17h6mqkgsqpzx8ap43p2r5p")))) (base32 "1mbx7dvizdca4g1blcv3bdh6yxd13k47rkya4rdzg0nvvz24m175"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(arguments '(#:tests? #f ; there are no tests (arguments '(#:tests? #f ; there are no tests
#:make-flags #:make-flags

View file

@ -679,6 +679,53 @@ OpenGL graphics API.")
"A library for handling OpenGL function pointer management.") "A library for handling OpenGL function pointer management.")
(license license:x11))) (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 (define-public soil
(package (package
(name "soil") (name "soil")

View file

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

View file

@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU ;;; 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 © 2013, 2015, 2018 Andreas Enge <andreas@enge.fr>
;;; Copyright © 2014, 2018 Eric Bavier <bavier@member.fsf.org> ;;; Copyright © 2014, 2018 Eric Bavier <bavier@member.fsf.org>
;;; Copyright © 2014, 2015, 2016 Mark H Weaver <mhw@netris.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 (define-public guile-gcrypt
(package (package
(name "guile-gcrypt") (name "guile-gcrypt")
(version "0.2.1") (version "0.3.0")
(home-page "https://notabug.org/cwebber/guile-gcrypt") (home-page "https://notabug.org/cwebber/guile-gcrypt")
(source (origin (source (origin
(method git-fetch) (method git-fetch)
@ -482,7 +482,7 @@ gpgpme starting with version 1.7.")
(commit (string-append "v" version)))) (commit (string-append "v" version))))
(sha256 (sha256
(base32 (base32
"0n232iyayc46f7hywmjw0jr7pbmmz5h4b04jskhkzz9gxz0ci99c")) "0m29fg4pdfifnqqsa437zc5c1bhbfh62mc69ba25ak4x2cla41ll"))
(file-name (git-file-name name version)))) (file-name (git-file-name name version))))
(build-system gnu-build-system) (build-system gnu-build-system)
(arguments (arguments
@ -510,7 +510,7 @@ gpgpme starting with version 1.7.")
("libgcrypt" ,libgcrypt))) ("libgcrypt" ,libgcrypt)))
(synopsis "Cryptography library for Guile using Libgcrypt") (synopsis "Cryptography library for Guile using Libgcrypt")
(description (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 GNU Libgcrypt crytographic library. It provides modules for cryptographic
hash functions, message authentication codes (MAC), public-key cryptography, hash functions, message authentication codes (MAC), public-key cryptography,
strong randomness, and more. It is implemented using the foreign function 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"))) (lambda _ (invoke "./mach" "build")))
(replace 'install (replace 'install
(lambda _ (invoke "./mach" "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 (add-after 'install 'wrap-program
(lambda* (#:key inputs outputs #:allow-other-keys) (lambda* (#:key inputs outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out")) (let* ((out (assoc-ref outputs "out"))

View file

@ -623,8 +623,8 @@ Go programming language.")
(license license:bsd-3)))) (license license:bsd-3))))
(define-public go-golang-org-x-crypto (define-public go-golang-org-x-crypto
(let ((commit "9756ffdc24725223350eb3266ffb92590d28f278") (let ((commit "2aa609cf4a9d7d1126360de73b55b6002f9e052a")
(revision "4")) (revision "5"))
(package (package
(name "go-golang-org-x-crypto") (name "go-golang-org-x-crypto")
(version (git-version "0.0.0" revision commit)) (version (git-version "0.0.0" revision commit))
@ -637,7 +637,7 @@ Go programming language.")
version "-checkout")) version "-checkout"))
(sha256 (sha256
(base32 (base32
"0q7hxaaq6lp0v8qqzifvysl47z5rfdlrxkh3d29vsl3wyby3dxl8")))) "1yvis6fqbsd7f356aqyi18f76vnwj3bry6mxqnkvshq4cwrf92il"))))
(build-system go-build-system) (build-system go-build-system)
(arguments (arguments
'(#:import-path "golang.org/x/crypto" '(#:import-path "golang.org/x/crypto"
@ -723,8 +723,8 @@ processing.")
(license license:bsd-3)))) (license license:bsd-3))))
(define-public go-golang-org-x-sys (define-public go-golang-org-x-sys
(let ((commit "749cb33beabd9aa6d3178e3de05bcc914f70b2bf") (let ((commit "c709ea063b76879dc9915358f55d4d77c16ab6d5")
(revision "5")) (revision "6"))
(package (package
(name "go-golang-org-x-sys") (name "go-golang-org-x-sys")
(version (git-version "0.0.0" revision commit)) (version (git-version "0.0.0" revision commit))
@ -736,7 +736,7 @@ processing.")
(file-name (git-file-name name version)) (file-name (git-file-name name version))
(sha256 (sha256
(base32 (base32
"0dm3257q3rv2kyn5lmqqim2fqg634v6rhrqq4glvbk4wx4l3v337")))) "15nq53a6kcqchng4j0d1pjw0m6hny6126nhjdwqw5n9dzh6a226d"))))
(build-system go-build-system) (build-system go-build-system)
(arguments (arguments
`(#:import-path "golang.org/x/sys" `(#: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.") required by Go's standard Hash interface.")
(license license:bsd-3))) (license license:bsd-3)))
(define-public go-github-com-calmh-murmur3 (define-public go-github-com-twmb-murmur3
(let ((commit "74e9af8f47ac56901c490d45546ca167b60c7066") (package
(revision "0")) (name "go-github-com-twmb-murmur3")
(package (version "1.1.3")
(name "go-github-com-calmh-murmur3") (source
(version (git-version "1.1.0" revision commit)) (origin
(source (method git-fetch)
(origin (uri (git-reference
(method git-fetch) (url "https://github.com/twmb/murmur3.git")
(uri (git-reference (commit (string-append "v" version))))
(url "https://github.com/calmh/murmur3.git") (file-name (git-file-name name version))
(commit commit))) (sha256
(file-name (git-file-name name version)) (base32
(sha256 "00riapwkyf23l5wyis47mbr8rwr4yrjw491jfc30wpzs111c1gyy"))))
(base32 (build-system go-build-system)
"0k8345ivx228qdbkl8bisd2wxwsinkb44ghba6r09538fr3fbr5w")))) (arguments
(build-system go-build-system) '(#:import-path "github.com/twmb/murmur3"))
(arguments (home-page "https://github.com/twmb/murmur3")
'(#:import-path "github.com/calmh/murmur3")) (synopsis "Native MurmurHash3 Go implementation")
(home-page "https://github.com/calmh/murmur3") (description "Native Go implementation of Austin Appleby's third
(synopsis "Native MurmurHash3 Go implementation")
(description "Native Go implementation of Austin Appleby's third
MurmurHash revision (aka MurmurHash3). MurmurHash revision (aka MurmurHash3).
Reference algorithm has been slightly hacked as to support the streaming mode Reference algorithm has been slightly hacked as to support the streaming mode
required by Go's standard Hash interface.") required by Go's standard Hash interface.")
(license license:bsd-3)))) (license license:bsd-3)))
(define-public go-github-com-multiformats-go-multihash (define-public go-github-com-multiformats-go-multihash
(let ((commit "97cdb562a04c6ef66d8ed40cd62f8fbcddd396d6") (let ((commit "97cdb562a04c6ef66d8ed40cd62f8fbcddd396d6")
@ -2803,7 +2801,7 @@ format in Go.")
(define-public go-github-com-kr-pretty (define-public go-github-com-kr-pretty
(package (package
(name "go-github-com-kr-pretty") (name "go-github-com-kr-pretty")
(version "0.1.0") (version "0.2.0")
(source (origin (source (origin
(method git-fetch) (method git-fetch)
(uri (git-reference (uri (git-reference
@ -2812,7 +2810,7 @@ format in Go.")
(file-name (git-file-name name version)) (file-name (git-file-name name version))
(sha256 (sha256
(base32 (base32
"18m4pwg2abd0j9cn5v3k2ksk9ig4vlwxmlw9rrglanziv9l967qp")))) "1ywbfzz1h3a3qd8rpkiqwi1dm4w8ls9ijb4x1b7567grns9f0vnp"))))
(build-system go-build-system) (build-system go-build-system)
(propagated-inputs (propagated-inputs
`(("go-github-com-kr-text" ,go-github-com-kr-text))) `(("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 (define-public go-github-com-marten-seemann-qtls
(package (package
(name "go-github-com-marten-seemann-qtls") (name "go-github-com-marten-seemann-qtls")
(version "0.3.2") (version "0.4.1")
(source (origin (source (origin
(method git-fetch) (method git-fetch)
(uri (git-reference (uri (git-reference
@ -3053,7 +3051,7 @@ mutex, simply ignore the RLock/RUnlock functions.")
(file-name (git-file-name name version)) (file-name (git-file-name name version))
(sha256 (sha256
(base32 (base32
"1mdymj66qrqy80pfkwy9s9z9ifkg251whngw5lim09zm90wv2q7a")))) "0dz60y98nm7l70hamq0v2vrs2dspyr5yqhnrds2dfh7hchxvq76j"))))
(build-system go-build-system) (build-system go-build-system)
(arguments (arguments
'(#:import-path "github.com/marten-seemann/qtls" '(#: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") (home-page "https://github.com/marten-seemann/qtls")
(license license:bsd-3))) (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 (define-public go-github-com-cheekybits-genny
(package (package
(name "go-github-com-cheekybits-genny") (name "go-github-com-cheekybits-genny")
@ -3094,7 +3114,7 @@ implementation of generics.")
(define-public go-github-com-lucas-clemente-quic-go (define-public go-github-com-lucas-clemente-quic-go
(package (package
(name "go-github-com-lucas-clemente-quic-go") (name "go-github-com-lucas-clemente-quic-go")
(version "0.12.1") (version "0.14.4")
(source (origin (source (origin
(method git-fetch) (method git-fetch)
(uri (git-reference (uri (git-reference
@ -3103,7 +3123,7 @@ implementation of generics.")
(file-name (git-file-name name version)) (file-name (git-file-name name version))
(sha256 (sha256
(base32 (base32
"156nhq4dvw7mr08j952248v81q7702phbn4mp228319sahnbv65h")))) "04l3gqbc3gh079n8vgnrsf8ypgv8sl63xjf28jqfrb45v2l73vyz"))))
(build-system go-build-system) (build-system go-build-system)
(arguments (arguments
'(#:import-path "github.com/lucas-clemente/quic-go" '(#:import-path "github.com/lucas-clemente/quic-go"
@ -3112,6 +3132,7 @@ implementation of generics.")
(propagated-inputs (propagated-inputs
`(("go-golang-org-x-crypto" ,go-golang-org-x-crypto) `(("go-golang-org-x-crypto" ,go-golang-org-x-crypto)
("go-github-com-cheekybits-genny" ,go-github-com-cheekybits-genny) ("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-marten-seemann-qtls" ,go-github-com-marten-seemann-qtls)
("go-github-com-golang-protobuf-proto" ,go-github-com-golang-protobuf-proto))) ("go-github-com-golang-protobuf-proto" ,go-github-com-golang-protobuf-proto)))
(synopsis "QUIC in Go") (synopsis "QUIC in Go")
@ -3496,14 +3517,14 @@ efficient space usage.")
(modify-phases %standard-phases (modify-phases %standard-phases
(add-after 'unpack 'patch-import-path (add-after 'unpack 'patch-import-path
(lambda _ (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. ;; more information.
;; <https://github.com/spaolacci/murmur3/issues/29> ;; <https://github.com/spaolacci/murmur3/issues/29>
(substitute* "src/github.com/willf/bloom/bloom.go" (substitute* "src/github.com/willf/bloom/bloom.go"
(("spaolacci") "calmh")) (("spaolacci") "twmb"))
#t))))) #t)))))
(propagated-inputs (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))) ("go-github-com-willf-bitset" ,go-github-com-willf-bitset)))
(synopsis "Bloom filters in Go") (synopsis "Bloom filters in Go")
(description "This package provides a Go implementation of bloom filters, (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 Timothy Sample <samplet@ngyro.com>
;;; Copyright © 2019, 2020 Martin Becze <mjbecze@riseup.net> ;;; Copyright © 2019, 2020 Martin Becze <mjbecze@riseup.net>
;;; Copyright © 2020 Evan Straw <evan.straw99@gmail.com> ;;; Copyright © 2020 Evan Straw <evan.straw99@gmail.com>
;;; Copyright © 2020 Jack Hill <jackhill@jackhill.us>
;;; ;;;
;;; This file is part of GNU Guix. ;;; This file is part of GNU Guix.
;;; ;;;
@ -464,10 +465,23 @@ you send to a FIFO file.")
("automake" ,automake) ("automake" ,automake)
("pkg-config" ,pkg-config) ("pkg-config" ,pkg-config)
("texinfo" ,texinfo))) ("texinfo" ,texinfo)))
(inputs `(("guile" ,guile-2.2))) (inputs `(("guile" ,guile-3.0)))
(propagated-inputs `(("guile2.2-lib" ,guile2.2-lib))) (propagated-inputs `(("guile-lib" ,guile-lib)))
(arguments (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 (add-before 'configure 'set-guilesitedir
(lambda _ (lambda _
(substitute* "Makefile.in" (substitute* "Makefile.in"
@ -482,6 +496,24 @@ $(datadir)/guile/site/$(GUILE_EFFECTIVE_VERSION)\n"))
(("^guilesitedir =.*$") (("^guilesitedir =.*$")
"guilesitedir = \ "guilesitedir = \
$(datadir)/guile/site/$(GUILE_EFFECTIVE_VERSION)\n")) $(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))))) #t)))))
(home-page "https://github.com/artyom-poptsov/guile-dsv") (home-page "https://github.com/artyom-poptsov/guile-dsv")
(synopsis "DSV module for Guile") (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.") Unix-style DSV format and RFC 4180 format.")
(license license:gpl3+))) (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 (define-public guile-fibers
(package (package
(name "guile-fibers") (name "guile-fibers")
@ -523,7 +562,10 @@ Unix-style DSV format and RFC 4180 format.")
(("#:use-module \\(fibers\\)") (("#:use-module \\(fibers\\)")
(string-append "#:use-module (fibers)\n" (string-append "#:use-module (fibers)\n"
"#:use-module (ice-9 threads)\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) (build-system gnu-build-system)
(arguments (arguments
'(;; The code uses 'scm_t_uint64' et al., which are deprecated in 3.0. '(;; 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 packages)
#:use-module ((guix licenses) #:prefix license:) #:use-module ((guix licenses) #:prefix license:)
#:use-module (guix build-system haskell) #:use-module (guix build-system haskell)
#:use-module (gnu packages)
#:use-module (gnu packages base) #:use-module (gnu packages base)
#:use-module (gnu packages curl) #:use-module (gnu packages curl)
#:use-module (gnu packages gl) #:use-module (gnu packages gl)
@ -342,15 +341,14 @@ to @code{cabal repl}).")
(define-public git-annex (define-public git-annex
(package (package
(name "git-annex") (name "git-annex")
(version "8.20200501") (version "8.20200522")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
(uri (string-append "https://hackage.haskell.org/package/" (uri (string-append "https://hackage.haskell.org/package/"
"git-annex/git-annex-" version ".tar.gz")) "git-annex/git-annex-" version ".tar.gz"))
(patches (search-patches "git-annex-S3v4.patch"))
(sha256 (sha256
(base32 "19rggaymvqy7r61n2rl2nigwdi2hzq5l1afcd5l0k1vbacwgq4jl")))) (base32 "1v71k5k9mcj1nq4pb8apx99rgw2rmckr6yshhvjl1dr6j70d67x8"))))
(build-system haskell-build-system) (build-system haskell-build-system)
(arguments (arguments
`(#:configure-flags `(#: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 (define-public libavif
(package (package
(name "libavif") (name "libavif")
(version "0.7.1") (version "0.7.3")
(source (origin (source (origin
(method git-fetch) (method git-fetch)
(uri (git-reference (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)) (file-name (git-file-name name version))
(sha256 (sha256
(base32 (base32
"1xybjbbprvfsrwgysrn7grg6yp7v6ch5vci7zvdcdzcgyrbph172")))) "17hagdngpc4xzrr0aa48nx399y5lawyyx9cpcdhpds1mqk6p77lp"))))
(build-system cmake-build-system) (build-system cmake-build-system)
(arguments (arguments
`(#:configure-flags '("-DAVIF_CODEC_AOM=ON" "-DAVIF_CODEC_DAV1D=ON" `(#: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, 2019 Marius Bakke <mbakke@fastmail.com>
;;; Copyright © 2017 Oleg Pykhalov <go.wigust@gmail.com> ;;; Copyright © 2017 Oleg Pykhalov <go.wigust@gmail.com>
;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr> ;;; 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. ;;; 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 (define-public kodi
(package (package
(name "kodi") (name "kodi")
(version "18.6") (version "18.7")
(source (origin (source (origin
(method git-fetch) (method git-fetch)
(uri (git-reference (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)) (file-name (git-file-name name version))
(sha256 (sha256
(base32 (base32
"0rwymipn5hljy5xrslzmrljmj6f9wb191wi7gjw20wl6sv44d0bk")) "082cpih84j7v29w55qhj0rdia7hdjpwi81qywiwawd4vlyimpv2h"))
(patches (search-patches "kodi-skip-test-449.patch" (patches (search-patches "kodi-skip-test-449.patch"
"kodi-increase-test-timeout.patch" "kodi-increase-test-timeout.patch"
"kodi-set-libcurl-ssl-parameters.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.") "This package provides a Python binding to LLVM for use in Numba.")
(license license:bsd-3))) (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 (define-public emacs-clang-format
(package (package
(inherit clang) (inherit clang)

View file

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

View file

@ -440,7 +440,16 @@ authentication.")
version "/pidgin-" version ".tar.bz2")) version "/pidgin-" version ".tar.bz2"))
(sha256 (sha256
(base32 "13vdqj70315p9rzgnbxjp9c51mdzf1l4jg1kvnylc4bidw61air7")) (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) (build-system glib-or-gtk-build-system)
(native-inputs (native-inputs
`(("pkg-config" ,pkg-config) `(("pkg-config" ,pkg-config)
@ -448,7 +457,12 @@ authentication.")
("intltool" ,intltool) ("intltool" ,intltool)
("gconf" ,gconf) ("gconf" ,gconf)
("python" ,python-2) ("python" ,python-2)
("doxygen" ,doxygen))) ("doxygen" ,doxygen)
;; For bootstrapping after applying pidgin-libnm.patch.
("autoconf" ,autoconf)
("automake" ,automake)
("libtool" ,libtool)))
(inputs (inputs
`(("gtk+" ,gtk+-2) `(("gtk+" ,gtk+-2)
("libgcrypt" ,libgcrypt) ("libgcrypt" ,libgcrypt)

View file

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

View file

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

View file

@ -21,7 +21,7 @@
;;; Copyright © 2018 Arun Isaac <arunisaac@systemreboot.net> ;;; Copyright © 2018 Arun Isaac <arunisaac@systemreboot.net>
;;; Copyright © 2018 Pierre Neidhardt <mail@ambrevar.xyz> ;;; Copyright © 2018 Pierre Neidhardt <mail@ambrevar.xyz>
;;; Copyright © 2018 Amirouche Boubekki <amirouche@hypermove.net> ;;; 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 Jens Mølgaard <jens@zete.tk>
;;; Copyright © 2019 Tanguy Le Carrour <tanguy@bioneland.org> ;;; Copyright © 2019 Tanguy Le Carrour <tanguy@bioneland.org>
;;; Copyright © 2020 Guillaume Le Vaillant <glv@posteo.net> ;;; Copyright © 2020 Guillaume Le Vaillant <glv@posteo.net>
@ -196,7 +196,7 @@ algorithms AES or Twofish.")
(define-public pwsafe (define-public pwsafe
(package (package
(name "pwsafe") (name "pwsafe")
(version "3.50.0") (version "3.52.0")
(home-page "https://www.pwsafe.org/") (home-page "https://www.pwsafe.org/")
(source (source
(origin (origin
@ -205,7 +205,7 @@ algorithms AES or Twofish.")
(url "https://github.com/pwsafe/pwsafe.git") (url "https://github.com/pwsafe/pwsafe.git")
(commit version))) (commit version)))
(sha256 (sha256
(base32 "01kfssd2vr64yh4dqhch58x36n3aj3hpj5n560f41rsxym69c6qs")) (base32 "1ka7xsl63v0559fzf3pwc1iqr37gwr4vq5iaxa2hzar2g28hsxvh"))
(file-name (git-file-name name version)))) (file-name (git-file-name name version))))
(build-system cmake-build-system) (build-system cmake-build-system)
(native-inputs (native-inputs
@ -232,15 +232,7 @@ algorithms AES or Twofish.")
(display "find_package(GTest) (display "find_package(GTest)
add_subdirectory(src/test)\n" cmake-port) add_subdirectory(src/test)\n" cmake-port)
(close cmake-port) (close cmake-port)
#t))) #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)))))
(synopsis "Password safe with automatic input and key generation") (synopsis "Password safe with automatic input and key generation")
(description "pwsafe is a password manager originally designed by Bruce (description "pwsafe is a password manager originally designed by Bruce
Schneier. It offers a simple UI to manage passwords for different services. 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 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 --- a/src/bin/e_auth.c
+++ b/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 pw",
- snprintf(buf, sizeof(buf), "%s/enlightenment/utils/enlightenment_ckpasswd",
- e_prefix_lib_get()); - e_prefix_lib_get());
+ snprintf(buf, sizeof(buf), "/run/setuid-programs/enlightenment_ckpasswd"); + snprintf(buf, sizeof(buf), "/run/setuid-programs/enlightenment_ckpasswd");
exe = ecore_exe_pipe_run(buf, ECORE_EXE_PIPE_WRITE, NULL); exe = ecore_exe_pipe_run(buf, ECORE_EXE_PIPE_WRITE, NULL);
if (ecore_exe_send(exe, passwd, strlen(passwd)) != EINA_TRUE) goto out; if (!exe) goto out;
diff --git a/src/bin/e_backlight.c b/src/bin/e_backlight.c if (ecore_exe_send(exe, passwd, pwlen) != EINA_TRUE) goto out;
index 2bced6766..208e583ba 100644 @@ -46,9 +44,7 @@ e_auth_polkit_begin(char *passwd, const char *cookie, unsigned int uid)
--- a/src/bin/e_backlight.c pwlen = strlen(passwd);
+++ b/src/bin/e_backlight.c if (pwlen == 0) goto out;
@@ -521,8 +521,8 @@ _bl_sys_level_set(double val)
} - snprintf(buf, sizeof(buf),
// fprintf(stderr, "SET: %1.3f\n", val); - "%s/enlightenment/utils/enlightenment_ckpasswd pk",
snprintf(buf, sizeof(buf), - e_prefix_lib_get());
- "%s/enlightenment/utils/enlightenment_backlight %i %s", + snprintf(buf, sizeof(buf), "/run/setuid-programs/enlightenment_ckpasswd");
- e_prefix_lib_get(), (int)(val * 1000.0), bl_sysval); exe = ecore_exe_pipe_run(buf, ECORE_EXE_PIPE_WRITE, NULL);
+ "/run/setuid-programs/enlightenment_backlight %i %s", if (!exe) goto out;
+ (int)(val * 1000.0), bl_sysval); snprintf(buf, sizeof(buf), "%s %u %s", cookie, uid, passwd);
bl_sys_set_exe = ecore_exe_run(buf, NULL);
}
#endif // HAVE_EEZE || __FreeBSD_kernel__
diff --git a/src/bin/e_fm/e_fm_main_eeze.c b/src/bin/e_fm/e_fm_main_eeze.c 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 --- a/src/bin/e_fm/e_fm_main_eeze.c
+++ b/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) @@ -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); 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); 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 diff --git a/src/bin/e_start_main.c b/src/bin/e_start_main.c
index 671fbcd9a..90ee04cf1 100644 index b2c439455..cb16c7bd4 100644
--- a/src/bin/e_sys.c --- a/src/bin/e_start_main.c
+++ b/src/bin/e_sys.c +++ b/src/bin/e_start_main.c
@@ -702,20 +702,16 @@ _e_sys_cb_timer(void *data EINA_UNUSED) @@ -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), snprintf(buf, sizeof(buf),
- "%s/enlightenment/utils/enlightenment_sys -t halt", - "%s/enlightenment/utils/enlightenment_system", e_prefix_lib_get());
- e_prefix_lib_get()); + "/run/setuid-programs/enlightenment_system");
+ "/run/setuid-programs/enlightenment_sys -t halt"); _system_exe = ecore_exe_pipe_run
_e_sys_halt_check_exe = ecore_exe_run(buf, NULL); (buf, ECORE_EXE_NOT_LEADER | ECORE_EXE_TERM_WITH_PARENT |
snprintf(buf, sizeof(buf), ECORE_EXE_PIPE_READ | ECORE_EXE_PIPE_WRITE, NULL);
- "%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

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

View file

@ -77,6 +77,7 @@
;;; Copyright © 2020 Lars-Dominik Braun <ldb@leibniz-psychology.org> ;;; Copyright © 2020 Lars-Dominik Braun <ldb@leibniz-psychology.org>
;;; Copyright © 2020 Alex ter Weele <alex.ter.weele@gmail.com> ;;; Copyright © 2020 Alex ter Weele <alex.ter.weele@gmail.com>
;;; Copyright © 2020 Matthew Kraai <kraai@ftbfs.org> ;;; Copyright © 2020 Matthew Kraai <kraai@ftbfs.org>
;;; Copyright © 2020 Ryan Prior <rprior@protonmail.com>
;;; ;;;
;;; This file is part of GNU Guix. ;;; 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 (define-public python2-setuptools-scm
(package-with-python2 python-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 (define-public python-pathlib2
(package (package
(name "python-pathlib2") (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-contextlib2" ,python2-contextlib2-bootstrap)
("python-importlib-resources" ,python2-importlib-resources-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 (define-public python-jaraco-packaging
(package (package
(name "python-jaraco-packaging") (name "python-jaraco-packaging")
@ -8786,6 +8825,29 @@ functions to find and load entry points.")
(define-public python2-entrypoints (define-public python2-entrypoints
(package-with-python2 python-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 (define-public python-nbconvert
(package (package
(name "python-nbconvert") (name "python-nbconvert")
@ -13008,33 +13070,16 @@ PNG, JPEG, JPEG2000 and GIF files in pure Python.")
(define-public python-argcomplete (define-public python-argcomplete
(package (package
(name "python-argcomplete") (name "python-argcomplete")
(version "1.10.3") (version "1.11.1")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
(uri (pypi-uri "argcomplete" version)) (uri (pypi-uri "argcomplete" version))
(sha256 (sha256
(base32 (base32
"02jkc44drb0yjz6x28lvg6rj607n8r2irdpdvyylm8xnycn54zx3")))) "0h1przxffrhqvi46k40pzjsvdrq4zc3sl1pc96kkigqppq0vdrss"))
(patches (search-patches "python-argcomplete-1.11.1-fish31.patch"))))
(build-system python-build-system) (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 (native-inputs
`(("python-coverage" ,python-coverage) `(("python-coverage" ,python-coverage)
("python-flake8" ,python-flake8) ("python-flake8" ,python-flake8)

View file

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

View file

@ -43,6 +43,7 @@
#:use-module (gnu packages xiph) #:use-module (gnu packages xiph)
#:use-module (gnu packages xml) #:use-module (gnu packages xml)
#:use-module (guix build-system gnu) #:use-module (guix build-system gnu)
#:use-module (guix build-system meson)
#:use-module (guix download) #:use-module (guix download)
#:use-module (guix packages) #:use-module (guix packages)
#:use-module ((guix licenses) #:prefix license:) #:use-module ((guix licenses) #:prefix license:)
@ -101,16 +102,26 @@ system to use the host GPU to accelerate 3D rendering.")
(define-public spice-protocol (define-public spice-protocol
(package (package
(name "spice-protocol") (name "spice-protocol")
(version "0.14.1") (version "0.14.2")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append (uri (string-append
"https://www.spice-space.org/download/releases/" "https://www.spice-space.org/download/releases/"
"spice-protocol-" version ".tar.bz2")) "spice-protocol-" version ".tar.xz"))
(sha256 (sha256
(base32 (base32
"0ahk5hlanwhbc64r80xmchdav3ls156cvh9l68a0l22bhdhxmrkr")))) "1sgi9ksb781qs47pdbw0bmnyg8dgayn5xrzj6vzdy043nv466flg"))))
(build-system gnu-build-system) (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") (synopsis "Protocol headers for the SPICE protocol")
(description "SPICE (the Simple Protocol for Independent Computing (description "SPICE (the Simple Protocol for Independent Computing
Environments) is a remote-display system built for virtual environments Environments) is a remote-display system built for virtual environments

View file

@ -32,7 +32,7 @@
(define-public syncthing (define-public syncthing
(package (package
(name "syncthing") (name "syncthing")
(version "1.4.2") (version "1.5.0")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append "https://github.com/syncthing/syncthing" (uri (string-append "https://github.com/syncthing/syncthing"
@ -40,7 +40,7 @@
"/syncthing-source-v" version ".tar.gz")) "/syncthing-source-v" version ".tar.gz"))
(sha256 (sha256
(base32 (base32
"16dqpbn4saxmmmqd5ya8zdkwvxzz4nim1p4w954zkkdz3cyg86h6")) "1394b8y4nllihnjngc0kjpdy7pvyh6v1h09hkn8rdmwxpsdkqkjb"))
(modules '((guix build utils))) (modules '((guix build utils)))
;; Delete bundled ("vendored") free software source code. ;; Delete bundled ("vendored") free software source code.
(snippet '(begin (snippet '(begin
@ -77,7 +77,7 @@
("go-github-com-syndtr-goleveldb" ,go-github-com-syndtr-goleveldb) ("go-github-com-syndtr-goleveldb" ,go-github-com-syndtr-goleveldb)
("go-github-com-thejerf-suture" ,go-github-com-thejerf-suture) ("go-github-com-thejerf-suture" ,go-github-com-thejerf-suture)
("go-golang-org-x-time" ,go-golang-org-x-time) ("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-gogo-protobuf" ,go-github-com-gogo-protobuf)
("go-github-com-shirou-gopsutil" ,go-github-com-shirou-gopsutil) ("go-github-com-shirou-gopsutil" ,go-github-com-shirou-gopsutil)
("go-github-com-prometheus-client-golang" ("go-github-com-prometheus-client-golang"
@ -394,7 +394,7 @@ compression format.")
(define-public go-github-com-jackpal-gateway (define-public go-github-com-jackpal-gateway
(package (package
(name "go-github-com-jackpal-gateway") (name "go-github-com-jackpal-gateway")
(version "1.0.5") (version "1.0.6")
(source (origin (source (origin
(method git-fetch) (method git-fetch)
(uri (git-reference (uri (git-reference
@ -403,7 +403,7 @@ compression format.")
(file-name (git-file-name name version)) (file-name (git-file-name name version))
(sha256 (sha256
(base32 (base32
"1ird5xmizj632l3dq24s2xgb8w1dn6v8xznlqz252gvngyr2gjl1")))) "1yms2dw4dnz4cvj9vhwh6193d50jhvn5awsp2g3a4lcc3sjrgd6m"))))
(build-system go-build-system) (build-system go-build-system)
(arguments (arguments
`(#:import-path "github.com/jackpal/gateway")) `(#:import-path "github.com/jackpal/gateway"))
@ -942,60 +942,51 @@ server tools for Prometheus metrics.")
(home-page "https://github.com/prometheus/client_golang") (home-page "https://github.com/prometheus/client_golang")
(license asl2.0))) (license asl2.0)))
(define-public go-gopkg.in-asn1-ber.v1 (define-public go-github-com-go-asn1-ber-asn1-ber
(package (package
(name "go-gopkg.in-asn1-ber.v1") (name "go-github-com-go-asn1-ber-asn1-ber")
(version "1.3") (version "1.3.1")
(source (origin (source (origin
(method git-fetch) (method git-fetch)
(uri (git-reference (uri (git-reference
(url "https://gopkg.in/asn1-ber.v1") (url "https://github.com/go-asn1-ber/asn1-ber")
(commit (string-append "v" version)))) (commit (string-append "v" version))))
(file-name (git-file-name name version)) (file-name (git-file-name name version))
(sha256 (sha256
(base32 (base32
"00ixms8x3lrhywbvq5v2sagcqsxa1pcnlk17dp5lnwckv3xg4psb")))) "0dxfmgk84fn0p6pz3i0cspynh6rly5pfk9wghm1q07mx99npln02"))))
(build-system go-build-system) (build-system go-build-system)
(arguments (arguments
'(#:import-path "gopkg.in/asn1-ber.v1" '(#:import-path "github.com/go-asn1-ber/asn1-ber"))
;; 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))))))
(synopsis "ASN.1 BER encoding and decoding in Go") (synopsis "ASN.1 BER encoding and decoding in Go")
(description "This package provides ASN.1 BER encoding and decoding in the (description "This package provides ASN.1 BER encoding and decoding in the
Go language.") Go language.")
(home-page "https://gopkg.in/asn1-ber.v1") (home-page "https://github.com/go-asn1-ber/asn1-ber")
(license expat))) (license expat)))
(define-public go-gopkg.in-ldap.v2 (define-public go-github-com-go-ldap-ldap
(package (package
(name "go-gopkg.in-ldap.v2") (name "go-github-com-go-ldap-ldap")
(version "2.5.1") (version "3.1.7")
(source (origin (source (origin
(method git-fetch) (method git-fetch)
(uri (git-reference (uri (git-reference
(url "https://gopkg.in/ldap.v2") (url "https://github.com/go-ldap/ldap")
(commit (string-append "v" version)))) (commit (string-append "v" version))))
(file-name (git-file-name name version)) (file-name (git-file-name name version))
(sha256 (sha256
(base32 (base32
"1wf81wy04nhkqs0dg5zkivr4sh37r83bxrfwjz9vr4jq6vmljr3h")))) "1z6wxia7a1jkmasa9mm6g4n8f0qqbp5rw6vk0zyh4vzk7azklnj2"))))
(build-system go-build-system) (build-system go-build-system)
(arguments (arguments
'(#:import-path "gopkg.in/ldap.v2" '(#:import-path "github.com/go-ldap/ldap/v3"
#:tests? #f)) ; the test suite requires network access #:tests? #f)) ; test suite requires internet access
(propagated-inputs (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") (synopsis "LDAP v3 functionality for Go")
(description "This package provides basic LDAP v3 functionality in the Go (description "This package provides basic LDAP v3 functionality in the Go
language.") language.")
(home-page "https://gopkg.in/ldap.v2")
(license expat))) (license expat)))
(define-public go-github-com-flynn-archive-go-shlex (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 Vincent Legoll <vincent.legoll@gmail.com>
;;; Copyright © 2020 Guillaume Le Vaillant <glv@posteo.net> ;;; Copyright © 2020 Guillaume Le Vaillant <glv@posteo.net>
;;; Copyright © 2020 Alex McGrath <amk@amk.ie> ;;; Copyright © 2020 Alex McGrath <amk@amk.ie>
;;; Copyright © 2020 Michael Rohleder <mike@rohleder.de>
;;; ;;;
;;; This file is part of GNU Guix. ;;; This file is part of GNU Guix.
;;; ;;;
@ -283,7 +284,7 @@ television and DVD. It is also known as AC-3.")
(define-public libaom (define-public libaom
(package (package
(name "libaom") (name "libaom")
(version "1.0.0-errata1-avif") (version "2.0.0")
(source (origin (source (origin
(method git-fetch) (method git-fetch)
(uri (git-reference (uri (git-reference
@ -292,7 +293,7 @@ television and DVD. It is also known as AC-3.")
(file-name (git-file-name name version)) (file-name (git-file-name name version))
(sha256 (sha256
(base32 (base32
"169yfgh7zigc21h71qclfyr7s4wwp2i9vbr4z6pkabypvass4v7m")))) "1616xjhj6770ykn82ml741h8hx44v507iky3s9h7a5lnk9d4cxzy"))))
(build-system cmake-build-system) (build-system cmake-build-system)
(native-inputs (native-inputs
`(("perl" ,perl) `(("perl" ,perl)
@ -3019,15 +3020,15 @@ practically any type of media.")
(define-public libmediainfo (define-public libmediainfo
(package (package
(name "libmediainfo") (name "libmediainfo")
(version "0.7.95") (version "20.03")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append "https://mediaarea.net/download/source/" (uri (string-append "https://mediaarea.net/download/source/"
name "/" version"/" name "/" version "/"
name "_" version ".tar.bz2")) name "_" version ".tar.xz"))
(sha256 (sha256
(base32 (base32
"1kchh6285b07z5nixv619hc9gml2ysdayicdiv30frrlqiyxqw4b")))) "0wkzj5s34m8dvy7hif4h8f90q8ncrzd930gij1zzw3h5nw732j38"))))
;; TODO add a Big Buck Bunny webm for tests. ;; TODO add a Big Buck Bunny webm for tests.
(native-inputs (native-inputs
`(("autoconf" ,autoconf) `(("autoconf" ,autoconf)
@ -3077,7 +3078,7 @@ MPEG-2, MPEG-4, DVD (VOB)...
(define-public mediainfo (define-public mediainfo
(package (package
(name "mediainfo") (name "mediainfo")
(version "18.12") (version "20.03")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
;; Warning: This source has proved unreliable 1 time at least. ;; Warning: This source has proved unreliable 1 time at least.
@ -3085,10 +3086,10 @@ MPEG-2, MPEG-4, DVD (VOB)...
;; happens again. ;; happens again.
(uri (string-append "https://mediaarea.net/download/source/" (uri (string-append "https://mediaarea.net/download/source/"
name "/" version "/" name "/" version "/"
name "_" version ".tar.bz2")) name "_" version ".tar.xz"))
(sha256 (sha256
(base32 (base32
"1ix95ilcjlawcq6phh25cgplm3riqa2ii7ql82g8yagqs4ldqp6a")))) "1f1shnycf0f1fwka9k9s250l228xjkg0k4k73h8bpld8msighgnw"))))
(native-inputs (native-inputs
`(("autoconf" ,autoconf) `(("autoconf" ,autoconf)
("automake" ,automake) ("automake" ,automake)
@ -3693,7 +3694,7 @@ transitions, and effects and then export your film to many common formats.")
(define-public dav1d (define-public dav1d
(package (package
(name "dav1d") (name "dav1d")
(version "0.6.0") (version "0.7.0")
(source (source
(origin (origin
(method url-fetch) (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")) "/dav1d/" version "/dav1d-" version ".tar.xz"))
(sha256 (sha256
(base32 (base32
"0w5k572jzxp7zwdbsa0jgjzri6hsrkydawzzilrw46nxpcak37q9")))) "0xcykraf42gkymzqx1k1lcdclgk9y5yf7rr56vslrgmr0r849qnk"))))
(build-system meson-build-system) (build-system meson-build-system)
(native-inputs `(("nasm" ,nasm))) (native-inputs `(("nasm" ,nasm)))
(home-page "https://code.videolan.org/videolan/dav1d") (home-page "https://code.videolan.org/videolan/dav1d")

View file

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

View file

@ -12,6 +12,7 @@
;;; Copyright © 2019 Rutger Helling <rhelling@mykolab.com> ;;; Copyright © 2019 Rutger Helling <rhelling@mykolab.com>
;;; Copyright © 2019 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2019 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2020 Brice Waegeneire <brice@waegenei.re> ;;; Copyright © 2020 Brice Waegeneire <brice@waegenei.re>
;;; Copyright © 2020 Ryan Prior <rprior@protonmail.com>
;;; ;;;
;;; This file is part of GNU Guix. ;;; This file is part of GNU Guix.
;;; ;;;
@ -55,6 +56,7 @@
#:use-module (gnu packages pkg-config) #:use-module (gnu packages pkg-config)
#:use-module (gnu packages python) #:use-module (gnu packages python)
#:use-module (gnu packages python-xyz) #:use-module (gnu packages python-xyz)
#:use-module (gnu packages python-web)
#:use-module (gnu packages tls) #:use-module (gnu packages tls)
#:use-module (gnu packages xml)) #: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.") traversing network address translators (@dfn{NAT}s) and firewalls.")
(license license:gpl2))) (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 (define-public tinc
(package (package
(name "tinc") (name "tinc")

View file

@ -1268,14 +1268,14 @@ its size
(define-public polybar (define-public polybar
(package (package
(name "polybar") (name "polybar")
(version "3.4.2") (version "3.4.3")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
(uri (string-append "https://github.com/polybar/polybar/releases/" (uri (string-append "https://github.com/polybar/polybar/releases/"
"download/" version "/polybar-" version ".tar")) "download/" version "/polybar-" version ".tar"))
(sha256 (sha256
(base32 "0fmnviz4b01aw50nkv4yibm8ykc5ff860ynw3xb1ymlsjrvwj8jd")))) (base32 "0bw22qvbcdvyd0qv3ax48r34rnclbbb6dyb8h8zljq1r3lf15vfl"))))
(build-system cmake-build-system) (build-system cmake-build-system)
(arguments (arguments
;; Test is disabled because it requires downloading googletest from the ;; 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, 2017, 2018, 2019 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2016 Leo Famulari <leo@famulari.name> ;;; Copyright © 2016 Leo Famulari <leo@famulari.name>
;;; Copyright © 2016 Alex Kost <alezost@gmail.com> ;;; 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 © 2016 Petter <petter@mykolab.ch>
;;; Copyright © 2017 Mekeor Melire <mekeor.melire@gmail.com> ;;; Copyright © 2017 Mekeor Melire <mekeor.melire@gmail.com>
;;; Copyright © 2017 Nikita <nikita@n0.is> ;;; 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 (base32
"1fi27b73x85qqar526dbd33av7mahca2ykaqwr7siqiw1qqcby6j")))) "1fi27b73x85qqar526dbd33av7mahca2ykaqwr7siqiw1qqcby6j"))))
(build-system gnu-build-system) (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 (native-inputs
`(("pkg-config" ,pkg-config) `(("pkg-config" ,pkg-config)
("intltool" ,intltool))) ("intltool" ,intltool)))
@ -1158,7 +1202,13 @@ the X.Org X Server version 1.7 and later (X11R7.5 or later).")
("libx11" ,libx11) ("libx11" ,libx11)
("libxcb" ,libxcb) ("libxcb" ,libxcb)
("libxxf86vm" ,libxxf86vm) ("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") (home-page "https://github.com/jonls/redshift")
(synopsis "Adjust the color temperature of your screen") (synopsis "Adjust the color temperature of your screen")
(description (description
@ -1186,6 +1236,24 @@ color temperature should be set to match the lamps in your room.")
(base32 (base32
"0nbkcw3avmzjg1jr1g9yfpm80kzisy55idl09b6wvzv2sz27n957")))) "0nbkcw3avmzjg1jr1g9yfpm80kzisy55idl09b6wvzv2sz27n957"))))
(build-system gnu-build-system) (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 (native-inputs
`(("autoconf" ,autoconf) `(("autoconf" ,autoconf)
("automake" ,automake) ("automake" ,automake)

View file

@ -1036,29 +1036,12 @@ with the administrator's password."
(match-record enlightenment-desktop-configuration (match-record enlightenment-desktop-configuration
<enlightenment-desktop-configuration> <enlightenment-desktop-configuration>
(enlightenment) (enlightenment)
(let ((module-arch (match (string-tokenize (%current-system) (list (file-append enlightenment
(char-set-complement (char-set #\-))) "/lib/enlightenment/utils/enlightenment_sys")
((arch "linux") (string-append "linux-gnu-" arch)) (file-append enlightenment
((arch "gnu") (string-append "gnu-" arch))))) "/lib/enlightenment/utils/enlightenment_system")
(list (file-append enlightenment (file-append enlightenment
"/lib/enlightenment/utils/enlightenment_sys") "/lib/enlightenment/utils/enlightenment_ckpasswd"))))
(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"))))))
(define enlightenment-desktop-service-type (define enlightenment-desktop-service-type
(service-type (service-type

View file

@ -73,6 +73,7 @@
channel-instances->manifest channel-instances->manifest
%channel-profile-hooks %channel-profile-hooks
channel-instances->derivation channel-instances->derivation
ensure-forward-channel-update
profile-channels profile-channels
@ -212,15 +213,18 @@ result is unspecified."
(loop rest))))) (loop rest)))))
(define* (latest-channel-instance store channel (define* (latest-channel-instance store channel
#:key (patches %patches)) #:key (patches %patches)
"Return the latest channel instance for CHANNEL." starting-commit)
"Return two values: the latest channel instance for CHANNEL, and its
relation to STARTING-COMMIT when provided."
(define (dot-git? file stat) (define (dot-git? file stat)
(and (string=? (basename file) ".git") (and (string=? (basename file) ".git")
(eq? 'directory (stat:type stat)))) (eq? 'directory (stat:type stat))))
(let-values (((checkout commit) (let-values (((checkout commit relation)
(update-cached-checkout (channel-url channel) (update-cached-checkout (channel-url channel)
#:ref (channel-reference channel)))) #:ref (channel-reference channel)
#:starting-commit starting-commit)))
(when (guix-channel? channel) (when (guix-channel? channel)
;; Apply the relevant subset of PATCHES directly in CHECKOUT. This is ;; Apply the relevant subset of PATCHES directly in CHECKOUT. This is
;; safe to do because 'switch-to-ref' eventually does a hard reset. ;; 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)) (let* ((name (url+commit->name (channel-url channel) commit))
(checkout (add-to-store store name #t "sha256" checkout (checkout (add-to-store store name #t "sha256" checkout
#:select? (negate dot-git?)))) #: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 "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 CHANNELS and the channels on which they depend.
of previously processed channels."
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 ;; Only process channels that are unique, or that are more specific than a
;; previous channel specification. ;; previous channel specification.
(define (ignore? channel others) (define (ignore? channel others)
@ -245,38 +292,53 @@ of previously processed channels."
(not (or (channel-commit a) (not (or (channel-commit a)
(channel-commit b)))))))) (channel-commit b))))))))
;; Accumulate a list of instances. A list of processed channels is also (define (current-commit name)
;; accumulated to decide on duplicate channel specifications. ;; Return the current commit for channel NAME.
(define-values (resulting-channels instances) (any (lambda (channel)
(fold2 (lambda (channel previous-channels instances) (and (eq? (channel-name channel) name)
(if (ignore? channel previous-channels) (channel-commit channel)))
(values previous-channels instances) current-channels))
(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))
(let ((instance-name (compose channel-name channel-instance-channel))) (let loop ((channels channels)
;; Remove all earlier channel specifications if they are followed by a (previous-channels '()))
;; more specific one. ;; Accumulate a list of instances. A list of processed channels is also
(values (delete-duplicates instances ;; accumulated to decide on duplicate channel specifications.
(lambda (a b) (define-values (resulting-channels instances)
(eq? (instance-name a) (instance-name b)))) (fold2 (lambda (channel previous-channels instances)
resulting-channels))) (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 (define* (checkout->channel-instance checkout
#:key commit #:key commit
@ -618,10 +680,20 @@ channel instances."
(define latest-channel-instances* (define latest-channel-instances*
(store-lift 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 "Return as a monadic value the derivation that builds the profile for the
latest instances of CHANNELS." latest instances of CHANNELS. CURRENT-CHANNELS and VALIDATE-PULL are passed
(mlet %store-monad ((instances (latest-channel-instances* channels))) to 'latest-channel-instances'."
(mlet %store-monad ((instances
(latest-channel-instances* channels
#:current-channels
current-channels
#:validate-pull
validate-pull)))
(channel-instances->derivation instances))) (channel-instances->derivation instances)))
(define (profile-channels profile) (define (profile-channels profile)

View file

@ -43,6 +43,7 @@
url+commit->name url+commit->name
latest-repository-commit latest-repository-commit
commit-difference commit-difference
commit-relation
git-checkout git-checkout
git-checkout? git-checkout?
@ -261,14 +262,16 @@ definitely available in REPOSITORY, false otherwise."
#:key #:key
(ref '(branch . "master")) (ref '(branch . "master"))
recursive? recursive?
starting-commit
(log-port (%make-void-port "w")) (log-port (%make-void-port "w"))
(cache-directory (cache-directory
(url-cache-directory (url-cache-directory
url (%repository-cache-directory) url (%repository-cache-directory)
#:recursive? recursive?))) #: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 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 REF is pair whose key is [branch | commit | tag | tag-or-commit ] and value
the associated data: [<branch name> | <sha1> | <tag name> | <string>]. 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")))) (remote-fetch (remote-lookup repository "origin"))))
(when recursive? (when recursive?
(update-submodules repository #:log-port log-port)) (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 ;; Reclaim file descriptors and memory mappings associated with
;; REPOSITORY as soon as possible. ;; 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-close! repository)) (repository-close! repository))
(values cache-directory (oid->string oid)))))) (values cache-directory (oid->string oid) relation)))))
(define* (latest-repository-commit store url (define* (latest-repository-commit store url
#:key #:key
@ -342,7 +355,7 @@ Log progress and checkout info to LOG-PORT."
(format log-port "updating checkout of '~a'...~%" url) (format log-port "updating checkout of '~a'...~%" url)
(let*-values (let*-values
(((checkout commit) (((checkout commit _)
(update-cached-checkout url (update-cached-checkout url
#:recursive? recursive? #:recursive? recursive?
#:ref ref #:ref ref
@ -405,6 +418,21 @@ that of OLD."
(cons head result) (cons head result)
(set-insert head visited))))))) (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. ;;; Checkouts.

View file

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

View file

@ -24,7 +24,7 @@
(define-module (guix import utils) (define-module (guix import utils)
#:use-module (guix base32) #:use-module (guix base32)
#:use-module ((guix build download) #:prefix build:) #: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 http-client)
#:use-module ((guix licenses) #:prefix license:) #:use-module ((guix licenses) #:prefix license:)
#:use-module (guix utils) #:use-module (guix utils)

View file

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

View file

@ -28,12 +28,15 @@
#:use-module (guix monads) #:use-module (guix monads)
#:use-module (guix gexp) #:use-module (guix gexp)
#:use-module (guix base32) #:use-module (guix base32)
#:autoload (guix base64) (base64-decode)
#:use-module (guix grafts) #:use-module (guix grafts)
#:use-module (guix derivations) #:use-module (guix derivations)
#:use-module (guix memoization) #:use-module (guix memoization)
#:use-module (guix build-system) #:use-module (guix build-system)
#:use-module (guix search-paths) #:use-module (guix search-paths)
#:use-module (guix sets) #:use-module (guix sets)
#:use-module (guix deprecation)
#:use-module (guix i18n)
#:use-module (ice-9 match) #:use-module (ice-9 match)
#:use-module (ice-9 vlist) #:use-module (ice-9 vlist)
#:use-module (ice-9 regex) #:use-module (ice-9 regex)
@ -43,16 +46,23 @@
#:use-module (srfi srfi-26) #:use-module (srfi srfi-26)
#:use-module (srfi srfi-34) #:use-module (srfi srfi-34)
#:use-module (srfi srfi-35) #:use-module (srfi srfi-35)
#:use-module (rnrs bytevectors)
#:use-module (web uri) #:use-module (web uri)
#:re-export (%current-system #:re-export (%current-system
%current-target-system %current-target-system
search-path-specification) ;for convenience search-path-specification) ;for convenience
#:export (origin #:export (content-hash
content-hash?
content-hash-algorithm
content-hash-value
origin
origin? origin?
this-origin this-origin
origin-uri origin-uri
origin-method origin-method
origin-sha256 origin-hash
origin-sha256 ;deprecated
origin-file-name origin-file-name
origin-actual-file-name origin-actual-file-name
origin-patches origin-patches
@ -62,6 +72,7 @@
origin-snippet origin-snippet
origin-modules origin-modules
base32 base32
base64
package package
package? package?
@ -155,15 +166,79 @@
;;; ;;;
;;; Code: ;;; 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 ;; The source of a package, such as a tarball URL and fetcher---called
;; "origin" to avoid name clash with `package-source', `source', etc. ;; "origin" to avoid name clash with `package-source', `source', etc.
(define-record-type* <origin> (define-record-type* <origin>
origin make-origin %origin make-origin
origin? origin?
this-origin this-origin
(uri origin-uri) ; string (uri origin-uri) ; string
(method origin-method) ; procedure (method origin-method) ; procedure
(sha256 origin-sha256) ; bytevector (hash origin-hash) ; <content-hash>
(file-name origin-file-name (default #f)) ; optional file name (file-name origin-file-name (default #f)) ; optional file name
;; Patches are delayed so that the 'search-patch' calls are made lazily, ;; Patches are delayed so that the 'search-patch' calls are made lazily,
@ -186,30 +261,60 @@
(patch-guile origin-patch-guile ; package or #f (patch-guile origin-patch-guile ; package or #f
(default #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) (define (print-origin origin port)
"Write a concise representation of ORIGIN to PORT." "Write a concise representation of ORIGIN to PORT."
(match origin (match origin
(($ <origin> uri method sha256 file-name patches) (($ <origin> uri method hash file-name patches)
(simple-format port "#<origin ~s ~a ~s ~a>" (simple-format port "#<origin ~s ~a ~s ~a>"
uri (bytevector->base32-string sha256) uri hash
(force patches) (force patches)
(number->string (object-address origin) 16))))) (number->string (object-address origin) 16)))))
(set-record-type-printer! <origin> print-origin) (set-record-type-printer! <origin> print-origin)
(define-syntax base32 (define-syntax-rule (define-compile-time-decoder name string->bytevector)
(lambda (s) "Define NAME as a macro that runs STRING->BYTEVECTOR at macro expansion time
"Return the bytevector corresponding to the given Nix-base32 if possible."
(define-syntax name
(lambda (s)
"Return the bytevector corresponding to the given textual
representation." representation."
(syntax-case s () (syntax-case s ()
((_ str) ((_ str)
(string? (syntax->datum #'str)) (string? (syntax->datum #'str))
;; A literal string: do the conversion at expansion time. ;; A literal string: do the conversion at expansion time.
(with-syntax ((bv (nix-base32-string->bytevector (with-syntax ((bv (string->bytevector (syntax->datum #'str))))
(syntax->datum #'str)))) #''bv))
#''bv)) ((_ str)
((_ str) #'(string->bytevector str))))))
#'(nix-base32-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) (define (origin-actual-file-name origin)
"Return the file name of ORIGIN, either its 'file-name' field or the file "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 ;; git, svn, cvs, etc. reference
#f)))) #f))))
(define %supported-systems (define %supported-systems
;; This is the list of system types that are supported. By default, we ;; This is the list of system types that are supported. By default, we
;; expect all packages to build successfully here. ;; expect all packages to build successfully here.
@ -1381,14 +1487,19 @@ unless you know what you are doing."
#:optional (system (%current-system))) #:optional (system (%current-system)))
"Return the derivation corresponding to ORIGIN." "Return the derivation corresponding to ORIGIN."
(match 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. ;; No patches, no snippet: this is a fixed-output derivation.
(method uri 'sha256 sha256 name #:system system)) (method uri
(($ <origin> uri method sha256 name (= force (patches ...)) snippet (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) (flags ...) inputs (modules ...) guile-for-build)
;; Patches and/or a snippet. ;; Patches and/or a snippet.
(mlet %store-monad ((source (method uri 'sha256 sha256 name (mlet %store-monad ((source (method uri
#:system system)) (content-hash-algorithm hash)
(content-hash-value hash)
name #:system system))
(guile (package->derivation (or guile-for-build (guile (package->derivation (or guile-for-build
(default-guile)) (default-guile))
system system

View file

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

View file

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

View file

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

View file

@ -81,7 +81,8 @@
(multiplexed-build-output? . #t) (multiplexed-build-output? . #t)
(graft? . #t) (graft? . #t)
(debug . 0) (debug . 0)
(verbosity . 1))) (verbosity . 1)
(validate-pull . ,ensure-forward-channel-update)))
(define (show-help) (define (show-help)
(display (G_ "Usage: guix pull [OPTION]... (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")) --commit=COMMIT download the specified COMMIT"))
(display (G_ " (display (G_ "
--branch=BRANCH download the tip of the specified BRANCH")) --branch=BRANCH download the tip of the specified BRANCH"))
(display (G_ "
--allow-downgrades allow downgrades to earlier channel revisions"))
(display (G_ " (display (G_ "
-N, --news display news compared to the previous generation")) -N, --news display news compared to the previous generation"))
(display (G_ " (display (G_ "
@ -158,6 +161,10 @@ Download and deploy the latest version of Guix.\n"))
(option '("branch") #t #f (option '("branch") #t #f
(lambda (opt name arg result) (lambda (opt name arg result)
(alist-cons 'ref `(branch . ,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 (option '(#\p "profile") #t #f
(lambda (opt name arg result) (lambda (opt name arg result)
(alist-cons 'profile (canonicalize-profile arg) (alist-cons 'profile (canonicalize-profile arg)
@ -188,6 +195,21 @@ Download and deploy the latest version of Guix.\n"))
%standard-build-options)) %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? (define* (display-profile-news profile #:key concise?
current-is-newer?) current-is-newer?)
"Display what's up in PROFILE--new packages, and all that. If "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?)) (substitutes? (assoc-ref opts 'substitutes?))
(dry-run? (assoc-ref opts 'dry-run?)) (dry-run? (assoc-ref opts 'dry-run?))
(channels (channel-list opts)) (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) (cond ((assoc-ref opts 'query)
(process-query opts profile)) (process-query opts profile))
((assoc-ref opts 'generation) ((assoc-ref opts 'generation)
@ -766,7 +790,12 @@ Use '~/.config/guix/channels.scm' instead."))
(ensure-default-profile) (ensure-default-profile)
(honor-x509-certificates store) (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) (format (current-error-port)
(N_ "Building from this channel:~%" (N_ "Building from this channel:~%"
"Building from these channels:~%" "Building from these channels:~%"

View file

@ -26,7 +26,7 @@
#:use-module (guix monads) #:use-module (guix monads)
#:use-module ((guix utils) #:select (substitute-keyword-arguments)) #:use-module ((guix utils) #:select (substitute-keyword-arguments))
#:use-module ((guix build utils) #:select (mkdir-p)) #: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 (guix build-system gnu)
#:use-module (gnu packages base) #:use-module (gnu packages base)
#:use-module (gnu packages bootstrap) #:use-module (gnu packages bootstrap)

View file

@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU ;;; 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 © 2015 Alex Kost <alezost@gmail.com>
;;; Copyright © 2019 Ricardo Wurmus <rekado@elephly.net> ;;; 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 (if version-loc
(let* ((loc (package-location package)) (let* ((loc (package-location package))
(old-version (package-version 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)) (old-url (match (origin-uri (package-source package))
((? string? url) url) ((? string? url) url)
(_ #f))) (_ #f)))

View file

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

View file

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

View file

@ -37,6 +37,7 @@
#:use-module (srfi srfi-34) #:use-module (srfi srfi-34)
#:use-module (srfi srfi-35) #:use-module (srfi srfi-35)
#:use-module (srfi srfi-64) #:use-module (srfi srfi-64)
#:use-module (ice-9 control)
#:use-module (ice-9 match)) #:use-module (ice-9 match))
(test-begin "channels") (test-begin "channels")
@ -136,11 +137,11 @@
(url "test"))) (url "test")))
(test-dir (channel-instance-checkout instance--simple))) (test-dir (channel-instance-checkout instance--simple)))
(mock ((guix git) update-cached-checkout (mock ((guix git) update-cached-checkout
(lambda* (url #:key ref) (lambda* (url #:key ref starting-commit)
(match url (match url
("test" (values test-dir "caf3cabba9e")) ("test" (values test-dir "caf3cabba9e" #f))
(_ (values (channel-instance-checkout instance--no-deps) (_ (values (channel-instance-checkout instance--no-deps)
"abcde1234"))))) "abcde1234" #f)))))
(with-store store (with-store store
(let ((instances (latest-channel-instances store (list channel)))) (let ((instances (latest-channel-instances store (list channel))))
(and (eq? 2 (length instances)) (and (eq? 2 (length instances))
@ -155,11 +156,11 @@
(url "test"))) (url "test")))
(test-dir (channel-instance-checkout instance--with-dupes))) (test-dir (channel-instance-checkout instance--with-dupes)))
(mock ((guix git) update-cached-checkout (mock ((guix git) update-cached-checkout
(lambda* (url #:key ref) (lambda* (url #:key ref starting-commit)
(match url (match url
("test" (values test-dir "caf3cabba9e")) ("test" (values test-dir "caf3cabba9e" #f))
(_ (values (channel-instance-checkout instance--no-deps) (_ (values (channel-instance-checkout instance--no-deps)
"abcde1234"))))) "abcde1234" #f)))))
(with-store store (with-store store
(let ((instances (latest-channel-instances store (list channel)))) (let ((instances (latest-channel-instances store (list channel))))
(and (= 2 (length instances)) (and (= 2 (length instances))
@ -178,6 +179,40 @@
"abc1234"))) "abc1234")))
instances))))))) 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" (test-assert "channel-instances->manifest"
;; Compute the manifest for a graph of instances and make sure we get a ;; 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 ;; derivation graph that mirrors the instance graph. This test also ensures

View file

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

View file

@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU ;;; 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. ;;; This file is part of GNU Guix.
;;; ;;;
@ -122,4 +122,44 @@
(lset= eq? (commit-difference commit4 commit1 (list commit5)) (lset= eq? (commit-difference commit4 commit1 (list commit5))
(list commit2 commit3 commit4))))))) (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") (test-end "git")

View file

@ -162,7 +162,11 @@ edges."
(let-values (((backend nodes+edges) (make-recording-backend))) (let-values (((backend nodes+edges) (make-recording-backend)))
(let* ((m (lambda* (uri hash-type hash name #:key system) (let* ((m (lambda* (uri hash-type hash name #:key system)
(text-file "foo-1.2.3.tar.gz" "This is a fake!"))) (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)))) (p (dummy-package "p" (source o))))
(run-with-store %store (run-with-store %store
(export-graph (list p) 'port (export-graph (list p) 'port

View file

@ -1,5 +1,5 @@
# GNU Guix --- Functional package management for GNU # 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> # Copyright © 2016 Jan Nieuwenhuizen <janneke@gnu.org>
# #
# This file is part of GNU Guix. # 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 nix-base32 /dev/null` = 0mdqa9w1p6cmli6976v4wi0sw9r4p5prkj7lzfd1877wk11c9c73
test `guix hash -f hex /dev/null` = e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855 test `guix hash -f hex /dev/null` = e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
test `guix hash -f base32 /dev/null` = 4oymiquy7qobjgx36tejs35zeqt24qpemsnzgtfeswmrw6csxbkq 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" mkdir "$tmpdir"
echo -n executable > "$tmpdir/exe" echo -n executable > "$tmpdir/exe"

View file

@ -1,6 +1,7 @@
# GNU Guix --- Functional package management for GNU # GNU Guix --- Functional package management for GNU
# Copyright © 2012, 2013, 2014, 2015, 2017, 2019 Ludovic Courtès <ludo@gnu.org> # Copyright © 2012, 2013, 2014, 2015, 2017, 2019 Ludovic Courtès <ludo@gnu.org>
# Copyright © 2013 Nikita Karetnikov <nikita@karetnikov.org> # Copyright © 2013 Nikita Karetnikov <nikita@karetnikov.org>
# Copyright © 2020 Simon Tournier <zimon.toutoune@gmail.com>
# #
# This file is part of GNU Guix. # This file is part of GNU Guix.
# #
@ -78,6 +79,17 @@ esac
test "`guix package -p "$profile" -I 'g.*e' | cut -f1`" = "guile-bootstrap" 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. # List generations.
test "`guix package -p "$profile" -l | cut -f1 | grep guile | head -n1`" \ test "`guix package -p "$profile" -l | cut -f1 | grep guile | head -n1`" \
= " guile-bootstrap" = " guile-bootstrap"

View file

@ -29,7 +29,7 @@
#:renamer (lambda (name) #:renamer (lambda (name)
(cond ((eq? name 'location) 'make-location) (cond ((eq? name 'location) 'make-location)
(else name)))) (else name))))
#:use-module (gcrypt hash) #:use-module ((gcrypt hash) #:prefix gcrypt:)
#:use-module (guix derivations) #:use-module (guix derivations)
#:use-module (guix packages) #:use-module (guix packages)
#:use-module (guix grafts) #:use-module (guix grafts)
@ -51,6 +51,7 @@
#:use-module (srfi srfi-34) #:use-module (srfi srfi-34)
#:use-module (srfi srfi-35) #:use-module (srfi srfi-35)
#:use-module (srfi srfi-64) #:use-module (srfi srfi-64)
#:use-module (rnrs bytevectors)
#:use-module (rnrs io ports) #:use-module (rnrs io ports)
#:use-module (ice-9 vlist) #:use-module (ice-9 vlist)
#:use-module (ice-9 regex) #:use-module (ice-9 regex)
@ -497,6 +498,32 @@
(search-path %load-path "guix/base32.scm") (search-path %load-path "guix/base32.scm")
get-bytevector-all))))) 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)) (unless (network-reachable?) (test-skip 1))
(test-equal "package-source-derivation, snippet" (test-equal "package-source-derivation, snippet"
"OK" "OK"

View file

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