On Thu, 2021-03-18 at 16:54 +0000, ZmnSCPxj wrote: > That would not be simple I think, but let me see what can be done. > For one, it would be fairly difficult to test it outside of a patched > Guix, as the packages are not usually available in most distros > (which is why we ship the source build with them); e.g. we do not > know how to actually find the "system" libbacktrace as no existing > system I know of actually ships the libbacktrace we use (Debian ships > a libbacktrace for android development, and is not the same package > as what we use). > Of the external packages we use, only libsodium is available on > Debian (and older Debian/Ubuntu, as mentioned, have an older version > that does not have a functionality we require, which is why it is > included in our source build as well), so that is the only external > we have that we can plausibly say "we can use the system version", > because all the others are not available on most systems. We can package every of those in GNU Guix, there's not as much bureaucracy as Debian when it comes to inclusion, as long as Free Software and freedom-non-controversial. The "system" thing is just so handy for us build-system wise we can just provide it as an input and it will find things automatically, I don't say that "system" lookup should imply to take any available library in general, in the context of GNU Guix we can give it a particular version and stick to it, unlike Debian's who can't have or with great difficulty, multiple versions of the same library installed. > Also --- we would be somewhat wary of taking the "system" > `libsecp256k1`, as this is very consensus-critical, and we know that > our program works with a very specific version, but cannot assure > this to be true if the "system" `libsecp256k1` is not the exact > version. > (Note that we cannot take the `libsecp256k1` from `bitcoin-core` > because (1) the `bitcoin-core` package uses a vendored > `libsecp256k1`, the separate Guix `libsecp256k1` is actually only > used by `electrum` and related projects and (2) the interface > `bitcoin-core` uses may be different from the interface we use, it > would require review before we would be able to assure that the > interfaces they use are exactly the same; this would be mitigated by > running the full test suite as it also tests consensus-criticality.) > Is there an easy way to ensure that any `libsecp256k1` that gets fed > into the `c-lightning` build as an `inputs` is of a specific `git` > commit? Yes we can package yet another variant like Bitcoin Core at a specific commit for c-lightning. > Hmm do you mean something like: > > (origin > ; whatever... > (snippet > '(begin > (delete-file-recursively "external/gheap") > (delete-file-recursively "external/jsmn") > (delete-file-recursively "external/libbacktrace") > (delete-file-recursively "external/libsodium") > (delete-file-recursively "external/libwally-core")))) > > ? Yes! > How do you mix in a build system? > Would `python-pyqt` be a good example of such "mix in"? Maybe? I'm no expert here. > Regards, > ZmnSCPxj FYI, I'm not as available for GNU Guix as I'd like, I am looking at the Python deps, just it will take me some time to actually do it (not at home now). I see python-mako is already packaged, python-wallycore I am packaging it, python-mrkd also looking. Also if we want to provide the Python bindings (?) to c-lightning we also have the option of creating a separate package based on the same sources but with different build-system (like python-build-system), and also it can have c-lightning as an input. Léo