aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexander M Pickering <alex@cogarr.net>2024-09-23 14:15:46 -0500
committerAlexander M Pickering <alex@cogarr.net>2024-09-23 14:15:46 -0500
commitee696544d079d3fb1699a838e2dcb7e61bffda8a (patch)
tree7684d524c79958a060af5065831b2b6e703015fb
parentfd91580f2d8860d044bbb2237ecc9e6ec0fa0124 (diff)
downloadluarocks-packaging-ee696544d079d3fb1699a838e2dcb7e61bffda8a.tar.gz
luarocks-packaging-ee696544d079d3fb1699a838e2dcb7e61bffda8a.tar.bz2
luarocks-packaging-ee696544d079d3fb1699a838e2dcb7e61bffda8a.zip
Add patch to modify all_in_one and add hardcoded values
-rw-r--r--all_in_one.patch38
-rw-r--r--hardcoded.lua6
-rwxr-xr-xinit94
3 files changed, 113 insertions, 25 deletions
diff --git a/all_in_one.patch b/all_in_one.patch
new file mode 100644
index 0000000..234bcb7
--- /dev/null
+++ b/all_in_one.patch
@@ -0,0 +1,38 @@
1--- "binary/all_in_one.orig" 2024-09-23 13:31:16.489277700 -0500
2+++ "binary/all_in_one" 2024-09-23 13:31:14.032152500 -0500
3@@ -406,27 +406,6 @@
4 fd:write(reindent_c(table.concat(out, "\n")))
5 fd:close()
6
7- assert(deps.check_lua_incdir(cfg.variables))
8- assert(deps.check_lua_libdir(cfg.variables))
9-
10- cmd = table.concat(filter_in(nonnull, {
11- CC, "-o", TARGET_DIR .. "/" .. program_name .. ".exe",
12- "-I", cfg.variables.LUA_INCDIR,
13- if_platform("unix", "-rdynamic"),
14- "-Os",
15- c_filename,
16- "-L", cfg.variables.LUA_LIBDIR,
17- table.concat(a_files, " "),
18- --if_platform("unix", cfg.variables.LUA_LIBDIR .. "/" .. cfg.variables.LUALIB:gsub("%.so.*$", ".a")),
19- --if_platform("windows", "mingw/liblua.a"), -- FIXME
20- cfg.variables.LUA_LIBDIR .. "/" .. cfg.variables.LUALIB:gsub("%.so.*$", ".a"),
21- if_platform("unix", "-ldl"),
22- if_platform("unix", "-lpthread"),
23- if_platform("windows", "-mconsole -mwindows"),
24- "-lm"
25- }), " ")
26- print(cmd)
27- os.execute(cmd)
28 end
29
30 --------------------------------------------------------------------------------
31@@ -500,4 +479,6 @@
32 generate(MAIN_PROGRAM, "src", { EXCLUDE, "^bin/?" })
33 end
34
35-main()
36+cfg.init()
37+fs.init()
38+generate(MAIN_PROGRAM, "src", {EXCLUDE, "^bin/?"})
diff --git a/hardcoded.lua b/hardcoded.lua
new file mode 100644
index 0000000..9be83d8
--- /dev/null
+++ b/hardcoded.lua
@@ -0,0 +1,6 @@
1return {
2 SYSTEM = "windows",
3 PROCESSOR = "x86",
4 FORCE_CONFIG = true,
5 IS_BINARY = true,
6}
diff --git a/init b/init
index 26b3428..37e5393 100755
--- a/init
+++ b/init
@@ -3,25 +3,32 @@
3if [ -e libluajit.a ]; then 3if [ -e libluajit.a ]; then
4 mv libluajit.a liblua.a 4 mv libluajit.a liblua.a
5fi 5fi
6cd luarocks/binary 6tar -xvzf lua-*.tar.gz --directory="lua" --strip-components=1
7mkdir -p build-windows-deps-cicd/lib 7mv hardcoded.lua luarocks/src/core/hardcoded.lua
8cd build-windows-deps-cicd/lib 8cd luarocks
9cp /root/liblua.a . 9mkdir build-binary
10cp /root/libssl.a . 10patch -p1 -i /root/luarocks-packaging/all_in_one.patch
11cp /root/libz.a . 11LUAROCKS_CROSS_COMPILING=1 lua5.4 binary/all_in_one
12cp /root/libbz2.a .
13cd ..
14mkdir bin
15cd bin
16cp /root/*.exe .
17
18mkdir -p windows-deps-cicd/lib
19 12
20cd ../../.. 13#cd luarocks/binary
21LUA_BINDIR=binary/build-windows-deps-cicd/bin 14# mkdir -p build-windows-deps-cicd/lib
22./configure --disable-incdir-check --with-lua=binary/build-windows-deps-cicd/bin --with-lua-lib=binary/build-windows-deps/lib 15# cd build-windows-deps-cicd/lib
23make -f binary/Makefile.windows BUILD_WINDOWS_DEPS_DIR= 16# cp /root/liblua.a .
24LUAROCKS_CROSS_COMPILING=1 make binary LUA_DIR=binary/build-windows-deps-cicd/bin CC=gcc NM=nm BINARY_PLATFORM=windows 17# cp /root/libssl.a .
18# cp /root/libz.a .
19# cp /root/libbz2.a .
20# cd ..
21# mkdir bin
22# cd bin
23# cp /root/*.exe .
24#
25# mkdir -p windows-deps-cicd/lib
26#
27# cd ../../..
28#LUA_BINDIR=binary/build-windows-deps-cicd/bin
29#./configure --disable-incdir-check --with-lua=binary/build-windows-deps-cicd/bin --with-lua-lib=binary/build-windows-deps/lib
30#make -f binary/Makefile.windows BUILD_WINDOWS_DEPS_DIR=
31#LUAROCKS_CROSS_COMPILING=1 make binary LUA_DIR=binary/build-windows-deps-cicd/bin CC=gcc NM=nm BINARY_PLATFORM=windows
25# all_in_one generates a series of files: 32# all_in_one generates a series of files:
26# dir .. "/luarocks/core/hardcoded.lua" 33# dir .. "/luarocks/core/hardcoded.lua"
27# 34#
@@ -50,13 +57,50 @@ LUAROCKS_CROSS_COMPILING=1 make binary LUA_DIR=binary/build-windows-deps-cicd/bi
50# ---------------------- 57# ----------------------
51# Lets modify all_in_one: delete the last line that calls main() and replace it 58# Lets modify all_in_one: delete the last line that calls main() and replace it
52# with: 59# with:
53cfg.init() 60# cfg.init()
54cfg.variables.LUA_INCDIR_OK = true 61# cfg.variables.LUA_INCDIR_OK = true
55cfg.variables.LUA_LIBDIR_OK = true 62# cfg.variables.LUA_LIBDIR_OK = true
56fs.init() 63# fs.init()
57generate(MAIN_PROGRAM, "src", {EXCLUDE, "^bin/?"}) 64# generate(MAIN_PROGRAM, "src", {EXCLUDE, "^bin/?"})
58 65
59# Make the output directory 66# Make the output directory
60mkdir build-binary 67# mkdir build-binary
61# Then call it like: 68# Then call it like:
62LUAROCKS_CROSS_COMPILING=1 lua5.4 binary/all_in_one 69# LUAROCKS_CROSS_COMPILING=1 lua5.4 binary/all_in_one
70
71# Patches to make all_in_one work with lua 5.1:
72# Lua 5.1 never defined LUA_OK, which all_in_one uses to check luaL_loadbuffer(),
73# define it in the preamble if it doesn't already exist.
74
75#ifndef LUA_OK
76#define LUA_OK 0
77#endif
78
79# Lua 5.1 doesn't define lua_copy or luaL_traceback,
80# for lua_copy, we can rewrite with lua_replace() since we're moving the top element.
81# line 137: lua_replace(L,3);
82#
83# Lua 5.1 doesn't define luaL_traceback(), here's what it looks like in 5.1 lua.c:
84#ifndef luaL_traceback
85# static inline void
86# luaL_traceback(lua_State *L, lua_State *L1, const char *msg, int level){
87# lua_getfield(L, LUA_GLOBALSINDEX, "debug");
88# if(!lua_istable(L,-1)){
89# lua_pop(L,1);
90# return;
91# }
92# lua_getfield(L, -1, "traceback");
93# if(!lua_isfunction(L,-1)){
94# lua_pop(L,2);
95# return;
96# }
97# lua_pushthread(L1);
98# lua_pushstring(L,msg);
99# lua_pushnumber(L,level);
100# lua_call(L,3,1);
101# return;
102# }
103#endif
104
105# Finally, use gcc to build:
106#gcc -o build-binary/luarocks.exe -Os build-binary/luarocks.exe.c -I/root/lua/src /root/libz2.a /root/libssl.a /root/libz.a /root/liblua.a -mconsole -mwindows -lm