Skip to content

Conversation

@dongcarl
Copy link
Contributor

@dongcarl dongcarl commented Aug 1, 2019

This change pins the packages that make up our Guix environment, making
them reproducible regardless of the current version of Guix that the
user is running. It should eliminate the `guix pull' step of the Guix
build process.

Not ready for merge yet, as we're waiting on https://issues.guix.gnu.org/issue/36777 to be resolved. The issue is that inferiors don't work for a certain range of Guix versions, which is a minor issues, but should be addressed before we do this.

Also, this currently relies on my repo located here: https://github.com/dongcarl/bitcoin-guix, which is fine because we do similar things in other places, but I'd like to move this repo under the bitcoin-core org if at all possible.

This change pins the packages that make up our Guix environment, making
them reproducible regardless of the current version of Guix that the
user is running. It should eliminate the `guix pull' step of the Guix
build process.
@fanquake
Copy link
Member

fanquake commented Aug 1, 2019

Concept ACK

but I'd like to move this repo under the bitcoin-core org if at all possible.

That should be perfectly possible.

@laanwj
Copy link
Member

laanwj commented Sep 16, 2019

Concept ACK

@laanwj
Copy link
Member

laanwj commented Sep 16, 2019

Also, this currently relies on my repo located here: https://github.com/dongcarl/bitcoin-guix, which is fine because we do similar things in other places, but I'd like to move this repo under the bitcoin-core org if at all possible.

Could it be part of bitcoin-core/packaging, which is the umbrella repository for all things distribution packaging, or does this really need its own separate repo?

@maflcko
Copy link
Member

maflcko commented Sep 16, 2019

According to https://guix.gnu.org/manual/en/html_node/Channels.html

A channel specifies a URL and branch of a Git repository to be deployed

So yes, it could be a branch in the https://github.com/bitcoin-core/packaging git repo. (Could even be the master branch when we add a meta-data file .guix-channel to specify the subdir it is in)

@dongcarl
Copy link
Contributor Author

dongcarl commented Sep 16, 2019

It doesn't need to be its own separate repo. Marco is right, we can do branches or even a subdir (as long as it's in a git repository). I'm not particular about what exactly to do so either of you can make a call and I'll make it happen.

I'll update this accordingly.

@maflcko
Copy link
Member

maflcko commented Sep 16, 2019

