diff options
Diffstat (limited to '.github/actions/muslbuilder/Dockerfile')
-rw-r--r-- | .github/actions/muslbuilder/Dockerfile | 162 |
1 files changed, 162 insertions, 0 deletions
diff --git a/.github/actions/muslbuilder/Dockerfile b/.github/actions/muslbuilder/Dockerfile new file mode 100644 index 0000000..41d0910 --- /dev/null +++ b/.github/actions/muslbuilder/Dockerfile @@ -0,0 +1,162 @@ +FROM alpine:3.16 + +LABEL com.github.actions.name="C++ MUSL Builder Slim" +LABEL com.github.actions.description="Provides a C++ MUSL environment" +LABEL com.github.actions.icon="settings" +LABEL com.github.actions.color="orange" + +RUN apk update && apk add --no-cache \ + build-base \ + binutils \ + m4 \ + git \ + cmake \ + make \ + libgcc \ + musl-dev \ + gcc \ + g++ \ + lz4 \ + lz4-dev \ + lz4-static \ + zip \ + zstd \ + zstd-dev \ + zstd-static \ + perl \ + autoconf \ + automake \ + elfutils \ + elfutils-dev \ + libelf-static \ + libexecinfo-dev \ + libexecinfo-static \ + libtool \ + libunwind \ + libunwind-dev \ + libunwind-static \ + linux-headers + +ADD https://www.libarchive.org/downloads/libarchive-3.6.2.tar.gz / +ADD https://ftp.gnu.org/gnu/make/make-4.2.1.tar.gz / +ADD https://ftp.gnu.org/gnu/ncurses/ncurses-6.4.tar.gz / +ADD https://github.com/PCRE2Project/pcre2/releases/download/pcre2-10.42/pcre2-10.42.tar.gz / +ADD https://ftp.gnu.org/gnu/readline/readline-6.3.tar.gz / +ADD https://zlib.net/zlib-1.2.13.tar.gz / +ADD https://sourceware.org/pub/bzip2/bzip2-1.0.8.tar.gz / +ADD https://www.sqlite.org/2023/sqlite-autoconf-3420000.tar.gz / +ADD https://www.openssl.org/source/openssl-1.0.2n.tar.gz / +ADD https://www.libssh2.org/download/libssh2-1.11.0.tar.gz / +ADD https://curl.se/download/curl-8.1.2.tar.gz / +ADD https://tukaani.org/xz/xz-5.4.3.tar.gz / + +RUN mkdir -p /fake.root /packages /extract +ENV SQLITE_CFLAGS="\ + -DSQLITE_ENABLE_COLUMN_METADATA \ + -DSQLITE_SOUNDEX \ + -DSQLITE_ENABLE_DBSTAT_VTAB \ + -DSQLITE_ENABLE_API_ARMOR \ + -DSQLITE_ENABLE_JSON1 \ + -DSQLITE_ENABLE_UPDATE_DELETE_LIMIT \ + " + +ENV NCURSES_FALLBACKS="\ +ansi,\ +cygwin,\ +Eterm,\ +Eterm-256color,\ +gnome,\ +gnome-256color,\ +konsole,\ +konsole-256color,\ +linux,\ +putty,\ +rxvt,\ +rxvt-256color,\ +screen,\ +screen-16color,\ +screen-256color,\ +tmux,\ +tmux-256color,\ +vt100,\ +vt220,\ +xterm,\ +xterm-256color\ +" + +RUN cd /extract && for pkg in /*.tar.gz; do tar xvfz "$pkg"; done + +RUN cd /extract/bzip2-1.0.8 && make install PREFIX=/fake.root && make clean + +RUN cd /extract/zlib-* && ./configure --prefix=/fake.root && make -j2 && make install && make clean + +RUN cd /extract/xz-* && \ + ./configure --prefix=/fake.root \ + --disable-shared \ + "LDFLAGS=-L/fake.root/lib" \ + "CPPFLAGS=-I/fake.root/include" \ + && \ + make -j2 && \ + make install && make clean + +RUN cd /extract/libarchive-* && \ + ./configure --prefix=/fake.root \ + --disable-shared \ + "LDFLAGS=-L/fake.root/lib" \ + "CPPFLAGS=-I/fake.root/include" \ + && \ + make -j2 && \ + make install && make clean + +RUN cd /extract/make-4.2.1 && ./configure --prefix=/fake.root && make -j2 && make install && make clean +RUN cd /extract/readline-* && ./configure --prefix=/fake.root && make -j2 && make install && make clean + +RUN cd /extract/sqlite-* && \ + ./configure --disable-editline --prefix=/fake.root \ + CFLAGS="${SQLITE_CFLAGS}" \ + && \ + make -j2 && make install && make clean + +RUN cd /extract/openssl-* && \ + ./config --prefix=/fake.root -fPIC && \ + make -j2 && \ + make install && make clean + +RUN cd /extract/ncurses-* && \ + ./configure --prefix=/fake.root \ + --enable-ext-mouse \ + --enable-sigwinch \ + --with-default-terminfo-dir=/usr/share/terminfo \ + --enable-ext-colors \ + --enable-widec \ + --enable-termcap \ + --with-fallbacks=$NCURSES_FALLBACKS \ + && \ + make -j2 && make install && make clean + +RUN cd /extract/pcre2-* && \ + ./configure --prefix=/fake.root \ + --enable-jit \ + && \ + make -j2 && make install && make clean + +RUN cd /extract/libssh2-* && \ + ./configure --prefix=/fake.root \ + --with-libssl-prefix=/fake.root \ + --with-libz-prefix=/fake.root \ + "CPPFLAGS=-I/fake.root/include" \ + "LDFLAGS=-ldl -L/fake.root/lib" && \ + make -j2 && \ + make install && make clean + +RUN cd /extract/curl-* && \ + ./configure --prefix=/fake.root \ + --with-libssh2=/fake.root \ + --with-ssl=/fake.root \ + --with-zlib=/fake.root \ + "LDFLAGS=-ldl" && \ + make -j2 && \ + make install && make clean + +COPY entrypoint.sh /entrypoint.sh +ENTRYPOINT ["/entrypoint.sh"] |