-
Notifications
You must be signed in to change notification settings - Fork 37.7k
build: make dist
uses git archive
#17104
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
Concept ACK, but the distfile needs to include autogen-generated files. And I don't see why it should be running submodules' |
I agree, for GNU conformance and support for exotic systems. Moved the univalue issue+pr to its upstream repo. |
The following sections might be updated with supplementary metadata relevant to reviewers and maintainers. ConflictsReviewers, this pull request conflicts with the following ones:
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. |
1c71045
to
2ab4c3a
Compare
- Remove `EXTRA_DIST` entries - Delineate MacOS and Windows sections - Use `WIN_` prefix consistently
2ab4c3a
to
fa06c83
Compare
Keeps its behavior: - Sets version in src/clientversion.cpp to HEAD commit - Adds autotools-generated files like `configure`
fa06c83
to
6e7ef96
Compare
make dist
uses git archive
make dist
uses git archive
Needs rebase |
Would be nice to have this in 0.20.0. |
@ch4ot1c Are you still working on this? |
Labeling this "up for grabs". It'd be nice to have this for 0.20. |
e4d3667 build: Drop needless EXTRA_DIST content (Hennadii Stepanov) 6c4da59 build: Drop SOURCEDIST reordering (Hennadii Stepanov) 5e6b8b3 build: Use git archive as source tarball (Hennadii Stepanov) Pull request description: This PR: - is an alternative to #17104 - closes #16734 - closes #6753 The idea is clear described by some developers: - [MarcoFalke](#17097 (comment)): > This whole concept of explicitly listing each and every file manually (or with a fragile wildcard) is an obvious sisyphean task. I'd say all we need to do is run git archive and be done with it forever, see #16734, #6753, #11530 ... - [laanwj](#17097 (comment)): > I agree, I've never been a fan of it. I don't think we have any files in the git repository we don't want to ship in the source tarball. --- The suggested changes have a downside which is pointed by [**luke-jr**](#17104 (comment)): > ... but the distfile needs to include autogen-generated files. This means that a user is not able to run `./configure && make` right away. One must run `./autogen.sh` at first. Here are opinions about mandatory use of `./autogen.sh`: - [ryanofsky](#16734 (comment)): > It's probably ok to require autogen. I think historically configure scripts were supposed to work on obscure unix systems that would just have a generic shell + make tool + c compiler, and not necessarily need gnu packages like m4 which are needed for autogen. - [laanwj](#16734 (comment)): > I also think it's fine to require autogen. What is one dependency more, if you're building from source. --- ~Also this PR provides Windows users with ZIP archives of the sources. Additionally the commit ID is stored in these ZIP files as a file comment:~ --- Note for reviewers: please verify is `git archive` output deterministic? ACKs for top commit: MarcoFalke: re-ACK e4d3667, only change is adding two dots in a the path 🛳 laanwj: ACK e4d3667 Tree-SHA512: d1153d3ca4a580696019b92be3555ab004d197d9a2146aacff9d3150eb7093b7d40eebd6eea12d861d93ff62d62b68706e04e64dbe5ea796ff6757486e462193
e4d3667 build: Drop needless EXTRA_DIST content (Hennadii Stepanov) 6c4da59 build: Drop SOURCEDIST reordering (Hennadii Stepanov) 5e6b8b3 build: Use git archive as source tarball (Hennadii Stepanov) Pull request description: This PR: - is an alternative to bitcoin#17104 - closes bitcoin#16734 - closes bitcoin#6753 The idea is clear described by some developers: - [MarcoFalke](bitcoin#17097 (comment)): > This whole concept of explicitly listing each and every file manually (or with a fragile wildcard) is an obvious sisyphean task. I'd say all we need to do is run git archive and be done with it forever, see bitcoin#16734, bitcoin#6753, bitcoin#11530 ... - [laanwj](bitcoin#17097 (comment)): > I agree, I've never been a fan of it. I don't think we have any files in the git repository we don't want to ship in the source tarball. --- The suggested changes have a downside which is pointed by [**luke-jr**](bitcoin#17104 (comment)): > ... but the distfile needs to include autogen-generated files. This means that a user is not able to run `./configure && make` right away. One must run `./autogen.sh` at first. Here are opinions about mandatory use of `./autogen.sh`: - [ryanofsky](bitcoin#16734 (comment)): > It's probably ok to require autogen. I think historically configure scripts were supposed to work on obscure unix systems that would just have a generic shell + make tool + c compiler, and not necessarily need gnu packages like m4 which are needed for autogen. - [laanwj](bitcoin#16734 (comment)): > I also think it's fine to require autogen. What is one dependency more, if you're building from source. --- ~Also this PR provides Windows users with ZIP archives of the sources. Additionally the commit ID is stored in these ZIP files as a file comment:~ --- Note for reviewers: please verify is `git archive` output deterministic? ACKs for top commit: MarcoFalke: re-ACK e4d3667, only change is adding two dots in a the path 🛳 laanwj: ACK e4d3667 Tree-SHA512: d1153d3ca4a580696019b92be3555ab004d197d9a2146aacff9d3150eb7093b7d40eebd6eea12d861d93ff62d62b68706e04e64dbe5ea796ff6757486e462193
e4d3667 build: Drop needless EXTRA_DIST content (Hennadii Stepanov) 6c4da59 build: Drop SOURCEDIST reordering (Hennadii Stepanov) 5e6b8b3 build: Use git archive as source tarball (Hennadii Stepanov) Pull request description: This PR: - is an alternative to bitcoin#17104 - closes bitcoin#16734 - closes dashpay#6753 The idea is clear described by some developers: - [MarcoFalke](bitcoin#17097 (comment)): > This whole concept of explicitly listing each and every file manually (or with a fragile wildcard) is an obvious sisyphean task. I'd say all we need to do is run git archive and be done with it forever, see bitcoin#16734, dashpay#6753, bitcoin#11530 ... - [laanwj](bitcoin#17097 (comment)): > I agree, I've never been a fan of it. I don't think we have any files in the git repository we don't want to ship in the source tarball. --- The suggested changes have a downside which is pointed by [**luke-jr**](bitcoin#17104 (comment)): > ... but the distfile needs to include autogen-generated files. This means that a user is not able to run `./configure && make` right away. One must run `./autogen.sh` at first. Here are opinions about mandatory use of `./autogen.sh`: - [ryanofsky](bitcoin#16734 (comment)): > It's probably ok to require autogen. I think historically configure scripts were supposed to work on obscure unix systems that would just have a generic shell + make tool + c compiler, and not necessarily need gnu packages like m4 which are needed for autogen. - [laanwj](bitcoin#16734 (comment)): > I also think it's fine to require autogen. What is one dependency more, if you're building from source. --- ~Also this PR provides Windows users with ZIP archives of the sources. Additionally the commit ID is stored in these ZIP files as a file comment:~ --- Note for reviewers: please verify is `git archive` output deterministic? ACKs for top commit: MarcoFalke: re-ACK e4d3667, only change is adding two dots in a the path 🛳 laanwj: ACK e4d3667 Tree-SHA512: d1153d3ca4a580696019b92be3555ab004d197d9a2146aacff9d3150eb7093b7d40eebd6eea12d861d93ff62d62b68706e04e64dbe5ea796ff6757486e462193
e4d3667 build: Drop needless EXTRA_DIST content (Hennadii Stepanov) 6c4da59 build: Drop SOURCEDIST reordering (Hennadii Stepanov) 5e6b8b3 build: Use git archive as source tarball (Hennadii Stepanov) Pull request description: This PR: - is an alternative to bitcoin#17104 - closes bitcoin#16734 - closes dashpay#6753 The idea is clear described by some developers: - [MarcoFalke](bitcoin#17097 (comment)): > This whole concept of explicitly listing each and every file manually (or with a fragile wildcard) is an obvious sisyphean task. I'd say all we need to do is run git archive and be done with it forever, see bitcoin#16734, dashpay#6753, bitcoin#11530 ... - [laanwj](bitcoin#17097 (comment)): > I agree, I've never been a fan of it. I don't think we have any files in the git repository we don't want to ship in the source tarball. --- The suggested changes have a downside which is pointed by [**luke-jr**](bitcoin#17104 (comment)): > ... but the distfile needs to include autogen-generated files. This means that a user is not able to run `./configure && make` right away. One must run `./autogen.sh` at first. Here are opinions about mandatory use of `./autogen.sh`: - [ryanofsky](bitcoin#16734 (comment)): > It's probably ok to require autogen. I think historically configure scripts were supposed to work on obscure unix systems that would just have a generic shell + make tool + c compiler, and not necessarily need gnu packages like m4 which are needed for autogen. - [laanwj](bitcoin#16734 (comment)): > I also think it's fine to require autogen. What is one dependency more, if you're building from source. --- ~Also this PR provides Windows users with ZIP archives of the sources. Additionally the commit ID is stored in these ZIP files as a file comment:~ --- Note for reviewers: please verify is `git archive` output deterministic? ACKs for top commit: MarcoFalke: re-ACK e4d3667, only change is adding two dots in a the path 🛳 laanwj: ACK e4d3667 Tree-SHA512: d1153d3ca4a580696019b92be3555ab004d197d9a2146aacff9d3150eb7093b7d40eebd6eea12d861d93ff62d62b68706e04e64dbe5ea796ff6757486e462193
e4d3667 build: Drop needless EXTRA_DIST content (Hennadii Stepanov) 6c4da59 build: Drop SOURCEDIST reordering (Hennadii Stepanov) 5e6b8b3 build: Use git archive as source tarball (Hennadii Stepanov) Pull request description: This PR: - is an alternative to bitcoin#17104 - closes bitcoin#16734 - closes dashpay#6753 The idea is clear described by some developers: - [MarcoFalke](bitcoin#17097 (comment)): > This whole concept of explicitly listing each and every file manually (or with a fragile wildcard) is an obvious sisyphean task. I'd say all we need to do is run git archive and be done with it forever, see bitcoin#16734, dashpay#6753, bitcoin#11530 ... - [laanwj](bitcoin#17097 (comment)): > I agree, I've never been a fan of it. I don't think we have any files in the git repository we don't want to ship in the source tarball. --- The suggested changes have a downside which is pointed by [**luke-jr**](bitcoin#17104 (comment)): > ... but the distfile needs to include autogen-generated files. This means that a user is not able to run `./configure && make` right away. One must run `./autogen.sh` at first. Here are opinions about mandatory use of `./autogen.sh`: - [ryanofsky](bitcoin#16734 (comment)): > It's probably ok to require autogen. I think historically configure scripts were supposed to work on obscure unix systems that would just have a generic shell + make tool + c compiler, and not necessarily need gnu packages like m4 which are needed for autogen. - [laanwj](bitcoin#16734 (comment)): > I also think it's fine to require autogen. What is one dependency more, if you're building from source. --- ~Also this PR provides Windows users with ZIP archives of the sources. Additionally the commit ID is stored in these ZIP files as a file comment:~ --- Note for reviewers: please verify is `git archive` output deterministic? ACKs for top commit: MarcoFalke: re-ACK e4d3667, only change is adding two dots in a the path 🛳 laanwj: ACK e4d3667 Tree-SHA512: d1153d3ca4a580696019b92be3555ab004d197d9a2146aacff9d3150eb7093b7d40eebd6eea12d861d93ff62d62b68706e04e64dbe5ea796ff6757486e462193
Changes
make dist
to usegit archive
instead of its default approach ,EXTRA_DIST
.The clientversion.cpp version suffix is set to the commit hash of
HEAD
. There are additional files that are appended beyond this, namely configure and other autotools generated files. The .git directory is not included. Targetdist:
is used without adist-hook:
.Lastly, simplifies the layout of Makefile.am.
Note - MacOS would need
gtar
to usetar --transform
for appending the autotools generated files in a prefixed way (an alternate approach). This PR usesgit add -f
instead.