GNU bug report logs - #48369
[PATCH] gnu: Add rset.

Previous Next

Package: guix-patches;

Reported by: Stefan Reichör <stefan <at> xsteve.at>

Date: Tue, 11 May 2021 20:59:01 UTC

Severity: normal

Tags: patch

To reply to this bug, email your comments to 48369 AT debbugs.gnu.org.

Toggle the display of automated, internal messages from the tracker.

View this report as an mbox folder, status mbox, maintainer mbox


Report forwarded to guix-patches <at> gnu.org:
bug#48369; Package guix-patches. (Tue, 11 May 2021 20:59:01 GMT) Full text and rfc822 format available.

Acknowledgement sent to Stefan Reichör <stefan <at> xsteve.at>:
New bug report received and forwarded. Copy sent to guix-patches <at> gnu.org. (Tue, 11 May 2021 20:59:01 GMT) Full text and rfc822 format available.

Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):

From: Stefan Reichör <stefan <at> xsteve.at>
To: guix-patches <at> gnu.org
Cc: Stefan Reichör <stefan <at> xsteve.at>
Subject: [PATCH] gnu: Add rset.
Date: Tue, 11 May 2021 22:58:31 +0200
* gnu/packages/admin.scm (rset): New variable.
---
 gnu/packages/admin.scm | 35 +++++++++++++++++++++++++++++++++++
 1 file changed, 35 insertions(+)

diff --git a/gnu/packages/admin.scm b/gnu/packages/admin.scm
index fdcbf28a6a..c17609c442 100644
--- a/gnu/packages/admin.scm
+++ b/gnu/packages/admin.scm
@@ -3371,6 +3371,41 @@ Intel DRM Driver.")
     (supported-systems '("i686-linux" "x86_64-linux"))
     (license license:expat)))
 
