diff options
| author | V1K1NGbg <victor@ilchev.com> | 2024-08-22 17:48:59 -0300 |
|---|---|---|
| committer | Hisham Muhammad <hisham@gobolinux.org> | 2024-10-21 13:30:51 -0300 |
| commit | e308cb2fb7a3f960e9289464c46264faec9e6edb (patch) | |
| tree | 3a20b888d19c0fc20ff83eebf6d7e4b564ba176b /src | |
| parent | 55450f45af0eb730a679aa2c016a5282c22882eb (diff) | |
| download | luarocks-e308cb2fb7a3f960e9289464c46264faec9e6edb.tar.gz luarocks-e308cb2fb7a3f960e9289464c46264faec9e6edb.tar.bz2 luarocks-e308cb2fb7a3f960e9289464c46264faec9e6edb.zip | |
Teal: convert luarocks.build.make
Diffstat (limited to 'src')
| -rw-r--r-- | src/luarocks/build/make.tl (renamed from src/luarocks/build/make.lua) | 39 |
1 files changed, 24 insertions, 15 deletions
diff --git a/src/luarocks/build/make.lua b/src/luarocks/build/make.tl index 4345ddff..512357f7 100644 --- a/src/luarocks/build/make.lua +++ b/src/luarocks/build/make.tl | |||
| @@ -1,13 +1,28 @@ | |||
| 1 | 1 | ||
| 2 | --- Build back-end for using Makefile-based packages. | 2 | local type Build = require("luarocks.core.types.build").Build |
| 3 | local make = {} | ||
| 4 | 3 | ||
| 5 | local unpack = unpack or table.unpack | 4 | --- Build back-end for using Makefile-based packages. |
| 5 | local record make | ||
| 6 | record MakeBuild | ||
| 7 | is Build where self.type == "make" | ||
| 8 | |||
| 9 | makefile: string | ||
| 10 | build_target: string | ||
| 11 | build_pass: boolean | ||
| 12 | install_target: string | ||
| 13 | install_pass: boolean | ||
| 14 | build_variables: {string: string} | ||
| 15 | install_variables: {string: string} | ||
| 16 | variables: {string: string} | ||
| 17 | end | ||
| 18 | end | ||
| 6 | 19 | ||
| 7 | local fs = require("luarocks.fs") | 20 | local fs = require("luarocks.fs") |
| 8 | local util = require("luarocks.util") | 21 | local util = require("luarocks.util") |
| 9 | local cfg = require("luarocks.core.cfg") | 22 | local cfg = require("luarocks.core.cfg") |
| 10 | 23 | ||
| 24 | local type Rockspec = require("luarocks.core.types.rockspec").Rockspec | ||
| 25 | |||
| 11 | --- Call "make" with given target and variables | 26 | --- Call "make" with given target and variables |
| 12 | -- @param make_cmd string: the make command to be used (typically | 27 | -- @param make_cmd string: the make command to be used (typically |
| 13 | -- configured through variables.MAKE in the config files, or | 28 | -- configured through variables.MAKE in the config files, or |
| @@ -18,17 +33,13 @@ local cfg = require("luarocks.core.cfg") | |||
| 18 | -- @param variables table: A table containing string-string key-value | 33 | -- @param variables table: A table containing string-string key-value |
| 19 | -- pairs representing variable assignments to be passed to make. | 34 | -- pairs representing variable assignments to be passed to make. |
| 20 | -- @return boolean: false if any errors occurred, true otherwise. | 35 | -- @return boolean: false if any errors occurred, true otherwise. |
| 21 | local function make_pass(make_cmd, pass, target, variables) | 36 | local function make_pass(make_cmd: string, pass: boolean, target: string, variables: {string: string}): boolean, string, string |
| 22 | assert(type(pass) == "boolean") | 37 | local assignments: {string} = {} |
| 23 | assert(type(target) == "string") | ||
| 24 | assert(type(variables) == "table") | ||
| 25 | |||
| 26 | local assignments = {} | ||
| 27 | for k,v in pairs(variables) do | 38 | for k,v in pairs(variables) do |
| 28 | table.insert(assignments, k.."="..v) | 39 | table.insert(assignments, k.."="..v) |
| 29 | end | 40 | end |
| 30 | if pass then | 41 | if pass then |
| 31 | return fs.execute(make_cmd.." "..target, unpack(assignments)) | 42 | return fs.execute(make_cmd.." "..target, table.unpack(assignments)) |
| 32 | else | 43 | else |
| 33 | return true | 44 | return true |
| 34 | end | 45 | end |
| @@ -38,10 +49,9 @@ end | |||
| 38 | -- @param rockspec table: the loaded rockspec. | 49 | -- @param rockspec table: the loaded rockspec. |
| 39 | -- @return boolean or (nil, string): true if no errors occurred, | 50 | -- @return boolean or (nil, string): true if no errors occurred, |
| 40 | -- nil and an error message otherwise. | 51 | -- nil and an error message otherwise. |
| 41 | function make.run(rockspec, not_install) | 52 | function make.run(rockspec: Rockspec, not_install: boolean): boolean, string, string |
| 42 | assert(rockspec:type() == "rockspec") | ||
| 43 | 53 | ||
| 44 | local build = rockspec.build | 54 | local build = rockspec.build as make.MakeBuild |
| 45 | 55 | ||
| 46 | if build.build_pass == nil then build.build_pass = true end | 56 | if build.build_pass == nil then build.build_pass = true end |
| 47 | if build.install_pass == nil then build.install_pass = true end | 57 | if build.install_pass == nil then build.install_pass = true end |
| @@ -64,13 +74,12 @@ function make.run(rockspec, not_install) | |||
| 64 | end | 74 | end |
| 65 | 75 | ||
| 66 | util.warn_if_not_used(build.build_variables, { CFLAGS=true }, "variable %s was not passed in build_variables") | 76 | util.warn_if_not_used(build.build_variables, { CFLAGS=true }, "variable %s was not passed in build_variables") |
| 67 | |||
| 68 | util.variable_substitutions(build.build_variables, rockspec.variables) | 77 | util.variable_substitutions(build.build_variables, rockspec.variables) |
| 69 | util.variable_substitutions(build.install_variables, rockspec.variables) | 78 | util.variable_substitutions(build.install_variables, rockspec.variables) |
| 70 | 79 | ||
| 71 | local auto_variables = { "CC" } | 80 | local auto_variables = { "CC" } |
| 72 | 81 | ||
| 73 | for _, variable in pairs(auto_variables) do | 82 | for _, variable in ipairs(auto_variables) do |
| 74 | if not build.build_variables[variable] then | 83 | if not build.build_variables[variable] then |
| 75 | build.build_variables[variable] = rockspec.variables[variable] | 84 | build.build_variables[variable] = rockspec.variables[variable] |
| 76 | end | 85 | end |
