diff options
| author | dacctal <donotcontactmevia@email.invalid> | 2026-07-27 04:38:32 +0000 |
|---|---|---|
| committer | dacctal <donotcontactmevia@email.invalid> | 2026-07-27 04:38:32 +0000 |
| commit | e2cda84ebbd073ece54692c6a3d785afc6148268 (patch) | |
| tree | 9bb0e82a1a32af82338404e865cbd9bfd9cc6a01 /config | |
| parent | a017a140b912b40a6f61b3d918daa6e7554e65ed (diff) | |
added some config stuffindev
Diffstat (limited to 'config')
| -rw-r--r-- | config/init.lua | 98 | ||||
| -rw-r--r-- | config/pkgit.lua | 53 | ||||
| -rw-r--r-- | config/types.lua | 2 |
3 files changed, 102 insertions, 51 deletions
diff --git a/config/init.lua b/config/init.lua index 2a9dce2..a6a2044 100644 --- a/config/init.lua +++ b/config/init.lua @@ -1,70 +1,68 @@ local pkgit = require("pkgit") local cfg = {} -local prefix = os.getenv("HOME") .. "/.local" +local prefix = os.getenv("HOME").."/.local" cfg.dirs = { - prefix = prefix, - src = prefix .. "/share/pkgit", - bin = prefix .. "/bin", - lib = prefix .. "/lib", - include = prefix .. "/include", + prefix = prefix, + src = prefix.."/share/pkgit", + bin = prefix.."/bin", + lib = prefix.."/lib", + include = prefix.."/include", } -cfg.pkgs = { - ["gmp"] = {}, - ["mpfr"] = {}, - ["mpc"] = {}, - ["gcc"] = { - url = "https://ftp.gnu.org/gnu/gcc/gcc-16.1.0/gcc-16.1.0.tar.xz", - version = "16.1.0", - fetcher = cfg.fetchers.tarball, - dependencies = { - "gmp", "mpfr", "mpc" - } - }, - ["luajit"] = { - url = "https://luajit.org/git/luajit.git", - version = "v2.1", - fetcher = cfg.fetchers.git, - dependencies = { - "gcc" - }, - }, - ["pkgit"] = { - url = "https://git.symlinx.net/pkgit", - version = "HEAD", - fetcher = cfg.fetchers.git, - dependencies = { - "luajit", - }, - opts = {}, - recipe = cfg.recipes.make, - } -} - -cfg.fetchers = { - git = { - get_source = function(url, version, target_dir) return 0 end, - get_version = function(url, target_dir) return "HEAD" end, - }, - tarball = { - get_source = function(url, version, target_dir) return 0 end, - get_version = function(url, target_dir) return "" end, - } +cfg.fetchers = {} +cfg.fetchers.git = { + get_source = function(url, version) return pkgit.run({ + "git clone --branch "..version.." --recursive --depth 1 "..url + }) end, + get_version = function(url) return io.popen( + "git -c 'versionsort.suffix=-' \ + ls-remote --exit-code --refs --sort='version:refname' \ + --tags "..url.." '*.*.*' \ + | tail --lines=1 \ + | cut --delimiter='/' --fields=3" + ):read("*a") end, } cfg.fetchers.default = cfg.fetchers.git cfg.recipes = {} cfg.recipes.make = { build = function(bldit_build) - return pkgit.run({ "make" }) + return pkgit.run({"make"}) end, install = function(bldit_install) - return pkgit.run({ "make install PREFIX=" .. prefix }) + return pkgit.run({"make install PREFIX="..prefix}) end, remove = function(bldit_remove) - return pkgit.run({ "make uninstall PREFIX=" .. prefix }) + return pkgit.run({"make uninstall PREFIX="..prefix}) end, } +local builds = { + make = { + files = { + "makefile", + "Makefile", + "Makefile.am", + }, + recipe = cfg.recipes.make + } +} +cfg.recipes.default = function(final_dir) return pkgit.autodetect(builds, final_dir) end + +cfg.pkgs = {} +cfg.pkgs.pkgit = { + url = "https://git.symlinx.net/pkgit", + version = "HEAD", + fetcher = cfg.fetchers.git, + dependencies = { + luajit = { + url = "https://luajit.org/git/luajit.git", + version = "v2.1", + fetcher = cfg.fetchers.git, + } + }, + opts = {}, + recipe = cfg.recipes.make, +} return cfg diff --git a/config/pkgit.lua b/config/pkgit.lua new file mode 100644 index 0000000..718e761 --- /dev/null +++ b/config/pkgit.lua @@ -0,0 +1,53 @@ +-- std pkgit functions + +local M = {} + +function M.run(items, verbose) + local cmd = io.popen('set -e &&\n'..table.concat(items,"&&\n")) + if cmd == nil then return 1 end + if verbose then print(cmd:read("*a")) end + local rc = {cmd:close()} + if rc[1] then return 0 + else return 1 + end +end + +function M.join(t1, ...) + local new = t1 + local tables = { ... } + for _, new_table in ipairs(tables) do + for index, val in ipairs(new_table) do + if val ~= nil then + new[index] = val + end + end + end + return new +end + +function M.exists(s) + local file = io.open(s, "r") + if file ~= nil then + io.close(file) + return true + else + return false + end +end + +function M.autodetect(builds, final_dir) + for k, system in pairs(builds) do + for i, file in pairs(system.files) do + if M.exists(final_dir.."/"..file) then + return system.step + end + end + end +end + +function M.destdir(name, version) + if version == nil then version = "HEAD" end + return cfg.dirs.src.."/"..name.."/"..version +end + +return M diff --git a/config/types.lua b/config/types.lua index 10a444d..8f80369 100644 --- a/config/types.lua +++ b/config/types.lua @@ -26,7 +26,7 @@ ---@field fetcher Fetcher | nil ---@field dependencies { [string]: Package } | "bldit" | nil ---@field opts table? ----@field recipe Recipe | "bldit" | nil +---@field recipe Recipe | fun(final_dir: string): Recipe | "bldit" | nil ---@class (exact) Config ---@field dirs Dirs |