+(define-public rset
+  (package
+    (name "rset")
+    (version "2.1")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/eradman/rset/")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "150my3lvql3m6jn1c12x81jx990nqh5g02v6r9a5j51ds39shr39"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:phases
+       (modify-phases %standard-phases
+         (replace 'configure
+           (lambda* (#:key outputs #:allow-other-keys)
+             (invoke "./configure"))))
+       #:make-flags
+       (list (string-append "PREFIX=" (assoc-ref %outputs "out"))
+             ,(string-append "CC=" (cc-for-target)))
+       #:tests? #f)) ; TODO: test target requires ruby, curl, uname
+    (home-page "http://scriptedconfiguration.org")
+    (synopsis "Configure systems using any scripting language")
+    (description
+     "rset(1) operates by staging files on a remote system, then executing
+instructions embedded in the pln(5) files.  Any interpreter capable of running
+scripts read over a pipe may be specified.  The bundled utilities rinstall(1)
+and rsub(1) provide an easy means of installing and modifying configuration
+files, and capabilities are added by writing utility scripts which are sent
+along with configuration data.")
+    (license license:isc)))
+
 (define-public fabric
   (package
     (name "fabric")
-- 
2.25.1





Merged 48360 48361 48362 48363 48364 48369. Request was from Sarah Morgensen <iskarian <at> mgsn.dev> to control <at> debbugs.gnu.org. (Sat, 07 Aug 2021 06:09:02 GMT) Full text and rfc822 format available.

Disconnected #48369 from all other report(s). Request was from Sarah Morgensen <iskarian <at> mgsn.dev> to control <at> debbugs.gnu.org. (Sat, 07 Aug 2021 06:45:01 GMT) Full text and rfc822 format available.

Information forwarded to guix-patches <at> gnu.org:
bug#48369; Package guix-patches. (Mon, 09 Aug 2021 00:27:02 GMT) Full text and rfc822 format available.

Message #12 received at 48369 <at> debbugs.gnu.org (full text, mbox):

From: Sarah Morgensen <iskarian <at> mgsn.dev>
To: Stefan Reichör <stefan <at> xsteve.at>
Cc: 48369 <at> debbugs.gnu.org
Subject: Re: bug#48369: [PATCH] gnu: Add rset.
Date: Sun, 08 Aug 2021 17:26:26 -0700
[Message part 1 (text/plain, inline)]
Hello Stefan,

Thanks for the patch.  Sorry it's taken so long for someone to take a
look at this!  This utility certainly looks interesting.

I'm not a committer, but I tested out this patch.  It doesn't apply on
master anymore, so I manually applied it and was able to build it.
However, it looks like it expects a number of utilities to be in
specific places, such as /usr/bin/install (which caused rinstall to
just... do nothing).

It could also be problematic if it's attempting to invoke such absolute
paths on a remote machine.  I'm not sure exactly how rset works, though.

I was able to enable and pass tests with the modifications in the patch
attached below.  I don't know rset itself though, so I don't know if
there might be other hardcoded things that need to be substituted.  I
also bumped it to 2.2 and made a few minor tweaks to the description.

I noticed you didn't add a copyright line, but I wasn't sure whether the
omission was intentional, so I didn't add one for you. Go ahead and send
an updated patch to this bug number (48369 <at> debbugs.gnu.org) if you'd
like to add one, or make any other changes :)

The following is after the modifications I've made:

* Package review checklist (WIP - comments welcome!)
  A check indicates that I've verified the item.

1. [X] Package builds (guix build package)
     [X] x86_64  [ ] aarch64  [ ] armhf     [ ] powerpc64le
     [ ] i686    [ ] i586     [ ] mips64le
2. [X] Build is reproducible (guix build --rounds=n package)
3. [X] Tests enabled (if available) or disabled with in-source comment
4. [X] No extraneous dependencies (guix size package)
5. [X] No unnecessary pre-built binaries/blobs
6. [X] Dependencies unvendored when available in Guix
7. [X] Cross-compile friendly (cc-for-target, patches with inputs)
8. [X] License matches source
9. [X] No problematic lints (guix lint package)
10. [X] Formatting follows guidelines
    - [X] Lines wrap at 80 characters
    - [X] Indentation passes etc/indent-code.el
    - [X] Two spaces used between sentences

New packages:
11. [X] Source url is robust
    * mirror:// used with url-fetch when possible
    * No auto-generated archives from source repo (prefer cloning)
12. [X] Synopsis is short, descriptive, and meaningful to a wide audience
13. [X] Description is objective, takes 5-10 lines, uses full sentences,
    and provides the information users need to decide whether the
    software fits their needs.

Stefan Reichör <stefan <at> xsteve.at> writes:

> * gnu/packages/admin.scm (rset): New variable.
> ---
>  gnu/packages/admin.scm | 35 +++++++++++++++++++++++++++++++++++
>  1 file changed, 35 insertions(+)
>
> diff --git a/gnu/packages/admin.scm b/gnu/packages/admin.scm
> index fdcbf28a6a..c17609c442 100644
> --- a/gnu/packages/admin.scm
> +++ b/gnu/packages/admin.scm
> @@ -3371,6 +3371,41 @@ Intel DRM Driver.")
>      (supported-systems '("i686-linux" "x86_64-linux"))
>      (license license:expat)))
>  
> +(define-public rset
> +  (package
> +    (name "rset")
> +    (version "2.1")
> +    (source
> +     (origin
> +       (method git-fetch)
> +       (uri (git-reference
> +             (url "https://github.com/eradman/rset/")
> +             (commit version)))
> +       (file-name (git-file-name name version))
> +       (sha256
> +        (base32 "150my3lvql3m6jn1c12x81jx990nqh5g02v6r9a5j51ds39shr39"))))
> +    (build-system gnu-build-system)
> +    (arguments
> +     `(#:phases
> +       (modify-phases %standard-phases
> +         (replace 'configure
> +           (lambda* (#:key outputs #:allow-other-keys)
> +             (invoke "./configure"))))
> +       #:make-flags
> +       (list (string-append "PREFIX=" (assoc-ref %outputs "out"))
> +             ,(string-append "CC=" (cc-for-target)))
> +       #:tests? #f)) ; TODO: test target requires ruby, curl, uname
> +    (home-page "http://scriptedconfiguration.org")
> +    (synopsis "Configure systems using any scripting language")
> +    (description
> +     "rset(1) operates by staging files on a remote system, then executing
> +instructions embedded in the pln(5) files.  Any interpreter capable of running
> +scripts read over a pipe may be specified.  The bundled utilities rinstall(1)
> +and rsub(1) provide an easy means of installing and modifying configuration
> +files, and capabilities are added by writing utility scripts which are sent
> +along with configuration data.")
> +    (license license:isc)))
> +
>  (define-public fabric
>    (package
>      (name "fabric")

[0001-gnu-Add-rset.patch (text/x-patch, inline)]
Subject: [PATCH] gnu: Add rset.

* gnu/packages/admin.scm (rset): New variable.
---
 gnu/packages/admin.scm | 79 ++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 79 insertions(+)

diff --git a/gnu/packages/admin.scm b/gnu/packages/admin.scm
index eda269f148..4bf17d57e5 100644
--- a/gnu/packages/admin.scm
+++ b/gnu/packages/admin.scm
@@ -142,6 +142,7 @@
   #:use-module (gnu packages tls)
   #:use-module (gnu packages version-control)
   #:use-module (gnu packages web)
+  #:use-module (gnu packages wget)
   #:use-module (gnu packages xdisorg)
   #:use-module (gnu packages xml)
   #:use-module (gnu packages xorg))
@@ -3425,6 +3426,84 @@ Intel DRM Driver.")
     (supported-systems '("i686-linux" "x86_64-linux"))
     (license license:expat)))
 
+(define-public rset
+  (package
+    (name "rset")
+    (version "2.2")
+    (source
+     (origin
+       (method git-fetch)
+       (uri (git-reference
+             (url "https://github.com/eradman/rset/")
+             (commit version)))
+       (file-name (git-file-name name version))
+       (sha256
+        (base32 "0dk75an8axf4480lirwj1vyq1nd18kq5lwz6gdg6hgk3a4rwpv8j"))))
+    (build-system gnu-build-system)
+    (arguments
+     `(#:make-flags (list (string-append "PREFIX=" %output)
+                          (string-append "CC=" ,(cc-for-target)))
+       #:test-target "test"
+       #:phases
+       (modify-phases %standard-phases
+         (add-after 'unpack 'patch-paths
+           (lambda* (#:key inputs #:allow-other-keys)
+             (substitute* "rutils.c"
+               (("/usr/bin/install")
+                (string-append (assoc-ref inputs "coreutils") "/bin/install")))
+             (substitute* "config.h"
+               (("(LOCAL_INTERPRETER \")/bin/sh" _ start)
+                (string-append start (assoc-ref inputs "bash") "/bin/sh")))
+             ;; Paths on Guix tend to be much longer, so increase buffer size.
+             (substitute* "input.h"
+               (("#define PLN_OPTION_SIZE 64")
+                "#define PLN_OPTION_SIZE 128"))))
+         (add-after 'patch-paths 'patch-tests
+           (lambda _
+             ;; Input files must be writable for pipe tests.
+             (for-each make-file-writable (find-files "tests/input"))
+             (substitute* (find-files "tests")
+               (("(#!|local_interpreter=)/bin/sh" _ start)
+                (string-append start (which "sh"))))
+             (substitute* '("tests/stubs/ssh" "tests/stubs/tar")
+               (("/bin/echo") (which "echo")))
+             (substitute* "tests/test_miniquark.rb"
+               ;; Make sure the test can see PATH.
+               ((":unsetenv_others=>true") ":unsetenv_others=>false"))
+             (substitute* '("tests/cmd_pipe_stdin.c" "tests/test_rset.rb")
+               (("/bin/cat") (which "cat"))
+               ;; /bin/cat is in a fixed-size buffer, so increase the size.
+               (("char \\*cmd_argv\\[16\\];") "char *cmd_argv[256];"))
+             (substitute* "tests/test_rset.rb"
+               (("output_size: 20") "output_size: 66")
+               (("strlen: 20") "strlen: 66")
+               (("/usr/bin/env ruby") (which "ruby"))
+               (("\"/bin/sh") (string-append "\"" (which "sh")))
+               ;; Make the sure the test can see our PATH.
+               (("\\{\"PATH\"=>\"/bin:/usr/bin\"\\}, ") ""))))
+         (replace 'configure
+           (lambda* (#:key outputs #:allow-other-keys)
+             ;; ./configure must be called with no arguments, or it fails.
+             (invoke "./configure"))))))
+    (inputs
+     `(("coreutils" ,coreutils)
+       ("bash" ,bash-minimal)))
+    (native-inputs
+     `(("ruby" ,ruby)
+       ("wget" ,wget)
+       ("inetutils" ,inetutils)))
+    (home-page "http://scriptedconfiguration.org")
+    (synopsis "Configure systems using any scripting language")
+    (description
+     "@command{rset} operates by staging files on a remote system, then
+executing instructions embedded in the @code{pln(5)} (Progressive Language
+Notation) files.  Any interpreter capable of running scripts read over a pipe
+may be specified.  The bundled utilities @command{rinstall} and @command{rsub}
+provide a means of installing and modifying configuration files, and
+capabilities are added by writing utility scripts which are sent along
+with configuration data.")
+    (license license:isc)))
+
 (define-public neofetch
   (package
     (name "neofetch")

base-commit: c8e2be3b32fe784a9db52d8a1a12902ab12ae7cb
-- 
2.31.1

[Message part 3 (text/plain, inline)]
--
Sarah

This bug report was last modified 3 years and 308 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.