From b65c6490ff0ab74b92c3bc97f71879a771b3cab8 Mon Sep 17 00:00:00 2001 From: Cameron Taylor Date: Wed, 14 Aug 2024 13:00:15 -0400 Subject: [PATCH 1/9] check for different urls when running `haxelib git` --- run.n | Bin 331397 -> 332669 bytes src/haxelib/api/Installer.hx | 18 ++++++++++++++++-- src/haxelib/api/Vcs.hx | 35 ++++++++++++++++++++++++++++++++++- 3 files changed, 50 insertions(+), 3 deletions(-) diff --git a/run.n b/run.n index 170f3b604a5d632ce3212b07080597272168de7f..345d80d17cc6aa939c42c354fed16133863d3350 100644 GIT binary patch delta 70061 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 delta 69100 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 UcBR;P_}S}8m&;HMKSTci2kv6+ivR!s diff --git a/src/haxelib/api/Installer.hx b/src/haxelib/api/Installer.hx index 262043da..3da97901 100644 --- a/src/haxelib/api/Installer.hx +++ b/src/haxelib/api/Installer.hx @@ -793,8 +793,22 @@ class Installer { final currentBranch = vcsBranchesByLibraryName[library]; - // TODO check different urls as well - if (branch != null && (!wasUpdated || currentBranch != branch)) { + var libUrl = vcs.getReproducibleVersion(libPath).url; + + // Could return null if using Mecurial! + var urlInfo = vcs.parseUrl(url); + var libUrlInfo = vcs.parseUrl(libUrl); + + if (urlInfo != null && libUrlInfo != null && urlInfo.cleanUrl != libUrlInfo.cleanUrl) + { + if (!userInterface.confirm('Update remote url: "${libUrl}" with "${url}"')) { + userInterface.log('Library $library $id repository url remains at "${libUrlInfo.cleanUrl}"'); + return; + } + FsUtils.deleteRec(libPath); + doVcsClone(); + } + else if (branch != null && (!wasUpdated || currentBranch != branch)) { final currentBranchStr = currentBranch != null ? currentBranch : ""; if (!userInterface.confirm('Overwrite branch: "$currentBranchStr" with "$branch"')) { userInterface.log('Library $library $id repository remains at "$currentBranchStr"'); diff --git a/src/haxelib/api/Vcs.hx b/src/haxelib/api/Vcs.hx index 4ebfedb3..4af0966f 100644 --- a/src/haxelib/api/Vcs.hx +++ b/src/haxelib/api/Vcs.hx @@ -235,6 +235,8 @@ abstract class Vcs implements IVcs { public abstract function update(?confirm:() -> Bool, ?debugLog:(msg:String) -> Void, ?summaryLog:(msg:String) -> Void):Bool; public abstract function getReproducibleVersion(libPath: String): VcsData; + + public abstract function parseUrl(url:String):{protocol:String, domain:String, user:String, repo:String, cleanUrl:String}; } /** Class wrapping `git` operations. **/ @@ -356,14 +358,39 @@ class Git extends Vcs { Sys.setCwd(libPath); final ret: VcsData = { + // `git config --get remote.remoteName.url` will get the original url of the remote + // for usecases where someone has something like `url."git@github.com:".insteadOf 'https://github.com/'` set + // could the remote's name not be "origin"? - url: run(["remote", "get-url", "origin"], true).out.trim(), + url: run(["config", "--get", "remote.origin.url"], true).out.trim(), ref: run(["rev-parse", "HEAD"], true).out.trim(), }; Sys.setCwd(oldCwd); return ret; } + + public function parseUrl(url:String):{protocol:String, domain:String, user:String, repo:String, cleanUrl:String} + { + var regex = new EReg("^(https:\\/\\/|git@)([^\\s/:]+)(?::|\\/)([^\\s/]+)\\/([^\\s/]+?)(?:\\.git)?$", ""); + + if (regex.match(url)) { + var output = { + protocol: regex.matched(1), + domain: regex.matched(2), + user: regex.matched(3), + repo: regex.matched(4), + cleanUrl: "" + }; + // cleanUrl should spit it out to a consistent `domain/user/repo` format for simple comparison + // which will accomodate using either https or ssh + output.cleanUrl = output.domain + "/" + output.user + "/" + output.repo; + output.cleanUrl = output.cleanUrl.toLowerCase(); + return output; + } else { + throw 'Invalid Git URL: $url'; + } + } } /** Class wrapping `hg` operations. **/ @@ -454,4 +481,10 @@ class Mercurial extends Vcs { Sys.setCwd(oldCwd); return ret; } + + public function parseUrl(url:String):{protocol:String, domain:String, user:String, repo:String, cleanUrl:String} + { + // Mecurial unimplemented! + return null; + } } From e9b1273c259d8ad0326c84505d1ea81a5c87d112 Mon Sep 17 00:00:00 2001 From: Cameron Taylor Date: Sat, 17 Aug 2024 10:44:26 -0400 Subject: [PATCH 2/9] remote URL parsing related changes, simply compare if URLs are identical or not --- run.n | Bin 332669 -> 332081 bytes src/haxelib/api/Installer.hx | 8 ++------ src/haxelib/api/Vcs.hx | 29 ----------------------------- 3 files changed, 2 insertions(+), 35 deletions(-) diff --git a/run.n b/run.n index 345d80d17cc6aa939c42c354fed16133863d3350..68f0697f487172220a60a8fda28fa8677e0c63b3 100644 GIT binary patch delta 20786 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 Bool, ?debugLog:(msg:String) -> Void, ?summaryLog:(msg:String) -> Void):Bool; public abstract function getReproducibleVersion(libPath: String): VcsData; - - public abstract function parseUrl(url:String):{protocol:String, domain:String, user:String, repo:String, cleanUrl:String}; } /** Class wrapping `git` operations. **/ @@ -370,27 +368,6 @@ class Git extends Vcs { return ret; } - public function parseUrl(url:String):{protocol:String, domain:String, user:String, repo:String, cleanUrl:String} - { - var regex = new EReg("^(https:\\/\\/|git@)([^\\s/:]+)(?::|\\/)([^\\s/]+)\\/([^\\s/]+?)(?:\\.git)?$", ""); - - if (regex.match(url)) { - var output = { - protocol: regex.matched(1), - domain: regex.matched(2), - user: regex.matched(3), - repo: regex.matched(4), - cleanUrl: "" - }; - // cleanUrl should spit it out to a consistent `domain/user/repo` format for simple comparison - // which will accomodate using either https or ssh - output.cleanUrl = output.domain + "/" + output.user + "/" + output.repo; - output.cleanUrl = output.cleanUrl.toLowerCase(); - return output; - } else { - throw 'Invalid Git URL: $url'; - } - } } /** Class wrapping `hg` operations. **/ @@ -481,10 +458,4 @@ class Mercurial extends Vcs { Sys.setCwd(oldCwd); return ret; } - - public function parseUrl(url:String):{protocol:String, domain:String, user:String, repo:String, cleanUrl:String} - { - // Mecurial unimplemented! - return null; - } } From 0ad9428a8054463b83ffe385f5489e748070d624 Mon Sep 17 00:00:00 2001 From: Cameron Taylor Date: Wed, 18 Sep 2024 17:29:35 -0400 Subject: [PATCH 3/9] testing in progress --- test/libraries/InstallDeps/git-deps-url-new.hxml | 1 + test/libraries/InstallDeps/git-deps-url-old.hxml | 1 + test/libraries/vcs/git2 | 1 + test/tests/TestInstaller.hx | 4 ++++ 4 files changed, 7 insertions(+) create mode 100644 test/libraries/InstallDeps/git-deps-url-new.hxml create mode 100644 test/libraries/InstallDeps/git-deps-url-old.hxml create mode 160000 test/libraries/vcs/git2 diff --git a/test/libraries/InstallDeps/git-deps-url-new.hxml b/test/libraries/InstallDeps/git-deps-url-new.hxml new file mode 100644 index 00000000..d5ab7f93 --- /dev/null +++ b/test/libraries/InstallDeps/git-deps-url-new.hxml @@ -0,0 +1 @@ +-lib hx.signal:git:https://github.com/boozook/hx.signal.git \ No newline at end of file diff --git a/test/libraries/InstallDeps/git-deps-url-old.hxml b/test/libraries/InstallDeps/git-deps-url-old.hxml new file mode 100644 index 00000000..c9617828 --- /dev/null +++ b/test/libraries/InstallDeps/git-deps-url-old.hxml @@ -0,0 +1 @@ +-lib hx.signal:git:https://github.com/fzzr-/hx.signal.git \ No newline at end of file diff --git a/test/libraries/vcs/git2 b/test/libraries/vcs/git2 new file mode 160000 index 00000000..2feb1476 --- /dev/null +++ b/test/libraries/vcs/git2 @@ -0,0 +1 @@ +Subproject commit 2feb1476dadd66ee0aa20587b1ee30a6b4faac0f diff --git a/test/tests/TestInstaller.hx b/test/tests/TestInstaller.hx index 80425524..06739860 100644 --- a/test/tests/TestInstaller.hx +++ b/test/tests/TestInstaller.hx @@ -105,6 +105,10 @@ class TestInstaller extends TestBase { assertTrue(scope.isLibraryInstalled(ProjectName.ofString("hx.signal"))); } + public function testInstallUrlChanges() { + + } + function getLibraryName():String { final haxelibFile = File.read("haxelib.json", false); final details = Data.readData(haxelibFile.readAll().toString(), NoCheck); From 443689a58b3700fbdd6cab12485bfe485c65a7fc Mon Sep 17 00:00:00 2001 From: Cameron Taylor Date: Wed, 18 Sep 2024 17:52:26 -0400 Subject: [PATCH 4/9] add tests for url differences / updates --- test/libraries/InstallDeps/git-deps-url-new.hxml | 2 +- test/libraries/InstallDeps/git-deps-url-old.hxml | 2 +- test/tests/TestInstaller.hx | 10 ++++++++++ 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/test/libraries/InstallDeps/git-deps-url-new.hxml b/test/libraries/InstallDeps/git-deps-url-new.hxml index d5ab7f93..c2d6b392 100644 --- a/test/libraries/InstallDeps/git-deps-url-new.hxml +++ b/test/libraries/InstallDeps/git-deps-url-new.hxml @@ -1 +1 @@ --lib hx.signal:git:https://github.com/boozook/hx.signal.git \ No newline at end of file +-lib flixel:git:https://github.com/geokureli/flixel.git#4.5.0 \ No newline at end of file diff --git a/test/libraries/InstallDeps/git-deps-url-old.hxml b/test/libraries/InstallDeps/git-deps-url-old.hxml index c9617828..bff4f6ff 100644 --- a/test/libraries/InstallDeps/git-deps-url-old.hxml +++ b/test/libraries/InstallDeps/git-deps-url-old.hxml @@ -1 +1 @@ --lib hx.signal:git:https://github.com/fzzr-/hx.signal.git \ No newline at end of file +-lib flixel:git:https://github.com/HaxeFlixel/flixel.git#4.5.0 \ No newline at end of file diff --git a/test/tests/TestInstaller.hx b/test/tests/TestInstaller.hx index 06739860..48a39cbb 100644 --- a/test/tests/TestInstaller.hx +++ b/test/tests/TestInstaller.hx @@ -1,5 +1,6 @@ package tests; +import haxelib.VersionData.VcsID; import sys.FileSystem; import sys.io.File; import haxe.io.Path; @@ -106,7 +107,16 @@ class TestInstaller extends TestBase { } public function testInstallUrlChanges() { + installer.installFromHxml("git-deps-url-old.hxml"); + assertTrue(scope.isLibraryInstalled(ProjectName.ofString("flixel"))); + assertEquals(scope.repository.getVcsData(ProjectName.ofString("flixel"), VcsID.Git).url, "https://github.com/HaxeFlixel/flixel.git"); + + + installer.installFromHxml("git-deps-url-new.hxml"); + + assertTrue(scope.isLibraryInstalled(ProjectName.ofString("flixel"))); + assertEquals(scope.repository.getVcsData(ProjectName.ofString("flixel"), VcsID.Git).url, "https://github.com/geokureli/flixel.git"); } function getLibraryName():String { From 846dcf8b93df877e7fc50d05f8d4942605debc72 Mon Sep 17 00:00:00 2001 From: tobil4sk Date: Fri, 30 Aug 2024 20:09:44 +0100 Subject: [PATCH 5/9] Get compiler version for run scripts lazily (#646) It only has to be checked when running interp scripts, so we can avoid checking it in other cases. --- src/haxelib/api/GlobalScope.hx | 2 +- src/haxelib/api/ScriptRunner.hx | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/haxelib/api/GlobalScope.hx b/src/haxelib/api/GlobalScope.hx index cb0567b1..a4b95de0 100644 --- a/src/haxelib/api/GlobalScope.hx +++ b/src/haxelib/api/GlobalScope.hx @@ -47,7 +47,7 @@ class GlobalScope extends Scope { main: info.main }; - ScriptRunner.run(libraryRunData, resolveCompiler(), callData); + ScriptRunner.run(libraryRunData, callData, () -> haxeVersion); } public function getVersion(library:ProjectName):Version { diff --git a/src/haxelib/api/ScriptRunner.hx b/src/haxelib/api/ScriptRunner.hx index b0aef8f1..db966045 100644 --- a/src/haxelib/api/ScriptRunner.hx +++ b/src/haxelib/api/ScriptRunner.hx @@ -79,13 +79,13 @@ class ScriptRunner { /** Run `library`, with `callData`. - `compilerData` is used if it is an interpreted script. + `getCompilerVersion` is used if it is an interpreted script. **/ - public static function run(library:LibraryRunData, compilerData:LibraryData, callData:CallData):Void { + public static function run(library:LibraryRunData, callData:CallData, getCompilerVersion:()->SemVer):Void { final type = getType(library); final cmd = getCmd(type); - final args = generateArgs(type, callData, SemVer.ofString(compilerData.version)); + final args = generateArgs(type, callData, getCompilerVersion); final oldState = getState(); @@ -122,7 +122,7 @@ class ScriptRunner { } } - static function generateArgs(runType:RunType, callData:CallData, compilerVersion:SemVer):Array { + static function generateArgs(runType:RunType, callData:CallData, getCompilerVersion:() -> SemVer):Array { switch runType { case Neko(path): final callArgs = callData.args.copy(); @@ -130,7 +130,7 @@ class ScriptRunner { callArgs.push(callData.dir); return callArgs; case Script(main, name, version, dependencies): - final isHaxe4 = SemVer.compare(compilerVersion, SemVer.ofString('4.0.0')) >= 0; + final isHaxe4 = SemVer.compare(getCompilerVersion(), SemVer.ofString('4.0.0')) >= 0; final useGlobalRepo = isHaxe4 && callData.useGlobalRepo; final callArgs = generateScriptArgs(main, name, version, dependencies, useGlobalRepo); From 4820514253bf48f0593d2e725b60d0fa322b8b9f Mon Sep 17 00:00:00 2001 From: Cameron Taylor Date: Sun, 1 Sep 2024 09:55:14 -0400 Subject: [PATCH 6/9] Change the order of `haxelib git` submodule installation (#638) * submodule stuff in progress * perhaps a submodule fix? * revert the dipshit logging * update run.n * we dont need to spit out every log, but we should use the threads? * comment out the unneeded git fetch * small reorder / remove redundant `git submodule init` * uncomment the lib deletion, since we've ran into issues related * fix for stderr/stdout related hangs on non-windows when installing git submodules * remove git progress code * run.n * remove whitespace * proper non-cli coupled logging * remove unneeded logging/git --quiet flag code for the time being * run.n * remove unneeded FsUtils.deleteRec() * run.n * remove testing print * run.n * removed unused import and throw an exception on submodule error * add message for SubmoduleError --- run.n | Bin 332081 -> 333321 bytes src/haxelib/api/Installer.hx | 4 +++- src/haxelib/api/Vcs.hx | 38 ++++++++++++++++++++++++++++------- 3 files changed, 34 insertions(+), 8 deletions(-) diff --git a/run.n b/run.n index 68f0697f487172220a60a8fda28fa8677e0c63b3..39155a4e338e1d3907f04bb0fab07546477eaec7 100644 GIT binary patch delta 32956 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 delta 32153 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:Void; + function clone(libPath:String, vcsPath:String, ?branch:String, ?version:String, ?debugLog:(msg:String)->Void, ?optionalLog:(msg:String)->Void):Void; /** Updates repository in CWD or CWD/`Vcs.directory` to HEAD. @@ -74,6 +74,7 @@ enum VcsError { CantCheckoutBranch(vcs:Vcs, branch:String, stderr:String); CantCheckoutVersion(vcs:Vcs, version:String, stderr:String); CommandFailed(vcs:Vcs, code:Int, stdout:String, stderr:String); + SubmoduleError(vcs:Vcs, repo:String, stderr:String); } /** Exception thrown when a vcs update is cancelled. **/ @@ -230,7 +231,7 @@ abstract class Vcs implements IVcs { return ret; } - public abstract function clone(libPath:String, vcsPath:String, ?branch:String, ?version:String, ?debugLog:(msg:String)->Void):Void; + public abstract function clone(libPath:String, vcsPath:String, ?branch:String, ?version:String, ?debugLog:(msg:String)->Void, ?optionalLog:(msg:String)->Void):Void; public abstract function update(?confirm:() -> Bool, ?debugLog:(msg:String) -> Void, ?summaryLog:(msg:String) -> Void):Bool; @@ -320,13 +321,16 @@ class Git extends Vcs { return true; } - public function clone(libPath:String, url:String, ?branch:String, ?version:String, ?debugLog:(msg:String)->Void):Void { + public function clone(libPath:String, url:String, ?branch:String, ?version:String, ?debugLog:(msg:String)->Void, ?optionalLog:(msg:String)->Void):Void { final oldCwd = Sys.getCwd(); - final vcsArgs = ["clone", url, libPath]; + var vcsArgs = ["clone", url, libPath]; - if (!Vcs.flat) - vcsArgs.push('--recursive'); + inline function printOptional(msg) + if (optionalLog != null && msg != "") + optionalLog(msg); + + printOptional('Cloning ${name} from ${url}'); if (run(vcsArgs, debugLog).code != 0) throw VcsError.CantCloneRepo(this, url/*, ret.out*/); @@ -334,12 +338,16 @@ class Git extends Vcs { Sys.setCwd(libPath); if (version != null && version != "") { + printOptional('Checking out tag/version ${version} of ${name}'); + final ret = run(["checkout", "tags/" + version], debugLog); if (ret.code != 0) { Sys.setCwd(oldCwd); throw VcsError.CantCheckoutVersion(this, version, ret.out); } } else if (branch != null) { + printOptional('Checking out branch/commit ${branch} of ${libPath}'); + final ret = run(["checkout", branch], debugLog); if (ret.code != 0){ Sys.setCwd(oldCwd); @@ -347,6 +355,22 @@ class Git extends Vcs { } } + if (!Vcs.flat) + { + printOptional('Syncing submodules for ${name}'); + run(["submodule", "sync", "--recursive"], debugLog); + + var submoduleArgs = ["submodule", "update", "--init", "--recursive"]; + + printOptional('Downloading/updating submodules for ${name}'); + final ret = run(submoduleArgs, debugLog); + if (ret.code != 0) + { + Sys.setCwd(oldCwd); + throw VcsError.SubmoduleError(this, url, ret.out); + } + } + // return prev. cwd: Sys.setCwd(oldCwd); } @@ -425,7 +449,7 @@ class Mercurial extends Vcs { return changed; } - public function clone(libPath:String, url:String, ?branch:String, ?version:String, ?debugLog:(msg:String)->Void):Void { + public function clone(libPath:String, url:String, ?branch:String, ?version:String, ?debugLog:(msg:String)->Void, ?optionalLog:(msg:String)->Void):Void { final vcsArgs = ["clone", url, libPath]; if (branch != null && version != null) { From da51ad00ace6e26241e3dd480df83a01d6e6d29a Mon Sep 17 00:00:00 2001 From: Cameron Taylor Date: Sat, 17 Aug 2024 10:44:26 -0400 Subject: [PATCH 7/9] remote URL parsing related changes, simply compare if URLs are identical or not testing in progress accident git thingie --- run.n | Bin 333321 -> 333321 bytes .../InstallDeps/git-deps-url-new.hxml | 2 +- .../InstallDeps/git-deps-url-old.hxml | 2 +- test/libraries/vcs/git2 | 1 - 4 files changed, 2 insertions(+), 3 deletions(-) delete mode 160000 test/libraries/vcs/git2 diff --git a/run.n b/run.n index 39155a4e338e1d3907f04bb0fab07546477eaec7..5a0d50ac231e44bc05089cbc874a5434bb09aca1 100644 GIT binary patch delta 71 zcmeBNBhtA>WWzm04HF9^15-m2BU9s~G!u(715-=m6r)sgBhw@^gA{|bL}MePB#R`= Xv}QJ?b~YtOAZ7w$=Iv}sEX-d3_+S%V delta 71 zcmeBNBhtA>WWzm04GR;ql;kvvBunFzGz)X{RP(fCQ-c%((=>||6H5~#GXv9<)TCr{ Xqh>axb~YtOAZ7w$=Iv}sEX-d3EWQ*$ diff --git a/test/libraries/InstallDeps/git-deps-url-new.hxml b/test/libraries/InstallDeps/git-deps-url-new.hxml index c2d6b392..756d3857 100644 --- a/test/libraries/InstallDeps/git-deps-url-new.hxml +++ b/test/libraries/InstallDeps/git-deps-url-new.hxml @@ -1 +1 @@ --lib flixel:git:https://github.com/geokureli/flixel.git#4.5.0 \ No newline at end of file +-lib flixel:git:https://github.com/geokureli/flixel.git#4.5.0 diff --git a/test/libraries/InstallDeps/git-deps-url-old.hxml b/test/libraries/InstallDeps/git-deps-url-old.hxml index bff4f6ff..5827ef3d 100644 --- a/test/libraries/InstallDeps/git-deps-url-old.hxml +++ b/test/libraries/InstallDeps/git-deps-url-old.hxml @@ -1 +1 @@ --lib flixel:git:https://github.com/HaxeFlixel/flixel.git#4.5.0 \ No newline at end of file +-lib flixel:git:https://github.com/HaxeFlixel/flixel.git#4.5.0 diff --git a/test/libraries/vcs/git2 b/test/libraries/vcs/git2 deleted file mode 160000 index 2feb1476..00000000 --- a/test/libraries/vcs/git2 +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 2feb1476dadd66ee0aa20587b1ee30a6b4faac0f From ce638c6cc57917ac6efffdf34157b4a9ae6ef613 Mon Sep 17 00:00:00 2001 From: Cameron Taylor Date: Fri, 22 Nov 2024 14:39:14 -0500 Subject: [PATCH 8/9] remove CLI interaction, simply overwrite git url --- src/haxelib/api/Installer.hx | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/haxelib/api/Installer.hx b/src/haxelib/api/Installer.hx index 36d0a9a4..577f127b 100644 --- a/src/haxelib/api/Installer.hx +++ b/src/haxelib/api/Installer.hx @@ -799,10 +799,6 @@ class Installer { if (url != null && libUrl != null && url != libUrl) { - if (!userInterface.confirm('Update remote url: "${libUrl}" with "${url}"')) { - userInterface.log('Library $library $id repository url remains at "${libUrl}"'); - return; - } FsUtils.deleteRec(libPath); doVcsClone(); } From 4c0ba152dcf3216fc5466b040ba51d2c1db18177 Mon Sep 17 00:00:00 2001 From: Cameron Taylor Date: Fri, 22 Nov 2024 14:43:16 -0500 Subject: [PATCH 9/9] run.n --- run.n | Bin 333321 -> 333049 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/run.n b/run.n index db629fed63c52bcb02e73b48bc848fa299c457a1..c9b8d1387ea78812306cdf6629c3b8afaecdf5b4 100644 GIT binary patch delta 25427 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 Tt@NXbz*N#TUtFGW)rS8cZGod3