diff mbox series

[bug#62050] gnu: Add tissue.

Message ID 20230308141221.7825-1-arunisaac@systemreboot.net
State New
Headers show
Series [bug#62050] gnu: Add tissue. | expand

Commit Message

Arun Isaac March 8, 2023, 2:12 p.m. UTC
* gnu/packages/web.scm (tissue): New variable.
---
 gnu/packages/web.scm | 56 +++++++++++++++++++++++++++++++++++++++++++-
 1 file changed, 55 insertions(+), 1 deletion(-)

Comments

Ludovic Courtès March 16, 2023, 9:50 p.m. UTC | #1
Hi!

Arun Isaac <arunisaac@systemreboot.net> skribis:

> * gnu/packages/web.scm (tissue): New variable.

[...]

> +    (source (origin
> +              (method url-fetch)
> +              (uri (string-append "https://tissue.systemreboot.net/releases/tissue-"
> +                                  version ".tar.lz"))

Note that Disarchive does not support lzip (yet).

Thus it’s be a bit more archival-friendly if you would instead either
refer to a gzip tarball or refer to the Git repo.  It’s not a blocker
though.

> +     (list #:make-flags #~(list (string-append "prefix=" #$output))
> +           #:modules `(((guix build guile-build-system)
> +                        #:select (target-guile-effective-version))
> +                       ,@%gnu-build-system-modules)

You can change the last line to just (guix build gnu-build-system).

The rest LGTM!

Next step is a system service I guess?  :-)

Thanks,
Ludo’.
Arun Isaac March 17, 2023, 1:43 p.m. UTC | #2
Hi Ludo,

> Note that Disarchive does not support lzip (yet).
>
> Thus it’s be a bit more archival-friendly if you would instead either
> refer to a gzip tarball or refer to the Git repo.  It’s not a blocker
> though.

I really like lzip due to its supposedly better
design. https://www.nongnu.org/lzip/safety_of_the_lzip_format.html I've
been speaking to Timothy Sample about supporting lzip in
disarchive. It's a non-trivial amount of work, but I'll try to get it
done.

>> +     (list #:make-flags #~(list (string-append "prefix=" #$output))
>> +           #:modules `(((guix build guile-build-system)
>> +                        #:select (target-guile-effective-version))
>> +                       ,@%gnu-build-system-modules)
>
> You can change the last line to just (guix build gnu-build-system).

Replacing %gnu-build-system-modules with (guix build gnu-build-system)
does not work since we also need (guix build utils). I could replace
%gnu-build-system-modules with (guix build gnu-build-system) and (guix
build utils), but is there something wrong with using
%gnu-build-system-modules?

> Next step is a system service I guess?  :-)

Yep! I have a service in the guix-forge channel, but it uses a few
guix-forge specific constructs. I'll try and adapt it.

Regards,
Arun
Ludovic Courtès March 17, 2023, 9:43 p.m. UTC | #3
Howdy!

Arun Isaac <arunisaac@systemreboot.net> skribis:

>> Note that Disarchive does not support lzip (yet).
>>
>> Thus it’s be a bit more archival-friendly if you would instead either
>> refer to a gzip tarball or refer to the Git repo.  It’s not a blocker
>> though.
>
> I really like lzip due to its supposedly better
> design. https://www.nongnu.org/lzip/safety_of_the_lzip_format.html I've
> been speaking to Timothy Sample about supporting lzip in
> disarchive. It's a non-trivial amount of work, but I'll try to get it
> done.

Yeah, I imagine it’s not trivial.

>>> +     (list #:make-flags #~(list (string-append "prefix=" #$output))
>>> +           #:modules `(((guix build guile-build-system)
>>> +                        #:select (target-guile-effective-version))
>>> +                       ,@%gnu-build-system-modules)
>>
>> You can change the last line to just (guix build gnu-build-system).
>
> Replacing %gnu-build-system-modules with (guix build gnu-build-system)
> does not work since we also need (guix build utils). I could replace
> %gnu-build-system-modules with (guix build gnu-build-system) and (guix
> build utils), but is there something wrong with using
> %gnu-build-system-modules?

‘%gnu-build-system-modules’ is documented as the set of “modules
imported and used by default”, whereas here you just want to specify
modules in scope.  So I would have a slight preference for an explicit
list here.  It’s really cosmetic though, no big deal.

>> Next step is a system service I guess?  :-)
>
> Yep! I have a service in the guix-forge channel, but it uses a few
> guix-forge specific constructs. I'll try and adapt it.

Neat!

Ludo’.
Arun Isaac March 18, 2023, 5:28 p.m. UTC | #4
> ‘%gnu-build-system-modules’ is documented as the set of “modules
> imported and used by default”, whereas here you just want to specify
> modules in scope.  So I would have a slight preference for an explicit
> list here.  It’s really cosmetic though, no big deal.

Done!

Pushed, thank you! :-)
Simon Tournier April 4, 2023, 11:20 a.m. UTC | #5
Hi Arun,

