Merge branch 'master' into staging
This commit is contained in:
commit
8a7a5dc780
@ -557,6 +557,7 @@ EXTRA_DIST += \
|
||||
build-aux/cuirass/guix-modular.scm \
|
||||
build-aux/cuirass/hydra-to-cuirass.scm \
|
||||
build-aux/check-final-inputs-self-contained.scm \
|
||||
build-aux/check-channel-news.scm \
|
||||
build-aux/compile-as-derivation.scm \
|
||||
build-aux/generate-authors.scm \
|
||||
build-aux/git-authenticate.scm \
|
||||
@ -885,6 +886,11 @@ assert-final-inputs-self-contained: $(GOBJECTS)
|
||||
$(AM_V_at)$(top_builddir)/pre-inst-env "$(GUILE)" \
|
||||
"$(top_srcdir)/build-aux/check-final-inputs-self-contained.scm"
|
||||
|
||||
# Validate channel news.
|
||||
check-channel-news: $(GOBJECTS)
|
||||
$(AM_V_at)$(top_builddir)/pre-inst-env "$(GUILE)" \
|
||||
"$(top_srcdir)/build-aux/check-channel-news.scm"
|
||||
|
||||
# Compute the Hydra jobs and write them in the target file.
|
||||
hydra-jobs.scm: $(GOBJECTS)
|
||||
$(AM_V_at)$(MKDIR_P) "`dirname "$@"`"
|
||||
@ -904,7 +910,7 @@ cuirass-jobs.scm: $(GOBJECTS)
|
||||
|
||||
.PHONY: gen-ChangeLog gen-AUTHORS gen-tarball-version
|
||||
.PHONY: assert-no-store-file-names assert-binaries-available
|
||||
.PHONY: assert-final-inputs-self-contained
|
||||
.PHONY: assert-final-inputs-self-contained check-channel-news
|
||||
.PHONY: clean-go make-go as-derivation authenticate
|
||||
.PHONY: update-guix-package update-NEWS release
|
||||
|
||||
|
82
build-aux/check-channel-news.scm
Normal file
82
build-aux/check-channel-news.scm
Normal 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))))
|
@ -1278,6 +1278,14 @@ When pushing a commit on behalf of somebody else, please add a
|
||||
with @command{git am --signoff}. This improves tracking of who did
|
||||
what.
|
||||
|
||||
When adding channel news entries (@pxref{Channels, Writing Channel
|
||||
News}), make sure they are well-formed by running the following command
|
||||
right before pushing:
|
||||
|
||||
@example
|
||||
make check-channel-news
|
||||
@end example
|
||||
|
||||
For anything else, please post to @email{guix-patches@@gnu.org} and
|
||||
leave time for a review, without committing anything (@pxref{Submitting
|
||||
Patches}). If you didn’t receive any reply after two weeks, and if
|
||||
|
@ -1617,6 +1617,47 @@ Then you need to add the following code to a StumpWM configuration file
|
||||
(set-font (make-instance 'xft:font :family "DejaVu Sans Mono" :subfamily "Book" :size 11))
|
||||
@end lisp
|
||||
|
||||
@node Session lock
|
||||
@subsection Session lock
|
||||
@cindex sessionlock
|
||||
|
||||
Depending on your environment, locking the screen of your session might come built in
|
||||
or it might be something you have to set up yourself. If you use a desktop environment
|
||||
like GNOME or KDE, it's usually built in. If you use a plain window manager like
|
||||
StumpWM or EXWM, you might have to set it up yourself.
|
||||
|
||||
@node Xorg
|
||||
@subsubsection Xorg
|
||||
|
||||
If you use Xorg, you can use the utility
|
||||
@uref{https://www.mankier.com/1/xss-lock, xss-lock} to lock the screen of your session.
|
||||
xss-lock is triggered by DPMS which since Xorg 1.8 is auto-detected and enabled if
|
||||
ACPI is also enabled at kernel runtime.
|
||||
|
||||
To use xss-lock, you can simple execute it and put it into the background before
|
||||
you start your window manager from e.g. your @file{~/.xsession}:
|
||||
|
||||
@example
|
||||
xss-lock -- slock &
|
||||
exec stumpwm
|
||||
@end example
|
||||
|
||||
In this example, xss-lock uses @code{slock} to do the actual locking of the screen when
|
||||
it determines it's appropriate, like when you suspend your device.
|
||||
|
||||
For slock to be allowed to be a screen locker for the graphical session, it needs to
|
||||
be made setuid-root so it can authenticate users, and it needs a PAM service. This
|
||||
can be achieved by adding the following service to your @file{config.scm}:
|
||||
|
||||
@lisp
|
||||
(screen-locker-service slock)
|
||||
@end lisp
|
||||
|
||||
If you manually lock your screen, e.g. by directly calling slock when you want to lock
|
||||
your screen but not suspend it, it's a good idea to notify xss-lock about this so no
|
||||
confusion occurs. This can be done by executing @code{xset s activate} immediately
|
||||
before you execute slock.
|
||||
|
||||
@node Setting up a bind mount
|
||||
@section Setting up a bind mount
|
||||
|
||||
|
195
doc/guix.texi
195
doc/guix.texi
@ -35,7 +35,7 @@ Copyright @copyright{} 2016, 2017, 2018 Chris Marusich@*
|
||||
Copyright @copyright{} 2016, 2017, 2018, 2019, 2020 Efraim Flashner@*
|
||||
Copyright @copyright{} 2016 John Darrington@*
|
||||
Copyright @copyright{} 2016, 2017 Nikita Gillmann@*
|
||||
Copyright @copyright{} 2016, 2017, 2018, 2019 Jan Nieuwenhuizen@*
|
||||
Copyright @copyright{} 2016, 2017, 2018, 2019, 2020 Jan Nieuwenhuizen@*
|
||||
Copyright @copyright{} 2016 Julien Lepiller@*
|
||||
Copyright @copyright{} 2016 Alex ter Weele@*
|
||||
Copyright @copyright{} 2016, 2017, 2018, 2019 Christopher Baines@*
|
||||
@ -1831,7 +1831,7 @@ how to use it, hit the @key{RET} key (``return'' or ``enter'') on the
|
||||
link that follows: @pxref{Top, Info reader,, info-stnd, Stand-alone GNU
|
||||
Info}. Hit @kbd{l} afterwards to come back here.
|
||||
|
||||
Alternately, run @command{info info} in another tty to keep the manual
|
||||
Alternatively, run @command{info info} in another tty to keep the manual
|
||||
available.
|
||||
@end quotation
|
||||
@end ifinfo
|
||||
@ -2021,7 +2021,7 @@ Guix System in a virtual machine (VM).
|
||||
@section Preparing for Installation
|
||||
|
||||
Once you have booted, you can use the guided graphical installer, which makes
|
||||
it easy to get started (@pxref{Guided Graphical Installation}). Alternately,
|
||||
it easy to get started (@pxref{Guided Graphical Installation}). Alternatively,
|
||||
if you are already familiar with GNU/Linux and if you want more control than
|
||||
what the graphical installer provides, you can choose the ``manual''
|
||||
installation process (@pxref{Manual Installation}).
|
||||
@ -3900,6 +3900,21 @@ Use @var{profile} instead of @file{~/.config/guix/current}.
|
||||
Show which channel commit(s) would be used and what would be built or
|
||||
substituted but do not actually do it.
|
||||
|
||||
@item --allow-downgrades
|
||||
Allow pulling older or unrelated revisions of channels than those
|
||||
currently in use.
|
||||
|
||||
@cindex downgrade attacks, protection against
|
||||
By default, @command{guix pull} protects against so-called ``downgrade
|
||||
attacks'' whereby the Git repository of a channel would be reset to an
|
||||
earlier or unrelated revision of itself, potentially leading you to
|
||||
install older, known-vulnerable versions of software packages.
|
||||
|
||||
@quotation Note
|
||||
Make sure you understand its security implications before using
|
||||
@option{--allow-downgrades}.
|
||||
@end quotation
|
||||
|
||||
@item --system=@var{system}
|
||||
@itemx -s @var{system}
|
||||
Attempt to build for @var{system}---e.g., @code{i686-linux}---instead of
|
||||
@ -5966,9 +5981,13 @@ specified in the @code{uri} field as a @code{git-reference} object; a
|
||||
@end table
|
||||
|
||||
@item @code{sha256}
|
||||
A bytevector containing the SHA-256 hash of the source. Typically the
|
||||
@code{base32} form is used here to generate the bytevector from a
|
||||
base-32 string.
|
||||
A bytevector containing the SHA-256 hash of the source. This is
|
||||
equivalent to providing a @code{content-hash} SHA256 object in the
|
||||
@code{hash} field described below.
|
||||
|
||||
@item @code{hash}
|
||||
The @code{content-hash} object of the source---see below for how to use
|
||||
@code{content-hash}.
|
||||
|
||||
You can obtain this information using @code{guix download}
|
||||
(@pxref{Invoking guix download}) or @code{guix hash} (@pxref{Invoking
|
||||
@ -6013,6 +6032,30 @@ this is @code{#f}, a sensible default is used.
|
||||
@end table
|
||||
@end deftp
|
||||
|
||||
@deftp {Data Type} content-hash @var{value} [@var{algorithm}]
|
||||
Construct a content hash object for the given @var{algorithm}, and with
|
||||
@var{value} as its hash value. When @var{algorithm} is omitted, assume
|
||||
it is @code{sha256}.
|
||||
|
||||
@var{value} can be a literal string, in which case it is base32-decoded,
|
||||
or it can be a bytevector.
|
||||
|
||||
The following forms are all equivalent:
|
||||
|
||||
@lisp
|
||||
(content-hash "05zxkyz9bv3j9h0xyid1rhvh3klhsmrpkf3bcs6frvlgyr2gwilj")
|
||||
(content-hash "05zxkyz9bv3j9h0xyid1rhvh3klhsmrpkf3bcs6frvlgyr2gwilj"
|
||||
sha256)
|
||||
(content-hash (base32
|
||||
"05zxkyz9bv3j9h0xyid1rhvh3klhsmrpkf3bcs6frvlgyr2gwilj"))
|
||||
(content-hash (base64 "kkb+RPaP7uyMZmu4eXPVkM4BN8yhRd8BTHLslb6f/Rc=")
|
||||
sha256)
|
||||
@end lisp
|
||||
|
||||
Technically, @code{content-hash} is currently implemented as a macro.
|
||||
It performs sanity checks at macro-expansion time, when possible, such
|
||||
as ensuring that @var{value} has the right size for @var{algorithm}.
|
||||
@end deftp
|
||||
|
||||
@node Build Systems
|
||||
@section Build Systems
|
||||
@ -9018,6 +9061,11 @@ Certificates}), unless @option{--no-check-certificate} is used.
|
||||
The following options are available:
|
||||
|
||||
@table @code
|
||||
@item --hash=@var{algorithm}
|
||||
@itemx -H @var{algorithm}
|
||||
Compute a hash using the specified @var{algorithm}. @xref{Invoking guix
|
||||
hash}, for more information.
|
||||
|
||||
@item --format=@var{fmt}
|
||||
@itemx -f @var{fmt}
|
||||
Write the hash in the format specified by @var{fmt}. For more
|
||||
@ -9057,11 +9105,21 @@ following options:
|
||||
|
||||
@table @code
|
||||
|
||||
@item --hash=@var{algorithm}
|
||||
@itemx -H @var{algorithm}
|
||||
Compute a hash using the specified @var{algorithm}, @code{sha256} by
|
||||
default.
|
||||
|
||||
@var{algorithm} must the name of a cryptographic hash algorithm
|
||||
supported by Libgcrypt @i{via} Guile-Gcrypt---e.g., @code{sha512} or
|
||||
@code{sha3-256} (@pxref{Hash Functions,,, guile-gcrypt, Guile-Gcrypt
|
||||
Reference Manual}).
|
||||
|
||||
@item --format=@var{fmt}
|
||||
@itemx -f @var{fmt}
|
||||
Write the hash in the format specified by @var{fmt}.
|
||||
|
||||
Supported formats: @code{nix-base32}, @code{base32}, @code{base16}
|
||||
Supported formats: @code{base64}, @code{nix-base32}, @code{base32}, @code{base16}
|
||||
(@code{hex} and @code{hexadecimal} can be used as well).
|
||||
|
||||
If the @option{--format} option is not specified, @command{guix hash}
|
||||
@ -9542,7 +9600,7 @@ gnu/packages/gettext.scm:29:13: gettext would be upgraded from 0.18.1.1 to 0.18.
|
||||
gnu/packages/glib.scm:77:12: glib would be upgraded from 2.34.3 to 2.37.0
|
||||
@end example
|
||||
|
||||
Alternately, one can specify packages to consider, in which case a
|
||||
Alternatively, one can specify packages to consider, in which case a
|
||||
warning is emitted for packages that lack an updater:
|
||||
|
||||
@example
|
||||
@ -10727,7 +10785,7 @@ guix challenge git \
|
||||
This automatically invokes @command{diffoscope}, which displays detailed
|
||||
information about files that differ.
|
||||
|
||||
Alternately, we can do something along these lines (@pxref{Invoking guix
|
||||
Alternatively, we can do something along these lines (@pxref{Invoking guix
|
||||
archive}):
|
||||
|
||||
@example
|
||||
@ -14519,7 +14577,7 @@ subsystem name and a command (with optional arguments) to execute upon
|
||||
subsystem request.
|
||||
|
||||
The command @command{internal-sftp} implements an in-process SFTP
|
||||
server. Alternately, one can specify the @command{sftp-server} command:
|
||||
server. Alternatively, one can specify the @command{sftp-server} command:
|
||||
@lisp
|
||||
(service openssh-service-type
|
||||
(openssh-configuration
|
||||
@ -26940,14 +26998,14 @@ The GRUB @code{gfxmode} to set (a list of screen resolution strings, see
|
||||
@end table
|
||||
@end deftp
|
||||
|
||||
@defvr {Scheme Variable} %default-theme
|
||||
This is the default GRUB theme used by the operating system if no
|
||||
@deffn {Scheme Procedure} grub-theme
|
||||
Return the default GRUB theme used by the operating system if no
|
||||
@code{theme} field is specified in @code{bootloader-configuration}
|
||||
record.
|
||||
|
||||
It comes with a fancy background image displaying the GNU and Guix
|
||||
logos.
|
||||
@end defvr
|
||||
@end deffn
|
||||
|
||||
For example, to override the default resolution, you may use something
|
||||
like
|
||||
@ -26957,7 +27015,7 @@ like
|
||||
(bootloader-configuration
|
||||
;; @dots{}
|
||||
(theme (grub-theme
|
||||
(inherit %default-theme)
|
||||
(inherit (grub-theme))
|
||||
(gfxmode '("1024x786x32" "auto"))))))
|
||||
@end lisp
|
||||
|
||||
@ -28718,10 +28776,8 @@ Binutils, libc, and the other packages mentioned above---the
|
||||
@dfn{bootstrap binaries}.
|
||||
|
||||
These bootstrap binaries are ``taken for granted'', though we can also
|
||||
re-create them if needed (more on that later).
|
||||
|
||||
For @code{i686-linux} and @code{x86_64-linux} the Guix bootstrap process is
|
||||
more elaborate, @pxref{Reduced Binary Seed Bootstrap}.
|
||||
re-create them if needed (@pxref{Preparing to Use the Bootstrap
|
||||
Binaries}).
|
||||
|
||||
@menu
|
||||
* Reduced Binary Seed Bootstrap:: A Bootstrap worthy of GNU.
|
||||
@ -28737,60 +28793,71 @@ Coreutils, Awk, Findutils, `sed', and `grep' and Guile, GCC, Binutils, and the
|
||||
GNU C Library (@pxref{Bootstrapping}). Usually, these bootstrap binaries are
|
||||
``taken for granted.''
|
||||
|
||||
Taking these binaries for granted means that we consider them to be a correct
|
||||
and trustworthy `seed' for building the complete system. Therein lies a
|
||||
problem: the current combined size of these bootstrap binaries is about 250MB
|
||||
(@pxref{Bootstrappable Builds,,, mes, GNU Mes}). Auditing or even inspecting
|
||||
these is next to impossible.
|
||||
Taking the bootstrap binaries for granted means that we consider them to
|
||||
be a correct and trustworthy ``seed'' for building the complete system.
|
||||
Therein lies a problem: the combined size of these bootstrap binaries is
|
||||
about 250MB (@pxref{Bootstrappable Builds,,, mes, GNU Mes}). Auditing
|
||||
or even inspecting these is next to impossible.
|
||||
|
||||
For @code{i686-linux} and @code{x86_64-linux}, Guix now features a ``Reduced
|
||||
Binary Seed'' bootstrap @footnote{We would like to say: ``Full Source
|
||||
Bootstrap'' and while we are working towards that goal it would be hyperbole
|
||||
to use that term for what we do now.}.
|
||||
For @code{i686-linux} and @code{x86_64-linux}, Guix now features a
|
||||
``Reduced Binary Seed'' bootstrap @footnote{We would like to say: ``Full
|
||||
Source Bootstrap'' and while we are working towards that goal it would
|
||||
be hyperbole to use that term for what we do now.}.
|
||||
|
||||
The Reduced Binary Seed bootstrap removes the most critical tools---from a
|
||||
trust perspective---from the bootstrap binaries: GCC, Binutils and the GNU C
|
||||
Library are replaced by: @code{bootstrap-mescc-tools} (a tiny assembler and
|
||||
linker) and @code{bootstrap-mes} (a small Scheme Interpreter and a C compiler
|
||||
written in Scheme and the Mes C Library, built for TinyCC and for GCC). Using
|
||||
these new binary seeds and a new set of
|
||||
@c
|
||||
packages@footnote{@c
|
||||
nyacc-boot,
|
||||
mes-boot,
|
||||
tcc-boot0,
|
||||
tcc-boot,
|
||||
make-mesboot0,
|
||||
diffutils-mesboot,
|
||||
binutils-mesboot0,
|
||||
gcc-core-mesboot,
|
||||
mesboot-headers,
|
||||
glibc-mesboot0,
|
||||
gcc-mesboot0,
|
||||
binutils-mesboot,
|
||||
make-mesboot,
|
||||
gcc-mesboot1,
|
||||
gcc-mesboot1-wrapper,
|
||||
glibc-headers-mesboot,
|
||||
glibc-mesboot,
|
||||
gcc-mesboot,
|
||||
and
|
||||
gcc-mesboot-wrapper.
|
||||
}
|
||||
@c
|
||||
the ``missing'' Binutils, GCC, and the GNU C Library are built from source.
|
||||
From here on the more traditional bootstrap process resumes. This approach
|
||||
has reduced the bootstrap binaries in size to about 130MB. Work is ongoing to
|
||||
reduce this further. If you are interested, join us on @code{#bootstrappable}
|
||||
on the Freenode IRC network.
|
||||
written in Scheme and the Mes C Library, built for TinyCC and for GCC).
|
||||
|
||||
@c ./pre-inst-env guix graph --type=bag -e '(begin (use-modules (guix packages)) (%current-system "i686-linux") (@@ (gnu packages commencement) gcc-mesboot))' > doc/images/gcc-mesboot-bag-graph.dot
|
||||
@c dot -T png doc/images/gcc-mesboot-bag-graph.dot > doc/images/gcc-mesboot-bag-graph.png
|
||||
Using these new binary seeds the ``missing'' Binutils, GCC, and the GNU
|
||||
C Library are built from source. From here on the more traditional
|
||||
bootstrap process resumes. This approach has reduced the bootstrap
|
||||
binaries in size to about 145MB in Guix v1.1.
|
||||
|
||||
Below is the generated dependency graph for @code{gcc-mesboot}, the bootstrap
|
||||
compiler used to build the rest of GuixSD.
|
||||
The next step that Guix has taken is to replace the shell and all its
|
||||
utilities with implementations in Guile Scheme, the @emph{Scheme-only
|
||||
bootstrap}. Gash (@pxref{Gash,,, gash, The Gash manual}) is a
|
||||
POSIX-compatible shell that replaces Bash, and it comes with Gash Utils
|
||||
which has minimalist replacements for Awk, the GNU Core Utilities, Grep,
|
||||
Gzip, Sed, and Tar. The rest of the bootstrap binary seeds that were
|
||||
removed are now built from source.
|
||||
|
||||
@image{images/gcc-mesboot-bag-graph,6in,,Dependency graph of the gcc-mesboot}
|
||||
Building the GNU System from source is currently only possibly by adding
|
||||
some historical GNU packages as intermediate steps@footnote{Packages
|
||||
such as @code{gcc-2.95.3}, @code{binutils-2.14}, @code{glibc-2.2.5},
|
||||
@code{gzip-1.2.4}, @code{tar-1.22}, and some others. For details, see
|
||||
@file{gnu/packages/commencement.scm}.}. As Gash and Gash Utils mature,
|
||||
and GNU packages become more bootstrappable again (e.g., new releases of
|
||||
GNU Sed will also ship as gzipped tarballs again, as alternative to the
|
||||
hard to bootstrap @code{xz}-compression), this set of added packages can
|
||||
hopefully be reduced again.
|
||||
|
||||
The graph below shows the resulting dependency graph for
|
||||
@code{gcc-core-mesboot0}, the bootstrap compiler used for the
|
||||
traditional bootstrap of the rest of the Guix System.
|
||||
|
||||
@c ./pre-inst-env guix graph -e '(@@ (gnu packages commencement) gcc-core-mesboot0)' | sed -re 's,((bootstrap-mescc-tools|bootstrap-mes|guile-bootstrap).*shape =) box,\1 ellipse,' > doc/images/gcc-core-mesboot0-graph.dot
|
||||
@image{images/gcc-core-mesboot0-graph,6in,,Dependency graph of gcc-core-mesboot0}
|
||||
|
||||
The only significant binary bootstrap seeds that remain@footnote{
|
||||
Ignoring the 68KB @code{mescc-tools}; that will be removed later,
|
||||
together with @code{mes}.} are a Scheme intepreter and a Scheme
|
||||
compiler: GNU Mes and GNU Guile@footnote{Not shown in this graph are the
|
||||
static binaries for @file{bash}, @code{tar}, and @code{xz} that are used
|
||||
to get Guile running.}.
|
||||
|
||||
This further reduction has brought down the size of the binary seed to
|
||||
about 60MB for @code{i686-linux} and @code{x86_64-linux}.
|
||||
|
||||
Work is ongoing to remove all binary blobs from our free software
|
||||
bootstrap stack, working towards a Full Source Bootstrap. Also ongoing
|
||||
is work to bring these bootstraps to the @code{arm-linux} and
|
||||
@code{aarch64-linux} architectures and to the Hurd.
|
||||
|
||||
If you are interested, join us on @samp{#bootstrappable} on the Freenode
|
||||
IRC network or discuss on @email{bug-mes@@gnu.org} or
|
||||
@email{gash-devel@@nongnu.org}.
|
||||
|
||||
@node Preparing to Use the Bootstrap Binaries
|
||||
@section Preparing to Use the Bootstrap Binaries
|
||||
@ -28810,7 +28877,7 @@ guix graph -t derivation \
|
||||
| dot -Tps > gcc.ps
|
||||
@end example
|
||||
|
||||
or, for the Reduced Binary Seed bootstrap
|
||||
or, for the further Reduced Binary Seed bootstrap
|
||||
|
||||
@example
|
||||
guix graph -t derivation \
|
||||
|
114
doc/images/gcc-core-mesboot0-graph.dot
Normal file
114
doc/images/gcc-core-mesboot0-graph.dot
Normal 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];
|
||||
|
||||
}
|
@ -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];
|
||||
|
||||
}
|
@ -39,7 +39,7 @@ DOT_FILES = \
|
||||
%D%/images/bootstrap-packages.dot \
|
||||
%D%/images/coreutils-graph.dot \
|
||||
%D%/images/coreutils-bag-graph.dot \
|
||||
%D%/images/gcc-mesboot-bag-graph.dot \
|
||||
%D%/images/gcc-core-mesboot0-graph.dot \
|
||||
%D%/images/service-graph.dot \
|
||||
%D%/images/shepherd-graph.dot
|
||||
|
||||
|
@ -48,6 +48,7 @@ REQUIRE=(
|
||||
"groupadd"
|
||||
"tail"
|
||||
"tr"
|
||||
"xz"
|
||||
)
|
||||
|
||||
PAS=$'[ \033[32;1mPASS\033[0m ] '
|
||||
@ -141,7 +142,7 @@ chk_init_sys()
|
||||
_msg "${INF}init system is: upstart"
|
||||
INIT_SYS="upstart"
|
||||
return 0
|
||||
elif [[ $(systemctl) =~ -\.mount ]]; then
|
||||
elif [[ $(systemctl 2>/dev/null) =~ -\.mount ]]; then
|
||||
_msg "${INF}init system is: systemd"
|
||||
INIT_SYS="systemd"
|
||||
return 0
|
||||
|
11
gnu/local.mk
11
gnu/local.mk
@ -859,7 +859,6 @@ dist_patch_DATA = \
|
||||
%D%/packages/patches/dconf-meson-0.52.patch \
|
||||
%D%/packages/patches/debops-constants-for-external-program-names.patch \
|
||||
%D%/packages/patches/debops-debops-defaults-fall-back-to-less.patch \
|
||||
%D%/packages/patches/deja-dup-use-ref-keyword-for-iter.patch \
|
||||
%D%/packages/patches/desmume-gcc6-fixes.patch \
|
||||
%D%/packages/patches/desmume-gcc7-fixes.patch \
|
||||
%D%/packages/patches/dfu-programmer-fix-libusb.patch \
|
||||
@ -978,7 +977,6 @@ dist_patch_DATA = \
|
||||
%D%/packages/patches/ghostscript-no-header-id.patch \
|
||||
%D%/packages/patches/ghostscript-no-header-uuid.patch \
|
||||
%D%/packages/patches/ghostscript-no-header-creationdate.patch \
|
||||
%D%/packages/patches/git-annex-S3v4.patch \
|
||||
%D%/packages/patches/glib-tests-timer.patch \
|
||||
%D%/packages/patches/glibc-CVE-2015-5180.patch \
|
||||
%D%/packages/patches/glibc-CVE-2015-7547.patch \
|
||||
@ -1052,6 +1050,7 @@ dist_patch_DATA = \
|
||||
%D%/packages/patches/guile-3.0-relocatable.patch \
|
||||
%D%/packages/patches/guile-linux-syscalls.patch \
|
||||
%D%/packages/patches/guile-3.0-linux-syscalls.patch \
|
||||
%D%/packages/patches/guile-fibers-destroy-peer-schedulers.patch \
|
||||
%D%/packages/patches/guile-gdbm-ffi-support-gdbm-1.14.patch \
|
||||
%D%/packages/patches/guile-present-coding.patch \
|
||||
%D%/packages/patches/guile-rsvg-pkgconfig.patch \
|
||||
@ -1167,9 +1166,6 @@ dist_patch_DATA = \
|
||||
%D%/packages/patches/libbonobo-activation-test-race.patch \
|
||||
%D%/packages/patches/libcanberra-sound-theme-freedesktop.patch \
|
||||
%D%/packages/patches/libdrm-realpath-virtio.patch \
|
||||
%D%/packages/patches/libexif-CVE-2016-6328.patch \
|
||||
%D%/packages/patches/libexif-CVE-2017-7544.patch \
|
||||
%D%/packages/patches/libexif-CVE-2018-20030.patch \
|
||||
%D%/packages/patches/libextractor-exiv2.patch \
|
||||
%D%/packages/patches/libgeotiff-adapt-test-script-for-proj-6.2.patch \
|
||||
%D%/packages/patches/libgit2-mtime-0.patch \
|
||||
@ -1295,7 +1291,7 @@ dist_patch_DATA = \
|
||||
%D%/packages/patches/netsurf-y2038-tests.patch \
|
||||
%D%/packages/patches/netsurf-longer-test-timeout.patch \
|
||||
%D%/packages/patches/ngircd-handle-zombies.patch \
|
||||
%D%/packages/patches/nm-plugin-path.patch \
|
||||
%D%/packages/patches/network-manager-plugin-path.patch \
|
||||
%D%/packages/patches/nsis-env-passthru.patch \
|
||||
%D%/packages/patches/nss-increase-test-timeout.patch \
|
||||
%D%/packages/patches/nss-pkgconfig.patch \
|
||||
@ -1363,6 +1359,7 @@ dist_patch_DATA = \
|
||||
%D%/packages/patches/perl-www-curl-remove-symbol.patch \
|
||||
%D%/packages/patches/picprog-non-intel-support.patch \
|
||||
%D%/packages/patches/pidgin-add-search-path.patch \
|
||||
%D%/packages/patches/pidgin-libnm.patch \
|
||||
%D%/packages/patches/pinball-const-fix.patch \
|
||||
%D%/packages/patches/pinball-cstddef.patch \
|
||||
%D%/packages/patches/pinball-missing-separators.patch \
|
||||
@ -1411,6 +1408,7 @@ dist_patch_DATA = \
|
||||
%D%/packages/patches/python-CVE-2018-14647.patch \
|
||||
%D%/packages/patches/python-aiohttp-3.6.2-no-warning-fail.patch \
|
||||
%D%/packages/patches/python-alembic-exceptions-cause.patch \
|
||||
%D%/packages/patches/python-argcomplete-1.11.1-fish31.patch \
|
||||
%D%/packages/patches/python-axolotl-AES-fix.patch \
|
||||
%D%/packages/patches/python-cairocffi-dlopen-path.patch \
|
||||
%D%/packages/patches/python-cross-compile.patch \
|
||||
@ -1537,6 +1535,7 @@ dist_patch_DATA = \
|
||||
%D%/packages/patches/ttfautohint-source-date-epoch.patch \
|
||||
%D%/packages/patches/tomb-fix-errors-on-open.patch \
|
||||
%D%/packages/patches/tuxpaint-stamps-path.patch \
|
||||
%D%/packages/patches/twinkle-bcg729.patch \
|
||||
%D%/packages/patches/u-boot-riscv64-fix-extlinux.patch \
|
||||
%D%/packages/patches/u-boot-DT-for-Pinebook-Pro.patch \
|
||||
%D%/packages/patches/u-boot-add-boe-nv140fhmn49-display.patch \
|
||||
|
@ -3336,7 +3336,7 @@ Python loading in HPC environments.")
|
||||
(let ((real-name "inxi"))
|
||||
(package
|
||||
(name "inxi-minimal")
|
||||
(version "3.0.38-1")
|
||||
(version "3.1.00-1")
|
||||
(source
|
||||
(origin
|
||||
(method git-fetch)
|
||||
@ -3345,7 +3345,7 @@ Python loading in HPC environments.")
|
||||
(commit version)))
|
||||
(file-name (git-file-name real-name version))
|
||||
(sha256
|
||||
(base32 "1qw3sxgd3ly916bzzl3873s3flngwd3vh57slw0shsj7ivz8bfnm"))))
|
||||
(base32 "0md6yfd297l8695g0rsbs4mm74dc3k00rfjl4x2n4i33mkylp6qa"))))
|
||||
(build-system trivial-build-system)
|
||||
(inputs
|
||||
`(("bash" ,bash-minimal)
|
||||
|
@ -1,5 +1,5 @@
|
||||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2013, 2014, 2015, 2017, 2018, 2019 Ludovic Courtès <ludo@gnu.org>
|
||||
;;; Copyright © 2013, 2014, 2015, 2017, 2018, 2019, 2020 Ludovic Courtès <ludo@gnu.org>
|
||||
;;; Copyright © 2015, 2016 Alex Kost <alezost@gmail.com>
|
||||
;;; Copyright © 2016 John Darrington <jmd@gnu.org>
|
||||
;;; Copyright © 2016, 2017, 2019 Efraim Flashner <efraim@flashner.co.il>
|
||||
@ -111,7 +111,7 @@ dictionaries, including personal ones.")
|
||||
(uri (string-append "mirror://gnu/aspell/dict/" dict-name
|
||||
"/" prefix dict-name "-"
|
||||
version ".tar.bz2"))
|
||||
(sha256 sha256)))
|
||||
(hash (content-hash sha256))))
|
||||
(build-system gnu-build-system)
|
||||
(arguments
|
||||
`(#:phases
|
||||
@ -163,7 +163,7 @@ dictionaries, including personal ones.")
|
||||
(method url-fetch)
|
||||
(uri (string-append "https://www.softcatala.org/pub/softcatala/aspell/"
|
||||
version "/aspell6-ca-" version ".tar.bz2"))
|
||||
(sha256 sha256)))
|
||||
(hash (content-hash sha256))))
|
||||
(home-page "https://www.softcatala.org/pub/softcatala/aspell/"))))
|
||||
|
||||
(define-public aspell-dict-de
|
||||
@ -264,7 +264,7 @@ dictionaries, including personal ones.")
|
||||
(uri (string-append "mirror://sourceforge/linguistico/"
|
||||
"Dizionario%20italiano%20per%20Aspell/" version "/"
|
||||
"aspell6-it-" version ".tar.bz2"))
|
||||
(sha256 sha256)))
|
||||
(hash (content-hash sha256))))
|
||||
(home-page
|
||||
"http://linguistico.sourceforge.net/pages/dizionario_italiano.html"))))
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2019 Ludovic Courtès <ludo@gnu.org>
|
||||
;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2019, 2020 Ludovic Courtès <ludo@gnu.org>
|
||||
;;; Copyright © 2014, 2015, 2018 Mark H Weaver <mhw@netris.org>
|
||||
;;; Copyright © 2015, 2017 Leo Famulari <leo@famulari.name>
|
||||
;;; Copyright © 2016, 2017, 2018, 2019 Efraim Flashner <efraim@flashner.co.il>
|
||||
@ -38,8 +38,11 @@
|
||||
#:use-module (guix store)
|
||||
#:use-module (guix build-system gnu)
|
||||
#:autoload (guix gnupg) (gnupg-verify*)
|
||||
#:autoload (gcrypt hash) (port-sha256)
|
||||
#:autoload (guix base32) (bytevector->nix-base32-string)
|
||||
|
||||
;; See <https://bugs.gnu.org/41457> for why not #:autoload here.
|
||||
#:use-module ((gcrypt hash) #:select (port-sha256))
|
||||
|
||||
#:use-module (srfi srfi-1)
|
||||
#:use-module (srfi srfi-26)
|
||||
#:use-module (ice-9 format))
|
||||
@ -48,12 +51,12 @@
|
||||
"Return the URL of Bash patch number SEQNO."
|
||||
(format #f "mirror://gnu/bash/bash-5.0-patches/bash50-~3,'0d" seqno))
|
||||
|
||||
(define (bash-patch seqno sha256)
|
||||
"Return the origin of Bash patch SEQNO, with expected hash SHA256"
|
||||
(define (bash-patch seqno sha256-bv)
|
||||
"Return the origin of Bash patch SEQNO, with expected hash SHA256-BV."
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (patch-url seqno))
|
||||
(sha256 sha256)))
|
||||
(sha256 sha256-bv)))
|
||||
|
||||
(define-syntax-rule (patch-series (seqno hash) ...)
|
||||
(list (bash-patch seqno (base32 hash))
|
||||
|
@ -1,5 +1,5 @@
|
||||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019 Ludovic Courtès <ludo@gnu.org>
|
||||
;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020 Ludovic Courtès <ludo@gnu.org>
|
||||
;;; Copyright © 2014, 2015, 2018, 2019 Mark H Weaver <mhw@netris.org>
|
||||
;;; Copyright © 2017, 2020 Efraim Flashner <efraim@flashner.co.il>
|
||||
;;; Copyright © 2018, 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
|
||||
@ -151,14 +151,14 @@ built for SYSTEM."
|
||||
(format #f (G_ "could not find bootstrap binary '~a' \
|
||||
for system '~a'")
|
||||
program system))))))
|
||||
((sha256)
|
||||
((bv)
|
||||
(origin
|
||||
(method url-fetch/executable)
|
||||
(uri (map (cute string-append <>
|
||||
(bootstrap-executable-file-name system program))
|
||||
%bootstrap-executable-base-urls))
|
||||
(file-name program)
|
||||
(sha256 sha256)))))))
|
||||
(hash (content-hash bv sha256))))))))
|
||||
|
||||
|
||||
;;;
|
||||
|
@ -2518,7 +2518,7 @@ provides a simple way to achieve this.")
|
||||
(define-public umockdev
|
||||
(package
|
||||
(name "umockdev")
|
||||
(version "0.13.2")
|
||||
(version "0.14.1")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "https://github.com/martinpitt/umockdev/"
|
||||
@ -2526,7 +2526,7 @@ provides a simple way to achieve this.")
|
||||
"umockdev-" version ".tar.xz"))
|
||||
(sha256
|
||||
(base32
|
||||
"095v3abc321s584sga04y16lcmdzsdi88h24wcrm78v7vq484g74"))))
|
||||
"1g78jcrvb7yyh0q5kv5409wjqf8nlfqnw1rknm3a247mcx317dpz"))))
|
||||
(build-system gnu-build-system)
|
||||
(arguments
|
||||
`(#:phases
|
||||
@ -2538,6 +2538,7 @@ provides a simple way to achieve this.")
|
||||
#t)))))
|
||||
(native-inputs
|
||||
`(("vala" ,vala)
|
||||
("gobject-introspection" ,gobject-introspection)
|
||||
("gtk-doc" ,gtk-doc)
|
||||
("pkg-config" ,pkg-config)
|
||||
|
||||
|
@ -39,7 +39,7 @@
|
||||
(define-public liblcf
|
||||
(package
|
||||
(name "liblcf")
|
||||
(version "0.6.1")
|
||||
(version "0.6.2")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append
|
||||
@ -47,7 +47,7 @@
|
||||
"/liblcf-" version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"1qz387r4shbx48r3z7k8llkzz4b039zmak98wxpiwn6a23cssdn5"))))
|
||||
"0n2k4brd264jg9p6918x7dnb2iimpzjh8q3v1fws58450xbgnkqc"))))
|
||||
(build-system gnu-build-system)
|
||||
(native-inputs
|
||||
`(("pkg-config" ,pkg-config)))
|
||||
|
@ -70,6 +70,7 @@
|
||||
;;; Copyright © 2020 Alberto Eleuterio Flores Guerrero <barbanegra+guix@posteo.mx>
|
||||
;;; Copyright © 2020 Marius Bakke <mbakke@fastmail.com>
|
||||
;;; Copyright © 2020 pinoaffe <pinoaffe@airmail.cc>
|
||||
;;; Copyright © 2020 Vinicius Monego <monego@posteo.net>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
@ -1757,14 +1758,14 @@ as a library for other Emacs packages.")
|
||||
(define-public emacs-auctex
|
||||
(package
|
||||
(name "emacs-auctex")
|
||||
(version "12.2.0")
|
||||
(version "12.2.2")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "https://elpa.gnu.org/packages/auctex-"
|
||||
version ".tar"))
|
||||
(sha256
|
||||
(base32 "0j919l3q5sq6h1k1kmk4kyv0vkzl4f98fxcd64v34x5q1ahjhg48"))))
|
||||
(base32 "1map25xn7r28aldhcz9n8pbfk2l3gvnxx8hgih3ax8hyvnfi6brh"))))
|
||||
(build-system emacs-build-system)
|
||||
;; We use 'emacs' because AUCTeX requires dbus at compile time
|
||||
;; ('emacs-minimal' does not provide dbus).
|
||||
@ -2767,6 +2768,26 @@ Emacs.")
|
||||
files and directories.")
|
||||
(license license:gpl3+)))
|
||||
|
||||
(define-public emacs-fountain-mode
|
||||
(package
|
||||
(name "emacs-fountain-mode")
|
||||
(version "3.1.0")
|
||||
(source
|
||||
(origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
(url "https://github.com/rnkn/fountain-mode")
|
||||
(commit (string-append "v" version))))
|
||||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
(base32 "08giwg0jwk8zzj2i4cm08322qr6znrnv9a49za7c6j47bykpwj6s"))))
|
||||
(build-system emacs-build-system)
|
||||
(home-page "https://github.com/rnkn/fountain-mode")
|
||||
(synopsis "Major mode for screenwriting in Fountain markup")
|
||||
(description "Fountain Mode is a scriptwriting program for GNU Emacs
|
||||
using the Fountain plain text markup format.")
|
||||
(license license:gpl3+)))
|
||||
|
||||
(define-public emacs-fringe-helper
|
||||
(let ((commit "ef4a9c023bae18ec1ddd7265f1f2d6d2e775efdd")
|
||||
(revision "1"))
|
||||
@ -3776,13 +3797,15 @@ for Flow files.")
|
||||
#:emacs ,emacs ;need libxml support
|
||||
#:phases
|
||||
(modify-phases %standard-phases
|
||||
(add-after 'unpack 'fix-python-executable
|
||||
;; Hardcode python3 executable in the Emacs library.
|
||||
(add-after 'unpack 'specify-python-location
|
||||
;; Hard-code python3 executable location in the library.
|
||||
(lambda* (#:key inputs #:allow-other-keys)
|
||||
(let ((python3 (string-append (assoc-ref inputs "python")
|
||||
"/bin/python3")))
|
||||
(substitute* "flycheck-grammalecte.el"
|
||||
(("\"python3") (string-append "\"" python3)))
|
||||
(substitute* '("conjugueur.py" "flycheck-grammalecte.py")
|
||||
(("/usr/bin/env python3?") python3))
|
||||
#t)))
|
||||
(add-before 'build 'link-to-grammalecte
|
||||
;; XXX: The Python part of the package requires grammalecte, but
|
||||
|
@ -1,7 +1,7 @@
|
||||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2015 Tomáš Čech <sleep_walker@suse.cz>
|
||||
;;; Copyright © 2015 Daniel Pimentel <d4n1@member.fsf.org>
|
||||
;;; Copyright © 2015, 2016, 2017, 2018, 2019 Efraim Flashner <efraim@flashner.co.il>
|
||||
;;; Copyright © 2015, 2016, 2017, 2018, 2019, 2020 Efraim Flashner <efraim@flashner.co.il>
|
||||
;;; Copyright © 2017 Nikita <nikita@n0.is>
|
||||
;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
|
||||
;;; Copyright © 2018 Timo Eisenmann <eisenmann@fn.de>
|
||||
@ -69,7 +69,7 @@
|
||||
(define-public efl
|
||||
(package
|
||||
(name "efl")
|
||||
(version "1.23.3")
|
||||
(version "1.24.1")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append
|
||||
@ -77,7 +77,7 @@
|
||||
version ".tar.xz"))
|
||||
(sha256
|
||||
(base32
|
||||
"00b9lp3h65254kdb1ys15fv7p3ln7qsvf15jkw4kli5ymagadkjk"))))
|
||||
"1xsbz5kl74cgzyzwmjy3p50m0iigvi53lklkp92v49k4j99zpak7"))))
|
||||
(build-system meson-build-system)
|
||||
(native-inputs
|
||||
`(("check" ,check)
|
||||
@ -93,6 +93,7 @@
|
||||
("libraw" ,libraw)
|
||||
("librsvg" ,librsvg)
|
||||
("libspectre" ,libspectre)
|
||||
("libtiff" ,libtiff)
|
||||
("libxau" ,libxau)
|
||||
("libxcomposite" ,libxcomposite)
|
||||
("libxcursor" ,libxcursor)
|
||||
@ -102,18 +103,19 @@
|
||||
("libxi" ,libxi)
|
||||
("libxfixes" ,libxfixes)
|
||||
("libxinerama" ,libxinerama)
|
||||
("libxp" ,libxp)
|
||||
("libxrandr" ,libxrandr)
|
||||
("libxrender" ,libxrender)
|
||||
("libxss" ,libxscrnsaver)
|
||||
("libxtst" ,libxtst)
|
||||
("libwebp" ,libwebp)
|
||||
("openjpeg" ,openjpeg)
|
||||
("poppler" ,poppler)
|
||||
("util-linux" ,util-linux "lib")
|
||||
("wayland-protocols" ,wayland-protocols)))
|
||||
(propagated-inputs
|
||||
;; All these inputs are in package config files in section
|
||||
;; Requires.private.
|
||||
`(("avahi" ,avahi)
|
||||
("bullet" ,bullet)
|
||||
("dbus" ,dbus)
|
||||
("elogind" ,elogind)
|
||||
("eudev" ,eudev)
|
||||
@ -122,30 +124,32 @@
|
||||
("fribidi" ,fribidi)
|
||||
("glib" ,glib)
|
||||
("harfbuzz" ,harfbuzz)
|
||||
("luajit" ,luajit)
|
||||
("libinput" ,libinput-minimal)
|
||||
("libjpeg" ,libjpeg-turbo)
|
||||
("libpng" ,libpng)
|
||||
("libsndfile" ,libsndfile)
|
||||
("libtiff" ,libtiff)
|
||||
("libwebp" ,libwebp)
|
||||
("libpng" ,libpng)
|
||||
("libx11" ,libx11)
|
||||
("libxkbcommon" ,libxkbcommon)
|
||||
("luajit" ,luajit)
|
||||
("lz4" ,lz4)
|
||||
("openssl" ,openssl)
|
||||
("pulseaudio" ,pulseaudio)
|
||||
("util-linux" ,util-linux "lib")
|
||||
("wayland" ,wayland)
|
||||
("zlib" ,zlib)))
|
||||
(arguments
|
||||
`(#:configure-flags '("-Dsystemd=false"
|
||||
"-Delogind=true"
|
||||
"-Dembedded-lz4=false"
|
||||
"-Devas-loaders-disabler=json"
|
||||
"-Dbuild-examples=false"
|
||||
"-Decore-imf-loaders-disabler=scim"
|
||||
"-Davahi=true"
|
||||
"-Dglib=true"
|
||||
"-Dmount-path=/run/setuid-programs/mount"
|
||||
"-Dunmount-path=/run/setuid-programs/umount"
|
||||
;(string-append "-Ddictionaries-hyphen-dir="
|
||||
; (assoc-ref %build-inputs "hyphen")
|
||||
; "/share/hyphen")
|
||||
"-Delogind=true"
|
||||
"-Dnetwork-backend=connman"
|
||||
,@(match (%current-system)
|
||||
("armhf-linux"
|
||||
@ -153,22 +157,27 @@
|
||||
(_
|
||||
'("-Dopengl=full")))
|
||||
;; for wayland
|
||||
"-Dwl-deprecated=true" ; ecore_wayland
|
||||
"-Ddrm-deprecated=true" ; ecore_drm
|
||||
"-Dwl=true"
|
||||
"-Ddrm=true")
|
||||
#:tests? #f ; Many tests fail due to timeouts and network requests.
|
||||
#:phases
|
||||
(modify-phases %standard-phases
|
||||
;; If we don't hardcode the location of libcurl.so then we
|
||||
;; have to wrap the outputs of efl's dependencies in curl.
|
||||
(add-after 'unpack 'hardcode-libcurl-location
|
||||
;; If we don't hardcode the location of libcurl.so and others then we
|
||||
;; have to wrap the outputs of efl's dependencies in those libraries.
|
||||
(add-after 'unpack 'hardcode-dynamic-libraries
|
||||
(lambda* (#:key inputs #:allow-other-keys)
|
||||
(let* ((curl (assoc-ref inputs "curl"))
|
||||
(lib (string-append curl "/lib/")))
|
||||
(let ((curl (assoc-ref inputs "curl"))
|
||||
(pulse (assoc-ref inputs "pulseaudio"))
|
||||
(sndfile (assoc-ref inputs "libsndfile"))
|
||||
(lib "/lib/"))
|
||||
(substitute* "src/lib/ecore_con/ecore_con_url_curl.c"
|
||||
(("libcurl.so.?" libcurl) ; libcurl.so.[45]
|
||||
(string-append lib libcurl)))
|
||||
(string-append curl lib libcurl)))
|
||||
(substitute* "src/lib/ecore_audio/ecore_audio.c"
|
||||
(("libpulse.so.0" libpulse)
|
||||
(string-append pulse lib libpulse))
|
||||
(("libsndfile.so.1" libsnd)
|
||||
(string-append sndfile lib libsnd)))
|
||||
#t)))
|
||||
(add-after 'unpack 'fix-install-paths
|
||||
(lambda _
|
||||
@ -283,7 +292,7 @@ Libraries with some extra bells and whistles.")
|
||||
(define-public enlightenment
|
||||
(package
|
||||
(name "enlightenment")
|
||||
(version "0.23.1")
|
||||
(version "0.24.0")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri
|
||||
@ -291,27 +300,27 @@ Libraries with some extra bells and whistles.")
|
||||
"enlightenment/enlightenment-" version ".tar.xz"))
|
||||
(sha256
|
||||
(base32
|
||||
"0d1cyl07w9pvi2pf029kablazks2q9aislzl46b6fq5m1465jc75"))
|
||||
"01053hxdmyjfb6gmz1pqmw0llrgc4356np515h5vsqcn59mhvfz7"))
|
||||
(patches (search-patches "enlightenment-fix-setuid-path.patch"))))
|
||||
(build-system meson-build-system)
|
||||
(arguments
|
||||
`(#:configure-flags '("-Dsystemd=false")
|
||||
`(#:configure-flags
|
||||
(let ((efl (assoc-ref %build-inputs "efl")))
|
||||
(list "-Dsystemd=false"
|
||||
"-Dpackagekit=false"
|
||||
(string-append "-Dedje-cc=" efl "/bin/edje_cc")
|
||||
(string-append "-Deldbus-codegen=" efl "/bin/eldbus-codegen")
|
||||
(string-append "-Deet=" efl "/bin/eet")))
|
||||
#:phases
|
||||
(modify-phases %standard-phases
|
||||
(delete 'bootstrap) ; We don't want to run the autogen script.
|
||||
(add-after 'unpack 'fix-dot-desktop-creation
|
||||
(lambda _
|
||||
(substitute* "data/session/meson.build"
|
||||
(("HAVE_WAYLAND'.*") "HAVE_WAYLAND') == true\n"))
|
||||
#t))
|
||||
(add-before 'configure 'set-system-actions
|
||||
(lambda* (#:key inputs #:allow-other-keys)
|
||||
(setenv "HOME" "/tmp")
|
||||
(setenv "HOME" "/tmp")
|
||||
(let ((xkeyboard (assoc-ref inputs "xkeyboard-config"))
|
||||
(setxkbmap (assoc-ref inputs "setxkbmap"))
|
||||
(utils (assoc-ref inputs "util-linux"))
|
||||
(libc (assoc-ref inputs "libc"))
|
||||
(bluez (assoc-ref inputs "bluez"))
|
||||
(bc (assoc-ref inputs "bc"))
|
||||
(efl (assoc-ref inputs "efl")))
|
||||
;; We need to patch the path to 'base.lst' to be able
|
||||
@ -328,23 +337,22 @@ Libraries with some extra bells and whistles.")
|
||||
"src/modules/conf_intl/e_int_config_intl.c"
|
||||
"src/modules/wizard/page_010.c")
|
||||
(("locale -a") (string-append libc "/bin/locale -a")))
|
||||
(substitute* "src/bin/e_import_config_dialog.c"
|
||||
(("%s/edje_cc -v %s %s %s\", e_prefix_bin_get\\(\\)")
|
||||
(string-append efl "/bin/edje_cc -v %s %s %s\"")))
|
||||
(substitute* "src/modules/everything/evry_plug_apps.c"
|
||||
(("/usr/bin/") ""))
|
||||
(substitute* '("src/bin/e_sys_main.c"
|
||||
"src/bin/e_util_suid.h")
|
||||
(("PATH=/bin:/usr/bin:/sbin:/usr/sbin")
|
||||
(string-append "PATH=/run/setuid-programs:"
|
||||
"/run/current-system/profile/bin:"
|
||||
"/run/current-system/profile/sbin")))
|
||||
(substitute* "src/modules/everything/evry_plug_calc.c"
|
||||
(("bc -l") (string-append bc "/bin/bc -l")))
|
||||
(substitute* "data/etc/meson.build"
|
||||
(("/bin/mount") "/run/setuid-programs/mount")
|
||||
(("/bin/umount") "/run/setuid-programs/umount")
|
||||
(("/usr/bin/eject") (string-append utils "/bin/eject"))
|
||||
(("/usr/bin/l2ping") (string-append bluez "/bin/l2ling"))
|
||||
(("/bin/rfkill") (string-append utils "/sbin/rfkill"))
|
||||
(("SUSPEND = ''") "SUSPEND = '/run/current-system/profile/bin/loginctl suspend'")
|
||||
(("HIBERNATE = ''") "HIBERNATE = '/run/current-system/profile/bin/loginctl hibernate'")
|
||||
(("/sbin/shutdown -h now") "/run/current-system/profile/bin/loginctl poweroff now")
|
||||
(("/sbin/shutdown -r now") "/run/current-system/profile/bin/loginctl reboot now"))
|
||||
(("/usr/bin/eject") (string-append utils "/bin/eject")))
|
||||
(substitute* "src/bin/system/e_system_power.c"
|
||||
(("systemctl") "loginctl"))
|
||||
#t))))))
|
||||
(native-inputs
|
||||
`(("gettext" ,gettext-minimal)
|
||||
@ -389,7 +397,7 @@ embedded systems.")
|
||||
(define-public python-efl
|
||||
(package
|
||||
(name "python-efl")
|
||||
(version "1.23.0")
|
||||
(version "1.24.0")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
@ -397,7 +405,7 @@ embedded systems.")
|
||||
"python/python-efl-" version ".tar.xz"))
|
||||
(sha256
|
||||
(base32
|
||||
"16yn6a1b9167nfmryyi44ma40m20ansfpwgrvqzfvwix7qaz9pib"))
|
||||
"1vk1cdd959gia4a9qzyq56a9zw3lqf9ck66k8c9g3c631mp5cfpy"))
|
||||
(modules '((guix build utils)))
|
||||
;; Remove files generated by Cython
|
||||
(snippet
|
||||
|
@ -196,7 +196,7 @@ itself."))))
|
||||
(define-public font-cantarell
|
||||
(package
|
||||
(name "font-abattis-cantarell")
|
||||
(version "0.111")
|
||||
(version "0.201")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "mirror://gnome/sources/cantarell-fonts/"
|
||||
@ -204,11 +204,10 @@ itself."))))
|
||||
"/cantarell-fonts-" version ".tar.xz"))
|
||||
(sha256
|
||||
(base32
|
||||
"05hpnhihwm9sxlq1qn993g03pwkmpjbn0dvnba71r1gfjv0jp2w5"))))
|
||||
"0qwqmkczqy09fdj8l11nr841ks0dwsydqg55qyms12m4yvjn87xn"))))
|
||||
(build-system meson-build-system)
|
||||
(native-inputs
|
||||
`(("appstream-glib" ,appstream-glib)
|
||||
("gettext" ,gettext-minimal))) ;for msgfmt
|
||||
`(("gettext" ,gettext-minimal))) ; for msgfmt
|
||||
(home-page "https://wiki.gnome.org/Projects/CantarellFonts")
|
||||
(synopsis "Cantarell sans-serif typeface")
|
||||
(description "The Cantarell font family is a contemporary Humanist
|
||||
|
@ -1115,7 +1115,7 @@ which speak the Qualcomm MSM Interface (QMI) protocol.")
|
||||
(define-public modem-manager
|
||||
(package
|
||||
(name "modem-manager")
|
||||
(version "1.10.8")
|
||||
(version "1.12.10")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append
|
||||
@ -1123,15 +1123,11 @@ which speak the Qualcomm MSM Interface (QMI) protocol.")
|
||||
"ModemManager-" version ".tar.xz"))
|
||||
(sha256
|
||||
(base32
|
||||
"16hnl0sdriqgv4v30mfs64mdl9rw7lsh802zlm3ggwxxil3p9qfb"))))
|
||||
"1apq9camys2gaw6y6ic1ld20cncfwpmxnzvh4j5zkbbjpf5hbcxj"))))
|
||||
(build-system gnu-build-system)
|
||||
(arguments
|
||||
'(#:configure-flags
|
||||
`(,(string-append "--with-udev-base-dir=" %output "/lib/udev")
|
||||
;; FIXME: Without this flag the build fails with "error: assignment
|
||||
;; from incompatible pointer type" whenever the return value of
|
||||
;; "g_object_ref" is assigned to "ctx->self".
|
||||
"--disable-more-warnings")))
|
||||
`(,(string-append "--with-udev-base-dir=" %output "/lib/udev"))))
|
||||
(native-inputs
|
||||
`(("glib:bin" ,glib "bin") ; for glib-mkenums
|
||||
("gobject-introspection" ,gobject-introspection)
|
||||
|
@ -1,6 +1,6 @@
|
||||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2013 Ludovic Courtès <ludo@gnu.org>
|
||||
;;; Copyright © 2015, 2016, 2017 Efraim Flashner <efraim@flashner.co.il>
|
||||
;;; Copyright © 2015, 2016, 2017, 2020 Efraim Flashner <efraim@flashner.co.il>
|
||||
;;; Copyright © 2019 Tobias Geerinckx-Rice <me@tobias.gr>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
@ -28,15 +28,17 @@
|
||||
(define-public freeipmi
|
||||
(package
|
||||
(name "freeipmi")
|
||||
(version "1.6.4")
|
||||
(version "1.6.5")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "mirror://gnu/freeipmi/freeipmi-"
|
||||
version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"0g0s4iwx0ng4rv7hp5cc3kkx4drahsc89981gwjblf04lfavppv5"))))
|
||||
"1ncf1s84752xaq07h36wrxa5ww1167s2bizkww0igxv8djyddwk1"))))
|
||||
(build-system gnu-build-system)
|
||||
(arguments
|
||||
'(#:configure-flags '("--disable-static")))
|
||||
(inputs
|
||||
`(("libgcrypt" ,libgcrypt)))
|
||||
(home-page "https://www.gnu.org/software/freeipmi/")
|
||||
|
@ -7367,7 +7367,7 @@ where the player draws runes in real time to effect the desired spell.")
|
||||
(define-public edgar
|
||||
(package
|
||||
(name "edgar")
|
||||
(version "1.32")
|
||||
(version "1.33")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
@ -7375,7 +7375,7 @@ where the player draws runes in real time to effect the desired spell.")
|
||||
(string-append "https://github.com/riksweeney/edgar/releases/download/"
|
||||
version "/edgar-" version "-1.tar.gz"))
|
||||
(sha256
|
||||
(base32 "12lam6qcscc5ima1w2ksd1cvsvxbd17h6mqkgsqpzx8ap43p2r5p"))))
|
||||
(base32 "1mbx7dvizdca4g1blcv3bdh6yxd13k47rkya4rdzg0nvvz24m175"))))
|
||||
(build-system gnu-build-system)
|
||||
(arguments '(#:tests? #f ; there are no tests
|
||||
#:make-flags
|
||||
|
@ -679,6 +679,53 @@ OpenGL graphics API.")
|
||||
"A library for handling OpenGL function pointer management.")
|
||||
(license license:x11)))
|
||||
|
||||
(define-public libglvnd
|
||||
(package
|
||||
(name "libglvnd")
|
||||
(version "1.3.1")
|
||||
(home-page "https://gitlab.freedesktop.org/glvnd/libglvnd")
|
||||
(source (origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
(url home-page)
|
||||
(commit (string-append "v" version))))
|
||||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
(base32
|
||||
"0mkzdzdxjxjl794rblq4mq33wmb8ikqmfswbqdbr8gw2kw4wlhdl"))))
|
||||
(build-system meson-build-system)
|
||||
(arguments
|
||||
'(#:configure-flags '("-Dx11=enabled")
|
||||
#:phases (modify-phases %standard-phases
|
||||
(add-after 'unpack 'disable-glx-tests
|
||||
(lambda _
|
||||
;; This package is meant to be used alongside Mesa.
|
||||
;; To avoid a circular dependency, disable tests that
|
||||
;; require a running Xorg server.
|
||||
(substitute* "tests/meson.build"
|
||||
(("if with_glx")
|
||||
"if false"))
|
||||
#t)))))
|
||||
(native-inputs
|
||||
`(("pkg-config" ,pkg-config)))
|
||||
(inputs
|
||||
`(("libx11" ,libx11)
|
||||
("libxext" ,libxext)
|
||||
("xorgproto" ,xorgproto)))
|
||||
(synopsis "Vendor-neutral OpenGL dispatch library")
|
||||
(description
|
||||
"libglvnd is a vendor-neutral dispatch layer for arbitrating OpenGL
|
||||
API calls between multiple vendors. It allows multiple drivers from
|
||||
different vendors to coexist on the same filesystem, and determines which
|
||||
vendor to dispatch each API call to at runtime.
|
||||
|
||||
Both GLX and EGL are supported, in any combination with OpenGL and OpenGL ES.")
|
||||
;; libglvnd is available under a custom X11-style license, and incorporates
|
||||
;; code with various other licenses. See README.md for details.
|
||||
(license (list (license:x11-style "file://README.md")
|
||||
license:x11
|
||||
license:expat))))
|
||||
|
||||
(define-public soil
|
||||
(package
|
||||
(name "soil")
|
||||
|
@ -51,6 +51,8 @@
|
||||
;;; Copyright © 2020 Nicolas Goaziou <mail@nicolasgoaziou.fr>
|
||||
;;; Copyright © 2020 Naga Malleswari <nagamalli@riseup.net>
|
||||
;;; Copyright © 2020 Ryan Prior <rprior@protonmail.com>
|
||||
;;; Copyright © 2020 Vinicius Monego <monego@posteo.net>
|
||||
;;; Copyright © 2020 Brice Waegeneire <brice@waegenei.re>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
@ -643,9 +645,9 @@ extraction, and lookup for applications on the desktop.")
|
||||
("json-glib" ,json-glib)
|
||||
("krb5" ,mit-krb5)
|
||||
("libgweather" ,libgweather)
|
||||
("libnma" ,libnma)
|
||||
("libsecret" ,libsecret)
|
||||
("network-manager" ,network-manager)
|
||||
("network-manager-applet" ,network-manager-applet)
|
||||
("packagekit" ,packagekit)
|
||||
("polkit" ,polkit)
|
||||
("pwquality" ,libpwquality)
|
||||
@ -806,41 +808,50 @@ client devices can handle.")
|
||||
|
||||
(define-public libnma
|
||||
(package
|
||||
(name "libnma")
|
||||
(version "1.8.26")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "mirror://gnome/sources/" name "/"
|
||||
(version-major+minor version) "/"
|
||||
name "-" version ".tar.xz"))
|
||||
(sha256
|
||||
(base32
|
||||
"1w9lld38risnk1krknfwln24kabdxnj274pyz4jhndphwigrshaf"))))
|
||||
(build-system meson-build-system)
|
||||
(arguments
|
||||
`(#:glib-or-gtk? #t))
|
||||
(native-inputs
|
||||
`(("gettext" ,gettext-minimal)
|
||||
("glib:bin" ,glib "bin")
|
||||
("gtk-doc" ,gtk-doc)
|
||||
("gobject-introspection" ,gobject-introspection)
|
||||
("pkg-config" ,pkg-config)))
|
||||
(inputs
|
||||
`(("adwaita-icon-theme" ,adwaita-icon-theme)
|
||||
("gcr" ,gcr)
|
||||
("gtk+" ,gtk+)
|
||||
("iso-codes" ,iso-codes)
|
||||
("mobile-broadband-provider-info" ,mobile-broadband-provider-info)
|
||||
("network-manager" ,network-manager)))
|
||||
(synopsis "Network Manager's applet library")
|
||||
(description "Libnma is an applet library for Network Manager. It was
|
||||
(name "libnma")
|
||||
(version "1.8.28")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "mirror://gnome/sources/" name "/"
|
||||
(version-major+minor version) "/"
|
||||
name "-" version ".tar.xz"))
|
||||
(sha256
|
||||
(base32
|
||||
"09mp6k0hfam1vyyv9kcd8j4gb2r58i05ipx2nswb58ris599bxja"))))
|
||||
(build-system meson-build-system)
|
||||
(arguments
|
||||
`(#:phases
|
||||
(modify-phases %standard-phases
|
||||
(add-after 'unpack 'patch-docbook-xml
|
||||
(lambda* (#:key inputs #:allow-other-keys)
|
||||
(let ((xmldoc (string-append (assoc-ref inputs "docbook-xml")
|
||||
"/xml/dtd/docbook")))
|
||||
(substitute* "libnma-docs.xml"
|
||||
(("http://.*/docbookx\\.dtd")
|
||||
(string-append xmldoc "/docbookx.dtd")))
|
||||
#t))))))
|
||||
(native-inputs
|
||||
`(("docbook-xml" ,docbook-xml-4.3)
|
||||
("gettext" ,gettext-minimal)
|
||||
("glib:bin" ,glib "bin")
|
||||
("gtk-doc" ,gtk-doc)
|
||||
("gobject-introspection" ,gobject-introspection)
|
||||
("pkg-config" ,pkg-config)
|
||||
("vala" ,vala)))
|
||||
(inputs
|
||||
`(("gcr" ,gcr)
|
||||
("gtk+" ,gtk+)
|
||||
("iso-codes" ,iso-codes)
|
||||
("mobile-broadband-provider-info" ,mobile-broadband-provider-info)
|
||||
("network-manager" ,network-manager)))
|
||||
(synopsis "Network Manager's applet library")
|
||||
(description "Libnma is an applet library for Network Manager. It was
|
||||
initially part of network-manager-applet and has now become a separate
|
||||
project.")
|
||||
(home-page "https://gitlab.gnome.org/GNOME/libnma")
|
||||
|
||||
;; Some files carry the "GPL-2.0+" SPDX identifier while others say
|
||||
;; "LGPL-2.1+".
|
||||
(license license:gpl2+)))
|
||||
(home-page "https://gitlab.gnome.org/GNOME/libnma")
|
||||
;; Some files carry the "GPL-2.0+" SPDX identifier while others say
|
||||
;; "LGPL-2.1+".
|
||||
(license license:gpl2+)))
|
||||
|
||||
(define-public gnome-menus
|
||||
(package
|
||||
@ -868,73 +879,72 @@ configuration files for the GNOME menu, as well as a simple menu editor.")
|
||||
(define-public deja-dup
|
||||
(package
|
||||
(name "deja-dup")
|
||||
(version "34.3")
|
||||
(version "40.6")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri "https://launchpadlibrarian.net/295170991/deja-dup-34.3.tar.xz")
|
||||
(sha256
|
||||
(base32
|
||||
"1xqcr61hpbahbla7gdjn4ngjfz7w6f57y7f5pkb77yk05f60j2n9"))
|
||||
(patches
|
||||
(search-patches "deja-dup-use-ref-keyword-for-iter.patch"))))
|
||||
(build-system glib-or-gtk-build-system)
|
||||
(method url-fetch)
|
||||
(uri (string-append "https://gitlab.gnome.org/World/deja-dup/-/archive/"
|
||||
version "/deja-dup-" version ".tar.bz2"))
|
||||
(sha256
|
||||
(base32
|
||||
"0lwazh6crby5wpy9fg6zvwy4plqbhs2f98bm5lbizjdlbh88n5q0"))))
|
||||
(build-system meson-build-system)
|
||||
(arguments
|
||||
`(#:modules ((guix build gnu-build-system)
|
||||
((guix build cmake-build-system) #:prefix cmake:)
|
||||
(guix build glib-or-gtk-build-system)
|
||||
(guix build utils))
|
||||
#:imported-modules (,@%glib-or-gtk-build-system-modules
|
||||
(guix build cmake-build-system))
|
||||
#:test-target "test"
|
||||
#:configure-flags (list (string-append
|
||||
"-DCMAKE_INSTALL_FULL_DATADIR=" %output)
|
||||
(string-append
|
||||
"-DCMAKE_INSTALL_LIBEXECDIR=" %output))
|
||||
`(#:glib-or-gtk? #t
|
||||
#:configure-flags
|
||||
(list
|
||||
;; Otherwise, the RUNPATH will lack the final path component.
|
||||
(string-append "-Dc_link_args=-Wl,-rpath="
|
||||
(assoc-ref %outputs "out") "/lib/deja-dup"))
|
||||
#:phases
|
||||
(modify-phases %standard-phases
|
||||
(add-after 'unpack 'patch-lockfile-deletion
|
||||
(lambda rest
|
||||
(substitute* "libdeja/tools/duplicity/DuplicityInstance.vala"
|
||||
(("/bin/rm")
|
||||
(which "rm")))))
|
||||
(replace 'configure
|
||||
(assoc-ref cmake:%standard-phases 'configure))
|
||||
(delete 'check) ;; Fails due to issues with DBus
|
||||
(add-after 'install 'wrap-deja-dup
|
||||
(lambda* (#:key inputs outputs #:allow-other-keys)
|
||||
(let ((python (assoc-ref inputs "python"))
|
||||
(python-path (getenv "PYTHONPATH"))
|
||||
(duplicity (assoc-ref inputs "duplicity"))
|
||||
(out (assoc-ref outputs "out")))
|
||||
(for-each
|
||||
(lambda (program)
|
||||
(wrap-program program
|
||||
`("PATH" ":" prefix (,(string-append python "/bin")
|
||||
,(string-append duplicity "/bin"))))
|
||||
(wrap-program program
|
||||
`("PYTHONPATH" ":" prefix (,python-path))))
|
||||
|
||||
(find-files (string-append out "/bin")))
|
||||
#t))))))
|
||||
(add-after 'unpack 'patch-paths
|
||||
(lambda* (#:key inputs #:allow-other-keys)
|
||||
(let ((python (assoc-ref inputs "python")))
|
||||
(substitute* '("libdeja/tools/duplicity/DuplicityInstance.vala"
|
||||
"libdeja/tests/scripts/instance-error.test")
|
||||
(("/bin/rm")
|
||||
(which "rm")))
|
||||
(substitute* "libdeja/tests/runner.vala"
|
||||
(("/bin/sh")
|
||||
(which "sh")))
|
||||
(substitute* "libdeja/tests/scripts/instance-error.test"
|
||||
(("`which python3`")
|
||||
(string-append python "/bin/python3"))))))
|
||||
(add-after 'unpack 'patch-libgpg-error
|
||||
(lambda* (#:key inputs #:allow-other-keys)
|
||||
(let ((libgpg-error (assoc-ref inputs "libgpg-error")))
|
||||
(substitute* "meson.build"
|
||||
(("(gpgerror_libs = ).*" _ var)
|
||||
(format #f "~a '-L~a/lib -lgpg-error'\n" var libgpg-error))))
|
||||
#t))
|
||||
(add-after 'unpack 'skip-gtk-update-icon-cache
|
||||
;; Don't create 'icon-theme.cache'.
|
||||
(lambda _
|
||||
(substitute* "data/post-install.sh"
|
||||
(("gtk-update-icon-cache") "true"))
|
||||
#t)))))
|
||||
(inputs
|
||||
`(("gsettings-desktop-schemas" ,gsettings-desktop-schemas)
|
||||
("gobject-introspection" ,gobject-introspection)
|
||||
("duplicity" ,duplicity)
|
||||
("python" ,python-2)
|
||||
("python-pygobject" ,python2-pygobject)
|
||||
("python" ,python)
|
||||
("python-pygobject" ,python-pygobject)
|
||||
("gtk+" ,gtk+)
|
||||
("json-glib" ,json-glib)
|
||||
("libnotify" ,libnotify)
|
||||
("libpeas" ,libpeas)
|
||||
("libgpg-error" ,libgpg-error)
|
||||
("libsecret" ,libsecret)
|
||||
("libsoup" ,libsoup)
|
||||
("packagekit" ,packagekit)))
|
||||
(native-inputs
|
||||
`(("pkg-config" ,pkg-config)
|
||||
("vala" ,vala)
|
||||
`(("appstream-glib" ,appstream-glib)
|
||||
("desktop-file-utils" ,desktop-file-utils)
|
||||
("gettext" ,gettext-minimal)
|
||||
("glib" ,glib "bin") ; for glib-compile-schemas.
|
||||
("gobject-introspection" ,gobject-introspection)
|
||||
("itstool" ,itstool)
|
||||
("intltool" ,intltool)
|
||||
("cmake" ,cmake-minimal)))
|
||||
(home-page "https://launchpad.net/deja-dup")
|
||||
("pkg-config" ,pkg-config)
|
||||
("vala" ,vala)))
|
||||
(home-page "https://wiki.gnome.org/Apps/DejaDup")
|
||||
(synopsis "Simple backup tool, for regular encrypted backups")
|
||||
(description
|
||||
"Déjà Dup is a simple backup tool, for regular encrypted backups. It
|
||||
@ -3426,7 +3436,7 @@ and RDP protocols.")
|
||||
; or /etc/machine-id.
|
||||
#:glib-or-gtk? #t
|
||||
#:configure-flags '("-Denable-gtk-doc=true")))
|
||||
(home-page "https://developer.gnome.org/dconf")
|
||||
(home-page "https://developer.gnome.org/dconf/")
|
||||
(synopsis "Low-level GNOME configuration system")
|
||||
(description "Dconf is a low-level configuration system. Its main purpose
|
||||
is to provide a backend to GSettings on platforms that don't already have
|
||||
@ -4148,10 +4158,14 @@ faster results and to avoid unnecessary server load.")
|
||||
#t))))
|
||||
(build-system glib-or-gtk-build-system)
|
||||
(arguments
|
||||
'( ;; The tests want to contact the system bus, which can't be done in the
|
||||
;; build environment. The integration test can run, but the last of
|
||||
;; the up-self-tests doesn't. Disable tests for now.
|
||||
#:tests? #f
|
||||
'(#:phases
|
||||
(modify-phases %standard-phases
|
||||
(add-before 'check 'pre-check
|
||||
(lambda* (#:key inputs #:allow-other-keys)
|
||||
(let ((umockdev (string-append (assoc-ref inputs "umockdev")
|
||||
"/lib")))
|
||||
(setenv "LD_LIBRARY_PATH" umockdev))
|
||||
#t)))
|
||||
#:configure-flags (list "--localstatedir=/var"
|
||||
(string-append "--with-udevrulesdir="
|
||||
(assoc-ref %outputs "out")
|
||||
@ -4162,6 +4176,12 @@ faster results and to avoid unnecessary server load.")
|
||||
("intltool" ,intltool)
|
||||
("python" ,python)
|
||||
|
||||
;; For tests.
|
||||
("python-dbus" ,python-dbus)
|
||||
("python-dbusmock" ,python-dbusmock)
|
||||
("python-pygobject" ,python-pygobject)
|
||||
("umockdev" ,umockdev)
|
||||
|
||||
;; For man pages.
|
||||
("libxslt" ,libxslt) ;for 'xsltproc'
|
||||
("libxml2" ,libxml2) ;for 'XML_CATALOG_FILES'
|
||||
@ -6374,56 +6394,58 @@ users.")
|
||||
(define-public network-manager
|
||||
(package
|
||||
(name "network-manager")
|
||||
(version "1.18.4")
|
||||
(version "1.24.0")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "mirror://gnome/sources/NetworkManager/"
|
||||
(version-major+minor version) "/"
|
||||
"NetworkManager-" version ".tar.xz"))
|
||||
(patches (search-patches "nm-plugin-path.patch"))
|
||||
(patches (search-patches "network-manager-plugin-path.patch"))
|
||||
(sha256
|
||||
(base32
|
||||
"0pnh1wr2p1fqa5pr945fr3lngfc5ccfrmgddqsg55lxnjpv0ggd3"))
|
||||
"06044fl60bjlj7c6rqqfbm5795h61h6yzp7ch392hzcnm46wwhn3"))
|
||||
(modules '((guix build utils)))
|
||||
(snippet
|
||||
'(begin
|
||||
(substitute* "src/devices/wwan/nm-modem-manager.c"
|
||||
(("systemd") "elogind"))
|
||||
#t))))
|
||||
(build-system gnu-build-system)
|
||||
(build-system meson-build-system)
|
||||
(outputs '("out"
|
||||
"doc")) ; 8 MiB of gtk-doc HTML
|
||||
(arguments
|
||||
'(#:configure-flags
|
||||
`(#:configure-flags
|
||||
(let ((out (assoc-ref %outputs "out"))
|
||||
(doc (assoc-ref %outputs "doc"))
|
||||
(dhclient (string-append (assoc-ref %build-inputs "isc-dhcp")
|
||||
"/sbin/dhclient")))
|
||||
(list "--with-libnm-glib" ; needed by network-manager-applet
|
||||
"--with-systemd-journal=no"
|
||||
"--with-session-tracking=elogind"
|
||||
"--with-suspend-resume=elogind"
|
||||
"--with-consolekit=no"
|
||||
"--with-crypto=gnutls"
|
||||
"--disable-config-plugin-ibft"
|
||||
"--sysconfdir=/etc"
|
||||
"--localstatedir=/var"
|
||||
(string-append "--with-udev-dir="
|
||||
out "/lib/udev")
|
||||
(string-append "--with-dbus-sys-dir="
|
||||
out "/etc/dbus-1/system.d")
|
||||
(string-append "--with-html-dir="
|
||||
doc "/share/gtk-doc/html")
|
||||
(string-append "--with-dhclient=" dhclient)))
|
||||
(list
|
||||
;; Otherwise, the RUNPATH will lack the final 'NetworkManager' path
|
||||
;; component.
|
||||
(string-append "-Dc_link_args=-Wl,-rpath="
|
||||
out "/lib:"
|
||||
out "/lib/NetworkManager/" ,version)
|
||||
"-Dsystemd_journal=false"
|
||||
"-Dsession_tracking=elogind"
|
||||
"-Dsuspend_resume=elogind"
|
||||
"-Dsystemdsystemunitdir=no"
|
||||
"-Dsession_tracking_consolekit=false"
|
||||
"-Ddhcpcd=no"
|
||||
"-Ddhcpcanon=no"
|
||||
"-Dcrypto=gnutls"
|
||||
"-Diwd=true"
|
||||
"-Dlibaudit=yes"
|
||||
"-Dqt=false"
|
||||
"-Ddocs=true"
|
||||
"--sysconfdir=/etc"
|
||||
"--localstatedir=/var"
|
||||
(string-append "-Dudev_dir="
|
||||
out "/lib/udev")
|
||||
(string-append "-Ddbus_conf_dir="
|
||||
out "/etc/dbus-1/system.d")
|
||||
|
||||
(string-append "-Ddhclient=" dhclient)))
|
||||
#:phases
|
||||
(modify-phases %standard-phases
|
||||
;; This bare "ls" invocation breaks some tests.
|
||||
(add-after 'unpack 'patch-ls-invocation
|
||||
(lambda _
|
||||
(substitute* "build-aux/ltmain.sh"
|
||||
(("`ls -")
|
||||
(string-append "`" (which "ls") " -")))
|
||||
#t))
|
||||
(add-before 'configure 'pre-configure
|
||||
(lambda _
|
||||
;; These tests try to test aspects of network-manager's
|
||||
@ -6431,65 +6453,64 @@ users.")
|
||||
;; cope with being already in the Guix build jail as that jail
|
||||
;; lacks some features that they would like to proxy over (like
|
||||
;; a /sys mount).
|
||||
(substitute* '("Makefile.in")
|
||||
(("src/platform/tests/test-address-linux") " ")
|
||||
(("src/platform/tests/test-cleanup-linux") " ")
|
||||
(("src/platform/tests/test-link-linux") " ")
|
||||
(("src/platform/tests/test-route-linux") " ")
|
||||
(("src/devices/tests/test-acd") "")
|
||||
(("src/devices/tests/test-arping") " ")
|
||||
(("src/devices/tests/test-lldp") " ")
|
||||
(("src/tests/test-route-manager-linux") " "))
|
||||
#t))
|
||||
(add-after 'unpack 'delete-failing-tests
|
||||
(lambda _
|
||||
;; FIXME: These three tests fail for unknown reasons.
|
||||
;; ERROR:libnm-core/tests/test-general.c:5842:
|
||||
;; _json_config_check_valid: assertion failed (res == expected): (1 == 0)
|
||||
;; ERROR:libnm-core/tests/test-keyfile.c:647:
|
||||
;; test_team_conf_read_invalid: assertion failed: (nm_setting_team_get_config (s_team) == NULL)
|
||||
;; ERROR:libnm-core/tests/test-setting.c:907:
|
||||
;; _test_team_config_sync: assertion failed: (nm_streq0 (nm_setting_team_get_runner (s_team), runner))
|
||||
(substitute* "Makefile.in"
|
||||
(("libnm-core/tests/test-general") " ")
|
||||
(("libnm-core/tests/test-keyfile") " ")
|
||||
(("libnm-core/tests/test-setting\\$\\(EXEEXT\\)") " "))
|
||||
(substitute* "src/platform/tests/meson.build"
|
||||
((".*test-address-linux.*") "")
|
||||
((".*test-cleanup-linux.*") "")
|
||||
((".*test-link-linux.*") "")
|
||||
((".*test-route-linux.*") ""))
|
||||
(substitute* "src/devices/tests/meson.build"
|
||||
((".*test-acd.*") "")
|
||||
((".*test-lldp.*") ""))
|
||||
#t))
|
||||
(add-after 'unpack 'patch-docbook-xml
|
||||
(lambda* (#:key inputs #:allow-other-keys)
|
||||
(let ((xmldoc (string-append (assoc-ref inputs "docbook-xml")
|
||||
"/xml/dtd/docbook")))
|
||||
(substitute* (find-files "." ".*\\.(xsl|xml)")
|
||||
(("http://.*/docbookx\\.dtd")
|
||||
(string-append xmldoc "/docbookx.dtd")))
|
||||
#t)))
|
||||
(add-before 'check 'pre-check
|
||||
(lambda _
|
||||
;; For the missing /etc/machine-id.
|
||||
(setenv "DBUS_FATAL_WARNINGS" "0")
|
||||
|
||||
;; XXX: Regenerate some of the tests that are dependent on Python version.
|
||||
;; Try removing this variable for newer versions of NetworkManager.
|
||||
(setenv "NM_TEST_REGENERATE" "1")
|
||||
#t))
|
||||
(replace 'install
|
||||
(add-before 'install 'no-polkit-magic
|
||||
;; Meson ‘magically’ invokes pkexec, which fails (not setuid).
|
||||
(lambda _
|
||||
(invoke "make"
|
||||
"sysconfdir=/tmp"
|
||||
"rundir=/tmp"
|
||||
"statedir=/tmp"
|
||||
"nmstatedir=/tmp/nm"
|
||||
"install")
|
||||
#t)))))
|
||||
(setenv "PKEXEC_UID" "something")
|
||||
#t))
|
||||
(add-after 'install 'move-doc
|
||||
(lambda* (#:key outputs #:allow-other-keys)
|
||||
(let ((out (assoc-ref outputs "out"))
|
||||
(doc (assoc-ref outputs "doc")))
|
||||
(mkdir-p (string-append doc "/share"))
|
||||
(for-each (lambda (directory)
|
||||
(copy-recursively (string-append out directory)
|
||||
(string-append doc directory))
|
||||
(delete-file-recursively
|
||||
(string-append out directory)))
|
||||
'("/share/doc" "/share/gtk-doc"))
|
||||
#t))))))
|
||||
(propagated-inputs
|
||||
`(("glib" ,glib)))
|
||||
(native-inputs
|
||||
`(("glib:bin" ,glib "bin") ; for gdbus-codegen
|
||||
`(("glib:bin" ,glib "bin") ; for gdbus-codegen
|
||||
("gtk-doc" ,gtk-doc)
|
||||
("gobject-introspection" ,gobject-introspection)
|
||||
("docbook-xml" ,docbook-xml)
|
||||
("docbook-xsl" ,docbook-xsl)
|
||||
("intltool" ,intltool)
|
||||
("libxslt" ,libxslt)
|
||||
("libxml2" ,libxml2)
|
||||
("pkg-config" ,pkg-config)
|
||||
("vala" ,vala)
|
||||
;; For testing.
|
||||
("python" ,python-wrapper)
|
||||
("python-dbus" ,python-dbus)
|
||||
("python-pygobject" ,python-pygobject)))
|
||||
(inputs
|
||||
`(("coreutils" ,coreutils) ; for ls
|
||||
("curl" ,curl)
|
||||
`(("curl" ,curl)
|
||||
("cyrus-sasl" ,cyrus-sasl)
|
||||
("dbus-glib" ,dbus-glib)
|
||||
("dnsmasq" ,dnsmasq)
|
||||
@ -6497,35 +6518,42 @@ users.")
|
||||
("gnutls" ,gnutls)
|
||||
("iptables" ,iptables)
|
||||
("isc-dhcp" ,isc-dhcp)
|
||||
("iwd" ,iwd) ; wpa_supplicant alternative
|
||||
("jansson" ,jansson)
|
||||
("libaudit" ,audit)
|
||||
("libgcrypt" ,libgcrypt)
|
||||
("libgudev" ,libgudev)
|
||||
("libndp" ,libndp)
|
||||
("libnl" ,libnl)
|
||||
("libsoup" ,libsoup)
|
||||
("mobile-broadband-provider-info" ,mobile-broadband-provider-info)
|
||||
("modem-manager" ,modem-manager)
|
||||
("newt" ,newt) ;for the 'nmtui' console interface
|
||||
("openresolv" ,openresolv) ; alternative resolv.conf manager
|
||||
("polkit" ,polkit)
|
||||
("ppp" ,ppp)
|
||||
("readline" ,readline)
|
||||
("util-linux" ,util-linux)
|
||||
("elogind" ,elogind)))
|
||||
(synopsis "Network connection manager")
|
||||
(home-page "https://www.gnome.org/projects/NetworkManager/")
|
||||
(home-page "https://wiki.gnome.org/Projects/NetworkManager")
|
||||
(description
|
||||
"NetworkManager is a system network service that manages your network
|
||||
devices and connections, attempting to keep active network connectivity when
|
||||
available. It manages ethernet, WiFi, mobile broadband (WWAN), and PPPoE
|
||||
devices, and provides VPN integration with a variety of different VPN
|
||||
services.")
|
||||
(license license:gpl2+)
|
||||
;; “This NetworkManager project consists of the daemon, client tools, and
|
||||
;; libnm. libnm is licensed LGPL-2.1+, while the rest is licensed under
|
||||
;; GPL-2.0+.”
|
||||
(license (list license:gpl2+
|
||||
license:lgpl2.1+))
|
||||
(properties '((upstream-name . "NetworkManager")))))
|
||||
|
||||
(define-public network-manager-openvpn
|
||||
(package
|
||||
(name "network-manager-openvpn")
|
||||
;; Updating? Check whether network-manager-applet still needs libnm_gtk.
|
||||
(version "1.8.10")
|
||||
(version "1.8.12")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append
|
||||
@ -6534,7 +6562,7 @@ services.")
|
||||
"/NetworkManager-openvpn-" version ".tar.xz"))
|
||||
(sha256
|
||||
(base32
|
||||
"1vri49yff4lj13dnzkpq9nx3a4z1bmbrv807r151plj8m1mwhg5g"))))
|
||||
"062kh4zj7jfbwy4zzcwpq2m457bzbpm3l18s0ysnw3mgia3siz8f"))))
|
||||
(build-system gnu-build-system)
|
||||
(arguments
|
||||
`(#:configure-flags '("--enable-absolute-paths" "--localstatedir=/var")
|
||||
@ -6564,7 +6592,7 @@ services.")
|
||||
("kmod" ,kmod)
|
||||
("openvpn" ,openvpn)
|
||||
("network-manager" ,network-manager)
|
||||
("network-manager-applet" ,network-manager-applet) ;for libnma
|
||||
("libnma" ,libnma)
|
||||
("libsecret" ,libsecret)))
|
||||
(home-page "https://wiki.gnome.org/Projects/NetworkManager/VPN")
|
||||
(synopsis "OpenVPN plug-in for NetworkManager")
|
||||
@ -6589,7 +6617,11 @@ to virtual private networks (VPNs) via OpenVPN.")
|
||||
"1js5lwcsqws4klgypfxl4ikmakv7v7xgddij1fj6b0y0qicx0kyy"))))
|
||||
(build-system gnu-build-system)
|
||||
(arguments
|
||||
`(#:configure-flags '("--enable-absolute-paths" "--localstatedir=/var")
|
||||
`(#:configure-flags '("--enable-absolute-paths"
|
||||
"--localstatedir=/var"
|
||||
;; libnm-glib has been removed from network-manager
|
||||
;; 1de8383ad9fdfc8f552117e5d109bdfa7005634b
|
||||
"--with-libnm-glib=no")
|
||||
#:phases
|
||||
(modify-phases %standard-phases
|
||||
(add-after 'configure 'patch-path
|
||||
@ -6613,7 +6645,7 @@ to virtual private networks (VPNs) via OpenVPN.")
|
||||
("kmod" ,kmod)
|
||||
("vpnc" ,vpnc)
|
||||
("network-manager" ,network-manager)
|
||||
("network-manager-applet" ,network-manager-applet) ;for libnma
|
||||
("libnma" ,libnma)
|
||||
("libsecret" ,libsecret)))
|
||||
(home-page "https://wiki.gnome.org/Projects/NetworkManager/VPN")
|
||||
(synopsis "VPNC plug-in for NetworkManager")
|
||||
@ -6655,7 +6687,7 @@ Compatible with Cisco VPN concentrators configured to use IPsec.")
|
||||
#t)))))
|
||||
(native-inputs
|
||||
`(("intltool" ,intltool)
|
||||
("network-manager-applet" ,network-manager-applet) ;for libnma
|
||||
("libnma" ,libnma)
|
||||
("pkg-config" ,pkg-config)))
|
||||
(inputs
|
||||
`(("gcr" ,gcr)
|
||||
@ -6704,7 +6736,7 @@ Cisco's AnyConnect SSL VPN.")
|
||||
(define-public network-manager-applet
|
||||
(package
|
||||
(name "network-manager-applet")
|
||||
(version "1.8.24")
|
||||
(version "1.16.0")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "mirror://gnome/sources/network-manager-applet/"
|
||||
@ -6712,13 +6744,10 @@ Cisco's AnyConnect SSL VPN.")
|
||||
"network-manager-applet-" version ".tar.xz"))
|
||||
(sha256
|
||||
(base32
|
||||
"1gzvz4wfqfsfclqg56y954al8x6fmz71cnxlx1i4nqr7a25bp2qi"))))
|
||||
"1rf3nm0hjcy9f8ajb4vmvwy503w8yj8d4daxkcb7w7i7b92qmyfn"))))
|
||||
(build-system meson-build-system)
|
||||
(arguments
|
||||
'(#:configure-flags
|
||||
;; ‘Nobody should be using this’ but network-manager-openvpn 1.8.10 does.
|
||||
(list "-Dlibnm_gtk=true")
|
||||
#:glib-or-gtk? #t))
|
||||
'(#:glib-or-gtk? #t))
|
||||
(native-inputs
|
||||
`(("intltool" ,intltool)
|
||||
("glib:bin" ,glib "bin") ; for glib-compile-resources, etc.
|
||||
@ -6732,16 +6761,15 @@ Cisco's AnyConnect SSL VPN.")
|
||||
("network-manager" ,network-manager)))
|
||||
(inputs
|
||||
`(("gcr" ,gcr)
|
||||
("iso-codes" ,iso-codes)
|
||||
("libnma" ,libnma)
|
||||
("libgudev" ,libgudev)
|
||||
("libnotify" ,libnotify)
|
||||
("libsecret" ,libsecret)
|
||||
("libselinux" ,libselinux)
|
||||
("jansson" ,jansson) ; for team support
|
||||
("modem-manager" ,modem-manager)
|
||||
("mobile-broadband-provider-info" ,mobile-broadband-provider-info)))
|
||||
("modem-manager" ,modem-manager)))
|
||||
(synopsis "Applet for managing network connections")
|
||||
(home-page "https://www.gnome.org/projects/NetworkManager/")
|
||||
(home-page "https://wiki.gnome.org/Projects/NetworkManager")
|
||||
(description
|
||||
"This package contains a systray applet for NetworkManager. It displays
|
||||
the available networks and allows users to easily switch between them.")
|
||||
@ -7130,6 +7158,7 @@ devices using the GNOME desktop.")
|
||||
("libgnomekbd" ,libgnomekbd)
|
||||
("libgudev" ,libgudev)
|
||||
("libgtop" ,libgtop)
|
||||
("libnma" ,libnma)
|
||||
("libpwquality" ,libpwquality)
|
||||
("libsecret" ,libsecret)
|
||||
("libsoup" ,libsoup)
|
||||
@ -7293,6 +7322,7 @@ properties, screen resolution, and other GNOME parameters.")
|
||||
("libcroco" ,libcroco)
|
||||
("libgnomekbd" ,libgnomekbd) ;for gkbd-keyboard-display
|
||||
("libgweather" ,libgweather)
|
||||
("libnma" ,libnma)
|
||||
("libsoup" ,libsoup)
|
||||
("mesa-headers" ,mesa-headers)
|
||||
("mutter" ,mutter)
|
||||
@ -10038,6 +10068,37 @@ to.")
|
||||
;; snowball
|
||||
license:bsd-2))))
|
||||
|
||||
(define-public glabels
|
||||
(package
|
||||
(name "glabels")
|
||||
(version "3.4.1")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "mirror://gnome/sources/" name "/"
|
||||
(version-major+minor version) "/"
|
||||
"glabels-" version ".tar.xz"))
|
||||
(sha256
|
||||
(base32 "0f2rki8i27pkd9r0gz03cdl1g4vnmvp0j49nhxqn275vi8lmgr0q"))))
|
||||
(build-system glib-or-gtk-build-system)
|
||||
(native-inputs
|
||||
`(("gettext" ,gettext-minimal)
|
||||
("glib:bin" ,glib "bin")
|
||||
("intltool" ,intltool)
|
||||
("itstool" ,itstool)
|
||||
("pkg-config" ,pkg-config)))
|
||||
(inputs
|
||||
`(("gtk+" ,gtk+)
|
||||
("librsvg" ,librsvg)
|
||||
("libxml2" ,libxml2)))
|
||||
(home-page "https://glabels.org/")
|
||||
(synopsis "Program for creating labels and business cards")
|
||||
(description
|
||||
"gLabels is a program for creating labels and business cards. It is
|
||||
designed to work with various laser/ink-jet peel-off label and business
|
||||
card sheets that you’ll find at most office supply stores.")
|
||||
(license license:gpl3+)))
|
||||
|
||||
(define-public libratbag
|
||||
(package
|
||||
(name "libratbag")
|
||||
|
@ -1,5 +1,5 @@
|
||||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019 Ludovic Courtès <ludo@gnu.org>
|
||||
;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020 Ludovic Courtès <ludo@gnu.org>
|
||||
;;; Copyright © 2013, 2015, 2018 Andreas Enge <andreas@enge.fr>
|
||||
;;; Copyright © 2014, 2018 Eric Bavier <bavier@member.fsf.org>
|
||||
;;; Copyright © 2014, 2015, 2016 Mark H Weaver <mhw@netris.org>
|
||||
@ -473,7 +473,7 @@ gpgpme starting with version 1.7.")
|
||||
(define-public guile-gcrypt
|
||||
(package
|
||||
(name "guile-gcrypt")
|
||||
(version "0.2.1")
|
||||
(version "0.3.0")
|
||||
(home-page "https://notabug.org/cwebber/guile-gcrypt")
|
||||
(source (origin
|
||||
(method git-fetch)
|
||||
@ -482,7 +482,7 @@ gpgpme starting with version 1.7.")
|
||||
(commit (string-append "v" version))))
|
||||
(sha256
|
||||
(base32
|
||||
"0n232iyayc46f7hywmjw0jr7pbmmz5h4b04jskhkzz9gxz0ci99c"))
|
||||
"0m29fg4pdfifnqqsa437zc5c1bhbfh62mc69ba25ak4x2cla41ll"))
|
||||
(file-name (git-file-name name version))))
|
||||
(build-system gnu-build-system)
|
||||
(arguments
|
||||
@ -510,7 +510,7 @@ gpgpme starting with version 1.7.")
|
||||
("libgcrypt" ,libgcrypt)))
|
||||
(synopsis "Cryptography library for Guile using Libgcrypt")
|
||||
(description
|
||||
"Guile-Gcrypt provides a Guile 2.x interface to a subset of the
|
||||
"Guile-Gcrypt provides a Guile interface to a subset of the
|
||||
GNU Libgcrypt crytographic library. It provides modules for cryptographic
|
||||
hash functions, message authentication codes (MAC), public-key cryptography,
|
||||
strong randomness, and more. It is implemented using the foreign function
|
||||
|
@ -1344,6 +1344,32 @@ standards of the IceCat project.")
|
||||
(lambda _ (invoke "./mach" "build")))
|
||||
(replace 'install
|
||||
(lambda _ (invoke "./mach" "install")))
|
||||
;; Thunderbird doesn't provide any .desktop file.
|
||||
;; See https://bugzilla.mozilla.org/show_bug.cgi?id=1637575
|
||||
(add-after 'install 'install-desktop-file
|
||||
(lambda* (#:key outputs #:allow-other-keys)
|
||||
(let* ((out (assoc-ref outputs "out"))
|
||||
(apps (string-append out "/share/applications")))
|
||||
(mkdir-p apps)
|
||||
(with-output-to-file (string-append apps "/icedove.desktop")
|
||||
(lambda _
|
||||
(format #t
|
||||
"[Desktop Entry]~@
|
||||
Name=Icedove~@
|
||||
Exec=~a/bin/icedove~@
|
||||
Icon=icedove~@
|
||||
GenericName=Mail/News Client~@
|
||||
Categories=Network;Email;~@
|
||||
Terminal=false~@
|
||||
StartupNotify=true~@
|
||||
MimeType=x-scheme-handler/mailto;~@
|
||||
Type=Application~@
|
||||
Actions=ComposeMessage;~@
|
||||
[Desktop Action ComposeMessage]~@
|
||||
Name=Write new message~@
|
||||
Exec=~@*~a/bin/icedove -compose~%"
|
||||
out))))
|
||||
#t))
|
||||
(add-after 'install 'wrap-program
|
||||
(lambda* (#:key inputs outputs #:allow-other-keys)
|
||||
(let* ((out (assoc-ref outputs "out"))
|
||||
|
@ -623,8 +623,8 @@ Go programming language.")
|
||||
(license license:bsd-3))))
|
||||
|
||||
(define-public go-golang-org-x-crypto
|
||||
(let ((commit "9756ffdc24725223350eb3266ffb92590d28f278")
|
||||
(revision "4"))
|
||||
(let ((commit "2aa609cf4a9d7d1126360de73b55b6002f9e052a")
|
||||
(revision "5"))
|
||||
(package
|
||||
(name "go-golang-org-x-crypto")
|
||||
(version (git-version "0.0.0" revision commit))
|
||||
@ -637,7 +637,7 @@ Go programming language.")
|
||||
version "-checkout"))
|
||||
(sha256
|
||||
(base32
|
||||
"0q7hxaaq6lp0v8qqzifvysl47z5rfdlrxkh3d29vsl3wyby3dxl8"))))
|
||||
"1yvis6fqbsd7f356aqyi18f76vnwj3bry6mxqnkvshq4cwrf92il"))))
|
||||
(build-system go-build-system)
|
||||
(arguments
|
||||
'(#:import-path "golang.org/x/crypto"
|
||||
@ -723,8 +723,8 @@ processing.")
|
||||
(license license:bsd-3))))
|
||||
|
||||
(define-public go-golang-org-x-sys
|
||||
(let ((commit "749cb33beabd9aa6d3178e3de05bcc914f70b2bf")
|
||||
(revision "5"))
|
||||
(let ((commit "c709ea063b76879dc9915358f55d4d77c16ab6d5")
|
||||
(revision "6"))
|
||||
(package
|
||||
(name "go-golang-org-x-sys")
|
||||
(version (git-version "0.0.0" revision commit))
|
||||
@ -736,7 +736,7 @@ processing.")
|
||||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
(base32
|
||||
"0dm3257q3rv2kyn5lmqqim2fqg634v6rhrqq4glvbk4wx4l3v337"))))
|
||||
"15nq53a6kcqchng4j0d1pjw0m6hny6126nhjdwqw5n9dzh6a226d"))))
|
||||
(build-system go-build-system)
|
||||
(arguments
|
||||
`(#:import-path "golang.org/x/sys"
|
||||
@ -2186,33 +2186,31 @@ Reference algorithm has been slightly hacked as to support the streaming mode
|
||||
required by Go's standard Hash interface.")
|
||||
(license license:bsd-3)))
|
||||
|
||||
(define-public go-github-com-calmh-murmur3
|
||||
(let ((commit "74e9af8f47ac56901c490d45546ca167b60c7066")
|
||||
(revision "0"))
|
||||
(package
|
||||
(name "go-github-com-calmh-murmur3")
|
||||
(version (git-version "1.1.0" revision commit))
|
||||
(source
|
||||
(origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
(url "https://github.com/calmh/murmur3.git")
|
||||
(commit commit)))
|
||||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
(base32
|
||||
"0k8345ivx228qdbkl8bisd2wxwsinkb44ghba6r09538fr3fbr5w"))))
|
||||
(build-system go-build-system)
|
||||
(arguments
|
||||
'(#:import-path "github.com/calmh/murmur3"))
|
||||
(home-page "https://github.com/calmh/murmur3")
|
||||
(synopsis "Native MurmurHash3 Go implementation")
|
||||
(description "Native Go implementation of Austin Appleby's third
|
||||
(define-public go-github-com-twmb-murmur3
|
||||
(package
|
||||
(name "go-github-com-twmb-murmur3")
|
||||
(version "1.1.3")
|
||||
(source
|
||||
(origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
(url "https://github.com/twmb/murmur3.git")
|
||||
(commit (string-append "v" version))))
|
||||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
(base32
|
||||
"00riapwkyf23l5wyis47mbr8rwr4yrjw491jfc30wpzs111c1gyy"))))
|
||||
(build-system go-build-system)
|
||||
(arguments
|
||||
'(#:import-path "github.com/twmb/murmur3"))
|
||||
(home-page "https://github.com/twmb/murmur3")
|
||||
(synopsis "Native MurmurHash3 Go implementation")
|
||||
(description "Native Go implementation of Austin Appleby's third
|
||||
MurmurHash revision (aka MurmurHash3).
|
||||
|
||||
Reference algorithm has been slightly hacked as to support the streaming mode
|
||||
required by Go's standard Hash interface.")
|
||||
(license license:bsd-3))))
|
||||
(license license:bsd-3)))
|
||||
|
||||
(define-public go-github-com-multiformats-go-multihash
|
||||
(let ((commit "97cdb562a04c6ef66d8ed40cd62f8fbcddd396d6")
|
||||
@ -2803,7 +2801,7 @@ format in Go.")
|
||||
(define-public go-github-com-kr-pretty
|
||||
(package
|
||||
(name "go-github-com-kr-pretty")
|
||||
(version "0.1.0")
|
||||
(version "0.2.0")
|
||||
(source (origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
@ -2812,7 +2810,7 @@ format in Go.")
|
||||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
(base32
|
||||
"18m4pwg2abd0j9cn5v3k2ksk9ig4vlwxmlw9rrglanziv9l967qp"))))
|
||||
"1ywbfzz1h3a3qd8rpkiqwi1dm4w8ls9ijb4x1b7567grns9f0vnp"))))
|
||||
(build-system go-build-system)
|
||||
(propagated-inputs
|
||||
`(("go-github-com-kr-text" ,go-github-com-kr-text)))
|
||||
@ -3044,7 +3042,7 @@ mutex, simply ignore the RLock/RUnlock functions.")
|
||||
(define-public go-github-com-marten-seemann-qtls
|
||||
(package
|
||||
(name "go-github-com-marten-seemann-qtls")
|
||||
(version "0.3.2")
|
||||
(version "0.4.1")
|
||||
(source (origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
@ -3053,7 +3051,7 @@ mutex, simply ignore the RLock/RUnlock functions.")
|
||||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
(base32
|
||||
"1mdymj66qrqy80pfkwy9s9z9ifkg251whngw5lim09zm90wv2q7a"))))
|
||||
"0dz60y98nm7l70hamq0v2vrs2dspyr5yqhnrds2dfh7hchxvq76j"))))
|
||||
(build-system go-build-system)
|
||||
(arguments
|
||||
'(#:import-path "github.com/marten-seemann/qtls"
|
||||
@ -3067,6 +3065,28 @@ the Go standard library's TLS 1.3 implementation.")
|
||||
(home-page "https://github.com/marten-seemann/qtls")
|
||||
(license license:bsd-3)))
|
||||
|
||||
(define-public go-github-com-marten-seemann-chacha20
|
||||
(package
|
||||
(name "go-github-com-marten-seemann-chacha20")
|
||||
(version "0.2.0")
|
||||
(source (origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
(url "https://github.com/marten-seemann/chacha20")
|
||||
(commit (string-append "v" version))))
|
||||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
(base32
|
||||
"0x1j4cvbap45zk962qkjalc1h3axhzzdy9cdzhcjmprmm1ql4gjm"))))
|
||||
(build-system go-build-system)
|
||||
(arguments
|
||||
'(#:import-path "github.com/marten-seemann/chacha20"))
|
||||
(synopsis "ChaCha20 in Go")
|
||||
(description "This package is an external copy of the Go standard library's
|
||||
internal ChaCha20 package.")
|
||||
(home-page "https://github.com/marten-seemann/chacha20")
|
||||
(license license:bsd-3)))
|
||||
|
||||
(define-public go-github-com-cheekybits-genny
|
||||
(package
|
||||
(name "go-github-com-cheekybits-genny")
|
||||
@ -3094,7 +3114,7 @@ implementation of generics.")
|
||||
(define-public go-github-com-lucas-clemente-quic-go
|
||||
(package
|
||||
(name "go-github-com-lucas-clemente-quic-go")
|
||||
(version "0.12.1")
|
||||
(version "0.14.4")
|
||||
(source (origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
@ -3103,7 +3123,7 @@ implementation of generics.")
|
||||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
(base32
|
||||
"156nhq4dvw7mr08j952248v81q7702phbn4mp228319sahnbv65h"))))
|
||||
"04l3gqbc3gh079n8vgnrsf8ypgv8sl63xjf28jqfrb45v2l73vyz"))))
|
||||
(build-system go-build-system)
|
||||
(arguments
|
||||
'(#:import-path "github.com/lucas-clemente/quic-go"
|
||||
@ -3112,6 +3132,7 @@ implementation of generics.")
|
||||
(propagated-inputs
|
||||
`(("go-golang-org-x-crypto" ,go-golang-org-x-crypto)
|
||||
("go-github-com-cheekybits-genny" ,go-github-com-cheekybits-genny)
|
||||
("go-github-com-marten-seemann-chacha20" ,go-github-com-marten-seemann-chacha20)
|
||||
("go-github-com-marten-seemann-qtls" ,go-github-com-marten-seemann-qtls)
|
||||
("go-github-com-golang-protobuf-proto" ,go-github-com-golang-protobuf-proto)))
|
||||
(synopsis "QUIC in Go")
|
||||
@ -3496,14 +3517,14 @@ efficient space usage.")
|
||||
(modify-phases %standard-phases
|
||||
(add-after 'unpack 'patch-import-path
|
||||
(lambda _
|
||||
;; See 'go.mod' in the source distribution of Syncthing 1.4.1 for
|
||||
;; See 'go.mod' in the source distribution of Syncthing 1.5.0 for
|
||||
;; more information.
|
||||
;; <https://github.com/spaolacci/murmur3/issues/29>
|
||||
(substitute* "src/github.com/willf/bloom/bloom.go"
|
||||
(("spaolacci") "calmh"))
|
||||
(("spaolacci") "twmb"))
|
||||
#t)))))
|
||||
(propagated-inputs
|
||||
`(("go-github-com-calmh-murmur3" ,go-github-com-calmh-murmur3)
|
||||
`(("go-github-com-twmb-murmur3" ,go-github-com-twmb-murmur3)
|
||||
("go-github-com-willf-bitset" ,go-github-com-willf-bitset)))
|
||||
(synopsis "Bloom filters in Go")
|
||||
(description "This package provides a Go implementation of bloom filters,
|
||||
|
@ -25,6 +25,7 @@
|
||||
;;; Copyright © 2019 Timothy Sample <samplet@ngyro.com>
|
||||
;;; Copyright © 2019, 2020 Martin Becze <mjbecze@riseup.net>
|
||||
;;; Copyright © 2020 Evan Straw <evan.straw99@gmail.com>
|
||||
;;; Copyright © 2020 Jack Hill <jackhill@jackhill.us>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
@ -464,10 +465,23 @@ you send to a FIFO file.")
|
||||
("automake" ,automake)
|
||||
("pkg-config" ,pkg-config)
|
||||
("texinfo" ,texinfo)))
|
||||
(inputs `(("guile" ,guile-2.2)))
|
||||
(propagated-inputs `(("guile2.2-lib" ,guile2.2-lib)))
|
||||
(inputs `(("guile" ,guile-3.0)))
|
||||
(propagated-inputs `(("guile-lib" ,guile-lib)))
|
||||
(arguments
|
||||
'(#:phases (modify-phases %standard-phases
|
||||
`(#:modules (((guix build guile-build-system)
|
||||
#:select (target-guile-effective-version))
|
||||
,@%gnu-build-system-modules)
|
||||
#:imported-modules ((guix build guile-build-system)
|
||||
,@%gnu-build-system-modules)
|
||||
#:phases (modify-phases %standard-phases
|
||||
;; Support Guile 3.0 in configure from upstream commit
|
||||
;; 4c724577ccf19bb88580f72f2f6b166a0447ce3f
|
||||
(add-before 'bootstrap 'configure-support-guile3.0
|
||||
(lambda _
|
||||
(substitute* "configure.ac"
|
||||
(("GUILE_PKG.*")
|
||||
"GUILE_PKG([3.0 2.0 2.2])"))
|
||||
#t))
|
||||
(add-before 'configure 'set-guilesitedir
|
||||
(lambda _
|
||||
(substitute* "Makefile.in"
|
||||
@ -482,6 +496,24 @@ $(datadir)/guile/site/$(GUILE_EFFECTIVE_VERSION)\n"))
|
||||
(("^guilesitedir =.*$")
|
||||
"guilesitedir = \
|
||||
$(datadir)/guile/site/$(GUILE_EFFECTIVE_VERSION)\n"))
|
||||
#t))
|
||||
(add-after 'install 'wrap-program
|
||||
(lambda* (#:key inputs outputs #:allow-other-keys)
|
||||
(let* ((out (assoc-ref outputs "out"))
|
||||
(bin (string-append out "/bin"))
|
||||
(guile-lib (assoc-ref inputs "guile-lib"))
|
||||
(version (target-guile-effective-version))
|
||||
(scm (string-append "/share/guile/site/"
|
||||
version))
|
||||
(go (string-append "/lib/guile/"
|
||||
version "/site-ccache")))
|
||||
(wrap-program (string-append bin "/dsv")
|
||||
`("GUILE_LOAD_PATH" prefix
|
||||
(,(string-append out scm)
|
||||
,(string-append guile-lib scm)))
|
||||
`("GUILE_LOAD_COMPILED_PATH" prefix
|
||||
(,(string-append out go)
|
||||
,(string-append guile-lib go)))))
|
||||
#t)))))
|
||||
(home-page "https://github.com/artyom-poptsov/guile-dsv")
|
||||
(synopsis "DSV module for Guile")
|
||||
@ -491,6 +523,13 @@ delimiter-separated values (DSV) data format. Guile-DSV supports the
|
||||
Unix-style DSV format and RFC 4180 format.")
|
||||
(license license:gpl3+)))
|
||||
|
||||
(define-public guile2.2-dsv
|
||||
(package
|
||||
(inherit guile-dsv)
|
||||
(name "guile2.2-dsv")
|
||||
(inputs `(("guile" ,guile-2.2)))
|
||||
(propagated-inputs `(("guile-lib" ,guile2.2-lib)))))
|
||||
|
||||
(define-public guile-fibers
|
||||
(package
|
||||
(name "guile-fibers")
|
||||
@ -523,7 +562,10 @@ Unix-style DSV format and RFC 4180 format.")
|
||||
(("#:use-module \\(fibers\\)")
|
||||
(string-append "#:use-module (fibers)\n"
|
||||
"#:use-module (ice-9 threads)\n")))
|
||||
#t))))
|
||||
#t))
|
||||
(patches
|
||||
;; fixes a resource leak that causes crashes in the tests
|
||||
(search-patches "guile-fibers-destroy-peer-schedulers.patch"))))
|
||||
(build-system gnu-build-system)
|
||||
(arguments
|
||||
'(;; The code uses 'scm_t_uint64' et al., which are deprecated in 3.0.
|
||||
|
@ -37,7 +37,6 @@
|
||||
#:use-module (guix packages)
|
||||
#:use-module ((guix licenses) #:prefix license:)
|
||||
#:use-module (guix build-system haskell)
|
||||
#:use-module (gnu packages)
|
||||
#:use-module (gnu packages base)
|
||||
#:use-module (gnu packages curl)
|
||||
#:use-module (gnu packages gl)
|
||||
@ -342,15 +341,14 @@ to @code{cabal repl}).")
|
||||
(define-public git-annex
|
||||
(package
|
||||
(name "git-annex")
|
||||
(version "8.20200501")
|
||||
(version "8.20200522")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "https://hackage.haskell.org/package/"
|
||||
"git-annex/git-annex-" version ".tar.gz"))
|
||||
(patches (search-patches "git-annex-S3v4.patch"))
|
||||
(sha256
|
||||
(base32 "19rggaymvqy7r61n2rl2nigwdi2hzq5l1afcd5l0k1vbacwgq4jl"))))
|
||||
(base32 "1v71k5k9mcj1nq4pb8apx99rgw2rmckr6yshhvjl1dr6j70d67x8"))))
|
||||
(build-system haskell-build-system)
|
||||
(arguments
|
||||
`(#:configure-flags
|
||||
|
@ -1986,7 +1986,7 @@ This package can be used to create @code{favicon.ico} files for web sites.")
|
||||
(define-public libavif
|
||||
(package
|
||||
(name "libavif")
|
||||
(version "0.7.1")
|
||||
(version "0.7.3")
|
||||
(source (origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
@ -1995,7 +1995,7 @@ This package can be used to create @code{favicon.ico} files for web sites.")
|
||||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
(base32
|
||||
"1xybjbbprvfsrwgysrn7grg6yp7v6ch5vci7zvdcdzcgyrbph172"))))
|
||||
"17hagdngpc4xzrr0aa48nx399y5lawyyx9cpcdhpds1mqk6p77lp"))))
|
||||
(build-system cmake-build-system)
|
||||
(arguments
|
||||
`(#:configure-flags '("-DAVIF_CODEC_AOM=ON" "-DAVIF_CODEC_DAV1D=ON"
|
||||
|
@ -3,7 +3,7 @@
|
||||
;;; Copyright © 2017, 2019 Marius Bakke <mbakke@fastmail.com>
|
||||
;;; Copyright © 2017 Oleg Pykhalov <go.wigust@gmail.com>
|
||||
;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
|
||||
;;; Copyright © 2018 Efraim Flashner <efraim@flashner.co.il>
|
||||
;;; Copyright © 2018, 2020 Efraim Flashner <efraim@flashner.co.il>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
@ -269,7 +269,7 @@ alternatives. In compilers, this can reduce the cascade of secondary errors.")
|
||||
(define-public kodi
|
||||
(package
|
||||
(name "kodi")
|
||||
(version "18.6")
|
||||
(version "18.7")
|
||||
(source (origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
@ -278,7 +278,7 @@ alternatives. In compilers, this can reduce the cascade of secondary errors.")
|
||||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
(base32
|
||||
"0rwymipn5hljy5xrslzmrljmj6f9wb191wi7gjw20wl6sv44d0bk"))
|
||||
"082cpih84j7v29w55qhj0rdia7hdjpwi81qywiwawd4vlyimpv2h"))
|
||||
(patches (search-patches "kodi-skip-test-449.patch"
|
||||
"kodi-increase-test-timeout.patch"
|
||||
"kodi-set-libcurl-ssl-parameters.patch"))
|
||||
|
@ -866,35 +866,6 @@ with that of libgomp, the GNU Offloading and Multi Processing Library.")
|
||||
"This package provides a Python binding to LLVM for use in Numba.")
|
||||
(license license:bsd-3)))
|
||||
|
||||
(define (package-elisp-from-package source-package package-name
|
||||
source-files)
|
||||
"Return a package definition named PACKAGE-NAME that packages the Emacs Lisp
|
||||
SOURCE-FILES found in SOURCE-PACKAGE."
|
||||
(let ((orig (package-source source-package)))
|
||||
(package
|
||||
(inherit source-package)
|
||||
(name package-name)
|
||||
(build-system emacs-build-system)
|
||||
(source (origin
|
||||
(method (origin-method orig))
|
||||
(uri (origin-uri orig))
|
||||
(sha256 (origin-sha256 orig))
|
||||
(file-name (string-append package-name "-"
|
||||
(package-version source-package)))
|
||||
(modules '((guix build utils)
|
||||
(srfi srfi-1)
|
||||
(ice-9 ftw)))
|
||||
(snippet
|
||||
`(let* ((source-files (quote ,source-files))
|
||||
(basenames (map basename source-files)))
|
||||
(map copy-file
|
||||
source-files basenames)
|
||||
(map delete-file-recursively
|
||||
(fold delete
|
||||
(scandir ".")
|
||||
(append '("." "..") basenames)))
|
||||
#t)))))))
|
||||
|
||||
(define-public emacs-clang-format
|
||||
(package
|
||||
(inherit clang)
|
||||
|
@ -2298,14 +2298,14 @@ transfer protocols.")
|
||||
(define-public opensmtpd
|
||||
(package
|
||||
(name "opensmtpd")
|
||||
(version "6.7.0p1")
|
||||
(version "6.7.1p1")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "https://www.opensmtpd.org/archives/"
|
||||
"opensmtpd-" version ".tar.gz"))
|
||||
(sha256
|
||||
(base32 "1f8bp40ywyixflg5qbnang6l210bv4vqa1k2pgm2356bp7bmsgy1"))))
|
||||
(base32 "1jh8vxfajm1mvp1v5yh6llrhjzv0n9fgab88mlwllwqynhcfjy3l"))))
|
||||
(build-system gnu-build-system)
|
||||
(inputs
|
||||
`(("bdb" ,bdb)
|
||||
|
@ -440,7 +440,16 @@ authentication.")
|
||||
version "/pidgin-" version ".tar.bz2"))
|
||||
(sha256
|
||||
(base32 "13vdqj70315p9rzgnbxjp9c51mdzf1l4jg1kvnylc4bidw61air7"))
|
||||
(patches (search-patches "pidgin-add-search-path.patch"))))
|
||||
(patches (search-patches "pidgin-add-search-path.patch"
|
||||
;; Remove the snippet and bootstrapping
|
||||
;; native-inputs together with this patch.
|
||||
"pidgin-libnm.patch"))
|
||||
(modules '((guix build utils)))
|
||||
(snippet
|
||||
'(begin
|
||||
;; Remove stale generated file after applying pidgin-libnm.patch.
|
||||
(delete-file "configure")
|
||||
#t))))
|
||||
(build-system glib-or-gtk-build-system)
|
||||
(native-inputs
|
||||
`(("pkg-config" ,pkg-config)
|
||||
@ -448,7 +457,12 @@ authentication.")
|
||||
("intltool" ,intltool)
|
||||
("gconf" ,gconf)
|
||||
("python" ,python-2)
|
||||
("doxygen" ,doxygen)))
|
||||
("doxygen" ,doxygen)
|
||||
|
||||
;; For bootstrapping after applying pidgin-libnm.patch.
|
||||
("autoconf" ,autoconf)
|
||||
("automake" ,automake)
|
||||
("libtool" ,libtool)))
|
||||
(inputs
|
||||
`(("gtk+" ,gtk+-2)
|
||||
("libgcrypt" ,libgcrypt)
|
||||
|
@ -2499,14 +2499,14 @@ from the command line.")
|
||||
(define-public qtractor
|
||||
(package
|
||||
(name "qtractor")
|
||||
(version "0.9.12")
|
||||
(version "0.9.14")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "http://downloads.sourceforge.net/qtractor/"
|
||||
(uri (string-append "https://downloads.sourceforge.net/qtractor/"
|
||||
"qtractor-" version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"06493sf4hr178jkvric3rmc2phh1ph2jlyh8kl9z248amq3zfnhy"))))
|
||||
"1gh268gdpj7nw19xfh7k2l3aban4yrs1lmx33qswrnngs2izj1fk"))))
|
||||
(build-system gnu-build-system)
|
||||
(arguments
|
||||
`(#:tests? #f)) ; no "check" target
|
||||
|
@ -30,13 +30,13 @@
|
||||
(define-public nano
|
||||
(package
|
||||
(name "nano")
|
||||
(version "4.9.2")
|
||||
(version "4.9.3")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "mirror://gnu/nano/nano-" version ".tar.xz"))
|
||||
(sha256
|
||||
(base32 "1xifbn1xaklrrf7knxvqif0hy0wgnas7w0wfggay5kifjkm5x8nq"))))
|
||||
(base32 "1d2i3wvsq5lvpxxinq51dcvd58xx7j0d0c2csz9hgvd06gq3hd3f"))))
|
||||
(build-system gnu-build-system)
|
||||
(inputs
|
||||
`(("gettext" ,gettext-minimal)
|
||||
|
@ -21,7 +21,7 @@
|
||||
;;; Copyright © 2018 Arun Isaac <arunisaac@systemreboot.net>
|
||||
;;; Copyright © 2018 Pierre Neidhardt <mail@ambrevar.xyz>
|
||||
;;; Copyright © 2018 Amirouche Boubekki <amirouche@hypermove.net>
|
||||
;;; Copyright © 2018, 2019 Tim Gesthuizen <tim.gesthuizen@yahoo.de>
|
||||
;;; Copyright © 2018, 2019, 2020 Tim Gesthuizen <tim.gesthuizen@yahoo.de>
|
||||
;;; Copyright © 2019 Jens Mølgaard <jens@zete.tk>
|
||||
;;; Copyright © 2019 Tanguy Le Carrour <tanguy@bioneland.org>
|
||||
;;; Copyright © 2020 Guillaume Le Vaillant <glv@posteo.net>
|
||||
@ -196,7 +196,7 @@ algorithms AES or Twofish.")
|
||||
(define-public pwsafe
|
||||
(package
|
||||
(name "pwsafe")
|
||||
(version "3.50.0")
|
||||
(version "3.52.0")
|
||||
(home-page "https://www.pwsafe.org/")
|
||||
(source
|
||||
(origin
|
||||
@ -205,7 +205,7 @@ algorithms AES or Twofish.")
|
||||
(url "https://github.com/pwsafe/pwsafe.git")
|
||||
(commit version)))
|
||||
(sha256
|
||||
(base32 "01kfssd2vr64yh4dqhch58x36n3aj3hpj5n560f41rsxym69c6qs"))
|
||||
(base32 "1ka7xsl63v0559fzf3pwc1iqr37gwr4vq5iaxa2hzar2g28hsxvh"))
|
||||
(file-name (git-file-name name version))))
|
||||
(build-system cmake-build-system)
|
||||
(native-inputs
|
||||
@ -232,15 +232,7 @@ algorithms AES or Twofish.")
|
||||
(display "find_package(GTest)
|
||||
add_subdirectory(src/test)\n" cmake-port)
|
||||
(close cmake-port)
|
||||
#t)))
|
||||
(add-after 'add-gtest 'patch-executables
|
||||
(lambda* (#:key inputs #:allow-other-keys)
|
||||
(chmod "src/test/OSTest.cpp" #o644)
|
||||
(substitute* "src/os/unix/media.cpp"
|
||||
(("/usr/bin/file")
|
||||
(string-append (assoc-ref inputs "file")
|
||||
"/bin/file")))
|
||||
#t)))))
|
||||
#t))))))
|
||||
(synopsis "Password safe with automatic input and key generation")
|
||||
(description "pwsafe is a password manager originally designed by Bruce
|
||||
Schneier. It offers a simple UI to manage passwords for different services.
|
||||
|
@ -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
|
||||
|
@ -1,34 +1,31 @@
|
||||
diff --git a/src/bin/e_auth.c b/src/bin/e_auth.c
|
||||
index 00b0e5d84..98ab4518f 100644
|
||||
index 8b0aa6641..f15d2c2a2 100644
|
||||
--- a/src/bin/e_auth.c
|
||||
+++ b/src/bin/e_auth.c
|
||||
@@ -9,8 +9,7 @@ e_auth_begin(char *passwd)
|
||||
@@ -11,9 +11,7 @@ e_auth_begin(char *passwd)
|
||||
pwlen = strlen(passwd);
|
||||
if (pwlen == 0) goto out;
|
||||
|
||||
if (strlen(passwd) == 0) goto out;
|
||||
|
||||
- snprintf(buf, sizeof(buf), "%s/enlightenment/utils/enlightenment_ckpasswd",
|
||||
- snprintf(buf, sizeof(buf),
|
||||
- "%s/enlightenment/utils/enlightenment_ckpasswd pw",
|
||||
- e_prefix_lib_get());
|
||||
+ snprintf(buf, sizeof(buf), "/run/setuid-programs/enlightenment_ckpasswd");
|
||||
|
||||
exe = ecore_exe_pipe_run(buf, ECORE_EXE_PIPE_WRITE, NULL);
|
||||
if (ecore_exe_send(exe, passwd, strlen(passwd)) != EINA_TRUE) goto out;
|
||||
diff --git a/src/bin/e_backlight.c b/src/bin/e_backlight.c
|
||||
index 2bced6766..208e583ba 100644
|
||||
--- a/src/bin/e_backlight.c
|
||||
+++ b/src/bin/e_backlight.c
|
||||
@@ -521,8 +521,8 @@ _bl_sys_level_set(double val)
|
||||
}
|
||||
// fprintf(stderr, "SET: %1.3f\n", val);
|
||||
snprintf(buf, sizeof(buf),
|
||||
- "%s/enlightenment/utils/enlightenment_backlight %i %s",
|
||||
- e_prefix_lib_get(), (int)(val * 1000.0), bl_sysval);
|
||||
+ "/run/setuid-programs/enlightenment_backlight %i %s",
|
||||
+ (int)(val * 1000.0), bl_sysval);
|
||||
bl_sys_set_exe = ecore_exe_run(buf, NULL);
|
||||
}
|
||||
#endif // HAVE_EEZE || __FreeBSD_kernel__
|
||||
if (!exe) goto out;
|
||||
if (ecore_exe_send(exe, passwd, pwlen) != EINA_TRUE) goto out;
|
||||
@@ -46,9 +44,7 @@ e_auth_polkit_begin(char *passwd, const char *cookie, unsigned int uid)
|
||||
pwlen = strlen(passwd);
|
||||
if (pwlen == 0) goto out;
|
||||
|
||||
- snprintf(buf, sizeof(buf),
|
||||
- "%s/enlightenment/utils/enlightenment_ckpasswd pk",
|
||||
- e_prefix_lib_get());
|
||||
+ snprintf(buf, sizeof(buf), "/run/setuid-programs/enlightenment_ckpasswd");
|
||||
exe = ecore_exe_pipe_run(buf, ECORE_EXE_PIPE_WRITE, NULL);
|
||||
if (!exe) goto out;
|
||||
snprintf(buf, sizeof(buf), "%s %u %s", cookie, uid, passwd);
|
||||
diff --git a/src/bin/e_fm/e_fm_main_eeze.c b/src/bin/e_fm/e_fm_main_eeze.c
|
||||
index 0fcffa249..c1921121d 100644
|
||||
index 9b10b3117..74e6b72ad 100644
|
||||
--- a/src/bin/e_fm/e_fm_main_eeze.c
|
||||
+++ b/src/bin/e_fm/e_fm_main_eeze.c
|
||||
@@ -318,7 +318,7 @@ _e_fm_main_eeze_volume_eject(E_Volume *v)
|
||||
@ -58,163 +55,29 @@ index 0fcffa249..c1921121d 100644
|
||||
eeze_disk_mount_wrapper_set(v->disk, buf2);
|
||||
}
|
||||
v->guard = ecore_timer_loop_add(E_FM_MOUNT_TIMEOUT, (Ecore_Task_Cb)_e_fm_main_eeze_vol_mount_timeout, v);
|
||||
diff --git a/src/bin/e_sys.c b/src/bin/e_sys.c
|
||||
index 671fbcd9a..90ee04cf1 100644
|
||||
--- a/src/bin/e_sys.c
|
||||
+++ b/src/bin/e_sys.c
|
||||
@@ -702,20 +702,16 @@ _e_sys_cb_timer(void *data EINA_UNUSED)
|
||||
diff --git a/src/bin/e_start_main.c b/src/bin/e_start_main.c
|
||||
index b2c439455..cb16c7bd4 100644
|
||||
--- a/src/bin/e_start_main.c
|
||||
+++ b/src/bin/e_start_main.c
|
||||
@@ -710,7 +710,7 @@ main(int argc, char **argv)
|
||||
"E_ALERT_FONT_DIR=%s/data/fonts", eina_prefix_data_get(pfx));
|
||||
putenv(buf2);
|
||||
snprintf(buf3, sizeof(buf3),
|
||||
- "E_ALERT_SYSTEM_BIN=%s/enlightenment/utils/enlightenment_system", eina_prefix_lib_get(pfx));
|
||||
+ "E_ALERT_SYSTEM_BIN=/run/setuid-programs/enlightenment_system");
|
||||
putenv(buf3);
|
||||
|
||||
e_init_status_set(_("Checking System Permissions"));
|
||||
if ((valgrind_mode || valgrind_tool) &&
|
||||
diff --git a/src/bin/e_system.c b/src/bin/e_system.c
|
||||
index 1e7aabb64..dc0173219 100644
|
||||
--- a/src/bin/e_system.c
|
||||
+++ b/src/bin/e_system.c
|
||||
@@ -132,7 +132,7 @@ _system_spawn(void)
|
||||
else _respawn_count = 0;
|
||||
if (_respawn_count > 5) return;
|
||||
snprintf(buf, sizeof(buf),
|
||||
- "%s/enlightenment/utils/enlightenment_sys -t halt",
|
||||
- e_prefix_lib_get());
|
||||
+ "/run/setuid-programs/enlightenment_sys -t halt");
|
||||
_e_sys_halt_check_exe = ecore_exe_run(buf, NULL);
|
||||
snprintf(buf, sizeof(buf),
|
||||
- "%s/enlightenment/utils/enlightenment_sys -t reboot",
|
||||
- e_prefix_lib_get());
|
||||
+ "/run/setuid-programs/enlightenment_sys -t reboot");
|
||||
_e_sys_reboot_check_exe = ecore_exe_run(buf, NULL);
|
||||
snprintf(buf, sizeof(buf),
|
||||
- "%s/enlightenment/utils/enlightenment_sys -t suspend",
|
||||
- e_prefix_lib_get());
|
||||
+ "/run/setuid-programs/enlightenment_sys -t suspend");
|
||||
_e_sys_suspend_check_exe = ecore_exe_run(buf, NULL);
|
||||
snprintf(buf, sizeof(buf),
|
||||
- "%s/enlightenment/utils/enlightenment_sys -t hibernate",
|
||||
- e_prefix_lib_get());
|
||||
+ "/run/setuid-programs/enlightenment_sys -t hibernate");
|
||||
_e_sys_hibernate_check_exe = ecore_exe_run(buf, NULL);
|
||||
return ECORE_CALLBACK_CANCEL;
|
||||
}
|
||||
@@ -1134,8 +1130,7 @@ _e_sys_action_do(E_Sys_Action a, char *param EINA_UNUSED, Eina_Bool raw)
|
||||
if (e_util_immortal_check()) return 0;
|
||||
e_fm2_die();
|
||||
snprintf(buf, sizeof(buf),
|
||||
- "%s/enlightenment/utils/enlightenment_sys halt",
|
||||
- e_prefix_lib_get());
|
||||
+ "/run/setuid-programs/enlightenment_sys halt");
|
||||
if (_e_sys_exe)
|
||||
{
|
||||
if ((ecore_time_get() - _e_sys_begin_time) > 2.0)
|
||||
@@ -1170,8 +1165,7 @@ _e_sys_action_do(E_Sys_Action a, char *param EINA_UNUSED, Eina_Bool raw)
|
||||
if (e_util_immortal_check()) return 0;
|
||||
e_fm2_die();
|
||||
snprintf(buf, sizeof(buf),
|
||||
- "%s/enlightenment/utils/enlightenment_sys reboot",
|
||||
- e_prefix_lib_get());
|
||||
+ "/run/setuid-programs/enlightenment_sys reboot");
|
||||
if (_e_sys_exe)
|
||||
{
|
||||
if ((ecore_time_get() - _e_sys_begin_time) > 2.0)
|
||||
@@ -1204,8 +1198,7 @@ _e_sys_action_do(E_Sys_Action a, char *param EINA_UNUSED, Eina_Bool raw)
|
||||
case E_SYS_SUSPEND:
|
||||
/* /etc/acpi/sleep.sh force */
|
||||
snprintf(buf, sizeof(buf),
|
||||
- "%s/enlightenment/utils/enlightenment_sys suspend",
|
||||
- e_prefix_lib_get());
|
||||
+ "/run/setuid-programs/enlightenment_sys suspend");
|
||||
if (_e_sys_exe)
|
||||
{
|
||||
if ((ecore_time_get() - _e_sys_begin_time) > 2.0)
|
||||
@@ -1265,8 +1258,7 @@ _e_sys_action_do(E_Sys_Action a, char *param EINA_UNUSED, Eina_Bool raw)
|
||||
case E_SYS_HIBERNATE:
|
||||
/* /etc/acpi/hibernate.sh force */
|
||||
snprintf(buf, sizeof(buf),
|
||||
- "%s/enlightenment/utils/enlightenment_sys hibernate",
|
||||
- e_prefix_lib_get());
|
||||
+ "/run/setuid-programs/enlightenment_sys hibernate");
|
||||
if (_e_sys_exe)
|
||||
{
|
||||
if ((ecore_time_get() - _e_sys_begin_time) > 2.0)
|
||||
diff --git a/src/modules/bluez4/e_mod_main.c b/src/modules/bluez4/e_mod_main.c
|
||||
index 4b5148634..47d34b07f 100644
|
||||
--- a/src/modules/bluez4/e_mod_main.c
|
||||
+++ b/src/modules/bluez4/e_mod_main.c
|
||||
@@ -49,8 +49,8 @@ _ebluez_l2ping_poller(void *data EINA_UNUSED)
|
||||
|
||||
if (tmp)
|
||||
{
|
||||
- eina_strbuf_append_printf(buf, "%s/enlightenment/utils/enlightenment_sys l2ping %s",
|
||||
- e_prefix_lib_get(), tmp);
|
||||
+ eina_strbuf_append_printf(buf, "/run/setuid-programs/enlightenment_sys l2ping %s",
|
||||
+ tmp);
|
||||
autolock_exe = ecore_exe_run(eina_strbuf_string_get(buf), NULL);
|
||||
}
|
||||
|
||||
@@ -692,8 +692,7 @@ e_modapi_init(E_Module *m)
|
||||
autolock_desklock = ecore_event_handler_add(E_EVENT_DESKLOCK, _ebluez_desklock, NULL);
|
||||
|
||||
buf = eina_strbuf_new();
|
||||
- eina_strbuf_append_printf(buf, "%s/enlightenment/utils/enlightenment_sys -t l2ping",
|
||||
- e_prefix_lib_get());
|
||||
+ eina_strbuf_append_printf(buf, "/run/setuid-programs/enlightenment_sys -t l2ping");
|
||||
autolock_exe = ecore_exe_run(eina_strbuf_string_get(buf), NULL);
|
||||
eina_strbuf_free(buf);
|
||||
|
||||
diff --git a/src/modules/bluez5/e_mod_main.c b/src/modules/bluez5/e_mod_main.c
|
||||
index a581c466c..095d8f360 100644
|
||||
--- a/src/modules/bluez5/e_mod_main.c
|
||||
+++ b/src/modules/bluez5/e_mod_main.c
|
||||
@@ -321,8 +321,8 @@ ebluez5_rfkill_unblock(const char *name)
|
||||
if (buf)
|
||||
{
|
||||
eina_strbuf_append_printf
|
||||
- (buf, "%s/enlightenment/utils/enlightenment_sys rfkill-unblock %s",
|
||||
- e_prefix_lib_get(), name);
|
||||
+ (buf, "/run/setuid-programs/enlightenment_sys rfkill-unblock %s",
|
||||
+ name);
|
||||
_rfkill_exe = ecore_exe_run(eina_strbuf_string_get(buf), NULL);
|
||||
eina_strbuf_free(buf);
|
||||
}
|
||||
diff --git a/src/modules/cpufreq/e_mod_main.c b/src/modules/cpufreq/e_mod_main.c
|
||||
index b66b365d8..bab0802cc 100644
|
||||
--- a/src/modules/cpufreq/e_mod_main.c
|
||||
+++ b/src/modules/cpufreq/e_mod_main.c
|
||||
@@ -1452,8 +1452,7 @@ e_modapi_init(E_Module *m)
|
||||
}
|
||||
E_CONFIG_LIMIT(cpufreq_config->poll_interval, 1, 1024);
|
||||
|
||||
- snprintf(buf, sizeof(buf), "%s/%s/freqset",
|
||||
- e_module_dir_get(m), MODULE_ARCH);
|
||||
+ snprintf(buf, sizeof(buf), "/run/setuid-programs/freqset");
|
||||
cpufreq_config->set_exe_path = strdup(buf);
|
||||
|
||||
if (stat(buf, &st) < 0)
|
||||
diff --git a/src/modules/sysinfo/cpuclock/cpuclock.c b/src/modules/sysinfo/cpuclock/cpuclock.c
|
||||
index 938916e53..00d5067d0 100644
|
||||
--- a/src/modules/sysinfo/cpuclock/cpuclock.c
|
||||
+++ b/src/modules/sysinfo/cpuclock/cpuclock.c
|
||||
@@ -80,8 +80,7 @@ _cpuclock_set_governor(const char *governor)
|
||||
char buf[4096 + 100], exe[4096];
|
||||
struct stat st;
|
||||
|
||||
- snprintf(exe, 4096, "%s/%s/cpuclock_sysfs",
|
||||
- e_module_dir_get(sysinfo_config->module), MODULE_ARCH);
|
||||
+ snprintf(exe, 4096, "/run/setuid-programs/cpuclock_sysfs");
|
||||
if (stat(exe, &st) < 0) return;
|
||||
|
||||
snprintf(buf, sizeof(buf),
|
||||
@@ -108,8 +107,7 @@ _cpuclock_set_frequency(int frequency)
|
||||
if (system(buf) != 0)
|
||||
ERR("Error code from trying to run \"%s\"", buf);
|
||||
#else
|
||||
- snprintf(exe, 4096, "%s/%s/cpuclock_sysfs",
|
||||
- e_module_dir_get(sysinfo_config->module), MODULE_ARCH);
|
||||
+ snprintf(exe, 4096, "/run/setuid-programs/cpuclock_sysfs");
|
||||
if (stat(exe, &st) < 0) return;
|
||||
snprintf(buf, sizeof(buf),
|
||||
"%s %s %i", exe, "frequency", frequency);
|
||||
@@ -127,8 +125,7 @@ _cpuclock_set_pstate(int min, int max, int turbo)
|
||||
char buf[4096 + 100], exe[4096];
|
||||
struct stat st;
|
||||
|
||||
- snprintf(exe, 4096, "%s/%s/cpuclock_sysfs",
|
||||
- e_module_dir_get(sysinfo_config->module), MODULE_ARCH);
|
||||
+ snprintf(exe, 4096, "/run/setuid-programs/cpuclock_sysfs");
|
||||
if (stat(exe, &st) < 0) return;
|
||||
snprintf(buf, sizeof(buf),
|
||||
"%s %s %i %i %i", exe, "pstate", min, max, turbo);
|
||||
--
|
||||
2.23.0
|
||||
|
||||
- "%s/enlightenment/utils/enlightenment_system", e_prefix_lib_get());
|
||||
+ "/run/setuid-programs/enlightenment_system");
|
||||
_system_exe = ecore_exe_pipe_run
|
||||
(buf, ECORE_EXE_NOT_LEADER | ECORE_EXE_TERM_WITH_PARENT |
|
||||
ECORE_EXE_PIPE_READ | ECORE_EXE_PIPE_WRITE, NULL);
|
||||
|
@ -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
|
||||
|
@ -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))))))
|
||||
|
@ -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
|
||||
|
@ -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;
|
||||
+ }
|
||||
}
|
||||
}
|
||||
|
@ -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;
|
60
gnu/packages/patches/pidgin-libnm.patch
Normal file
60
gnu/packages/patches/pidgin-libnm.patch
Normal 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;
|
29
gnu/packages/patches/python-argcomplete-1.11.1-fish31.patch
Normal file
29
gnu/packages/patches/python-argcomplete-1.11.1-fish31.patch
Normal 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',
|
@ -206,17 +206,17 @@ cameras (CRW/CR2, NEF, RAF, DNG, and others).")
|
||||
(define-public libexif
|
||||
(package
|
||||
(name "libexif")
|
||||
(version "0.6.21")
|
||||
(version "0.6.22")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "mirror://sourceforge/libexif/libexif/"
|
||||
version "/libexif-" version ".tar.bz2"))
|
||||
(patches (search-patches "libexif-CVE-2016-6328.patch"
|
||||
"libexif-CVE-2017-7544.patch"
|
||||
"libexif-CVE-2018-20030.patch"))
|
||||
(uri (string-append
|
||||
"https://github.com/libexif/libexif/releases"
|
||||
"/download/libexif-"
|
||||
(string-map (lambda (x) (if (char=? x #\.) #\_ x)) version)
|
||||
"-release/libexif-" version ".tar.xz"))
|
||||
(sha256
|
||||
(base32
|
||||
"06nlsibr3ylfwp28w8f5466l6drgrnydgxrm4jmxzrmk5svaxk8n"))))
|
||||
"0mhcad5zab7fsn120rd585h8ncwkq904nzzrq8vcd72hzk4g2j2h"))))
|
||||
(build-system gnu-build-system)
|
||||
(home-page "https://libexif.github.io/")
|
||||
(synopsis "Read and manipulate EXIF data in digital photographs")
|
||||
@ -228,14 +228,14 @@ data as produced by digital cameras.")
|
||||
(define-public libgphoto2
|
||||
(package
|
||||
(name "libgphoto2")
|
||||
(version "2.5.24")
|
||||
(version "2.5.25")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "mirror://sourceforge/gphoto/libgphoto/"
|
||||
version "/libgphoto2-" version ".tar.bz2"))
|
||||
(sha256
|
||||
(base32
|
||||
"0cgvsk06c4kcfj16plc27nm7g16r9ci0y4k83sf3iyphd63mfg7x"))))
|
||||
"0fkz2rx7xlmr6zl6f56hhxps6bx16dwcw5pyd8c2icf273s9h3kw"))))
|
||||
(build-system gnu-build-system)
|
||||
(native-inputs `(("pkg-config" ,pkg-config)))
|
||||
(inputs
|
||||
|
@ -77,6 +77,7 @@
|
||||
;;; Copyright © 2020 Lars-Dominik Braun <ldb@leibniz-psychology.org>
|
||||
;;; Copyright © 2020 Alex ter Weele <alex.ter.weele@gmail.com>
|
||||
;;; Copyright © 2020 Matthew Kraai <kraai@ftbfs.org>
|
||||
;;; Copyright © 2020 Ryan Prior <rprior@protonmail.com>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
@ -5767,6 +5768,25 @@ them as the version argument or in a SCM managed file.")
|
||||
(define-public python2-setuptools-scm
|
||||
(package-with-python2 python-setuptools-scm))
|
||||
|
||||
(define-public python-sexpdata
|
||||
(package
|
||||
(name "python-sexpdata")
|
||||
(version "0.0.3")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (pypi-uri "sexpdata" version))
|
||||
(sha256
|
||||
(base32
|
||||
"1q4lsjyzzqrdv64l0pv4ij9nd8gqhvxqcrpxc2xpxs652sk2gj0s"))))
|
||||
(build-system python-build-system)
|
||||
(home-page "https://github.com/jd-boyd/sexpdata")
|
||||
(synopsis "S-expression parser for Python")
|
||||
(description
|
||||
"Sexpdata is an S-expression parser/serializer. It has load and dump
|
||||
functions like pickle, json or PyYAML module.")
|
||||
(license license:bsd-3)))
|
||||
|
||||
(define-public python-pathlib2
|
||||
(package
|
||||
(name "python-pathlib2")
|
||||
@ -5896,6 +5916,25 @@ need to use the older and less efficient @code{pkg_resources} package.")
|
||||
("python-contextlib2" ,python2-contextlib2-bootstrap)
|
||||
("python-importlib-resources" ,python2-importlib-resources-bootstrap))))))
|
||||
|
||||
(define-public python-importmagic
|
||||
(package
|
||||
(name "python-importmagic")
|
||||
(version "0.1.7")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (pypi-uri "importmagic" version))
|
||||
(sha256
|
||||
(base32
|
||||
"1n7qxa1snj06aw45mcfz7bxc46zp7fxj687140g2k6jcnyjmfxrz"))))
|
||||
(build-system python-build-system)
|
||||
(home-page "https://github.com/alecthomas/importmagic")
|
||||
(synopsis "Library for adding, removing and managing Python imports")
|
||||
(description
|
||||
"Importmagic is a Python library for automatically managing imports by
|
||||
finding unresolved symbols in Python code and their corresponding imports.")
|
||||
(license license:bsd-3)))
|
||||
|
||||
(define-public python-jaraco-packaging
|
||||
(package
|
||||
(name "python-jaraco-packaging")
|
||||
@ -8786,6 +8825,29 @@ functions to find and load entry points.")
|
||||
(define-public python2-entrypoints
|
||||
(package-with-python2 python-entrypoints))
|
||||
|
||||
(define-public python-epc
|
||||
(package
|
||||
(name "python-epc")
|
||||
(version "0.0.5")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (pypi-uri "epc" version))
|
||||
(sha256
|
||||
(base32
|
||||
"09bx1ln1bwa00917dndlgs4k589h8qx2x080xch5m58p92kjwkd1"))))
|
||||
(build-system python-build-system)
|
||||
(propagated-inputs
|
||||
`(("python-sexpdata" ,python-sexpdata)))
|
||||
(native-inputs
|
||||
`(("python-nose" ,python-nose)))
|
||||
(home-page "https://github.com/tkf/python-epc")
|
||||
(synopsis "Remote procedure call (RPC) stack for Emacs Lisp and Python")
|
||||
(description
|
||||
"Python-EPC can call elisp functions from Python and Python functions
|
||||
from elisp.")
|
||||
(license license:gpl3)))
|
||||
|
||||
(define-public python-nbconvert
|
||||
(package
|
||||
(name "python-nbconvert")
|
||||
@ -13008,33 +13070,16 @@ PNG, JPEG, JPEG2000 and GIF files in pure Python.")
|
||||
(define-public python-argcomplete
|
||||
(package
|
||||
(name "python-argcomplete")
|
||||
(version "1.10.3")
|
||||
(version "1.11.1")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (pypi-uri "argcomplete" version))
|
||||
(sha256
|
||||
(base32
|
||||
"02jkc44drb0yjz6x28lvg6rj607n8r2irdpdvyylm8xnycn54zx3"))))
|
||||
"0h1przxffrhqvi46k40pzjsvdrq4zc3sl1pc96kkigqppq0vdrss"))
|
||||
(patches (search-patches "python-argcomplete-1.11.1-fish31.patch"))))
|
||||
(build-system python-build-system)
|
||||
(arguments
|
||||
`(#:phases
|
||||
(modify-phases %standard-phases
|
||||
(add-after 'unpack 'embed-tool-references
|
||||
(lambda _
|
||||
(substitute* "argcomplete/bash_completion.d/python-argcomplete.sh"
|
||||
((" grep")
|
||||
(string-append " " (which "grep")))
|
||||
((" egrep")
|
||||
(string-append " " (which "egrep")))
|
||||
(("elif which")
|
||||
(string-append "elif " (which "which")))
|
||||
(("\\$\\(which")
|
||||
(string-append "$(" (which "which"))))
|
||||
#t)))))
|
||||
(inputs
|
||||
`(("grep" ,grep)
|
||||
("which" ,which)))
|
||||
(native-inputs
|
||||
`(("python-coverage" ,python-coverage)
|
||||
("python-flake8" ,python-flake8)
|
||||
|
@ -1,5 +1,5 @@
|
||||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2012, 2013, 2014 Ludovic Courtès <ludo@gnu.org>
|
||||
;;; Copyright © 2012, 2013, 2014, 2020 Ludovic Courtès <ludo@gnu.org>
|
||||
;;; Copyright © 2016, 2019 Efraim Flashner <efraim@flashner.co.il>
|
||||
;;; Copyright © 2016 Jan Nieuwenhuizen <janneke@gnu.org>
|
||||
;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
|
||||
@ -35,12 +35,12 @@
|
||||
(format #f "mirror://gnu/readline/readline-~a-patches/readline~a-~3,'0d"
|
||||
version (string-join (string-split version #\.) "") seqno))
|
||||
|
||||
(define (readline-patch version seqno sha256)
|
||||
"Return the origin of Readline patch SEQNO, with expected hash SHA256"
|
||||
(define (readline-patch version seqno sha256-bv)
|
||||
"Return the origin of Readline patch SEQNO, with expected hash SHA256-BV"
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (patch-url version seqno))
|
||||
(sha256 sha256)))
|
||||
(sha256 sha256-bv)))
|
||||
|
||||
(define-syntax-rule (patch-series version (seqno hash) ...)
|
||||
(list (readline-patch version seqno (base32 hash))
|
||||
|
@ -43,6 +43,7 @@
|
||||
#:use-module (gnu packages xiph)
|
||||
#:use-module (gnu packages xml)
|
||||
#:use-module (guix build-system gnu)
|
||||
#:use-module (guix build-system meson)
|
||||
#:use-module (guix download)
|
||||
#:use-module (guix packages)
|
||||
#:use-module ((guix licenses) #:prefix license:)
|
||||
@ -101,16 +102,26 @@ system to use the host GPU to accelerate 3D rendering.")
|
||||
(define-public spice-protocol
|
||||
(package
|
||||
(name "spice-protocol")
|
||||
(version "0.14.1")
|
||||
(version "0.14.2")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append
|
||||
"https://www.spice-space.org/download/releases/"
|
||||
"spice-protocol-" version ".tar.bz2"))
|
||||
"spice-protocol-" version ".tar.xz"))
|
||||
(sha256
|
||||
(base32
|
||||
"0ahk5hlanwhbc64r80xmchdav3ls156cvh9l68a0l22bhdhxmrkr"))))
|
||||
(build-system gnu-build-system)
|
||||
"1sgi9ksb781qs47pdbw0bmnyg8dgayn5xrzj6vzdy043nv466flg"))))
|
||||
(build-system meson-build-system)
|
||||
(arguments
|
||||
`(#:phases
|
||||
(modify-phases %standard-phases
|
||||
(add-after 'unpack 'install-documentation
|
||||
(lambda* (#:key outputs #:allow-other-keys)
|
||||
(let* ((out (assoc-ref outputs "out"))
|
||||
(doc (string-append out "/share/doc/"
|
||||
,name "-" ,version)))
|
||||
(install-file "COPYING" doc)
|
||||
#t))))))
|
||||
(synopsis "Protocol headers for the SPICE protocol")
|
||||
(description "SPICE (the Simple Protocol for Independent Computing
|
||||
Environments) is a remote-display system built for virtual environments
|
||||
|
@ -32,7 +32,7 @@
|
||||
(define-public syncthing
|
||||
(package
|
||||
(name "syncthing")
|
||||
(version "1.4.2")
|
||||
(version "1.5.0")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "https://github.com/syncthing/syncthing"
|
||||
@ -40,7 +40,7 @@
|
||||
"/syncthing-source-v" version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"16dqpbn4saxmmmqd5ya8zdkwvxzz4nim1p4w954zkkdz3cyg86h6"))
|
||||
"1394b8y4nllihnjngc0kjpdy7pvyh6v1h09hkn8rdmwxpsdkqkjb"))
|
||||
(modules '((guix build utils)))
|
||||
;; Delete bundled ("vendored") free software source code.
|
||||
(snippet '(begin
|
||||
@ -77,7 +77,7 @@
|
||||
("go-github-com-syndtr-goleveldb" ,go-github-com-syndtr-goleveldb)
|
||||
("go-github-com-thejerf-suture" ,go-github-com-thejerf-suture)
|
||||
("go-golang-org-x-time" ,go-golang-org-x-time)
|
||||
("go-gopkg.in-ldap.v2" ,go-gopkg.in-ldap.v2)
|
||||
("go-github-com-go-ldap-ldap" ,go-github-com-go-ldap-ldap)
|
||||
("go-github-com-gogo-protobuf" ,go-github-com-gogo-protobuf)
|
||||
("go-github-com-shirou-gopsutil" ,go-github-com-shirou-gopsutil)
|
||||
("go-github-com-prometheus-client-golang"
|
||||
@ -394,7 +394,7 @@ compression format.")
|
||||
(define-public go-github-com-jackpal-gateway
|
||||
(package
|
||||
(name "go-github-com-jackpal-gateway")
|
||||
(version "1.0.5")
|
||||
(version "1.0.6")
|
||||
(source (origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
@ -403,7 +403,7 @@ compression format.")
|
||||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
(base32
|
||||
"1ird5xmizj632l3dq24s2xgb8w1dn6v8xznlqz252gvngyr2gjl1"))))
|
||||
"1yms2dw4dnz4cvj9vhwh6193d50jhvn5awsp2g3a4lcc3sjrgd6m"))))
|
||||
(build-system go-build-system)
|
||||
(arguments
|
||||
`(#:import-path "github.com/jackpal/gateway"))
|
||||
@ -942,60 +942,51 @@ server tools for Prometheus metrics.")
|
||||
(home-page "https://github.com/prometheus/client_golang")
|
||||
(license asl2.0)))
|
||||
|
||||
(define-public go-gopkg.in-asn1-ber.v1
|
||||
(define-public go-github-com-go-asn1-ber-asn1-ber
|
||||
(package
|
||||
(name "go-gopkg.in-asn1-ber.v1")
|
||||
(version "1.3")
|
||||
(name "go-github-com-go-asn1-ber-asn1-ber")
|
||||
(version "1.3.1")
|
||||
(source (origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
(url "https://gopkg.in/asn1-ber.v1")
|
||||
(url "https://github.com/go-asn1-ber/asn1-ber")
|
||||
(commit (string-append "v" version))))
|
||||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
(base32
|
||||
"00ixms8x3lrhywbvq5v2sagcqsxa1pcnlk17dp5lnwckv3xg4psb"))))
|
||||
"0dxfmgk84fn0p6pz3i0cspynh6rly5pfk9wghm1q07mx99npln02"))))
|
||||
(build-system go-build-system)
|
||||
(arguments
|
||||
'(#:import-path "gopkg.in/asn1-ber.v1"
|
||||
;; Tests don't pass "vet" on Go since 1.11. See
|
||||
;; https://github.com/go-asn1-ber/asn1-ber/issues/20.
|
||||
#:phases
|
||||
(modify-phases %standard-phases
|
||||
(replace 'check
|
||||
(lambda* (#:key import-path #:allow-other-keys)
|
||||
(invoke "go" "test"
|
||||
"-vet=off"
|
||||
import-path))))))
|
||||
'(#:import-path "github.com/go-asn1-ber/asn1-ber"))
|
||||
(synopsis "ASN.1 BER encoding and decoding in Go")
|
||||
(description "This package provides ASN.1 BER encoding and decoding in the
|
||||
Go language.")
|
||||
(home-page "https://gopkg.in/asn1-ber.v1")
|
||||
(home-page "https://github.com/go-asn1-ber/asn1-ber")
|
||||
(license expat)))
|
||||
|
||||
(define-public go-gopkg.in-ldap.v2
|
||||
(define-public go-github-com-go-ldap-ldap
|
||||
(package
|
||||
(name "go-gopkg.in-ldap.v2")
|
||||
(version "2.5.1")
|
||||
(name "go-github-com-go-ldap-ldap")
|
||||
(version "3.1.7")
|
||||
(source (origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
(url "https://gopkg.in/ldap.v2")
|
||||
(url "https://github.com/go-ldap/ldap")
|
||||
(commit (string-append "v" version))))
|
||||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
(base32
|
||||
"1wf81wy04nhkqs0dg5zkivr4sh37r83bxrfwjz9vr4jq6vmljr3h"))))
|
||||
"1z6wxia7a1jkmasa9mm6g4n8f0qqbp5rw6vk0zyh4vzk7azklnj2"))))
|
||||
(build-system go-build-system)
|
||||
(arguments
|
||||
'(#:import-path "gopkg.in/ldap.v2"
|
||||
#:tests? #f)) ; the test suite requires network access
|
||||
'(#:import-path "github.com/go-ldap/ldap/v3"
|
||||
#:tests? #f)) ; test suite requires internet access
|
||||
(propagated-inputs
|
||||
`(("go-gopkg.in-asn1-ber.v1" ,go-gopkg.in-asn1-ber.v1)))
|
||||
`(("go-github-com-go-asn1-ber-asn1-ber" ,go-github-com-go-asn1-ber-asn1-ber)))
|
||||
(home-page "https://github.com/go-ldap/ldap")
|
||||
(synopsis "LDAP v3 functionality for Go")
|
||||
(description "This package provides basic LDAP v3 functionality in the Go
|
||||
language.")
|
||||
(home-page "https://gopkg.in/ldap.v2")
|
||||
(license expat)))
|
||||
|
||||
(define-public go-github-com-flynn-archive-go-shlex
|
||||
|
@ -41,6 +41,7 @@
|
||||
;;; Copyright © 2020 Vincent Legoll <vincent.legoll@gmail.com>
|
||||
;;; Copyright © 2020 Guillaume Le Vaillant <glv@posteo.net>
|
||||
;;; Copyright © 2020 Alex McGrath <amk@amk.ie>
|
||||
;;; Copyright © 2020 Michael Rohleder <mike@rohleder.de>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
@ -283,7 +284,7 @@ television and DVD. It is also known as AC-3.")
|
||||
(define-public libaom
|
||||
(package
|
||||
(name "libaom")
|
||||
(version "1.0.0-errata1-avif")
|
||||
(version "2.0.0")
|
||||
(source (origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
@ -292,7 +293,7 @@ television and DVD. It is also known as AC-3.")
|
||||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
(base32
|
||||
"169yfgh7zigc21h71qclfyr7s4wwp2i9vbr4z6pkabypvass4v7m"))))
|
||||
"1616xjhj6770ykn82ml741h8hx44v507iky3s9h7a5lnk9d4cxzy"))))
|
||||
(build-system cmake-build-system)
|
||||
(native-inputs
|
||||
`(("perl" ,perl)
|
||||
@ -3019,15 +3020,15 @@ practically any type of media.")
|
||||
(define-public libmediainfo
|
||||
(package
|
||||
(name "libmediainfo")
|
||||
(version "0.7.95")
|
||||
(version "20.03")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "https://mediaarea.net/download/source/"
|
||||
name "/" version"/"
|
||||
name "_" version ".tar.bz2"))
|
||||
name "/" version "/"
|
||||
name "_" version ".tar.xz"))
|
||||
(sha256
|
||||
(base32
|
||||
"1kchh6285b07z5nixv619hc9gml2ysdayicdiv30frrlqiyxqw4b"))))
|
||||
"0wkzj5s34m8dvy7hif4h8f90q8ncrzd930gij1zzw3h5nw732j38"))))
|
||||
;; TODO add a Big Buck Bunny webm for tests.
|
||||
(native-inputs
|
||||
`(("autoconf" ,autoconf)
|
||||
@ -3077,7 +3078,7 @@ MPEG-2, MPEG-4, DVD (VOB)...
|
||||
(define-public mediainfo
|
||||
(package
|
||||
(name "mediainfo")
|
||||
(version "18.12")
|
||||
(version "20.03")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
;; Warning: This source has proved unreliable 1 time at least.
|
||||
@ -3085,10 +3086,10 @@ MPEG-2, MPEG-4, DVD (VOB)...
|
||||
;; happens again.
|
||||
(uri (string-append "https://mediaarea.net/download/source/"
|
||||
name "/" version "/"
|
||||
name "_" version ".tar.bz2"))
|
||||
name "_" version ".tar.xz"))
|
||||
(sha256
|
||||
(base32
|
||||
"1ix95ilcjlawcq6phh25cgplm3riqa2ii7ql82g8yagqs4ldqp6a"))))
|
||||
"1f1shnycf0f1fwka9k9s250l228xjkg0k4k73h8bpld8msighgnw"))))
|
||||
(native-inputs
|
||||
`(("autoconf" ,autoconf)
|
||||
("automake" ,automake)
|
||||
@ -3693,7 +3694,7 @@ transitions, and effects and then export your film to many common formats.")
|
||||
(define-public dav1d
|
||||
(package
|
||||
(name "dav1d")
|
||||
(version "0.6.0")
|
||||
(version "0.7.0")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
@ -3701,7 +3702,7 @@ transitions, and effects and then export your film to many common formats.")
|
||||
"/dav1d/" version "/dav1d-" version ".tar.xz"))
|
||||
(sha256
|
||||
(base32
|
||||
"0w5k572jzxp7zwdbsa0jgjzri6hsrkydawzzilrw46nxpcak37q9"))))
|
||||
"0xcykraf42gkymzqx1k1lcdclgk9y5yf7rr56vslrgmr0r849qnk"))))
|
||||
(build-system meson-build-system)
|
||||
(native-inputs `(("nasm" ,nasm)))
|
||||
(home-page "https://code.videolan.org/videolan/dav1d")
|
||||
|
@ -104,14 +104,14 @@
|
||||
#:use-module (srfi srfi-1)
|
||||
#:use-module (ice-9 match))
|
||||
|
||||
(define (qemu-patch commit file-name sha256)
|
||||
(define (qemu-patch commit file-name sha256-bv)
|
||||
"Return an origin for COMMIT."
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (string-append
|
||||
"http://git.qemu.org/?p=qemu.git;a=commitdiff_plain;h="
|
||||
commit))
|
||||
(sha256 sha256)
|
||||
(hash (content-hash sha256-bv sha256))
|
||||
(file-name file-name)))
|
||||
|
||||
(define-public qemu
|
||||
|
@ -12,6 +12,7 @@
|
||||
;;; Copyright © 2019 Rutger Helling <rhelling@mykolab.com>
|
||||
;;; Copyright © 2019 Ricardo Wurmus <rekado@elephly.net>
|
||||
;;; Copyright © 2020 Brice Waegeneire <brice@waegenei.re>
|
||||
;;; Copyright © 2020 Ryan Prior <rprior@protonmail.com>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
@ -55,6 +56,7 @@
|
||||
#:use-module (gnu packages pkg-config)
|
||||
#:use-module (gnu packages python)
|
||||
#:use-module (gnu packages python-xyz)
|
||||
#:use-module (gnu packages python-web)
|
||||
#:use-module (gnu packages tls)
|
||||
#:use-module (gnu packages xml))
|
||||
|
||||
@ -311,6 +313,40 @@ security protocol that utilizes SSL/TLS for key exchange. It is capable of
|
||||
traversing network address translators (@dfn{NAT}s) and firewalls.")
|
||||
(license license:gpl2)))
|
||||
|
||||
(define-public protonvpn-cli
|
||||
(package
|
||||
(name "protonvpn-cli")
|
||||
(version "2.2.2")
|
||||
(source
|
||||
(origin
|
||||
;; PyPI has a ".whl" file but not a proper source release.
|
||||
;; Thus, fetch code from Git.
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
(url "https://github.com/ProtonVPN/linux-cli.git")
|
||||
(commit (string-append "v" version))))
|
||||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
(base32
|
||||
"0ixjb02kj4z79whm1izd8mrn2h0rp9cmw4im1qvp93rahqxdd4n8"))))
|
||||
(build-system python-build-system)
|
||||
(arguments '(#:tests? #f)) ; no tests in repo
|
||||
(native-inputs
|
||||
`(("docopt" ,python-docopt)))
|
||||
(inputs
|
||||
`(("pythondialog" ,python-pythondialog)
|
||||
("requests" ,python-requests)))
|
||||
(propagated-inputs
|
||||
`(("openvpn" ,openvpn)))
|
||||
(synopsis "Command-line client for ProtonVPN")
|
||||
(description
|
||||
"This is the official command-line interface for ProtonVPN, a secure
|
||||
point-to-point virtual private networking (VPN) service with a gratis tier.
|
||||
It can automatically find and connect to the fastest servers or use Tor over
|
||||
VPN. The gratis tier offers unlimited bandwidth for up to 10 devices.")
|
||||
(home-page "https://github.com/ProtonVPN/linux-cli")
|
||||
(license license:gpl3+)))
|
||||
|
||||
(define-public tinc
|
||||
(package
|
||||
(name "tinc")
|
||||
|
@ -1268,14 +1268,14 @@ its size
|
||||
(define-public polybar
|
||||
(package
|
||||
(name "polybar")
|
||||
(version "3.4.2")
|
||||
(version "3.4.3")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "https://github.com/polybar/polybar/releases/"
|
||||
"download/" version "/polybar-" version ".tar"))
|
||||
(sha256
|
||||
(base32 "0fmnviz4b01aw50nkv4yibm8ykc5ff860ynw3xb1ymlsjrvwj8jd"))))
|
||||
(base32 "0bw22qvbcdvyd0qv3ax48r34rnclbbb6dyb8h8zljq1r3lf15vfl"))))
|
||||
(build-system cmake-build-system)
|
||||
(arguments
|
||||
;; Test is disabled because it requires downloading googletest from the
|
||||
|
@ -14,7 +14,7 @@
|
||||
;;; Copyright © 2016, 2017, 2018, 2019 Efraim Flashner <efraim@flashner.co.il>
|
||||
;;; Copyright © 2016 Leo Famulari <leo@famulari.name>
|
||||
;;; Copyright © 2016 Alex Kost <alezost@gmail.com>
|
||||
;;; Copyright © 2016, 2017, 2019 Marius Bakke <mbakke@fastmail.com>
|
||||
;;; Copyright © 2016, 2017, 2019, 2020 Marius Bakke <mbakke@fastmail.com>
|
||||
;;; Copyright © 2016 Petter <petter@mykolab.ch>
|
||||
;;; Copyright © 2017 Mekeor Melire <mekeor.melire@gmail.com>
|
||||
;;; Copyright © 2017 Nikita <nikita@n0.is>
|
||||
@ -1150,6 +1150,50 @@ the X.Org X Server version 1.7 and later (X11R7.5 or later).")
|
||||
(base32
|
||||
"1fi27b73x85qqar526dbd33av7mahca2ykaqwr7siqiw1qqcby6j"))))
|
||||
(build-system gnu-build-system)
|
||||
(arguments
|
||||
`(#:imported-modules (,@%gnu-build-system-modules
|
||||
(guix build python-build-system))
|
||||
#:phases
|
||||
(modify-phases %standard-phases
|
||||
(add-after 'install 'split-outputs
|
||||
(lambda* (#:key outputs #:allow-other-keys)
|
||||
(let ((out (assoc-ref outputs "out"))
|
||||
(gtk (assoc-ref outputs "gtk"))
|
||||
(desktop-file "/share/applications/redshift-gtk.desktop"))
|
||||
(mkdir-p (string-append gtk "/bin"))
|
||||
(link (string-append out "/bin/redshift-gtk")
|
||||
(string-append gtk "/bin/redshift-gtk"))
|
||||
(delete-file (string-append out "/bin/redshift-gtk"))
|
||||
(copy-recursively (string-append out "/lib")
|
||||
(string-append gtk "/lib"))
|
||||
(delete-file-recursively (string-append out "/lib"))
|
||||
(mkdir-p (string-append gtk "/share/applications"))
|
||||
(link (string-append out desktop-file)
|
||||
(string-append gtk desktop-file))
|
||||
(delete-file (string-append out desktop-file))
|
||||
(with-directory-excursion (string-append out "/share")
|
||||
(for-each (lambda (dir)
|
||||
(copy-recursively
|
||||
(string-append out "/share/" dir)
|
||||
(string-append gtk "/share/" dir))
|
||||
(delete-file-recursively dir))
|
||||
'("appdata" "icons")))
|
||||
#t)))
|
||||
(add-after 'split-outputs 'wrap
|
||||
(lambda* (#:key inputs outputs #:allow-other-keys)
|
||||
(let* ((gtk (assoc-ref outputs "gtk"))
|
||||
(python-version
|
||||
(@ (guix build python-build-system) python-version))
|
||||
(python (assoc-ref inputs "python"))
|
||||
(sitedir (string-append gtk "/lib/python"
|
||||
(python-version python)
|
||||
"/site-packages")))
|
||||
(wrap-program (string-append gtk "/bin/redshift-gtk")
|
||||
`("PYTHONPATH" ":" prefix
|
||||
(,(string-append sitedir ":" (getenv "PYTHONPATH"))))
|
||||
`("GI_TYPELIB_PATH" ":" prefix (,(getenv "GI_TYPELIB_PATH"))))
|
||||
#t))))))
|
||||
(outputs '("out" "gtk"))
|
||||
(native-inputs
|
||||
`(("pkg-config" ,pkg-config)
|
||||
("intltool" ,intltool)))
|
||||
@ -1158,7 +1202,13 @@ the X.Org X Server version 1.7 and later (X11R7.5 or later).")
|
||||
("libx11" ,libx11)
|
||||
("libxcb" ,libxcb)
|
||||
("libxxf86vm" ,libxxf86vm)
|
||||
("glib" ,glib))) ; for Geoclue2 support
|
||||
("glib" ,glib) ;for Geoclue2 support
|
||||
|
||||
;; To build the GTK3 GUI, we need these.
|
||||
("gtk+" ,gtk+)
|
||||
("python" ,python)
|
||||
("python-pygobject" ,python-pygobject)
|
||||
("python-pyxdg" ,python-pyxdg)))
|
||||
(home-page "https://github.com/jonls/redshift")
|
||||
(synopsis "Adjust the color temperature of your screen")
|
||||
(description
|
||||
@ -1186,6 +1236,24 @@ color temperature should be set to match the lamps in your room.")
|
||||
(base32
|
||||
"0nbkcw3avmzjg1jr1g9yfpm80kzisy55idl09b6wvzv2sz27n957"))))
|
||||
(build-system gnu-build-system)
|
||||
(arguments
|
||||
'(#:phases (modify-phases %standard-phases
|
||||
(add-after 'install 'create-desktop-file
|
||||
(lambda* (#:key outputs #:allow-other-keys)
|
||||
;; For the GeoClue provider to work, a .desktop file
|
||||
;; needs to be provided. A template is available,
|
||||
;; but it only gets installed when the GUI is enabled.
|
||||
;; Install it manually for this Wayland variant.
|
||||
(let* ((out (assoc-ref outputs "out"))
|
||||
(desktop-file
|
||||
(string-append
|
||||
out "/share/applications/redshift.desktop")))
|
||||
(mkdir-p (dirname desktop-file))
|
||||
(copy-file "data/applications/redshift.desktop.in"
|
||||
desktop-file)
|
||||
(substitute* desktop-file
|
||||
(("^_") ""))
|
||||
#t))))))
|
||||
(native-inputs
|
||||
`(("autoconf" ,autoconf)
|
||||
("automake" ,automake)
|
||||
|
@ -1036,29 +1036,12 @@ with the administrator's password."
|
||||
(match-record enlightenment-desktop-configuration
|
||||
<enlightenment-desktop-configuration>
|
||||
(enlightenment)
|
||||
(let ((module-arch (match (string-tokenize (%current-system)
|
||||
(char-set-complement (char-set #\-)))
|
||||
((arch "linux") (string-append "linux-gnu-" arch))
|
||||
((arch "gnu") (string-append "gnu-" arch)))))
|
||||
(list (file-append enlightenment
|
||||
"/lib/enlightenment/utils/enlightenment_sys")
|
||||
(file-append enlightenment
|
||||
"/lib/enlightenment/utils/enlightenment_backlight")
|
||||
;; TODO: Move this binary to a screen-locker service.
|
||||
(file-append enlightenment
|
||||
"/lib/enlightenment/utils/enlightenment_ckpasswd")
|
||||
(file-append enlightenment
|
||||
(string-append
|
||||
"/lib/enlightenment/modules/cpufreq/"
|
||||
module-arch "-"
|
||||
(package-version enlightenment)
|
||||
"/freqset"))
|
||||
(file-append enlightenment
|
||||
(string-append
|
||||
"/lib/enlightenment/modules/sysinfo/"
|
||||
module-arch "-"
|
||||
(package-version enlightenment)
|
||||
"/cpuclock_sysfs"))))))
|
||||
(list (file-append enlightenment
|
||||
"/lib/enlightenment/utils/enlightenment_sys")
|
||||
(file-append enlightenment
|
||||
"/lib/enlightenment/utils/enlightenment_system")
|
||||
(file-append enlightenment
|
||||
"/lib/enlightenment/utils/enlightenment_ckpasswd"))))
|
||||
|
||||
(define enlightenment-desktop-service-type
|
||||
(service-type
|
||||
|
@ -73,6 +73,7 @@
|
||||
channel-instances->manifest
|
||||
%channel-profile-hooks
|
||||
channel-instances->derivation
|
||||
ensure-forward-channel-update
|
||||
|
||||
profile-channels
|
||||
|
||||
@ -212,15 +213,18 @@ result is unspecified."
|
||||
(loop rest)))))
|
||||
|
||||
(define* (latest-channel-instance store channel
|
||||
#:key (patches %patches))
|
||||
"Return the latest channel instance for CHANNEL."
|
||||
#:key (patches %patches)
|
||||
starting-commit)
|
||||
"Return two values: the latest channel instance for CHANNEL, and its
|
||||
relation to STARTING-COMMIT when provided."
|
||||
(define (dot-git? file stat)
|
||||
(and (string=? (basename file) ".git")
|
||||
(eq? 'directory (stat:type stat))))
|
||||
|
||||
(let-values (((checkout commit)
|
||||
(let-values (((checkout commit relation)
|
||||
(update-cached-checkout (channel-url channel)
|
||||
#:ref (channel-reference channel))))
|
||||
#:ref (channel-reference channel)
|
||||
#:starting-commit starting-commit)))
|
||||
(when (guix-channel? channel)
|
||||
;; Apply the relevant subset of PATCHES directly in CHECKOUT. This is
|
||||
;; safe to do because 'switch-to-ref' eventually does a hard reset.
|
||||
@ -229,12 +233,55 @@ result is unspecified."
|
||||
(let* ((name (url+commit->name (channel-url channel) commit))
|
||||
(checkout (add-to-store store name #t "sha256" checkout
|
||||
#:select? (negate dot-git?))))
|
||||
(channel-instance channel commit checkout))))
|
||||
(values (channel-instance channel commit checkout)
|
||||
relation))))
|
||||
|
||||
(define* (latest-channel-instances store channels #:optional (previous-channels '()))
|
||||
(define (ensure-forward-channel-update channel start instance relation)
|
||||
"Raise an error if RELATION is not 'ancestor, meaning that START is not an
|
||||
ancestor of the commit in INSTANCE, unless CHANNEL specifies a commit.
|
||||
|
||||
This procedure implements a channel update policy meant to be used as a
|
||||
#:validate-pull argument."
|
||||
(match relation
|
||||
('ancestor #t)
|
||||
('self #t)
|
||||
(_
|
||||
(raise (make-compound-condition
|
||||
(condition
|
||||
(&message (message
|
||||
(format #f (G_ "\
|
||||
aborting update of channel '~a' to commit ~a, which is not a descendant of ~a")
|
||||
(channel-name channel)
|
||||
(channel-instance-commit instance)
|
||||
start))))
|
||||
|
||||
;; If the user asked for a specific commit, they might want
|
||||
;; that to happen nevertheless, so tell them about the
|
||||
;; relevant 'guix pull' option.
|
||||
(if (channel-commit channel)
|
||||
(condition
|
||||
(&fix-hint
|
||||
(hint (G_ "Use @option{--allow-downgrades} to force
|
||||
this downgrade."))))
|
||||
(condition
|
||||
(&fix-hint
|
||||
(hint (G_ "This could indicate that the channel has
|
||||
been tampered with and is trying to force a roll-back, preventing you from
|
||||
getting the latest updates. If you think this is not the case, explicitly
|
||||
allow non-forward updates."))))))))))
|
||||
|
||||
(define* (latest-channel-instances store channels
|
||||
#:key
|
||||
(current-channels '())
|
||||
(validate-pull
|
||||
ensure-forward-channel-update))
|
||||
"Return a list of channel instances corresponding to the latest checkouts of
|
||||
CHANNELS and the channels on which they depend. PREVIOUS-CHANNELS is a list
|
||||
of previously processed channels."
|
||||
CHANNELS and the channels on which they depend.
|
||||
|
||||
CURRENT-CHANNELS is the list of currently used channels. It is compared
|
||||
against the newly-fetched instances of CHANNELS, and VALIDATE-PULL is called
|
||||
for each channel update and can choose to emit warnings or raise an error,
|
||||
depending on the policy it implements."
|
||||
;; Only process channels that are unique, or that are more specific than a
|
||||
;; previous channel specification.
|
||||
(define (ignore? channel others)
|
||||
@ -245,38 +292,53 @@ of previously processed channels."
|
||||
(not (or (channel-commit a)
|
||||
(channel-commit b))))))))
|
||||
|
||||
;; Accumulate a list of instances. A list of processed channels is also
|
||||
;; accumulated to decide on duplicate channel specifications.
|
||||
(define-values (resulting-channels instances)
|
||||
(fold2 (lambda (channel previous-channels instances)
|
||||
(if (ignore? channel previous-channels)
|
||||
(values previous-channels instances)
|
||||
(begin
|
||||
(format (current-error-port)
|
||||
(G_ "Updating channel '~a' from Git repository at '~a'...~%")
|
||||
(channel-name channel)
|
||||
(channel-url channel))
|
||||
(let ((instance (latest-channel-instance store channel)))
|
||||
(let-values (((new-instances new-channels)
|
||||
(latest-channel-instances
|
||||
store
|
||||
(channel-instance-dependencies instance)
|
||||
previous-channels)))
|
||||
(values (append (cons channel new-channels)
|
||||
previous-channels)
|
||||
(append (cons instance new-instances)
|
||||
instances)))))))
|
||||
previous-channels
|
||||
'() ;instances
|
||||
channels))
|
||||
(define (current-commit name)
|
||||
;; Return the current commit for channel NAME.
|
||||
(any (lambda (channel)
|
||||
(and (eq? (channel-name channel) name)
|
||||
(channel-commit channel)))
|
||||
current-channels))
|
||||
|
||||
(let ((instance-name (compose channel-name channel-instance-channel)))
|
||||
;; Remove all earlier channel specifications if they are followed by a
|
||||
;; more specific one.
|
||||
(values (delete-duplicates instances
|
||||
(lambda (a b)
|
||||
(eq? (instance-name a) (instance-name b))))
|
||||
resulting-channels)))
|
||||
(let loop ((channels channels)
|
||||
(previous-channels '()))
|
||||
;; Accumulate a list of instances. A list of processed channels is also
|
||||
;; accumulated to decide on duplicate channel specifications.
|
||||
(define-values (resulting-channels instances)
|
||||
(fold2 (lambda (channel previous-channels instances)
|
||||
(if (ignore? channel previous-channels)
|
||||
(values previous-channels instances)
|
||||
(begin
|
||||
(format (current-error-port)
|
||||
(G_ "Updating channel '~a' from Git repository at '~a'...~%")
|
||||
(channel-name channel)
|
||||
(channel-url channel))
|
||||
(let*-values (((current)
|
||||
(current-commit (channel-name channel)))
|
||||
((instance relation)
|
||||
(latest-channel-instance store channel
|
||||
#:starting-commit
|
||||
current)))
|
||||
(when relation
|
||||
(validate-pull channel current instance relation))
|
||||
|
||||
(let-values (((new-instances new-channels)
|
||||
(loop (channel-instance-dependencies instance)
|
||||
previous-channels)))
|
||||
(values (append (cons channel new-channels)
|
||||
previous-channels)
|
||||
(append (cons instance new-instances)
|
||||
instances)))))))
|
||||
previous-channels
|
||||
'() ;instances
|
||||
channels))
|
||||
|
||||
(let ((instance-name (compose channel-name channel-instance-channel)))
|
||||
;; Remove all earlier channel specifications if they are followed by a
|
||||
;; more specific one.
|
||||
(values (delete-duplicates instances
|
||||
(lambda (a b)
|
||||
(eq? (instance-name a) (instance-name b))))
|
||||
resulting-channels))))
|
||||
|
||||
(define* (checkout->channel-instance checkout
|
||||
#:key commit
|
||||
@ -618,10 +680,20 @@ channel instances."
|
||||
(define latest-channel-instances*
|
||||
(store-lift latest-channel-instances))
|
||||
|
||||
(define* (latest-channel-derivation #:optional (channels %default-channels))
|
||||
(define* (latest-channel-derivation #:optional (channels %default-channels)
|
||||
#:key
|
||||
(current-channels '())
|
||||
(validate-pull
|
||||
ensure-forward-channel-update))
|
||||
"Return as a monadic value the derivation that builds the profile for the
|
||||
latest instances of CHANNELS."
|
||||
(mlet %store-monad ((instances (latest-channel-instances* channels)))
|
||||
latest instances of CHANNELS. CURRENT-CHANNELS and VALIDATE-PULL are passed
|
||||
to 'latest-channel-instances'."
|
||||
(mlet %store-monad ((instances
|
||||
(latest-channel-instances* channels
|
||||
#:current-channels
|
||||
current-channels
|
||||
#:validate-pull
|
||||
validate-pull)))
|
||||
(channel-instances->derivation instances)))
|
||||
|
||||
(define (profile-channels profile)
|
||||
|
38
guix/git.scm
38
guix/git.scm
@ -43,6 +43,7 @@
|
||||
url+commit->name
|
||||
latest-repository-commit
|
||||
commit-difference
|
||||
commit-relation
|
||||
|
||||
git-checkout
|
||||
git-checkout?
|
||||
@ -261,14 +262,16 @@ definitely available in REPOSITORY, false otherwise."
|
||||
#:key
|
||||
(ref '(branch . "master"))
|
||||
recursive?
|
||||
starting-commit
|
||||
(log-port (%make-void-port "w"))
|
||||
(cache-directory
|
||||
(url-cache-directory
|
||||
url (%repository-cache-directory)
|
||||
#:recursive? recursive?)))
|
||||
"Update the cached checkout of URL to REF in CACHE-DIRECTORY. Return two
|
||||
"Update the cached checkout of URL to REF in CACHE-DIRECTORY. Return three
|
||||
values: the cache directory name, and the SHA1 commit (a string) corresponding
|
||||
to REF.
|
||||
to REF, and the relation of the new commit relative to STARTING-COMMIT (if
|
||||
provided) as returned by 'commit-relation'.
|
||||
|
||||
REF is pair whose key is [branch | commit | tag | tag-or-commit ] and value
|
||||
the associated data: [<branch name> | <sha1> | <tag name> | <string>].
|
||||
@ -301,7 +304,17 @@ When RECURSIVE? is true, check out submodules as well, if any."
|
||||
(remote-fetch (remote-lookup repository "origin"))))
|
||||
(when recursive?
|
||||
(update-submodules repository #:log-port log-port))
|
||||
(let ((oid (switch-to-ref repository canonical-ref)))
|
||||
|
||||
;; Note: call 'commit-relation' from here because it's more efficient
|
||||
;; than letting users re-open the checkout later on.
|
||||
(let* ((oid (switch-to-ref repository canonical-ref))
|
||||
(new (and starting-commit
|
||||
(commit-lookup repository oid)))
|
||||
(old (and starting-commit
|
||||
(commit-lookup repository
|
||||
(string->oid starting-commit))))
|
||||
(relation (and starting-commit
|
||||
(commit-relation old new))))
|
||||
|
||||
;; Reclaim file descriptors and memory mappings associated with
|
||||
;; REPOSITORY as soon as possible.
|
||||
@ -309,7 +322,7 @@ When RECURSIVE? is true, check out submodules as well, if any."
|
||||
'repository-close!)
|
||||
(repository-close! repository))
|
||||
|
||||
(values cache-directory (oid->string oid))))))
|
||||
(values cache-directory (oid->string oid) relation)))))
|
||||
|
||||
(define* (latest-repository-commit store url
|
||||
#:key
|
||||
@ -342,7 +355,7 @@ Log progress and checkout info to LOG-PORT."
|
||||
|
||||
(format log-port "updating checkout of '~a'...~%" url)
|
||||
(let*-values
|
||||
(((checkout commit)
|
||||
(((checkout commit _)
|
||||
(update-cached-checkout url
|
||||
#:recursive? recursive?
|
||||
#:ref ref
|
||||
@ -405,6 +418,21 @@ that of OLD."
|
||||
(cons head result)
|
||||
(set-insert head visited)))))))
|
||||
|
||||
(define (commit-relation old new)
|
||||
"Return a symbol denoting the relation between OLD and NEW, two commit
|
||||
objects: 'ancestor (meaning that OLD is an ancestor of NEW), 'descendant, or
|
||||
'unrelated, or 'self (OLD and NEW are the same commit)."
|
||||
(if (eq? old new)
|
||||
'self
|
||||
(let ((newest (commit-closure new)))
|
||||
(if (set-contains? newest old)
|
||||
'ancestor
|
||||
(let* ((seen (list->setq (commit-parents new)))
|
||||
(oldest (commit-closure old seen)))
|
||||
(if (set-contains? oldest new)
|
||||
'descendant
|
||||
'unrelated))))))
|
||||
|
||||
|
||||
;;;
|
||||
;;; Checkouts.
|
||||
|
@ -115,7 +115,7 @@
|
||||
(define (get-opam-repository)
|
||||
"Update or fetch the latest version of the opam repository and return the
|
||||
path to the repository."
|
||||
(receive (location commit)
|
||||
(receive (location commit _)
|
||||
(update-cached-checkout "https://github.com/ocaml/opam-repository")
|
||||
location))
|
||||
|
||||
|
@ -24,7 +24,7 @@
|
||||
(define-module (guix import utils)
|
||||
#:use-module (guix base32)
|
||||
#:use-module ((guix build download) #:prefix build:)
|
||||
#:use-module (gcrypt hash)
|
||||
#:use-module ((gcrypt hash) #:hide (sha256))
|
||||
#:use-module (guix http-client)
|
||||
#:use-module ((guix licenses) #:prefix license:)
|
||||
#:use-module (guix utils)
|
||||
|
@ -1154,15 +1154,18 @@ try again later")
|
||||
((? origin? origin)
|
||||
;; Since "save" origins are not supported for non-VCS source, all
|
||||
;; we can do is tell whether a given tarball is available or not.
|
||||
(if (origin-sha256 origin) ;XXX: for ungoogled-chromium
|
||||
(match (lookup-content (origin-sha256 origin) "sha256")
|
||||
(#f
|
||||
(list (make-warning package
|
||||
(G_ "source not archived on Software \
|
||||
(if (origin-hash origin) ;XXX: for ungoogled-chromium
|
||||
(let ((hash (origin-hash origin)))
|
||||
(match (lookup-content (content-hash-value hash)
|
||||
(symbol->string
|
||||
(content-hash-algorithm hash)))
|
||||
(#f
|
||||
(list (make-warning package
|
||||
(G_ "source not archived on Software \
|
||||
Heritage")
|
||||
#:field 'source)))
|
||||
((? content?)
|
||||
'()))
|
||||
#:field 'source)))
|
||||
((? content?)
|
||||
'())))
|
||||
'()))))
|
||||
(match-lambda*
|
||||
((key url method response)
|
||||
|
@ -28,12 +28,15 @@
|
||||
#:use-module (guix monads)
|
||||
#:use-module (guix gexp)
|
||||
#:use-module (guix base32)
|
||||
#:autoload (guix base64) (base64-decode)
|
||||
#:use-module (guix grafts)
|
||||
#:use-module (guix derivations)
|
||||
#:use-module (guix memoization)
|
||||
#:use-module (guix build-system)
|
||||
#:use-module (guix search-paths)
|
||||
#:use-module (guix sets)
|
||||
#:use-module (guix deprecation)
|
||||
#:use-module (guix i18n)
|
||||
#:use-module (ice-9 match)
|
||||
#:use-module (ice-9 vlist)
|
||||
#:use-module (ice-9 regex)
|
||||
@ -43,16 +46,23 @@
|
||||
#:use-module (srfi srfi-26)
|
||||
#:use-module (srfi srfi-34)
|
||||
#:use-module (srfi srfi-35)
|
||||
#:use-module (rnrs bytevectors)
|
||||
#:use-module (web uri)
|
||||
#:re-export (%current-system
|
||||
%current-target-system
|
||||
search-path-specification) ;for convenience
|
||||
#:export (origin
|
||||
#:export (content-hash
|
||||
content-hash?
|
||||
content-hash-algorithm
|
||||
content-hash-value
|
||||
|
||||
origin
|
||||
origin?
|
||||
this-origin
|
||||
origin-uri
|
||||
origin-method
|
||||
origin-sha256
|
||||
origin-hash
|
||||
origin-sha256 ;deprecated
|
||||
origin-file-name
|
||||
origin-actual-file-name
|
||||
origin-patches
|
||||
@ -62,6 +72,7 @@
|
||||
origin-snippet
|
||||
origin-modules
|
||||
base32
|
||||
base64
|
||||
|
||||
package
|
||||
package?
|
||||
@ -155,15 +166,79 @@
|
||||
;;;
|
||||
;;; Code:
|
||||
|
||||
;; Crytographic content hash.
|
||||
(define-immutable-record-type <content-hash>
|
||||
(%content-hash algorithm value)
|
||||
content-hash?
|
||||
(algorithm content-hash-algorithm) ;symbol
|
||||
(value content-hash-value)) ;bytevector
|
||||
|
||||
(define-syntax-rule (define-content-hash-constructor name
|
||||
(algorithm size) ...)
|
||||
"Define NAME as a <content-hash> constructor that ensures that (1) its
|
||||
second argument is among the listed ALGORITHM, and (2), when possible, that
|
||||
its first argument has the right size for the chosen algorithm."
|
||||
(define-syntax name
|
||||
(lambda (s)
|
||||
(syntax-case s (algorithm ...)
|
||||
((_ bv algorithm)
|
||||
(let ((bv* (syntax->datum #'bv)))
|
||||
(when (and (bytevector? bv*)
|
||||
(not (= size (bytevector-length bv*))))
|
||||
(syntax-violation 'content-hash "invalid content hash length" s))
|
||||
#'(%content-hash 'algorithm bv)))
|
||||
...))))
|
||||
|
||||
(define-content-hash-constructor build-content-hash
|
||||
(sha256 32)
|
||||
(sha512 64))
|
||||
|
||||
(define-syntax content-hash
|
||||
(lambda (s)
|
||||
"Return a content hash with the given parameters. The default hash
|
||||
algorithm is sha256. If the first argument is a literal string, it is decoded
|
||||
as base32. Otherwise, it must be a bytevector."
|
||||
;; What we'd really want here is something like C++ 'constexpr'.
|
||||
(syntax-case s ()
|
||||
((_ str)
|
||||
(string? (syntax->datum #'str))
|
||||
#'(content-hash str sha256))
|
||||
((_ str algorithm)
|
||||
(string? (syntax->datum #'str))
|
||||
(with-syntax ((bv (base32 (syntax->datum #'str))))
|
||||
#'(content-hash bv algorithm)))
|
||||
((_ (id str) algorithm)
|
||||
(and (string? (syntax->datum #'str))
|
||||
(free-identifier=? #'id #'base32))
|
||||
(with-syntax ((bv (nix-base32-string->bytevector (syntax->datum #'str))))
|
||||
#'(content-hash bv algorithm)))
|
||||
((_ (id str) algorithm)
|
||||
(and (string? (syntax->datum #'str))
|
||||
(free-identifier=? #'id #'base64))
|
||||
(with-syntax ((bv (base64-decode (syntax->datum #'str))))
|
||||
#'(content-hash bv algorithm)))
|
||||
((_ bv)
|
||||
#'(content-hash bv sha256))
|
||||
((_ bv hash)
|
||||
#'(build-content-hash bv hash)))))
|
||||
|
||||
(define (print-content-hash hash port)
|
||||
(format port "#<content-hash ~a:~a>"
|
||||
(content-hash-algorithm hash)
|
||||
(bytevector->nix-base32-string (content-hash-value hash))))
|
||||
|
||||
(set-record-type-printer! <content-hash> print-content-hash)
|
||||
|
||||
|
||||
;; The source of a package, such as a tarball URL and fetcher---called
|
||||
;; "origin" to avoid name clash with `package-source', `source', etc.
|
||||
(define-record-type* <origin>
|
||||
origin make-origin
|
||||
%origin make-origin
|
||||
origin?
|
||||
this-origin
|
||||
(uri origin-uri) ; string
|
||||
(method origin-method) ; procedure
|
||||
(sha256 origin-sha256) ; bytevector
|
||||
(hash origin-hash) ; <content-hash>
|
||||
(file-name origin-file-name (default #f)) ; optional file name
|
||||
|
||||
;; Patches are delayed so that the 'search-patch' calls are made lazily,
|
||||
@ -186,30 +261,60 @@
|
||||
(patch-guile origin-patch-guile ; package or #f
|
||||
(default #f)))
|
||||
|
||||
(define-syntax origin-compatibility-helper
|
||||
(syntax-rules (sha256)
|
||||
((_ () (fields ...))
|
||||
(%origin fields ...))
|
||||
((_ ((sha256 exp) rest ...) (others ...))
|
||||
(%origin others ...
|
||||
(hash (content-hash exp sha256))
|
||||
rest ...))
|
||||
((_ (field rest ...) (others ...))
|
||||
(origin-compatibility-helper (rest ...)
|
||||
(others ... field)))))
|
||||
|
||||
(define-syntax-rule (origin fields ...)
|
||||
"Build an <origin> record, automatically converting 'sha256' field
|
||||
specifications to 'hash'."
|
||||
(origin-compatibility-helper (fields ...) ()))
|
||||
|
||||
(define-deprecated (origin-sha256 origin)
|
||||
origin-hash
|
||||
(let ((hash (origin-hash origin)))
|
||||
(unless (eq? (content-hash-algorithm hash) 'sha256)
|
||||
(raise (condition (&message
|
||||
(message (G_ "no SHA256 hash for origin"))))))
|
||||
(content-hash-value hash)))
|
||||
|
||||
(define (print-origin origin port)
|
||||
"Write a concise representation of ORIGIN to PORT."
|
||||
(match origin
|
||||
(($ <origin> uri method sha256 file-name patches)
|
||||
(($ <origin> uri method hash file-name patches)
|
||||
(simple-format port "#<origin ~s ~a ~s ~a>"
|
||||
uri (bytevector->base32-string sha256)
|
||||
uri hash
|
||||
(force patches)
|
||||
(number->string (object-address origin) 16)))))
|
||||
|
||||
(set-record-type-printer! <origin> print-origin)
|
||||
|
||||
(define-syntax base32
|
||||
(lambda (s)
|
||||
"Return the bytevector corresponding to the given Nix-base32
|
||||
(define-syntax-rule (define-compile-time-decoder name string->bytevector)
|
||||
"Define NAME as a macro that runs STRING->BYTEVECTOR at macro expansion time
|
||||
if possible."
|
||||
(define-syntax name
|
||||
(lambda (s)
|
||||
"Return the bytevector corresponding to the given textual
|
||||
representation."
|
||||
(syntax-case s ()
|
||||
((_ str)
|
||||
(string? (syntax->datum #'str))
|
||||
;; A literal string: do the conversion at expansion time.
|
||||
(with-syntax ((bv (nix-base32-string->bytevector
|
||||
(syntax->datum #'str))))
|
||||
#''bv))
|
||||
((_ str)
|
||||
#'(nix-base32-string->bytevector str)))))
|
||||
(syntax-case s ()
|
||||
((_ str)
|
||||
(string? (syntax->datum #'str))
|
||||
;; A literal string: do the conversion at expansion time.
|
||||
(with-syntax ((bv (string->bytevector (syntax->datum #'str))))
|
||||
#''bv))
|
||||
((_ str)
|
||||
#'(string->bytevector str))))))
|
||||
|
||||
(define-compile-time-decoder base32 nix-base32-string->bytevector)
|
||||
(define-compile-time-decoder base64 base64-decode)
|
||||
|
||||
(define (origin-actual-file-name origin)
|
||||
"Return the file name of ORIGIN, either its 'file-name' field or the file
|
||||
@ -231,6 +336,7 @@ name of its URI."
|
||||
;; git, svn, cvs, etc. reference
|
||||
#f))))
|
||||
|
||||
|
||||
(define %supported-systems
|
||||
;; This is the list of system types that are supported. By default, we
|
||||
;; expect all packages to build successfully here.
|
||||
@ -1381,14 +1487,19 @@ unless you know what you are doing."
|
||||
#:optional (system (%current-system)))
|
||||
"Return the derivation corresponding to ORIGIN."
|
||||
(match origin
|
||||
(($ <origin> uri method sha256 name (= force ()) #f)
|
||||
(($ <origin> uri method hash name (= force ()) #f)
|
||||
;; No patches, no snippet: this is a fixed-output derivation.
|
||||
(method uri 'sha256 sha256 name #:system system))
|
||||
(($ <origin> uri method sha256 name (= force (patches ...)) snippet
|
||||
(method uri
|
||||
(content-hash-algorithm hash)
|
||||
(content-hash-value hash)
|
||||
name #:system system))
|
||||
(($ <origin> uri method hash name (= force (patches ...)) snippet
|
||||
(flags ...) inputs (modules ...) guile-for-build)
|
||||
;; Patches and/or a snippet.
|
||||
(mlet %store-monad ((source (method uri 'sha256 sha256 name
|
||||
#:system system))
|
||||
(mlet %store-monad ((source (method uri
|
||||
(content-hash-algorithm hash)
|
||||
(content-hash-value hash)
|
||||
name #:system system))
|
||||
(guile (package->derivation (or guile-for-build
|
||||
(default-guile))
|
||||
system
|
||||
|
@ -1,5 +1,5 @@
|
||||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2012, 2013, 2015, 2016, 2017 Ludovic Courtès <ludo@gnu.org>
|
||||
;;; Copyright © 2012, 2013, 2015, 2016, 2017, 2020 Ludovic Courtès <ludo@gnu.org>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
@ -23,6 +23,7 @@
|
||||
#:use-module (gcrypt hash)
|
||||
#:use-module (guix base16)
|
||||
#:use-module (guix base32)
|
||||
#:autoload (guix base64) (base64-encode)
|
||||
#:use-module ((guix download) #:hide (url-fetch))
|
||||
#:use-module ((guix build download)
|
||||
#:select (url-fetch))
|
||||
@ -77,18 +78,22 @@
|
||||
(define %default-options
|
||||
;; Alist of default option values.
|
||||
`((format . ,bytevector->nix-base32-string)
|
||||
(hash-algorithm . ,(hash-algorithm sha256))
|
||||
(verify-certificate? . #t)
|
||||
(download-proc . ,download-to-store*)))
|
||||
|
||||
(define (show-help)
|
||||
(display (G_ "Usage: guix download [OPTION] URL
|
||||
Download the file at URL to the store or to the given file, and print its
|
||||
file name and the hash of its contents.
|
||||
|
||||
Supported formats: 'nix-base32' (default), 'base32', and 'base16'
|
||||
('hex' and 'hexadecimal' can be used as well).\n"))
|
||||
file name and the hash of its contents.\n"))
|
||||
(newline)
|
||||
(display (G_ "\
|
||||
Supported formats: 'base64', 'nix-base32' (default), 'base32',
|
||||
and 'base16' ('hex' and 'hexadecimal' can be used as well).\n"))
|
||||
(format #t (G_ "
|
||||
-f, --format=FMT write the hash in the given format"))
|
||||
(format #t (G_ "
|
||||
-H, --hash=ALGORITHM use the given hash ALGORITHM"))
|
||||
(format #t (G_ "
|
||||
--no-check-certificate
|
||||
do not validate the certificate of HTTPS servers "))
|
||||
@ -108,6 +113,8 @@ Supported formats: 'nix-base32' (default), 'base32', and 'base16'
|
||||
(lambda (opt name arg result)
|
||||
(define fmt-proc
|
||||
(match arg
|
||||
("base64"
|
||||
base64-encode)
|
||||
("nix-base32"
|
||||
bytevector->nix-base32-string)
|
||||
("base32"
|
||||
@ -119,6 +126,13 @@ Supported formats: 'nix-base32' (default), 'base32', and 'base16'
|
||||
|
||||
(alist-cons 'format fmt-proc
|
||||
(alist-delete 'format result))))
|
||||
(option '(#\H "hash") #t #f
|
||||
(lambda (opt name arg result)
|
||||
(match (lookup-hash-algorithm (string->symbol arg))
|
||||
(#f
|
||||
(leave (G_ "~a: unknown hash algorithm~%") arg))
|
||||
(algo
|
||||
(alist-cons 'hash-algorithm algo result)))))
|
||||
(option '("no-check-certificate") #f #f
|
||||
(lambda (opt name arg result)
|
||||
(alist-cons 'verify-certificate? #f result)))
|
||||
@ -175,7 +189,7 @@ Supported formats: 'nix-base32' (default), 'base32', and 'base16'
|
||||
(or path
|
||||
(leave (G_ "~a: download failed~%")
|
||||
arg))
|
||||
port-sha256))
|
||||
(cute port-hash (assoc-ref opts 'hash-algorithm) <>)))
|
||||
(fmt (assq-ref opts 'format)))
|
||||
(format #t "~a~%~a~%" path (fmt hash))
|
||||
#t)))
|
||||
|
@ -1,5 +1,5 @@
|
||||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2012, 2013, 2014, 2016, 2017 Ludovic Courtès <ludo@gnu.org>
|
||||
;;; Copyright © 2012, 2013, 2014, 2016, 2017, 2020 Ludovic Courtès <ludo@gnu.org>
|
||||
;;; Copyright © 2013 Nikita Karetnikov <nikita@karetnikov.org>
|
||||
;;; Copyright © 2016 Jan Nieuwenhuizen <janneke@gnu.org>
|
||||
;;; Copyright © 2018 Tim Gesthuizen <tim.gesthuizen@yahoo.de>
|
||||
@ -20,12 +20,13 @@
|
||||
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
(define-module (guix scripts hash)
|
||||
#:use-module (guix base32)
|
||||
#:use-module (gcrypt hash)
|
||||
#:use-module (guix serialization)
|
||||
#:use-module (guix ui)
|
||||
#:use-module (guix scripts)
|
||||
#:use-module (guix base16)
|
||||
#:use-module (guix base32)
|
||||
#:autoload (guix base64) (base64-encode)
|
||||
#:use-module (ice-9 binary-ports)
|
||||
#:use-module (rnrs files)
|
||||
#:use-module (ice-9 match)
|
||||
@ -42,17 +43,21 @@
|
||||
|
||||
(define %default-options
|
||||
;; Alist of default option values.
|
||||
`((format . ,bytevector->nix-base32-string)))
|
||||
`((format . ,bytevector->nix-base32-string)
|
||||
(hash-algorithm . ,(hash-algorithm sha256))))
|
||||
|
||||
(define (show-help)
|
||||
(display (G_ "Usage: guix hash [OPTION] FILE
|
||||
Return the cryptographic hash of FILE.
|
||||
|
||||
Supported formats: 'nix-base32' (default), 'base32', and 'base16' ('hex'
|
||||
and 'hexadecimal' can be used as well).\n"))
|
||||
Return the cryptographic hash of FILE.\n"))
|
||||
(newline)
|
||||
(display (G_ "\
|
||||
Supported formats: 'base64', 'nix-base32' (default), 'base32',
|
||||
and 'base16' ('hex' and 'hexadecimal' can be used as well).\n"))
|
||||
(format #t (G_ "
|
||||
-x, --exclude-vcs exclude version control directories"))
|
||||
(format #t (G_ "
|
||||
-H, --hash=ALGORITHM use the given hash ALGORITHM"))
|
||||
(format #t (G_ "
|
||||
-f, --format=FMT write the hash in the given format"))
|
||||
(format #t (G_ "
|
||||
-r, --recursive compute the hash on FILE recursively"))
|
||||
@ -69,10 +74,19 @@ and 'hexadecimal' can be used as well).\n"))
|
||||
(list (option '(#\x "exclude-vcs") #f #f
|
||||
(lambda (opt name arg result)
|
||||
(alist-cons 'exclude-vcs? #t result)))
|
||||
(option '(#\H "hash") #t #f
|
||||
(lambda (opt name arg result)
|
||||
(match (lookup-hash-algorithm (string->symbol arg))
|
||||
(#f
|
||||
(leave (G_ "~a: unknown hash algorithm~%") arg))
|
||||
(algo
|
||||
(alist-cons 'hash-algorithm algo result)))))
|
||||
(option '(#\f "format") #t #f
|
||||
(lambda (opt name arg result)
|
||||
(define fmt-proc
|
||||
(match arg
|
||||
("base64"
|
||||
base64-encode)
|
||||
("nix-base32"
|
||||
bytevector->nix-base32-string)
|
||||
("base32"
|
||||
@ -139,8 +153,11 @@ and 'hexadecimal' can be used as well).\n"))
|
||||
(force-output port)
|
||||
(get-hash))
|
||||
(match file
|
||||
("-" (port-sha256 (current-input-port)))
|
||||
(_ (call-with-input-file file port-sha256))))))
|
||||
("-" (port-hash (assoc-ref opts 'hash-algorithm)
|
||||
(current-input-port)))
|
||||
(_ (call-with-input-file file
|
||||
(cute port-hash (assoc-ref opts 'hash-algorithm)
|
||||
<>)))))))
|
||||
|
||||
(match args
|
||||
((file)
|
||||
|
@ -675,12 +675,13 @@ doesn't need it."
|
||||
(define (process-query opts)
|
||||
"Process any query specified by OPTS. Return #t when a query was actually
|
||||
processed, #f otherwise."
|
||||
(let* ((profiles (match (filter-map (match-lambda
|
||||
(('profile . p) p)
|
||||
(_ #f))
|
||||
opts)
|
||||
(() (list %current-profile))
|
||||
(lst (reverse lst))))
|
||||
(let* ((profiles (delete-duplicates
|
||||
(match (filter-map (match-lambda
|
||||
(('profile . p) p)
|
||||
(_ #f))
|
||||
opts)
|
||||
(() (list %current-profile))
|
||||
(lst (reverse lst)))))
|
||||
(profile (match profiles
|
||||
((head tail ...) head))))
|
||||
(match (assoc-ref opts 'query)
|
||||
@ -718,7 +719,8 @@ processed, #f otherwise."
|
||||
|
||||
(('list-installed regexp)
|
||||
(let* ((regexp (and regexp (make-regexp* regexp regexp/icase)))
|
||||
(manifest (profile-manifest profile))
|
||||
(manifest (concatenate-manifests
|
||||
(map profile-manifest profiles)))
|
||||
(installed (manifest-entries manifest)))
|
||||
(leave-on-EPIPE
|
||||
(for-each (match-lambda
|
||||
@ -729,8 +731,8 @@ processed, #f otherwise."
|
||||
name (or version "?") output path))))
|
||||
|
||||
;; Show most recently installed packages last.
|
||||
(reverse installed)))
|
||||
#t))
|
||||
(reverse installed))))
|
||||
#t)
|
||||
|
||||
(('list-available regexp)
|
||||
(let* ((regexp (and regexp (make-regexp* regexp regexp/icase)))
|
||||
|
@ -81,7 +81,8 @@
|
||||
(multiplexed-build-output? . #t)
|
||||
(graft? . #t)
|
||||
(debug . 0)
|
||||
(verbosity . 1)))
|
||||
(verbosity . 1)
|
||||
(validate-pull . ,ensure-forward-channel-update)))
|
||||
|
||||
(define (show-help)
|
||||
(display (G_ "Usage: guix pull [OPTION]...
|
||||
@ -94,6 +95,8 @@ Download and deploy the latest version of Guix.\n"))
|
||||
--commit=COMMIT download the specified COMMIT"))
|
||||
(display (G_ "
|
||||
--branch=BRANCH download the tip of the specified BRANCH"))
|
||||
(display (G_ "
|
||||
--allow-downgrades allow downgrades to earlier channel revisions"))
|
||||
(display (G_ "
|
||||
-N, --news display news compared to the previous generation"))
|
||||
(display (G_ "
|
||||
@ -158,6 +161,10 @@ Download and deploy the latest version of Guix.\n"))
|
||||
(option '("branch") #t #f
|
||||
(lambda (opt name arg result)
|
||||
(alist-cons 'ref `(branch . ,arg) result)))
|
||||
(option '("allow-downgrades") #f #f
|
||||
(lambda (opt name arg result)
|
||||
(alist-cons 'validate-pull warn-about-backward-updates
|
||||
result)))
|
||||
(option '(#\p "profile") #t #f
|
||||
(lambda (opt name arg result)
|
||||
(alist-cons 'profile (canonicalize-profile arg)
|
||||
@ -188,6 +195,21 @@ Download and deploy the latest version of Guix.\n"))
|
||||
|
||||
%standard-build-options))
|
||||
|
||||
(define (warn-about-backward-updates channel start instance relation)
|
||||
"Warn about non-forward updates of CHANNEL from START to INSTANCE, without
|
||||
aborting."
|
||||
(match relation
|
||||
((or 'ancestor 'self)
|
||||
#t)
|
||||
('descendant
|
||||
(warning (G_ "rolling back channel '~a' from ~a to ~a~%")
|
||||
(channel-name channel) start
|
||||
(channel-instance-commit instance)))
|
||||
('unrelated
|
||||
(warning (G_ "moving channel '~a' from ~a to unrelated commit ~a~%")
|
||||
(channel-name channel) start
|
||||
(channel-instance-commit instance)))))
|
||||
|
||||
(define* (display-profile-news profile #:key concise?
|
||||
current-is-newer?)
|
||||
"Display what's up in PROFILE--new packages, and all that. If
|
||||
@ -749,7 +771,9 @@ Use '~/.config/guix/channels.scm' instead."))
|
||||
(substitutes? (assoc-ref opts 'substitutes?))
|
||||
(dry-run? (assoc-ref opts 'dry-run?))
|
||||
(channels (channel-list opts))
|
||||
(profile (or (assoc-ref opts 'profile) %current-profile)))
|
||||
(profile (or (assoc-ref opts 'profile) %current-profile))
|
||||
(current-channels (profile-channels profile))
|
||||
(validate-pull (assoc-ref opts 'validate-pull)))
|
||||
(cond ((assoc-ref opts 'query)
|
||||
(process-query opts profile))
|
||||
((assoc-ref opts 'generation)
|
||||
@ -766,7 +790,12 @@ Use '~/.config/guix/channels.scm' instead."))
|
||||
(ensure-default-profile)
|
||||
(honor-x509-certificates store)
|
||||
|
||||
(let ((instances (latest-channel-instances store channels)))
|
||||
(let ((instances
|
||||
(latest-channel-instances store channels
|
||||
#:current-channels
|
||||
current-channels
|
||||
#:validate-pull
|
||||
validate-pull)))
|
||||
(format (current-error-port)
|
||||
(N_ "Building from this channel:~%"
|
||||
"Building from these channels:~%"
|
||||
|
@ -26,7 +26,7 @@
|
||||
#:use-module (guix monads)
|
||||
#:use-module ((guix utils) #:select (substitute-keyword-arguments))
|
||||
#:use-module ((guix build utils) #:select (mkdir-p))
|
||||
#:use-module (gcrypt hash)
|
||||
#:use-module ((gcrypt hash) #:hide (sha256))
|
||||
#:use-module (guix build-system gnu)
|
||||
#:use-module (gnu packages base)
|
||||
#:use-module (gnu packages bootstrap)
|
||||
|
@ -1,5 +1,5 @@
|
||||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019 Ludovic Courtès <ludo@gnu.org>
|
||||
;;; Copyright © 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020 Ludovic Courtès <ludo@gnu.org>
|
||||
;;; Copyright © 2015 Alex Kost <alezost@gmail.com>
|
||||
;;; Copyright © 2019 Ricardo Wurmus <rekado@elephly.net>
|
||||
;;;
|
||||
@ -441,7 +441,8 @@ new version string if an update was made, and #f otherwise."
|
||||
(if version-loc
|
||||
(let* ((loc (package-location package))
|
||||
(old-version (package-version package))
|
||||
(old-hash (origin-sha256 (package-source package)))
|
||||
(old-hash (content-hash-value
|
||||
(origin-hash (package-source package))))
|
||||
(old-url (match (origin-uri (package-source package))
|
||||
((? string? url) url)
|
||||
(_ #f)))
|
||||
|
@ -175,6 +175,7 @@ etc/guix-%.service: etc/guix-%.service.in \
|
||||
"$<" > "$@.tmp"; \
|
||||
mv "$@.tmp" "$@"
|
||||
|
||||
# The service script for sysvinit.
|
||||
sysvinitservicedir = $(sysconfdir)/init.d
|
||||
nodist_sysvinitservice_DATA = etc/init.d/guix-daemon
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2015, 2017, 2019 Ludovic Courtès <ludo@gnu.org>
|
||||
;;; Copyright © 2015, 2017, 2019, 2020 Ludovic Courtès <ludo@gnu.org>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
@ -19,7 +19,7 @@
|
||||
(define-module (test-challenge)
|
||||
#:use-module (guix tests)
|
||||
#:use-module (guix tests http)
|
||||
#:use-module (gcrypt hash)
|
||||
#:use-module ((gcrypt hash) #:prefix gcrypt:)
|
||||
#:use-module (guix store)
|
||||
#:use-module (guix monads)
|
||||
#:use-module (guix derivations)
|
||||
@ -135,7 +135,7 @@
|
||||
(mlet* %store-monad ((drv (gexp->derivation "something"
|
||||
#~(list #$output #$text)))
|
||||
(out -> (derivation->output-path drv))
|
||||
(hash -> (sha256 #vu8())))
|
||||
(hash -> (gcrypt:sha256 #vu8())))
|
||||
(with-derivation-narinfo* drv (sha256 => hash)
|
||||
(>>= (compare-contents (list out) (%test-substitute-urls))
|
||||
(match-lambda
|
||||
|
@ -37,6 +37,7 @@
|
||||
#:use-module (srfi srfi-34)
|
||||
#:use-module (srfi srfi-35)
|
||||
#:use-module (srfi srfi-64)
|
||||
#:use-module (ice-9 control)
|
||||
#:use-module (ice-9 match))
|
||||
|
||||
(test-begin "channels")
|
||||
@ -136,11 +137,11 @@
|
||||
(url "test")))
|
||||
(test-dir (channel-instance-checkout instance--simple)))
|
||||
(mock ((guix git) update-cached-checkout
|
||||
(lambda* (url #:key ref)
|
||||
(lambda* (url #:key ref starting-commit)
|
||||
(match url
|
||||
("test" (values test-dir "caf3cabba9e"))
|
||||
("test" (values test-dir "caf3cabba9e" #f))
|
||||
(_ (values (channel-instance-checkout instance--no-deps)
|
||||
"abcde1234")))))
|
||||
"abcde1234" #f)))))
|
||||
(with-store store
|
||||
(let ((instances (latest-channel-instances store (list channel))))
|
||||
(and (eq? 2 (length instances))
|
||||
@ -155,11 +156,11 @@
|
||||
(url "test")))
|
||||
(test-dir (channel-instance-checkout instance--with-dupes)))
|
||||
(mock ((guix git) update-cached-checkout
|
||||
(lambda* (url #:key ref)
|
||||
(lambda* (url #:key ref starting-commit)
|
||||
(match url
|
||||
("test" (values test-dir "caf3cabba9e"))
|
||||
("test" (values test-dir "caf3cabba9e" #f))
|
||||
(_ (values (channel-instance-checkout instance--no-deps)
|
||||
"abcde1234")))))
|
||||
"abcde1234" #f)))))
|
||||
(with-store store
|
||||
(let ((instances (latest-channel-instances store (list channel))))
|
||||
(and (= 2 (length instances))
|
||||
@ -178,6 +179,40 @@
|
||||
"abc1234")))
|
||||
instances)))))))
|
||||
|
||||
(unless (which (git-command)) (test-skip 1))
|
||||
(test-equal "latest-channel-instances #:validate-pull"
|
||||
'descendant
|
||||
|
||||
;; Make sure the #:validate-pull procedure receives the right values.
|
||||
(let/ec return
|
||||
(with-temporary-git-repository directory
|
||||
'((add "a.txt" "A")
|
||||
(commit "first commit")
|
||||
(add "b.scm" "#t")
|
||||
(commit "second commit"))
|
||||
(with-repository directory repository
|
||||
(let* ((commit1 (find-commit repository "first"))
|
||||
(commit2 (find-commit repository "second"))
|
||||
(spec (channel (url (string-append "file://" directory))
|
||||
(name 'foo)))
|
||||
(new (channel (inherit spec)
|
||||
(commit (oid->string (commit-id commit2)))))
|
||||
(old (channel (inherit spec)
|
||||
(commit (oid->string (commit-id commit1))))))
|
||||
(define (validate-pull channel current instance relation)
|
||||
(return (and (eq? channel old)
|
||||
(string=? (oid->string (commit-id commit2))
|
||||
current)
|
||||
(string=? (oid->string (commit-id commit1))
|
||||
(channel-instance-commit instance))
|
||||
relation)))
|
||||
|
||||
(with-store store
|
||||
;; Attempt a downgrade from NEW to OLD.
|
||||
(latest-channel-instances store (list old)
|
||||
#:current-channels (list new)
|
||||
#:validate-pull validate-pull)))))))
|
||||
|
||||
(test-assert "channel-instances->manifest"
|
||||
;; Compute the manifest for a graph of instances and make sure we get a
|
||||
;; derivation graph that mirrors the instance graph. This test also ensures
|
||||
|
@ -1,5 +1,5 @@
|
||||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019 Ludovic Courtès <ludo@gnu.org>
|
||||
;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020 Ludovic Courtès <ludo@gnu.org>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
@ -23,7 +23,7 @@
|
||||
#:use-module (guix grafts)
|
||||
#:use-module (guix store)
|
||||
#:use-module (guix utils)
|
||||
#:use-module (gcrypt hash)
|
||||
#:use-module ((gcrypt hash) #:prefix gcrypt:)
|
||||
#:use-module (guix base32)
|
||||
#:use-module (guix tests)
|
||||
#:use-module (guix tests http)
|
||||
@ -215,7 +215,7 @@
|
||||
#:env-vars `(("url"
|
||||
. ,(object->string (%local-url))))
|
||||
#:hash-algo 'sha256
|
||||
#:hash (sha256 (string->utf8 text)))))
|
||||
#:hash (gcrypt:sha256 (string->utf8 text)))))
|
||||
(and (build-derivations %store (list drv))
|
||||
(string=? (call-with-input-file (derivation->output-path drv)
|
||||
get-string-all)
|
||||
@ -230,7 +230,7 @@
|
||||
#:env-vars `(("url"
|
||||
. ,(object->string (%local-url))))
|
||||
#:hash-algo 'sha256
|
||||
#:hash (sha256 (random-bytevector 100))))) ;wrong
|
||||
#:hash (gcrypt:sha256 (random-bytevector 100))))) ;wrong
|
||||
(guard (c ((store-protocol-error? c)
|
||||
(string-contains (store-protocol-error-message c) "failed")))
|
||||
(build-derivations %store (list drv))
|
||||
@ -245,7 +245,7 @@
|
||||
#:env-vars `(("url"
|
||||
. ,(object->string (%local-url))))
|
||||
#:hash-algo 'sha256
|
||||
#:hash (sha256 (random-bytevector 100)))))
|
||||
#:hash (gcrypt:sha256 (random-bytevector 100)))))
|
||||
(guard (c ((store-protocol-error? c)
|
||||
(string-contains (store-protocol-error-message (pk c)) "failed")))
|
||||
(build-derivations %store (list drv))
|
||||
@ -273,7 +273,7 @@
|
||||
#:env-vars `(("url"
|
||||
. ,(object->string (%local-url))))
|
||||
#:hash-algo 'sha256
|
||||
#:hash (sha256 (string->utf8 text)))))
|
||||
#:hash (gcrypt:sha256 (string->utf8 text)))))
|
||||
(and (with-http-server `((200 ,text))
|
||||
(build-derivations %store (list drv)))
|
||||
(with-http-server `((200 ,text))
|
||||
@ -317,34 +317,43 @@
|
||||
(test-assert "fixed-output-derivation?"
|
||||
(let* ((builder (add-text-to-store %store "my-fixed-builder.sh"
|
||||
"echo -n hello > $out" '()))
|
||||
(hash (sha256 (string->utf8 "hello")))
|
||||
(hash (gcrypt:sha256 (string->utf8 "hello")))
|
||||
(drv (derivation %store "fixed"
|
||||
%bash `(,builder)
|
||||
#:sources (list builder)
|
||||
#:hash hash #:hash-algo 'sha256)))
|
||||
(fixed-output-derivation? drv)))
|
||||
|
||||
(test-assert "fixed-output derivation"
|
||||
(let* ((builder (add-text-to-store %store "my-fixed-builder.sh"
|
||||
"echo -n hello > $out" '()))
|
||||
(hash (sha256 (string->utf8 "hello")))
|
||||
(drv (derivation %store "fixed"
|
||||
%bash `(,builder)
|
||||
#:sources `(,builder) ;optional
|
||||
#:hash hash #:hash-algo 'sha256))
|
||||
(succeeded? (build-derivations %store (list drv))))
|
||||
(and succeeded?
|
||||
(let ((p (derivation->output-path drv)))
|
||||
(and (equal? (string->utf8 "hello")
|
||||
(call-with-input-file p get-bytevector-all))
|
||||
(bytevector? (query-path-hash %store p)))))))
|
||||
(test-equal "fixed-output derivation"
|
||||
'(sha1 sha256 sha512)
|
||||
(map (lambda (hash-algorithm)
|
||||
(let* ((builder (add-text-to-store %store "my-fixed-builder.sh"
|
||||
"echo -n hello > $out" '()))
|
||||
(sha256 (gcrypt:sha256 (string->utf8 "hello")))
|
||||
(hash (gcrypt:bytevector-hash
|
||||
(string->utf8 "hello")
|
||||
(gcrypt:lookup-hash-algorithm hash-algorithm)))
|
||||
(drv (derivation %store
|
||||
(string-append
|
||||
"fixed-" (symbol->string hash-algorithm))
|
||||
%bash `(,builder)
|
||||
#:sources `(,builder) ;optional
|
||||
#:hash hash
|
||||
#:hash-algo hash-algorithm)))
|
||||
(build-derivations %store (list drv))
|
||||
(let ((p (derivation->output-path drv)))
|
||||
(and (bytevector=? (string->utf8 "hello")
|
||||
(call-with-input-file p get-bytevector-all))
|
||||
(bytevector? (query-path-hash %store p))
|
||||
hash-algorithm))))
|
||||
'(sha1 sha256 sha512)))
|
||||
|
||||
(test-assert "fixed-output derivation: output paths are equal"
|
||||
(let* ((builder1 (add-text-to-store %store "fixed-builder1.sh"
|
||||
"echo -n hello > $out" '()))
|
||||
(builder2 (add-text-to-store %store "fixed-builder2.sh"
|
||||
"echo hey; echo -n hello > $out" '()))
|
||||
(hash (sha256 (string->utf8 "hello")))
|
||||
(hash (gcrypt:sha256 (string->utf8 "hello")))
|
||||
(drv1 (derivation %store "fixed"
|
||||
%bash `(,builder1)
|
||||
#:hash hash #:hash-algo 'sha256))
|
||||
@ -359,7 +368,7 @@
|
||||
(test-assert "fixed-output derivation, recursive"
|
||||
(let* ((builder (add-text-to-store %store "my-fixed-builder.sh"
|
||||
"echo -n hello > $out" '()))
|
||||
(hash (sha256 (string->utf8 "hello")))
|
||||
(hash (gcrypt:sha256 (string->utf8 "hello")))
|
||||
(drv (derivation %store "fixed-rec"
|
||||
%bash `(,builder)
|
||||
#:sources (list builder)
|
||||
@ -381,7 +390,7 @@
|
||||
"echo -n hello > $out" '()))
|
||||
(builder2 (add-text-to-store %store "fixed-builder2.sh"
|
||||
"echo hey; echo -n hello > $out" '()))
|
||||
(hash (sha256 (string->utf8 "hello")))
|
||||
(hash (gcrypt:sha256 (string->utf8 "hello")))
|
||||
(fixed1 (derivation %store "fixed"
|
||||
%bash `(,builder1)
|
||||
#:hash hash #:hash-algo 'sha256))
|
||||
@ -418,7 +427,7 @@
|
||||
"echo -n hello > $out" '()))
|
||||
(builder2 (add-text-to-store %store "fixed-builder2.sh"
|
||||
"echo hey; echo -n hello > $out" '()))
|
||||
(hash (sha256 (string->utf8 "hello")))
|
||||
(hash (gcrypt:sha256 (string->utf8 "hello")))
|
||||
(fixed1 (derivation %store "fixed"
|
||||
%bash `(,builder1)
|
||||
#:hash hash #:hash-algo 'sha256))
|
||||
@ -671,7 +680,7 @@
|
||||
(let* ((value (getenv "GUIX_STATE_DIRECTORY"))
|
||||
(drv (derivation %store "leaked-env-vars" %bash
|
||||
'("-c" "echo -n $GUIX_STATE_DIRECTORY > $out")
|
||||
#:hash (sha256 (string->utf8 value))
|
||||
#:hash (gcrypt:sha256 (string->utf8 value))
|
||||
#:hash-algo 'sha256
|
||||
#:sources (list %bash)
|
||||
#:leaked-env-vars '("GUIX_STATE_DIRECTORY"))))
|
||||
@ -1097,7 +1106,7 @@
|
||||
(builder2 '(call-with-output-file (pk 'difference-here! %output)
|
||||
(lambda (p)
|
||||
(write "hello" p))))
|
||||
(hash (sha256 (string->utf8 "hello")))
|
||||
(hash (gcrypt:sha256 (string->utf8 "hello")))
|
||||
(input1 (build-expression->derivation %store "fixed" builder1
|
||||
#:hash hash
|
||||
#:hash-algo 'sha256))
|
||||
@ -1118,7 +1127,7 @@
|
||||
(builder2 '(call-with-output-file (pk 'difference-here! %output)
|
||||
(lambda (p)
|
||||
(write "hello" p))))
|
||||
(hash (sha256 (string->utf8 "hello")))
|
||||
(hash (gcrypt:sha256 (string->utf8 "hello")))
|
||||
(input1 (build-expression->derivation %store "fixed" builder1
|
||||
#:hash hash
|
||||
#:hash-algo 'sha256))
|
||||
|
@ -1,5 +1,5 @@
|
||||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2019 Ludovic Courtès <ludo@gnu.org>
|
||||
;;; Copyright © 2019, 2020 Ludovic Courtès <ludo@gnu.org>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
@ -122,4 +122,44 @@
|
||||
(lset= eq? (commit-difference commit4 commit1 (list commit5))
|
||||
(list commit2 commit3 commit4)))))))
|
||||
|
||||
(unless (which (git-command)) (test-skip 1))
|
||||
(test-equal "commit-relation"
|
||||
'(self ;master3 master3
|
||||
ancestor ;master1 master3
|
||||
descendant ;master3 master1
|
||||
unrelated ;master2 branch1
|
||||
unrelated ;branch1 master2
|
||||
ancestor ;branch1 merge
|
||||
descendant ;merge branch1
|
||||
ancestor ;master1 merge
|
||||
descendant) ;merge master1
|
||||
(with-temporary-git-repository directory
|
||||
'((add "a.txt" "A")
|
||||
(commit "first commit")
|
||||
(branch "hack")
|
||||
(checkout "hack")
|
||||
(add "1.txt" "1")
|
||||
(commit "branch commit")
|
||||
(checkout "master")
|
||||
(add "b.txt" "B")
|
||||
(commit "second commit")
|
||||
(add "c.txt" "C")
|
||||
(commit "third commit")
|
||||
(merge "hack" "merge"))
|
||||
(with-repository directory repository
|
||||
(let ((master1 (find-commit repository "first"))
|
||||
(master2 (find-commit repository "second"))
|
||||
(master3 (find-commit repository "third"))
|
||||
(branch1 (find-commit repository "branch"))
|
||||
(merge (find-commit repository "merge")))
|
||||
(list (commit-relation master3 master3)
|
||||
(commit-relation master1 master3)
|
||||
(commit-relation master3 master1)
|
||||
(commit-relation master2 branch1)
|
||||
(commit-relation branch1 master2)
|
||||
(commit-relation branch1 merge)
|
||||
(commit-relation merge branch1)
|
||||
(commit-relation master1 merge)
|
||||
(commit-relation merge master1))))))
|
||||
|
||||
(test-end "git")
|
||||
|
@ -162,7 +162,11 @@ edges."
|
||||
(let-values (((backend nodes+edges) (make-recording-backend)))
|
||||
(let* ((m (lambda* (uri hash-type hash name #:key system)
|
||||
(text-file "foo-1.2.3.tar.gz" "This is a fake!")))
|
||||
(o (origin (method m) (uri "the-uri") (sha256 #vu8(0 1 2))))
|
||||
(o (origin
|
||||
(method m) (uri "the-uri")
|
||||
(sha256
|
||||
(base32
|
||||
"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"))))
|
||||
(p (dummy-package "p" (source o))))
|
||||
(run-with-store %store
|
||||
(export-graph (list p) 'port
|
||||
|
@ -1,5 +1,5 @@
|
||||
# GNU Guix --- Functional package management for GNU
|
||||
# Copyright © 2013, 2014, 2016 Ludovic Courtès <ludo@gnu.org>
|
||||
# Copyright © 2013, 2014, 2016, 2020 Ludovic Courtès <ludo@gnu.org>
|
||||
# Copyright © 2016 Jan Nieuwenhuizen <janneke@gnu.org>
|
||||
#
|
||||
# This file is part of GNU Guix.
|
||||
@ -31,6 +31,11 @@ test `echo -n | guix hash -` = 0mdqa9w1p6cmli6976v4wi0sw9r4p5prkj7lzfd1877wk11c9
|
||||
test `guix hash -f nix-base32 /dev/null` = 0mdqa9w1p6cmli6976v4wi0sw9r4p5prkj7lzfd1877wk11c9c73
|
||||
test `guix hash -f hex /dev/null` = e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855
|
||||
test `guix hash -f base32 /dev/null` = 4oymiquy7qobjgx36tejs35zeqt24qpemsnzgtfeswmrw6csxbkq
|
||||
test `guix hash -H sha512 -f hex /dev/null` = cf83e1357eefb8bdf1542850d66d8007d620e4050b5715dc83f4a921d36ce9ce47d0d13c5d85f2b0ff8318d2877eec2f63b931bd47417a81a538327af927da3e
|
||||
test `guix hash -H sha1 -f base64 /dev/null` = "2jmj7l5rSw0yVb/vlWAYkK/YBwk="
|
||||
|
||||
if guix hash -H abcd1234 /dev/null;
|
||||
then false; else true; fi
|
||||
|
||||
mkdir "$tmpdir"
|
||||
echo -n executable > "$tmpdir/exe"
|
||||
|
@ -1,6 +1,7 @@
|
||||
# GNU Guix --- Functional package management for GNU
|
||||
# Copyright © 2012, 2013, 2014, 2015, 2017, 2019 Ludovic Courtès <ludo@gnu.org>
|
||||
# Copyright © 2013 Nikita Karetnikov <nikita@karetnikov.org>
|
||||
# Copyright © 2020 Simon Tournier <zimon.toutoune@gmail.com>
|
||||
#
|
||||
# This file is part of GNU Guix.
|
||||
#
|
||||
@ -78,6 +79,17 @@ esac
|
||||
|
||||
test "`guix package -p "$profile" -I 'g.*e' | cut -f1`" = "guile-bootstrap"
|
||||
|
||||
guix package --bootstrap -p "$profile_alt" -i gcc-bootstrap
|
||||
installed="`guix package -p "$profile" -p "$profile_alt" -I | cut -f1 | xargs echo | sort`"
|
||||
case "x$installed" in
|
||||
"gcc-bootstrap guile-bootstrap make-boot0")
|
||||
true;;
|
||||
"*")
|
||||
false;;
|
||||
esac
|
||||
test "`guix package -p "$profile_alt" -p "$profile" -I | wc -l`" = "3"
|
||||
rm "$profile_alt"
|
||||
|
||||
# List generations.
|
||||
test "`guix package -p "$profile" -l | cut -f1 | grep guile | head -n1`" \
|
||||
= " guile-bootstrap"
|
||||
|
@ -29,7 +29,7 @@
|
||||
#:renamer (lambda (name)
|
||||
(cond ((eq? name 'location) 'make-location)
|
||||
(else name))))
|
||||
#:use-module (gcrypt hash)
|
||||
#:use-module ((gcrypt hash) #:prefix gcrypt:)
|
||||
#:use-module (guix derivations)
|
||||
#:use-module (guix packages)
|
||||
#:use-module (guix grafts)
|
||||
@ -51,6 +51,7 @@
|
||||
#:use-module (srfi srfi-34)
|
||||
#:use-module (srfi srfi-35)
|
||||
#:use-module (srfi srfi-64)
|
||||
#:use-module (rnrs bytevectors)
|
||||
#:use-module (rnrs io ports)
|
||||
#:use-module (ice-9 vlist)
|
||||
#:use-module (ice-9 regex)
|
||||
@ -497,6 +498,32 @@
|
||||
(search-path %load-path "guix/base32.scm")
|
||||
get-bytevector-all)))))
|
||||
|
||||
(test-equal "package-source-derivation, origin, sha512"
|
||||
"hello"
|
||||
(let* ((bash (search-bootstrap-binary "bash" (%current-system)))
|
||||
(builder (add-text-to-store %store "my-fixed-builder.sh"
|
||||
"echo -n hello > $out" '()))
|
||||
(method (lambda* (url hash-algo hash #:optional name
|
||||
#:rest rest)
|
||||
(and (eq? hash-algo 'sha512)
|
||||
(raw-derivation name bash (list builder)
|
||||
#:sources (list builder)
|
||||
#:hash hash
|
||||
#:hash-algo hash-algo))))
|
||||
(source (origin
|
||||
(method method)
|
||||
(uri "unused://")
|
||||
(file-name "origin-sha512")
|
||||
(hash (content-hash
|
||||
(gcrypt:bytevector-hash (string->utf8 "hello")
|
||||
(gcrypt:lookup-hash-algorithm
|
||||
'sha512))
|
||||
sha512))))
|
||||
(drv (package-source-derivation %store source))
|
||||
(output (derivation->output-path drv)))
|
||||
(build-derivations %store (list drv))
|
||||
(call-with-input-file output get-string-all)))
|
||||
|
||||
(unless (network-reachable?) (test-skip 1))
|
||||
(test-equal "package-source-derivation, snippet"
|
||||
"OK"
|
||||
|
@ -22,7 +22,7 @@
|
||||
#:use-module (guix store)
|
||||
#:use-module (guix utils)
|
||||
#:use-module (guix monads)
|
||||
#:use-module (gcrypt hash)
|
||||
#:use-module ((gcrypt hash) #:prefix gcrypt:)
|
||||
#:use-module (guix base32)
|
||||
#:use-module (guix packages)
|
||||
#:use-module (guix derivations)
|
||||
@ -115,6 +115,18 @@
|
||||
(passwd:name (getpwuid (getuid)))))))
|
||||
(list (stat:uid s) (stat:perms s))))
|
||||
|
||||
(test-equal "add-to-store"
|
||||
'("sha1" "sha256" "sha512")
|
||||
(let* ((file (search-path %load-path "guix.scm"))
|
||||
(content (call-with-input-file file get-bytevector-all)))
|
||||
(map (lambda (hash-algo)
|
||||
(let ((file (add-to-store %store "guix.scm" #f hash-algo file)))
|
||||
(and (direct-store-path? file)
|
||||
(bytevector=? (call-with-input-file file get-bytevector-all)
|
||||
content)
|
||||
hash-algo)))
|
||||
'("sha1" "sha256" "sha512"))))
|
||||
|
||||
(test-equal "add-data-to-store"
|
||||
#vu8(1 2 3 4 5)
|
||||
(call-with-input-file (add-data-to-store %store "data" #vu8(1 2 3 4 5))
|
||||
@ -309,7 +321,7 @@
|
||||
#:env-vars `(("t2" . ,t2))))
|
||||
(o (derivation->output-path d)))
|
||||
(with-derivation-narinfo d
|
||||
(sha256 => (sha256 (string->utf8 t2)))
|
||||
(sha256 => (gcrypt:sha256 (string->utf8 t2)))
|
||||
(references => (list t2))
|
||||
|
||||
(equal? (references/substitutes s (list o t3 t2 t1))
|
||||
@ -928,7 +940,7 @@
|
||||
(foldm %store-monad
|
||||
(lambda (item result)
|
||||
(define ref-hash
|
||||
(let-values (((port get) (open-sha256-port)))
|
||||
(let-values (((port get) (gcrypt:open-sha256-port)))
|
||||
(write-file item port)
|
||||
(close-port port)
|
||||
(get)))
|
||||
@ -1132,7 +1144,7 @@
|
||||
(info (query-path-info %store item)))
|
||||
(and (equal? (path-info-references info) (list ref))
|
||||
(equal? (path-info-hash info)
|
||||
(sha256
|
||||
(gcrypt:sha256
|
||||
(string->utf8
|
||||
(call-with-output-string (cut write-file item <>))))))))
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user