Merge branch 'master' into core-updates

This commit is contained in:
Marius Bakke 2018-11-24 01:58:18 +01:00
commit 4d8f4a3f00
No known key found for this signature in database
GPG key ID: A2A06DF2A33A54FA
36 changed files with 2666 additions and 104 deletions

View file

@ -410,6 +410,7 @@ SH_TESTS = \
tests/guix-gc.sh \
tests/guix-hash.sh \
tests/guix-pack.sh \
tests/guix-pack-localstatedir.sh \
tests/guix-pack-relocatable.sh \
tests/guix-package.sh \
tests/guix-package-net.sh \
@ -600,13 +601,11 @@ AM_DISTCHECK_CONFIGURE_FLAGS = \
--enable-daemon \
ac_cv_guix_test_root="$(GUIX_TEST_ROOT)"
# The self-contained tarball. Add 'glibc-utf8-locales' along with glibc just
# so 'etc/profile' defines 'GUIX_LOCPATH' pointing to a valid set of locales.
# The self-contained tarball.
guix-binary.%.tar.xz:
$(AM_V_GEN)GUIX_PACKAGE_PATH= \
tarball=`$(top_builddir)/pre-inst-env guix pack -K -C xz \
-s "$*" --localstatedir guix glibc-utf8-locales \
-e '(@@ (gnu packages commencement) glibc-final)'` ; \
-s "$*" --localstatedir --profile-name=current-guix guix` ; \
cp "$$tarball" "$@.tmp" ; mv "$@.tmp" "$@"

46
NEWS
View file

@ -15,11 +15,57 @@ Please send Guix bug reports to bug-guix@gnu.org.
** Package management
*** guix pull -l lists new and upgraded packages
*** guix pull now supports channels via ~/.config/guix/channels.scm
*** New --profile or -p option for guix pull
*** New guix describe command
*** guix package no longer shows build logs by default
*** guix commands now produce colored output by default
*** Manifests can now refer to arbitrary Guix commits using “inferiors”
*** New guix processes command
*** guix pack now honors --localstatedir for all its backends
*** guix import pypi has a new --recursive option
*** guix import hackage has a new --recursive option
*** guix import stackage has a new --recursive option
The short option for --lts-version is now -l (used to be -r).
*** guix refresh now stores upstream keys in ~/.config/guix/upstream
*** Guix now depends on Guile-Gcrypt
** Distribution
*** The GNU Shepherd was upgraded to 0.5.0
*** guix system reconfigure now loads Shepherd service replacements
*** herd schedule mcron now displays mcrons job schedule
*** herd statistics nscd now displays nscd statistics
*** herd invalidate nscd TABLE instructs nscd to invalidate TABLE
*** New services
gitolite, iptables, pcscd, prometheus-node-exporter, varnish
** Programming interfaces
*** New (guix channels) module
*** New (guix inferior) module
*** New (guix status) module
*** packages->manifest now accepts inferior packages
*** New build systems: clojure, guile
*** Shepherd services can now declare custom actions
*** More of the (gnu system …) APIs are now non-monadic
*** New add-file-tree-to-store procedure in (guix store)
** Noteworthy bug fixes
** Native language support
*** The manual is now partially translated into German, in addition to French
To read the German manual, just type “info guix.de” or read it on-line at
<https://gnu.org/s/guix/manual/de/html_node>. Consider translating the manual
to your native language by joining the Translation Project:
<https://translationproject.org/domain/guix-manual.html>.
*** Updated translations:
*** New translations:
* Changes in 0.15.0 (since 0.14.0)

2
README
View file

@ -24,7 +24,7 @@ GNU Guix currently depends on the following packages:
- [[https://notabug.org/cwebber/guile-gcrypt][Guile-Gcrypt]] 0.1.0 or later
- [[https://www.gnu.org/software/make/][GNU Make]]
- [[https://www.gnutls.org][GnuTLS]] compiled with guile support enabled
- [[https://notabug.org/civodul/guile-sqlite3][Guile-SQLite3]], version 0.1.0 or later
- [[https://notabug.org/guile-sqlite3/guile-sqlite3][Guile-SQLite3]], version 0.1.0 or later
- [[https://gitlab.com/guile-git/guile-git][Guile-Git]]
- [[http://www.zlib.net/][zlib]]
- optionally [[https://savannah.nongnu.org/projects/guile-json/][Guile-JSON]], for the 'guix import pypi' command

View file

@ -499,18 +499,20 @@ archive content is independent of its creation time, thus making it
reproducible.
@item
Make @code{root}'s profile available under @file{~root/.guix-profile}:
Make the profile available under @file{~root/.config/guix/current}, which is
where @command{guix pull} will install updates (@pxref{Invoking guix pull}):
@example
# ln -sf /var/guix/profiles/per-user/root/guix-profile \
~root/.guix-profile
# mkdir -p ~root/.config/guix
# ln -sf /var/guix/profiles/per-user/root/current-guix \
~root/.config/guix/current
@end example
Source @file{etc/profile} to augment @code{PATH} and other relevant
environment variables:
@example
# GUIX_PROFILE="`echo ~root`/.guix-profile" ; \
# GUIX_PROFILE="`echo ~root`/.config/guix/current" ; \
source $GUIX_PROFILE/etc/profile
@end example
@ -532,8 +534,8 @@ with these commands:
@c http://lists.gnu.org/archive/html/guix-devel/2017-01/msg01199.html
@example
# cp ~root/.guix-profile/lib/systemd/system/guix-daemon.service \
/etc/systemd/system/
# cp ~root/.config/guix/current/lib/systemd/system/guix-daemon.service \
/etc/systemd/system/
# systemctl start guix-daemon && systemctl enable guix-daemon
@end example
@ -541,14 +543,16 @@ If your host distro uses the Upstart init system:
@example
# initctl reload-configuration
# cp ~root/.guix-profile/lib/upstart/system/guix-daemon.conf /etc/init/
# cp ~root/.config/guix/current/lib/upstart/system/guix-daemon.conf \
/etc/init/
# start guix-daemon
@end example
Otherwise, you can still start the daemon manually with:
@example
# ~root/.guix-profile/bin/guix-daemon --build-users-group=guixbuild
# ~root/.config/guix/current/bin/guix-daemon \
--build-users-group=guixbuild
@end example
@item
@ -558,7 +562,7 @@ for instance with:
@example
# mkdir -p /usr/local/bin
# cd /usr/local/bin
# ln -s /var/guix/profiles/per-user/root/guix-profile/bin/guix
# ln -s /var/guix/profiles/per-user/root/current-guix/bin/guix
@end example
It is also a good idea to make the Info version of this manual available
@ -567,7 +571,7 @@ there:
@example
# mkdir -p /usr/local/share/info
# cd /usr/local/share/info
# for i in /var/guix/profiles/per-user/root/guix-profile/share/info/* ;
# for i in /var/guix/profiles/per-user/root/current-guix/share/info/* ;
do ln -s $i ; done
@end example
@ -582,7 +586,8 @@ To use substitutes from @code{hydra.gnu.org} or one of its mirrors
(@pxref{Substitutes}), authorize them:
@example
# guix archive --authorize < ~root/.guix-profile/share/guix/hydra.gnu.org.pub
# guix archive --authorize < \
~root/.config/guix/current/share/guix/hydra.gnu.org.pub
@end example
@item
@ -616,7 +621,8 @@ make guix-binary.@var{system}.tar.xz
... which, in turn, runs:
@example
guix pack -s @var{system} --localstatedir guix
guix pack -s @var{system} --localstatedir \
--profile-name=current-guix guix
@end example
@xref{Invoking guix pack}, for more info on this handy tool.
@ -641,7 +647,7 @@ later, including 2.2.x;
(@pxref{Guile Preparations, how to install the GnuTLS bindings for
Guile,, gnutls-guile, GnuTLS-Guile});
@item
@uref{https://notabug.org/civodul/guile-sqlite3, Guile-SQLite3}, version 0.1.0
@uref{https://notabug.org/guile-sqlite3/guile-sqlite3, Guile-SQLite3}, version 0.1.0
or later;
@item
@c FIXME: Specify a version number once a release has been made.
@ -3273,7 +3279,12 @@ produce human-readable output;
@item channels
produce a list of channel specifications that can be passed to @command{guix
pull -C} or installed as @file{~/.config/guix/channels.scm} (@pxref{Invoking
guix pull}).
guix pull});
@item json
@cindex JSON
produce a list of channel specifications in JSON format;
@item recutils
produce a list of channel specifications in Recutils format.
@end table
@item --profile=@var{profile}
@ -3483,8 +3494,11 @@ For instance, @code{-S /opt/gnu/bin=bin} creates a @file{/opt/gnu/bin}
symlink pointing to the @file{bin} sub-directory of the profile.
@item --localstatedir
Include the ``local state directory'', @file{/var/guix}, in the
resulting pack.
@itemx --profile-name=@var{name}
Include the ``local state directory'', @file{/var/guix}, in the resulting
pack, and notably the @file{/var/guix/profiles/per-user/root/@var{name}}
profile---by default @var{name} is @code{guix-profile}, which corresponds to
@file{~root/.guix-profile}.
@file{/var/guix} contains the store database (@pxref{The Store}) as well
as garbage-collector roots (@pxref{Invoking guix gc}). Providing it in

View file

@ -7,4 +7,4 @@ start on runlevel [2345]
stop on runlevel [016]
exec @localstatedir@/guix/profiles/per-user/root/guix-profile/bin/guix-daemon --build-users-group=guixbuild
exec @localstatedir@/guix/profiles/per-user/root/current-guix/bin/guix-daemon --build-users-group=guixbuild

View file

@ -6,8 +6,8 @@
Description=Build daemon for GNU Guix
[Service]
ExecStart=@localstatedir@/guix/profiles/per-user/root/guix-profile/bin/guix-daemon --build-users-group=guixbuild
Environment=GUIX_LOCPATH=/root/.guix-profile/lib/locale
ExecStart=@localstatedir@/guix/profiles/per-user/root/current-guix/bin/guix-daemon --build-users-group=guixbuild
Environment=GUIX_LOCPATH=@localstatedir@/guix/profiles/per-user/root/guix-profile/lib/locale
RemainAfterExit=yes
StandardOutput=syslog
StandardError=syslog

View file

@ -269,12 +269,13 @@ sys_create_store()
fi
_msg "${INF}Linking the root user's profile"
ln -sf /var/guix/profiles/per-user/root/guix-profile \
"${ROOT_HOME}/.guix-profile"
mkdir -p "${ROOT_HOME}/.config/guix"
ln -sf /var/guix/profiles/per-user/root/current-guix \
"${ROOT_HOME}/.config/guix/current"
GUIX_PROFILE="${ROOT_HOME}/.guix-profile"
GUIX_PROFILE="${ROOT_HOME}/.config/guix/current"
source "${GUIX_PROFILE}/etc/profile"
_msg "${PAS}activated root profile at /root/.guix-profile"
_msg "${PAS}activated root profile at ${ROOT_HOME}/.config/guix/current"
}
sys_create_build_user()
@ -317,18 +318,18 @@ sys_enable_guix_daemon()
info_path="/usr/local/share/info"
local_bin="/usr/local/bin"
var_guix="/var/guix/profiles/per-user/root/guix-profile"
var_guix="/var/guix/profiles/per-user/root/current-guix"
case "$INIT_SYS" in
upstart)
{ initctl reload-configuration;
cp "${ROOT_HOME}/.guix-profile/lib/upstart/system/guix-daemon.conf" \
cp "${ROOT_HOME}/.config/guix/current/lib/upstart/system/guix-daemon.conf" \
/etc/init/ &&
start guix-daemon; } &&
_msg "${PAS}enabled Guix daemon via upstart"
;;
systemd)
{ cp "${ROOT_HOME}/.guix-profile/lib/systemd/system/guix-daemon.service" \
{ cp "${ROOT_HOME}/.config/guix/current/lib/systemd/system/guix-daemon.service" \
/etc/systemd/system/;
chmod 664 /etc/systemd/system/guix-daemon.service;
systemctl daemon-reload &&
@ -338,7 +339,7 @@ sys_enable_guix_daemon()
;;
NA|*)
_msg "${ERR}unsupported init system; run the daemon manually:"
echo " ${ROOT_HOME}/.guix-profile/bin/guix-daemon --build-users-group=guixbuild"
echo " ${ROOT_HOME}/.config/guix/current/bin/guix-daemon --build-users-group=guixbuild"
;;
esac
@ -358,9 +359,9 @@ sys_authorize_build_farms()
while true; do
read -p "Permit downloading pre-built package binaries from the project's build farms? (yes/no) " yn
case $yn in
[Yy]*) guix archive --authorize < "${ROOT_HOME}/.guix-profile/share/guix/hydra.gnu.org.pub" &&
[Yy]*) guix archive --authorize < "${ROOT_HOME}/.config/guix/current/share/guix/hydra.gnu.org.pub" &&
_msg "${PAS}Authorized public key for hydra.gnu.org";
guix archive --authorize < "${ROOT_HOME}/.guix-profile/share/guix/berlin.guixsd.org.pub" &&
guix archive --authorize < "${ROOT_HOME}/.config/guix/current/share/guix/berlin.guixsd.org.pub" &&
_msg "${PAS}Authorized public key for berlin.guixsd.org";
break;;
[Nn]*) _msg "${INF}Skipped authorizing build farm public keys"

View file

@ -9,4 +9,4 @@ stop on runlevel [016]
task
exec @localstatedir@/guix/profiles/per-user/root/guix-profile/bin/guix publish --user=nobody --port=8181
exec @localstatedir@/guix/profiles/per-user/root/current-guix/bin/guix publish --user=nobody --port=8181

View file

@ -6,8 +6,8 @@
Description=Publish the GNU Guix store
[Service]
ExecStart=@localstatedir@/guix/profiles/per-user/root/guix-profile/bin/guix publish --user=nobody --port=8181
Environment=GUIX_LOCPATH=/root/.guix-profile/lib/locale
ExecStart=@localstatedir@/guix/profiles/per-user/root/current-guix/bin/guix publish --user=nobody --port=8181
Environment=GUIX_LOCPATH=@localstatedir@/guix/profiles/per-user/root/guix-profile/lib/locale
RemainAfterExit=yes
StandardOutput=syslog
StandardError=syslog

View file

@ -32,6 +32,7 @@ (define-module (gnu bootloader u-boot)
u-boot-nintendo-nes-classic-edition-bootloader
u-boot-novena-bootloader
u-boot-pine64-plus-bootloader
u-boot-pinebook-bootloader
u-boot-puma-rk3399-bootloader
u-boot-wandboard-bootloader))
@ -168,6 +169,11 @@ (define u-boot-pine64-plus-bootloader
(inherit u-boot-allwinner64-bootloader)
(package u-boot-pine64-plus)))
(define u-boot-pinebook-bootloader
(bootloader
(inherit u-boot-allwinner64-bootloader)
(package u-boot-pinebook)))
(define u-boot-puma-rk3399-bootloader
(bootloader
(inherit u-boot-bootloader)

View file

@ -1191,6 +1191,12 @@ dist_patch_DATA = \
%D%/packages/patches/totem-meson-easy-codec.patch \
%D%/packages/patches/tuxpaint-stamps-path.patch \
%D%/packages/patches/twinkle-include-qregexpvalidator.patch \
%D%/packages/patches/u-boot-pinebook-a64-update-dts.patch \
%D%/packages/patches/u-boot-pinebook-mmc-calibration.patch \
%D%/packages/patches/u-boot-pinebook-r_i2c-controller.patch \
%D%/packages/patches/u-boot-pinebook-dts.patch \
%D%/packages/patches/u-boot-pinebook-syscon-node.patch \
%D%/packages/patches/u-boot-pinebook-video-bridge.patch \
%D%/packages/patches/unrtf-CVE-2016-10091.patch \
%D%/packages/patches/unzip-CVE-2014-8139.patch \
%D%/packages/patches/unzip-CVE-2014-8140.patch \

View file

@ -243,7 +243,7 @@ (define-public cmh
(define-public giac-xcas
(package
(name "giac-xcas")
(version "1.4.9-59")
(version "1.5.0-19")
(source (origin
(method url-fetch)
;; "~parisse/giac" is not used because the maintainer regularly
@ -255,16 +255,48 @@ (define-public giac-xcas
"source/giac_" version ".tar.gz"))
(sha256
(base32
"0dv5p5y6gkrsmz3xa7fw87rjyabwdwk09mqb09kb7gai9n9dgayk"))))
"0ds1zh712sr20qh0fih8jnm4nlv90andllp8n263qs7rlhblz551"))))
(build-system gnu-build-system)
(outputs '("out" "doc")) ;77MiB of documentation
(arguments
`(#:phases
`(#:modules ((ice-9 ftw)
(guix build utils)
(guix build gnu-build-system))
#:phases
(modify-phases %standard-phases
(add-after 'unpack 'patch-bin-cp
;; Some Makefiles contain hard-coded "/bin/cp".
(lambda _
;; Some Makefiles contain hard-coded "/bin/cp".
(substitute* (find-files "doc" "^Makefile")
(("/bin/cp") (which "cp")))
#t))
(add-after 'unpack 'disable-failing-test
;; FIXME: Test failing. Not sure why.
(lambda _
(substitute* "check/Makefile.in"
(("chk_fhan11") ""))
#t))
(add-after 'install 'install-doc
;; Setting --docdir to "doc" output isn't sufficient as
;; documentation and examples are scattered throughout the source.
(lambda* (#:key outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out"))
(doc (assoc-ref outputs "doc"))
(docdir (string-append doc
"/share/doc/"
(string-append ,name "-" ,version))))
;; For some reason, the install process moves
;; "share/giac/examples" instead of "share/giac/doc" to
;; "$(docdir)". Clean up the mess and start over.
(delete-file-recursively (string-append doc "/share"))
(mkdir-p docdir)
(with-directory-excursion out
(for-each (lambda (f)
(unless (member f '("." ".."))
(copy-recursively (string-append "share/giac/" f)
(string-append docdir "/" f))))
(scandir "share/giac"))
(delete-file-recursively "share/giac")))
#t)))))
(inputs
`(("fltk" ,fltk)

View file

@ -2180,7 +2180,7 @@ (define-public qjackrcd
(define-public supercollider
(package
(name "supercollider")
(version "3.9.2")
(version "3.9.3")
(source (origin
(method url-fetch)
(uri (string-append
@ -2189,7 +2189,7 @@ (define-public supercollider
"/SuperCollider-" version "-Source-linux.tar.bz2"))
(sha256
(base32
"0d3cb6dw8jz7ijriqn3rlwin24gffczp69hl17pzxj1d5w57yj44"))))
"1d8ixfl100jvlialxdizp8wqsl1mp5pi2bam25vp97bhjd59cfdr"))))
(build-system cmake-build-system)
(arguments
`(#:configure-flags '("-DSYSTEM_BOOST=on" "-DSYSTEM_YAMLCPP=on"

View file

@ -8,6 +8,7 @@
;;; Copyright © 2016, 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2017 Jelle Licht <jlicht@fsfe.org>
;;; Copyright © 2018 Fis Trivial <ybbs.daans@hotmail.com>
;;; Copyright © 2018 Nam Nguyen <namn@berkeley.edu>
;;;
;;; This file is part of GNU Guix.
;;;
@ -42,6 +43,7 @@ (define-module (gnu packages bittorrent)
#:use-module (gnu packages cyrus-sasl)
#:use-module (gnu packages databases)
#:use-module (gnu packages file)
#:use-module (gnu packages freedesktop)
#:use-module (gnu packages glib)
#:use-module (gnu packages gnome)
#:use-module (gnu packages gnupg)
@ -54,6 +56,7 @@ (define-module (gnu packages bittorrent)
#:use-module (gnu packages ncurses)
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages python)
#:use-module (gnu packages python-crypto)
#:use-module (gnu packages qt)
#:use-module (gnu packages ssh)
#:use-module (gnu packages tls)
@ -371,17 +374,17 @@ (define-public mktorrent
(define-public libtorrent-rasterbar
(package
(name "libtorrent-rasterbar")
(version "1.1.8")
(version "1.1.11")
(source (origin
(method url-fetch)
(uri
(string-append
"https://github.com/arvidn/libtorrent/releases/download/libtorrent-"
"https://github.com/arvidn/libtorrent/releases/download/libtorrent_"
(string-join (string-split version #\.) "_")
"/libtorrent-rasterbar-" version ".tar.gz"))
(sha256
(base32
"0pcdy26l5ivcs78y2bqh2qca83ikzjfchw5815xh69qf8g88zgvb"))))
"0isqidr11fnhybr0wvk0qxd97jaikmh8fx9h89b84yd2gyxdw8vw"))))
(build-system gnu-build-system)
(arguments
`(#:configure-flags
@ -393,7 +396,18 @@ (define-public libtorrent-rasterbar
"CXXFLAGS=-std=c++11") ; Use std::chrono instead of boost
#:make-flags (list
(string-append "LDFLAGS=-Wl,-rpath="
(assoc-ref %outputs "out") "/lib"))))
(assoc-ref %outputs "out") "/lib"))
#:phases (modify-phases %standard-phases
(add-after 'unpack 'compile-python-c++11
(lambda _
;; Make sure the Python bindings are compiled in C++ mode to
;; avoid undefined references as mentioned in
;; <https://github.com/qbittorrent/qBittorrent/issues/638>.
;; XXX: This can be removed for 1.2+.
(substitute* "bindings/python/setup.py"
(("\\+ target_specific\\(\\)\\,")
"+ target_specific() + ['-std=c++11'],"))
#t)))))
(inputs `(("boost" ,boost)
("openssl" ,openssl)))
(native-inputs `(("python" ,python-2)
@ -448,3 +462,40 @@ (define-public qbittorrent
qBittorrent is fast, stable and provides unicode support as well as many
features.")
(license l:gpl2+)))
(define-public deluge
(package
(name "deluge")
(version "1.3.15")
(source
(origin
(method url-fetch)
(uri (string-append
"http://download.deluge-torrent.org/source/deluge-"
version ".tar.xz"))
(sha256
(base32
"0b7rri4x0wrcj7rjghrnw1kfrsd5i7i6aq85dsg5dg1w1qa0ar59"))))
(build-system python-build-system)
(inputs
`(("libtorrent" ,libtorrent-rasterbar)
("python2-chardet" ,python2-chardet)
("python2-pygtk" ,python2-pygtk)
("python2-pyopenssl" ,python2-pyopenssl)
("python2-pyxdg" ,python2-pyxdg)
("python2-service-identity" ,python2-service-identity)
("python2-twisted" ,python2-twisted)))
(native-inputs
`(("intltool" ,intltool)))
(arguments
`(#:python ,python-2))
(home-page "https://www.deluge-torrent.org/")
(synopsis "Fully-featured cross-platform BitTorrent client")
(description
"Deluge contains the common features to BitTorrent clients such as
Protocol Encryption, DHT, Local Peer Discovery (LSD), Peer Exchange
(PEX), UPnP, NAT-PMP, Proxy support, Web seeds, global and per-torrent
speed limits. Deluge heavily utilises the libtorrent library. It is
designed to run as both a normal standalone desktop application and as a
client-server.")
(license l:gpl3+)))

View file

@ -580,6 +580,22 @@ (define-public (make-u-boot-sunxi64-package board triplet)
(define-public u-boot-pine64-plus
(make-u-boot-sunxi64-package "pine64_plus" "aarch64-linux-gnu"))
(define-public u-boot-pinebook
(let ((base (make-u-boot-sunxi64-package "pinebook" "aarch64-linux-gnu")))
(package
(inherit base)
(source (origin
(inherit (package-source u-boot))
(patches (search-patches
;; Add patches to enable Pinebook support from sunxi
;; maintainer tree: git://git.denx.de/u-boot-sunxi.git
"u-boot-pinebook-a64-update-dts.patch"
"u-boot-pinebook-syscon-node.patch"
"u-boot-pinebook-mmc-calibration.patch"
"u-boot-pinebook-video-bridge.patch"
"u-boot-pinebook-r_i2c-controller.patch"
"u-boot-pinebook-dts.patch")))))))
(define-public u-boot-bananapi-m2-ultra
(make-u-boot-package "Bananapi_M2_Ultra" "arm-linux-gnueabihf"))

View file

@ -811,6 +811,29 @@ (define-public emacs-flycheck
provides an optional IDE-like error list.")
(license license:gpl3+))) ;+GFDLv1.3+ for the manual
(define-public emacs-a
(package
(name "emacs-a")
(version "0.1.1")
(source (origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/plexus/a.el.git")
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
(base32
"00v9w6qg3bkwdhypq0ssf0phdh0f4bcq59c20lngd6vhk0204dqi"))))
(build-system emacs-build-system)
(home-page "https://github.com/plexus/a.el/")
(synopsis
"Emacs library for dealing with association lists and hash tables")
(description "@code{emacs-a} provides Emacs Lisp functions for dealing
with associative structures in a uniform and functional way. These functions
can take association lists, hash tables, and in some cases vectors (where the
index is considered the key).")
(license license:gpl3+)))
;;;
;;; Web browsing.
@ -7744,6 +7767,22 @@ (define-public emacs-circe
want to use it.")
(license license:gpl3+)))
(define-public emacs-tracking
(package
(inherit emacs-circe)
(name "emacs-tracking")
(arguments
;; "tracking.el" is a library extracted from Circe package. It requires
;; "shorten.el".
`(#:include '("^shorten.el$" "^tracking.el$")
#:tests? #f)) ;tests require buttercup
(home-page "https://github.com/jorgenschaefer/circe/wiki/Tracking")
(synopsis "Buffer tracking library")
(description "@code{tracking.el} provides a way for different modes to
notify the user that a buffer needs attention. The user then can cycle
through them using @key{C-c C-SPC}.")
(license license:gpl3+)))
(define-public emacs-slack
(let ((commit "d90395482d26175ce38fd935e978c428be8af9a0")
(revision "4"))
@ -11737,8 +11776,8 @@ (define-public emacs-package-lint
(license license:gpl3+))))
(define-public emacs-picpocket
(let ((version "20180610.1059") ; taken from melpa
(commit "ce4b6ed088384f2414af82e8e4eae5b92c2874bf"))
(let ((version "40")
(commit "6fd88b8711c4370662c0f9c462170187d092a046"))
(package
(name "emacs-picpocket")
(version version)
@ -11750,7 +11789,7 @@ (define-public emacs-picpocket
(commit commit)))
(file-name (git-file-name name version))
(sha256
(base32 "15vpbcv83mc4j1pvrk7xic0klh2bl9gzg2xxs7c2lmnix52hy8mv"))))
(base32 "1mdzzxf7xm7zwrpnqqxa27d1cr31pd72d7ilbwljv13qp177a3yw"))))
(build-system emacs-build-system)
(arguments ; needed for running tests
`(#:tests? #t
@ -12570,3 +12609,55 @@ (define-public emacs-gtk-look
classes like @command{<gtk-window>}.
@end itemize\n")
(license license:gpl3+)))
(define-public emacs-ov
(package
(name "emacs-ov")
(version "1.0.6")
(source (origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/ShingoFukuyama/ov.el.git")
(commit version)))
(file-name (git-file-name name version))
(sha256
(base32
"0qxk2rf84j86syxi8xknsq252irwg7sz396v3bb4wqz4prpj0kzc"))))
(build-system emacs-build-system)
(home-page "https://github.com/ShingoFukuyama/ov.el")
(synopsis "Overlay library for Emacs Lisp")
(description "@code{ov.el} provides a simple way to manipulate overlays in
Emacs.")
(license license:gpl3+)))
(define-public emacs-matrix-client
(let ((commit "3eab4c28280feff18ee1ddd7db66ada4f135cbf8"))
(package
(name "emacs-matrix-client")
(version (git-version "0.0.0" "1" commit))
(source (origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/jgkamat/matrix-client-el.git")
(commit commit)))
(file-name (git-file-name name version))
(sha256
(base32
"1k6721jz0m22vpb78881k087mpx8hf3s2219ic75v5mhgx355f7m"))))
(build-system emacs-build-system)
(propagated-inputs
`(("a" ,emacs-a)
("dash" ,emacs-dash)
("esxml" ,emacs-esxml)
("f" ,emacs-f)
("ht" ,emacs-ht)
("ov" ,emacs-ov)
("request" ,emacs-request)
("s" ,emacs-s)
("tracking" ,emacs-tracking)))
(home-page "https://github.com/jgkamat/matrix-client-el")
(synopsis "Matrix client for Emacs")
(description "@code{matrix-client} is a simple chat UI to Matrix.org
rooms. It also provides an API which allows Emacs to seamlessly create
RPC channels with users and other software.")
(license license:gpl3+))))

View file

@ -533,8 +533,13 @@ (define-public ccl
(install-file kernel libdir)
(install-file heap libdir)
(let ((dirs '("lib" "library" "examples" "contrib"
"tools" "objc-bridge")))
(let ((dirs '("lib" "library" "examples" "tools" "objc-bridge"
,@(match (%current-system)
("x86_64-linux"
'("x86-headers64"))
("i686-linux"
'("x86-headers"))
(_ '())))))
(for-each copy-recursively
dirs
(map (cut string-append libdir <>) dirs)))
@ -545,13 +550,12 @@ (define-public ccl
(display
(string-append
"#!" bash "/bin/sh\n"
"CCL_DEFAULT_DIRECTORY=" libdir "\n"
"export CCL_DEFAULT_DIRECTORY\n"
"exec " libdir kernel "\n"))))
"export CCL_DEFAULT_DIRECTORY=" libdir "\n"
"exec -a \"$0\" " libdir kernel " \"$@\"\n"))))
(chmod wrapper #o755))
#t)))))
(supported-systems '("i686-linux" "x86_64-linux" "armhf-linux"))
(home-page "http://ccl.clozure.com/")
(home-page "https://ccl.clozure.com/")
(synopsis "Common Lisp implementation")
(description "Clozure CL (often called CCL for short) is a Common Lisp
implementation featuring fast compilation speed, native threads, a precise,

View file

@ -1655,7 +1655,7 @@ (define-public maxflow
(define-public petsc
(package
(name "petsc")
(version "3.9.3")
(version "3.10.2")
(source
(origin
(method url-fetch)
@ -1663,7 +1663,7 @@ (define-public petsc
(uri (string-append "http://ftp.mcs.anl.gov/pub/petsc/release-snapshots/"
"petsc-lite-" version ".tar.gz"))
(sha256
(base32 "1fwkbwv4g7zf2lc8fw865xd0bl9anb6jaczfis5dff7h449gwa48"))))
(base32 "0bl64pydak3rblnjffi482r8bin4xim9sb37ksl2jkcxf0i0irsi"))))
(outputs '("out" ;libraries and headers
"examples")) ;~30MiB of examples
(build-system gnu-build-system)
@ -1812,14 +1812,14 @@ (define-public petsc-complex-openmpi
(define-public python-petsc4py
(package
(name "python-petsc4py")
(version "3.9.1")
(version "3.10.0")
(source
(origin
(method url-fetch)
(uri (pypi-uri "petsc4py" version))
(sha256
(base32
"1f8zd1ac9irsgkyqmzq30d9kl10fy1nh6zk312dhs43g449fkkhc"))))
"0ch3g6dsvxl7qi984fcssv7cxfbif4bw04gkvxl2l1b8wrmvrm25"))))
(build-system python-build-system)
(arguments
`(#:phases
@ -1871,7 +1871,7 @@ (define-public python2-kiwisolver
(define-public slepc
(package
(name "slepc")
(version "3.9.2")
(version "3.10.1")
(source
(origin
(method url-fetch)
@ -1879,7 +1879,7 @@ (define-public slepc
version ".tar.gz"))
(sha256
(base32
"0gmhdqac8zm3jx43h935z7bflazjnpvqxjv4jh5za2y1z2rqax94"))))
"188j1a133q91h8pivpnzwcf78kz8dvz2nzf6ndnjygdbqb48fizn"))))
(build-system gnu-build-system)
(native-inputs
`(("python" ,python-2)))
@ -1978,14 +1978,14 @@ (define-public slepc-complex-openmpi
(define-public python-slepc4py
(package
(name "python-slepc4py")
(version "3.9.0")
(version "3.10.0")
(source
(origin
(method url-fetch)
(uri (pypi-uri "slepc4py" version))
(sha256
(base32
"02xr0vndgibgkz3rgprqk05n3mk5mpgqw550sr4681vcsgz4zvb7"))))
"0x049dyc8frgh79fvvavf4vlbqp4mgm61nsaivzdav4316vvlv1j"))))
(build-system python-build-system)
(arguments
`(#:phases

View file

@ -588,7 +588,7 @@ (define-public gajim
`(#:test-target "test_nogui"
#:phases
(modify-phases %standard-phases
(add-after 'install 'wrap-program
(add-after 'install 'wrap-gi-typelib-path
(lambda* (#:key outputs #:allow-other-keys)
(let ((out (assoc-ref outputs "out")))
(for-each
@ -616,7 +616,7 @@ (define-public gajim
(symlink adwaita "Adwaita")
(copy-recursively hicolor "hicolor")))
#t))
(add-after 'install-icons 'wrap-program
(add-after 'install-icons 'wrap-gsettings-schema-dir
(lambda* (#:key inputs outputs #:allow-other-keys)
(wrap-program (string-append (assoc-ref outputs "out")
"/bin/gajim")

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,388 @@
From b972831c3cd24f3c9bb0995ed61db8f8239f3391 Mon Sep 17 00:00:00 2001
From: Vasily Khoruzhick <anarsoul@gmail.com>
Date: Mon, 5 Nov 2018 20:24:31 -0800
Subject: [PATCH 10/13] sunxi: DT: add support for Pinebook
Pinebook is a laptop produced by Pine64, with USB-connected keyboard,
USB-connected touchpad and an eDP LCD panel connected via a RGB-eDP
bridge from Analogix.
Signed-off-by: Vasily Khoruzhick <anarsoul@gmail.com>
Acked-by: Maxime Ripard <maxime.ripard@bootlin.com>
Tested-by: Maxime Ripard <maxime.ripard@bootlin.com>
Cc: Vagrant Cascadian <vagrant@debian.org>
Reviewed-by: Jagan Teki <jagan@openedev.com>
---
arch/arm/dts/Makefile | 1 +
arch/arm/dts/sun50i-a64-pinebook-u-boot.dtsi | 15 ++
arch/arm/dts/sun50i-a64-pinebook.dts | 294 +++++++++++++++++++++++++++
configs/pinebook_defconfig | 22 ++
4 files changed, 332 insertions(+)
create mode 100644 arch/arm/dts/sun50i-a64-pinebook-u-boot.dtsi
create mode 100644 arch/arm/dts/sun50i-a64-pinebook.dts
create mode 100644 configs/pinebook_defconfig
diff --git a/arch/arm/dts/Makefile b/arch/arm/dts/Makefile
index 3093c1185e..eae6b9ee5d 100644
--- a/arch/arm/dts/Makefile
+++ b/arch/arm/dts/Makefile
@@ -406,6 +406,7 @@ dtb-$(CONFIG_MACH_SUN50I) += \
sun50i-a64-orangepi-win.dtb \
sun50i-a64-pine64-plus.dtb \
sun50i-a64-pine64.dtb \
+ sun50i-a64-pinebook.dtb \
sun50i-a64-sopine-baseboard.dtb
dtb-$(CONFIG_MACH_SUN9I) += \
sun9i-a80-optimus.dtb \
diff --git a/arch/arm/dts/sun50i-a64-pinebook-u-boot.dtsi b/arch/arm/dts/sun50i-a64-pinebook-u-boot.dtsi
new file mode 100644
index 0000000000..a99b7171d0
--- /dev/null
+++ b/arch/arm/dts/sun50i-a64-pinebook-u-boot.dtsi
@@ -0,0 +1,15 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright (C) 2018 Vasily Khoruzhick <anarsoul@gmail.com>
+ *
+ */
+
+/* The ANX6345 eDP-bridge is on r_i2c */
+&r_i2c {
+ anx6345: edp-bridge@38 {
+ compatible = "analogix,anx6345";
+ reg = <0x38>;
+ reset-gpios = <&pio 3 24 GPIO_ACTIVE_LOW>; /* PD24 */
+ status = "okay";
+ };
+};
diff --git a/arch/arm/dts/sun50i-a64-pinebook.dts b/arch/arm/dts/sun50i-a64-pinebook.dts
new file mode 100644
index 0000000000..ec537c5297
--- /dev/null
+++ b/arch/arm/dts/sun50i-a64-pinebook.dts
@@ -0,0 +1,294 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright (C) 2017 Icenowy Zheng <icenowy@aosc.xyz>
+ * Copyright (C) 2018 Vasily Khoruzhick <anarsoul@gmail.com>
+ *
+ */
+
+/dts-v1/;
+
+#include "sun50i-a64.dtsi"
+
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/input/input.h>
+#include <dt-bindings/pwm/pwm.h>
+
+/ {
+ model = "Pinebook";
+ compatible = "pine64,pinebook", "allwinner,sun50i-a64";
+
+ aliases {
+ serial0 = &uart0;
+ ethernet0 = &rtl8723cs;
+ };
+
+ vdd_bl: regulator@0 {
+ compatible = "regulator-fixed";
+ regulator-name = "bl-3v3";
+ regulator-min-microvolt = <3300000>;
+ regulator-max-microvolt = <3300000>;
+ gpio = <&pio 7 6 GPIO_ACTIVE_HIGH>; /* PH6 */
+ enable-active-high;
+ };
+
+ backlight: backlight {
+ compatible = "pwm-backlight";
+ pwms = <&pwm 0 50000 0>;
+ brightness-levels = <0 5 10 15 20 30 40 55 70 85 100>;
+ default-brightness-level = <2>;
+ enable-gpios = <&pio 3 23 GPIO_ACTIVE_HIGH>; /* PD23 */
+ power-supply = <&vdd_bl>;
+ };
+
+ chosen {
+ stdout-path = "serial0:115200n8";
+
+ framebuffer-lcd {
+ panel-supply = <&reg_dc1sw>;
+ dvdd25-supply = <&reg_dldo2>;
+ dvdd12-supply = <&reg_fldo1>;
+ };
+ };
+
+ gpio_keys {
+ compatible = "gpio-keys";
+
+ lid_switch {
+ label = "Lid Switch";
+ gpios = <&r_pio 0 12 GPIO_ACTIVE_LOW>; /* PL12 */
+ linux,input-type = <EV_SW>;
+ linux,code = <SW_LID>;
+ linux,can-disable;
+ wakeup-source;
+ };
+ };
+
+ reg_vcc3v3: vcc3v3 {
+ compatible = "regulator-fixed";
+ regulator-name = "vcc3v3";
+ regulator-min-microvolt = <3300000>;
+ regulator-max-microvolt = <3300000>;
+ };
+
+ wifi_pwrseq: wifi_pwrseq {
+ compatible = "mmc-pwrseq-simple";
+ reset-gpios = <&r_pio 0 2 GPIO_ACTIVE_LOW>; /* PL2 */
+ };
+};
+
+&ehci0 {
+ phys = <&usbphy 0>;
+ phy-names = "usb";
+ status = "okay";
+};
+
+&ehci1 {
+ status = "okay";
+};
+
+&mmc0 {
+ pinctrl-names = "default";
+ pinctrl-0 = <&mmc0_pins>;
+ vmmc-supply = <&reg_dcdc1>;
+ cd-gpios = <&pio 5 6 GPIO_ACTIVE_LOW>;
+ disable-wp;
+ bus-width = <4>;
+ status = "okay";
+};
+
+&mmc1 {
+ pinctrl-names = "default";
+ pinctrl-0 = <&mmc1_pins>;
+ vmmc-supply = <&reg_dldo4>;
+ vqmmc-supply = <&reg_eldo1>;
+ mmc-pwrseq = <&wifi_pwrseq>;
+ bus-width = <4>;
+ non-removable;
+ status = "okay";
+
+ rtl8723cs: wifi@1 {
+ reg = <1>;
+ };
+};
+
+&mmc2 {
+ pinctrl-names = "default";
+ pinctrl-0 = <&mmc2_pins>, <&mmc2_ds_pin>;
+ vmmc-supply = <&reg_dcdc1>;
+ vqmmc-supply = <&reg_eldo1>;
+ bus-width = <8>;
+ non-removable;
+ cap-mmc-hw-reset;
+ mmc-hs200-1_8v;
+ status = "okay";
+};
+
+&ohci0 {
+ phys = <&usbphy 0>;
+ phy-names = "usb";
+ status = "okay";
+};
+
+&ohci1 {
+ status = "okay";
+};
+
+&pwm {
+ status = "okay";
+};
+
+&r_rsb {
+ status = "okay";
+
+ axp803: pmic@3a3 {
+ compatible = "x-powers,axp803";
+ reg = <0x3a3>;
+ interrupt-parent = <&r_intc>;
+ interrupts = <0 IRQ_TYPE_LEVEL_LOW>;
+ };
+};
+
+/* The ANX6345 eDP-bridge is on r_i2c */
+&r_i2c {
+ clock-frequency = <100000>;
+ pinctrl-names = "default";
+ pinctrl-0 = <&r_i2c_pl89_pins>;
+ status = "okay";
+};
+
+#include "axp803.dtsi"
+
+&reg_aldo1 {
+ regulator-min-microvolt = <2800000>;
+ regulator-max-microvolt = <2800000>;
+ regulator-name = "vcc-csi";
+};
+
+&reg_aldo2 {
+ regulator-always-on;
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <3300000>;
+ regulator-name = "vcc-pl";
+};
+
+&reg_aldo3 {
+ regulator-always-on;
+ regulator-min-microvolt = <2700000>;
+ regulator-max-microvolt = <3300000>;
+ regulator-name = "vcc-pll-avcc";
+};
+
+&reg_dc1sw {
+ regulator-name = "vcc-lcd";
+};
+
+&reg_dcdc1 {
+ regulator-always-on;
+ regulator-min-microvolt = <3300000>;
+ regulator-max-microvolt = <3300000>;
+ regulator-name = "vcc-3v3";
+};
+
+&reg_dcdc2 {
+ regulator-always-on;
+ regulator-min-microvolt = <1000000>;
+ regulator-max-microvolt = <1300000>;
+ regulator-name = "vdd-cpux";
+};
+
+/* DCDC3 is polyphased with DCDC2 */
+
+&reg_dcdc5 {
+ regulator-always-on;
+ regulator-min-microvolt = <1200000>;
+ regulator-max-microvolt = <1200000>;
+ regulator-name = "vcc-dram";
+};
+
+&reg_dcdc6 {
+ regulator-always-on;
+ regulator-min-microvolt = <1100000>;
+ regulator-max-microvolt = <1100000>;
+ regulator-name = "vdd-sys";
+};
+
+&reg_dldo1 {
+ regulator-min-microvolt = <3300000>;
+ regulator-max-microvolt = <3300000>;
+ regulator-name = "vcc-hdmi";
+};
+
+&reg_dldo2 {
+ regulator-min-microvolt = <2500000>;
+ regulator-max-microvolt = <2500000>;
+ regulator-name = "vcc-edp";
+};
+
+&reg_dldo3 {
+ regulator-min-microvolt = <3300000>;
+ regulator-max-microvolt = <3300000>;
+ regulator-name = "avdd-csi";
+};
+
+&reg_dldo4 {
+ regulator-min-microvolt = <3300000>;
+ regulator-max-microvolt = <3300000>;
+ regulator-name = "vcc-wifi";
+};
+
+&reg_eldo1 {
+ regulator-always-on;
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+ regulator-name = "cpvdd";
+};
+
+&reg_eldo3 {
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+ regulator-name = "vdd-1v8-csi";
+};
+
+&reg_fldo1 {
+ regulator-min-microvolt = <1200000>;
+ regulator-max-microvolt = <1200000>;
+ regulator-name = "vcc-1v2-hsic";
+};
+
+&reg_fldo2 {
+ regulator-always-on;
+ regulator-min-microvolt = <1100000>;
+ regulator-max-microvolt = <1100000>;
+ regulator-name = "vdd-cpus";
+};
+
+&reg_ldo_io0 {
+ regulator-min-microvolt = <3300000>;
+ regulator-max-microvolt = <3300000>;
+ regulator-name = "vcc-usb";
+ status = "okay";
+};
+
+&reg_rtc_ldo {
+ regulator-name = "vcc-rtc";
+};
+
+&simplefb_hdmi {
+ vcc-hdmi-supply = <&reg_dldo1>;
+};
+
+&uart0 {
+ pinctrl-names = "default";
+ pinctrl-0 = <&uart0_pb_pins>;
+ status = "okay";
+};
+
+&usb_otg {
+ dr_mode = "host";
+};
+
+&usbphy {
+ usb0_vbus-supply = <&reg_ldo_io0>;
+ usb1_vbus-supply = <&reg_ldo_io0>;
+ status = "okay";
+};
diff --git a/configs/pinebook_defconfig b/configs/pinebook_defconfig
new file mode 100644
index 0000000000..5294dbd2eb
--- /dev/null
+++ b/configs/pinebook_defconfig
@@ -0,0 +1,22 @@
+CONFIG_ARM=y
+CONFIG_ARCH_SUNXI=y
+CONFIG_SPL=y
+CONFIG_MACH_SUN50I=y
+CONFIG_SUNXI_DRAM_LPDDR3_STOCK=y
+CONFIG_DRAM_CLK=552
+CONFIG_DRAM_ZQ=3881949
+CONFIG_MMC_SUNXI_SLOT_EXTRA=2
+CONFIG_R_I2C_ENABLE=y
+# CONFIG_CMD_FLASH is not set
+# CONFIG_SPL_DOS_PARTITION is not set
+# CONFIG_SPL_EFI_PARTITION is not set
+CONFIG_DEFAULT_DEVICE_TREE="sun50i-a64-pinebook"
+CONFIG_DM_REGULATOR=y
+CONFIG_DM_REGULATOR_FIXED=y
+CONFIG_DM_PWM=y
+CONFIG_PWM_SUNXI=y
+CONFIG_USB_EHCI_HCD=y
+CONFIG_SYS_USB_EVENT_POLL_VIA_INT_QUEUE=y
+# CONFIG_USB_GADGET is not set
+CONFIG_VIDEO_BRIDGE=y
+CONFIG_VIDEO_BRIDGE_ANALOGIX_ANX6345=y
--
2.11.0

View file

@ -0,0 +1,98 @@
From 20940ef2a397446a209350900d3bd618c3fd5b94 Mon Sep 17 00:00:00 2001
From: Vasily Khoruzhick <anarsoul@gmail.com>
Date: Mon, 5 Nov 2018 20:24:28 -0800
Subject: [PATCH 07/13] mmc: sunxi: add support for automatic delay calibration
A64 and H6 support automatic delay calibration and Linux driver uses it
instead of hardcoded delays. Add support for it to u-boot driver.
Fixes eMMC instability on Pinebook
Signed-off-by: Vasily Khoruzhick <anarsoul@gmail.com>
Acked-by: Maxime Ripard <maxime.ripard@bootlin.com>
Tested-by: Maxime Ripard <maxime.ripard@bootlin.com>
Reviewed-by: Andre Przywara <andre.przywara@arm.com>
Cc: Vagrant Cascadian <vagrant@debian.org>
Reviewed-by: Jagan Teki <jagan@openedev.com>
---
arch/arm/include/asm/arch-sunxi/mmc.h | 6 +++++-
drivers/mmc/sunxi_mmc.c | 21 ++++++++++++++++++++-
2 files changed, 25 insertions(+), 2 deletions(-)
diff --git a/arch/arm/include/asm/arch-sunxi/mmc.h b/arch/arm/include/asm/arch-sunxi/mmc.h
index d98c53faaa..f2deafddd2 100644
--- a/arch/arm/include/asm/arch-sunxi/mmc.h
+++ b/arch/arm/include/asm/arch-sunxi/mmc.h
@@ -46,7 +46,9 @@ struct sunxi_mmc {
u32 cbda; /* 0x94 */
u32 res2[26];
#if defined(CONFIG_SUNXI_GEN_SUN6I) || defined(CONFIG_MACH_SUN50I_H6)
- u32 res3[64];
+ u32 res3[17];
+ u32 samp_dl;
+ u32 res4[46];
#endif
u32 fifo; /* 0x100 / 0x200 FIFO access address */
};
@@ -130,5 +132,7 @@ struct sunxi_mmc {
#define SUNXI_MMC_COMMON_CLK_GATE (1 << 16)
#define SUNXI_MMC_COMMON_RESET (1 << 18)
+#define SUNXI_MMC_CAL_DL_SW_EN (0x1 << 7)
+
struct mmc *sunxi_mmc_init(int sdc_no);
#endif /* _SUNXI_MMC_H */
diff --git a/drivers/mmc/sunxi_mmc.c b/drivers/mmc/sunxi_mmc.c
index 39f15eb423..147eb9b4d5 100644
--- a/drivers/mmc/sunxi_mmc.c
+++ b/drivers/mmc/sunxi_mmc.c
@@ -99,11 +99,16 @@ static int mmc_set_mod_clk(struct sunxi_mmc_priv *priv, unsigned int hz)
{
unsigned int pll, pll_hz, div, n, oclk_dly, sclk_dly;
bool new_mode = false;
+ bool calibrate = false;
u32 val = 0;
if (IS_ENABLED(CONFIG_MMC_SUNXI_HAS_NEW_MODE) && (priv->mmc_no == 2))
new_mode = true;
+#if defined(CONFIG_MACH_SUN50I) || defined(CONFIG_MACH_SUN50I_H6)
+ calibrate = true;
+#endif
+
/*
* The MMC clock has an extra /2 post-divider when operating in the new
* mode.
@@ -174,7 +179,11 @@ static int mmc_set_mod_clk(struct sunxi_mmc_priv *priv, unsigned int hz)
val = CCM_MMC_CTRL_MODE_SEL_NEW;
setbits_le32(&priv->reg->ntsr, SUNXI_MMC_NTSR_MODE_SEL_NEW);
#endif
- } else {
+ } else if (!calibrate) {
+ /*
+ * Use hardcoded delay values if controller doesn't support
+ * calibration
+ */
val = CCM_MMC_CTRL_OCLK_DLY(oclk_dly) |
CCM_MMC_CTRL_SCLK_DLY(sclk_dly);
}
@@ -228,6 +237,16 @@ static int mmc_config_clock(struct sunxi_mmc_priv *priv, struct mmc *mmc)
rval &= ~SUNXI_MMC_CLK_DIVIDER_MASK;
writel(rval, &priv->reg->clkcr);
+#if defined(CONFIG_MACH_SUN50I) || defined(CONFIG_MACH_SUN50I_H6)
+ /* A64 supports calibration of delays on MMC controller and we
+ * have to set delay of zero before starting calibration.
+ * Allwinner BSP driver sets a delay only in the case of
+ * using HS400 which is not supported by mainline U-Boot or
+ * Linux at the moment
+ */
+ writel(SUNXI_MMC_CAL_DL_SW_EN, &priv->reg->samp_dl);
+#endif
+
/* Re-enable Clock */
rval |= SUNXI_MMC_CLK_ENABLE;
writel(rval, &priv->reg->clkcr);
--
2.11.0

View file

@ -0,0 +1,70 @@
From 31a4ac4d79d75baeede3edfa95515fd4169ef502 Mon Sep 17 00:00:00 2001
From: Vasily Khoruzhick <anarsoul@gmail.com>
Date: Mon, 5 Nov 2018 20:24:30 -0800
Subject: [PATCH 09/13] sun50i: A64: add support for R_I2C controller
Allwinner A64 has a I2C controller, which is in the R_ MMIO zone and has
two groups of pinmuxes on PL bank, so it's called R_I2C.
Add support for this I2C controller and the pinmux which doesn't conflict
with RSB.
Signed-off-by: Vasily Khoruzhick <anarsoul@gmail.com>
Acked-by: Maxime Ripard <maxime.ripard@bootlin.com>
Tested-by: Maxime Ripard <maxime.ripard@bootlin.com>
Cc: Vagrant Cascadian <vagrant@debian.org>
Acked-by: Jagan Teki <jagan@openedev.com>
---
arch/arm/include/asm/arch-sunxi/gpio.h | 1 +
arch/arm/mach-sunxi/Kconfig | 1 +
board/sunxi/board.c | 6 ++++++
3 files changed, 8 insertions(+)
diff --git a/arch/arm/include/asm/arch-sunxi/gpio.h b/arch/arm/include/asm/arch-sunxi/gpio.h
index 6a5eafc3d3..2daf23f6f5 100644
--- a/arch/arm/include/asm/arch-sunxi/gpio.h
+++ b/arch/arm/include/asm/arch-sunxi/gpio.h
@@ -211,6 +211,7 @@ enum sunxi_gpio_number {
#define SUN8I_H3_GPL_R_TWI 2
#define SUN8I_A23_GPL_R_TWI 3
#define SUN8I_GPL_R_UART 2
+#define SUN50I_GPL_R_TWI 2
#define SUN9I_GPN_R_RSB 3
diff --git a/arch/arm/mach-sunxi/Kconfig b/arch/arm/mach-sunxi/Kconfig
index 6277abc3cc..560dc9b25d 100644
--- a/arch/arm/mach-sunxi/Kconfig
+++ b/arch/arm/mach-sunxi/Kconfig
@@ -278,6 +278,7 @@ config MACH_SUN50I
select ARM64
select DM_I2C
select PHY_SUN4I_USB
+ select SUN6I_PRCM
select SUNXI_DE2
select SUNXI_GEN_SUN6I
select SUPPORT_SPL
diff --git a/board/sunxi/board.c b/board/sunxi/board.c
index b196d48674..64ccbc7245 100644
--- a/board/sunxi/board.c
+++ b/board/sunxi/board.c
@@ -168,10 +168,16 @@ void i2c_init_board(void)
#endif
#ifdef CONFIG_R_I2C_ENABLE
+#ifdef CONFIG_MACH_SUN50I
+ clock_twi_onoff(5, 1);
+ sunxi_gpio_set_cfgpin(SUNXI_GPL(8), SUN50I_GPL_R_TWI);
+ sunxi_gpio_set_cfgpin(SUNXI_GPL(9), SUN50I_GPL_R_TWI);
+#else
clock_twi_onoff(5, 1);
sunxi_gpio_set_cfgpin(SUNXI_GPL(0), SUN8I_H3_GPL_R_TWI);
sunxi_gpio_set_cfgpin(SUNXI_GPL(1), SUN8I_H3_GPL_R_TWI);
#endif
+#endif
}
#if defined(CONFIG_ENV_IS_IN_MMC) && defined(CONFIG_ENV_IS_IN_FAT)
--
2.11.0

View file

@ -0,0 +1,38 @@
From ababb5920e8992c9bb7956df3cc85dc68d27dfe8 Mon Sep 17 00:00:00 2001
From: Andre Przywara <andre.przywara@arm.com>
Date: Mon, 29 Oct 2018 00:56:48 +0000
Subject: [PATCH 04/13] sunxi: A64: Re-add syscon to DT node
The sun50i-a64.dtsi changes introduced in Linux v4.19-rc1 changed the
compatible name for the syscon controller, dropping the generic "syscon"
fallback. Using this new DT node will make the Ethernet driver in every
older kernel (or non-Linux kernels) fail to initialise the MAC device.
To allow booting distribution kernels (from installer images via UEFI,
for instance), re-add the syscon compatible string as a fallback. This
works with both older and newer kernels.
Signed-off-by: Andre Przywara <andre.przywara@arm.com>
Acked-by: Maxime Ripard <maxime.ripard@bootlin.com>
Reviewed-by: Jagan Teki <jagan@openedev.com>
---
arch/arm/dts/sun50i-a64.dtsi | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/arch/arm/dts/sun50i-a64.dtsi b/arch/arm/dts/sun50i-a64.dtsi
index f3a66f8882..ff41abc96a 100644
--- a/arch/arm/dts/sun50i-a64.dtsi
+++ b/arch/arm/dts/sun50i-a64.dtsi
@@ -259,7 +259,8 @@
};
syscon: syscon@1c00000 {
- compatible = "allwinner,sun50i-a64-system-control";
+ compatible = "allwinner,sun50i-a64-system-control",
+ "syscon";
reg = <0x01c00000 0x1000>;
#address-cells = <1>;
#size-cells = <1>;
--
2.11.0

View file

@ -0,0 +1,50 @@
From 8336a43792a103c13d939b3925cb75322911f7fb Mon Sep 17 00:00:00 2001
From: Vasily Khoruzhick <anarsoul@gmail.com>
Date: Mon, 5 Nov 2018 20:24:29 -0800
Subject: [PATCH 08/13] dm: video: bridge: don't fail to activate bridge if
reset or sleep GPIO is missing
Both GPIOs are optional, so we shouldn't fail if any is missing.
Without this fix reset is not deasserted if sleep GPIO is missing.
Signed-off-by: Vasily Khoruzhick <anarsoul@gmail.com>
Acked-by: Maxime Ripard <maxime.ripard@bootlin.com>
Tested-by: Maxime Ripard <maxime.ripard@bootlin.com>
Reviewed-by: Andre Przywara <andre.przywara@arm.com>
Cc: Vagrant Cascadian <vagrant@debian.org>
---
drivers/video/bridge/video-bridge-uclass.c | 16 +++++++++++-----
1 file changed, 11 insertions(+), 5 deletions(-)
diff --git a/drivers/video/bridge/video-bridge-uclass.c b/drivers/video/bridge/video-bridge-uclass.c
index cd4959cc71..5fecb4cfd5 100644
--- a/drivers/video/bridge/video-bridge-uclass.c
+++ b/drivers/video/bridge/video-bridge-uclass.c
@@ -106,13 +106,19 @@ static int video_bridge_pre_probe(struct udevice *dev)
int video_bridge_set_active(struct udevice *dev, bool active)
{
struct video_bridge_priv *uc_priv = dev_get_uclass_priv(dev);
- int ret;
+ int ret = 0;
debug("%s: %d\n", __func__, active);
- ret = dm_gpio_set_value(&uc_priv->sleep, !active);
- if (ret)
- return ret;
- if (active) {
+ if (uc_priv->sleep.dev) {
+ ret = dm_gpio_set_value(&uc_priv->sleep, !active);
+ if (ret)
+ return ret;
+ }
+
+ if (!active)
+ return 0;
+
+ if (uc_priv->reset.dev) {
ret = dm_gpio_set_value(&uc_priv->reset, true);
if (ret)
return ret;
--
2.11.0

View file

@ -69,14 +69,14 @@ (define-module (gnu packages photo)
(define-public libraw
(package
(name "libraw")
(version "0.19.0")
(version "0.19.1")
(source (origin
(method url-fetch)
(uri (string-append "https://www.libraw.org/data/LibRaw-"
version ".tar.gz"))
(sha256
(base32
"0nfj7s7qmgfy1cl8s3ck7dxjvprfq5glfi6iidmvmy8r7gl52gz8"))))
"1xjyw4n9gfr2r637pjbpbi3h98h9mdjn61b0hsxwqynq2vdij452"))))
(build-system gnu-build-system)
(native-inputs
`(("pkg-config" ,pkg-config)))

View file

@ -18,6 +18,7 @@
;;; Copyright © 2018 Tomáš Čech <sleep_walker@gnu.org>
;;; Copyright © 2018 Nicolas Goaziou <mail@nicolasgoaziou.fr>
;;; Copyright © 2018 Vagrant Cascadian <vagrant@debian.org>
;;; Copyright © 2018 Nam Nguyen <namn@berkeley.edu>
;;;
;;; This file is part of GNU Guix.
;;;
@ -970,3 +971,33 @@ (define-public python-scrypt
(description "This is a set of Python bindings for the scrypt key
derivation function.")
(license license:bsd-2)))
(define-public python-service-identity
(package
(name "python-service-identity")
(version "17.0.0")
(source
(origin
(method url-fetch)
(uri (pypi-uri "service_identity" version))
(sha256
(base32
"1aq24cn3nnsjr9g797dayhx4g653h6bd41ksqhidzq0rvarzn0a0"))))
(build-system python-build-system)
(propagated-inputs
`(("python-attrs" ,python-attrs)
("python-pyasn1" ,python-pyasn1)
("python-pyasn1-modules" ,python-pyasn1-modules)
("python-pyopenssl" ,python-pyopenssl)))
(home-page "https://service-identity.readthedocs.io/")
(synopsis "Service identity verification for PyOpenSSL")
(description
"@code{service_identity} aspires to give you all the tools you need
for verifying whether a certificate is valid for the intended purposes.
In the simplest case, this means host name verification. However,
service_identity implements RFC 6125 fully and plans to add other
relevant RFCs too.")
(license license:expat)))
(define-public python2-service-identity
(package-with-python2 python-service-identity))

View file

@ -14610,14 +14610,14 @@ (define-public python-dask
(define-public python-ilinkedlist
(package
(name "python-ilinkedlist")
(version "0.3.1")
(version "0.4.0")
(source
(origin
(method url-fetch)
(uri (pypi-uri "ilinkedlist" version))
(sha256
(base32
"04wpv7km8jggrngc4bjg3nm615czd3bjdvpsy2icg6c1c8162zyg"))))
"0nrw4sr3afldrp7073hvc0rgdz282s0l819jdmj1i6nn05v33h0l"))))
(build-system python-build-system)
(native-inputs `(("python-pytest" ,python-pytest)))
(inputs `(("python" ,python)))

View file

@ -5962,7 +5962,7 @@ (define-public xcompmgr
(define-public xpra
(package
(name "xpra")
(version "2.4.1")
(version "2.4.2")
(source
(origin
(method url-fetch)
@ -5970,7 +5970,7 @@ (define-public xpra
version ".tar.xz"))
(sha256
(base32
"1bhk6vydsrhlngvrv5w55arqf69cr3yw84xscnnl7km2g1iswkrs"))))
"01x4ri0arfq9cn01bh80h232lsj95jp6j1zw0z0q7a6mwrw4gr6i"))))
(build-system python-build-system)
(inputs `(("ffmpeg" ,ffmpeg)
("flac" ,flac)

View file

@ -53,6 +53,7 @@ (define-module (gnu system install)
nintendo-nes-classic-edition-installation-os
novena-installation-os
pine64-plus-installation-os
pinebook-installation-os
rk3399-puma-installation-os
wandboard-installation-os
os-with-u-boot))
@ -473,6 +474,11 @@ (define pine64-plus-installation-os
"/dev/mmcblk0" ; SD card storage
"ttyS0"))
(define pinebook-installation-os
(embedded-installation-os u-boot-pinebook-bootloader
"/dev/mmcblk0" ; SD card storage
"ttyS0"))
(define rk3399-puma-installation-os
(embedded-installation-os u-boot-puma-rk3399-bootloader
"/dev/mmcblk0" ; SD card storage

View file

@ -1,5 +1,6 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2018 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2018 Oleg Pykhalov <go.wigust@gmail.com>
;;;
;;; This file is part of GNU Guix.
;;;
@ -18,11 +19,13 @@
(define-module (guix scripts describe)
#:use-module ((guix ui) #:hide (display-profile-content))
#:use-module (guix channels)
#:use-module (guix scripts)
#:use-module (guix describe)
#:use-module (guix profiles)
#:use-module ((guix scripts pull) #:select (display-profile-content))
#:use-module (git)
#:use-module (json)
#:use-module (srfi srfi-1)
#:use-module (srfi srfi-37)
#:use-module (ice-9 match)
@ -38,7 +41,7 @@ (define %options
;; Specifications of the command-line options.
(list (option '(#\f "format") #t #f
(lambda (opt name arg result)
(unless (member arg '("human" "channels"))
(unless (member arg '("human" "channels" "json" "recutils"))
(leave (G_ "~a: unsupported output format~%") arg))
(alist-cons 'format (string->symbol arg) result)))
(option '(#\p "profile") #t #f
@ -84,6 +87,22 @@ (define (display-package-search-path fmt)
(format #t (G_ "~%;; warning: GUIX_PACKAGE_PATH=\"~a\"~%")
string))))))
(define (channel->sexp channel)
`(channel
(name ,(channel-name channel))
(url ,(channel-url channel))
(commit ,(channel-commit channel))))
(define (channel->json channel)
(scm->json-string `((name . ,(channel-name channel))
(url . ,(channel-url channel))
(commit . ,(channel-commit channel)))))
(define (channel->recutils channel port)
(format port "name: ~a~%" (channel-name channel))
(format port "url: ~a~%" (channel-url channel))
(format port "commit: ~a~%" (channel-commit channel)))
(define* (display-checkout-info fmt #:optional directory)
"Display information about the current checkout according to FMT, a symbol
denoting the requested format. Exit if the current directory does not lie
@ -104,10 +123,19 @@ (define* (display-checkout-info fmt #:optional directory)
(format #t (G_ " branch: ~a~%") (reference-shorthand head))
(format #t (G_ " commit: ~a~%") commit))
('channels
(pretty-print `(list (channel
(name 'guix)
(url ,(dirname directory))
(commit ,commit))))))
(pretty-print `(list ,(channel->sexp (channel (name 'guix)
(url (dirname directory))
(commit commit))))))
('json
(display (channel->json (channel (name 'guix)
(url (dirname directory))
(commit commit))))
(newline))
('recutils
(channel->recutils (channel (name 'guix)
(url (dirname directory))
(commit commit))
(current-output-port))))
(display-package-search-path fmt)))
(define (display-profile-info profile fmt)
@ -116,34 +144,46 @@ (define (display-profile-info profile fmt)
(define number
(generation-number profile))
(define channels
(map (lambda (entry)
(match (assq 'source (manifest-entry-properties entry))
(('source ('repository ('version 0)
('url url)
('branch branch)
('commit commit)
_ ...))
(channel (name (string->symbol (manifest-entry-name entry)))
(url url)
(commit commit)))
;; Pre-0.15.0 Guix does not provide that information,
;; so there's not much we can do in that case.
(_ (channel (name 'guix)
(url "?")
(commit "?")))))
;; Show most recently installed packages last.
(reverse
(manifest-entries
(profile-manifest
(if (zero? number)
profile
(generation-file-name profile number)))))))
(match fmt
('human
(display-profile-content profile number))
('channels
(pretty-print
`(list ,@(map (lambda (entry)
(match (assq 'source (manifest-entry-properties entry))
(('source ('repository ('version 0)
('url url)
('branch branch)
('commit commit)
_ ...))
`(channel (name ',(string->symbol
(manifest-entry-name entry)))
(url ,url)
(commit ,commit)))
;; Pre-0.15.0 Guix does not provide that information,
;; so there's not much we can do in that case.
(_ '???)))
;; Show most recently installed packages last.
(reverse
(manifest-entries
(profile-manifest
(if (zero? number)
profile
(generation-file-name profile number))))))))))
(pretty-print `(list ,@(map channel->sexp channels))))
('json
(format #t "[~a]~%" (string-join (map channel->json channels) ",")))
('recutils
(format #t "~{~a~%~}"
(map (lambda (channel)
(with-output-to-string
(lambda ()
(channel->recutils channel (current-output-port)))))
channels))))
(display-package-search-path fmt))

View file

@ -149,6 +149,7 @@ (define (read-closure closure)
(define* (self-contained-tarball name profile
#:key target
(profile-name "guix-profile")
deduplicate?
(compressor (first %compressors))
localstatedir?
@ -221,6 +222,7 @@ (define tar-supports-sort?
;; <http://lists.gnu.org/archive/html/bug-tar/2017-11/msg00009.html>.
(populate-single-profile-directory %root
#:profile #$profile
#:profile-name #$profile-name
#:closure "profile"
#:database #+database)
@ -279,6 +281,7 @@ (define tar-supports-sort?
(define* (squashfs-image name profile
#:key target
(profile-name "guix-profile")
(compressor (first %compressors))
localstatedir?
(symlinks '())
@ -377,6 +380,7 @@ (define database #+database)
(define* (docker-image name profile
#:key target
(profile-name "guix-profile")
(compressor (first %compressors))
localstatedir?
(symlinks '())
@ -587,6 +591,7 @@ (define (map-manifest-entries proc manifest)
(define %default-options
;; Alist of default option values.
`((format . tarball)
(profile-name . "guix-profile")
(system . ,(%current-system))
(substitutes? . #t)
(build-hook? . #t)
@ -658,6 +663,13 @@ (define %options
(option '("localstatedir") #f #f
(lambda (opt name arg result)
(alist-cons 'localstatedir? #t result)))
(option '("profile-name") #t #f
(lambda (opt name arg result)
(match arg
((or "guix-profile" "current-guix")
(alist-cons 'profile-name arg result))
(_
(leave (G_ "~a: unsupported profile name~%") arg)))))
(option '("bootstrap") #f #f
(lambda (opt name arg result)
(alist-cons 'bootstrap? #t result)))
@ -690,6 +702,9 @@ (define (show-help)
-m, --manifest=FILE create a pack with the manifest from FILE"))
(display (G_ "
--localstatedir include /var/guix in the resulting pack"))
(display (G_ "
--profile-name=NAME
populate /var/guix/profiles/.../NAME"))
(display (G_ "
--bootstrap use the bootstrap binaries to build the pack"))
(newline)
@ -779,7 +794,8 @@ (define (manifest-from-args store opts)
(#f
(leave (G_ "~a: unknown pack format~%")
pack-format))))
(localstatedir? (assoc-ref opts 'localstatedir?)))
(localstatedir? (assoc-ref opts 'localstatedir?))
(profile-name (assoc-ref opts 'profile-name)))
(run-with-store store
(mlet* %store-monad ((profile (profile-derivation
manifest
@ -798,6 +814,8 @@ (define (manifest-from-args store opts)
symlinks
#:localstatedir?
localstatedir?
#:profile-name
profile-name
#:archiver
archiver)))
(mbegin %store-monad

View file

@ -393,6 +393,9 @@ (define print-log-line
expected hash: ~a
actual hash: ~a~%"))
expected actual))
(('build-remote drv host _ ...)
(format port (info (G_ "offloading build of ~a to '~a'")) drv host)
(newline port))
(('build-log pid line)
(if (multiplexed-output-supported?)
(if (not pid)

View file

@ -53,7 +53,7 @@ (define sql-schema
(define sqlite-exec
;; XXX: This is was missing from guile-sqlite3 until
;; <https://notabug.org/civodul/guile-sqlite3/commit/b87302f9bcd18a286fed57b2ea521845eb1131d7>.
;; <https://notabug.org/guile-sqlite3/guile-sqlite3/commit/b87302f9bcd18a286fed57b2ea521845eb1131d7>.
(let ((exec (pointer->procedure
int
(dynamic-func "sqlite3_exec" (@@ (sqlite3) libsqlite3))

View file

@ -162,7 +162,7 @@ dnl Check whether a recent-enough Guile-Sqlite3 is available.
AC_DEFUN([GUIX_CHECK_GUILE_SQLITE3], [
dnl Check whether 'sqlite-bind-arguments' is available. It was introduced
dnl in February 2018:
dnl <https://notabug.org/civodul/guile-sqlite3/commit/1cd1dec96a9999db48c0ff45bab907efc637247f>.
dnl <https://notabug.org/guile-sqlite3/guile-sqlite3/commit/1cd1dec96a9999db48c0ff45bab907efc637247f>.
AC_CACHE_CHECK([whether Guile-Sqlite3 is available and recent enough],
[guix_cv_have_recent_guile_sqlite3],
[GUILE_CHECK([retval],

View file

@ -0,0 +1,69 @@
# GNU Guix --- Functional package management for GNU
# Copyright © 2018 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/>.
#
# Test the 'guix pack --localstatedir' command-line utility.
#
guix pack --version
# 'guix pack --localstatedir' produces derivations that depend on
# guile-sqlite3 and guile-gcrypt. To make that relatively inexpensive, run
# the test in the user's global store if possible, on the grounds that
# binaries may already be there or can be built or downloaded inexpensively.
NIX_STORE_DIR="`guile -c '(use-modules (guix config))(display %storedir)'`"
localstatedir="`guile -c '(use-modules (guix config))(display %localstatedir)'`"
GUIX_DAEMON_SOCKET="$localstatedir/guix/daemon-socket/socket"
export NIX_STORE_DIR GUIX_DAEMON_SOCKET
if ! guile -c '(use-modules (guix)) (exit (false-if-exception (open-connection)))'
then
exit 77
fi
# Build a tarball with '--localstatedir'
the_pack="`guix pack -C none --localstatedir --profile-name=current-guix \
guile-bootstrap`"
test_directory="`mktemp -d`"
trap 'chmod -Rf +w "$test_directory"; rm -rf "$test_directory"' EXIT
cd "$test_directory"
tar -xf "$the_pack"
profile="`find -name current-guix`"
test "`readlink $profile`" = "current-guix-1-link"
test -s "`dirname $profile`/../../../db/db.sqlite"
test -x ".`guix build guile-bootstrap`/bin/guile"
cd -
# Make sure the store database is not completely bogus.
guile -c "(use-modules (sqlite3) (guix config) (ice-9 match))
(define db
(sqlite-open (string-append \"$test_directory\"
%localstatedir
\"/guix/db/db.sqlite\")
SQLITE_OPEN_READONLY))
(define stmt
(sqlite-prepare db \"SELECT * FROM ValidPaths;\"))
(match (sqlite-fold cons '() stmt)
((#(ids paths hashes times derivers sizes) ...)
(exit (member \"`guix build guile-bootstrap`\" paths))))"