bug#45826: SBCL / Common Lisp packages fail to build on aarch64

2021-01-17 Thread Mathieu Othacehe


Hello Leo & Guillaume,

> That's a good observation. I hadn't thought of it.
>
> I'm CC-ing Mathieu Othacehe and guix-sysadmin so that we can disable
> these builds until we can fix the bug for real. Mathieu: this might
> explain why the build farm is spending all its effort on aarch64.

If we want to disable SBCL builds temporarily we can do something
similar to what I did to disable Rust builds on non-x86_64 architectures
here: 0ed631866cc0b7cece2b0a0b50e39b37ae91bb67.

Regarding the rebuilding that is a limitation of the new Cuirass remote
building mechanism I am aware of and I need to solve. As build failures
are only cached of the machine performing the build and the builds are
now distributed to all the machines across the build farm, we need to
find a way to centralize the builds failure cache.

It would also be nice to optionally publish the build failures cache so
that the user doesn't try to build a package that is known to be failing
on the build farm. Chris, have you encountered this issue with the Build
Coordinator?

Thanks,

Mathieu





bug#45826: SBCL / Common Lisp packages fail to build on aarch64

2021-01-17 Thread Christopher Baines

Mathieu Othacehe  writes:

> Hello Leo & Guillaume,
>
>> That's a good observation. I hadn't thought of it.
>>
>> I'm CC-ing Mathieu Othacehe and guix-sysadmin so that we can disable
>> these builds until we can fix the bug for real. Mathieu: this might
>> explain why the build farm is spending all its effort on aarch64.
>
> If we want to disable SBCL builds temporarily we can do something
> similar to what I did to disable Rust builds on non-x86_64 architectures
> here: 0ed631866cc0b7cece2b0a0b50e39b37ae91bb67.
>
> Regarding the rebuilding that is a limitation of the new Cuirass remote
> building mechanism I am aware of and I need to solve. As build failures
> are only cached of the machine performing the build and the builds are
> now distributed to all the machines across the build farm, we need to
> find a way to centralize the builds failure cache.
>
> It would also be nice to optionally publish the build failures cache so
> that the user doesn't try to build a package that is known to be failing
> on the build farm. Chris, have you encountered this issue with the Build
> Coordinator?

Not really. The first thing to note is that I'm running the Guix Build
Coordinator currently without the guix-daemon --cache-failures option,
in fact it's probably unwise to do so, as it would mean that rather than
some builds taking place, the guix-daemon could just return a cached
failure. I should probably mention this in the README.

The way this situation is dealt with in the Guix Build Coordinator is
simplified by the agents not attempting builds where the derivation
inputs aren't present. If an agent is unable to ensure all the inputs
are present, it just reports this to the coordinator.

The behaviour is configurable, but the default missing inputs hook will
submit a new build for a missing input, but only if one doesn't already
exist. Because of this, you don't get the behaviour where some missing
prerequisite that fails to built is built over and over again, every
time you try and build a derivation that uses it.


signature.asc
Description: PGP signature


bug#45618: development childhurd fails to build: glib@2.62.6: build system `meson'

2021-01-17 Thread Danny Milosavljevic
Hi Ludo,

that is not a fix.  A workaround maybe.

If possible, I'd like the actual fix to be to make the meson build system
support cross compilation.

According to https://mesonbuild.com/Cross-compilation.html :

>Meson has full support for cross compilation. 
[...]
>meson builddir/ --cross-file x86-linux

Also, for the record, I find it a bad idea to switch packages from
gnu-build-system to meson-build-system when the package in question
supports building itself with either, as long as meson-build-system
doesn't support cross-compilation.


pgpfFTXmblrdP.pgp
Description: OpenPGP digital signature


bug#45936: Cuirass search pagination and ordering is broken

2021-01-17 Thread Mathieu Othacehe


Hello,

Fixed with dea570775064573881dbec0c849fd50ff907c31a.

Thanks,

Mathieu





bug#45826: SBCL / Common Lisp packages fail to build on aarch64

2021-01-17 Thread Leo Famulari
On Sun, Jan 17, 2021 at 10:29:49AM +0100, Mathieu Othacehe wrote:
> If we want to disable SBCL builds temporarily we can do something
> similar to what I did to disable Rust builds on non-x86_64 architectures
> here: 0ed631866cc0b7cece2b0a0b50e39b37ae91bb67.

