Handle JBB case where no dep for os/arch combo
This commit is contained in:
parent
74c9506529
commit
5acfd0e819
2 changed files with 28 additions and 25 deletions
|
|
@ -134,13 +134,13 @@ proc newConanPackageFromUri*(uri: string, shared = true): ConanPackage =
|
||||||
proc getUriFromConanPackage*(pkg: ConanPackage): string =
|
proc getUriFromConanPackage*(pkg: ConanPackage): string =
|
||||||
## Convert a ConanPackage to a conan uri
|
## Convert a ConanPackage to a conan uri
|
||||||
result = pkg.name
|
result = pkg.name
|
||||||
if pkg.version.len != 0:
|
if pkg.version.nBl:
|
||||||
result &= "/" & pkg.version
|
result &= "/" & pkg.version
|
||||||
if pkg.user.len != 0:
|
if pkg.user.nBl:
|
||||||
result &= "@" & pkg.user
|
result &= "@" & pkg.user
|
||||||
if pkg.channel.len != 0:
|
if pkg.channel.nBl:
|
||||||
result &= "/" & pkg.channel
|
result &= "/" & pkg.channel
|
||||||
if pkg.bhash.len != 0:
|
if pkg.bhash.nBl:
|
||||||
result &= ":" & pkg.bhash
|
result &= ":" & pkg.bhash
|
||||||
|
|
||||||
proc searchConan*(name: string, version = "", user = "", channel = ""): ConanPackage =
|
proc searchConan*(name: string, version = "", user = "", channel = ""): ConanPackage =
|
||||||
|
|
@ -149,11 +149,11 @@ proc searchConan*(name: string, version = "", user = "", channel = ""): ConanPac
|
||||||
## Search is quite slow so it is preferable to specify a version and use `getConanBuilds()`
|
## Search is quite slow so it is preferable to specify a version and use `getConanBuilds()`
|
||||||
var
|
var
|
||||||
query = name
|
query = name
|
||||||
if version.len != 0:
|
if version.nBl:
|
||||||
query &= "/" & version
|
query &= "/" & version
|
||||||
if user.len != 0:
|
if user.nBl:
|
||||||
query &= "@" & user
|
query &= "@" & user
|
||||||
if channel.len != 0:
|
if channel.nBl:
|
||||||
query &= "/" & channel
|
query &= "/" & channel
|
||||||
|
|
||||||
gecho &"# Searching Conan.io for latest version of {name}"
|
gecho &"# Searching Conan.io for latest version of {name}"
|
||||||
|
|
@ -172,11 +172,11 @@ proc searchConan*(name: string, version = "", user = "", channel = ""): ConanPac
|
||||||
if "@_/_" in str:
|
if "@_/_" in str:
|
||||||
let
|
let
|
||||||
ver = str.split('/')[1].split('@')[0]
|
ver = str.split('/')[1].split('@')[0]
|
||||||
if latestv.len == 0 or compareVersions(ver, latestv) > 0:
|
if latestv.Bl or compareVersions(ver, latestv) > 0:
|
||||||
latestv = ver
|
latestv = ver
|
||||||
latest = str
|
latest = str
|
||||||
|
|
||||||
if latest.len != 0:
|
if latest.nBl:
|
||||||
result = newConanPackageFromUri(latest)
|
result = newConanPackageFromUri(latest)
|
||||||
|
|
||||||
proc searchConan*(pkg: ConanPackage): ConanPackage =
|
proc searchConan*(pkg: ConanPackage): ConanPackage =
|
||||||
|
|
@ -200,7 +200,7 @@ proc getConanBuilds*(pkg: ConanPackage, filter = "") =
|
||||||
vsplit[0]
|
vsplit[0]
|
||||||
|
|
||||||
query =
|
query =
|
||||||
if pkg.bhash.len == 0:
|
if pkg.bhash.Bl:
|
||||||
block:
|
block:
|
||||||
var
|
var
|
||||||
query = &"?q=arch={arch}&os={os.capitalizeAscii()}"
|
query = &"?q=arch={arch}&os={os.capitalizeAscii()}"
|
||||||
|
|
@ -208,7 +208,7 @@ proc getConanBuilds*(pkg: ConanPackage, filter = "") =
|
||||||
query &= "&build_type=Release"
|
query &= "&build_type=Release"
|
||||||
if "shared=" notin filter:
|
if "shared=" notin filter:
|
||||||
query &= &"&options.shared={($pkg.shared).capitalizeAscii()}"
|
query &= &"&options.shared={($pkg.shared).capitalizeAscii()}"
|
||||||
if filter.len != 0:
|
if filter.nBl:
|
||||||
query &= &"&{filter}"
|
query &= &"&{filter}"
|
||||||
if "compiler=" notin filter and os != "windows":
|
if "compiler=" notin filter and os != "windows":
|
||||||
query &= &"&compiler={compiler}&compiler.version=" & vfilter
|
query &= &"&compiler={compiler}&compiler.version=" & vfilter
|
||||||
|
|
@ -232,7 +232,7 @@ proc getConanBuilds*(pkg: ConanPackage, filter = "") =
|
||||||
|
|
||||||
if not j1.isNil:
|
if not j1.isNil:
|
||||||
for bhash, bdata in j1.getFields():
|
for bhash, bdata in j1.getFields():
|
||||||
if pkg.bhash.len == 0 or pkg.bhash == bhash:
|
if pkg.bhash.Bl or pkg.bhash == bhash:
|
||||||
let
|
let
|
||||||
bld = new(ConanBuild)
|
bld = new(ConanBuild)
|
||||||
settings = bdata.getOrDefault("settings")
|
settings = bdata.getOrDefault("settings")
|
||||||
|
|
@ -328,13 +328,13 @@ proc dlConanBuild*(pkg: ConanPackage, bld: ConanBuild, outdir: string, revision
|
||||||
## Download specific `revision` of `bld` to `outdir`
|
## Download specific `revision` of `bld` to `outdir`
|
||||||
##
|
##
|
||||||
## If omitted, the latest revision (first) is downloaded
|
## If omitted, the latest revision (first) is downloaded
|
||||||
doAssert bld.revisions.len != 0, "No build revisions found for Conan.io package " & pkg.getUriFromConanPackage()
|
doAssert bld.revisions.nBl, "No build revisions found for Conan.io package " & pkg.getUriFromConanPackage()
|
||||||
|
|
||||||
let
|
let
|
||||||
outdir = fixRelPath(outdir)
|
outdir = fixRelPath(outdir)
|
||||||
|
|
||||||
revision =
|
revision =
|
||||||
if revision.len != 0:
|
if revision.nBl:
|
||||||
revision
|
revision
|
||||||
else:
|
else:
|
||||||
bld.revisions[0]
|
bld.revisions[0]
|
||||||
|
|
@ -379,7 +379,7 @@ proc downloadConan*(pkg: ConanPackage, outdir: string, main = true) =
|
||||||
outdir = fixRelPath(outdir)
|
outdir = fixRelPath(outdir)
|
||||||
|
|
||||||
pkg =
|
pkg =
|
||||||
if pkg.version.len == 0:
|
if pkg.version.Bl:
|
||||||
searchConan(pkg)
|
searchConan(pkg)
|
||||||
else:
|
else:
|
||||||
pkg
|
pkg
|
||||||
|
|
@ -395,12 +395,12 @@ proc downloadConan*(pkg: ConanPackage, outdir: string, main = true) =
|
||||||
|
|
||||||
pkg.getConanBuilds()
|
pkg.getConanBuilds()
|
||||||
|
|
||||||
doAssert pkg.recipes.len != 0, &"Failed to download {pkg.name} v{pkg.version} from Conan - check https://conan.io/center"
|
doAssert pkg.recipes.nBl, &"Failed to download {pkg.name} v{pkg.version} from Conan - check https://conan.io/center"
|
||||||
|
|
||||||
gecho &"# Downloading {pkg.name} v{pkg.version} from Conan.io"
|
gecho &"# Downloading {pkg.name} v{pkg.version} from Conan.io"
|
||||||
for recipe, builds in pkg.recipes:
|
for recipe, builds in pkg.recipes:
|
||||||
for build in builds:
|
for build in builds:
|
||||||
if pkg.bhash.len == 0 or pkg.bhash == build.bhash:
|
if pkg.bhash.Bl or pkg.bhash == build.bhash:
|
||||||
pkg.getConanRevisions(build)
|
pkg.getConanRevisions(build)
|
||||||
pkg.dlConanBuild(build, outdir)
|
pkg.dlConanBuild(build, outdir)
|
||||||
pkg.dlConanRequires(build, outdir)
|
pkg.dlConanRequires(build, outdir)
|
||||||
|
|
@ -442,7 +442,7 @@ proc getConanLDeps*(pkg: ConanPackage, outdir: string, main = true): seq[string]
|
||||||
libs = if pkg.shared: pkg.sharedLibs else: pkg.staticLibs
|
libs = if pkg.shared: pkg.sharedLibs else: pkg.staticLibs
|
||||||
str = if pkg.shared: "shared" else: "static"
|
str = if pkg.shared: "shared" else: "static"
|
||||||
|
|
||||||
doAssert libs.len != 0, &"No {str} libs found for {pkg.name} in {outdir}"
|
doAssert libs.nBl, &"No {str} libs found for {pkg.name} in {outdir}"
|
||||||
|
|
||||||
if not main:
|
if not main:
|
||||||
for lib in libs:
|
for lib in libs:
|
||||||
|
|
|
||||||
|
|
@ -65,7 +65,7 @@ proc parseJBBProject(pkg: JBBPackage, outdir: string) =
|
||||||
for line in data.splitLines():
|
for line in data.splitLines():
|
||||||
let
|
let
|
||||||
line = line.strip()
|
line = line.strip()
|
||||||
if line.len != 0:
|
if line.nBl:
|
||||||
if line.startsWith('['):
|
if line.startsWith('['):
|
||||||
if line == "[deps]":
|
if line == "[deps]":
|
||||||
deps = true
|
deps = true
|
||||||
|
|
@ -100,7 +100,7 @@ proc parseJBBArtifacts(pkg: JBBPackage, outdir: string) =
|
||||||
for line in data.splitLines():
|
for line in data.splitLines():
|
||||||
let
|
let
|
||||||
line = line.strip()
|
line = line.strip()
|
||||||
if line.len != 0:
|
if line.nBl:
|
||||||
let
|
let
|
||||||
spl = line.split(" = ", 1)
|
spl = line.split(" = ", 1)
|
||||||
name = spl[0]
|
name = spl[0]
|
||||||
|
|
@ -145,7 +145,7 @@ proc getJBBRepo*(pkg: JBBPackage, outdir: string) =
|
||||||
quiet = true
|
quiet = true
|
||||||
)
|
)
|
||||||
|
|
||||||
if pkg.version.len != 0:
|
if pkg.version.nBl:
|
||||||
# Checkout correct tag
|
# Checkout correct tag
|
||||||
let
|
let
|
||||||
tags = gitTags(path)
|
tags = gitTags(path)
|
||||||
|
|
@ -157,7 +157,7 @@ proc getJBBRepo*(pkg: JBBPackage, outdir: string) =
|
||||||
var
|
var
|
||||||
url = pkg.baseUrl
|
url = pkg.baseUrl
|
||||||
if "$#" in url or "$1" in url:
|
if "$#" in url or "$1" in url:
|
||||||
doAssert pkg.version.len != 0, "Need version for custom BinaryBuilder.org url: " & url
|
doAssert pkg.version.nBl, "Need version for custom BinaryBuilder.org url: " & url
|
||||||
url = url % pkg.version
|
url = url % pkg.version
|
||||||
downloadUrl(url & "Artifacts.toml", path, quiet = true)
|
downloadUrl(url & "Artifacts.toml", path, quiet = true)
|
||||||
downloadUrl(url & "Project.toml", path, quiet = true)
|
downloadUrl(url & "Project.toml", path, quiet = true)
|
||||||
|
|
@ -209,11 +209,14 @@ proc downloadJBB*(pkg: JBBPackage, outdir: string, main = true) =
|
||||||
|
|
||||||
pkg.getJBBRepo(outdir)
|
pkg.getJBBRepo(outdir)
|
||||||
|
|
||||||
doAssert pkg.url.len != 0, &"Failed to download {pkg.name} info from BinaryBuilder.org"
|
if pkg.url.Bl:
|
||||||
|
# No url for deps means no package for that os/arch combo - e.g. Attr
|
||||||
|
doAssert not main, &"Failed to download {pkg.name} info from BinaryBuilder.org"
|
||||||
|
return
|
||||||
|
|
||||||
let
|
let
|
||||||
vstr =
|
vstr =
|
||||||
if pkg.version.len != 0:
|
if pkg.version.nBl:
|
||||||
&" v{pkg.version}"
|
&" v{pkg.version}"
|
||||||
else:
|
else:
|
||||||
""
|
""
|
||||||
|
|
@ -250,7 +253,7 @@ proc getJBBLDeps*(pkg: JBBPackage, outdir: string, shared: bool, main = true): s
|
||||||
libs = if shared: pkg.sharedLibs else: pkg.staticLibs
|
libs = if shared: pkg.sharedLibs else: pkg.staticLibs
|
||||||
str = if shared: "shared" else: "static"
|
str = if shared: "shared" else: "static"
|
||||||
|
|
||||||
doAssert libs.len != 0, &"No {str} libs found for {pkg.name} in {outdir}"
|
doAssert libs.nBl, &"No {str} libs found for {pkg.name} in {outdir}"
|
||||||
|
|
||||||
if not main:
|
if not main:
|
||||||
for lib in libs:
|
for lib in libs:
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue