[PATCH 1/3] gnu: maven-*-*: Fix - add missing shebang to the sisu.sh.

  • Open
  • quality assurance status badge
Details
3 participants
  • Ludovic Courtès
  • Bruno Victal
  • Rostislav Svoboda
Owner
unassigned
Submitted by
Rostislav Svoboda
Severity
normal
R
R
Rostislav Svoboda wrote on 28 Apr 2023 15:13
(address . guix-patches@gnu.org)(name . Rostislav Svoboda)(address . Rostislav.Svoboda@gmail.com)
20230428131312.4604-1-Rostislav.Svoboda@gmail.com
* gnu/packages/maven.scm
- maven-settings-builder
- maven-model-builder
- maven-resolver-provider
- maven-core-bootstrap
- maven-embedder
The sisu.sh script must have a shebang on the first line, otherwise an
'In execvp of ...: Exec format error' is indicated.
---
gnu/packages/maven.scm | 15 +++++++++++++++
1 file changed, 15 insertions(+)

Toggle diff (56 lines)
diff --git a/gnu/packages/maven.scm b/gnu/packages/maven.scm
index fc3a63c263..a3122bfa32 100644
--- a/gnu/packages/maven.scm
+++ b/gnu/packages/maven.scm
@@ -1365,6 +1365,9 @@ (define-public maven-settings-builder
#:test-dir "maven-settings-builder/src/test"
#:phases
(modify-phases %standard-phases
+ (add-before 'patch-source-shebangs 'add-missing-shebang
+ (lambda _
+ (invoke "sed" "-i" "1s;^;#!/bin/sh\\n\\n;" "./sisu.sh")))
(add-before 'build 'generate-sisu-named
(lambda _
(mkdir-p "build/classes/META-INF/sisu")
@@ -1396,6 +1399,9 @@ (define-public maven-model-builder
#:test-dir "src/test"
#:phases
(modify-phases %standard-phases
+ (add-before 'patch-source-shebangs 'add-missing-shebang
+ (lambda _
+ (invoke "sed" "-i" "1s;^;#!/bin/sh\\n\\n;" "./sisu.sh")))
(add-before 'configure 'chdir
(lambda _
;; Required for tests that rely on the package's default
@@ -1501,6 +1507,9 @@ (define-public maven-resolver-provider
#:tests? #f; dependency loop on maven-core (@Component RepositorySystem)
#:phases
(modify-phases %standard-phases
+ (add-before 'patch-source-shebangs 'add-missing-shebang
+ (lambda _
+ (invoke "sed" "-i" "1s;^;#!/bin/sh\\n\\n;" "./sisu.sh")))
(add-before 'build 'generate-sisu-named
(lambda _
(mkdir-p "build/classes/META-INF/sisu")
@@ -1591,6 +1600,9 @@ (define-public maven-core-bootstrap
#:tests? #f
#:phases
(modify-phases %standard-phases
+ (add-before 'patch-source-shebangs 'add-missing-shebang
+ (lambda _
+ (invoke "sed" "-i" "1s;^;#!/bin/sh\\n\\n;" "./sisu.sh")))
(add-before 'configure 'chdir
(lambda _
;; Required for generating components.xml in maven-core
@@ -1822,6 +1834,9 @@ (define-public maven-embedder
#:jdk ,icedtea-8
#:phases
(modify-phases %standard-phases
+ (add-before 'patch-source-shebangs 'add-missing-shebang
+ (lambda _
+ (invoke "sed" "-i" "1s;^;#!/bin/sh\\n\\n;" "./sisu.sh")))
(add-before 'build 'generate-sisu-named
(lambda _
(mkdir-p "build/classes/META-INF/sisu")
--
2.39.2
R
R
Rostislav Svoboda wrote on 28 Apr 2023 15:13
[PATCH 2/3] gnu: maven-*-*: DRY add-missing-shebangs.
(address . guix-patches@gnu.org)(name . Rostislav Svoboda)(address . Rostislav.Svoboda@gmail.com)
20230428131312.4604-2-Rostislav.Svoboda@gmail.com
* gnu/packages/maven.scm
- maven-settings-builder
- maven-model-builder
- maven-resolver-provider
- maven-core-bootstrap
- maven-embedder
Implement common functionality just once in the `add-missing-shebangs`.
---
gnu/packages/maven.scm | 20 ++++++++++----------
1 file changed, 10 insertions(+), 10 deletions(-)

Toggle diff (68 lines)
diff --git a/gnu/packages/maven.scm b/gnu/packages/maven.scm
index a3122bfa32..6990d091cf 100644
--- a/gnu/packages/maven.scm
+++ b/gnu/packages/maven.scm
@@ -1354,6 +1354,11 @@ (define-public maven-settings
tool. This package contains strictly the model for Maven settings, that is
simply plain java objects.")))
+(define add-missing-shebang
+ `(lambda _
+ ;; -i, --in-place edit files in place
+ (invoke "sed" "-i" "1s;^;#!/bin/sh\\n\\n;" "./sisu.sh")))
+
(define-public maven-settings-builder
(package
(inherit maven-artifact)
@@ -1366,8 +1371,7 @@ (define-public maven-settings-builder
#:phases
(modify-phases %standard-phases
(add-before 'patch-source-shebangs 'add-missing-shebang
- (lambda _
- (invoke "sed" "-i" "1s;^;#!/bin/sh\\n\\n;" "./sisu.sh")))
+ ,add-missing-shebang)
(add-before 'build 'generate-sisu-named
(lambda _
(mkdir-p "build/classes/META-INF/sisu")
@@ -1400,8 +1404,7 @@ (define-public maven-model-builder
#:phases
(modify-phases %standard-phases
(add-before 'patch-source-shebangs 'add-missing-shebang
- (lambda _
- (invoke "sed" "-i" "1s;^;#!/bin/sh\\n\\n;" "./sisu.sh")))
+ ,add-missing-shebang)
(add-before 'configure 'chdir
(lambda _
;; Required for tests that rely on the package's default
@@ -1508,8 +1511,7 @@ (define-public maven-resolver-provider
#:phases
(modify-phases %standard-phases
(add-before 'patch-source-shebangs 'add-missing-shebang
- (lambda _
- (invoke "sed" "-i" "1s;^;#!/bin/sh\\n\\n;" "./sisu.sh")))
+ ,add-missing-shebang)
(add-before 'build 'generate-sisu-named
(lambda _
(mkdir-p "build/classes/META-INF/sisu")
@@ -1601,8 +1603,7 @@ (define-public maven-core-bootstrap
#:phases
(modify-phases %standard-phases
(add-before 'patch-source-shebangs 'add-missing-shebang
- (lambda _
- (invoke "sed" "-i" "1s;^;#!/bin/sh\\n\\n;" "./sisu.sh")))
+ ,add-missing-shebang)
(add-before 'configure 'chdir
(lambda _
;; Required for generating components.xml in maven-core
@@ -1835,8 +1836,7 @@ (define-public maven-embedder
#:phases
(modify-phases %standard-phases
(add-before 'patch-source-shebangs 'add-missing-shebang
- (lambda _
- (invoke "sed" "-i" "1s;^;#!/bin/sh\\n\\n;" "./sisu.sh")))
+ ,add-missing-shebang)
(add-before 'build 'generate-sisu-named
(lambda _
(mkdir-p "build/classes/META-INF/sisu")
--
2.39.2
R
R
Rostislav Svoboda wrote on 28 Apr 2023 15:13
[PATCH 3/3] gnu: maven-*-*: DRY generate-sisu-named.
(address . guix-patches@gnu.org)(name . Rostislav Svoboda)(address . Rostislav.Svoboda@gmail.com)
20230428131312.4604-3-Rostislav.Svoboda@gmail.com
* gnu/packages/maven.scm
- maven-settings-builder
- maven-model-builder
- maven-resolver-provider
- maven-core-bootstrap
- maven-embedder
Implement common functionality just once in the `generate-sisu-named`.
---
gnu/packages/maven.scm | 41 +++++++++++++----------------------------
1 file changed, 13 insertions(+), 28 deletions(-)

Toggle diff (89 lines)
diff --git a/gnu/packages/maven.scm b/gnu/packages/maven.scm
index 6990d091cf..34a1fae4b5 100644
--- a/gnu/packages/maven.scm
+++ b/gnu/packages/maven.scm
@@ -1359,6 +1359,14 @@ (define add-missing-shebang
;; -i, --in-place edit files in place
(invoke "sed" "-i" "1s;^;#!/bin/sh\\n\\n;" "./sisu.sh")))
+(define* (generate-sisu-named sisu-path #:optional (src-path ""))
+ (let ((sisu-sh (string-append sisu-path "sisu.sh")))
+ `(lambda _
+ (mkdir-p "build/classes/META-INF/sisu")
+ (chmod ,sisu-sh #o755)
+ (invoke ,sisu-sh ,(string-append src-path "src/main/java")
+ "build/classes/META-INF/sisu/javax.inject.Named"))))
+
(define-public maven-settings-builder
(package
(inherit maven-artifact)
@@ -1373,11 +1381,7 @@ (define-public maven-settings-builder
(add-before 'patch-source-shebangs 'add-missing-shebang
,add-missing-shebang)
(add-before 'build 'generate-sisu-named
- (lambda _
- (mkdir-p "build/classes/META-INF/sisu")
- (chmod "sisu.sh" #o755)
- (invoke "./sisu.sh" "maven-settings-builder/src/main/java"
- "build/classes/META-INF/sisu/javax.inject.Named")))
+ ,(generate-sisu-named "./" "maven-settings-builder/"))
(replace 'install (install-from-pom "maven-settings-builder/pom.xml")))))
(propagated-inputs
(list java-plexus-utils
@@ -1416,11 +1420,7 @@ (define-public maven-model-builder
"build/classes")
#t))
(add-before 'build 'generate-sisu-named
- (lambda _
- (mkdir-p "build/classes/META-INF/sisu")
- (chmod "../sisu.sh" #o755)
- (invoke "../sisu.sh" "src/main/java"
- "build/classes/META-INF/sisu/javax.inject.Named")))
+ ,(generate-sisu-named "../"))
(replace 'install
(install-from-pom "pom.xml")))))
(propagated-inputs
@@ -1513,12 +1513,7 @@ (define-public maven-resolver-provider
(add-before 'patch-source-shebangs 'add-missing-shebang
,add-missing-shebang)
(add-before 'build 'generate-sisu-named
- (lambda _
- (mkdir-p "build/classes/META-INF/sisu")
- (chmod "./sisu.sh" #o755)
- (invoke "./sisu.sh" "maven-resolver-provider/src/main/java"
- "build/classes/META-INF/sisu/javax.inject.Named")
- #t))
+ ,(generate-sisu-named "./" "maven-resolver-provider/"))
(replace 'install
(install-from-pom "maven-resolver-provider/pom.xml")))))
(propagated-inputs
@@ -1627,12 +1622,7 @@ (define-public maven-core-bootstrap
(("\\$\\{distributionName\\}") "Apache Maven"))
#t))
(add-before 'build 'generate-sisu-named
- (lambda _
- (mkdir-p "build/classes/META-INF/sisu")
- (chmod "../sisu.sh" #o755)
- (invoke "../sisu.sh" "src/main/java"
- "build/classes/META-INF/sisu/javax.inject.Named")
- #t))
+ ,(generate-sisu-named "../"))
(add-before 'build 'generate-models
(lambda* (#:key inputs #:allow-other-keys)
(define (modello-single-mode file version mode)
@@ -1838,12 +1828,7 @@ (define-public maven-embedder
(add-before 'patch-source-shebangs 'add-missing-shebang
,add-missing-shebang)
(add-before 'build 'generate-sisu-named
- (lambda _
- (mkdir-p "build/classes/META-INF/sisu")
- (chmod "sisu.sh" #o755)
- (invoke "./sisu.sh" "maven-embedder/src/main/java"
- "build/classes/META-INF/sisu/javax.inject.Named")
- #t))
+ ,(generate-sisu-named "./" "maven-embeder/"))
(add-before 'build 'copy-resources
(lambda _
(mkdir-p "build/classes/")
--
2.39.2
L
L
Ludovic Courtès wrote on 28 Apr 2023 22:30
Re: bug#63145: [PATCH 1/3] gnu: maven-*-*: Fix - add missing shebang to the sisu.sh.
(name . Rostislav Svoboda)(address . rostislav.svoboda@gmail.com)(address . 63145@debbugs.gnu.org)
877ctvsq9u.fsf@gnu.org
Hi Rostislav,

I pushed patches minutes ago fixing the same thing:


They lack the nice factorization that you add, but they use
‘substitute*’ instead of calling out to ‘sed’, which is the preferred
way to do it.

We could definitely factorize along the lines of what you propose.
Would you like to update these two patches?

Thanks,
Ludo’.
R
R
Rostislav Svoboda wrote on 29 Apr 2023 12:24
(name . Ludovic Courtès)(address . ludo@gnu.org)(address . 63145@debbugs.gnu.org)
CAEtmmeyfDJHtCCBYFt54CU9WT-d=p8=HfpD_U5d4riXYJ0MHOg@mail.gmail.com
Hi Ludo,

Toggle quote (3 lines)
> We could definitely factorize along the lines of what you propose.
> Would you like to update these two patches?

Here are the updated patches.

Cheers Bost
From 54c70d1ea7130bedd5fda4317a76ad5546e89348 Mon Sep 17 00:00:00 2001
From: Rostislav Svoboda <Rostislav.Svoboda@gmail.com>
Date: Sat, 29 Apr 2023 12:01:01 +0200
Subject: [PATCH 2/2] gnu: maven-*-*: DRY generate-sisu-named.

* gnu/packages/maven.scm
- maven-settings-builder
- maven-model-builder
- maven-resolver-provider
- maven-core-bootstrap
- maven-embedder
Implement common functionality just once in the `generate-sisu-named`.
---
gnu/packages/maven.scm | 34 ++++++++++++----------------------
1 file changed, 12 insertions(+), 22 deletions(-)

Toggle diff (75 lines)
diff --git a/gnu/packages/maven.scm b/gnu/packages/maven.scm
index 8c44e68d31..51fbe5ae54 100644
--- a/gnu/packages/maven.scm
+++ b/gnu/packages/maven.scm
@@ -1361,6 +1361,14 @@ (define add-missing-shebang
(substitute* "sisu.sh"
(("^## T") "#!/bin/sh\n## T"))))
+(define* (generate-sisu-named sisu-path #:optional (src-path ""))
+ (let ((sisu-sh (string-append sisu-path "sisu.sh")))
+ `(lambda _
+ (mkdir-p "build/classes/META-INF/sisu")
+ (chmod ,sisu-sh #o755)
+ (invoke ,sisu-sh ,(string-append src-path "src/main/java")
+ "build/classes/META-INF/sisu/javax.inject.Named"))))
+
(define-public maven-settings-builder
(package
(inherit maven-artifact)
@@ -1374,11 +1382,7 @@ (define-public maven-settings-builder
(modify-phases %standard-phases
(add-after 'unpack 'add-sisu-shebang ,add-missing-shebang)
(add-before 'build 'generate-sisu-named
- (lambda _
- (mkdir-p "build/classes/META-INF/sisu")
- (chmod "sisu.sh" #o755)
- (invoke "./sisu.sh" "maven-settings-builder/src/main/java"
- "build/classes/META-INF/sisu/javax.inject.Named")))
+ ,(generate-sisu-named "./" "maven-settings-builder/"))
(replace 'install (install-from-pom "maven-settings-builder/pom.xml")))))
(propagated-inputs
(list java-plexus-utils
@@ -1416,11 +1420,7 @@ (define-public maven-model-builder
#t))
(add-after 'unpack 'add-sisu-shebang ,add-missing-shebang)
(add-before 'build 'generate-sisu-named
- (lambda _
- (mkdir-p "build/classes/META-INF/sisu")
- (chmod "../sisu.sh" #o755)
- (invoke "../sisu.sh" "src/main/java"
- "build/classes/META-INF/sisu/javax.inject.Named")))
+ ,(generate-sisu-named "../"))
(replace 'install
(install-from-pom "pom.xml")))))
(propagated-inputs
@@ -1512,12 +1512,7 @@ (define-public maven-resolver-provider
(modify-phases %standard-phases
(add-after 'unpack 'add-sisu-shebang ,add-missing-shebang)
(add-before 'build 'generate-sisu-named
- (lambda _
- (mkdir-p "build/classes/META-INF/sisu")
- (chmod "./sisu.sh" #o755)
- (invoke "./sisu.sh" "maven-resolver-provider/src/main/java"
- "build/classes/META-INF/sisu/javax.inject.Named")
- #t))
+ ,(generate-sisu-named "./" "maven-resolver-provider/"))
(replace 'install
(install-from-pom "maven-resolver-provider/pom.xml")))))
(propagated-inputs
@@ -1835,12 +1830,7 @@ (define-public maven-embedder
(modify-phases %standard-phases
(add-after 'unpack 'add-sisu-shebang ,add-missing-shebang)
(add-before 'build 'generate-sisu-named
- (lambda _
- (mkdir-p "build/classes/META-INF/sisu")
- (chmod "sisu.sh" #o755)
- (invoke "./sisu.sh" "maven-embedder/src/main/java"
- "build/classes/META-INF/sisu/javax.inject.Named")
- #t))
+ ,(generate-sisu-named "./" "maven-embeder/"))
(add-before 'build 'copy-resources
(lambda _
(mkdir-p "build/classes/")
--
2.39.2
From fb7774525924d59bf212a122301aa47766f53b0e Mon Sep 17 00:00:00 2001
From: Rostislav Svoboda <Rostislav.Svoboda@gmail.com>
Date: Sat, 29 Apr 2023 11:56:24 +0200
Subject: [PATCH 1/2] gnu: maven-*-*: DRY add-missing-shebang.

* gnu/packages/maven.scm
- maven-settings-builder
- maven-model-builder
- maven-resolver-provider
- maven-core-bootstrap
- maven-embedder
Implement common functionality just once in the `add-missing-shebang`.
---
gnu/packages/maven.scm | 31 +++++++++++--------------------
1 file changed, 11 insertions(+), 20 deletions(-)

Toggle diff (86 lines)
diff --git a/gnu/packages/maven.scm b/gnu/packages/maven.scm
index a805bda8e5..8c44e68d31 100644
--- a/gnu/packages/maven.scm
+++ b/gnu/packages/maven.scm
@@ -5,6 +5,7 @@
;;; Copyright © 2020 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2022 Artyom V. Poptsov <poptsov.artyom@gmail.com>
;;; Copyright © 2023 Aleksandr Vityazev <avityazew@gmail.com>
+;;; Copyright © 2023 Rostislav Svoboda <Rostislav.Svoboda@gmail.com>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -1355,6 +1356,11 @@ (define-public maven-settings
tool. This package contains strictly the model for Maven settings, that is
simply plain java objects.")))
+(define add-missing-shebang
+ `(lambda _
+ (substitute* "sisu.sh"
+ (("^## T") "#!/bin/sh\n## T"))))
+
(define-public maven-settings-builder
(package
(inherit maven-artifact)
@@ -1366,10 +1372,7 @@ (define-public maven-settings-builder
#:test-dir "maven-settings-builder/src/test"
#:phases
(modify-phases %standard-phases
- (add-after 'unpack 'add-sisu-shebang
- (lambda _
- (substitute* "sisu.sh"
- (("^## T") "#!/bin/sh\n## T"))))
+ (add-after 'unpack 'add-sisu-shebang ,add-missing-shebang)
(add-before 'build 'generate-sisu-named
(lambda _
(mkdir-p "build/classes/META-INF/sisu")
@@ -1411,10 +1414,7 @@ (define-public maven-model-builder
(copy-recursively "src/main/resources"
"build/classes")
#t))
- (add-after 'unpack 'add-sisu-shebang
- (lambda _
- (substitute* "sisu.sh"
- (("^## T") "#!/bin/sh\n## T"))))
+ (add-after 'unpack 'add-sisu-shebang ,add-missing-shebang)
(add-before 'build 'generate-sisu-named
(lambda _
(mkdir-p "build/classes/META-INF/sisu")
@@ -1510,10 +1510,7 @@ (define-public maven-resolver-provider
#:tests? #f; dependency loop on maven-core (@Component RepositorySystem)
#:phases
(modify-phases %standard-phases
- (add-after 'unpack 'add-sisu-shebang
- (lambda _
- (substitute* "sisu.sh"
- (("^## T") "#!/bin/sh\n## T"))))
+ (add-after 'unpack 'add-sisu-shebang ,add-missing-shebang)
(add-before 'build 'generate-sisu-named
(lambda _
(mkdir-p "build/classes/META-INF/sisu")
@@ -1604,10 +1601,7 @@ (define-public maven-core-bootstrap
#:tests? #f
#:phases
(modify-phases %standard-phases
- (add-after 'unpack 'add-sisu-shebang
- (lambda _
- (substitute* "sisu.sh"
- (("^## T") "#!/bin/sh\n## T"))))
+ (add-after 'unpack 'add-sisu-shebang ,add-missing-shebang)
(add-before 'configure 'chdir
(lambda _
;; Required for generating components.xml in maven-core
@@ -1839,10 +1833,7 @@ (define-public maven-embedder
#:jdk ,icedtea-8
#:phases
(modify-phases %standard-phases
- (add-after 'unpack 'add-sisu-shebang
- (lambda _
- (substitute* "sisu.sh"
- (("^## T") "#!/bin/sh\n## T"))))
+ (add-after 'unpack 'add-sisu-shebang ,add-missing-shebang)
(add-before 'build 'generate-sisu-named
(lambda _
(mkdir-p "build/classes/META-INF/sisu")
--
2.39.2
B
B
Bruno Victal wrote on 29 Jun 2023 23:24
Re: [bug#63145] [PATCH 1/3] gnu: maven-*-*: Fix - add missing shebang to the sisu.sh.
(name . Rostislav Svoboda)(address . rostislav.svoboda@gmail.com)
d56d3ce0-d179-4f05-ba1c-34bd13c56419@makinata.eu
Hi Rostislav,

On 2023-04-28 14:13, Rostislav Svoboda wrote:
Toggle quote (9 lines)
> * gnu/packages/maven.scm
> - maven-settings-builder
> - maven-model-builder
> - maven-resolver-provider
> - maven-core-bootstrap
> - maven-embedder
> The sisu.sh script must have a shebang on the first line, otherwise an
> 'In execvp of ...: Exec format error' is indicated.

I think there's something strange going on with the maven-3.0-… packages, as I'm getting:

Toggle snippet (20 lines)
## Guix commit is 94ac93042f09b4ba68b7b64ed1feeebd3dab1ea4.

$ ./pre-inst-env guix build maven-settings-builder@3.0
phase `patch-generated-file-shebangs' succeeded after 0.0 seconds
starting phase `generate-sisu-named'
phase `generate-sisu-named' succeeded after 0.1 seconds
starting phase `generate-components.xml'
In execvp of ./components.sh: Exec format error
error: in phase 'generate-components.xml': uncaught exception:
%exception #<&invoke-error program: "./components.sh" arguments: ("maven-settings-builder/src/main/java" "build/classes/META-INF/plexus/components.xml") exit-status: 127 term-signal: #f stop-signal: #f>
phase `generate-components.xml' failed after 0.0 seconds
command "./components.sh" "maven-settings-builder/src/main/java" "build/classes/META-INF/plexus/components.xml" failed with status 127
builder for `/gnu/store/czr1iwlh0krl0qwskkg6s862x2r9shhy-maven-settings-builder-3.0.drv' failed with exit code 1
build of /gnu/store/czr1iwlh0krl0qwskkg6s862x2r9shhy-maven-settings-builder-3.0.drv failed



--
Furthermore, I consider that nonfree software must be eradicated.

Cheers,
Bruno.
?