forked from nim-lang/Nim
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add changes required by Nimble lock file support (nim-lang#12104)
Implemented support for Nimble local cache with package directories with a checksum of the package at the end of their names. Now the compiler supports package paths in the form: * /path_to_nimble_cache_dir/pkgs/package_name-1.2.3- FEBADEAEA2345E777F0F6F8433F7F0A52EDD5D1B * /path_to_nimble_cache_dir/pkgs/package_name-#head- 042D4BE2B90ED0672E717D71850ABDB0A2D19CD2 * /path_to_nimble_cache_dir/pkgs/package_name-#branch-name- DBC1F902CB79946E990E38AF51F0BAD36ACFABD9 Related to nim-lang/nimble#127
- Loading branch information
Showing
5 changed files
with
140 additions
and
55 deletions.
There are no files selected for viewing
This file contains 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
This file contains 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
This file contains 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
This file contains 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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,26 +1,75 @@ | ||
include compiler/[nimblecmd] | ||
include compiler/[nimblecmd], sets | ||
|
||
proc v(s: string): Version = s.newVersion | ||
# #head is special in the sense that it's assumed to always be newest. | ||
doAssert v"1.0" < v"#head" | ||
doAssert v"1.0" < v"1.1" | ||
doAssert v"1.0.1" < v"1.1" | ||
doAssert v"1" < v"1.1" | ||
doAssert v"#aaaqwe" < v"1.1" # We cannot assume that a branch is newer. | ||
doAssert v"#a111" < v"#head" | ||
|
||
let conf = newConfigRef() | ||
var rr = newStringTable() | ||
addPackage conf, rr, "irc-#a111", unknownLineInfo | ||
addPackage conf, rr, "irc-#head", unknownLineInfo | ||
addPackage conf, rr, "irc-0.1.0", unknownLineInfo | ||
#addPackage conf, rr, "irc", unknownLineInfo | ||
#addPackage conf, rr, "another", unknownLineInfo | ||
addPackage conf, rr, "another-0.1", unknownLineInfo | ||
|
||
addPackage conf, rr, "ab-0.1.3", unknownLineInfo | ||
addPackage conf, rr, "ab-0.1", unknownLineInfo | ||
addPackage conf, rr, "justone-1.0", unknownLineInfo | ||
|
||
doAssert toSeq(rr.chosen) == | ||
@["irc-#head", "ab-0.1.3", "justone-1.0", "another-0.1"] | ||
|
||
proc testVersionsComparison = | ||
# #head is special in the sense that it's assumed to always be newest. | ||
doAssert v"1.0" < v"#head" | ||
doAssert v"1.0" < v"1.1" | ||
doAssert v"1.0.1" < v"1.1" | ||
doAssert v"1" < v"1.1" | ||
doAssert v"#aaaqwe" < v"1.1" # We cannot assume that a branch is newer. | ||
doAssert v"#a111" < v"#head" | ||
|
||
proc testAddPackageWithoutChecksum = | ||
## For backward compatibility it is not required all packages to have a | ||
## sha1 checksum at the end of the name of the Nimble cache directory. | ||
## This way a new compiler will be able to work with an older Nimble. | ||
|
||
let conf = newConfigRef() | ||
var rr: PackageInfo | ||
|
||
addPackage conf, rr, "irc-#a111", unknownLineInfo | ||
addPackage conf, rr, "irc-#head", unknownLineInfo | ||
addPackage conf, rr, "irc-0.1.0", unknownLineInfo | ||
|
||
addPackage conf, rr, "another-0.1", unknownLineInfo | ||
|
||
addPackage conf, rr, "ab-0.1.3", unknownLineInfo | ||
addPackage conf, rr, "ab-0.1", unknownLineInfo | ||
addPackage conf, rr, "justone-1.0", unknownLineInfo | ||
|
||
doAssert toSeq(rr.chosen).toHashSet == | ||
["irc-#head", "another-0.1", "ab-0.1.3", "justone-1.0"].toHashSet | ||
|
||
proc testAddPackageWithChecksum = | ||
let conf = newConfigRef() | ||
var rr: PackageInfo | ||
|
||
# in the case of packages with the same version, but different checksums for | ||
# now the first one will be chosen | ||
|
||
addPackage conf, rr, "irc-#a111-DBC1F902CB79946E990E38AF51F0BAD36ACFABD9", | ||
unknownLineInfo | ||
addPackage conf, rr, "irc-#head-042D4BE2B90ED0672E717D71850ABDB0A2D19CD1", | ||
unknownLineInfo | ||
addPackage conf, rr, "irc-#head-042D4BE2B90ED0672E717D71850ABDB0A2D19CD2", | ||
unknownLineInfo | ||
addPackage conf, rr, "irc-0.1.0-6EE6DE936B32E82C7DBE526DA3463574F6568FAF", | ||
unknownLineInfo | ||
|
||
addPackage conf, rr, "another-0.1", unknownLineInfo | ||
addPackage conf, rr, "another-0.1-F07EE6040579F0590608A8FD34F5F2D91D859340", | ||
unknownLineInfo | ||
|
||
addPackage conf, rr, "ab-0.1.3-34BC3B72CE46CF5A496D1121CFEA7369385E9EA2", | ||
unknownLineInfo | ||
addPackage conf, rr, "ab-0.1.3-24BC3B72CE46CF5A496D1121CFEA7369385E9EA2", | ||
unknownLineInfo | ||
addPackage conf, rr, "ab-0.1-A3CFFABDC4759F7779D541F5E031AED17169390A", | ||
unknownLineInfo | ||
|
||
# lower case hex digits is also a valid sha1 checksum | ||
addPackage conf, rr, "justone-1.0-f07ee6040579f0590608a8fd34f5f2d91d859340", | ||
unknownLineInfo | ||
|
||
doAssert toSeq(rr.chosen).toHashSet == [ | ||
"irc-#head-042D4BE2B90ED0672E717D71850ABDB0A2D19CD1", | ||
"another-0.1", | ||
"ab-0.1.3-34BC3B72CE46CF5A496D1121CFEA7369385E9EA2", | ||
"justone-1.0-f07ee6040579f0590608a8fd34f5f2d91d859340" | ||
].toHashSet | ||
|
||
testVersionsComparison() | ||
testAddPackageWithoutChecksum() | ||
testAddPackageWithChecksum() |
This file contains 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