guix-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Restarting 'staging'


From: Ricardo Wurmus
Subject: Re: Restarting 'staging'
Date: Sat, 16 Jun 2018 12:24:40 +0200
User-agent: mu4e 1.0; emacs 26.1

Hi Gábor,

> Ricardo Wurmus <address@hidden> ezt írta (időpont: 2018. jún. 15., P
> 21:20):
>
>>
>> Hi Marius,
>>
>> > Now that 'core-updates' is merged, it's time to get 'staging' rolling
>> > again.  We have lots of minor updates this round, mostly on the
>> > graphical side.  Is there anything we're missing that's eligible (<1200
>> > rebuilds)?
>>
>> The ant-build-system needs to be modified to raise an exception on test
>> failures.  Currently it uses the old (zero? (system* …)) idiom, which
>> causes failing tests to be ignored.
>>
>> This will cause all Java packages and packages depending on them to be
>> rebuilt.
[…]
>
> I intend to have a look at that. I've already figured out how to modify the
> timestamps phase, the rest should be similar. I'm under the impression
> however that this could be done on master. All java is around 160 packages.

I have just made these changes to the ant-build-system (see attached
patch).  Can you combine this with your changes and push them to
“staging”?

It is true that all of Java in Guix is only about 160 packages, but this
affects the three JDK packages, which take a long time to build.  It
also re-enables tests for packages whose test failures were previously
ignored by accident.

So I expect some minor breakage, which I would like to leave out of
master.

>From 781768e88f2c90cfccce20d484225e71e019d456 Mon Sep 17 00:00:00 2001
From: Ricardo Wurmus <address@hidden>
Date: Sat, 16 Jun 2018 12:20:32 +0200
Subject: [PATCH] build-system/ant: Unconditionally return #t in build phases.

* guix/build/ant-build-system.scm (unpack, build, strip-jar-timestamps, check,
install): Use invoke.
---
 guix/build/ant-build-system.scm | 76 ++++++++++++++++-----------------
 1 file changed, 38 insertions(+), 38 deletions(-)

diff --git a/guix/build/ant-build-system.scm b/guix/build/ant-build-system.scm
index d081a2b31..3ed12b9f4 100644
--- a/guix/build/ant-build-system.scm
+++ b/guix/build/ant-build-system.scm
@@ -1,5 +1,5 @@
 ;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2016 Ricardo Wurmus <address@hidden>
+;;; Copyright © 2016, 2018 Ricardo Wurmus <address@hidden>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -150,7 +150,8 @@ to the default GNU unpack strategy."
       (begin
         (mkdir "src")
         (with-directory-excursion "src"
-          (zero? (system* "jar" "-xf" source))))
+          (invoke "jar" "-xf" source))
+        #t)
       ;; Use GNU unpack strategy for things that aren't jar archives.
       ((assq-ref gnu:%standard-phases 'unpack) #:source source)))
 
@@ -171,7 +172,7 @@ to the default GNU unpack strategy."
 
 (define* (build #:key (make-flags '()) (build-target "jar")
                 #:allow-other-keys)
-  (zero? (apply system* `("ant" ,build-target ,@make-flags))))
+  (apply invoke `("ant" ,build-target ,@make-flags)))
 
 (define* (generate-jar-indices #:key outputs #:allow-other-keys)
   "Generate file \"META-INF/INDEX.LIST\".  This file does not use word wraps
@@ -194,50 +195,49 @@ repack them.  This is necessary to ensure that archives 
are reproducible."
     (format #t "repacking ~a\n" jar)
     (let* ((dir (mkdtemp! "jar-contents.XXXXXX"))
            (manifest (string-append dir "/META-INF/MANIFEST.MF")))
-      (and (with-directory-excursion dir
-             (zero? (system* "jar" "xf" jar)))
-           (delete-file jar)
-           ;; XXX: copied from (gnu build install)
-           (for-each (lambda (file)
-                       (let ((s (lstat file)))
-                         (unless (eq? (stat:type s) 'symlink)
-                           (utime file 0 0 0 0))))
-                     (find-files dir #:directories? #t))
+      (with-directory-excursion dir
+        (invoke "jar" "xf" jar))
+      (delete-file jar)
+      ;; XXX: copied from (gnu build install)
+      (for-each (lambda (file)
+                  (let ((s (lstat file)))
+                    (unless (eq? (stat:type s) 'symlink)
+                      (utime file 0 0 0 0))))
+                (find-files dir #:directories? #t))
 
-           ;; The jar tool will always set the timestamp on the manifest file
-           ;; and the containing directory to the current time, even when we
-           ;; reuse an existing manifest file.  To avoid this we use "zip"
-           ;; instead of "jar".  It is important that the manifest appears
-           ;; first.
-           (with-directory-excursion dir
-             (let* ((files (find-files "." ".*" #:directories? #t))
-                    ;; To ensure that the reference scanner can detect all
-                    ;; store references in the jars we disable compression
-                    ;; with the "-0" option.
-                    (command (if (file-exists? manifest)
-                                 `("zip" "-0" "-X" ,jar ,manifest ,@files)
-                                 `("zip" "-0" "-X" ,jar ,@files))))
-               (unless (zero? (apply system* command))
-                 (error "'zip' failed"))))
-           (utime jar 0 0)
-           #t)))
+      ;; The jar tool will always set the timestamp on the manifest file
+      ;; and the containing directory to the current time, even when we
+      ;; reuse an existing manifest file.  To avoid this we use "zip"
+      ;; instead of "jar".  It is important that the manifest appears
+      ;; first.
+      (with-directory-excursion dir
+        (let* ((files (find-files "." ".*" #:directories? #t))
+               ;; To ensure that the reference scanner can detect all
+               ;; store references in the jars we disable compression
+               ;; with the "-0" option.
+               (command (if (file-exists? manifest)
+                            `("zip" "-0" "-X" ,jar ,manifest ,@files)
+                            `("zip" "-0" "-X" ,jar ,@files))))
+          (apply invoke command)))
+      (utime jar 0 0)
+      #t))
 
-  (every (match-lambda
-           ((output . directory)
-            (every repack-archive (find-files directory "\\.jar$"))))
-         outputs))
+  (for-each (match-lambda
+              ((output . directory)
+               (for-each repack-archive (find-files directory "\\.jar$"))))
+            outputs)
+  #t)
 
 (define* (check #:key target (make-flags '()) (tests? (not target))
                 (test-target "check")
                 #:allow-other-keys)
   (if tests?
-      (zero? (apply system* `("ant" ,test-target ,@make-flags)))
-      (begin
-        (format #t "test suite not run~%")
-        #t)))
+      (apply invoke `("ant" ,test-target ,@make-flags))
+      (format #t "test suite not run~%"))
+  #t)
 
 (define* (install #:key (make-flags '()) #:allow-other-keys)
-  (zero? (apply system* `("ant" "install" ,@make-flags))))
+  (apply invoke `("ant" "install" ,@make-flags)))
 
 (define %standard-phases
   (modify-phases gnu:%standard-phases
-- 
2.17.1


--
Ricardo

reply via email to

[Prev in Thread] Current Thread [Next in Thread]