[bug#72925] adding jpm package
Commit Message
Change-Id: I730ef2f5c874c5142a580a42af76180e95d93ccd
---
gnu/packages/lisp.scm | 52 +++++++++++++++++++++++++++++++++++++++++++
1 file changed, 52 insertions(+)
base-commit: e05f0e9832326703fa90a02559f1a4b44e4401ad
Comments
Hi Omar,
Thank you for submitting this patch. A few comments:
Omar Bassam <omar.bassam88@gmail.com> writes:
> Change-Id: I730ef2f5c874c5142a580a42af76180e95d93ccd
> ---
> gnu/packages/lisp.scm | 52 +++++++++++++++++++++++++++++++++++++++++++
> 1 file changed, 52 insertions(+)
>
> diff --git a/gnu/packages/lisp.scm b/gnu/packages/lisp.scm
> index 5d4399f145..96698d375d 100644
Could you please update the reroll-count when you send amendments to the
patch? IIUC, this version should have been v2.
> +(define-public jpm
> + (package
> + (name "jpm")
> + (version "1.1.0")
> + (source (origin
> + (method git-fetch)
> + (uri (git-reference
> + (url "https://github.com/janet-lang/jpm.git")
> + (commit (string-append "v" version))))
> + (file-name (git-file-name name version))
> + (sha256 (base32 "05rdxigmiy7vf93s16a8n2029lq33073jccz1rjl4iisxj6piw4l"))))
> + (build-system trivial-build-system)
> ...
> + (substitute* (string-append %output "/bin/jpm")
> + (("/usr/bin/env janet")
> + (string-append #$janet "/bin/janet")))
Is my understanding correct that you're updating the shebang line here?
If so, would it be better to use the copy-build-system instead? If not,
could you please elaborate? If copy-build-system does indeed turn out
to be better suited, could you please send v3 of the patch?
Thank you for taking the time to look into my patch. Sorry, I'm new to Guix
and to this workflow. So, forgive me if my questions look a bit naive:
1. What do you mean by reroll count for the patch?
2. I looked at the copy-build-system documentation. I'm not sure how it can
be used here. I'm not just updating the shebang. As you can already see in
the patch, I'm doing a lot of string substitutions in the source code
itself because some values are hard coded. That's why I preferred to use
the trivial-build-system to have more control of what I need to substitute.
Thanks,
Omar
On Wed, 18 Sept 2024 at 16:19, Suhail Singh <suhailsingh247@gmail.com>
wrote:
> Hi Omar,
>
> Thank you for submitting this patch. A few comments:
>
> Omar Bassam <omar.bassam88@gmail.com> writes:
>
> > Change-Id: I730ef2f5c874c5142a580a42af76180e95d93ccd
> > ---
> > gnu/packages/lisp.scm | 52 +++++++++++++++++++++++++++++++++++++++++++
> > 1 file changed, 52 insertions(+)
> >
> > diff --git a/gnu/packages/lisp.scm b/gnu/packages/lisp.scm
> > index 5d4399f145..96698d375d 100644
>
> Could you please update the reroll-count when you send amendments to the
> patch? IIUC, this version should have been v2.
>
> > +(define-public jpm
> > + (package
> > + (name "jpm")
> > + (version "1.1.0")
> > + (source (origin
> > + (method git-fetch)
> > + (uri (git-reference
> > + (url "https://github.com/janet-lang/jpm.git")
> > + (commit (string-append "v" version))))
> > + (file-name (git-file-name name version))
> > + (sha256 (base32
> "05rdxigmiy7vf93s16a8n2029lq33073jccz1rjl4iisxj6piw4l"))))
> > + (build-system trivial-build-system)
> > ...
> > + (substitute* (string-append %output "/bin/jpm")
> > + (("/usr/bin/env janet")
> > + (string-append #$janet "/bin/janet")))
>
> Is my understanding correct that you're updating the shebang line here?
> If so, would it be better to use the copy-build-system instead? If not,
> could you please elaborate? If copy-build-system does indeed turn out
> to be better suited, could you please send v3 of the patch?
>
> --
> Suhail
>
Omar Bassam <omar.bassam88@gmail.com> writes:
> Thank you for taking the time to look into my patch. Sorry, I'm new to Guix
> and to this workflow. So, forgive me if my questions look a bit naive:
> 1. What do you mean by reroll count for the patch?
Please refer to the man page of git-format-patch and look for
--reroll-count :
#+begin_quote
-v <n>, --reroll-count=<n>
Mark the series as the <n>-th iteration of the topic. The output
filenames have v<n> prepended to them, and the subject prefix
("PATCH" by default, but configurable via the --subject-prefix
option) has ` v<n>` appended to it. E.g. --reroll-count=4 may
produce v4-0001-add-makefile.patch file that has "Subject: [PATCH
v4 1/20] Add makefile" in it. <n> does not have to be an integer
(e.g. "--reroll-count=4.4", or "--reroll-count=4rev2" are allowed),
but the downside of using such a reroll-count is that the
range-diff/interdiff with the previous version does not state
exactly which version the new iteration is compared against.
#+end_quote
> 2. I looked at the copy-build-system documentation. I'm not sure how it can
> be used here. I'm not just updating the shebang. As you can already see in
> the patch, I'm doing a lot of string substitutions in the source code
> itself because some values are hard coded. That's why I preferred to use
> the trivial-build-system to have more control of what I need to substitute.
Based on my understanding of the patch you are copying files, updating
some references in files, and setting environment variables. I believe
all of these are possible via the copy-build-system as well which is
described as:
#+begin_quote
;; Standard build procedure for simple packages that don't require much
;; compilation, mostly just copying files around. This is implemented as an
;; extension of `gnu-build-system'.
#+end_quote
If you'd like to learn more, you can grep under ./gnu/packages and look
at some instances where it's used. I don't have experience with the
trivial-build-system, which is why I wondered.
> + (setenv "PREFIX" %output)
> + (setenv "JANET_PREFIX" %output)
> + (setenv "JANET_LIBPATH" (string-append %output "/lib/janet"))
> + (setenv "JANET_MODPATH" (string-append %output "/lib/janet"))
What would be a way to test that the above is doing the "correct" thing?
Is there a sequence of steps that I can evaluate which will yield a
different outcome depending on whether or not the above accomplishes
what it intends to? Put another way, what breaks when the above aren't
set (and how do I observe that failure)?
@@ -29,6 +29,7 @@
;;; Copyright © 2024 Andreas Enge <andreas@enge.fr>
;;; Copyright © 2024 bigbug <bigbookofbug@proton.me>
;;; Copyright © 2024 Ashish SHUKLA <ashish.is@lostca.se>
+;;; Copyright © 2024 Omar Bassam <omar.bassam88@gmail.com>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -917,6 +918,57 @@ (define-public janet
assembler, PEG) is less than 1MB.")
(license license:expat)))
+(define-public jpm
+ (package
+ (name "jpm")
+ (version "1.1.0")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/janet-lang/jpm.git")
+ (commit (string-append "v" version))))
+ (file-name (git-file-name name version))
+ (sha256 (base32 "05rdxigmiy7vf93s16a8n2029lq33073jccz1rjl4iisxj6piw4l"))))
+ (build-system trivial-build-system)
+ (arguments
+ (list
+ #:modules `((guix build utils))
+ #:builder #~(begin
+ (use-modules (guix build utils))
+ (mkdir %output)
+ (for-each (lambda (dir) (mkdir (string-append %output "/" dir)))
+ '("bin" "lib" "share" "share/man" "lib/janet"
+ "lib/janet/jpm" "share/man/man1"))
+ (copy-recursively (assoc-ref %build-inputs "source") "source")
+ (chdir "source")
+ (substitute* "configs/linux_config.janet"
+ (("auto-shebang true") "auto-shebang false"))
+ (substitute* "configs/linux_config.janet"
+ (("/usr/local") %output))
+ (substitute* "jpm/shutil.janet"
+ (("cp") (string-append #$coreutils "/bin/cp")))
+ (substitute* "jpm/declare.janet"
+ (("chmod") (string-append #$coreutils "/bin/chmod")))
+ (setenv "PREFIX" %output)
+ (setenv "JANET_PREFIX" %output)
+ (setenv "JANET_LIBPATH" (string-append %output "/lib/janet"))
+ (setenv "JANET_MODPATH" (string-append %output "/lib/janet"))
+ (system* (string-append #$janet "/bin/janet")
+ "bootstrap.janet" "configs/linux_config.janet")
+ (substitute* (string-append %output "/bin/jpm")
+ (("/usr/bin/env janet")
+ (string-append #$janet "/bin/janet")))
+ (copy-recursively (string-append #$janet "/include/janet")
+ (string-append %output "/include/janet"))
+ (copy-recursively (string-append #$janet "/lib")
+ (string-append %output "/lib")))))
+ (inputs (list janet coreutils))
+ (home-page "https://janet-lang.org/")
+ (synopsis "Janet Project Manager for the Janet programming language")
+ (description "JPM is the Janet Project Manager tool. It is for automating
+builds and downloading dependencies of Janet projects.")
+ (license license:expat)))
+
(define-public lisp-repl-core-dumper
(package
(name "lisp-repl-core-dumper")