diff --git a/src/choosenimpkg/builder.nim b/src/choosenimpkg/builder.nim index b7c3416..be01938 100644 --- a/src/choosenimpkg/builder.nim +++ b/src/choosenimpkg/builder.nim @@ -30,7 +30,7 @@ proc buildCompiler(version: Version, params: CliParams) = display("Warning:", "Building from latest C sources. They may not be " & "compatible with the Nim version you have chosen to " & "install.", Warning, HighPriority) - let path = downloadCSources(params) + let path = downloadCSources(version, params) let extractDir = getCurrentDir() / "csources" extract(path, extractDir) diff --git a/src/choosenimpkg/download.nim b/src/choosenimpkg/download.nim index cef6dec..0549cf8 100644 --- a/src/choosenimpkg/download.nim +++ b/src/choosenimpkg/download.nim @@ -313,11 +313,19 @@ proc download*(version: Version, params: CliParams): string = raise newException(ChooseNimError, "Version $1 does not exist." % $version) -proc downloadCSources*(params: CliParams): string = +template useCSourcesV2(version: Version): bool = + $version in ["#head", "#devel", "#version-2-0"] or version >= parseVersion("2.0.0") + +proc downloadCSources*(version: Version, params: CliParams): string = + let csourcesAdaptedUrl = + if useCSourcesV2(version): + csourcesUrl & "_v2" + else: + csourcesUrl let - commit = getLatestCommit(csourcesUrl, "master") + commit = getLatestCommit(csourcesAdaptedUrl, "master") archive = if commit.len != 0: commit else: "master" - csourcesArchiveUrl = $(parseUri(csourcesUrl) / (dlArchive % archive)) + csourcesArchiveUrl = $(parseUri(csourcesAdaptedUrl) / (dlArchive % archive)) var outputPath: string if not needsDownload(params, csourcesArchiveUrl, outputPath):