diff mbox series

[bug#44253] gnu: Add guile-filesystem.

Message ID 20201027125552.20573-1-leo.prikler@student.tugraz.at
State Accepted
Headers show
Series [bug#44253] gnu: Add guile-filesystem. | expand

Checks

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

Commit Message

Leo Prikler Oct. 27, 2020, 12:55 p.m. UTC
* gnu/packages/guile-xyz.scm (guile-filesystem): New variable.
(guile2.0-filesystem guile2.2-filesystem): New variable.
---
 gnu/packages/guile-xyz.scm | 40 ++++++++++++++++++++++++++++++++++++++
 1 file changed, 40 insertions(+)

Comments

Ludovic Courtès Oct. 28, 2020, 3:21 p.m. UTC | #1
Hi,

Leo Prikler <leo.prikler@student.tugraz.at> skribis:

> * gnu/packages/guile-xyz.scm (guile-filesystem): New variable.
> (guile2.0-filesystem guile2.2-filesystem): New variable.

Applied, thanks!

However, note that I would not recommend adding 2.0/2.2 variants unless
we have a clear use case for it in Guix.

With my Guile hat on, I’d also recommend against using the (ice-9 …)
name space, which is in Guile’s backyard.  :-)

Ludo’.
Leo Prikler Oct. 28, 2020, 3:43 p.m. UTC | #2
Hi,

Am Mittwoch, den 28.10.2020, 16:21 +0100 schrieb Ludovic Courtès:
> Hi,
> 
> Leo Prikler <leo.prikler@student.tugraz.at> skribis:
> 
> > * gnu/packages/guile-xyz.scm (guile-filesystem): New variable.
> > (guile2.0-filesystem guile2.2-filesystem): New variable.
> 
> Applied, thanks!
> 
> However, note that I would not recommend adding 2.0/2.2 variants
> unless
> we have a clear use case for it in Guix.
In this case I simply wanted to make sure, that people could include it
in projects, whose other dependencies are still stuck on Guile 2.0 or
Guile 2.2 in Guix.  Not really a "clear use case", but that's my
reasoning.
On the topic of those variants, however, would it perhaps be wiser to
make this a package-mapping instead, or is there a case where `--with-
input=guile=guile@$EFFECTIVE_VERSION` would be ill-advised?

> With my Guile hat on, I’d also recommend against using the (ice-9 …)
> name space, which is in Guile’s backyard.  :-)
> 
> Ludo’.
I thought poking into Guile's backyard was a best practice in order to
get the attention of Guile maintainers, as with guile-readline and
guile-colorized ;)
My plan is also to contribute it to Guile proper at some point and then
perhaps keep that repository as a backport for a while until all
relevant versions of Guile have a "proper" filesystem module.

Regards, Leo
Ludovic Courtès Oct. 29, 2020, 11:16 p.m. UTC | #3
Hi Leo!

Leo Prikler <leo.prikler@student.tugraz.at> skribis:

> Am Mittwoch, den 28.10.2020, 16:21 +0100 schrieb Ludovic Courtès:
>> Hi,
>> 
>> Leo Prikler <leo.prikler@student.tugraz.at> skribis:
>> 
>> > * gnu/packages/guile-xyz.scm (guile-filesystem): New variable.
>> > (guile2.0-filesystem guile2.2-filesystem): New variable.
>> 
>> Applied, thanks!
>> 
>> However, note that I would not recommend adding 2.0/2.2 variants
>> unless
>> we have a clear use case for it in Guix.
> In this case I simply wanted to make sure, that people could include it
> in projects, whose other dependencies are still stuck on Guile 2.0 or
> Guile 2.2 in Guix.  Not really a "clear use case", but that's my
> reasoning.

I guess that’s very valid use case for you as the upstream developer of
‘guile-filesystem’, but not so much for a downstream user of Guix.

> On the topic of those variants, however, would it perhaps be wiser to
> make this a package-mapping instead, or is there a case where `--with-
> input=guile=guile@$EFFECTIVE_VERSION` would be ill-advised?

Unfortunately, ‘--with-input=guile=…’ triggers a world rebuild because
Guile appears deep down in the graph.  Otherwise it would be a good use
case.  :-)

>> With my Guile hat on, I’d also recommend against using the (ice-9 …)
>> name space, which is in Guile’s backyard.  :-)
>> 
>> Ludo’.
> I thought poking into Guile's backyard was a best practice in order to
> get the attention of Guile maintainers, as with guile-readline and
> guile-colorized ;)

Heheh, true!  But note that guile-readline is actually part of Guile.

> My plan is also to contribute it to Guile proper at some point and then
> perhaps keep that repository as a backport for a while until all
> relevant versions of Guile have a "proper" filesystem module.

Make sense.  (I’d recommed “file system” as two words, then.  :-))

Cheers,
Ludo’.
diff mbox series

Patch

diff --git a/gnu/packages/guile-xyz.scm b/gnu/packages/guile-xyz.scm
index 12ded23990..4322d3028b 100644
--- a/gnu/packages/guile-xyz.scm
+++ b/gnu/packages/guile-xyz.scm
@@ -31,6 +31,7 @@ 
 ;;; Copyright © 2020 Masaya Tojo <masaya@tojo.tokyo>
 ;;; Copyright © 2020 Jesse Gibbons <jgibbons2357@gmail.com>
 ;;; Copyright © 2020 Mike Rosset <mike.rosset@gmail.com>
+;;; Copyright © 2020 Leo Prikler <leo.prikler@student.tugraz.at>
 ;;;
 ;;; This file is part of GNU Guix.
 ;;;
@@ -620,6 +621,45 @@  is not available for Guile 2.0.")
 (define-public guile3.0-fibers
   (deprecated-package "guile3.0-fibers" guile-fibers))
 
+(define-public guile-filesystem
+  (package
+    (name "guile-filesystem")
+    (version "0.1.0")
+    (source (origin
+              (method git-fetch)
+              (uri (git-reference
+                    (url "https://gitlab.com/leoprikler/guile-filesystem.git")
+                    (commit version)))
+              (file-name (git-file-name name version))
+              (sha256
+               (base32
+                "1shmkc0y9r2sj3kw7hrsnamnp7y8xifkhf3m3rnfxczqg63k67vy"))))
+    (build-system gnu-build-system)
+    (native-inputs
+     `(("autoconf" ,autoconf-wrapper)
+       ("automake" ,automake)
+       ("pkg-config" ,pkg-config)
+       ("texinfo" ,texinfo)))
+    (inputs
+     `(("guile" ,guile-3.0)))
+    (home-page "https://gitlab.com/leoprikler/guile-filesystem")
+    (synopsis "Complementary library to Guile's built-in file system procedures")
+    (description "@code{guile-filesystem} provides a set of utility functions,
+that augment Guile's support for handling files and their names.")
+    (license license:lgpl3+)))
+
+(define-public guile2.0-filesystem
+  (package
+    (inherit guile-filesystem)
+    (name "guile2.0-filesystem")
+    (inputs `(("guile" ,guile-2.0)))))
+
+(define-public guile2.2-filesystem
+  (package
+    (inherit guile-filesystem)
+    (name "guile2.2-filesystem")
+    (inputs `(("guile" ,guile-2.2)))))
+
 (define-public guile-syntax-highlight
   (package
     (name "guile-syntax-highlight")