add cosmo-perl
This commit is contained in:
parent
ade97e3d44
commit
d05e5ec49d
2 changed files with 141 additions and 0 deletions
|
@ -52,9 +52,11 @@ dbg_retrieve() \
|
|||
&& podman build -t notwa-util notwa-util \
|
||||
&& podman build -t cosmo cosmo \
|
||||
&& podman build -t cosmo-kuroko cosmo-kuroko \
|
||||
&& podman build -t cosmo-perl cosmo-perl \
|
||||
&& podman build -t cosmo-yices cosmo-yices \
|
||||
\
|
||||
&& dbg_retrieve cosmo-kuroko /bin/kuroko.com \
|
||||
&& yes_retrieve cosmo-perl /bin/perl.com \
|
||||
&& dbg_retrieve cosmo-yices /bin/kissat.com \
|
||||
&& dbg_retrieve cosmo-yices /bin/yices-sat.com \
|
||||
&& dbg_retrieve cosmo-yices /bin/yices-smt.com \
|
||||
|
|
139
cosmo-perl/Dockerfile
Normal file
139
cosmo-perl/Dockerfile
Normal file
|
@ -0,0 +1,139 @@
|
|||
# MAIN: https://www.perl.org/
|
||||
# REPO: https://github.com/Perl/perl5
|
||||
# FORK: https://github.com/G4Vi/perl5/tree/cosmo
|
||||
FROM localhost/notwa-util AS downloader
|
||||
|
||||
ARG PERL_COMMIT=75e54093a8376c4b2196510e88201e8d793f5424
|
||||
ARG PERL_SHA256=b28ccbb96f9dfb96a4216215dafc2db8ba3b998e5ead6357b2614f5334c3a6f7
|
||||
|
||||
RUN --mount=type=cache,id=common,target=/media/common,sharing=locked \
|
||||
--mount=type=tmpfs,target=/tmp : \
|
||||
&& cd /media/common \
|
||||
&& name=perl5 \
|
||||
&& export remote_fn="$PERL_COMMIT.tar.gz" \
|
||||
&& export local_fn="$name-$remote_fn" \
|
||||
&& export remote_url="https://github.com/G4Vi/$name/archive/$remote_fn" \
|
||||
&& export dest=/$name \
|
||||
&& export sha256="$PERL_SHA256" \
|
||||
&& acquire \
|
||||
;
|
||||
|
||||
FROM localhost/cosmo AS builder
|
||||
COPY --from=downloader /perl5 /perl5
|
||||
|
||||
# TODO: this shouldn't be necessary!
|
||||
RUN apk add --no-cache make
|
||||
|
||||
RUN : \
|
||||
&& cd cosmopolitan \
|
||||
&& . ./env \
|
||||
&& a="dist/$flavor" \
|
||||
&& mkdir o o/ape o/ape/public o/libc o/libc/crt \
|
||||
&& cp -t o/ape \
|
||||
"$a/ape-copy-self.o" \
|
||||
"$a/ape-no-modify-self.o" \
|
||||
"$a/ape.elf" \
|
||||
"$a/ape.lds" \
|
||||
"$a/ape.o" \
|
||||
&& cp -t o/ape/public \
|
||||
"$a/public/ape.lds" \
|
||||
&& cp -t o/libc/crt \
|
||||
"$a/crt.o" \
|
||||
&& cp -t o \
|
||||
"$a/cosmopolitan.a" \
|
||||
"$a/cosmopolitan.h" \
|
||||
\
|
||||
&& tar zxf dist/headers.tar.gz \
|
||||
\
|
||||
&& for f in \
|
||||
bin/unzip.com \
|
||||
bin/zip.com \
|
||||
;do : \
|
||||
&& cp -- "$f" /a.out \
|
||||
&& /cosmopolitan/bin/ape bin/assimilate.com /a.out \
|
||||
&& install -m0755 /a.out "/usr/bin/$(basename "${f%.com}")" \
|
||||
;done \
|
||||
\
|
||||
&& rm /usr/bin/strings \
|
||||
&& for f in gcc/bin/* \
|
||||
;do : \
|
||||
&& g="$(basename "$f")" \
|
||||
&& ln -s "$(realpath "$f")" "/usr/bin/${g#x86_64-linux-musl-}" \
|
||||
;done \
|
||||
;
|
||||
|
||||
# TODO: use -D__W__ at compile-time instead?
|
||||
RUN : \
|
||||
&& sed -i '/-Wuninitialized/d' cosmopolitan/o/cosmopolitan.h \
|
||||
&& sed -i '/-Wmaybe-uninitialized/d' cosmopolitan/o/cosmopolitan.h \
|
||||
&& sed -i '/-Wuninitialized/d' cosmopolitan/libc/integral/c.inc \
|
||||
&& sed -i '/-Wmaybe-uninitialized/d' cosmopolitan/libc/integral/c.inc \
|
||||
&& sed -i '/sock\/sock.h/a\\#include "libc/sock/struct/pollfd.h"' cosmopolitan/libc/isystem/poll.h \
|
||||
&& sed -i '/sock\/sock.h/a\\#include "libc/sock/struct/pollfd.h"' cosmopolitan/libc/isystem/sys/poll.h \
|
||||
&& sed -i '/calls\/weirdtypes.h/a\\#include "libc/runtime/sysconf.h"' cosmopolitan/libc/isystem/unistd.h \
|
||||
&& sed -i '/x86_64-linux-musl/d' perl5/hints/cosmo.sh \
|
||||
&& sed -i '/Which of these apply/c\\dflt=cosmo' perl5/Configure \
|
||||
&& sed -i 's/.*-musl-objcopy/\tobjcopy/g' perl5/Makefile.SH \
|
||||
&& sed -i 's/cp \([^ ]\+\)/chmod +x \1 \&\& cp \1/g' perl5/Makefile.SH \
|
||||
;
|
||||
|
||||
WORKDIR perl5
|
||||
|
||||
RUN : \
|
||||
&& COSMO_MODE="" COSMO_REPO="/cosmopolitan" sh Configure -d -e \
|
||||
-Dprefix="/zip" \
|
||||
-Dusedevel \
|
||||
-Doptimize="-Os" \
|
||||
-Dmyhostname="cosmo" \
|
||||
-Dmydomain="invalid" \
|
||||
-Dcf_by="cosmo" \
|
||||
-DDEBUGGING \
|
||||
;
|
||||
|
||||
RUN make -j2
|
||||
|
||||
RUN make -j2 minitest devtty=/dev/zero | tee minitest_results.txt
|
||||
|
||||
RUN : \
|
||||
&& mkdir "/perl5/cosmo/o" \
|
||||
&& mkdir "/perl5/cosmo/o/tmp" \
|
||||
&& cp "/perl5/perl.com" "/perl5/cosmo/o/tmp/perl.com" \
|
||||
&& make "DESTDIR=/perl5/cosmo/o/tmp" install.perl \
|
||||
;
|
||||
RUN : \
|
||||
&& cd "/perl5/cosmo/o/tmp/zip" \
|
||||
&& find lib -name '*.a' -delete \
|
||||
&& find lib -name '*.h' -delete \
|
||||
&& find -name '*.pod' -delete \
|
||||
&& cp "../perl.com" "../perl.com.bak" \
|
||||
&& zip -qr "../perl.com" "lib" \
|
||||
&& mv "../perl.com" "../../perl.com" \
|
||||
;
|
||||
RUN : \
|
||||
&& version=20220613 \
|
||||
&& wget -q "https://cpan.metacpan.org/authors/id/S/SH/SHANCOCK/Perl-Tidy-$version.tar.gz" -O "Perl-Tidy-$version.tar.gz" \
|
||||
&& tar zxf "Perl-Tidy-$version.tar.gz" \
|
||||
&& cd "Perl-Tidy-$version" \
|
||||
&& ../cosmo/o/perl.com pm2pl \
|
||||
&& mv "perltidy-$version.pl" ../perltidy.pl \
|
||||
&& cd .. \
|
||||
&& rm -r Perl-Tidy-$version \
|
||||
;
|
||||
RUN : \
|
||||
&& cd "/perl5/cosmo/o/tmp/zip" \
|
||||
&& find -type f -name '*.pm' -exec \
|
||||
/cosmopolitan/o/ape/ape.elf ../../perl.com /perl5/perltidy.pl \
|
||||
--mangle --delete-all-comments --backup-and-modify-in-place --backup-file-extension=/ {} \
|
||||
+ \
|
||||
&& cp "../perl.com.bak" "../perl.com" \
|
||||
&& zip -qr "../perl.com" "lib" \
|
||||
&& mv "../perl.com" "../../perl.com" \
|
||||
;
|
||||
|
||||
FROM scratch AS runner
|
||||
COPY --chmod=0755 --from=localhost/notwa-util /usr/local/bin/busybox /bin/busybox
|
||||
COPY --chmod=0755 --from=builder /cosmopolitan/bin/ape /bin/ape
|
||||
COPY --chmod=0755 --from=builder /perl5/cosmo/o/perl.com /bin/perl.com
|
||||
# TODO: include .dbg file too!
|
||||
COPY --from=builder /perl5/minitest_results.txt /minitest_results.txt
|
||||
ENTRYPOINT ["/bin/ape", "/bin/perl.com"]
|
Loading…
Reference in a new issue