On Fri, 17 Mar 2023 at 13:43, Arun Isaac <arunisaac@systemreboot.net> wrote:

> I really like lzip due to its supposedly better
> design. https://www.nongnu.org/lzip/safety_of_the_lzip_format.html I've
> been speaking to Timothy Sample about supporting lzip in
> disarchive. It's a non-trivial amount of work, but I'll try to get it
> done.

It would be really great! :-)

Cheers,
simon
diff mbox series

Patch

diff --git a/gnu/packages/web.scm b/gnu/packages/web.scm
index cc206722a9..580f92f156 100644
--- a/gnu/packages/web.scm
+++ b/gnu/packages/web.scm
@@ -15,7 +15,7 @@ 
 ;;; Copyright © 2016 Ben Woodcroft <donttrustben@gmail.com>
 ;;; Copyright © 2016, 2023 Clément Lassieur <clement@lassieur.org>
 ;;; Copyright © 2016, 2017 Nikita <nikita@n0.is>
-;;; Copyright © 2016–2022 Arun Isaac <arunisaac@systemreboot.net>
+;;; Copyright © 2016–2023 Arun Isaac <arunisaac@systemreboot.net>
 ;;; Copyright © 2016–2022 Tobias Geerinckx-Rice <me@tobias.gr>
 ;;; Copyright © 2016 Bake Timmons <b3timmons@speedymail.org>
 ;;; Copyright © 2017 Thomas Danckaert <post@thomasdanckaert.be>
@@ -184,6 +184,7 @@  (define-module (gnu packages web)
   #:use-module (gnu packages readline)
   #:use-module (gnu packages search)
   #:use-module (gnu packages serialization)
+  #:use-module (gnu packages skribilo)
   #:use-module (gnu packages sphinx)
   #:use-module (gnu packages texinfo)
   #:use-module (gnu packages textutils)
@@ -7979,6 +7980,59 @@  (define-public buku-run
      "This package provides a rofi frontend for the buku bookmark manager.")
     (license license:gpl3+)))
 
+(define-public tissue
+  (package
+    (name "tissue")
+    (version "0.1.0")
+    (source (origin
+              (method url-fetch)
+              (uri (string-append "https://tissue.systemreboot.net/releases/tissue-"
+                                  version ".tar.lz"))
+              (sha256
+               (base32
+                "0vsybgnzv8nnwf58pnxrs4101xczl8jvxd1wzmk4vmdyrp8a2kkm"))))
+    (build-system gnu-build-system)
+    (arguments
+     (list #:make-flags #~(list (string-append "prefix=" #$output))
+           #:modules `(((guix build guile-build-system)
+                        #:select (target-guile-effective-version))
+                       ,@%gnu-build-system-modules)
+           #:phases
+           (with-imported-modules '((guix build guile-build-system))
+             #~(modify-phases %standard-phases
+                 (replace 'patch-source-shebangs
+                   (lambda* (#:key inputs #:allow-other-keys)
+                     (substitute* "bin/tissue"
+                       (("^exec guile")
+                        (string-append "exec "
+                                       (search-input-file inputs "/bin/guile"))))))
+                 (delete 'configure)
+                 (add-after 'install 'wrap
+                   (lambda* (#:key inputs outputs #:allow-other-keys)
+                     (let ((out (assoc-ref outputs "out"))
+                           (effective-version (target-guile-effective-version)))
+                       (wrap-program (string-append out "/bin/tissue")
+                         `("GUILE_LOAD_PATH" prefix
+                           (,(string-append out "/share/guile/site/" effective-version)
+                            ,(getenv "GUILE_LOAD_PATH")))
+                         `("GUILE_LOAD_COMPILED_PATH" prefix
+                           (,(string-append out "/lib/guile/"
+                                            effective-version "/site-ccache")
+                            ,(getenv "GUILE_LOAD_COMPILED_PATH")))))))))))
+    (inputs (list bash-minimal guile-3.0 guile-filesystem guile-git guile-xapian))
+    (native-inputs (list lzip))
+    (propagated-inputs (list skribilo))
+    (home-page "https://tissue.systemreboot.net")
+    (synopsis "Text based project information management system")
+    (description "tissue is an issue tracker and project information
+management system built on plain text files and git.  It is specifically
+intended for small free software projects.  It features a static site
+generator to build a project website and a powerful search interface to search
+through project issues and documentation.  The search interface is built on
+the Xapian search engine library, and is available both as a command-line
+program and as a web server.")
+    (license license:gpl3+)))
+
 (define-public anonip
   (package
     (name "anonip")