[gnutls-help] Guile-Gnutls bindings to separate git repo?
Simon Josefsson
simon at josefsson.org
Tue Dec 20 20:34:42 CET 2022
Ludovic Courtès <ludo at gnu.org> writes:
>> I can understand that you would want to build from git instead of
>> tarballs. How does the download and build process work in Guix?
>> Without knowing anything about the environment, I imagine there is some
>> part of the process that downloads the git archive from gitlab, checks
>> out a particular git tag and verify the PGP signature or compute a hash
>> checksum and compares it? Can't that process be teached how to also
>> download the git submodule?
>
> Yes, we can change the origin to grab sub-modules as well:
>
> (origin
> (method git-fetch)
> (uri (git-reference
> (url home-page)
> (recursive? #t) ; ← here
Ah, great, so at least there is no fundamental problem with git
submodules.
> starting phase `pre-bootstrap'
> patch-shebang: autopull.sh: changing `/bin/sh' to `/gnu/store/4y5m9lb8k3qkb1y9m02sw9w9a6hacd16-bash-minimal-5.1.8/bin/sh'
> phase `pre-bootstrap' succeeded after 0.0 seconds
> starting phase `bootstrap'
> running './bootstrap'
> patch-shebang: ./bootstrap: changing `/bin/sh' to `/gnu/store/4y5m9lb8k3qkb1y9m02sw9w9a6hacd16-bash-minimal-5.1.8/bin/sh'
> ./bootstrap: Bootstrapping from checked-out guile-gnutls sources...
> ./autopull.sh: getting gnulib files...
> fatal: not a git repository (or any of the parent directories): .git
> ./bootstrap: autopull.sh failed.
Strange, I wonder what is happening there, and why it doesn't happen on
GitLab CI/CD -- it also checks out the git repository including
submodules, and then ./bootstrap is ran.
> Taking a step back, we’re using Gnulib for these modules:
>
> git-version-gen
> havelib
> gitlog-to-changelog
> readme-release
> update-copyright
>
> Does Gnulib “pay for its weight”? In this case, I don’t think so.
>
> In Guix, I manually copied ‘git-version-gen’ and ‘gitlog-to-changelog’
> in the tree, back in the day. The ‘bootstrap’ script does little more
> than “autoreconf -vfi” (nowadays it does weird things related to i18n,
> but that’s another story). Yes, this duplicates two files and a few
> lines in ‘Makefile.am’ and ‘configure.ac’, but the end result is far
> more tractable IMO¹.
>
> Mind you, this is not criticism of Gnulib in general; as you know I was
> an early adopter and promoter, and it’s served us well in Guile for its
> C portability helpers. I think we have to check the cost/benefit ratio,
> which has both technical and social aspects to it, and in this
> particular case, I view Gnulib an unnecessary burden.
>
> WDYT?
>
> Ludo’.
>
> ¹ The bootstrap + Gnulib machinery in Guile-GnuTLS is almost 900 lines:
>
> $ wc -l bootstrap* cfg.mk
> 214 bootstrap
> 44 bootstrap.conf
> 594 bootstrap-funclib.sh
> 39 cfg.mk
> 891 total
I share your frustration with complex dependencies. Is your problem
mainly that it is harder to build guile-gnutls, or is it the size of the
added code, or the actual code? Maybe a combination, but I'm not sure
which is the main problem here.
The main reason I added the dependencies was 1) to get 'make web-manual'
to produce a manual during CI/CD, 2) to get a proven 'make release'
infrastructure including the README-release file, 3) added
git-version-gen to avoid manual work and to get CI/CD tarballs with good
naming, 4) 'make syntax-check', 5) havelib, and maybe some other parts
that I forgot.
When I look at what changed between these releases, I think the main
complication is the new bootstrap infrastructure. That is not critical
for using gnulib, and in fact it is highly complex for what it should be
doing: copying a couple of files and then run autoreconf. I don't see
what extra features it brings guile-gnutls.
I have pushed a branch 'jas/drop-bootstrap' which reverts back to a
simple ./bootstrap script but still uses gnulib-tool from the git
submodule to import some files. What do you think?
https://gitlab.com/gnutls/guile/-/commit/ec362e8bdb7604295fc24f6f20aea5e5ecf78117
Maybe this strikes a better balance between reusing elements from gnulib
but keeping complexity low. CI/CD passes with no changes, suggesting
that we really never relied on anything else from ./bootstrap.
If you think using gnulib-tool is too costly as well, we can replace it
with a couple of 'cp' commands, but I'm hoping this complexity reduction
is sufficient.
Would you like to make a 3.7.12 out of this? I'm happy to do it if you
prefer, but it would be nice to get your PGP key into distributors'
trust anchors for guile-gnutls, and I don't know of any mechanism except
having the person make a release.
/Simon
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 255 bytes
Desc: not available
URL: <https://lists.gnupg.org/pipermail/gnutls-help/attachments/20221220/424138c5/attachment-0001.sig>
More information about the Gnutls-help
mailing list