summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorXavier Del Campo Romero <xavi.dcr@tutanota.com>2023-10-20 12:50:34 +0200
committerXavier Del Campo Romero <xavi.dcr@tutanota.com>2023-10-24 22:58:59 +0200
commitf001951e3aec75bf750fda476c0ba4ce443029c3 (patch)
tree3f498ed5b6772043675f1abb5eea084c19fe464d
parent505c7012cb160690afdcf5e50a98970ad346cb1e (diff)
WIP prosodyprosody
-rw-r--r--ICU/73.2/Dockerfile18
-rw-r--r--Lua/5.4.6/Dockerfile1
-rw-r--r--LuaExpat/1.5.0/Dockerfile26
-rw-r--r--LuaSec/1.3.2/0001-src-Makefile-Generate-static-library.patch25
-rw-r--r--LuaSec/1.3.2/Dockerfile25
-rw-r--r--LuaSocket/3.1.0/0001-src-makefile-Replace-.so-with-.a.patch133
-rw-r--r--LuaSocket/3.1.0/Dockerfile29
-rw-r--r--Prosody/0.12.4/0001-GNUmakefile-Replace-.so-with-.a.patch89
-rw-r--r--Prosody/0.12.4/Dockerfile64
-rw-r--r--expat/2.5.0/Dockerfile16
-rw-r--r--luafilesystem/1.8.0/0001-Makefile-Replace-.so-with-.a.patch40
-rw-r--r--luafilesystem/1.8.0/Dockerfile21
-rw-r--r--luastatic/master/Dockerfile16
13 files changed, 502 insertions, 1 deletions
diff --git a/ICU/73.2/Dockerfile b/ICU/73.2/Dockerfile
new file mode 100644
index 0000000..1cf0714
--- /dev/null
+++ b/ICU/73.2/Dockerfile
@@ -0,0 +1,18 @@
+FROM alpine
+RUN apk update && apk add \
+ make \
+ gcc \
+ g++ \
+ musl-dev \
+ wget
+RUN wget https://github.com/unicode-org/icu/releases/download/release-73-2/icu4c-73_2-src.tgz
+RUN tar -xf icu4c-73_2-src.tgz
+WORKDIR /icu/source
+ARG PREFIX=/opt/spm/libicu-73.2
+RUN ./configure \
+ --prefix=$PREFIX \
+ --enable-static \
+ --disable-shared \
+ CFLAGS='-ffunction-sections -fdata-sections -Os'
+RUN make -j$(nproc --all)
+RUN make install
diff --git a/Lua/5.4.6/Dockerfile b/Lua/5.4.6/Dockerfile
index 108af74..23e0151 100644
--- a/Lua/5.4.6/Dockerfile
+++ b/Lua/5.4.6/Dockerfile
@@ -1,6 +1,5 @@
FROM alpine
RUN apk update && apk add \
- git \
make \
gcc \
musl-dev \
diff --git a/LuaExpat/1.5.0/Dockerfile b/LuaExpat/1.5.0/Dockerfile
new file mode 100644
index 0000000..90d254b
--- /dev/null
+++ b/LuaExpat/1.5.0/Dockerfile
@@ -0,0 +1,26 @@
+FROM alpine
+RUN apk update && apk add \
+ make \
+ gcc \
+ musl-dev \
+ wget
+COPY --from=lua:5.4.6 /opt/spm/lua-5.4.6/ /usr/local/
+COPY --from=libexpat:2.5.0 /opt/spm/libexpat-2.5.0/ /usr/local/
+RUN wget https://github.com/lunarmodules/luaexpat/archive/refs/tags/1.5.0.tar.gz
+RUN tar -xf 1.5.0.tar.gz
+WORKDIR /luaexpat-1.5.0
+ARG PREFIX=/opt/spm/luaexpat-1.5.0/
+RUN make -j$(nproc --all) \
+ LUA_V=5.4 \
+ LUA_LDIR=/usr/local/lib \
+ LUA_CDIR=/usr/local/lib \
+ LUA_INC=-I/usr/local/include \
+ EXPAT_INC=-I/usr/local/include \
+ COMMON_LDFLAGS="-L/usr/local/lib -llua" \
+ COMMON_CFLAGS="-Os -ffunction-sections -fdata-sections -c" \
+ LIBNAME=lxp.a
+RUN make install \
+ DESTDIR=$PREFIX \
+ LUA_CDIR=lib \
+ LUA_LDIR=lib \
+ LIBNAME=lxp.a
diff --git a/LuaSec/1.3.2/0001-src-Makefile-Generate-static-library.patch b/LuaSec/1.3.2/0001-src-Makefile-Generate-static-library.patch
new file mode 100644
index 0000000..3720d27
--- /dev/null
+++ b/LuaSec/1.3.2/0001-src-Makefile-Generate-static-library.patch
@@ -0,0 +1,25 @@
+From 321059576dbcbb33ff31a8845fa1ecdd58e1876c Mon Sep 17 00:00:00 2001
+From: Xavier Del Campo Romero <xavi.dcr@tutanota.com>
+Date: Tue, 24 Oct 2023 22:19:27 +0200
+Subject: [PATCH] src/Makefile: Generate static library
+
+---
+ src/Makefile | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/src/Makefile b/src/Makefile
+index 9b06a03..19fa52a 100644
+--- a/src/Makefile
++++ b/src/Makefile
+@@ -52,7 +52,7 @@ luasocket:
+ @cd luasocket && $(MAKE)
+
+ $(CMOD): $(EXTRA) $(OBJS)
+- $(CCLD) $(LDFLAGS) -o $@ $(OBJS) $(LIBS)
++ $(AR) $(ARFLAGS) $(OBJS) $@
+
+ clean:
+ cd luasocket && $(MAKE) clean
+--
+2.34.1
+
diff --git a/LuaSec/1.3.2/Dockerfile b/LuaSec/1.3.2/Dockerfile
new file mode 100644
index 0000000..c088d71
--- /dev/null
+++ b/LuaSec/1.3.2/Dockerfile
@@ -0,0 +1,25 @@
+FROM alpine
+RUN apk update && apk add \
+ make \
+ gcc \
+ git \
+ musl-dev \
+ wget
+COPY --from=lua:5.4.6 /opt/spm/lua-5.4.6/ /usr/local/
+COPY --from=luasocket:3.1.0 /opt/spm/luasocket-3.1.0/ /usr/local/
+COPY --from=libopenssl:3.1.1-minimal /opt/spm/openssl-3.1.1/ /usr/local/
+RUN wget https://github.com/brunoos/luasec/archive/refs/tags/v1.3.2.tar.gz
+RUN tar -xf v1.3.2.tar.gz
+WORKDIR /luasec-1.3.2
+RUN mkdir patches
+COPY 0001-src-Makefile-Generate-static-library.patch patches/
+RUN git apply patches/0001-src-Makefile-Generate-static-library.patch
+ARG PREFIX=/opt/spm/luasec-1.3.2
+RUN make \
+ linux \
+ CMOD=libluassl.a \
+ LNX_CFLAGS="-I/usr/local/include -DWITH_LUASOCKET \
+ -ffunction-sections -fdata-sections -Os" \
+ LNX_LDFLAGS=
+
+# TODO: install
diff --git a/LuaSocket/3.1.0/0001-src-makefile-Replace-.so-with-.a.patch b/LuaSocket/3.1.0/0001-src-makefile-Replace-.so-with-.a.patch
new file mode 100644
index 0000000..4120604
--- /dev/null
+++ b/LuaSocket/3.1.0/0001-src-makefile-Replace-.so-with-.a.patch
@@ -0,0 +1,133 @@
+From 744c5c50cfb4e782985f746c5821de6d05b9ece0 Mon Sep 17 00:00:00 2001
+From: Xavier Del Campo Romero <xavi.dcr@tutanota.com>
+Date: Tue, 24 Oct 2023 21:39:44 +0200
+Subject: [PATCH] src/makefile: Replace .so with .a
+
+---
+ src/makefile | 60 ++++++++++++++++++++++++++++++++++++++++------------
+ 1 file changed, 46 insertions(+), 14 deletions(-)
+
+diff --git a/src/makefile b/src/makefile
+index 06f4d19..53d984b 100755
+--- a/src/makefile
++++ b/src/makefile
+@@ -132,6 +132,7 @@ INSTALL_TOP=$(DESTDIR)$(prefix)
+
+ INSTALL_TOP_LDIR=$(INSTALL_TOP)/$(LDIR)
+ INSTALL_TOP_CDIR=$(INSTALL_TOP)/$(CDIR)
++INSTALL_TOP_INCDIR=$(INSTALL_TOP)/$(INCDIR)
+
+ INSTALL_SOCKET_LDIR=$(INSTALL_TOP_LDIR)/socket
+ INSTALL_SOCKET_CDIR=$(INSTALL_TOP_CDIR)/socket
+@@ -170,6 +171,7 @@ SOCKET_macosx=usocket.o
+ #------
+ # Compiler and linker settings
+ # for Linux
++A_linux=a
+ SO_linux=so
+ O_linux=o
+ CC_linux=gcc
+@@ -270,13 +272,19 @@ SOCKET_win64=wsocket.obj
+ #------
+ # Output file names
+ #
++# Packaging notes: library names were taken from Ubuntu APT.
++A=$(A_$(PLAT))
+ SO=$(SO_$(PLAT))
+ O=$(O_$(PLAT))
+ SOCKET_V=3.0.0
+ MIME_V=1.0.3
++SOCKET_A=libluasocket.a
+ SOCKET_SO=socket-$(SOCKET_V).$(SO)
++MIME_A=libluamime.$(A)
+ MIME_SO=mime-$(MIME_V).$(SO)
++UNIX_A=libluaunix.$(A)
+ UNIX_SO=unix.$(SO)
++SERIAL_A=libluasocket-serial.$(A)
+ SERIAL_SO=serial.$(SO)
+ SOCKET=$(SOCKET_$(PLAT))
+
+@@ -360,6 +368,28 @@ TO_TOP_LDIR= \
+ socket.lua \
+ mime.lua
+
++TO_TOP_INCDIR = \
++ auxiliar.h \
++ buffer.h \
++ compat.h \
++ except.h \
++ inet.h \
++ io.h \
++ luasocket.h \
++ mime.h \
++ options.h \
++ pierror.h \
++ select.h \
++ socket.h \
++ tcp.h \
++ timeout.h \
++ udp.h \
++ unixdgram.h \
++ unix.h \
++ unixstream.h \
++ usocket.h \
++ wsocket.h
++
+ #------
+ # Targets
+ #
+@@ -393,35 +423,37 @@ none:
+ @echo "where PLATFORM is one of these:"
+ @echo " $(PLATS)"
+
+-all: $(SOCKET_SO) $(MIME_SO)
++all: $(SOCKET_A) $(MIME_A)
+
+-$(SOCKET_SO): $(SOCKET_OBJS)
+- $(LD) $(SOCKET_OBJS) $(LDFLAGS)$@
++$(SOCKET_A): $(SOCKET_OBJS)
++ $(AR) $(ARFLAGS) $@ $(SOCKET_OBJS)
+
+-$(MIME_SO): $(MIME_OBJS)
+- $(LD) $(MIME_OBJS) $(LDFLAGS)$@
++$(MIME_A): $(MIME_OBJS)
++ $(AR) $(ARFLAGS) $@ $(MIME_OBJS)
+
+-all-unix: all $(UNIX_SO) $(SERIAL_SO)
++all-unix: all $(UNIX_A) $(SERIAL_A)
+
+-$(UNIX_SO): $(UNIX_OBJS)
+- $(LD) $(UNIX_OBJS) $(LDFLAGS)$@
++$(UNIX_A): $(UNIX_OBJS)
++ $(AR) $(ARFLAGS) $@ $(UNIX_OBJS)
+
+-$(SERIAL_SO): $(SERIAL_OBJS)
+- $(LD) $(SERIAL_OBJS) $(LDFLAGS)$@
++$(SERIAL_A): $(SERIAL_OBJS)
++ $(AR) $(ARFLAGS) $@ $(SERIAL_OBJS)
+
+ install:
++ $(INSTALL_DIR) $(INSTALL_TOP_INCDIR)
++ $(INSTALL_DATA) $(TO_TOP_INCDIR) $(INSTALL_TOP_INCDIR)
+ $(INSTALL_DIR) $(INSTALL_TOP_LDIR)
+ $(INSTALL_DATA) $(TO_TOP_LDIR) $(INSTALL_TOP_LDIR)
+ $(INSTALL_DIR) $(INSTALL_SOCKET_LDIR)
+ $(INSTALL_DATA) $(TO_SOCKET_LDIR) $(INSTALL_SOCKET_LDIR)
+ $(INSTALL_DIR) $(INSTALL_SOCKET_CDIR)
+- $(INSTALL_EXEC) $(SOCKET_SO) $(INSTALL_SOCKET_CDIR)/core.$(SO)
++ $(INSTALL_EXEC) $(SOCKET_A) $(INSTALL_SOCKET_CDIR)/
+ $(INSTALL_DIR) $(INSTALL_MIME_CDIR)
+- $(INSTALL_EXEC) $(MIME_SO) $(INSTALL_MIME_CDIR)/core.$(SO)
++ $(INSTALL_EXEC) $(MIME_A) $(INSTALL_MIME_CDIR)/
+
+ install-unix: install
+- $(INSTALL_EXEC) $(UNIX_SO) $(INSTALL_SOCKET_CDIR)/$(UNIX_SO)
+- $(INSTALL_EXEC) $(SERIAL_SO) $(INSTALL_SOCKET_CDIR)/$(SERIAL_SO)
++ $(INSTALL_EXEC) $(UNIX_A) $(INSTALL_SOCKET_CDIR)/
++ $(INSTALL_EXEC) $(SERIAL_A) $(INSTALL_SOCKET_CDIR)/
+
+ local:
+ $(MAKE) install INSTALL_TOP_CDIR=.. INSTALL_TOP_LDIR=..
+--
+2.34.1
+
diff --git a/LuaSocket/3.1.0/Dockerfile b/LuaSocket/3.1.0/Dockerfile
new file mode 100644
index 0000000..1be6721
--- /dev/null
+++ b/LuaSocket/3.1.0/Dockerfile
@@ -0,0 +1,29 @@
+FROM alpine
+RUN apk update && apk add \
+ make \
+ gcc \
+ git \
+ musl-dev \
+ wget
+COPY --from=lua:5.4.6 /opt/spm/lua-5.4.6/ /usr/local/
+RUN wget https://github.com/lunarmodules/luasocket/archive/refs/tags/v3.1.0.tar.gz
+RUN tar -xf v3.1.0.tar.gz
+WORKDIR /luasocket-3.1.0
+RUN mkdir patches
+COPY 0001-src-makefile-Replace-.so-with-.a.patch patches/
+RUN git apply patches/0001-src-makefile-Replace-.so-with-.a.patch
+ARG PREFIX=/opt/spm/luasocket-3.1.0
+RUN make -j$(nproc --all) \
+ LUAINC_linux=/usr/local/include \
+ MYCFLAGS="-ffunction-sections -fdata-sections -Os" \
+ LUAV=5.4 \
+ LDFLAGS_linux=
+RUN make install \
+ LUAV=5.4 \
+ INSTALL_MIME_CDIR=$PREFIX/lib \
+ INSTALL_MIME_LDIR=$PREFIX/lib/mime \
+ INSTALL_SOCKET_CDIR=$PREFIX/lib/ \
+ INSTALL_SOCKET_LDIR=$PREFIX/lib/socket \
+ INSTALL_TOP_LDIR=$PREFIX/lib \
+ INSTALL_TOP_CDIR=$PREFIX/lib \
+ INSTALL_TOP_INCDIR=$PREFIX/include/luasocket
diff --git a/Prosody/0.12.4/0001-GNUmakefile-Replace-.so-with-.a.patch b/Prosody/0.12.4/0001-GNUmakefile-Replace-.so-with-.a.patch
new file mode 100644
index 0000000..9dd0896
--- /dev/null
+++ b/Prosody/0.12.4/0001-GNUmakefile-Replace-.so-with-.a.patch
@@ -0,0 +1,89 @@
+From b4e232dbad5d48048d391e78c749623f800cecdf Mon Sep 17 00:00:00 2001
+From: Xavier Del Campo Romero <xavi.dcr@tutanota.com>
+Date: Tue, 24 Oct 2023 13:17:25 +0200
+Subject: [PATCH] GNUmakefile: Replace .so with .a
+
+---
+ GNUmakefile | 6 +++---
+ util-src/GNUmakefile | 22 +++++++++++-----------
+ 2 files changed, 14 insertions(+), 14 deletions(-)
+
+diff --git a/GNUmakefile b/GNUmakefile
+index e9ec78c4e..3b37382ff 100644
+--- a/GNUmakefile
++++ b/GNUmakefile
+@@ -56,12 +56,12 @@ install-net:
+ $(INSTALL_DATA) net/resolvers/*.lua $(SOURCE)/net/resolvers
+ $(INSTALL_DATA) net/websocket/*.lua $(SOURCE)/net/websocket
+
+-install-util: util/encodings.so util/encodings.so util/pposix.so util/signal.so util/struct.so
++install-util: util/encodings.a util/encodings.a util/pposix.a util/signal.a util/struct.a
+ $(MKDIR) $(SOURCE)
+ $(MKDIR) $(SOURCE)/util
+ $(INSTALL_DATA) util/*.lua $(SOURCE)/util
+ $(MAKE) install -C util-src
+- $(INSTALL_DATA) util/*.so $(SOURCE)/util
++ $(INSTALL_DATA) util/*.a $(SOURCE)/util
+ $(MKDIR) $(SOURCE)/util/sasl
+ $(INSTALL_DATA) util/sasl/*.lua $(SOURCE)/util/sasl
+ $(MKDIR) $(SOURCE)/util/human
+@@ -137,7 +137,7 @@ vpath %.tl teal-src/
+
+ teal: util/jsonschema.lua util/datamapper.lua util/jsonpointer.lua
+
+-util/%.so:
++util/%.a:
+ $(MAKE) install -C util-src
+
+ %.install: %
+diff --git a/util-src/GNUmakefile b/util-src/GNUmakefile
+index 810f39f7e..dfb793658 100644
+--- a/util-src/GNUmakefile
++++ b/util-src/GNUmakefile
+@@ -6,16 +6,16 @@ CFLAGS+=-I$(LUA_INCDIR)
+ INSTALL_DATA=install -m644
+ TARGET?=../util/
+
+-ALL=encodings.so hashes.so net.so pposix.so signal.so table.so \
+- ringbuffer.so time.so poll.so compat.so strbitop.so \
+- struct.so
++ALL=encodings.a hashes.a net.a pposix.a signal.a table.a \
++ ringbuffer.a time.a poll.a compat.a strbitop.a \
++ struct.a
+
+ ifdef RANDOM
+-ALL+=crand.so
++ALL+=crand.a
+ endif
+
+ .PHONY: all install clean
+-.SUFFIXES: .c .o .so
++.SUFFIXES: .c .o .a
+
+ all: $(ALL)
+
+@@ -23,15 +23,15 @@ install: $(ALL)
+ $(INSTALL_DATA) $? $(TARGET)
+
+ clean:
+- rm -f $(ALL) $(patsubst %.so,%.o,$(ALL))
++ rm -f $(ALL) $(patsubst %.a,%.o,$(ALL))
+
+ encodings.o: CFLAGS+=$(IDNA_FLAGS)
+-encodings.so: LDLIBS+=$(IDNA_LIBS)
++encodings.a: LDLIBS+=$(IDNA_LIBS)
+
+-hashes.so: LDLIBS+=$(OPENSSL_LIBS)
++hashes.a: LDLIBS+=$(OPENSSL_LIBS)
+
+ crand.o: CFLAGS+=-DWITH_$(RANDOM)
+-crand.so: LDLIBS+=$(RANDOM_LIBS)
++crand.a: LDLIBS+=$(RANDOM_LIBS)
+
+-%.so: %.o
+- $(LD) $(LDFLAGS) -o $@ $^ $(LDLIBS)
++%.a: %.o
++ $(AR) $(ARFLAGS) $@ $<
+--
+2.34.1
+
diff --git a/Prosody/0.12.4/Dockerfile b/Prosody/0.12.4/Dockerfile
new file mode 100644
index 0000000..9739684
--- /dev/null
+++ b/Prosody/0.12.4/Dockerfile
@@ -0,0 +1,64 @@
+FROM alpine
+RUN apk update && apk add \
+ make \
+ gcc \
+ g++ \
+ git \
+ musl-dev \
+ linux-headers \
+ wget
+# Pull dependencies.
+COPY --from=lua:5.4.6 /opt/spm/lua-5.4.6/ /usr/local/
+COPY --from=libopenssl:3.1.1-minimal /opt/spm/openssl-3.1.1/ /usr/local/
+COPY --from=libicu:73.2 /opt/spm/libicu-73.2/ /usr/local/
+COPY --from=luastatic /opt/spm/luastatic-master/luastatic /usr/local/bin/
+COPY --from=libexpat:2.5.0 /opt/spm/libexpat-2.5.0/ /usr/local/
+COPY --from=luaexpat:1.5.0 /opt/spm/luaexpat-1.5.0/ /usr/local/
+COPY --from=luafilesystem:1.8.0 /opt/spm/luafilesystem-1.8.0/ /usr/local/
+COPY --from=luasocket:3.1.0 /opt/spm/luasocket-3.1.0/ /usr/local/
+# Download application.
+RUN wget https://prosody.im/downloads/source/prosody-0.12.4.tar.gz
+RUN tar -xf prosody-0.12.4.tar.gz
+WORKDIR /prosody-0.12.4
+# Prosody uses some CLI tools from OpenSSL, and those require access
+# to /opt/spm/openssl-3.1.1.
+RUN mkdir -p /opt/spm
+RUN ln -s /usr/local /opt/spm/openssl-3.1.1
+# Prosody shall be installed into a temporary prefix that will be later
+# consumed by luastatic to generate the final, statically built executable.
+ARG TMP_PREFIX=/tmp/prosody-0.12.4
+# Prepare patches.
+RUN mkdir patches
+COPY 0001-GNUmakefile-Replace-.so-with-.a.patch patches/
+RUN git apply patches/0001-GNUmakefile-Replace-.so-with-.a.patch
+# Build application.
+RUN ./configure \
+ --prefix=$TMP_PREFIX \
+ --add-cflags='-ffunction-sections -fdata-sections -Os'
+RUN make -j$(nproc --all)
+RUN make install
+# Build application statically.
+ARG PREFIX=/opt/spm/prosody-0.12.4/bin
+WORKDIR $PREFIX
+RUN CC=c++ luastatic \
+ $TMP_PREFIX/bin/prosody \
+ $(find $TMP_PREFIX/lib -iname '*.lua') \
+ $(find $TMP_PREFIX/lib -iname '*.a') \
+ $(find /usr/local/lib/lxp -iname '*.lua') \
+ $(find /usr/local/lib/socket -iname '*.lua') \
+ /usr/local/lib/mime.lua \
+ /usr/local/lib/socket.lua \
+ /usr/local/lib/lxp.a \
+ /usr/local/lib/libexpat.a \
+ /usr/local/lib/liblfs.a \
+ /usr/local/lib/libluamime.a \
+ /usr/local/lib/libluasocket.a \
+ /usr/local/lib/liblua.a \
+ /usr/local/lib/libicuuc.a \
+ /usr/local/lib/libicui18n.a \
+ /usr/local/lib/libicudata.a \
+ /usr/local/lib64/libcrypto.a \
+ -I/usr/local/include/ \
+ -static \
+ -Wl,--gc-sections
+RUN strip prosody
diff --git a/expat/2.5.0/Dockerfile b/expat/2.5.0/Dockerfile
new file mode 100644
index 0000000..5ae4495
--- /dev/null
+++ b/expat/2.5.0/Dockerfile
@@ -0,0 +1,16 @@
+FROM alpine
+RUN apk update && apk add \
+ make \
+ gcc \
+ musl-dev \
+ wget
+RUN wget https://github.com/libexpat/libexpat/releases/download/R_2_5_0/expat-2.5.0.tar.gz
+RUN tar -xf expat-2.5.0.tar.gz
+WORKDIR /expat-2.5.0
+ARG PREFIX=/opt/spm/libexpat-2.5.0
+RUN ./configure \
+ --disable-shared \
+ --prefix=$PREFIX \
+ CFLAGS='-ffunction-sections -fdata-sections -Os'
+RUN make -j$(nproc --all)
+RUN make install
diff --git a/luafilesystem/1.8.0/0001-Makefile-Replace-.so-with-.a.patch b/luafilesystem/1.8.0/0001-Makefile-Replace-.so-with-.a.patch
new file mode 100644
index 0000000..addf538
--- /dev/null
+++ b/luafilesystem/1.8.0/0001-Makefile-Replace-.so-with-.a.patch
@@ -0,0 +1,40 @@
+From ff291767f7a52ccedfde41e544fcf3b7c5fe2a45 Mon Sep 17 00:00:00 2001
+From: Xavier Del Campo Romero <xavi.dcr@tutanota.com>
+Date: Tue, 24 Oct 2023 16:04:03 +0200
+Subject: [PATCH] Makefile: Replace .so with .a
+
+---
+ Makefile | 12 ++++++------
+ 1 file changed, 6 insertions(+), 6 deletions(-)
+
+diff --git a/Makefile b/Makefile
+index a7312a4..e22c2c9 100644
+--- a/Makefile
++++ b/Makefile
+@@ -9,17 +9,17 @@ include $(CONFIG)
+ SRCS= src/$T.c
+ OBJS= src/$T.o
+
+-lib: src/lfs.so
++LIB=src/liblfs.a
+
+-src/lfs.so: $(OBJS)
+- MACOSX_DEPLOYMENT_TARGET=$(MACOSX_DEPLOYMENT_TARGET); export MACOSX_DEPLOYMENT_TARGET; $(CC) $(LIB_OPTION) -o src/lfs.so $(OBJS)
++$(LIB): $(OBJS)
++ $(AR) $(ARFLAGS) $@ $(OBJS)
+
+-test: lib
++test: $(LIB)
+ LUA_CPATH=./src/?.so lua tests/test.lua
+
+-install:
++install: $(LIB)
+ mkdir -p $(DESTDIR)$(LUA_LIBDIR)
+- cp src/lfs.so $(DESTDIR)$(LUA_LIBDIR)
++ cp $< $(DESTDIR)$(LUA_LIBDIR)
+
+ clean:
+ rm -f src/lfs.so $(OBJS)
+--
+2.34.1
+
diff --git a/luafilesystem/1.8.0/Dockerfile b/luafilesystem/1.8.0/Dockerfile
new file mode 100644
index 0000000..bfbc115
--- /dev/null
+++ b/luafilesystem/1.8.0/Dockerfile
@@ -0,0 +1,21 @@
+FROM alpine
+RUN apk update && apk add \
+ make \
+ gcc \
+ git \
+ musl-dev \
+ wget
+COPY --from=lua:5.4.6 /opt/spm/lua-5.4.6/ /usr/local/
+RUN wget https://github.com/lunarmodules/luafilesystem/archive/refs/tags/v1_8_0.tar.gz
+RUN tar -xf v1_8_0.tar.gz
+WORKDIR /luafilesystem-1_8_0
+RUN mkdir patches
+COPY 0001-Makefile-Replace-.so-with-.a.patch patches/
+RUN git apply patches/0001-Makefile-Replace-.so-with-.a.patch
+ARG PREFIX=/opt/spm/luafilesystem-1.8.0
+RUN make \
+ CFLAGS="-Os -ffunction-sections -fdata-sections -pedantic \
+ -I/usr/local/include" \
+ LUA_VERSION=5.4 \
+ LIB_OPTION=
+RUN make install LUA_LIBDIR=$PREFIX/lib/
diff --git a/luastatic/master/Dockerfile b/luastatic/master/Dockerfile
new file mode 100644
index 0000000..ad04502
--- /dev/null
+++ b/luastatic/master/Dockerfile
@@ -0,0 +1,16 @@
+FROM alpine
+RUN apk update && apk add \
+ git \
+ make \
+ gcc \
+ musl-dev
+RUN git clone --depth 1 --recursive https://github.com/ers35/luastatic \
+ /opt/spm/luastatic-master
+WORKDIR /opt/spm/luastatic-master
+COPY --from=lua:5.4.6 /opt/spm/lua-5.4.6/ /usr/local/
+RUN make -j$(nproc --all) \
+ LUA=lua \
+ LIBLUA_A=/usr/local/lib/liblua.a \
+ LUA_INCLUDE=/usr/local/include \
+ CFLAGS=-static
+RUN strip luastatic