diff mbox series

[bug#54216,v4] gnu: shepherd-for-guix: New package for use in Guix.

Message ID 20220321151410.21398-1-attila@lendvai.name
State New
Headers show
Series [bug#54216,v4] gnu: shepherd-for-guix: New package for use in Guix. | expand

Checks

Context Check Description
cbaines/comparison success View comparision
cbaines/git branch success View Git branch
cbaines/applying patch success View Laminar job
cbaines/issue success View issue

Commit Message

Attila Lendvai March 21, 2022, 3:14 p.m. UTC
This also updates shepherd-for-guix to the latest commit, so that the two
variants have a different version.

* gnu/packages/admin.scm (shepherd-for-guix): New variable.
---

v4: update to build the latest shepherd that now contains
the #:resource-limits commit.

 gnu/packages/admin.scm    | 49 +++++++++++++++++++++++++++++++++++++++
 gnu/services/shepherd.scm |  2 +-
 2 files changed, 50 insertions(+), 1 deletion(-)

Comments

Ludovic Courtès March 21, 2022, 3:41 p.m. UTC | #1
Hi Attila,

Attila Lendvai <attila@lendvai.name> skribis:

> This also updates shepherd-for-guix to the latest commit, so that the two
> variants have a different version.
>
> * gnu/packages/admin.scm (shepherd-for-guix): New variable.

Apologies for nor chiming in earlier.

Normally Guix provides packages for releases rather than snapshots.

In this case, since we’re also upstream, we could make a new Shepherd
release and update the ‘shepherd’ package in Guix.  I wasn’t sure this
was necessary yet, but may it is?  WDYT?

Thanks,
Ludo’.
Simon Tournier March 21, 2022, 4:12 p.m. UTC | #2
Hi Ludo,

On Mon, 21 Mar 2022 at 17:03, Ludovic Courtès <ludo@gnu.org> wrote:

> Normally Guix provides packages for releases rather than snapshots.

Yes, but fetching from Git instead of URL tarball does not mean not a
release. ;-)  Well, fetching from Git would ease the use for snapshots
via transformation.  Other said, the source can point to a Git tagged
release, then people interested in very recent Shepherd can just apply
a transformation.

> In this case, since we’re also upstream, we could make a new Shepherd
> release and update the ‘shepherd’ package in Guix.  I wasn’t sure this
> was necessary yet, but may it is?  WDYT?

I think the switch of source would ease the cycle as Attila is proposing.


Cheers,
simon
diff mbox series

Patch

diff --git a/gnu/packages/admin.scm b/gnu/packages/admin.scm
index c8f91aab0d..27fc33e990 100644
--- a/gnu/packages/admin.scm
+++ b/gnu/packages/admin.scm
@@ -307,6 +307,55 @@  (define-public shepherd
     (license license:gpl3+)
     (home-page "https://www.gnu.org/software/shepherd/")))
 
+;; This is the Shepherd package used by Guix.  This package variant
+;; allows us to add new features and fix bugs in Shepherd and use the
+;; new features in Guix, without having to go through the 'staging'
+;; branch, and without having to wait for a new release, see
+;; [TODO] in the manual.
+(define-public shepherd-for-guix
+  (let* ((version "0.8.1")
+         ;; If it's an unreleased commit:
+         (commit "3ee9a7193d73821d6f1dd76a745ed5e4bb1a78c8")
+         ;; Use the below form if it's a release, and also set REVISION to #f.
+         ;; (commit (string-append "v" version))
+         (revision "1"))
+    (package
+      (inherit shepherd)
+      (version (if revision
+                   (git-version version revision commit)
+                   version))
+      (source
+       (origin
+         (inherit (package-source shepherd))
+         (method git-fetch)
+         (uri (git-reference
+               ;; Build from git and add Autotools inputs, to make developing
+               ;; Shepherd easier. It enables easier package inheritance.
+               (url "https://git.savannah.gnu.org/git/shepherd.git/")
+               (commit commit)))
+         (snippet #f) ; TODO delete this once parent is refactored.
+         (sha256
+          (base32
+           "07zaazw33p98n38j9hgjaipjvbh9mf0x3b5nbri5nyrxbgn0vvvb"))))
+      ;; TODO merge this back into the parent with a patch to staging.
+      (arguments
+       (append
+        (package-arguments shepherd)
+        '(#:phases
+          (modify-phases %standard-phases
+            (delete 'strip) ; Avoid some warnings from stripping .go files.
+            (add-after 'unpack 'patch-source
+              (lambda _
+                ;; Build with -O1 to work around <https://bugs.gnu.org/48368>.
+                (substitute* "Makefile.am"
+                  (("compile --target")
+                   "compile -O1 --target"))))))))
+      (native-inputs
+       (modify-inputs (package-native-inputs shepherd)
+         (prepend autoconf automake gettext-minimal help2man texinfo)))
+      (description "A package variant for use in Guix. It helps lowering
+the build time of Guix when working on Shepherd."))))
+
 (define-public guile2.2-shepherd
   (package
     (inherit shepherd)
diff --git a/gnu/services/shepherd.scm b/gnu/services/shepherd.scm
index b44dbf9d9f..991194ffe6 100644
--- a/gnu/services/shepherd.scm
+++ b/gnu/services/shepherd.scm
@@ -88,7 +88,7 @@  (define-record-type* <shepherd-configuration>
   shepherd-configuration make-shepherd-configuration
   shepherd-configuration?
   (shepherd shepherd-configuration-shepherd
-            (default shepherd)) ; file-like
+            (default shepherd-for-guix)) ; file-like
   (services shepherd-configuration-services
             (default '()))) ; list of <shepherd-service>