Subject: Re: [bug#44176] Acknowledgement (gnu: Add bash-ctypes)

From: Zhu Zihao <[email-masked]>
Date: Sat, 24 Oct 2020 18:12:43 +0800

The git version lacks configure script, so we have to generate it first.
That means we need to add autoconf, automake and libtool to
native-inputs.

And IIUC Guix's distributing strategy is distribute a release rather
than rolling on Git. Do you think it's worth to change to git-fetch?

I move bash from inputs to native-inputs because we just need it for
test.

>From 8210f5f95ca4f33dce35ed0c9bb20c8f615ab079 Mon Sep 17 00:00:00 2001
From: Zhu Zihao <[email-masked]>
Date: Fri, 23 Oct 2020 20:47:04 +0800
Subject: [PATCH 1/2] gnu: Add bash-ctypes

* gnu/packages/bash.scm(bash-ctypes): New variable.
---
 gnu/packages/bash.scm | 33 +++++++++++++++++++++++++++++++++
 1 file changed, 33 insertions(+)

diff --git a/gnu/packages/bash.scm b/gnu/packages/bash.scm
index 47ca625d9a..f7d3cd2892 100644
--- a/gnu/packages/bash.scm
+++ b/gnu/packages/bash.scm
@@ -5,6 +5,7 @@
 ;;; Copyright © 2016, 2017, 2018, 2019 Efraim Flashner <[email-masked]>
 ;;; Copyright © 2018, 2019, 2020 Tobias Geerinckx-Rice <[email-masked]>
 ;;; Copyright © 2019 Mathieu Othacehe <[email-masked]>
+;;; Copyright © 2020 Zhu Zihao <[email-masked]>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -26,10 +27,14 @@
   #:use-module (gnu packages)
   #:use-module (gnu packages base)
   #:use-module (gnu packages bootstrap)
+  #:use-module (gnu packages compression)
+  #:use-module (gnu packages elf)
   #:use-module (gnu packages ncurses)
   #:use-module (gnu packages readline)
   #:use-module (gnu packages bison)
   #:use-module (gnu packages linux)
+  #:use-module (gnu packages libffi)
+  #:use-module (gnu packages pkg-config)
   #:use-module (gnu packages guile)
   #:use-module (guix packages)
   #:use-module (guix download)
@@ -415,3 +420,31 @@ framework for Bash.  It provides a simple way to verify that the UNIX programs
 you write behave as expected.  Bats is most useful when testing software written
 in Bash, but you can use it to test any UNIX program.")
     (license expat)))
+
+(define-public bash-ctypes
+  (package
+    (name "bash-ctypes")
+    (version "1.2")
+    (source
+     (origin
+       (method url-fetch)
+       (uri (string-append "https://github.com/taviso/ctypes.sh/releases/download/v"
+                           version "/ctypes-sh-" version ".tar.gz"))
+       (sha256
+        (base32 "0s1sifqzqmr0dnciv06yqrpzgj11d7n0gy5zaxh6b3x8bx7k75l8"))))
+    (build-system gnu-build-system)
+    (inputs
+     `(("elfutils" ,elfutils)
+       ("libelf" ,libelf)
+       ("libffi" ,libffi)
+       ("zlib" ,zlib)
+       ;; Require a bash with C plugin support to build.
+       ("bash" ,bash)))
+    (native-inputs
+     `(("pkg-config" ,pkg-config)))
+    (home-page "https://github.com/taviso/ctypes.sh")
+    (synopsis "FFI for Bash")
+    (description "Bash-ctypes is a bash plugin that provides a foreign function
+interface directly in your shell. In other words, it allows you to call routines
+in shared libraries from within bash.")
+    (license expat)))
-- 
2.28.0

>From 663104a3945696323d893443a3ab0c96c17e07e3 Mon Sep 17 00:00:00 2001
From: Zhu Zihao <[email-masked]>
Date: Fri, 23 Oct 2020 23:43:05 +0800
Subject: [PATCH 2/2] gnu: Use prefix "license:" to import (guix licenses)

* gnu/packages/bash.scm
(bash, bash-completion, bash-tap, bats, bash-ctypes)[license]:

Rename with prefix "license:".
---
 gnu/packages/bash.scm | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/gnu/packages/bash.scm b/gnu/packages/bash.scm
index f7d3cd2892..59f6e7fc69 100644
--- a/gnu/packages/bash.scm
+++ b/gnu/packages/bash.scm
@@ -23,7 +23,7 @@
 ;;; along with GNU Guix.  If not, see <http://www.gnu.org/licenses/>.
 
 (define-module (gnu packages bash)
-  #:use-module (guix licenses)
+  #:use-module ((guix licenses) #:prefix license:)
   #:use-module (gnu packages)
   #:use-module (gnu packages base)
   #:use-module (gnu packages bootstrap)
@@ -215,7 +215,7 @@ from the Korn Shell and the C Shell and new improvements of its own.  It
 allows command-line editing, unlimited command history, shell functions and
 aliases, and job control while still allowing most sh scripts to be run
 without modification.")
-     (license gpl3+)
+     (license license:gpl3+)
      (home-page "https://www.gnu.org/software/bash/"))))
 
 (define-public bash-minimal
@@ -325,7 +325,7 @@ without modification.")
      "This package provides extensions that allow Bash to provide adapted
 completion for many common commands.")
     (home-page "https://github.com/scop/bash-completion")
-    (license gpl2+)))
+    (license license:gpl2+)))
 
 (define-public bash-tap
   (package
@@ -369,7 +369,7 @@ test library")
 for Bash shell scripts and functions.  Along with the Test::More-style testing
 helpers it provides helper functions for mocking commands and in-process output
 capturing.")
-    (license expat)))
+    (license license:expat)))
 
 (define-public bats
   (package
@@ -419,7 +419,7 @@ capturing.")
 framework for Bash.  It provides a simple way to verify that the UNIX programs
 you write behave as expected.  Bats is most useful when testing software written
 in Bash, but you can use it to test any UNIX program.")
-    (license expat)))
+    (license license:expat)))
 
 (define-public bash-ctypes
   (package
@@ -447,4 +447,4 @@ in Bash, but you can use it to test any UNIX program.")
     (description "Bash-ctypes is a bash plugin that provides a foreign function
 interface directly in your shell. In other words, it allows you to call routines
 in shared libraries from within bash.")
-    (license expat)))
+    (license license:expat)))
-- 
2.28.0

david larsson writes:

> On 2020-10-23 15:49, Zhu Zihao wrote:
>> Push another commit to fix import conflict of name "zlib"
>
> Thanks for adding this package!
>
> Though, if you'd rather add a git-fetch version of it, which I think is
> generally preferred over a url-fetch of a tarball so you can more easily 
> inherit the package and just update the commit, you could perhaps edit from this
> old version:
>
> https://gitlab.com/methuselah-0/bash-coding-utils.sh/-/blob/master/guix-channel/bash-coding-utils.scm#L81
>
> Best regards,
> David

-- 
Retrieve my PGP public key: https://meta.sr.ht/~citreu.pgp

Zihao