GNU bug report logs -
#55941
[PATCH core-updates 0/3] Move switch-symlinks to (guix build utils)
Previous Next
Reported by: Arun Isaac <arunisaac <at> systemreboot.net>
Date: Mon, 13 Jun 2022 12:14:02 UTC
Severity: normal
Tags: patch
Done: Arun Isaac <arunisaac <at> systemreboot.net>
Bug is archived. No further changes may be made.
To add a comment to this bug, you must first unarchive it, by sending
a message to control AT debbugs.gnu.org, with unarchive 55941 in the body.
You can then email your comments to 55941 AT debbugs.gnu.org in the normal way.
Toggle the display of automated, internal messages from the tracker.
Report forwarded
to
guix-patches <at> gnu.org
:
bug#55941
; Package
guix-patches
.
(Mon, 13 Jun 2022 12:14:02 GMT)
Full text and
rfc822 format available.
Acknowledgement sent
to
Arun Isaac <arunisaac <at> systemreboot.net>
:
New bug report received and forwarded. Copy sent to
guix-patches <at> gnu.org
.
(Mon, 13 Jun 2022 12:14:02 GMT)
Full text and
rfc822 format available.
Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):
Hi,
As discussed on guix-devel, here are the patches moving switch-symlinks to
(guix build utils). I ran `make check'. I don't think this patchset introduces
any new failures, that is, other than those that are already failing on
core-updates.
Regards,
Arun
Arun Isaac (3):
utils: Move switch-symlinks to (guix build utils).
utils: Make switch-symlinks robust against interruption.
services: pcscd: Use switch-symlinks from (guix build utils).
gnu/services/security-token.scm | 9 ++-------
guix/build/utils.scm | 24 ++++++++++++++++++++++--
guix/profiles.scm | 3 ++-
guix/scripts/home.scm | 3 ++-
guix/scripts/package.scm | 3 ++-
guix/scripts/system/reconfigure.scm | 4 +++-
guix/utils.scm | 8 --------
7 files changed, 33 insertions(+), 21 deletions(-)
base-commit: 0d09e2e29d1ef0afabebd843f51d41d6cfe340ee
--
2.36.1
Information forwarded
to
guix-patches <at> gnu.org
:
bug#55941
; Package
guix-patches
.
(Mon, 13 Jun 2022 12:16:02 GMT)
Full text and
rfc822 format available.
Message #8 received at 55941 <at> debbugs.gnu.org (full text, mbox):
* guix/utils.scm (switch-symlinks): Move to ...
* guix/build/utils.scm (switch-symlinks): ... here.
* guix/profiles.scm, guix/scripts/home.scm, guix/scripts/package.scm: Import
switch-symlinks from (guix build utils).
* guix/scripts/system/reconfigure.scm (switch-system-program): Import (guix
build utils) in G-expression.
---
guix/build/utils.scm | 8 ++++++++
guix/profiles.scm | 3 ++-
guix/scripts/home.scm | 3 ++-
guix/scripts/package.scm | 3 ++-
guix/scripts/system/reconfigure.scm | 4 +++-
guix/utils.scm | 8 --------
6 files changed, 17 insertions(+), 12 deletions(-)
diff --git a/guix/build/utils.scm b/guix/build/utils.scm
index b822caf619..ce7bdb2024 100644
--- a/guix/build/utils.scm
+++ b/guix/build/utils.scm
@@ -60,6 +60,7 @@ (define-module (guix build utils)
directory-exists?
executable-file?
symbolic-link?
+ switch-symlinks
call-with-temporary-output-file
call-with-ascii-input-file
file-header-match
@@ -240,6 +241,13 @@ (define (symbolic-link? file)
"Return #t if FILE is a symbolic link (aka. \"symlink\".)"
(eq? (stat:type (lstat file)) 'symlink))
+(define (switch-symlinks link target)
+ "Atomically switch LINK, a symbolic link, to point to TARGET. Works
+both when LINK already exists and when it does not."
+ (let ((pivot (string-append link ".new")))
+ (symlink target pivot)
+ (rename-file pivot link)))
+
(define (call-with-temporary-output-file proc)
"Call PROC with a name of a temporary file and open output port to that
file; close the file and delete it when leaving the dynamic extent of this
diff --git a/guix/profiles.scm b/guix/profiles.scm
index bf50c00a1e..d3ff8379ad 100644
--- a/guix/profiles.scm
+++ b/guix/profiles.scm
@@ -12,6 +12,7 @@
;;; Copyright © 2019 Mathieu Othacehe <m.othacehe <at> gmail.com>
;;; Copyright © 2020 Danny Milosavljevic <dannym <at> scratchpost.org>
;;; Copyright © 2014 David Thompson <davet <at> gnu.org>
+;;; Copyright © 2022 Arun Isaac <arunisaac <at> systemreboot.net>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -32,7 +33,7 @@ (define-module (guix profiles)
#:use-module ((guix config) #:select (%state-directory))
#:use-module ((guix utils) #:hide (package-name->name+version))
#:use-module ((guix build utils)
- #:select (package-name->name+version mkdir-p))
+ #:select (package-name->name+version mkdir-p switch-symlinks))
#:use-module ((guix diagnostics) #:select (&fix-hint formatted-message))
#:use-module (guix i18n)
#:use-module (guix records)
diff --git a/guix/scripts/home.scm b/guix/scripts/home.scm
index 0f5c3388a1..8ba7693a83 100644
--- a/guix/scripts/home.scm
+++ b/guix/scripts/home.scm
@@ -4,6 +4,7 @@
;;; Copyright © 2021 Pierre Langlois <pierre.langlois <at> gmx.com>
;;; Copyright © 2021 Oleg Pykhalov <go.wigust <at> gmail.com>
;;; Copyright © 2022 Ludovic Courtès <ludo <at> gnu.org>
+;;; Copyright © 2022 Arun Isaac <arunisaac <at> systemreboot.net>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -63,7 +64,7 @@ (define-module (guix scripts home)
#:autoload (guix scripts home edit) (guix-home-edit)
#:autoload (guix scripts home import) (import-manifest)
#:use-module ((guix status) #:select (with-status-verbosity))
- #:use-module ((guix build utils) #:select (mkdir-p))
+ #:use-module ((guix build utils) #:select (mkdir-p switch-symlinks))
#:use-module (guix gexp)
#:use-module (guix monads)
#:use-module (srfi srfi-1)
diff --git a/guix/scripts/package.scm b/guix/scripts/package.scm
index 99a6cfaa29..14a8e1f5e8 100644
--- a/guix/scripts/package.scm
+++ b/guix/scripts/package.scm
@@ -11,6 +11,7 @@
;;; Copyright © 2020 Simon Tournier <zimon.toutoune <at> gmail.com>
;;; Copyright © 2018 Steve Sprang <scs <at> stevesprang.com>
;;; Copyright © 2022 Josselin Poiret <dev <at> jpoiret.xyz>
+;;; Copyright © 2022 Arun Isaac <arunisaac <at> systemreboot.net>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -49,7 +50,7 @@ (define-module (guix scripts package)
#:autoload (guix channels) (channel-name channel-commit channel->code)
#:autoload (guix store roots) (gc-roots user-owned?)
#:use-module ((guix build utils)
- #:select (directory-exists? mkdir-p))
+ #:select (directory-exists? mkdir-p switch-symlinks))
#:use-module (ice-9 format)
#:use-module (ice-9 match)
#:autoload (ice-9 pretty-print) (pretty-print)
diff --git a/guix/scripts/system/reconfigure.scm b/guix/scripts/system/reconfigure.scm
index 9ca66687ee..a173e011b4 100644
--- a/guix/scripts/system/reconfigure.scm
+++ b/guix/scripts/system/reconfigure.scm
@@ -6,6 +6,7 @@
;;; Copyright © 2018 Ricardo Wurmus <rekado <at> elephly.net>
;;; Copyright © 2019 Christopher Baines <mail <at> cbaines.net>
;;; Copyright © 2019 Jakob L. Kreuze <zerodaysfordays <at> sdf.org>
+;;; Copyright © 2022 Arun Isaac <arunisaac <at> systemreboot.net>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -94,7 +95,8 @@ (define* (switch-system-program os #:optional profile)
#:select? not-config?)
((guix config) => ,(make-config.scm)))
#~(begin
- (use-modules (guix config)
+ (use-modules (guix build utils)
+ (guix config)
(guix profiles)
(guix utils))
diff --git a/guix/utils.scm b/guix/utils.scm
index 37b2e29800..ed791cce1c 100644
--- a/guix/utils.scm
+++ b/guix/utils.scm
@@ -120,7 +120,6 @@ (define-module (guix utils)
file-sans-extension
tarball-sans-extension
compressed-file?
- switch-symlinks
call-with-temporary-directory
with-atomic-file-output
@@ -892,13 +891,6 @@ (define (compressed-file? file)
(->bool (member (file-extension file)
'("gz" "bz2" "xz" "lz" "lzma" "tgz" "tbz2" "zip"))))
-(define (switch-symlinks link target)
- "Atomically switch LINK, a symbolic link, to point to TARGET. Works
-both when LINK already exists and when it does not."
- (let ((pivot (string-append link ".new")))
- (symlink target pivot)
- (rename-file pivot link)))
-
(define* (string-replace-substring str substr replacement
#:optional
(start 0)
base-commit: 0d09e2e29d1ef0afabebd843f51d41d6cfe340ee
--
2.36.1
Information forwarded
to
guix-patches <at> gnu.org
:
bug#55941
; Package
guix-patches
.
(Mon, 13 Jun 2022 12:16:02 GMT)
Full text and
rfc822 format available.
Message #11 received at 55941 <at> debbugs.gnu.org (full text, mbox):
switch-symlinks has been moved to (guix build utils). We need not duplicate it
anymore.
* gnu/services/security-token.scm (pcscd-activation): Use switch-symlinks
from (guix build utils).
---
gnu/services/security-token.scm | 9 ++-------
1 file changed, 2 insertions(+), 7 deletions(-)
diff --git a/gnu/services/security-token.scm b/gnu/services/security-token.scm
index 52afad84a6..2356273398 100644
--- a/gnu/services/security-token.scm
+++ b/gnu/services/security-token.scm
@@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2018 Arun Isaac <arunisaac <at> systemreboot.net>
+;;; Copyright © 2018, 2022 Arun Isaac <arunisaac <at> systemreboot.net>
;;; Copyright © 2020 Tobias Geerinckx-Rice <me <at> tobias.gr>
;;; Copyright © 2021 Brice Waegeneire <brice <at> waegenei.re>
;;;
@@ -74,12 +74,7 @@ (define pcscd-activation
'((guix build utils)))
#~(begin
(use-modules (guix build utils))
- ;; XXX: We can't use (guix utils) because it requires a
- ;; dynamically-linked Guile, hence the duplicate switch-symlinks.
- (define (switch-symlinks link target)
- (let ((pivot (string-append link ".new")))
- (symlink target pivot)
- (rename-file pivot link)))
+
(mkdir-p "/var/lib")
(switch-symlinks "/var/lib/pcsc"
#$(directory-union
--
2.36.1
Information forwarded
to
guix-patches <at> gnu.org
:
bug#55941
; Package
guix-patches
.
(Mon, 13 Jun 2022 12:16:03 GMT)
Full text and
rfc822 format available.
Message #14 received at 55941 <at> debbugs.gnu.org (full text, mbox):
* guix/build/utils.scm (switch-symlinks): Delete pivot link if it already
exists.
Co-authored-by: Maxime Devos <maximedevos <at> telenet.be>
---
guix/build/utils.scm | 18 +++++++++++++++---
1 file changed, 15 insertions(+), 3 deletions(-)
diff --git a/guix/build/utils.scm b/guix/build/utils.scm
index ce7bdb2024..5ea3b98353 100644
--- a/guix/build/utils.scm
+++ b/guix/build/utils.scm
@@ -3,11 +3,11 @@
;;; Copyright © 2013 Andreas Enge <andreas <at> enge.fr>
;;; Copyright © 2013 Nikita Karetnikov <nikita <at> karetnikov.org>
;;; Copyright © 2015, 2018, 2021 Mark H Weaver <mhw <at> netris.org>
-;;; Copyright © 2018 Arun Isaac <arunisaac <at> systemreboot.net>
+;;; Copyright © 2018, 2022 Arun Isaac <arunisaac <at> systemreboot.net>
;;; Copyright © 2018, 2019 Ricardo Wurmus <rekado <at> elephly.net>
;;; Copyright © 2020 Efraim Flashner <efraim <at> flashner.co.il>
;;; Copyright © 2020, 2021 Maxim Cournoyer <maxim.cournoyer <at> gmail.com>
-;;; Copyright © 2021 Maxime Devos <maximedevos <at> telenet.be>
+;;; Copyright © 2021, 2022 Maxime Devos <maximedevos <at> telenet.be>
;;; Copyright © 2021 Brendan Tildesley <mail <at> brendan.scot>
;;;
;;; This file is part of GNU Guix.
@@ -245,7 +245,19 @@ (define (switch-symlinks link target)
"Atomically switch LINK, a symbolic link, to point to TARGET. Works
both when LINK already exists and when it does not."
(let ((pivot (string-append link ".new")))
- (symlink target pivot)
+ ;; Create pivot link, deleting it if it already exists. This can
+ ;; happen if a previous switch-symlinks was interrupted.
+ (let symlink/remove-old ()
+ (catch 'system-error
+ (lambda ()
+ (symlink target pivot))
+ (lambda args
+ (if (= (system-error-errno args) EEXIST)
+ (begin
+ ;; Remove old link and retry.
+ (delete-file pivot)
+ (symlink/remove-old))
+ (apply throw args)))))
(rename-file pivot link)))
(define (call-with-temporary-output-file proc)
--
2.36.1
Information forwarded
to
guix-patches <at> gnu.org
:
bug#55941
; Package
guix-patches
.
(Thu, 23 Jun 2022 20:48:02 GMT)
Full text and
rfc822 format available.
Message #17 received at 55941 <at> debbugs.gnu.org (full text, mbox):
Hi Arun,
Arun Isaac <arunisaac <at> systemreboot.net> skribis:
> utils: Move switch-symlinks to (guix build utils).
> utils: Make switch-symlinks robust against interruption.
> services: pcscd: Use switch-symlinks from (guix build utils).
LGTM, thanks!
Ludo’.
Reply sent
to
Arun Isaac <arunisaac <at> systemreboot.net>
:
You have taken responsibility.
(Fri, 24 Jun 2022 20:31:01 GMT)
Full text and
rfc822 format available.
Notification sent
to
Arun Isaac <arunisaac <at> systemreboot.net>
:
bug acknowledged by developer.
(Fri, 24 Jun 2022 20:31:02 GMT)
Full text and
rfc822 format available.
Message #22 received at 55941-done <at> debbugs.gnu.org (full text, mbox):
Thanks, pushed to core-updates!
bug archived.
Request was from
Debbugs Internal Request <help-debbugs <at> gnu.org>
to
internal_control <at> debbugs.gnu.org
.
(Sat, 23 Jul 2022 11:24:06 GMT)
Full text and
rfc822 format available.
This bug report was last modified 1 year and 278 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.