summaryrefslogtreecommitdiff
path: root/gnu
diff options
context:
space:
mode:
Diffstat (limited to 'gnu')
-rw-r--r--gnu/local.mk1
-rw-r--r--gnu/packages/glib.scm14
-rw-r--r--gnu/packages/package-management.scm16
-rw-r--r--gnu/packages/patches/glib-appinfo-watch.patch92
-rw-r--r--gnu/packages/python-web.scm33
-rw-r--r--gnu/services/base.scm21
6 files changed, 156 insertions, 21 deletions
diff --git a/gnu/local.mk b/gnu/local.mk
index d4d10bc32b..217c05eab6 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -1054,6 +1054,7 @@ 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/glib-appinfo-watch.patch \
%D%/packages/patches/glib-tests-timer.patch \
%D%/packages/patches/glibc-CVE-2018-11236.patch \
%D%/packages/patches/glibc-CVE-2018-11237.patch \
diff --git a/gnu/packages/glib.scm b/gnu/packages/glib.scm
index 901222476a..43523e516d 100644
--- a/gnu/packages/glib.scm
+++ b/gnu/packages/glib.scm
@@ -181,6 +181,7 @@ shared NFS home directories.")
(package
(name "glib")
(version "2.62.6")
+ (replacement glib-with-gio-patch)
(source (origin
(method url-fetch)
(uri (string-append "mirror://gnome/sources/"
@@ -387,11 +388,20 @@ dynamic loading, and an object system.")
(home-page "https://developer.gnome.org/glib/")
(license license:lgpl2.1+)))
+(define glib-with-gio-patch
+ ;; GLib with a fix for <https://bugs.gnu.org/35594>.
+ ;; TODO: Fold into 'glib' above in the next rebuild cycle.
+ (package
+ (inherit glib)
+ (source (origin
+ (inherit (package-source glib))
+ (patches (cons (search-patch "glib-appinfo-watch.patch")
+ (origin-patches (package-source glib))))))))
+
(define-public glib-with-documentation
;; glib's doc must be built in a separate package since it requires gtk-doc,
;; which in turn depends on glib.
- (package
- (inherit glib)
+ (package/inherit glib
(properties (alist-delete 'hidden? (package-properties glib)))
(outputs (cons "doc" (package-outputs glib))) ; 20 MiB of GTK-Doc reference
(native-inputs
diff --git a/gnu/packages/package-management.scm b/gnu/packages/package-management.scm
index 4a7a15c378..6075df6afa 100644
--- a/gnu/packages/package-management.scm
+++ b/gnu/packages/package-management.scm
@@ -130,9 +130,9 @@
;; Latest version of Guix, which may or may not correspond to a release.
;; Note: the 'update-guix-package.scm' script expects this definition to
;; start precisely like this.
- (let ((version "1.1.0")
- (commit "5e7cf66fb35780f930ad0bc5fe21ac330df4411d")
- (revision 32))
+ (let ((version "1.2.0rc1")
+ (commit "3ba6ffd0dd092ae879d014e4971989f231eaa56d")
+ (revision 1))
(package
(name "guix")
@@ -148,7 +148,7 @@
(commit commit)))
(sha256
(base32
- "15clfjp845gvl0p6qw0b1gdibqfq20zwzr6dbxvq8l9fgzj1kb6b"))
+ "1wa67gdipmzqr400hp0cw5ih0rlfvj345h65rqbk9s4g3bkg38hm"))
(file-name (string-append "guix-" version "-checkout"))))
(build-system gnu-build-system)
(arguments
@@ -336,7 +336,13 @@ $(prefix)/etc/init.d\n")))
(let ((bash (assoc-ref inputs "bash")))
(substitute* (string-append out "/bin/guix")
(("^#!.*/bash") (string-append "#! " bash "/bin/bash")))))
- #t))))))
+ #t)))
+
+ ;; The 'guix' executable has 'OUT/libexec/guix/guile' has
+ ;; its shebang; that should remain unchanged, thus remove
+ ;; the 'patch-shebangs' phase, which would otherwise
+ ;; change it to 'GUILE/bin/guile'.
+ (delete 'patch-shebangs))))
(native-inputs `(("pkg-config" ,pkg-config)
;; Guile libraries are needed here for
diff --git a/gnu/packages/patches/glib-appinfo-watch.patch b/gnu/packages/patches/glib-appinfo-watch.patch
new file mode 100644
index 0000000000..638a5e0949
--- /dev/null
+++ b/gnu/packages/patches/glib-appinfo-watch.patch
@@ -0,0 +1,92 @@
+This patch lets GLib's GDesktopAppInfo API watch and notice changes
+to the Guix user and system profiles. That way, the list of available
+applications shown by the desktop environment is immediately updated
+when the user runs "guix install", "guix remove", or "guix system
+reconfigure" (see <https://issues.guix.gnu.org/35594>).
+
+It does so by monitoring /var/guix/profiles (for changes to the system
+profile) and /var/guix/profiles/per-user/USER (for changes to the user
+profile) and crawling their share/applications sub-directory when
+changes happen.
+
+diff --git a/gio/gdesktopappinfo.c b/gio/gdesktopappinfo.c
+index f1e2fdd..095c110 100644
+--- a/gio/gdesktopappinfo.c
++++ b/gio/gdesktopappinfo.c
+@@ -148,6 +148,7 @@ typedef struct
+ gchar *alternatively_watching;
+ gboolean is_config;
+ gboolean is_setup;
++ gchar *guix_profile_watch_dir;
+ GFileMonitor *monitor;
+ GHashTable *app_names;
+ GHashTable *mime_tweaks;
+@@ -180,6 +181,7 @@ desktop_file_dir_unref (DesktopFileDir *dir)
+ {
+ desktop_file_dir_reset (dir);
+ g_free (dir->path);
++ g_free (dir->guix_profile_watch_dir);
+ g_free (dir);
+ }
+ }
+@@ -204,6 +206,13 @@ desktop_file_dir_get_alternative_dir (DesktopFileDir *dir)
+ {
+ gchar *parent;
+
++ /* If DIR is a profile, watch the specified directory--e.g.,
++ * /var/guix/profiles/per-user/$USER/ for the user profile. Do not watch
++ * ~/.guix-profile or /run/current-system/profile because GFileMonitor does
++ * not pass IN_DONT_FOLLOW and thus cannot notice any change. */
++ if (dir->guix_profile_watch_dir != NULL)
++ return g_strdup (dir->guix_profile_watch_dir);
++
+ /* If the directory itself exists then we need no alternative. */
+ if (g_access (dir->path, R_OK | X_OK) == 0)
+ return NULL;
+@@ -249,11 +258,11 @@ desktop_file_dir_changed (GFileMonitor *monitor,
+ *
+ * If this is a notification for a parent directory (because the
+ * desktop directory didn't exist) then we shouldn't fire the signal
+- * unless something actually changed.
++ * unless something actually changed or it's in /var/guix/profiles.
+ */
+ g_mutex_lock (&desktop_file_dir_lock);
+
+- if (dir->alternatively_watching)
++ if (dir->alternatively_watching && dir->guix_profile_watch_dir == NULL)
+ {
+ gchar *alternative_dir;
+
+@@ -1555,6 +1564,32 @@ desktop_file_dirs_lock (void)
+ for (i = 0; dirs[i]; i++)
+ g_ptr_array_add (desktop_file_dirs, desktop_file_dir_new (dirs[i]));
+
++ {
++ /* Monitor the system and user profile under /var/guix/profiles and
++ * treat modifications to them as if they were modifications to their
++ * /share sub-directory. */
++ const gchar *user;
++ DesktopFileDir *system_profile_dir, *user_profile_dir;
++
++ system_profile_dir =
++ desktop_file_dir_new ("/var/guix/profiles/system/profile/share");
++ system_profile_dir->guix_profile_watch_dir = g_strdup ("/var/guix/profiles");
++ g_ptr_array_add (desktop_file_dirs, desktop_file_dir_ref (system_profile_dir));
++
++ user = g_get_user_name ();
++ if (user != NULL)
++ {
++ gchar *profile_dir, *user_data_dir;
++
++ profile_dir = g_build_filename ("/var/guix/profiles/per-user", user, NULL);
++ user_data_dir = g_build_filename (profile_dir, "guix-profile", "share", NULL);
++ user_profile_dir = desktop_file_dir_new (user_data_dir);
++ user_profile_dir->guix_profile_watch_dir = profile_dir;
++ g_ptr_array_add (desktop_file_dirs, desktop_file_dir_ref (user_profile_dir));
++ g_free (user_data_dir);
++ }
++ }
++
+ /* The list of directories will never change after this, unless
+ * g_get_user_config_dir() changes due to %G_TEST_OPTION_ISOLATE_DIRS. */
+ desktop_file_dirs_config_dir = user_config_dir;
diff --git a/gnu/packages/python-web.scm b/gnu/packages/python-web.scm
index 6e1720376f..504d9a112a 100644
--- a/gnu/packages/python-web.scm
+++ b/gnu/packages/python-web.scm
@@ -26,7 +26,7 @@
;;; Copyright © 2018 Tomáš Čech <sleep_walker@gnu.org>
;;; Copyright © 2018, 2019 Nicolas Goaziou <mail@nicolasgoaziou.fr>
;;; Copyright © 2018 Mathieu Othacehe <m.othacehe@gmail.com>
-;;; Copyright © 2018 Maxim Cournoyer <maxim.cournoyer@gmail.com>
+;;; Copyright © 2018, 2020 Maxim Cournoyer <maxim.cournoyer@gmail.com>
;;; Copyright © 2019 Vagrant Cascadian <vagrant@debian.org>
;;; Copyright © 2019 Brendan Tildesley <mail@brendan.scot>
;;; Copyright © 2019 Pierre Langlois <pierre.langlois@gmx.com>
@@ -2893,21 +2893,30 @@ pretty printer and a tree visitor.")
(name "python-flask-basicauth")
(version "0.2.0")
(source
- (origin
- (method url-fetch)
- (uri (pypi-uri "Flask-BasicAuth" version))
- (sha256
- (base32
- "1zq1spkjr4sjdnalpp8wl242kdqyk6fhbnhr8hi4r4f0km4bspnz"))))
+ (origin
+ (method url-fetch)
+ (uri (pypi-uri "Flask-BasicAuth" version))
+ (sha256
+ (base32
+ "1zq1spkjr4sjdnalpp8wl242kdqyk6fhbnhr8hi4r4f0km4bspnz"))))
(build-system python-build-system)
+ (arguments
+ `(#:phases (modify-phases %standard-phases
+ (add-after 'unpack 'fix-imports
+ (lambda _
+ (substitute* '("docs/index.rst"
+ "docs/conf.py"
+ "flask_basicauth.py"
+ "test_basicauth.py")
+ (("flask\\.ext\\.basicauth")
+ "flask_basicauth"))
+ #t)))))
(propagated-inputs
`(("python-flask" ,python-flask)))
- (home-page
- "https://github.com/jpvanhal/flask-basicauth")
- (synopsis
- "HTTP basic access authentication for Flask")
+ (home-page "https://github.com/jpvanhal/flask-basicauth")
+ (synopsis "HTTP basic access authentication for Flask")
(description
- "This package provides HTTP basic access authentication for Flask.")
+ "This package provides HTTP basic access authentication for Flask.")
(license license:bsd-3)))
(define-public python-flask-htpasswd
diff --git a/gnu/services/base.scm b/gnu/services/base.scm
index 416bc02a96..e6341e3cd9 100644
--- a/gnu/services/base.scm
+++ b/gnu/services/base.scm
@@ -106,6 +106,12 @@
agetty-service-type
mingetty-configuration
+ mingetty-configuration-tty
+ mingetty-configuration-auto-login
+ mingetty-configuration-login-program
+ mingetty-configuration-login-pause?
+ mingetty-configuration-clear-on-logout?
+ mingetty-configuration-mingetty
mingetty-configuration?
mingetty-service
mingetty-service-type
@@ -285,8 +291,19 @@ This service must be the root of the service dependency graph so that its
(define (file-system->shepherd-service-name file-system)
"Return the symbol that denotes the service mounting and unmounting
FILE-SYSTEM."
- (symbol-append 'file-system-
- (string->symbol (file-system-mount-point file-system))))
+ (define valid-characters
+ ;; Valid store characters; see 'checkStoreName' in the daemon.
+ (string->char-set
+ "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz+-._?="))
+
+ (define mount-point
+ (string-map (lambda (chr)
+ (if (char-set-contains? valid-characters chr)
+ chr
+ #\-))
+ (file-system-mount-point file-system)))
+
+ (symbol-append 'file-system- (string->symbol mount-point)))
(define (mapped-device->shepherd-service-name md)
"Return the symbol that denotes the shepherd service of MD, a <mapped-device>."