subdir (as long as it's in a git repository)

So it could be put in either https://github.com/bitcoin/bitcoin or https://github.com/bitcoin-core/packaging/. Shouldn't matter much, I think?

@DrahtBot
Copy link
Contributor

DrahtBot commented Oct 21, 2019

The following sections might be updated with supplementary metadata relevant to reviewers and maintainers.

Conflicts

Reviewers, this pull request conflicts with the following ones:

  • #17351 (doc: Fix some misspellings by RandyMcMillan)

If you consider this pull request important, please also help to review the conflicting pull requests. Ideally, start with the one that should be merged first.

@dongcarl
Copy link
Contributor Author

This PR really shines once it can eliminate the guix pull step of the Guix build process, this is currently not possible because the last release of Guix did not have a command-line flag that I intend to use (unfortunately you can't use inferiors to travel in time to pick up new command-line flags... yet...).

TLDR: Waiting for new Guix release, after which this will be very useful.

@dongcarl
Copy link
Contributor Author

Closed in favor of #17933

@dongcarl dongcarl closed this Jan 23, 2020
fanquake added a commit that referenced this pull request Jan 28, 2020
88c8363 guix: Update documentation for time-machine (Carl Dong)
e605088 guix: Pin Guix using `guix time-machine` (Carl Dong)

Pull request description:

  An alternative to #16519, pinning our version of Guix and eliminating a `guix pull` and changing the default Guix profile of builders.

  I think this method might be superior, as it:
  - Eliminates the possibility of future changes to the `guix environment` command line interface breaking our builds
  - Eliminates the need to set up a separate channel repo

  It is a more general pinning solution than #16519.

  -----

  The reason why I didn't originally propose this is because `guix time-machine` is a recent addition to Guix, only available since `f675f8dec73d02e319e607559ed2316c299ae8c7`

ACKs for top commit:
  fanquake:
    ACK 88c8363

Tree-SHA512: 85e03b0987ffa86da73e02801e1cd8b7622698d70c4ba4e60561611be1e9717d661c2811a59b3e137b1b8eef2d0ba37c313867d035ebc89c3bd06a23a078064a
fanquake added a commit that referenced this pull request Apr 12, 2020
a35e323 guix: Appease travis. (Carl Dong)
0b66d22 guix: Use gcc-9 for mingw-w64 instead of 8 (Carl Dong)
ba0b99b guix: Don't set MINGW_HAS_SECURE_API CFLAG in depends (Carl Dong)
93439a7 guix: Bump to upstream commit with mingw-w64 changes (Carl Dong)
35a9679 guix: Check mingw symbols, improve SSP fix docs (Carl Dong)
449d8fe guix: Expand on INT trap message (Carl Dong)
3f1f03c guix: Spelling fixes (Carl Dong)
ff821dd guix: Reinstate make-ssp-fixed-gcc (Carl Dong)
360a9e0 guix: Bump time-machine for mingw-w64 patches (Carl Dong)
93e41b7 guix: Use gcc-8 for mingw-w64 instead of 7 (Carl Dong)
ef4f7e4 guix: Set the well-known timezone env var (Carl Dong)
acf4b3b guix: Make x86_64-w64-mingw32 builds reproducible (Carl Dong)
c4cce00 guix: Remove dead links from README. (Carl Dong)
df953a4 guix: Appease shellcheck. (Carl Dong)
91897c9 guix: Improve guix-build.sh documentation (Carl Dong)
570d769 guix: Build support for Windows (Carl Dong)

Pull request description:

  ~~Based on: #16519
  Based on: #17933 (Time Machines are... shall we say... superior 😁)

  This PR allows us to perform Guix builds for the `x86_64-w64-mingw32` target. We do this _without_ splitting up the build script like we do in Gitian by using this newfangled alien technology called `case` statements. (This is WIP and might be changed to `if` statements soon)

ACKs for top commit:
  fanquake:
    ACK a35e323 2/3

Tree-SHA512: c471951c23eb2cda919a71285d8b8f2580cb20f09d5db17b53e13dbd8813e01b3e7a83ea848e4913fd0f2bc12c6c133c5f76b54e65c0d89fed4dfd2e0be19875
sidhujag pushed a commit to syscoin/syscoin that referenced this pull request Apr 13, 2020
…arget

a35e323 guix: Appease travis. (Carl Dong)
0b66d22 guix: Use gcc-9 for mingw-w64 instead of 8 (Carl Dong)
ba0b99b guix: Don't set MINGW_HAS_SECURE_API CFLAG in depends (Carl Dong)
93439a7 guix: Bump to upstream commit with mingw-w64 changes (Carl Dong)
35a9679 guix: Check mingw symbols, improve SSP fix docs (Carl Dong)
449d8fe guix: Expand on INT trap message (Carl Dong)
3f1f03c guix: Spelling fixes (Carl Dong)
ff821dd guix: Reinstate make-ssp-fixed-gcc (Carl Dong)
360a9e0 guix: Bump time-machine for mingw-w64 patches (Carl Dong)
93e41b7 guix: Use gcc-8 for mingw-w64 instead of 7 (Carl Dong)
ef4f7e4 guix: Set the well-known timezone env var (Carl Dong)
acf4b3b guix: Make x86_64-w64-mingw32 builds reproducible (Carl Dong)
c4cce00 guix: Remove dead links from README. (Carl Dong)
df953a4 guix: Appease shellcheck. (Carl Dong)
91897c9 guix: Improve guix-build.sh documentation (Carl Dong)
570d769 guix: Build support for Windows (Carl Dong)

Pull request description:

  ~~Based on: bitcoin#16519
  Based on: bitcoin#17933 (Time Machines are... shall we say... superior 😁)

  This PR allows us to perform Guix builds for the `x86_64-w64-mingw32` target. We do this _without_ splitting up the build script like we do in Gitian by using this newfangled alien technology called `case` statements. (This is WIP and might be changed to `if` statements soon)

ACKs for top commit:
  fanquake:
    ACK a35e323 2/3

Tree-SHA512: c471951c23eb2cda919a71285d8b8f2580cb20f09d5db17b53e13dbd8813e01b3e7a83ea848e4913fd0f2bc12c6c133c5f76b54e65c0d89fed4dfd2e0be19875
PhotoshiNakamoto added a commit to PhotonicBitcoin/pBTC-core that referenced this pull request Dec 13, 2021
Bitcoin Core PR: bitcoin/bitcoin#17595

Pull request description:

  ~~Based on: bitcoin/bitcoin#16519
  Based on: bitcoin/bitcoin#17933 (Time Machines are... shall we say... superior 😁)

  This PR allows us to perform Guix builds for the `x86_64-w64-mingw32` target. We do this _without_ splitting up the build script like we do in Gitian by using this newfangled alien technology called `case` statements. (This is WIP and might be changed to `if` statements soon)
@bitcoin bitcoin locked as resolved and limited conversation to collaborators Feb 15, 2022
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants