1
Fork 0
ci-images/images/lua-clib/Dockerfile

158 lines
4.6 KiB
Docker

ARG LUA_5_1_VERSION=5.1.5
ARG LUA_5_2_VERSION=5.2.4
ARG LUA_5_3_VERSION=5.3.6
ARG LUA_5_4_VERSION=5.4.4
# renovate: datasource=github-tags depName=luarocks packageName=luarocks/luarocks
ARG LUAROCKS_VERSION=3.11.1
# renovate: datasource=github-releases depName=dart-sass packageName=sass/dart-sass
ARG DART_SASS_VERSION=1.77.8
# renovate: datasource=github-tags depName=node packageName=nodejs/node versioning=node
ARG NODE_VERSION=20.17.0
FROM debian:bookworm-slim AS builder
ENV DEBIAN_FRONTEND=noninteractive
WORKDIR /build
RUN --mount=type=cache,target=/var/cache/apt,id=builder-apt \
set -e; \
apt-get update; \
apt-get install -y --no-install-recommends --no-install-suggests \
ca-certificates \
cmake \
gcc \
g++ \
libc-dev \
libreadline-dev \
make \
unzip \
wget \
xz-utils \
; \
mkdir /usr/local/stow;
FROM builder AS lua51
ARG LUA_5_1_VERSION
ADD http://www.lua.org/ftp/lua-${LUA_5_1_VERSION}.tar.gz /build/lua-5.1.tar.gz
RUN set -e; \
tar -xzf /build/lua-5.1.tar.gz; \
cd lua-${LUA_5_1_VERSION}/src; \
make -j $(nproc) all MYCFLAGS="-DLUA_USE_LINUX -fPIC" MYLIBS="-Wl,-E -ldl -lreadline -lhistory -lncurses"; \
cd ..; \
make INSTALL_TOP=/usr/local/stow/lua5.1 install;
FROM builder AS lua52
ARG LUA_5_2_VERSION
ADD http://www.lua.org/ftp/lua-${LUA_5_2_VERSION}.tar.gz /build/lua-5.2.tar.gz
RUN set -e; \
tar -xzf /build/lua-5.2.tar.gz; \
cd lua-${LUA_5_2_VERSION}/src; \
make -j $(nproc) linux MYCFLAGS="-fPIC"; \
make -j $(nproc) all MYCFLAGS="-DLUA_USE_LINUX -fPIC" MYLIBS="-Wl,-E -ldl -lreadline -lhistory -lncurses"; \
cd ..; \
make INSTALL_TOP=/usr/local/stow/lua5.2 install;
FROM builder AS lua53
ARG LUA_5_3_VERSION
ADD http://www.lua.org/ftp/lua-${LUA_5_3_VERSION}.tar.gz /build/lua-5.3.tar.gz
RUN set -e; \
tar -xzf /build/lua-5.3.tar.gz; \
cd lua-${LUA_5_3_VERSION}/src; \
make -j $(nproc) linux MYCFLAGS="-fPIC"; \
cd ..; \
make INSTALL_TOP=/usr/local/stow/lua5.3 install;
FROM builder AS lua54
ARG LUA_5_4_VERSION
ADD http://www.lua.org/ftp/lua-${LUA_5_4_VERSION}.tar.gz /build/lua-5.4.tar.gz
RUN set -e; \
tar -xzf /build/lua-5.4.tar.gz; \
cd lua-${LUA_5_4_VERSION}/src; \
make -j $(nproc) linux MYCFLAGS="-fPIC"; \
cd ..; \
make INSTALL_TOP=/usr/local/stow/lua5.4 install;
ARG LUAROCKS_VERSION
ADD https://luarocks.org/releases/luarocks-${LUAROCKS_VERSION}.tar.gz /build/luarocks.tar.gz
RUN set -e; \
tar -xzf /build/luarocks.tar.gz; \
cd luarocks-${LUAROCKS_VERSION}; \
./configure --prefix=/usr/local/stow/luarocks --with-lua=/usr/local/stow/lua5.4; \
make -j $(nproc); \
make install;
FROM builder AS sass
ARG DART_SASS_VERSION
ADD https://github.com/sass/dart-sass/releases/download/${DART_SASS_VERSION}/dart-sass-${DART_SASS_VERSION}-linux-x64.tar.gz /build/sass.tar.gz
RUN tar -xzf /build/sass.tar.gz -C /usr/local/bin --strip-components=1 dart-sass/sass;
FROM builder AS node
ARG NODE_VERSION
ADD https://nodejs.org/dist/v${NODE_VERSION}/node-v${NODE_VERSION}-linux-x64.tar.xz /build/node.tar.xz
RUN set -e; \
mkdir -p /usr/local/stow/node; \
tar -xJf /build/node.tar.xz \
-C /usr/local/stow/node \
--strip-components=1 \
--wildcards \
--no-wildcards-match-slash '*/bin/' '*/include/' '*/lib/';
FROM debian:bookworm-slim AS final
ENV DEBIAN_FRONTEND=noninteractive
RUN --mount=type=cache,target=/var/cache/apt,id=apt \
set -e; \
apt-get update; \
apt-get install -y --no-install-recommends --no-install-suggests \
ca-certificates \
cmake \
curl \
gcc \
g++ \
libc-dev \
libreadline-dev \
make \
sudo \
unzip \
wget\
stow \
; \
apt-get remove --auto-remove vim; \
rm -rf \
/usr/share/cmake-*/Help \
/var/lib/apt/lists/* \
/var/log/* \
/usr/local/share/doc/* \
/usr/local/share/man/* \
/usr/share/doc/* \
/usr/share/man/* \
;
COPY --from=lua51 /usr/local /usr/local
COPY --from=lua52 /usr/local /usr/local
COPY --from=lua53 /usr/local /usr/local
COPY --from=lua54 /usr/local /usr/local
COPY --from=node /usr/local /usr/local
COPY --from=sass /usr/local /usr/local
RUN --mount=type=cache,target=/var/cache/luarocks \
set -e; \
stow -d /usr/local/stow -t /usr luarocks; \
stow -d /usr/local/stow -t /usr node; \
luarocks install ldoc; \
luarocks install lua-discount
WORKDIR /
COPY pkgconfig/*.pc /usr/lib/pkgconfig/
COPY enable-lua disable-lua run-with-lua /usr/bin/