diff options
| author | ruki <[email protected]> | 2018-12-05 00:43:24 +0800 |
|---|---|---|
| committer | ruki <[email protected]> | 2018-12-04 23:29:11 +0800 |
| commit | 6aee7d32d56860554ab336ff575e86ba98b09ef9 (patch) | |
| tree | d44329f21b0542be677a252a6172d2b962a057b5 | |
| parent | 51ab6ac31838463dab940c0d333bce4a2a54bbd6 (diff) | |
rename package build mode directory
| -rw-r--r-- | xmake/actions/require/impl/environment.lua | 6 | ||||
| -rw-r--r-- | xmake/core/package/package.lua | 66 | ||||
| -rw-r--r-- | xmake/core/platform/environment.lua | 12 | ||||
| -rw-r--r-- | xmake/core/sandbox/modules/import/core/package/package.lua | 12 |
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 |
