Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
36 commits
Select commit Hold shift + click to select a range
fb41663
add package scheme
waruqi Jan 5, 2026
4255491
add package schemes
waruqi Jan 5, 2026
7d50659
improve scheme
waruqi Jan 5, 2026
c6a5ff9
improve to load package
waruqi Jan 5, 2026
05e58e9
load schemes
waruqi Jan 5, 2026
60fcc1c
fix load packages
waruqi Jan 6, 2026
a1aed61
improve scheme:get
waruqi Jan 6, 2026
5f6d3db
add scheme test
waruqi Jan 6, 2026
8a1ef48
add current scheme for package
waruqi Jan 6, 2026
7e580d7
update scheme test
waruqi Jan 6, 2026
2bf9799
remove default scheme
waruqi Jan 6, 2026
2c77aaf
remove load schemes
waruqi Jan 6, 2026
3b1f621
improve to select package version for schemes
waruqi Jan 7, 2026
5a00213
improve schemes
waruqi Jan 7, 2026
f218431
add default scheme
waruqi Jan 7, 2026
7d47691
improve package to use current scheme
waruqi Jan 7, 2026
6265a6f
improve to select version
waruqi Jan 8, 2026
90b6cc2
install package from schemes
waruqi Jan 8, 2026
f3c2a43
move patches and resources to scheme
waruqi Jan 8, 2026
cabdd8b
use ninja instead of cmake in scheme test
waruqi Jan 8, 2026
a75179b
improve package tip
waruqi Jan 8, 2026
b2829e1
improve current scheme
waruqi Jan 9, 2026
c688e56
fix mingw for ninja port
waruqi Jan 9, 2026
4429081
fix mingw platform
waruqi Jan 9, 2026
429939b
revert mingw platform
waruqi Jan 9, 2026
4542ea8
fix ninja port
waruqi Jan 9, 2026
e5a5d09
rewrite precompile artifacts
waruqi Jan 9, 2026
441619b
fix use_precompiled_artifacts
waruqi Jan 9, 2026
e0d4203
reset manifest
waruqi Jan 9, 2026
580464b
improve tips
waruqi Jan 9, 2026
9351cca
fix format code
waruqi Jan 10, 2026
bb14ec3
improve scheme tips
waruqi Jan 10, 2026
705c56d
fix scheme test
waruqi Jan 10, 2026
0cdef1c
improve to select scheme version
waruqi Jan 10, 2026
de1004a
fix current scheme
waruqi Jan 10, 2026
b843405
fix lock version
waruqi Jan 10, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
87 changes: 87 additions & 0 deletions tests/projects/package/schemes/port/xmake.lua
Original file line number Diff line number Diff line change
@@ -0,0 +1,87 @@
includes("@builtin/check")

add_rules("mode.release", "mode.debug")

option("version", {description = "The ninja version."})
set_version("$(version)")

set_languages("c++14")
check_cfuncs("USE_PPOLL=1", "ppoll", {includes = "poll.h"})

target("libninja")
set_kind("$(kind)")
set_basename("ninja")

add_files("src/build_log.cc")
add_files("src/build.cc")
add_files("src/clean.cc")
add_files("src/clparser.cc")
add_files("src/debug_flags.cc")
add_files("src/deps_log.cc")
add_files("src/disk_interface.cc")
add_files("src/edit_distance.cc")
add_files("src/eval_env.cc")
add_files("src/graph.cc")
add_files("src/graphviz.cc")
add_files("src/line_printer.cc")
add_files("src/manifest_parser.cc")
add_files("src/metrics.cc")
add_files("src/state.cc")
add_files("src/string_piece_util.cc")
add_files("src/util.cc")
add_files("src/version.cc")
add_files("src/depfile_parser.cc", "src/lexer.cc")

if is_plat("windows", "mingw", "msys") then
add_files("src/subprocess-win32.cc")
add_files("src/includes_normalize-win32.cc")
add_files("src/msvc_helper-win32.cc")
add_files("src/msvc_helper_main-win32.cc")
add_files("src/getopt.c", {sourcekind = "cxx"})
add_files("src/minidump-win32.cc")

add_defines("NOMINMAX")
else
add_files("src/subprocess-posix.cc")
end

if is_plat("mingw") then
add_defines("_WIN32_WINNT=0x0601", "__USE_MINGW_ANSI_STDIO=1")
end

on_load(function (target)
import("core.base.semver")
local version = semver.new(target:version())
if version:ge("1.13.1") then
target:add("files", "src/elide_middle.cc")
target:add("files", "src/jobserver.cc")
target:add("files", "src/real_command_runner.cc")
target:add("files", "src/status_printer.cc")
if target:is_plat("windows", "mingw", "msys") then
target:add("files", "src/jobserver-win32.cc")
else
target:add("files", "src/jobserver-posix.cc")
end
end
if version:ge("1.11.0") then
if version:lt("1.13.1") then
target:add("files", "src/status.cc")
end
target:add("files", "src/json.cc")
target:add("files", "src/missing_deps.cc")
end
if version:ge("1.10.0") then
target:add("files", "src/dyndep.cc")
target:add("files", "src/dyndep_parser.cc")
target:add("files", "src/parser.cc")
end
end)

