Subject: [bug#60827] [PATCH 0/3] Add perl-par, xforms, and dozenal package definitions

From: Maxim Cournoyer <[email-masked]>
Date: Tue, 21 Mar 2023 21:44:21 -0400

Hi,

Jake Leporte <[email-masked]> writes:

> * gnu/packges/perl.scm (perl-par): New variable.
> ---
>  gnu/packages/perl.scm | 20 ++++++++++++++++++++
>  1 file changed, 20 insertions(+)

Thank you for your contribution!

I've now installed the four changes, with the modifications below:

for perl-par, I've added your copyright:

--8<---------------cut here---------------start------------->8---
modified   gnu/packages/perl.scm
@@ -36,6 +36,7 @@
 ;;; Copyright © 2022 gemmaro <[email-masked]>
 ;;; Copyright © 2023 Mădălin Ionel Patrașcu <[email-masked]>
 ;;; Copyright © 2023 Andreas Enge <[email-masked]>
+;;; Copyright © 2023 Jake Leporte <[email-masked]>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
--8<---------------cut here---------------end--------------->8---

for xforms, I've added a trailing period to the comment, corrected the
version to "1.3.0" which was the latest release, and reworded the
description a bit.

--8<---------------cut here---------------start------------->8---
modified   gnu/packages/xdisorg.scm
@@ -58,6 +58,7 @@
 ;;; Copyright © 2022 Wamm K. D. <[email-masked]>
 ;;; Copyright © 2022 Tobias Kortkamp <[email-masked]>
 ;;; Copyright © 2023 Yovan Naumovski <[email-masked]>
+;;; Copyright © 2023 Jake Leporte <[email-masked]>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -3451,13 +3452,13 @@ (define-public wvkbd
                    license:gpl3+))))              ;the rest is GPLv3+
 
 (define-public xforms
-  ;; The latest stable release fails with a linker error, so use an updated
-  ;; version
+  ;; The latest stable release is ancient (2014) and fails with a linker
+  ;; error, so use the last commit.
   (let ((revision "1")
         (commit "2c1a9f151baf50887a517280645ec23379fb96f8"))
     (package
       (name "xforms")
-      (version (git-version "1.2.4" revision commit))
+      (version (git-version "1.3.0" revision commit))
       (source (origin
                 (method git-fetch)
                 (uri (git-reference
@@ -3488,8 +3489,8 @@ (define-public xforms
       (home-page "http://xforms-toolkit.org/")
       (synopsis "GUI toolkit for X based on the X11 Xlib library")
       (description
-       "XForms is a graphical user interface toolkit for X based on the X11 Xlib
-library.  I.e., it allows you to create windows, containing all kinds of
+       "XForms is a graphical user interface toolkit for X based on the X11
+Xlib library.  It allows you to create windows, containing all kinds of
 widgets (buttons, sliders, browsers, menus etc.) with a few lines of code and
 then attach actions to the widgets, i.e., have some function called when a
 button is pressed.  To make this even easier XForms comes with a program
--8<---------------cut here---------------end--------------->8---

for xforms-gl, I've used package/inherit, which on top of inheritance
confers the same replacement properties when there are grafts.  This is
to be used for variant packages that build from the same source code.

--8<---------------cut here---------------start------------->8---
modified   gnu/packages/xdisorg.scm
@@ -3499,8 +3499,7 @@ (define-public xforms
       (license license:lgpl2.1+))))
 
 (define-public xforms-gl
-  (package
-    (inherit xforms)
+  (package/inherit xforms
     (name "xforms-gl")
     (propagated-inputs (modify-inputs (package-propagated-inputs xforms)
                          (append mesa)))
--8<---------------cut here---------------end--------------->8---

and for dozenal, I've used the 'this-package-input' procedure
recommended by another reviewer, re-flowed the paragraphs to use a width
of 80 characters, used rename-file instead of copy-file + delete-file
and sorted the inputs.

--8<---------------cut here---------------start------------->8---
1 file changed, 24 insertions(+), 30 deletions(-)
gnu/packages/maths.scm | 54 ++++++++++++++++++++++++------------------------------

modified   gnu/packages/maths.scm
@@ -59,6 +59,7 @@
 ;;; Copyright © 2022 Maximilian Heisinger <[email-masked]>
 ;;; Copyright © 2022 Akira Kyle <[email-masked]>
 ;;; Copyright © 2022 Roman Scherer <[email-masked]>
+;;; Copyright © 2023 Jake Leporte <[email-masked]>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -463,6 +464,7 @@ (define-public dionysus
     (home-page "https://www.gnu.org/software/dionysus/")))
 
 (define-public dozenal
+  ;; There is no recent release, so use the latest commit.
   (let ((revision "1")
         (commit "328bc03ad544179f2cccda36763358c4216f188e"))
     (package
@@ -482,13 +484,12 @@ (define-public dozenal
       (arguments
        (list
         ;; Some test scripts are included, but no makefile-driven
-        ;; tests, and they are all quite manual to run and check
+        ;; tests, and they are all quite manual to run and check.
         #:tests? #f
-        ;; Running with `make -j' causes the build to fail.
-        ;; This is likely because this project uses the
-        ;; "recursive make" structure, where each
-        ;; subdirectory contains its own make file, which is
-        ;; called by the top-level makefile.
+        ;; Running with `make -j' causes the build to fail.  This is likely
+        ;; because this project uses the "recursive make" structure, where
+        ;; each subdirectory contains its own make file, which is called by
+        ;; the top-level makefile.
         #:parallel-build? #f
         #:make-flags
         #~(list (string-append "prefix=" #$output))
@@ -499,7 +500,8 @@ (define-public dozenal
                 (chdir "dozenal")))
             (add-after 'chdir 'patch-lua-references
               (lambda _
-                (let ((lua-name (strip-store-file-name #$lua)))
+                (let ((lua-name (strip-store-file-name
+                                 #$(this-package-input "lua"))))
                   (substitute* '("dozcal/Makefile"
                                  "dozlua/Makefile")
                     (("lua52")
@@ -527,40 +529,32 @@ (define-public dozenal
                                                  "/share/man/man1/"
                                                  prog ".1")))
                      (mkdir-p (dirname dst))
-                     (copy-file orig dst)
-                     (delete-file orig)
+                     (rename-file orig dst)
                      (mkdir-p (dirname man-dst))
-                     (copy-file man-orig man-dst)
-                     (delete-file man-orig)))
+                     (rename-file man-orig man-dst)))
                  '("xdozdc" "gdozdc"))
-                (wrap-program
-                    (string-append #$output:gui "/bin/" "gdozdc")
-                  `("PATH" =
-                    (,(string-append #$output "/bin")))
-                  `("PERL5LIB" =
-                    (,(getenv "PERL5LIB")))))))))
+                (wrap-program (string-append #$output:gui "/bin/" "gdozdc")
+                  `("PATH" = (,(string-append #$output "/bin")))
+                  `("PERL5LIB" = (,(getenv "PERL5LIB")))))))))
       (outputs '("out" "gui"))
       (native-inputs (list groff pkg-config))
-      (inputs (list bash-minimal ;since wrap-program is used
-                    ncurses
+      (inputs (list bash-minimal        ;for wrap-program
                     libhdate
                     lua
+                    ncurses
                     perl
                     perl-tk
                     perl-par
                     xforms))
-      (synopsis
-       "Suite of dozenal programs, including converters, a calculator, and date
-program")
+      (synopsis "Suite of dozenal programs")
       (description
-       "The dozenal suite is a set of programs designed to assist with
-working in the dozenal (also called \"duodecimal\" or \"base twelve\")
-system.  It includes number converters (dozenal-to-decimal and
-decimal-to-dozenal), an RPN calculator, a graphical calculator, a
-metric system converter (works with imperial, U.S. customary, SI
-metric, and the dozenal TGM), a pretty-printer for dozenal numbers, a
-date-and-time program, and a dozenal calendar programs, complete with
-events and to-dos.")
+       "The dozenal suite is a set of programs designed to assist with working
+in the dozenal (also called \"duodecimal\" or \"base twelve\") system.  It
+includes number converters (dozenal-to-decimal and decimal-to-dozenal), an RPN
+calculator, a graphical calculator, a metric system converter (works with
+imperial, U.S. customary, SI metric, and the dozenal TGM), a pretty-printer
+for dozenal numbers, a date-and-time program, and a dozenal calendar programs,
+complete with events and to-dos.")
       (home-page "https://codeberg.org/dgoodmaniii/dozenal")
       (license license:gpl3+))))
 --8<---------------cut here---------------end--------------->8---

Thanks again,

-- 
Maxim