summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorruki <[email protected]>2018-12-05 00:43:24 +0800
committerruki <[email protected]>2018-12-04 23:29:11 +0800
commit6aee7d32d56860554ab336ff575e86ba98b09ef9 (patch)
treed44329f21b0542be677a252a6172d2b962a057b5
parent51ab6ac31838463dab940c0d333bce4a2a54bbd6 (diff)
rename package build mode directory
-rw-r--r--xmake/actions/require/impl/environment.lua6
-rw-r--r--xmake/core/package/package.lua66
-rw-r--r--xmake/core/platform/environment.lua12
-rw-r--r--xmake/core/sandbox/modules/import/core/package/package.lua12
4 files changed, 54 insertions, 42 deletions
diff --git a/xmake/actions/require/impl/environment.lua b/xmake/actions/require/impl/environment.lua
index d6c068ffe..3025e0459 100644
--- a/xmake/actions/require/impl/environment.lua
+++ b/xmake/actions/require/impl/environment.lua
@@ -50,10 +50,8 @@ function enter()
local arch = get_config("arch")
_g.prefixdirs = _g.prefixdirs or
{
- core_package.prefixdir(false, false, plat, arch),
- core_package.prefixdir(false, true, plat, arch),
- core_package.prefixdir(true, false, plat, arch),
- core_package.prefixdir(true, true, plat, arch)
+ core_package.prefixdir(false, "release", plat, arch),
+ core_package.prefixdir(true, "release", plat, arch),
}
-- add search directories of pkgconfig, aclocal, cmake
diff --git a/xmake/core/package/package.lua b/xmake/core/package/package.lua
index e46733c16..d9f70f0d4 100644
--- a/xmake/core/package/package.lua
+++ b/xmake/core/package/package.lua
@@ -57,6 +57,20 @@ function _instance.new(name, info, rootdir)
return instance
end
+-- get the build mode
+function _instance:_buildmode()
+ if self._BUILDMODE == nil then
+ local buildmode = self:debug() and "debug" or "release"
+ local configs = self:configs()
+ if configs then
+ self._BUILDMODE = buildmode .. "_" .. hash.uuid(table.makestr(configs, true)):split('-')[1]
+ else
+ self._BUILDMODE = buildmode
+ end
+ end
+ return self._BUILDMODE
+end
+
-- get the package configure
function _instance:get(name)
@@ -221,7 +235,7 @@ end
function _instance:installdir(...)
-- make the given install directory
- local dir = path.join(package.installdir(self:debug(), self:plat(), self:arch()), self:name():sub(1, 1):lower(), self:name(), self:version_str(), ...)
+ local dir = path.join(package.installdir(self:_buildmode(), self:plat(), self:arch()), self:name():sub(1, 1):lower(), self:name(), self:version_str(), ...)
-- ensure the install directory
if not os.isdir(dir) then
@@ -234,7 +248,7 @@ end
function _instance:prefixdir(...)
-- make the given prefix directory
- local dir = path.join(package.prefixdir(self:from("global"), self:debug(), self:plat(), self:arch()), ...)
+ local dir = path.join(package.prefixdir(self:from("global"), self:_buildmode(), self:plat(), self:arch()), ...)
-- ensure the prefix directory
if not os.isdir(dir) then
@@ -254,7 +268,7 @@ end
-- get the prefix info file
function _instance:prefixfile()
- return path.join(package.prefixinfodir(self:from("global"), self:debug(), self:plat(), self:arch()), self:name():sub(1, 1):lower(), self:name(), self:version_str(), "info.txt")
+ return path.join(package.prefixinfodir(self:from("global"), self:_buildmode(), self:plat(), self:arch()), self:name():sub(1, 1):lower(), self:name(), self:version_str(), "info.txt")
end
-- get prefix variables
@@ -294,7 +308,7 @@ function _instance:register()
-- register the environment variables
for name, values in pairs(table.wrap(self:prefixinfo().envars)) do
- package.addenv(self:from("global"), self:debug(), self:plat(), self:arch(), name, values)
+ package.addenv(self:from("global"), self:_buildmode(), self:plat(), self:arch(), name, values)
end
end
@@ -303,7 +317,7 @@ function _instance:unregister()
-- unregister the environment variables
for name, values in pairs(table.wrap(self:prefixinfo().envars)) do
- package.delenv(self:from("global"), self:debug(), self:plat(), self:arch(), name, values)
+ package.delenv(self:from("global"), self:_buildmode(), self:plat(), self:arch(), name, values)
end
end
@@ -572,7 +586,7 @@ function _instance:fetch(opt)
-- and add cache key to make a distinction with finding system package
if not fetchinfo and system ~= true then
fetchinfo = self._find_package(self:name(), {prefixdirs = self:prefixdir(),
- mode = self:debug() and "debug" or nil,
+ mode = self:_buildmode(),
system = false,
islocal = self:from("local"),
version = require_ver,
@@ -586,7 +600,7 @@ function _instance:fetch(opt)
fetchinfo = self._find_package(self:name(), {force = opt.force,
version = require_ver,
cachekey = "fetch:system",
- mode = self:debug() and "debug" or nil,
+ mode = self:_buildmode(),
system = true})
if fetchinfo then fetchfrom = "system" end
end
@@ -701,51 +715,51 @@ function package.cachedir()
end
-- the install directory
-function package.installdir(is_debug, plat, arch)
- return path.join(global.directory(), "installed", plat or os.host(), arch or os.arch(), is_debug and "debug" or "release")
+function package.installdir(mode, plat, arch)
+ return path.join(global.directory(), "installed", plat or os.host(), arch or os.arch(), mode or "release")
end
-- get the prefix directory
-function package.prefixdir(is_global, is_debug, plat, arch)
- return path.join(is_global and global.directory() or config.directory(), "prefix", plat or os.host(), arch or os.arch(), is_debug and "debug" or "release")
+function package.prefixdir(is_global, mode, plat, arch)
+ return path.join(is_global and global.directory() or config.directory(), "prefix", plat or os.host(), arch or os.arch(), mode or "release")
end
-- get the prefix info directory
-function package.prefixinfodir(is_global, is_debug, plat, arch)
- return path.join(is_global and global.directory() or config.directory(), "prefix", "info", plat or os.host(), arch or os.arch(), is_debug and "debug" or "release")
+function package.prefixinfodir(is_global, mode, plat, arch)
+ return path.join(is_global and global.directory() or config.directory(), "prefix", "info", plat or os.host(), arch or os.arch(), mode or "release")
end
-- get the prefix info
-function package.prefixinfo(is_global, is_debug, plat, arch)
- local prefixfile = package.prefixfile(is_global, is_debug, plat, arch)
+function package.prefixinfo(is_global, mode, plat, arch)
+ local prefixfile = package.prefixfile(is_global, mode, plat, arch)
return os.isfile(prefixfile) and io.load(prefixfile) or {}
end
-- get the prefix info file
-function package.prefixfile(is_global, is_debug, plat, arch)
- return path.join(package.prefixinfodir(is_global, is_global, plat, arch), "info.txt")
+function package.prefixfile(is_global, mode, plat, arch)
+ return path.join(package.prefixinfodir(is_global, mode, plat, arch), "info.txt")
end
-- get environment variables
-function package.getenv(is_global, is_debug, plat, arch, name)
- local prefixinfo = package.prefixinfo(is_global, is_debug, plat, arch)
+function package.getenv(is_global, mode, plat, arch, name)
+ local prefixinfo = package.prefixinfo(is_global, mode, plat, arch)
return prefixinfo.envars and prefixinfo.envars[name] or nil
end
-- add values to environment variable
-function package.addenv(is_global, is_debug, plat, arch, name, values)
+function package.addenv(is_global, mode, plat, arch, name, values)
-- add to the root prefix info
- local prefixinfo = package.prefixinfo(is_global, is_debug, plat, arch)
+ local prefixinfo = package.prefixinfo(is_global, mode, plat, arch)
prefixinfo.envars = prefixinfo.envars or {}
prefixinfo.envars[name] = table.join(prefixinfo.envars[name] or {}, values)
- io.save(package.prefixfile(is_global, is_debug, plat, arch), prefixinfo)
+ io.save(package.prefixfile(is_global, mode, plat, arch), prefixinfo)
-- add to the current environment
if values then
-- PATH? add the prefix root directory
if name:lower() == "path" then
- local prefixdir = package.prefixdir(is_global, is_debug, plat, arch)
+ local prefixdir = package.prefixdir(is_global, mode, plat, arch)
for _, value in ipairs(values) do
os.addenv(name, path.join(prefixdir, value))
end
@@ -756,8 +770,8 @@ function package.addenv(is_global, is_debug, plat, arch, name, values)
end
-- remove values to environment variable
-function package.delenv(is_global, is_debug, plat, arch, name, values)
- local prefixinfo = package.prefixinfo(is_global, is_debug, plat, arch)
+function package.delenv(is_global, mode, plat, arch, name, values)
+ local prefixinfo = package.prefixinfo(is_global, mode, plat, arch)
local prefixvalues = prefixinfo.envars and prefixinfo.envars[name] or nil
if prefixvalues then
local exists = {}
@@ -770,7 +784,7 @@ function package.delenv(is_global, is_debug, plat, arch, name, values)
table.remove(prefixvalues, i)
end
end
- io.save(package.prefixfile(is_global, is_debug, plat, arch), prefixinfo)
+ io.save(package.prefixfile(is_global, mode, plat, arch), prefixinfo)
end
end
diff --git a/xmake/core/platform/environment.lua b/xmake/core/platform/environment.lua
index 654d4bc1a..dc8c65ef9 100644
--- a/xmake/core/platform/environment.lua
+++ b/xmake/core/platform/environment.lua
@@ -40,15 +40,15 @@ function environment._enter_toolchains()
environment._PATH = os.getenv("PATH")
-- add global search binary pathes
- local globaldir = package.prefixdir(true, false, os.host(), os.arch())
- for _, dir in ipairs(table.wrap(package.getenv(true, false, os.host(), os.arch(), "PATH"))) do
+ local globaldir = package.prefixdir(true, "release", os.host(), os.arch())
+ for _, dir in ipairs(table.wrap(package.getenv(true, "release", os.host(), os.arch(), "PATH"))) do
os.addenv("PATH", path.join(globaldir, dir))
end
os.addenv("PATH", path.join(globaldir, "bin"))
-- add local search binary pathes
- local localdir = package.prefixdir(false, false, os.host(), os.arch())
- for _, dir in ipairs(table.wrap(package.getenv(false, false, os.host(), os.arch(), "PATH"))) do
+ local localdir = package.prefixdir(false, "release", os.host(), os.arch())
+ for _, dir in ipairs(table.wrap(package.getenv(false, "release", os.host(), os.arch(), "PATH"))) do
os.addenv("PATH", path.join(localdir, dir))
end
os.addenv("PATH", path.join(localdir, "bin"))
@@ -80,7 +80,7 @@ function environment._enter_run()
environment._LD_LIBRARY_PATH = os.getenv("LD_LIBRARY_PATH")
-- add global search library pathes of pathes
- local globaldir = package.prefixdir(true, false, os.host(), os.arch())
+ local globaldir = package.prefixdir(true, "release", os.host(), os.arch())
if os.host() == "windows" then
os.addenv("PATH", path.join(globaldir, "lib"))
else
@@ -88,7 +88,7 @@ function environment._enter_run()
end
-- add local search library pathes of pathes
- local localdir = package.prefixdir(false, false, os.host(), os.arch())
+ local localdir = package.prefixdir(false, "release", os.host(), os.arch())
if os.host() == "windows" then
os.addenv("PATH", path.join(localdir, "lib"))
else
diff --git a/xmake/core/sandbox/modules/import/core/package/package.lua b/xmake/core/sandbox/modules/import/core/package/package.lua
index 9d8c78324..dbe11f030 100644
--- a/xmake/core/sandbox/modules/import/core/package/package.lua
+++ b/xmake/core/sandbox/modules/import/core/package/package.lua
@@ -36,18 +36,18 @@ function sandbox_core_package_package.cachedir()
end
-- the install directory
-function sandbox_core_package_package.installdir(is_debug, plat, arch)
- return package.installdir(is_debug, plat, arch)
+function sandbox_core_package_package.installdir(mode, plat, arch)
+ return package.installdir(mode, plat, arch)
end
-- get the prefix directory
-function sandbox_core_package_package.prefixdir(is_global, is_debug, plat, arch)
- return package.prefixdir(is_global, is_debug, plat, arch)
+function sandbox_core_package_package.prefixdir(is_global, mode, plat, arch)
+ return package.prefixdir(is_global, mode, plat, arch)
end
-- get the prefix info directory
-function sandbox_core_package_package.prefixinfodir(is_global, is_debug, plat, arch)
- return package.prefixinfodir(is_global, is_debug, plat, arch)
+function sandbox_core_package_package.prefixinfodir(is_global, mode, plat, arch)
+ return package.prefixinfodir(is_global, mode, plat, arch)
end
-- load the package from the project file