# MAIN: https://muon.build/ # REPO: https://git.sr.ht/~lattis/muon FROM localhost/notwa-util AS downloader ARG MUON_COMMIT=2021ab4aa102e966cabc202bc55686df2785db12 ARG MUON_SHA256=0d1b7fd0d49529fc4e90895e404a58b467c1a3a4f50733a27cff380e980dc991 RUN --mount=type=cache,id=common,target=/media/common,sharing=locked \ --mount=type=tmpfs,target=/tmp : \ && acquire from=sourcehut repo=lattis/muon dest=/muon \ commit="$MUON_COMMIT" checksum="$MUON_SHA256" \ ; FROM localhost/cosmo AS builder RUN apk add --no-cache ninja COPY --chmod=0755 --from=localhost/notwa-util /nu/cosmocc /usr/bin/ ENV CC=cosmocc CFLAGS="-Os -g -fdiagnostics-color=always" # TODO: why is this test failing? # c compiler: supports argument '-Wundef': NO COPY --from=downloader /muon /muon WORKDIR /muon RUN : \ && tar zxf /cosmopolitan/dist/headers.tar.gz -C /cosmopolitan \ && ./bootstrap.sh build \ ; COPY --chmod=0755 --from=localhost/notwa-util /nu/shed /usr/bin/ RUN : \ # forcibly disable handling of 32-bit ELF files (we lack the headers) \ && shed src/platform/posix/rpath_fixer.c \ '/\bcase ELFCLASS32:/,/\bbreak;/d' \ 's@.*Elf32.*@/* & */@' \ # use cosmopolitan linenoise instead of bestline \ && echo >subprojects/bestline/bestline.c \ && printf '%s\n' >subprojects/bestline/bestline.h \ '#include "third_party/linenoise/linenoise.h"' \ '#define bestlineHistoryAdd linenoiseHistoryAdd' \ '#define bestlineHistoryFree linenoiseHistoryFree' \ '#define bestlineWithHistory linenoiseWithHistory' \ \ && build/muon setup -Dstatic=true build \ && ninja -j2 -C build \ && cd build \ && mv muon muon.com.dbg \ && objcopy -S -O binary muon.com.dbg muon.com \ ; FROM scratch AS runner COPY --chmod=0755 --from=localhost/notwa-util /nu/busybox /bin/busybox COPY --chmod=0755 --from=builder /cosmopolitan/dist/def/ape.elf /bin/ape COPY --chmod=0755 --from=builder /muon/build/muon.com /muon/build/muon.com.dbg /bin/ ENTRYPOINT ["/bin/ape", "/bin/muon.com"]