Replace git-clone with HTTP get of an archive#238
Draft
pstef wants to merge 1 commit into
Draft
Conversation
git-clone fetches the entire history of a repository. There is a GIT_SHALLOW option in CMake's ExternalProject, but reportedly it can only be used to get "named" commits (tags, branches). ExternalProject provides an alternative way of fetching this, via URL combined with github's ability to generate a zip archive of any arbitrary commit hash. DOWNLOAD_EXTRACT_TIMESTAMP must be set to avoid warnings from CMake. Set to True, the timestamps of the extracted files will match those in the archive. I didn't add URL_HASH support mainly because this is more or less a PoC PR, but if you choose to go this route, it should be added at some point. For now I can provide md5 and sha256 hashes for your convenience.
Author
|
A side effect of this change is that you can no longer update repositories with git pull. |
JesseTG
requested changes
Oct 24, 2024
Owner
There was a problem hiding this comment.
Thanks for contributing! I do have some thoughts about this PR.
- Please ensure that this PR targets
dev, notmain. You should be able to make that change easily, although I don't remember how off-hand. - I understand your desire to keep bandwidth usage down, but I don't want to risk disrupting the build process for a minority use case. Given that, would you mind making this opt-in with a cache variable? (Remember to prefix it with
MELONDSDS_.)- If you go this route, I'd appreciate it if you could allow the whole URL to be customized; hardcoding
/archive/${${VAR_NAME}_REPOSITORY_TAG}.zipinto the URL presumes that dependency repos will always be hosted on GitHub, which I'd rather not do. However, using it as a common-case default is fine.
- If you go this route, I'd appreciate it if you could allow the whole URL to be customized; hardcoding
Author
|
I'm converting this to draft because this was more of a PoC - kind of an upgraded issue. Please take it from here wherever you want. |
Owner
No problem. When you're ready for me to take another look, unmark it as a draft. |
13 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
git-clone fetches the entire history of a repository. There is a GIT_SHALLOW option in CMake's ExternalProject, but reportedly it can only be used to get "named" commits (tags, branches).
ExternalProject provides an alternative way of fetching this, via URL combined with github's ability to generate a zip archive of any arbitrary commit hash.
DOWNLOAD_EXTRACT_TIMESTAMP must be set to avoid warnings from CMake. Set to True, the timestamps of the extracted files will match those in the archive.
I didn't add URL_HASH support mainly because this is more or less a PoC PR, but if you choose to go this route, it should be added at some point. For now I can provide md5 and sha256 hashes for your convenience.