-
Notifications
You must be signed in to change notification settings - Fork 23
all imported external projects (tinycc, linenoise, etc) should have their own git history (via submodule or other) #206
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
Comments
Well tests are tests it doesn't matter they are not updated, we also test important_packages. I don't understand the Nim/csources point. |
fine, ok to ignore
until recently, csources kept being updated at each new major nim release: but it stopped at v0.20.0 and now csources is frozen, even though there was 1.0 thru 1.0.6 being released in the meantime. I'd be happy enough if that update to csources (or csources2) could come right after v1.2 (assuming that's coming in weeks, not months?). In which case we can add either csources2/csources as a git submodule or add a reference to the git hash/tag in nim's repo (basically equivalent), say in note:if not using submodules (eg nim-lang/Nim#2681), we'll use {
"nimble": {
"url": "https://github.com/nim-lang/nimble",
"hash": "4007b2a778429a978e12307bf13a038029b4c4d9",
},
"z3": {
"url": "https://github.com/Z3Prover/z3",
"hash": "65de3f748a6812eecd7db7c478d5fc54424d368b",
},
"csources": {
"url": "https://github.com/nim-lang/csources",
"hash": "...",
},
"linenoise": ...,
"tinyC": ...,
} urls are needed so that we can update them as needed with private forks in case some modifications are needed, and this would all be transparent for scripts.
|
Well yeah, we hardcode it in koch.nim, what's the benefit of hardcoding it somewhere else? And yeah, we don't use git submodules. And why is TinyC still even part of Nim? Let's remove it altogether. |
correct for other dependencies except for csources, which is needed before koch is even built. |
csources is frozen though and even though you may disagree this works very well. |
The way we currently do this is fine, let's agree to disagree. |
At least Marking as wontfix until then. |
right now nim imports several projects by copying their files directly into nim's own git index. This makes it hard/impossible to update nim's version of those from upstream, and is just bad general practice anyways, for so many reaons. eg, it's impossible to tell which changes are our own modifications to those projects vs which ones are from upstream.
Eg: it's impossible to review a PR like nim-lang/Nim#6593 (for tinyc) or nim-lang/Nim#5357 (for linenoise) as we can't tell which change is form upstream vs local.
There is a much simpler, standard, way:
git clone
those external projects at a specific git hash (very similar), to be called insidekoch boot
orbuild_all.{sh/bat}
main benefit: allows our versions of these external projects to be rebased against upstream regularly, while being able to maintain our own modifications of this (and independenly of nim's own git repo). We'd maintain our own forks if any modification to upstream is needed.
example external projects that should be moved out of Nim's index
pretty bad, both copies have diverged, with different bugs being fixed in both (see niminst source code duplicated (with divergences): nim-lang/niminst vs Nim/tools/niminst/niminst.nim Nim#13406)
EDIT: => fixed via CIs: attempt to use csources_v1 Nim#16282 and refactor all code that builds csources Nim#17815
linenoise
(it mixes its own history and upstream one)The text was updated successfully, but these errors were encountered: