summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorruki <[email protected]>2020-12-01 22:41:20 +0800
committerruki <[email protected]>2020-12-01 22:41:20 +0800
commit2c4176be60a4d114aa6385c667aa30f0e9124af3 (patch)
treedb1c39f5e412d43016e8376294cf3af8fdf625a7
parent15c4701dd679316802d67d02b2b1c2dd302145bc (diff)
improve find_package to rename version args
-rw-r--r--xmake/core/package/package.lua16
-rw-r--r--xmake/core/sandbox/modules/import/lib/detect/find_program.lua2
-rw-r--r--xmake/modules/lib/detect/find_package.lua62
-rw-r--r--xmake/modules/package/manager/dub/find_package.lua4
-rw-r--r--xmake/modules/package/manager/dub/install_package.lua6
-rw-r--r--xmake/modules/package/manager/find_package.lua12
-rw-r--r--xmake/modules/package/manager/go/find_package.lua6
-rw-r--r--xmake/modules/package/manager/go/install_package.lua10
-rw-r--r--xmake/modules/package/manager/install_package.lua2
-rw-r--r--xmake/modules/package/manager/xmake/find_package.lua4
10 files changed, 62 insertions, 62 deletions
diff --git a/xmake/core/package/package.lua b/xmake/core/package/package.lua
index c92000d48..cdc0dfcef 100644
--- a/xmake/core/package/package.lua
+++ b/xmake/core/package/package.lua
@@ -901,7 +901,7 @@ function _instance:fetch(opt)
-- only fetch it from the xmake repository first
if not fetchinfo and system ~= true and not self:is3rd() then
- fetchinfo = self._find_tool(self:name(), {version = self:version_str(),
+ fetchinfo = self._find_tool(self:name(), {require_version = self:version_str(),
cachekey = "fetch_package_xmake",
buildhash = self:buildhash(),
norun = true, -- we need not run it to check for xmake/packages, @see https://github.com/xmake-io/xmake-repo/issues/66
@@ -931,7 +931,7 @@ function _instance:fetch(opt)
-- only fetch it from the xmake repository first
if not fetchinfo and system ~= true and not self:is3rd() then
- fetchinfo = self._find_package("xmake::" .. self:name(), {version = self:version_str(),
+ fetchinfo = self._find_package("xmake::" .. self:name(), {require_version = self:version_str(),
cachekey = "fetch_package_xmake",
buildhash = self:buildhash(),
pkgconfigs = self:configs(),
@@ -945,7 +945,7 @@ function _instance:fetch(opt)
-- fetch it from the system directories
if not fetchinfo and system ~= false then
fetchinfo = self._find_package(self:name(), {force = opt.force,
- version = require_ver,
+ require_version = require_ver,
mode = self:mode(),
pkgconfigs = self:configs(),
buildhash = self:is3rd() and self:buildhash(), -- only for 3rd package manager, e.g. go:: ..
@@ -1380,11 +1380,11 @@ function package.load_from_system(packagename)
-- on install script
local on_install = function (pkg)
local opt = table.copy(pkg:configs())
- opt.mode = pkg:debug() and "debug" or "release"
- opt.plat = pkg:plat()
- opt.arch = pkg:arch()
- opt.version = pkg:version_str()
- opt.buildhash = pkg:buildhash()
+ opt.mode = pkg:debug() and "debug" or "release"
+ opt.plat = pkg:plat()
+ opt.arch = pkg:arch()
+ opt.require_version = pkg:version_str()
+ opt.buildhash = pkg:buildhash()
import("package.manager.install_package")(pkg:name(), opt)
end
diff --git a/xmake/core/sandbox/modules/import/lib/detect/find_program.lua b/xmake/core/sandbox/modules/import/lib/detect/find_program.lua
index dc01cfd6e..8c8dc7728 100644
--- a/xmake/core/sandbox/modules/import/lib/detect/find_program.lua
+++ b/xmake/core/sandbox/modules/import/lib/detect/find_program.lua
@@ -157,7 +157,7 @@ function sandbox_lib_detect_find_program._find(name, paths, opt)
end
-- attempt to find it from the xmake packages
- if opt.version and opt.buildhash then
+ if opt.require_version and opt.buildhash then
return sandbox_lib_detect_find_program._find_from_packages(name, opt)
end
diff --git a/xmake/modules/lib/detect/find_package.lua b/xmake/modules/lib/detect/find_package.lua
index 446abc432..a7781a6b9 100644
--- a/xmake/modules/lib/detect/find_package.lua
+++ b/xmake/modules/lib/detect/find_package.lua
@@ -29,7 +29,7 @@ import("package.manager.find_package")
-- @param name the package name
-- e.g. zlib 1.12.x (try all), xmake::zlib 1.12.x, brew::zlib, brew::pcre/libpcre16, vcpkg::zlib, conan::OpenSSL/1.0.2n@conan/stable
-- @param opt the options
--- e.g. { verbose = false, force = false, plat = "iphoneos", arch = "arm64", mode = "debug", version = "1.0.x",
+-- e.g. { verbose = false, force = false, plat = "iphoneos", arch = "arm64", mode = "debug", require_version = "1.0.x", version = true,
-- external = true, -- we use sysincludedirs instead of includedirs as results
-- linkdirs = {"/usr/lib"}, includedirs = "/usr/include", links = {"ssl"}, includes = {"ssl.h"}
-- packagedirs = {"/tmp/packages"}, system = true, cachekey = "xxxx"
@@ -40,7 +40,7 @@ import("package.manager.find_package")
-- @code
--
-- local package = find_package("openssl")
--- local package = find_package("openssl", {version = "1.0.*"})
+-- local package = find_package("openssl", {require_version = "1.0.*", version = true})
-- local package = find_package("openssl", {plat = "iphoneos"})
-- local package = find_package("openssl", {linkdirs = {"/usr/lib", "/usr/local/lib"}, includedirs = "/usr/local/include", version = "1.0.1"})
-- local package = find_package("openssl", {linkdirs = {"/usr/lib", "/usr/local/lib", links = {"ssl", "crypto"}, includes = {"ssl.h"}})
@@ -57,8 +57,8 @@ function main(name, opt)
-- init cache key
local key = "find_package_" .. opt.plat .. "_" .. opt.arch
- if opt.version then
- key = key .. "_" .. opt.version
+ if opt.require_version then
+ key = key .. "_" .. opt.require_version
end
if opt.cachekey then
key = key .. "_" .. opt.cachekey
@@ -73,38 +73,40 @@ function main(name, opt)
-- attempt to get result from cache first
local cacheinfo = cache.load(key)
local result = cacheinfo[name]
- if result ~= nil and not opt.force then
- return result and result or nil
- end
+ if result == nil or opt.force then
- -- find package
- local found_manager_name, package_name
- result, found_manager_name, package_name = find_package(name, opt)
+ -- find package
+ local found_manager_name, package_name
+ result, found_manager_name, package_name = find_package(name, opt)
- -- use isystem?
- if result and result.includedirs and opt.external then
- result.sysincludedirs = result.includedirs
- result.includedirs = nil
- end
+ -- use isystem?
+ if result and result.includedirs and opt.external then
+ result.sysincludedirs = result.includedirs
+ result.includedirs = nil
+ end
- -- cache result
- cacheinfo[name] = result and result or false
- cache.save(key, cacheinfo)
+ -- cache result
+ cacheinfo[name] = result and result or false
+ cache.save(key, cacheinfo)
- -- trace
- if opt.verbose or option.get("verbose") then
- if result then
+ -- trace
+ if opt.verbose or option.get("verbose") then
+ if result then
- -- only display manager of found package if the package we searched for
- -- did not specify a package manager
- local display_manager = name:find("::", 1, true) and "" or (found_manager_name or "") .. "::"
- local display_name = display_manager .. package_name
- cprint("checking for %s ... ${color.success}%s %s", name, display_name, result.version and result.version or "")
- else
- cprint("checking for %s ... ${color.nothing}${text.nothing}", name)
+ -- only display manager of found package if the package we searched for
+ -- did not specify a package manager
+ local display_manager = name:find("::", 1, true) and "" or (found_manager_name or "") .. "::"
+ local display_name = display_manager .. package_name
+ cprint("checking for %s ... ${color.success}%s %s", name, display_name, result.version and result.version or "")
+ else
+ cprint("checking for %s ... ${color.nothing}${text.nothing}", name)
+ end
end
end
- -- ok?
- return result
+ -- does not show version (default)? strip it
+ if not opt.version and result then
+ result.version = nil
+ end
+ return result and result or nil
end
diff --git a/xmake/modules/package/manager/dub/find_package.lua b/xmake/modules/package/manager/dub/find_package.lua
index 02be651e7..58eacde95 100644
--- a/xmake/modules/package/manager/dub/find_package.lua
+++ b/xmake/modules/package/manager/dub/find_package.lua
@@ -57,7 +57,7 @@ function main(name, opt)
local pkgname = pkgkey[1]:trim()
local pkgversion = pkgkey[2]:trim()
if pkgname == name and find_file(libpattern, pkgpath) and
- (not opt.version or opt.version == "latest" or opt.version == "master" or semver.satisfies(pkgversion, opt.version)) then
+ (not opt.require_version or opt.require_version == "latest" or opt.require_version == "master" or semver.satisfies(pkgversion, opt.require_version)) then
pkgdir = pkgpath
break
end
@@ -80,7 +80,7 @@ function main(name, opt)
end
end
if #includedirs > 0 and #links > 0 then
- result = {version = opt.version, links = links, linkdirs = pkgdir, includedirs = includedirs}
+ result = {version = opt.require_version, links = links, linkdirs = pkgdir, includedirs = includedirs}
end
end
end
diff --git a/xmake/modules/package/manager/dub/install_package.lua b/xmake/modules/package/manager/dub/install_package.lua
index 6f46f6055..8c506d3cd 100644
--- a/xmake/modules/package/manager/dub/install_package.lua
+++ b/xmake/modules/package/manager/dub/install_package.lua
@@ -26,7 +26,7 @@ import("lib.detect.find_tool")
-- install package
--
-- @param name the package name, e.g. dub::log
--- @param opt the options, e.g. { verbose = true, mode = "release", plat = , arch = , version = "x.x.x", buildhash = "xxxxxx"}
+-- @param opt the options, e.g. { verbose = true, mode = "release", plat = , arch = , require_version = "x.x.x", buildhash = "xxxxxx"}
--
-- @return true or false
--
@@ -43,8 +43,8 @@ function main(name, opt)
if option.get("verbose") then
table.insert(argv, "-v")
end
- if opt.version and opt.version ~= "latest" and opt.version ~= "master" then
- table.insert(argv, "--version=" .. opt.version)
+ if opt.require_version and opt.require_version ~= "latest" and opt.require_version ~= "master" then
+ table.insert(argv, "--version=" .. opt.require_version)
end
os.vrunv(dub.program, argv)
diff --git a/xmake/modules/package/manager/find_package.lua b/xmake/modules/package/manager/find_package.lua
index 879a9a6e9..f1bee8af7 100644
--- a/xmake/modules/package/manager/find_package.lua
+++ b/xmake/modules/package/manager/find_package.lua
@@ -145,9 +145,9 @@ end
-- @code
--
-- local package = find_package("openssl")
--- local package = find_package("openssl", {version = "1.0.*"})
+-- local package = find_package("openssl", {require_version = "1.0.*"})
-- local package = find_package("openssl", {plat = "iphoneos"})
--- local package = find_package("openssl", {linkdirs = {"/usr/lib", "/usr/local/lib"}, includedirs = "/usr/local/include", version = "1.0.1"})
+-- local package = find_package("openssl", {linkdirs = {"/usr/lib", "/usr/local/lib"}, includedirs = "/usr/local/include", require_version = "1.0.1"})
-- local package = find_package("openssl", {linkdirs = {"/usr/lib", "/usr/local/lib", links = {"ssl", "crypto"}, includes = {"ssl.h"}})
-- local package, manager_name, package_name = find_package("openssl")
--
@@ -174,19 +174,17 @@ function main(name, opt)
-- get package name and require version
local require_version = nil
package_name, require_version = unpack(package_name:trim():split("%s"))
- opt.version = require_version or opt.version
+ opt.require_version = require_version or opt.require_version
-- find package
local found_manager_name = nil
result, found_manager_name = _find_package(manager_name, package_name, opt)
-- match version?
- if opt.version and opt.version:find('.', 1, true) and result then
- if not (result.version and (result.version == opt.version or semver.satisfies(result.version, opt.version))) then
+ if opt.require_version and opt.require_version:find('.', 1, true) and result then
+ if not (result.version and (result.version == opt.require_version or semver.satisfies(result.version, opt.require_version))) then
result = nil
end
end
-
- -- ok?
return result, found_manager_name, package_name
end
diff --git a/xmake/modules/package/manager/go/find_package.lua b/xmake/modules/package/manager/go/find_package.lua
index 1ccfcdba4..0020a2c02 100644
--- a/xmake/modules/package/manager/go/find_package.lua
+++ b/xmake/modules/package/manager/go/find_package.lua
@@ -27,8 +27,8 @@ import("core.package.package")
function _go_get_installdir(name, opt)
local name = "go_" .. name:lower()
local dir = path.join(package.installdir(), name:sub(1, 1):lower(), name)
- if opt.version then
- dir = path.join(dir, opt.version)
+ if opt.require_version then
+ dir = path.join(dir, opt.require_version)
end
return path.join(dir, opt.buildhash)
end
@@ -42,7 +42,7 @@ function main(name, opt)
local result
local installdir = _go_get_installdir(name, opt)
for _, libraryfile in ipairs(os.files(path.join(installdir, "lib", "**.a"))) do
- result = {version = opt.version, linkdirs = path.join(installdir, "lib"), includedirs = path.join(installdir, "lib")}
+ result = {version = opt.require_version, linkdirs = path.join(installdir, "lib"), includedirs = path.join(installdir, "lib")}
break
end
return result
diff --git a/xmake/modules/package/manager/go/install_package.lua b/xmake/modules/package/manager/go/install_package.lua
index 128dc84c3..e71920ba6 100644
--- a/xmake/modules/package/manager/go/install_package.lua
+++ b/xmake/modules/package/manager/go/install_package.lua
@@ -28,15 +28,15 @@ import("private.tools.go.goenv")
-- get the package cache directory
function _go_get_cachedir(name, opt)
local name = "go_" .. name:lower()
- return path.join(package.cachedir(), name:sub(1, 1), name, opt.version)
+ return path.join(package.cachedir(), name:sub(1, 1), name, opt.require_version)
end
-- get the package install directory
function _go_get_installdir(name, opt)
local name = "go_" .. name:lower()
local dir = path.join(package.installdir(), name:sub(1, 1):lower(), name)
- if opt.version then
- dir = path.join(dir, opt.version)
+ if opt.require_version then
+ dir = path.join(dir, opt.require_version)
end
return path.join(dir, opt.buildhash)
end
@@ -44,14 +44,14 @@ end
-- install package
--
-- @param name the package name, e.g. go::github.com/sirupsen/logrus
--- @param opt the options, e.g. { verbose = true, mode = "release", plat = , arch = , version = "x.x.x", buildhash = "xxxxxx"}
+-- @param opt the options, e.g. { verbose = true, mode = "release", plat = , arch = , require_version = "x.x.x", buildhash = "xxxxxx"}
--
-- @return true or false
--
function main(name, opt)
-- TODO we do not yet support the installation of go packages in specific versions
- local version = opt.version
+ local version = opt.require_version
assert(not version or version == "latest" or version == "master", "we can only support to install go packages without version!")
-- find go
diff --git a/xmake/modules/package/manager/install_package.lua b/xmake/modules/package/manager/install_package.lua
index 96d793763..18abdd34c 100644
--- a/xmake/modules/package/manager/install_package.lua
+++ b/xmake/modules/package/manager/install_package.lua
@@ -103,7 +103,7 @@ function main(name, opt)
-- get package name and require version
local require_version = nil
package_name, require_version = unpack(package_name:trim():split("%s"))
- opt.version = require_version or opt.version
+ opt.require_version = require_version or opt.require_version
-- do install package
_install_package(manager_name, package_name, opt)
diff --git a/xmake/modules/package/manager/xmake/find_package.lua b/xmake/modules/package/manager/xmake/find_package.lua
index c10be64ac..f60380be0 100644
--- a/xmake/modules/package/manager/xmake/find_package.lua
+++ b/xmake/modules/package/manager/xmake/find_package.lua
@@ -32,13 +32,13 @@ import("lib.detect.find_library")
function _find_package_from_repo(name, opt)
-- check options
- if not opt.version or not opt.buildhash then
+ if not opt.require_version or not opt.buildhash then
return
end
-- find the manifest file of package, e.g. ~/.xmake/packages/z/zlib/1.1.12/ed41d5327fad3fc06fe376b4a94f62ef/manifest.txt
local packagedirs = {}
- table.insert(packagedirs, path.join(package.installdir(), name:lower():sub(1, 1), name:lower(), opt.version, opt.buildhash))
+ table.insert(packagedirs, path.join(package.installdir(), name:lower():sub(1, 1), name:lower(), opt.require_version, opt.buildhash))
local manifest_file = find_file("manifest.txt", packagedirs)
if not manifest_file then
return