target("ninja")
set_kind("binary")
add_deps("libninja")

add_files("src/ninja.cc")
if is_plat("windows") then
add_files("windows/ninja.manifest")
end
6 changes: 6 additions & 0 deletions tests/projects/package/schemes/src/main.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
#include <iostream>

int main(int argc, char** argv) {
std::cout << "Hello, schemes test!" << std::endl;
return 0;
}
11 changes: 11 additions & 0 deletions tests/projects/package/schemes/test.lua
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
function main(t)
-- freebsd ci is slower
if is_host("bsd", "solaris") then
return
end

-- only for x86/x64, because it will take too long time on ci with arm/mips
if os.subarch():startswith("x") or os.subarch() == "i386" then
t:build()
end
end
78 changes: 78 additions & 0 deletions tests/projects/package/schemes/xmake.lua
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
add_rules("mode.debug", "mode.release")

package("ninja")
set_kind("binary")
set_homepage("https://ninja-build.org/")
set_description("Small build system for use with gyp or CMake.")

local function add_binary_urls(package, scheme_name)
local scheme = package
if scheme_name then
scheme = package:scheme(scheme_name)
end

if is_host("macosx") then
scheme:add("urls", "https://github.com/ninja-build/ninja/releases/download/v$(version)/ninja-mac.zip")
scheme:add("versions", "1.13.1", "da7797794153629aca5570ef7c813342d0be214ba84632af886856e8f0063dd9")
return true
elseif is_host("linux") then
scheme:add("urls", "https://github.com/ninja-build/ninja/releases/download/v$(version)/ninja-linux.zip")
scheme:add("versions", "1.13.1", "0830252db77884957a1a4b87b05a1e2d9b5f658b8367f82999a941884cbe0238")
return true
elseif is_host("windows") then
scheme:add("urls", "https://github.com/ninja-build/ninja/releases/download/v$(version)/ninja-win.zip")
scheme:add("versions", "1.13.1", "26a40fa8595694dec2fad4911e62d29e10525d2133c9a4230b66397774ae25bf")
return true
end
end

local function add_source_urls(package, scheme_name)
local scheme = package
if scheme_name then
scheme = package:scheme(scheme_name)
end
scheme:add("urls", "https://github.com/ninja-build/ninja/archive/refs/tags/v$(version).tar.gz")
scheme:add("versions", "1.13.1", "f0055ad0369bf2e372955ba55128d000cfcc21777057806015b45e4accbebf23")
end

if add_schemes then
add_schemes("binary", "source")
on_source(function (package)
add_binary_urls(package, "binary")
add_source_urls(package, "source")
end)
else
-- for compatibility with older xmake versions
on_source(function (package)
if add_binary_urls(package) then
package:data_set("scheme", "binary")
else
add_source_urls(package)
package:data_set("scheme", "source")
end
end)
end

on_install("@linux", "@windows", "@msys", "@cygwin", "@macosx", function (package)
local scheme_name = package.current_scheme and package:current_scheme():name() or package:data("scheme")
if scheme_name and scheme_name == "binary" then
raise("trigger failure when installing binaries, then we will fallback to install it from source tarball.")
else
local configs = {}
configs.version = package:version_str()
os.cp(path.join(package:scriptdir(), "port", "xmake.lua"), "xmake.lua")
import("package.tools.xmake").install(package, configs)
end
end)

on_test(function (package)
os.vrun("ninja --version")
end)
package_end()

add_requires("ninja", {system = false})

target("test")
set_kind("binary")
add_files("src/*.cpp")
add_packages("ninja")
4 changes: 0 additions & 4 deletions xmake/core/base/scopeinfo.lua
Original file line number Diff line number Diff line change
Expand Up @@ -359,11 +359,7 @@ end

-- add the api dictionary to the scope info
function _instance:_api_add_dictionary(name, dict_or_key, value, extra_config)

-- get the scope info
local scope = self._INFO

-- check
scope[name] = scope[name] or {}
if type(dict_or_key) == "table" then
local dict = {}
Expand Down
4 changes: 2 additions & 2 deletions xmake/core/package/component.lua
Original file line number Diff line number Diff line change
Expand Up @@ -78,8 +78,8 @@ end
-- get the extra configuration
function _instance:extraconf(name, item, key)
local conf = self._INFO:extraconf(name, item, key)
if conf == nil and self:base() then
conf = self:base():extraconf(name, item, key)
if conf == nil then
conf = self:package():extraconf(name, item, key)
end
return conf
end
Expand Down
Loading
Loading