ARG CC=cosmocc CFLAGS="-fdiagnostics-color=always -Os -g -Wall -Wextra -Wwrite-strings -Wno-unused" FROM localhost/notwa-util AS downloader # MAIN: https://nullprogram.com/blog/2019/03/22/ # REPO: https://github.com/skeeto/endlessh ARG ENDLESSH_COMMIT=dfe44eb2c5b6fc3c48a39ed826fe0e4459cdf6ef ARG ENDLESSH_SHA256=c8989988af0a8c848d1a4979962f008c504a12ed6fe6a12e032c37feaa0ae5f8 # MAIN: n/a # REPO: https://github.com/leahneukirchen/lr ARG LR_COMMIT=5af9b79e4ecd07a600ded1a801023536cde97f95 ARG LR_SHA256=3901287cdcf09d0d8f77f8aaa19ca24e9a873d904e201ab8e7bf102426607dcc # MAIN: n/a # REPO: https://github.com/leahneukirchen/xe ARG XE_COMMIT=8a2a4899769335bc14c62aef12cdf26f2f487f2a ARG XE_SHA256=f1ac997912c9be92a74a67a766dde74d1f9b6b20e48d7c7e71598ad4b787b37d # MAIN: http://selfie.cs.uni-salzburg.at/ # REPO: https://github.com/cksystemsteaching/selfie ARG SELFIE_COMMIT=fdf8a94dde13a026dbbfd27ee63bc341dfae9005 ARG SELFIE_SHA256=2953ca277b48fc269ccdae080e5bec7ccf6a700f9ccaf1e26dadd6cc31f4294a # MAIN: n/a # REPO: https://github.com/atomicobject/heatshrink ARG HEATSHRINK_COMMIT=7d419e1fa4830d0b919b9b6a91fe2fb786cf3280 ARG HEATSHRINK_SHA256=b18a1b7ad6f51eac7ac1a81ca072703bd21d6d8727c05cd505843643705af65d RUN --mount=type=cache,id=common,target=/media/common,sharing=locked \ --mount=type=tmpfs,target=/tmp : \ && acquire from=github repo=skeeto/endlessh dest=/endlessh env=ENDLESSH \ && acquire from=github repo=leahneukirchen/lr dest=/lr env=LR \ && acquire from=github repo=leahneukirchen/xe dest=/xe env=XE \ && acquire from=github repo=cksystemsteaching/selfie dest=/selfie env=SELFIE \ && acquire from=github repo=atomicobject/heatshrink dest=/heatshrink env=HEATSHRINK \ ; FROM localhost/cosmo-base AS mini RUN tar zxf /cosmopolitan/dist/headers.tar.gz -C /cosmopolitan COPY --chmod=0755 --from=localhost/notwa-util /nu/ /usr/bin/ WORKDIR /o FROM mini AS mini_endlessh COPY --from=downloader /endlessh /o ARG CC CFLAGS RUN : \ && shed endlessh.c \ 's/\bINET6_ADDRSTRLEN\b/65/g' \ '/\bswitch (errno) {/,/default:/s/\bcase \([A-Z]\+\):/} else if (errno == \1) {/g' \ '/\bswitch (errno) {/,/default:/s/default\:/} else {/' \ 's/\bswitch (errno) {/if (0) {/' \ '/ENDLESSH_VERSION/i\static const struct in6_addr in6addr_any = {0};' \ 's/int fd = accept(server, 0, 0);/struct sockaddr_in dummy1; unsigned int dummy2 = sizeof(dummy1); int fd = accept(server, (struct sockaddr *)\&dummy1, \&dummy2);/' \ && ofc endlessh.c \ ; FROM mini AS mini_lr COPY --from=downloader /lr /o COPY lr.patch /o/ ARG CC CFLAGS RUN : \ && /usr/bin/busybox patch -p1 -i lr.patch \ && shed lr.c \ '/_GNU_SOURCE/a\\#include "libc/dce.h"' \ 's/\bnlink_t\b/uint32_t/g' \ 's/\bdefined(__/&sometimes_/g' \ 's/\b__linux__\b/__sometimes_linux__/g' \ '/#warning fstype/d' \ && ofc lr.c \ ; FROM mini AS mini_xe COPY --from=downloader /xe /o ARG CC CFLAGS RUN ofc xe.c FROM mini AS mini_selfie COPY --from=downloader /selfie /o ARG CC CFLAGS RUN shed selfie.c '/\bPAGESIZE\b/i\\#undef PAGESIZE' && ofc selfie.c FROM mini AS mini_heatshrink COPY --from=downloader /heatshrink /o ARG CC CFLAGS RUN : \ && shed heatshrink.c '/encoder\.h/a\\#include "heatshrink_encoder.c"' \ && shed heatshrink.c '/decoder\.h/a\\#include "heatshrink_decoder.c"' \ && shed heatshrink_encoder.c 's/\b\(output_info\|st_yield_literal\)\b/&_e/g' \ && shed heatshrink_decoder.c 's/\b\(output_info\|st_yield_literal\)\b/&_d/g' \ && CFLAGS="$CFLAGS -Wno-implicit-fallthrough" ofc heatshrink.c \ ; FROM localhost/rescue AS runner COPY --chmod=0755 --from=mini_endlessh /o/*.com /o/*.com.dbg /bin/ COPY --chmod=0755 --from=mini_heatshrink /o/*.com /o/*.com.dbg /bin/ COPY --chmod=0755 --from=mini_lr /o/*.com /o/*.com.dbg /bin/ COPY --chmod=0755 --from=mini_selfie /o/*.com /o/*.com.dbg /bin/ COPY --chmod=0755 --from=mini_xe /o/*.com /o/*.com.dbg /bin/ ENTRYPOINT ["/bin/busybox", "sh"]