--
diff --git a/gnu/packages/rust.scm b/gnu/packages/rust.scm
index 35a96b5754..91b5d6b6ec 100644
--- a/gnu/packages/rust.scm
+++ b/gnu/packages/rust.scm
@@ -452,6 +452,7 @@ test = { path = \"../libtest\" }
 (variable "LIBRARY_PATH")
 (files '("lib" "lib64")
 
+(supported-systems '("x86_64-linux"))
 (synopsis "Compiler for the Rust programming language")
 (description "Rust is a systems programming language that provides memory
 safety and thread safety guarantees.")
--

Hm, this would also prevent users from building the packages on their
own machines. We need a way to make changes like this but limit them to
the build farm.





bug#45826: SBCL / Common Lisp packages fail to build on aarch64

2021-01-17 Thread Efraim Flashner
On Sun, Jan 17, 2021 at 02:11:11PM -0500, Leo Famulari wrote:
> On Sun, Jan 17, 2021 at 10:29:49AM +0100, Mathieu Othacehe wrote:
> > If we want to disable SBCL builds temporarily we can do something
> > similar to what I did to disable Rust builds on non-x86_64 architectures
> > here: 0ed631866cc0b7cece2b0a0b50e39b37ae91bb67.
> 
> --
> diff --git a/gnu/packages/rust.scm b/gnu/packages/rust.scm
> index 35a96b5754..91b5d6b6ec 100644
> --- a/gnu/packages/rust.scm
> +++ b/gnu/packages/rust.scm
> @@ -452,6 +452,7 @@ test = { path = \"../libtest\" }
>  (variable "LIBRARY_PATH")
>  (files '("lib" "lib64")
>  
> +(supported-systems '("x86_64-linux"))
>  (synopsis "Compiler for the Rust programming language")
>  (description "Rust is a systems programming language that provides memory
>  safety and thread safety guarantees.")
> --
> 
> Hm, this would also prevent users from building the packages on their
> own machines. We need a way to make changes like this but limit them to
> the build farm.

Would marking it unsubstitutable work? Or would we need build-local

-- 
Efraim Flashner  אפרים פלשנר
GPG key = A28B F40C 3E55 1372 662D  14F7 41AA E7DC CA3D 8351
Confidentiality cannot be guaranteed on emails sent or received unencrypted


signature.asc
Description: PGP signature


bug#45943: php 7.4.14 fails tests on aarch64

2021-01-17 Thread Vagrant Cascadian
php 7.4.14 fails to build on aarch64 due to test suite failures.

Reverting back to php 7.4.13 by reverting commit
d033540e6c113323089403a26e39f9a288c9c857 works fine for me, though
obviously it would be better to track down the exact test suite failure
and figure out a proper fix.

This blocks numerous other packages from building, such as libsoup,
which blocks building of network-manager.


live well,
  vagrant


signature.asc
Description: PGP signature


bug#45295: “sudo guix system reconfigure” triggers re-clone/update of Git checkout

2021-01-17 Thread Ludovic Courtès
Ludovic Courtès  skribis:

> If you do, as a regular user:
>
>   guix pull
>   sudo guix system reconfigure …
>
> the ‘guix system reconfigure’, as part of the downgrade-detection
> machinery, triggers an update of the channel checkout(s) in
> ~root/.cache, even though ~USER/.cache is already up-to-date.
>
> One way to avoid it might be to special-case the checkout cache
> directory for when ‘SUDO_USER’ is set.

Attached is a prototype that first clones/fetches from ~USER/.cache into
~root/.cache, in the hope that this avoids the need to access the
upstream repo.  (It requires ‘set-remote-url!’, which is only in
Guile-Git ‘master’.)

It’s a bit hacky but I can’t think of a better way to address this
issue.  In particular, having root use ~USER/.cache directly is not an
option: it could end up creating root-owned files there.

Thoughts?

Ludo’.

diff --git a/guix/git.scm b/guix/git.scm
index a5103547d3..467d199e37 100644
--- a/guix/git.scm
+++ b/guix/git.scm
@@ -346,10 +346,7 @@ definitely available in REPOSITORY, false otherwise."
  (check-out? #t)
  starting-commit
  (log-port (%make-void-port "w"))
- (cache-directory
-  (url-cache-directory
-   url (%repository-cache-directory)
-   #:recursive? recursive?)))
+ (cache-directory *unspecified*))
   "Update the cached checkout of URL to REF in CACHE-DIRECTORY.  Return three
 values: the cache directory name, and the SHA1 commit (a string) corresponding
 to REF, and the relation of the new commit relative to STARTING-COMMIT (if
@@ -381,12 +378,41 @@ it unchanged."
(string-append "origin/" branch
   (_ ref)))
 
+  (define default-cache-directory
+(url-cache-directory url (%repository-cache-directory)
+ #:recursive? recursive?))
+
+  (when (and (zero? (getuid)) (getenv "SUDO_USER")
+ (unspecified? cache-directory))
+;; Fetch from the sudoer's cache before attempting to reach URL.
+(let* ((home (and=> (false-if-exception (getpwnam (getenv "SUDO_USER")))
+passwd:dir))
+   (peer (and home (url-cache-directory
+url (string-append home "/.cache/guix/checkouts")
+#:recursive? recursive?
+  (when (and peer (file-exists? peer))
+;; Fetch from PEER.  After that, the "origin" remote points to PEER,
+;; but we change it back to URL below.
+(update-cached-checkout (pk 'update peer)
+#:ref ref
+#:recursive? recursive?
+#:check-out? #f
+#:cache-directory
+default-cache-directory
+
   (with-libgit2
-   (let* ((cache-exists? (openable-repository? cache-directory))
-  (repository(if cache-exists?
- (repository-open cache-directory)
- (clone* url cache-directory
+   (let* ((cache-directory (if (unspecified? cache-directory)
+   default-cache-directory
+   cache-directory))
+  (cache-exists?   (openable-repository? cache-directory))
+  (repository  (if cache-exists?
+   (repository-open cache-directory)
+   (clone* url cache-directory
+ ;; Ensure the "origin" remote points to URL.
+ (set-remote-url! repository "origin" url)
+
  ;; Only fetch remote if it has not been cloned just before.
+ (pk 'x cache-directory 'avail? (reference-available? repository ref))
  (when (and cache-exists?
 (not (reference-available? repository ref)))
(let ((auth-method (%make-auth-ssh-agent)))
@@ -433,8 +459,6 @@ it unchanged."
#:key
recursive?
(log-port (%make-void-port "w"))
-   (cache-directory
-(%repository-cache-directory))
(ref '(branch . "master")))
   "Return two values: the content of the git repository at URL copied into a
 store directory and the sha1 of the top level commit in this directory.  The
@@ -464,10 +488,6 @@ Log progress and checkout info to LOG-PORT."
 (update-cached-checkout url
 #:recursive? recursive?
 #:ref ref
-#:cache-directory
-(url-cache-directory url cache-directory
- #:recursive?
-