diff options
author | V1K1NGbg <victor@ilchev.com> | 2024-08-15 19:20:08 +0300 |
---|---|---|
committer | V1K1NGbg <victor@ilchev.com> | 2024-08-15 19:20:08 +0300 |
commit | ee2e5e5c8f3dc529ad4308b8cfd6b43105eaebcf (patch) | |
tree | c52cacd05a4427b354450e0b9f89005f3752b65f | |
parent | 61859a26e530969d5b5662dba075535a640cec09 (diff) | |
download | luarocks-ee2e5e5c8f3dc529ad4308b8cfd6b43105eaebcf.tar.gz luarocks-ee2e5e5c8f3dc529ad4308b8cfd6b43105eaebcf.tar.bz2 luarocks-ee2e5e5c8f3dc529ad4308b8cfd6b43105eaebcf.zip |
build
-rw-r--r-- | src/luarocks/build/builtin.lua | 3 | ||||
-rw-r--r-- | src/luarocks/build/builtin.tl | 3 | ||||
-rw-r--r-- | src/luarocks/build/cmake.lua | 51 | ||||
-rw-r--r-- | src/luarocks/build/command.lua | 22 | ||||
-rw-r--r-- | src/luarocks/build/originals/cmake-original.lua | 78 | ||||
-rw-r--r-- | src/luarocks/build/originals/command-original.lua | 41 |
6 files changed, 30 insertions, 168 deletions
diff --git a/src/luarocks/build/builtin.lua b/src/luarocks/build/builtin.lua index 3d00a176..853b0318 100644 --- a/src/luarocks/build/builtin.lua +++ b/src/luarocks/build/builtin.lua | |||
@@ -8,9 +8,6 @@ local builtin = {} | |||
8 | 8 | ||
9 | 9 | ||
10 | 10 | ||
11 | local InstallDirs = i.InstallDirs | ||
12 | |||
13 | |||
14 | 11 | ||
15 | 12 | ||
16 | 13 | ||
diff --git a/src/luarocks/build/builtin.tl b/src/luarocks/build/builtin.tl index d052edf6..8bd92d87 100644 --- a/src/luarocks/build/builtin.tl +++ b/src/luarocks/build/builtin.tl | |||
@@ -7,9 +7,6 @@ end | |||
7 | local type r = require("luarocks.core.types.rockspec") | 7 | local type r = require("luarocks.core.types.rockspec") |
8 | local type Rockspec = r.Rockspec | 8 | local type Rockspec = r.Rockspec |
9 | 9 | ||
10 | local type i = require("luarocks.core.types.installs") | ||
11 | local type InstallDirs = i.InstallDirs | ||
12 | |||
13 | local type b = require("luarocks.core.types.build") | 10 | local type b = require("luarocks.core.types.build") |
14 | local type BuiltinBuild = b.BuiltinBuild | 11 | local type BuiltinBuild = b.BuiltinBuild |
15 | local type Build = b.Build | 12 | local type Build = b.Build |
diff --git a/src/luarocks/build/cmake.lua b/src/luarocks/build/cmake.lua index ea245444..b7a4786e 100644 --- a/src/luarocks/build/cmake.lua +++ b/src/luarocks/build/cmake.lua | |||
@@ -1,30 +1,24 @@ | |||
1 | local _tl_compat; if (tonumber((_VERSION or ''):match('[%d.]*$')) or 0) < 5.3 then local p, m = pcall(require, 'compat53.module'); if p then _tl_compat = m end end; local assert = _tl_compat and _tl_compat.assert or assert; local io = _tl_compat and _tl_compat.io or io; local os = _tl_compat and _tl_compat.os or os; local pairs = _tl_compat and _tl_compat.pairs or pairs | ||
2 | 1 | ||
2 | --- Build back-end for CMake-based modules. | ||
3 | local cmake = {} | 3 | local cmake = {} |
4 | 4 | ||
5 | |||
6 | local fs = require("luarocks.fs") | 5 | local fs = require("luarocks.fs") |
7 | local util = require("luarocks.util") | 6 | local util = require("luarocks.util") |
8 | local cfg = require("luarocks.core.cfg") | 7 | local cfg = require("luarocks.core.cfg") |
9 | 8 | ||
10 | 9 | --- Driver function for the "cmake" build back-end. | |
11 | 10 | -- @param rockspec table: the loaded rockspec. | |
12 | 11 | -- @return boolean or (nil, string): true if no errors occurred, | |
13 | 12 | -- nil and an error message otherwise. | |
14 | |||
15 | |||
16 | |||
17 | |||
18 | |||
19 | |||
20 | function cmake.run(rockspec, no_install) | 13 | function cmake.run(rockspec, no_install) |
14 | assert(rockspec:type() == "rockspec") | ||
21 | local build = rockspec.build | 15 | local build = rockspec.build |
22 | local variables = build.variables or {} | 16 | local variables = build.variables or {} |
23 | 17 | ||
24 | 18 | -- Pass Env variables | |
25 | variables.CMAKE_MODULE_PATH = os.getenv("CMAKE_MODULE_PATH") | 19 | variables.CMAKE_MODULE_PATH=os.getenv("CMAKE_MODULE_PATH") |
26 | variables.CMAKE_LIBRARY_PATH = os.getenv("CMAKE_LIBRARY_PATH") | 20 | variables.CMAKE_LIBRARY_PATH=os.getenv("CMAKE_LIBRARY_PATH") |
27 | variables.CMAKE_INCLUDE_PATH = os.getenv("CMAKE_INCLUDE_PATH") | 21 | variables.CMAKE_INCLUDE_PATH=os.getenv("CMAKE_INCLUDE_PATH") |
28 | 22 | ||
29 | util.variable_substitutions(variables, rockspec.variables) | 23 | util.variable_substitutions(variables, rockspec.variables) |
30 | 24 | ||
@@ -33,35 +27,34 @@ function cmake.run(rockspec, no_install) | |||
33 | return nil, err_msg | 27 | return nil, err_msg |
34 | end | 28 | end |
35 | 29 | ||
36 | 30 | -- If inline cmake is present create CMakeLists.txt from it. | |
37 | local build_cmake = build.cmake | 31 | if type(build.cmake) == "string" then |
38 | if type(build_cmake) == "string" then | 32 | local cmake_handler = assert(io.open(fs.current_dir().."/CMakeLists.txt", "w")) |
39 | local cmake_handler = assert((io.open(fs.current_dir() .. "/CMakeLists.txt", "w"))) | ||
40 | cmake_handler:write(build.cmake) | 33 | cmake_handler:write(build.cmake) |
41 | cmake_handler:close() | 34 | cmake_handler:close() |
42 | end | 35 | end |
43 | 36 | ||
44 | 37 | -- Execute cmake with variables. | |
45 | local args = "" | 38 | local args = "" |
46 | 39 | ||
47 | 40 | -- Try to pick the best generator. With msvc and x64, CMake does not select it by default so we need to be explicit. | |
48 | if cfg.cmake_generator then | 41 | if cfg.cmake_generator then |
49 | args = args .. ' -G"' .. cfg.cmake_generator .. '"' | 42 | args = args .. ' -G"'..cfg.cmake_generator.. '"' |
50 | elseif cfg.is_platform("windows") and cfg.target_cpu:match("x86_64$") then | 43 | elseif cfg.is_platform("windows") and cfg.target_cpu:match("x86_64$") then |
51 | args = args .. " -DCMAKE_GENERATOR_PLATFORM=x64" | 44 | args = args .. " -DCMAKE_GENERATOR_PLATFORM=x64" |
52 | end | 45 | end |
53 | 46 | ||
54 | for k, v in pairs(variables) do | 47 | for k,v in pairs(variables) do |
55 | args = args .. ' -D' .. k .. '="' .. tostring(v) .. '"' | 48 | args = args .. ' -D' ..k.. '="' ..tostring(v).. '"' |
56 | end | 49 | end |
57 | 50 | ||
58 | if not fs.execute_string(rockspec.variables.CMAKE .. " -H. -Bbuild.luarocks " .. args) then | 51 | if not fs.execute_string(rockspec.variables.CMAKE.." -H. -Bbuild.luarocks "..args) then |
59 | return nil, "Failed cmake." | 52 | return nil, "Failed cmake." |
60 | end | 53 | end |
61 | 54 | ||
62 | local do_build, do_install | 55 | local do_build, do_install |
63 | if rockspec:format_is_at_least("3.0") then | 56 | if rockspec:format_is_at_least("3.0") then |
64 | do_build = (build.build_pass == nil) and true or build.build_pass | 57 | do_build = (build.build_pass == nil) and true or build.build_pass |
65 | do_install = (build.install_pass == nil) and true or build.install_pass | 58 | do_install = (build.install_pass == nil) and true or build.install_pass |
66 | else | 59 | else |
67 | do_build = true | 60 | do_build = true |
@@ -69,12 +62,12 @@ function cmake.run(rockspec, no_install) | |||
69 | end | 62 | end |
70 | 63 | ||
71 | if do_build then | 64 | if do_build then |
72 | if not fs.execute_string(rockspec.variables.CMAKE .. " --build build.luarocks --config Release") then | 65 | if not fs.execute_string(rockspec.variables.CMAKE.." --build build.luarocks --config Release") then |
73 | return nil, "Failed building." | 66 | return nil, "Failed building." |
74 | end | 67 | end |
75 | end | 68 | end |
76 | if do_install and not no_install then | 69 | if do_install and not no_install then |
77 | if not fs.execute_string(rockspec.variables.CMAKE .. " --build build.luarocks --target install --config Release") then | 70 | if not fs.execute_string(rockspec.variables.CMAKE.." --build build.luarocks --target install --config Release") then |
78 | return nil, "Failed installing." | 71 | return nil, "Failed installing." |
79 | end | 72 | end |
80 | end | 73 | end |
diff --git a/src/luarocks/build/command.lua b/src/luarocks/build/command.lua index 181bc56b..b0c4aa79 100644 --- a/src/luarocks/build/command.lua +++ b/src/luarocks/build/command.lua | |||
@@ -1,23 +1,17 @@ | |||
1 | 1 | ||
2 | 2 | --- Build back-end for raw listing of commands in rockspec files. | |
3 | local command = {} | 3 | local command = {} |
4 | 4 | ||
5 | |||
6 | local fs = require("luarocks.fs") | 5 | local fs = require("luarocks.fs") |
7 | local util = require("luarocks.util") | 6 | local util = require("luarocks.util") |
8 | local cfg = require("luarocks.core.cfg") | 7 | local cfg = require("luarocks.core.cfg") |
9 | 8 | ||
10 | 9 | --- Driver function for the "command" build back-end. | |
11 | 10 | -- @param rockspec table: the loaded rockspec. | |
12 | 11 | -- @return boolean or (nil, string): true if no errors occurred, | |
13 | 12 | -- nil and an error message otherwise. | |
14 | |||
15 | |||
16 | |||
17 | |||
18 | |||
19 | |||
20 | function command.run(rockspec, not_install) | 13 | function command.run(rockspec, not_install) |
14 | assert(rockspec:type() == "rockspec") | ||
21 | 15 | ||
22 | local build = rockspec.build | 16 | local build = rockspec.build |
23 | 17 | ||
@@ -25,8 +19,8 @@ function command.run(rockspec, not_install) | |||
25 | 19 | ||
26 | local env = { | 20 | local env = { |
27 | CC = cfg.variables.CC, | 21 | CC = cfg.variables.CC, |
28 | 22 | --LD = cfg.variables.LD, | |
29 | 23 | --CFLAGS = cfg.variables.CFLAGS, | |
30 | } | 24 | } |
31 | 25 | ||
32 | if build.build_command then | 26 | if build.build_command then |
diff --git a/src/luarocks/build/originals/cmake-original.lua b/src/luarocks/build/originals/cmake-original.lua deleted file mode 100644 index b7a4786e..00000000 --- a/src/luarocks/build/originals/cmake-original.lua +++ /dev/null | |||
@@ -1,78 +0,0 @@ | |||
1 | |||
2 | --- Build back-end for CMake-based modules. | ||
3 | local cmake = {} | ||
4 | |||
5 | local fs = require("luarocks.fs") | ||
6 | local util = require("luarocks.util") | ||
7 | local cfg = require("luarocks.core.cfg") | ||
8 | |||
9 | --- Driver function for the "cmake" build back-end. | ||
10 | -- @param rockspec table: the loaded rockspec. | ||
11 | -- @return boolean or (nil, string): true if no errors occurred, | ||
12 | -- nil and an error message otherwise. | ||
13 | function cmake.run(rockspec, no_install) | ||
14 | assert(rockspec:type() == "rockspec") | ||
15 | local build = rockspec.build | ||
16 | local variables = build.variables or {} | ||
17 | |||
18 | -- Pass Env variables | ||
19 | variables.CMAKE_MODULE_PATH=os.getenv("CMAKE_MODULE_PATH") | ||
20 | variables.CMAKE_LIBRARY_PATH=os.getenv("CMAKE_LIBRARY_PATH") | ||
21 | variables.CMAKE_INCLUDE_PATH=os.getenv("CMAKE_INCLUDE_PATH") | ||
22 | |||
23 | util.variable_substitutions(variables, rockspec.variables) | ||
24 | |||
25 | local ok, err_msg = fs.is_tool_available(rockspec.variables.CMAKE, "CMake") | ||
26 | if not ok then | ||
27 | return nil, err_msg | ||
28 | end | ||
29 | |||
30 | -- If inline cmake is present create CMakeLists.txt from it. | ||
31 | if type(build.cmake) == "string" then | ||
32 | local cmake_handler = assert(io.open(fs.current_dir().."/CMakeLists.txt", "w")) | ||
33 | cmake_handler:write(build.cmake) | ||
34 | cmake_handler:close() | ||
35 | end | ||
36 | |||
37 | -- Execute cmake with variables. | ||
38 | local args = "" | ||
39 | |||
40 | -- Try to pick the best generator. With msvc and x64, CMake does not select it by default so we need to be explicit. | ||
41 | if cfg.cmake_generator then | ||
42 | args = args .. ' -G"'..cfg.cmake_generator.. '"' | ||
43 | elseif cfg.is_platform("windows") and cfg.target_cpu:match("x86_64$") then | ||
44 | args = args .. " -DCMAKE_GENERATOR_PLATFORM=x64" | ||
45 | end | ||
46 | |||
47 | for k,v in pairs(variables) do | ||
48 | args = args .. ' -D' ..k.. '="' ..tostring(v).. '"' | ||
49 | end | ||
50 | |||
51 | if not fs.execute_string(rockspec.variables.CMAKE.." -H. -Bbuild.luarocks "..args) then | ||
52 | return nil, "Failed cmake." | ||
53 | end | ||
54 | |||
55 | local do_build, do_install | ||
56 | if rockspec:format_is_at_least("3.0") then | ||
57 | do_build = (build.build_pass == nil) and true or build.build_pass | ||
58 | do_install = (build.install_pass == nil) and true or build.install_pass | ||
59 | else | ||
60 | do_build = true | ||
61 | do_install = true | ||
62 | end | ||
63 | |||
64 | if do_build then | ||
65 | if not fs.execute_string(rockspec.variables.CMAKE.." --build build.luarocks --config Release") then | ||
66 | return nil, "Failed building." | ||
67 | end | ||
68 | end | ||
69 | if do_install and not no_install then | ||
70 | if not fs.execute_string(rockspec.variables.CMAKE.." --build build.luarocks --target install --config Release") then | ||
71 | return nil, "Failed installing." | ||
72 | end | ||
73 | end | ||
74 | |||
75 | return true | ||
76 | end | ||
77 | |||
78 | return cmake | ||
diff --git a/src/luarocks/build/originals/command-original.lua b/src/luarocks/build/originals/command-original.lua deleted file mode 100644 index b0c4aa79..00000000 --- a/src/luarocks/build/originals/command-original.lua +++ /dev/null | |||
@@ -1,41 +0,0 @@ | |||
1 | |||
2 | --- Build back-end for raw listing of commands in rockspec files. | ||
3 | local command = {} | ||
4 | |||
5 | local fs = require("luarocks.fs") | ||
6 | local util = require("luarocks.util") | ||
7 | local cfg = require("luarocks.core.cfg") | ||
8 | |||
9 | --- Driver function for the "command" build back-end. | ||
10 | -- @param rockspec table: the loaded rockspec. | ||
11 | -- @return boolean or (nil, string): true if no errors occurred, | ||
12 | -- nil and an error message otherwise. | ||
13 | function command.run(rockspec, not_install) | ||
14 | assert(rockspec:type() == "rockspec") | ||
15 | |||
16 | local build = rockspec.build | ||
17 | |||
18 | util.variable_substitutions(build, rockspec.variables) | ||
19 | |||
20 | local env = { | ||
21 | CC = cfg.variables.CC, | ||
22 | --LD = cfg.variables.LD, | ||
23 | --CFLAGS = cfg.variables.CFLAGS, | ||
24 | } | ||
25 | |||
26 | if build.build_command then | ||
27 | util.printout(build.build_command) | ||
28 | if not fs.execute_env(env, build.build_command) then | ||
29 | return nil, "Failed building." | ||
30 | end | ||
31 | end | ||
32 | if build.install_command and not not_install then | ||
33 | util.printout(build.install_command) | ||
34 | if not fs.execute_env(env, build.install_command) then | ||
35 | return nil, "Failed installing." | ||
36 | end | ||
37 | end | ||
38 | return true | ||
39 | end | ||
40 | |||
41 | return command | ||