bug#48007: [PATCH 2/4] inferior: Keep the store bridge connected.

2022-01-27 Thread Ludovic Courtès
Previously, each 'inferior-eval-with-store' would lead the inferior to
connect to the named socket the parent is listening to.  With this
change, the connection is established once for all and reused
afterwards.

* guix/inferior.scm ()[bridge-file-name]: Remove.
(open-bidirectional-pipe): New procedure.
(inferior-pipe): Use it instead of 'open-pipe*' and return two values.
(port->inferior): Adjust call to 'inferior'.
(open-inferior): Adjust to 'inferior-pipe' changes.
(close-inferior): Remove 'inferior-bridge-file-name' handling.
(open-store-bridge!): Switch back to 'call-with-temporary-directory'.
Define '%bridge-socket' in the inferior, connected to the caller.
(proxy): Change first argument to be an inferior.  Add 'reponse-port'
and call to 'drain-input'.  Pass 'reponse-port' to 'select' and use it
as a loop termination clause.
(inferior-eval-with-store): Remove 'socket' and 'connect' calls from the
inferior code, and use '%bridge-socket' instead.
---
 guix/inferior.scm | 167 +-
 1 file changed, 104 insertions(+), 63 deletions(-)

diff --git a/guix/inferior.scm b/guix/inferior.scm
index a997c3ead4..1c19527b8f 100644
--- a/guix/inferior.scm
+++ b/guix/inferior.scm
@@ -25,6 +25,7 @@ (define-module (guix inferior)
 #:select (source-properties->location))
   #:use-module ((guix utils)
 #:select (%current-system
+  call-with-temporary-directory
   version>? version-prefix?
   cache-directory))
   #:use-module ((guix store)
@@ -35,8 +36,6 @@ (define-module (guix inferior)
   &store-protocol-error))
   #:use-module ((guix derivations)
 #:select (read-derivation-from-file))
-  #:use-module ((guix build syscalls)
-#:select (mkdtemp!))
   #:use-module (guix gexp)
   #:use-module (guix search-paths)
   #:use-module (guix profiles)
