[Chasing Feedback] guix: Tracking ticket for eventual release build transition #16496

issue dongcarl openend this issue on July 30, 2019
  1. dongcarl commented at 5:50 pm on July 30, 2019: member

    Last updated Nov 25th, 2019

    Overview

    With initial Guix building support having landed in #15277, we should start thinking about what features are lacking, and which ones are required for a transition of our release process to Guix.

    ATTN: I’m actively looking for feedback on this, please don’t hesitate to ask for clarification or propose changes!

    Open PR chains

    #16519 <- #17595 #17099

    Features

    Prerequisites for Release Process transition

    • Non-Linux cross-compilation
      • OS X
        • x86_64-apple-darwin14
      • Windows
        • x86_64-w64-mingw32
    • Signing and verification
    • Inferiors (reproducibility across time) #16519
      • Filesystem channels (Guix upstream feature)
    • Guix release process documentation

    Nice-to-have’s

    • APT repository for Guix itself
    • Finer-grain documentation of compiler/glibc/linux-header versions
    • guix environment as a single-command development setup tool
    • Guix importer for depends syntax
    • Backup plan for releases if all depends download sources are down

    Details and Notes

    Non-Linux cross-compilation

    OS X

    Our native_cctools package in depends assumes that the base system is Ubuntu, and downloads a binary clang. There needs to be a way to use a system-supplied clang. It seems that forks of Bitcoin Core already have that functionality, so it should be back ported: #15277 (comment)

    depends PR Open Oct 10th, 2019: #17099

    Windows

    Porting NSIS to Guix was somewhat difficult the last time I attempted it, mostly because I don’t know scons that well and NSIS doesn’t have great compilation documentation.

    Update Aug 9th, 2019: #16496 (comment) PR Open Nov 25th, 2019: #17595

    Signing and verification

    I looked briefly into signify, but decided that we don’t want to put the burden of extra key material on maintainers. Current thought is that a clear signature of the find output/ -type f -print0 | sort -z | xargs -r0 sha256sum might be sufficient.

    Inferiors

    Work has mostly been finished on my branch here: https://github.com/bitcoin/bitcoin/compare/master...dongcarl:2019-06-guix-channels-and-inferiors (commit-ish permalink)

    I did some thorough testing of the inferiors infrastructure with this branch and found a bug, reported here: https://issues.guix.gnu.org/issue/36777

    Luckily we were able to bisect where the error was introduced and lead Guix maintainers are actively helping with this issue.

    PR Open Aug 1st, 2019: #16519 Resolved upstream Aug 16th, 2019: https://issues.guix.gnu.org/issue/36777#7

    Filesystem channels

    A Guix channel is like a debian APT repository but more powerful. Right now in my branch, we use my bitcoin-guix channel (seen here) which supplies all of the bitcoin-specific toolchain packages, as seen here.

    I’d much prefer to embed this channel into the bitcoin repository, but right now Guix channels can only refer to git repositories. After asking on IRC, this seems like a feature that the other Guix maintainers want as well, so it should be implemented and used.

    Update Nov 25th, 2019: :man_shrugging: Let’s just use https://github.com/bitcoin-core/packaging

    APT repository for Guix itself

    A debian maintainer Vagrant Cascadian has done most of the heavy-lifting here: https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=850644, however, he warned me that it might be a while before it gets into debian proper, so we could have an APT repository for Guix to make the installation process for Guix easier.

    Finer-grain documentation of compiler/glibc/linux-header versions

    Right now we are using:

    0gcc-9
    1glibc-2.27
    2linux-libre-headers-4.19
    

    This can be verified here. We can now explicitly document this, as it won’t change at the whim of Ubuntu developers. (motivating example)

    guix environment as a single-command development setup tool

    Right now, on any machine with guix installed, guix environment --manifest=contrib/guix/manifest.scm sets up a native build environment for depends. I would like to extend this to also be able to setup a cross-build environment. And with “Guix importer for depends syntax”, guix environment --manifest=contrib/guix/manifest.scm can even build the dependencies.

    Guix importer for depends syntax

    AFAIK @nothingmuch has gotten started on this. It will allow for automatic generation of Guix package definitions of our depends packages so that we can maintain a single source of truth but get the caching/inferior/etc. benefits of native Guix packages.

  2. dongcarl added the label Build system on Jul 30, 2019
  3. fanquake commented at 7:27 am on July 31, 2019: member

    Concept ACK. Nice write-up of everything that’s in the Guix pipeline.

    Our native_cctools package in depends assumes that the base system is Ubuntu, and downloads a binary clang. There needs to be a way to use a system-supplied clang.

    I’d be happy to take a look at this once the current macOS toolchain changes are in.

  4. dongcarl commented at 6:28 pm on August 9, 2019: member

    I have successfully packaged nsis and the x86_64-w64-mingw32 toolchain in Guix, good news for Windows target cross-compilation. :relaxed:

  5. MarcoFalke commented at 6:53 pm on August 9, 2019: member

    Wow, that means we can finally run the Windows installer with emojis in the path?!

    #13817

    stonks :chart_with_upwards_trend:

  6. sipa commented at 6:57 pm on August 9, 2019: member

    Ok but who uses that?

    https://xkcd.com/619/

  7. dongcarl commented at 7:34 pm on August 9, 2019: member

    Wow, that means we can finally run the Windows installer with emojis in the path?!

    #13817

    stonks chart_with_upwards_trend

    I can confirm that I am building with UNICODE=yes :relaxed:

  8. fanquake commented at 11:46 am on August 20, 2019: member
    We now have a guix-channel repo in the bitcoin-core org.
  9. MarcoFalke commented at 11:50 am on August 20, 2019: member
    What is is for? Why can’t schemes be in the main repo?
  10. dongcarl commented at 12:31 pm on August 20, 2019: member

    What is is for? Why can’t schemes be in the main repo? @MarcoFalke Right now Guix channels can only be Git repos, not local directories. I might upstream something in the future that will allow it to point to local directories, but it isn’t possible for now.

  11. rockandska commented at 2:34 pm on September 26, 2019: none

    What is is for? Why can’t schemes be in the main repo?

    @MarcoFalke Right now Guix channels can only be Git repos, not local directories. I might upstream something in the future that will allow it to point to local directories, but it isn’t possible for now.

    Not a guix expert,but is it not the purpose of env GUIX_PACKAGE_PATH variable ?

  12. MarcoFalke commented at 3:52 pm on September 26, 2019: member
    I think there is some chat about that here: #16519 (comment)
  13. laanwj added this to the "Issues" column in a project

  14. laanwj commented at 2:45 pm on October 30, 2019: member
    I’ve created a project for the guix transition: https://github.com/bitcoin/bitcoin/projects/13
  15. dongcarl commented at 3:10 pm on October 30, 2019: member
    Thank you @laanwj!
  16. MarcoFalke added the label Brainstorming on Jan 28, 2020
  17. dongcarl commented at 10:54 pm on February 10, 2021: member
    Closing in favor of #21145
  18. dongcarl closed this on Feb 10, 2021

  19. dongcarl moved this from the "Issues" to the "Done" column in a project

  20. DrahtBot locked this on Aug 18, 2022

github-metadata-mirror

This is a metadata mirror of the GitHub repository bitcoin/bitcoin. This site is not affiliated with GitHub. Content is generated from a GitHub metadata backup.
generated: 2024-12-19 03:12 UTC

This site is hosted by @0xB10C
More mirrored repositories can be found on mirror.b10c.me