[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Newbie thoughts on Guile Hall + Guix

From: Zelphir Kaltstahl
Subject: Re: Newbie thoughts on Guile Hall + Guix
Date: Sun, 6 Feb 2022 02:53:21 +0000

On 2/5/22 21:01, Christine Lemmer-Webber wrote:

It's been a while since Guile was my main hacking environment; I've been
returning to it, and one of the nicest things to change about its
ecosystem is the presence of Guile Hall.

I really, really like Guile Hall.  A lot!  I think it has room to grow
but it fills a clearly missing piece of the Guile ecosystem while doing
it in the best way possible: making itself explicitly compatible with

I thought I'd write down some impressions while everything is fresh.

  - Its ability to make an autotools-compatible tarball, but without me
    needing to think about autotools at all, is a real delight.

  - Its test suite stuff is also really nice.

  - I found myself surprised that hall.scm is "just data", instead of
    taking the more guix'y approach of being code that actually builds a
    datastucture.  I'm not sure what the goal of this is; there can be
    reasons to take that approach but I'm not sure what it is here?
    My assumption is that the main reason is so that "hall scan" can
    correctly read and then modify and spit out another file, but I'm
    not sure.

  - What I would actually *really* like would be for the Hall package
    definition structure to be a wrapper *around* the Guix package
    structure.  Then the guix.scm would be really simple: it could just
    "peel off" the outer struct.  If I wanted to do some smart
    modifications of things from there maybe I could.  I dunno, something
    like this.

  - "hall scan" is really cool, but I kind of wish I didn't need to use
    it.  I'd rather not keep track of any of this stuff at all.
    I'd be happy just pointing some code at a directory and say "snarf
    up all the .scm files you see therein!"

  - I'm currently writing a manual starting in a .org file that's then
    converted into a .texi file.  I'd prefer if I could find an
    entrypoint to insert this into the compilation workflow: a pre-step
    to the docs compilation that generates the .texi file *from* my
    .org file.
- On that note, it strikes me that Hall's integration with autotools
    is great because it means that existing distros don't need to be
    aware of Guile *or* Guix.  But it also means that Hall probably has
    all of the information that it could do all the steps that autoconf
    and automake do too.  That might be interesting to see that.
Anyway, just some thoughts. Making Guile packages is already much less
intimidating now thanks to Hall's work.  Thank you for it!

  - Christine

For what it is worth: You do not need to use Hall, if you do not need to run tests, when installing via Guix or similar things. If you are fine with running tests before publishing a version of a package to Guix, then you only need Guix and a package definition. No autotools.

I found all the stuff that is generated by Hall a bit worrying. Lots of autotools appearing in my repository, which I do not fully understand. Being forced to use hall scan and so on. Too much magic behind the scenes. Packaging should be so simple, that I can still easily understand all the things in my repository, without studying autotools for a week, searching for archaic variable names and what they to and how everything works. I am not a huge fan of the JS ecosystem at all, but if we look at the NPM world, there is only one file that needs to exist, the package.json, and already you have a valid package. Why can it not be the same simplicity for Guile? And if Guix really requires there to be a `make` `make check` or whatever, then where is the guide, that tells me how to hand-craft the Makefile, so that everything works and I don't need extra tooling to generate files.

I want to be able to edit the guix package definition, point it to the tests directory, and be done with it. When I use Hall, then I have yet another tool in the workflow. Again more commands and things to keep in mind. I want less tools and simplicity. I don't run autotools for running my tests locally, so there is no theoretical need for that. The maximum I do it a very simple Makefile, which provides me with a `make test` to run tests or `make` to run the program. It is just that from the Guix side of things, something would have to be done to be able to invoke tests properly, without a `make test` command being available, but knowing where the tests are. They could be declared in the package definition for example. Why do I need any autotools stuff? Just make Guix call my SRFI-64 tests.

This is why I decided to not use Hall for guile-fslib. I did not like the complexity of having all the autotools stuff in my repo, which I don't even fully understand, just for it becoming a package. Even if I don't need to manually touch any of those files. I can run tests on my machine before sending in a patch for a new version and that will be fine.

Hall is probably a great thing, if you have a package, that is not pure Guile, so that one has to do other things than simply running a Guile command to run the tests, perhaps to generate documentation or other files. For pure Guile packages, I still need to see or learn about a good reason to add the complexity of it to a repository.

Best regards,


reply via email to

[Prev in Thread] Current Thread [Next in Thread]