diff options
| author | ruki <[email protected]> | 2020-12-01 22:41:20 +0800 |
|---|---|---|
| committer | ruki <[email protected]> | 2020-12-01 22:41:20 +0800 |
| commit | 2c4176be60a4d114aa6385c667aa30f0e9124af3 (patch) | |
| tree | db1c39f5e412d43016e8376294cf3af8fdf625a7 | |
| parent | 15c4701dd679316802d67d02b2b1c2dd302145bc (diff) | |
improve find_package to rename version args
| -rw-r--r-- | xmake/core/package/package.lua | 16 | ||||
| -rw-r--r-- | xmake/core/sandbox/modules/import/lib/detect/find_program.lua | 2 | ||||
| -rw-r--r-- | xmake/modules/lib/detect/find_package.lua | 62 | ||||
| -rw-r--r-- | xmake/modules/package/manager/dub/find_package.lua | 4 | ||||
| -rw-r--r-- | xmake/modules/package/manager/dub/install_package.lua | 6 | ||||
| -rw-r--r-- | xmake/modules/package/manager/find_package.lua | 12 | ||||
| -rw-r--r-- | xmake/modules/package/manager/go/find_package.lua | 6 | ||||
| -rw-r--r-- | xmake/modules/package/manager/go/install_package.lua | 10 | ||||
| -rw-r--r-- | xmake/modules/package/manager/install_package.lua | 2 | ||||
| -rw-r--r-- | xmake/modules/package/manager/xmake/find_package.lua | 4 |
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 |