@@ -56,7 +55,6 @@ (define-module (guix inferior)
   #:use-module (srfi srfi-71)
   #:autoload   (ice-9 ftw) (scandir)
   #:use-module (ice-9 match)
-  #:use-module (ice-9 popen)
   #:use-module (ice-9 vlist)
   #:use-module (ice-9 binary-ports)
   #:use-module ((rnrs bytevectors) #:select (string->utf8))
@@ -114,7 +112,7 @@ (define-module (guix inferior)
 ;; Inferior Guix process.
 (define-record-type 
   (inferior pid socket close version packages table
-bridge-file-name bridge-socket)
+bridge-socket)
   inferior?
   (pid  inferior-pid)
   (socket   inferior-socket)
@@ -124,8 +122,6 @@ (define-record-type 
   (tableinferior-package-table)  ;promise of vhash
 
   ;; Bridging with a store.
-  (bridge-file-name inferior-bridge-file-name ;#f | string
-set-inferior-bridge-file-name!)
   (bridge-socketinferior-bridge-socket;#f | port
 set-inferior-bridge-socket!))
 
@@ -138,37 +134,69 @@ (define (write-inferior inferior port)
 
 (set-record-type-printer!  write-inferior)
 
+(define (open-bidirectional-pipe command . args)
+  "Open a bidirectional pipe to COMMAND invoked with ARGS and return it, as a
+regular file port (socket).
+
+This is equivalent to (open-pipe* OPEN_BOTH ...) except that the result is a
+regular file port that can be passed to 'select' ('open-pipe*' returns a
+custom binary port)."
+  (match (socketpair AF_UNIX SOCK_STREAM 0)
+((parent . child)
+ (match (primitive-fork)
+   (0
+(dynamic-wind
+  (lambda ()
+#t)
+  (lambda ()
+(close-port parent)
+(close-fdes 0)
+(close-fdes 1)
+(dup2 (fileno child) 0)
+(dup2 (fileno child) 1)
+;; Mimic 'open-pipe*'.
+(unless (file-port? (current-error-port))
+  (close-fdes 2)
+  (dup2 (open-fdes "/dev/null" O_WRONLY) 2))
+(apply execlp command command args))
+  (lambda ()
+(primitive-_exit 127
+   (pid
+(close-port child)
+(values parent pid))
+
 (define* (inferior-pipe directory command error-port)
-  "Return an input/output pipe on the Guix instance in DIRECTORY.  This runs
-'DIRECTORY/COMMAND repl' if it exists, or falls back to some other method if
-it's an old Guix."
-  (let ((pipe (with-error-to-port error-port
-(lambda ()
-  (open-pipe* OPEN_BOTH
-  (string-append directory "/" command)
-  "repl" "-t" "machine")
+  "Return two values: an input/output pipe on the Guix instance in DIRECTORY
+and its PID.  This runs 'DIRECTORY/COMMAND repl' if it exists, or falls back
+to some other method if it's an old Guix."
+  (let ((pipe pid (with-error-to-port error-port
+(lambda ()
+  (open-bidirectional-pipe
+   (string-append directory "/" command)
+   "repl" "-t" "

bug#48007: [PATCH 3/4] inferior: Inferior caches store connections.

2022-01-27 Thread Ludovic Courtès
Fixes .
Reported by Ricardo Wurmus .

Previously, at each 'inferior-eval-with-store' call, the inferior would
create a new  object with empty caches.  Consequently,
when repeatedly calling 'inferior-package-derivation', we would not
benefit from any caching and instead recompute all the derivations for
every package.  This patch fixes it by caching 
objects in the inferior.

* guix/inferior.scm (port->inferior): Define '%store-table' in the inferior.
(inferior-eval-with-store): Cache store connections in %STORE-TABLE.
Remove now unneeded 'dynamic-wind' with 'close-port' call.
---
 guix/inferior.scm | 54 +--
 1 file changed, 33 insertions(+), 21 deletions(-)

diff --git a/guix/inferior.scm b/guix/inferior.scm
index 1c19527b8f..64dd1ce9b6 100644
--- a/guix/inferior.scm
+++ b/guix/inferior.scm
@@ -225,6 +225,8 @@ (define* (port->inferior pipe #:optional (close close-port))
(inferior-eval '(use-modules (srfi srfi-34)) result)
(inferior-eval '(define %package-table (make-hash-table))
   result)
+   (inferior-eval '(define %store-table (make-hash-table))
+  result)
result))
 (_
  #f)))
@@ -617,7 +619,12 @@ (define (inferior-eval-with-store inferior store code)
 thus be the code of a one-argument procedure that accepts a store."
   (let* ((major(store-connection-major-version store))
  (minor(store-connection-minor-version store))
- (proto(logior major minor)))
+ (proto(logior major minor))
+
+ ;; The address of STORE itself is not a good identifier because it
+ ;; keeps changing through the use of "functional caches".  The
+ ;; address of its socket port makes more sense.
+ (store-id (object-address (store-connection-socket store
 (ensure-store-bridge! inferior)
 (send-inferior-request
  `(let ((proc   ,code)
@@ -628,26 +635,31 @@ (define (inferior-eval-with-store inferior store code)
store-protocol-error-message
nix-protocol-error-message)))
 
-;; 'port->connection' appeared in June 2018 and we can hardly
-;; emulate it on older versions.  Thus fall back to
-;; 'open-connection', at the risk of talking to the wrong daemon or
-;; having our build result reclaimed (XXX).
-(let ((store (if (defined? 'port->connection)
- (port->connection %bridge-socket #:version ,proto)
- (open-connection
-  (dynamic-wind
-(const #t)
-(lambda ()
-  ;; Serialize '&store-protocol-error' conditions.  The
-  ;; exception serialization mechanism that
-  ;; 'read-repl-response' expects is unsuitable for SRFI-35
-  ;; error conditions, hence this special case.
-  (guard (c ((error? c)
- `(store-protocol-error ,(error-message c
-`(result ,(proc store
-(lambda ()
-  (unless (defined? 'port->connection)
-(close-port store))
+;; Cache connections to STORE-ID.  This ensures that the caches within
+;;  (in particular the object cache) are reused
+;; across calls to 'inferior-eval-with-store', which makes a
+;; significant different when it is called repeatedly.
+(let ((store (or (hashv-ref %store-table ,store-id)
+
+ ;; 'port->connection' appeared in June 2018 and we
+ ;; can hardly emulate it on older versions.  Thus
+ ;; fall back to 'open-connection', at the risk of
+ ;; talking to the wrong daemon or having our build
+ ;; result reclaimed (XXX).
+ (let ((store (if (defined? 'port->connection)
+  (port->connection %bridge-socket
+#:version ,proto)
+  (open-connection
+   (hashv-set! %store-table ,store-id store)
+   store
+
+  ;; Serialize '&store-protocol-error' conditions.  The
+  ;; exception serialization mechanism that
+  ;; 'read-repl-response' expects is unsuitable for SRFI-35
+  ;; error conditions, hence this special case.
+  (guard (c ((error? c)
+ `(store-protocol-error ,(error-message c
+`(result ,(proc store)
  inferior)
 (proxy inferior store)
 
-- 
2.34.0






bug#48007: computing derivations through inferior takes twice as long

2022-01-27 Thread Ludovic Courtès
Hi,

Ricardo Wurmus  skribis:

> I tried it in the GWL with the big RNAseq workflow I adopted from PiGx
> and the step to generate job scripts (which reference inferior packages)
> became considerably faster.  There is still potential for improvement,
> but this change is the difference between not too bad (15 seconds) and
> unusable (> 5 minutes).

Good, that’s a step in the right direction.

I’ve sent in this issue a cleaned up patch series that achieves the same
result, plus some micro-optimizations.  It’d be great if you could
confirm it still works for you.

Thanks,
Ludo’.





bug#48007: [PATCH 1/4] inferior: Create the store proxy listening socket only once.

2022-01-27 Thread Ludovic Courtès
Previously, each 'inferior-eval-with-store' call would have the calling
process create a temporary directory with a listening socket in there.
Now that listening socket is created once and reused in subsequent
calls.

* guix/inferior.scm ()[bridge-file-name, bridge-socket]: New
fields.
(port->inferior): Adjust accordingly.
(close-inferior): Close 'inferior-bridge-socket' and delete
'inferior-bridge-file-name' if set.
(open-store-bridge!, ensure-store-bridge!): New procedures.
(inferior-eval-with-store): Use them.
---
 guix/inferior.scm | 154 --
 1 file changed, 93 insertions(+), 61 deletions(-)

diff --git a/guix/inferior.scm b/guix/inferior.scm
index 572114f626..a997c3ead4 100644
--- a/guix/inferior.scm
+++ b/guix/inferior.scm
@@ -25,7 +25,6 @@ (define-module (guix inferior)
 #:select (source-properties->location))
   #:use-module ((guix utils)
 #:select (%current-system
-  call-with-temporary-directory
   version>? version-prefix?
   cache-directory))
   #:use-module ((guix store)
@@ -36,6 +35,8 @@ (define-module (guix inferior)
   &store-protocol-error))
   #:use-module ((guix derivations)
 #:select (read-derivation-from-file))
+  #:use-module ((guix build syscalls)
+#:select (mkdtemp!))
   #:use-module (guix gexp)
   #:use-module (guix search-paths)
   #:use-module (guix profiles)
@@ -112,14 +113,21 @@ (define-module (guix inferior)
 
 ;; Inferior Guix process.
 (define-record-type 
-  (inferior pid socket close version packages table)
+  (inferior pid socket close version packages table
+bridge-file-name bridge-socket)
   inferior?
   (pid  inferior-pid)
   (socket   inferior-socket)
   (closeinferior-close-socket)   ;procedure
   (version  inferior-version);REPL protocol version
   (packages inferior-package-promise);promise of inferior packages
-  (tableinferior-package-table)) ;promise of vhash
+  (tableinferior-package-table)  ;promise of vhash
+
+  ;; Bridging with a store.
+  (bridge-file-name inferior-bridge-file-name ;#f | string
+set-inferior-bridge-file-name!)
+  (bridge-socketinferior-bridge-socket;#f | port
+set-inferior-bridge-socket!))
 
 (define (write-inferior inferior port)
   (match inferior
@@ -172,7 +180,8 @@ (define* (port->inferior pipe #:optional (close close-port))
 (('repl-version 0 rest ...)
  (letrec ((result (inferior 'pipe pipe close (cons 0 rest)
 (delay (%inferior-packages result))
-(delay (%inferior-package-table result)
+(delay (%inferior-package-table result))
+#f #f)))
 
;; For protocol (0 1) and later, send the protocol version we support.
(match rest
@@ -205,7 +214,13 @@ (define pipe
 (define (close-inferior inferior)
   "Close INFERIOR."
   (let ((close (inferior-close-socket inferior)))
-(close (inferior-socket inferior
+(close (inferior-socket inferior))
+
+;; Close and delete the store bridge, if any.
+(when (inferior-bridge-socket inferior)
+  (close-port (inferior-bridge-socket inferior))
+  (delete-file (inferior-bridge-file-name inferior))
+  (rmdir (dirname (inferior-bridge-file-name inferior))
 
 ;; Non-self-quoting object of the inferior.
 (define-record-type 
@@ -524,67 +539,84 @@ (define (proxy client backend)
;adapted from (guix ssh)
(unless (port-closed? client)
  (loop))
 
+(define (open-store-bridge! inferior)
+  "Open a \"store bridge\" for INFERIOR--a named socket in /tmp that will be
+used to proxy store RPCs from the inferior to the store of the calling
+process."
+  ;; Create a named socket in /tmp to let INFERIOR connect to it and use it as
+  ;; its store.  This ensures the inferior uses the same store, with the same
+  ;; options, the same per-session GC roots, etc.
+  ;; FIXME: This strategy doesn't work for remote inferiors (SSH).
+  (define directory
+(mkdtemp! (string-append (or (getenv "TMPDIR") "/tmp")
+ "/guix-inferior.XX")))
+
+  (chmod directory #o700)
+  (let ((name   (string-append directory "/inferior"))
+(socket (socket AF_UNIX SOCK_STREAM 0)))
+(bind socket AF_UNIX name)
+(listen socket 2)
+(set-inferior-bridge-file-name! inferior name)
+(set-inferior-bridge-socket! inferior socket)))
+
+(define (ensure-store-bridge! inferior)
+  "Ensure INFERIOR has a connected bridge."
+  (or (inferior-bridge-socket inferior)
+  (begin
+(open-store-bridge! inferior)
+(inferior-bridge-socket inferior
+
 (define (inferior-eval-with-store inferior store code)
   "Evaluate CODE in INFER

bug#48007: [PATCH 4/4] inferior: Move initialization bits away from 'inferior-eval-with-store'.

2022-01-27 Thread Ludovic Courtès
* guix/inferior.scm (port->inferior): In the inferior, define
'cached-store-connection', 'store-protocol-error?', and
'store-protocol-error-message'.
(inferior-eval-with-store): Use them.
---
 guix/inferior.scm | 76 ++-
 1 file changed, 42 insertions(+), 34 deletions(-)

diff --git a/guix/inferior.scm b/guix/inferior.scm
index 64dd1ce9b6..fc253dcc4f 100644
--- a/guix/inferior.scm
+++ b/guix/inferior.scm
@@ -225,7 +225,39 @@ (define* (port->inferior pipe #:optional (close 
close-port))
(inferior-eval '(use-modules (srfi srfi-34)) result)
(inferior-eval '(define %package-table (make-hash-table))
   result)
-   (inferior-eval '(define %store-table (make-hash-table))
+   (inferior-eval '(begin
+ (define %store-table (make-hash-table))
+ (define (cached-store-connection store-id version)
+   ;; Cache connections to store ID.  This ensures that
+   ;; the caches within  (in
+   ;; particular the object cache) are reused across
+   ;; calls to 'inferior-eval-with-store', which makes 
a
+   ;; significant different when it is called
+   ;; repeatedly.
+   (or (hashv-ref %store-table store-id)
+
+   ;; 'port->connection' appeared in June 2018 and
+   ;; we can hardly emulate it on older versions.
+   ;; Thus fall back to 'open-connection', at the
+   ;; risk of talking to the wrong daemon or having
+   ;; our build result reclaimed (XXX).
+   (let ((store (if (defined? 'port->connection)
+(port->connection 
%bridge-socket
+  #:version
+  version)
+(open-connection
+ (hashv-set! %store-table store-id store)
+ store
+  result)
+   (inferior-eval '(begin
+ (define store-protocol-error?
+   (if (defined? 'store-protocol-error?)
+   store-protocol-error?
+   nix-protocol-error?))
+ (define store-protocol-error-message
+   (if (defined? 'store-protocol-error-message)
+   store-protocol-error-message
+   nix-protocol-error-message)))
   result)
result))
 (_
@@ -627,39 +659,15 @@ (define (inferior-eval-with-store inferior store code)
  (store-id (object-address (store-connection-socket store
 (ensure-store-bridge! inferior)
 (send-inferior-request
- `(let ((proc   ,code)
-(error? (if (defined? 'store-protocol-error?)
-store-protocol-error?
-nix-protocol-error?))
-(error-message (if (defined? 'store-protocol-error-message)
-   store-protocol-error-message
-   nix-protocol-error-message)))
-
-;; Cache connections to STORE-ID.  This ensures that the caches within
-;;  (in particular the object cache) are reused
-;; across calls to 'inferior-eval-with-store', which makes a
-;; significant different when it is called repeatedly.
-(let ((store (or (hashv-ref %store-table ,store-id)
-
- ;; 'port->connection' appeared in June 2018 and we
- ;; can hardly emulate it on older versions.  Thus
- ;; fall back to 'open-connection', at the risk of
- ;; talking to the wrong daemon or having our build
- ;; result reclaimed (XXX).
- (let ((store (if (defined? 'port->connection)
-  (port->connection %bridge-socket
-#:version ,proto)
-  (open-connection
-   (hashv-set! %store-table ,store-id store)
-   store
-
-  ;; Serialize '&store-protocol-error' conditions.  The
-  ;; exception serialization mechanism that
-  ;; 'read-repl-response' expects is unsuitable for SRFI-35
-  ;; error conditions, hence this special case.
-  (guard (c ((error? c)
- `(store-protocol-error ,(error-message c
-`(result ,(proc store)
+ `(let ((proc  ,co

bug#48007: computing derivations through inferior takes twice as long

2022-01-27 Thread Ricardo Wurmus


Ludovic Courtès  writes:

> Ricardo Wurmus  skribis:
>
>> I tried it in the GWL with the big RNAseq workflow I adopted from PiGx
>> and the step to generate job scripts (which reference inferior packages)
>> became considerably faster.  There is still potential for improvement,
>> but this change is the difference between not too bad (15 seconds) and
>> unusable (> 5 minutes).
>
> Good, that’s a step in the right direction.
>
> I’ve sent in this issue a cleaned up patch series that achieves the same
> result, plus some micro-optimizations.  It’d be great if you could
> confirm it still works for you.

These patches look great to me and they work.
My real-world test case is now down to about 12 seconds.

Thanks!

-- 
Ricardo





bug#53580: /var/run/shepherd/socket is missing on an otherwise functional system

2022-01-27 Thread Attila Lendvai
the systems seems to work fine. Gnome is up, i can log in with my user, and 
everything seems to work, except herd.

i encounter this broken state every once in a while. IRC logs also mention this 
multiple times, but without many insights:

https://logs.guix.gnu.org/guix/search?query=%2Fvar%2Frun%2Fshepherd%2Fsocket

```
# herd status
error: connect: /var/run/shepherd/socket: No such file or directory

# ps afxu | grep shepherd
root 1  0.0  0.3 160788 43684 ?Sl   11:51   0:00 
/gnu/store/cnfsv9ywaacyafkqdqsv2ry8f01yr7a9-guile-3.0.7/bin/guile 
--no-auto-compile 
/gnu/store/vza48khbaq0fdmcsrn27xj5y5yy76z6l-shepherd-0.8.1/bin/shepherd 
--config /gnu/store/q4nd803lxrlkr60s8sx88gvpb6c7lxyd-shepherd.conf

# uptime
12:26:44  up   0:34,  2 users,  load average: 0.00, 0.01, 0.00
```

looking at shepherd's code:

```
(define (call-with-server-socket file-name proc)
  "Call PROC, passing it a listening socket at FILE-NAME and deleting the
socket file at FILE-NAME upon exit of PROC.  Return the values of PROC."
  (let ((sock (open-server-socket file-name)))
(dynamic-wind
  noop
  (lambda () (proc sock))
  (lambda ()
(close sock)
(catch-system-error (delete-file file-name))
```

maybe this is caused by some call/cc magic that causes an unwind that deletes 
the file, but then continues?

--
• attila lendvai
• PGP: 963F 5D5F 45C7 DFCD 0A39
--
“Above all, do not lose your desire to walk: Every day I walk myself into a 
state of well-being and walk away from every illness; I have walked myself into 
my best thoughts, and I know of no thought so burdensome that one cannot walk 
away from it.”
— Søren Kierkegaard (1813–1855)






bug#53580: (No Subject)

2022-01-27 Thread Attila Lendvai
i forgot to add that i'm working on a shepherd service, and this may be due to 
errors in the service's user code, like the start gexp.

bug#48007: computing derivations through inferior takes twice as long

2022-01-27 Thread Ludovic Courtès
Ricardo Wurmus  skribis:

> These patches look great to me and they work.
> My real-world test case is now down to about 12 seconds.

Good!  Fixed the typo you mentioned on IRC and pushed as
e778910bdfc68c60a5be59aac93049d32feae904.

To summarize, the INFERIOR=y case still takes about twice as long as the
INFERIOR=n case (before that it was actually 9 times slower).

I suppose this is mostly due to the round trips between the inferior and
the parent (one per package).  We’d have to analyze more closely, for
example with ‘perf timechart’, where the wait times are.  It’ll always
be slower than without an inferior though.

Last, we should improve the baseline (4s here for the manifest you
gave).  That’s the tricky part.

Thanks,
Ludo’.





bug#53561: Failing: guix package -i gtkmm@3

2022-01-27 Thread Dale Mellor
The above command produces

The following package will be installed:
   gtkmm 3.24.5

guix package: error: profile contains conflicting entries for libsigc++
guix package: error:   first entry: libsigc++@3.0.6 
/gnu/store/ng4k2yl94d758p5vnashd4nvyb1aw8s1-libsigc++-3.0.6
guix package: error:... propagated from cairomm@1.14.2
guix package: error:... propagated from gtkmm@3.24.5
guix package: error:   second entry: libsigc++@2.9.3 
/gnu/store/iad8jg1fm7jsq0pqj547f3n5s2jn9rp0-libsigc++-2.9.3
guix package: error:... propagated from glibmm@2.64.5
guix package: error:... propagated from pangomm@2.46.0
guix package: error:... propagated from gtkmm@3.24.5
hint: You cannot have two different versions or variants of `gtkmm' in the same 
profile.






bug#53588: Missing keys for ISO image

2022-01-27 Thread André A . Gomes
Hi Guix,

I followed the instructions found at info node (info "(guix) USB Stick
and DVD Installation") and it failed with the following error:

--8<---cut here---start->8---
$ wget https://sv.gnu.org/people/viewgpg.php?user_id=127547 -qO - | gpg 
--import -
gpg: key 1260E46482E63562: 2 signatures not checked due to missing keys
gpg: key 1260E46482E63562: "Maxim Cournoyer " not 
changed
gpg: Total number processed: 1
gpg:  unchanged: 1

$ gpg --verify guix-system-install-1.3.0.x86_64-linux.iso.sig
gpg: no signed data
gpg: can't hash datafile: No data
--8<---cut here---end--->8---


--
André A. Gomes
"Free Thought, Free World"





bug#53588: Missing keys for ISO image

2022-01-27 Thread Leo Famulari
On Thu, Jan 27, 2022 at 08:18:06PM +0300, André A. Gomes wrote:
> $ gpg --verify guix-system-install-1.3.0.x86_64-linux.iso.sig
> gpg: no signed data
> gpg: can't hash datafile: No data

This means that you only downloaded the signature file, but not the ISO
image. Or at least, it's not where GPG expects to find it.

I tried the instructions in the manual and they did work for me. Can you
try again, making sure to download the ISO image, as instructed in the
manual?

https://guix.gnu.org/manual/devel/en/html_node/USB-Stick-and-DVD-Installation.html





bug#53588: Missing keys for ISO image

2022-01-27 Thread André A . Gomes
Leo Famulari  writes:

> On Thu, Jan 27, 2022 at 08:18:06PM +0300, André A. Gomes wrote:
>> $ gpg --verify guix-system-install-1.3.0.x86_64-linux.iso.sig
>> gpg: no signed data
>> gpg: can't hash datafile: No data
>
> This means that you only downloaded the signature file, but not the ISO
> image. Or at least, it's not where GPG expects to find it.

Yes, I had the image and the signature is different folders.  Silly me.

Thanks.  Closing (hopefully?).


-- 
André A. Gomes
"Free Thought, Free World"





bug#53559: [PATCH] gnu: mutter: Disable timeline tests.

2022-01-27 Thread Liliana Marie Prikler
* gnu/packages/gnome.scm (mutter)[disable-problematic-tests]: Also disable
timeline tests.
---
 gnu/packages/gnome.scm | 6 +-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm
index e3fac534c4..b341fb4c97 100644
--- a/gnu/packages/gnome.scm
+++ b/gnu/packages/gnome.scm
@@ -7477,7 +7477,11 @@ (define-public mutter
  ;; expression paragraph.  For an explanation, see: info '(sed)
  ;; Multiline techniques'.
  (invoke "sed" "/./{H;$!d} ; x ; s/^.*native-headless.*$//"
- "-i" "src/tests/meson.build")))
+ "-i" "src/tests/meson.build")
+ ;; Timeline tests may unexpectedly fail on missed frames, so
+ ;; let's disable them as well.
+ (substitute* "src/tests/clutter/conform/meson.build"
+   (("'timeline.*',") ""
  (replace 'check
(lambda* (#:key tests? test-options parallel-tests?
  #:allow-other-keys)
-- 
2.34.0






bug#44571: Cannot configure a static IPv6 with static-networking-service-type

2022-01-27 Thread Jack Hill

Hi,

I believe this was fixed in c8609493ba6fd36c05815cad198060e54ea8c4f9 (and 
related commits before and after). See the manual about the new 
static-networking-service-type and welcome to the future!


Cheers,
Jack






bug#53463: ci.guix.gnu.org not building the 'guix' job

2022-01-27 Thread Leo Famulari
On Sun, Jan 23, 2022 at 06:00:40PM -0500, Leo Famulari wrote:
> Also, the 'master' job hasn't been run in ~2 days:
> 
> https://ci.guix.gnu.org/jobset/master
> 
> I think the build farm is waiting to finish collecting garbage.

Unfortunately, the 'master' jobset is broken again, and the 'guix'
jobset is still broken.





bug#53591: Audacity can't find FFmpeg

2022-01-27 Thread Leo Famulari
Although Audacity 3.1.3 includes FFmpeg in its direct dependencies, it
does not keep a reference to it and cannot find it at runtime.

This is a regression from Audacity 2.4.2.

--
$ git describe
v1.3.0-15323-gf00ed43653
$ guix gc --references $(./pre-inst-env guix build --no-grafts audacity) | grep 
ffmpeg
--





bug#53591: Audacity can't find FFmpeg

2022-01-27 Thread Leo Famulari
On Thu, Jan 27, 2022 at 06:14:30PM -0500, Leo Famulari wrote:
> Although Audacity 3.1.3 includes FFmpeg in its direct dependencies, it
> does not keep a reference to it and cannot find it at runtime.

One consequence is that Audacity can't read Ogg files containing Opus or
Vorbis audio, or any other format delegated to FFmpeg, for example, this
file:

https://dl.espressif.com/dl/audio/ff-16b-2c-44100hz.ogg <-- downloads
with an ".ogx" extension

VLC, on the other hand, plays it fine.

Testing with the previous version of audacity (2.4.2), the .ogx file is
opened using FFmpeg, as shown in the "opening..." progress dialog box.





bug#53594: no matching pattern #

2022-01-27 Thread Guu, Jin-Cheng
Hello Guix,

I obtained a latest dev ISO for guix system and tried installing it
just now. With the graphical installer, I received the error below for
two times. Perhaps it's a bug?

In ice-9/boot-9.scm:
  1685:16  1 (raise-exception _ #:continuable? _)
  1685:16  0 (raise-exception _#:continuable? _)

ice-9/boot-9.scm:1685:16: In procedure raise-exception:
Throw to key `match-error' with args `("match" "no matching
pattern" #)'.

Command failed with exit code 1.
Press Enter to continue.

Thank you for all your work!

Best Regards,
Jin





bug#53591: Audacity can't find FFmpeg

2022-01-27 Thread Leo Famulari
Between Audacity 2.4.2 and 3.1.3, upstream changed how Audacity finds
FFmpeg. It no longer links to it but instead loads it at runtime:

https://github.com/audacity/audacity/issues/2161

I detailed my hapless attempts to do that in the upstream bug report:

https://github.com/audacity/audacity/issues/2489

Any advice is most welcome!