Compare commits

..

4 Commits

Author SHA1 Message Date
Lance Vick 904712b861
Merge remote-tracking branch 'distrust/main' 2023-12-12 10:49:05 -08:00
Lance Vick 3bff51f279
refactor/cleanup pass 2023-12-12 09:45:39 -08:00
Lance Vick b2942e9443
drop hardcoded naming globally 2023-12-10 10:05:50 -08:00
Lance Vick a52bf8d669
fix ldd 2023-12-09 04:53:59 -08:00
34 changed files with 601 additions and 831 deletions

2
.gitignore vendored Normal file
View File

@ -0,0 +1,2 @@
build.log
*.tgz

509
Makefile
View File

@ -1,247 +1,324 @@
export REGISTRY := local
export PLATFORM := linux/amd64
export BUILDER := $(shell which docker)
export SOURCE_DATE_EPOCH = 0 export SOURCE_DATE_EPOCH = 0
clean_logs := $(shell rm *.log 2>&1 >/dev/null || :)
out/bootstrap.oci.tgz: DEFAULT_GOAL := default
docker build -t distrust/bootstrap --output type=oci,dest=$@ bootstrap .PHONY: default
default: all
.PHONY: all
all: \
bootstrap.tgz \
gcc.tgz \
busybox.tgz \
binutils.tgz \
musl.tgz \
make.tgz \
bash.tgz \
zlib.tgz \
perl.tgz \
linux-headers.tgz \
openssl.tgz \
python.tgz \
py-setuptools.tgz \
ca-certificates.tgz \
curl.tgz \
m4.tgz \
autoconf.tgz \
automake.tgz \
sed.tgz \
libtool.tgz \
libunwind.tgz \
ninja.tgz \
cmake.tgz \
libxml2 \
llvm13.tgz \
rust1.54.tgz \
llvm.tgz \
rust1.55.tgz
out/musl.oci.tgz: \ bootstrap.tgz:
out/bootstrap.oci.tgz $(call build,bootstrap)
docker build -t distrust/musl --output type=oci,dest=$@ musl
out/busybox.oci.tgz: \ musl.tgz: bootstrap.tgz
out/bootstrap.oci.tgz $(call build,musl)
docker build -t distrust/busybox --output type=oci,dest=$@ busybox
out/binutils.oci.tgz: \ busybox.tgz: bootstrap.tgz
out/bootstrap.oci.tgz \ $(call build,busybox)
out/musl.oci.tgz
docker build -t distrust/binutils --output type=oci,dest=$@ binutils
out/linux-headers.oci.tgz: binutils.tgz: bootstrap.tgz
docker build -t distrust/linux-headers --output type=oci,dest=$@ linux-headers $(call build,binutils)
out/gcc.oci.tgz: \ gcc.tgz: \
out/bootstrap.oci.tgz \ bootstrap.tgz \
out/musl.oci.tgz musl.tgz
docker build -t distrust/gcc --output type=oci,dest=$@ gcc $(call build,gcc)
out/make.oci.tgz: \ make.tgz: bootstrap.tgz
out/bootstrap.oci.tgz \ $(call build,make)
out/musl.oci.tgz
docker build -t distrust/make --output type=oci,dest=$@ make
out/ca-certificates.oci.tgz: ca-certificates.tgz:
docker build -t distrust/ca-certificates --output type=oci,dest=$@ ca-certificates $(call build,ca-certificates)
out/bash.oci.tgz: \ bash.tgz: \
out/gcc.oci.tgz busybox.tgz \
docker build -t distrust/bash --output type=oci,dest=$@ bash gcc.tgz \
binutils.tgz \
musl.tgz \
make.tgz
$(call build,bash)
out/m4.oci.tgz: \ m4.tgz: \
out/busybox.oci.tgz \ busybox.tgz \
out/gcc.oci.tgz \ gcc.tgz \
out/binutils.oci.tgz \ binutils.tgz \
out/musl.oci.tgz \ musl.tgz \
out/make.oci.tgz make.tgz
docker build -t distrust/m4 --output type=oci,dest=$@ m4 $(call build,m4)
out/autoconf.oci.tgz: \ perl.tgz: \
out/busybox.oci.tgz \ gcc.tgz \
out/gcc.oci.tgz \ binutils.tgz \
out/binutils.oci.tgz \ busybox.tgz \
out/musl.oci.tgz \ make.tgz \
out/make.oci.tgz \ musl.tgz
out/perl.oci.tgz \ $(call build,perl)
out/m4.oci.tgz
docker build -t distrust/autoconf --output type=oci,dest=$@ autoconf
out/automake.oci.tgz: \ autoconf.tgz: \
out/busybox.oci.tgz \ busybox.tgz \
out/gcc.oci.tgz \ gcc.tgz \
out/binutils.oci.tgz \ binutils.tgz \
out/musl.oci.tgz \ musl.tgz \
out/make.oci.tgz \ make.tgz \
out/perl.oci.tgz \ perl.tgz \
out/autoconf.oci.tgz \ m4.tgz
out/m4.oci.tgz $(call build,autoconf,,fetch)
docker build -t distrust/automake --output type=oci,dest=$@ automake $(call build,autoconf)
out/sed.oci.tgz: \ automake.tgz: \
out/busybox.oci.tgz \ busybox.tgz \
out/gcc.oci.tgz \ gcc.tgz \
out/binutils.oci.tgz \ binutils.tgz \
out/musl.oci.tgz \ musl.tgz \
out/make.oci.tgz make.tgz \
docker build -t distrust/sed --output type=oci,dest=$@ sed perl.tgz \
autoconf.tgz \
m4.tgz
$(call build,automake)
out/libtool.oci.tgz: \ sed.tgz: \
out/busybox.oci.tgz \ busybox.tgz \
out/gcc.oci.tgz \ gcc.tgz \
out/binutils.oci.tgz \ binutils.tgz \
out/musl.oci.tgz \ musl.tgz \
out/make.oci.tgz \ make.tgz
out/bash.oci.tgz \ $(call build,sed)
out/sed.oci.tgz \
out/m4.oci.tgz
docker build -t distrust/libtool --output type=oci,dest=$@ libtool
out/pkgconf.oci.tgz: \ libtool.tgz: \
out/busybox.oci.tgz \ busybox.tgz \
out/gcc.oci.tgz \ gcc.tgz \
out/binutils.oci.tgz \ binutils.tgz \
out/musl.oci.tgz \ musl.tgz \
out/make.oci.tgz \ make.tgz \
out/libtool.oci.tgz bash.tgz \
docker build -t distrust/pkgconf --output type=oci,dest=$@ pkgconf sed.tgz \
m4.tgz
$(call build,libtool)
out/libxml2.oci.tgz: \ pkgconf.tgz: \
out/busybox.oci.tgz \ busybox.tgz \
out/gcc.oci.tgz \ gcc.tgz \
out/binutils.oci.tgz \ binutils.tgz \
out/musl.oci.tgz \ musl.tgz \
out/make.oci.tgz \ make.tgz \
out/bash.oci.tgz \ libtool.tgz
out/python.oci.tgz \ $(call build,pkgconf)
out/sed.oci.tgz \
out/m4.oci.tgz \
out/autoconf.oci.tgz \
out/automake.oci.tgz \
out/pkgconf.oci.tgz \
out/libtool.oci.tgz
docker build -t distrust/libxml2 --output type=oci,dest=$@ libxml2
out/libunwind.oci.tgz: \ libxml2.tgz: \
out/busybox.oci.tgz \ busybox.tgz \
out/gcc.oci.tgz \ gcc.tgz \
out/binutils.oci.tgz \ binutils.tgz \
out/musl.oci.tgz \ musl.tgz \
out/make.oci.tgz \ make.tgz \
out/bash.oci.tgz \ bash.tgz \
out/autoconf.oci.tgz \ python.tgz \
out/automake.oci.tgz \ sed.tgz \
out/libtool.oci.tgz m4.tgz \
docker build -t distrust/libunwind --output type=oci,dest=$@ libunwind autoconf.tgz \
automake.tgz \
pkgconf.tgz \
libtool.tgz
$(call build,libxml2)
out/openssl.oci.tgz: \ libunwind.tgz: \
out/gcc.oci.tgz \ busybox.tgz \
out/binutils.oci.tgz \ gcc.tgz \
out/busybox.oci.tgz \ binutils.tgz \
out/linux-headers.oci.tgz \ musl.tgz \
out/musl.oci.tgz make.tgz \
docker build -t distrust/openssl --output type=oci,dest=$@ openssl bash.tgz \
autoconf.tgz \
automake.tgz \
libtool.tgz
$(call build,libunwind)
out/go.oci.tgz: \ linux-headers.tgz:
out/gcc.oci.tgz \ $(call build,linux-headers)
out/binutils.oci.tgz \
out/busybox.oci.tgz \
out/bash.oci.tgz \
out/musl.oci.tgz
docker build -t distrust/go --output type=oci,dest=$@ go
out/perl.oci.tgz: \ openssl.tgz: \
out/gcc.oci.tgz \ gcc.tgz \
out/binutils.oci.tgz \ binutils.tgz \
out/busybox.oci.tgz \ busybox.tgz \
out/make.oci.tgz \ linux-headers.tgz \
out/musl.oci.tgz musl.tgz
docker build -t distrust/perl --output type=oci,dest=$@ perl $(call build,openssl)
out/curl.oci.tgz: \ go.tgz: \
out/gcc.oci.tgz \ gcc.tgz \
out/musl.oci.tgz \ binutils.tgz \
out/busybox.oci.tgz \ busybox.tgz \
out/make.oci.tgz \ bash.tgz \
out/binutils.oci.tgz \ musl.tgz
out/openssl.oci.tgz \ $(call build,go)
out/ca-certificates.oci.tgz
docker build -t distrust/curl --output type=oci,dest=$@ curl
out/python.oci.tgz: \ curl.tgz: \
out/gcc.oci.tgz \ gcc.tgz \
out/perl.oci.tgz \ musl.tgz \
out/binutils.oci.tgz \ busybox.tgz \
out/busybox.oci.tgz \ make.tgz \
out/openssl.oci.tgz \ binutils.tgz \
out/make.oci.tgz \ openssl.tgz \
out/musl.oci.tgz ca-certificates.tgz
docker build -t distrust/python --output type=oci,dest=$@ python $(call build,curl)
out/ninja.oci.tgz: \ python.tgz: \
out/busybox.oci.tgz \ gcc.tgz \
out/gcc.oci.tgz \ perl.tgz \
out/binutils.oci.tgz \ binutils.tgz \
out/musl.oci.tgz \ busybox.tgz \
out/make.oci.tgz \ openssl.tgz \
out/openssl.oci.tgz \ make.tgz \
out/python.oci.tgz musl.tgz
docker build -t distrust/ninja --output type=oci,dest=$@ ninja $(call build,python)
out/cmake.oci.tgz: \ ninja.tgz: \
out/busybox.oci.tgz \ busybox.tgz \
out/gcc.oci.tgz \ gcc.tgz \
out/binutils.oci.tgz \ binutils.tgz \
out/ninja.oci.tgz \ musl.tgz \
out/musl.oci.tgz \ make.tgz \
out/make.oci.tgz \ openssl.tgz \
out/linux-headers.oci.tgz python.tgz
docker build -t distrust/cmake --output type=oci,dest=$@ cmake $(call build,ninja)
out/py-setuptools.oci.tgz: \ cmake.tgz: \
out/busybox.oci.tgz \ busybox.tgz \
out/python.oci.tgz gcc.tgz \
docker build -t distrust/py-setuptools --output type=oci,dest=$@ py-setuptools binutils.tgz \
ninja.tgz \
musl.tgz \
make.tgz \
linux-headers.tgz
$(call build,cmake)
out/zlib.oci.tgz: \ py-setuptools.tgz: \
out/busybox.oci.tgz \ busybox.tgz \
out/gcc.oci.tgz \ python.tgz
out/binutils.oci.tgz \ $(call build,py-setuptools)
out/musl.oci.tgz \
out/make.oci.tgz
docker build -t distrust/zlib --output type=oci,dest=$@ zlib
out/llvm.oci.tgz: \ zlib.tgz: \
out/gcc.oci.tgz \ busybox.tgz \
out/python.oci.tgz \ gcc.tgz \
out/py-setuptools.oci.tgz \ binutils.tgz \
out/perl.oci.tgz \ musl.tgz \
out/binutils.oci.tgz \ make.tgz
out/cmake.oci.tgz \ $(call build,zlib)
out/ninja.oci.tgz \
out/busybox.oci.tgz \
out/musl.oci.tgz
docker build -t distrust/llvm --output type=oci,dest=$@ llvm
out/llvm13.oci.tgz: \ llvm13.tgz: \
out/gcc.oci.tgz \ gcc.tgz \
out/python.oci.tgz \ python.tgz \
out/py-setuptools.oci.tgz \ py-setuptools.tgz \
out/perl.oci.tgz \ perl.tgz \
out/binutils.oci.tgz \ binutils.tgz \
out/cmake.oci.tgz \ cmake.tgz \
out/ninja.oci.tgz \ ninja.tgz \
out/busybox.oci.tgz \ busybox.tgz \
out/musl.oci.tgz musl.tgz
docker build -t distrust/llvm13 --output type=oci,dest=$@ llvm13 $(call build,llvm,13.0.1)
out/rust.oci.tgz: \ llvm.tgz: \
out/gcc.oci.tgz \ gcc.tgz \
out/bash.oci.tgz \ python.tgz \
out/zlib.oci.tgz \ py-setuptools.tgz \
out/python.oci.tgz \ perl.tgz \
out/binutils.oci.tgz \ binutils.tgz \
out/cmake.oci.tgz \ cmake.tgz \
out/make.oci.tgz \ ninja.tgz \
out/busybox.oci.tgz \ busybox.tgz \
out/musl.oci.tgz musl.tgz
docker build -t distrust/rust --output type=oci,dest=$@ rust $(call build,llvm)
test: rust1.54.tgz: \
docker build -t distrust/test-c tests/c gcc.tgz \
docker build -t distrust/test-go tests/go bash.tgz \
docker build -t distrust/test-perl tests/perl zlib.tgz \
@printf "\nOcirep Test Suite\n" python.tgz \
@printf "go -> " py-setuptools.tgz \
@docker run -i distrust/test-go | grep Success curl.tgz \
@printf "c -> " perl.tgz \
@docker run -i distrust/test-c | grep Success libunwind.tgz \
@printf "perl -> " llvm13.tgz \
@docker run -i distrust/test-perl | grep Success binutils.tgz \
cmake.tgz \
make.tgz \
busybox.tgz \
musl.tgz
$(call build,rust,1.54.0,bootstrap-package)
rust1.55.tgz: rust1.54.tgz
$(call build,rust,1.55.0,package,--build-arg BUILD_VERSION=1.54.0)
# Build package with chosen $(BUILDER)
# Supported BUILDERs: docker
# Usage: $(call build,$(NAME),$(VERSION),$(TARGET),$(EXTRA_ARGS))
# Notes:
# - Packages are expected to use the following layer names in order:
# - "fetch": [optional] obtain any artifacts from the internet.
# - "build": [optional] do any required build work
# - "package": [required] scratch layer exporting artifacts for distribution
# - "test": [optional] define any tests
# - Packages may prefix layer names with "text-" if more than one is desired
# - VERSION will be set as a build-arg if defined, otherwise it is "latest"
# - TARGET defaults to "package"
# - EXTRA_ARGS will be blindly injected
# - packages may also define a "test" layer
# TODO:
# - try to disable networking on fetch layers with something like:
# $(if $(filter fetch,$(lastword $(subst -, ,$(TARGET)))),,--network=none)
# - actually output OCI files for each build (vs plain tar)
# - output manifest.txt of all tar/digest hashes for an easy git diff
# - support buildah and podman
define build
$(eval NAME := $(1))
$(eval VERSION := $(if $(2),$(2),latest))
$(eval TARGET := $(if $(3),$(3),package))
$(eval EXTRA_ARGS := $(if $(4),$(4),))
$(eval BUILD_CMD := \
SOURCE_DATE_EPOCH=1 \
$(BUILDER) \
build \
-t $(REGISTRY)/$(NAME):$(VERSION) \
--build-arg REGISTRY=$(REGISTRY) \
--platform $(PLATFORM) \
--progress=plain \
$(if $(filter latest,$(VERSION)),,--build-arg VERSION=$(VERSION)) \
--target $(TARGET) \
$(EXTRA_ARGS) \
$(NAME) \
)
$(eval TIMESTAMP := $(shell TZ=GMT date +"%Y-%m-%dT%H:%M:%SZ"))
echo $(TIMESTAMP) $(BUILD_CMD) >> build.log
$(BUILD_CMD)
$(if $(filter package,$(TARGET)),$(BUILDER) save $(REGISTRY)/$(NAME):$(VERSION),)
endef

View File

@ -1,7 +1,7 @@
# Packages # Packages
Minimalism and security first repository of OCI images of common open source Minimalism and security first repository of reproducible and signed OCI images
software packages built from source. of common open source software packages built from source.
These can be used as a secure supply chain for anything from obtaining local These can be used as a secure supply chain for anything from obtaining local
tools, to bootstrapping a Linux distribution. tools, to bootstrapping a Linux distribution.

View File

@ -1,18 +1,24 @@
FROM imgrep/busybox:latest as busybox ARG REGISTRY=local
FROM imgrep/gcc:latest as gcc FROM ${REGISTRY}/gcc:latest as gcc
FROM imgrep/binutils:latest as binutils FROM ${REGISTRY}/binutils:latest as binutils
FROM imgrep/musl:latest as musl FROM ${REGISTRY}/musl:latest as musl
FROM imgrep/make:latest as make FROM ${REGISTRY}/make:latest as make
FROM imgrep/m4:latest as m4 FROM ${REGISTRY}/m4:latest as m4
FROM imgrep/perl:latest as perl FROM ${REGISTRY}/perl:latest as perl
FROM busybox as build FROM ${REGISTRY}/busybox:latest as base
ENV SRC_SITE=https://ftp.gnu.org/gnu/autoconf ENV SRC_SITE https://ftp.gnu.org/gnu/autoconf
ENV SRC_VERSION=2.71 ENV SRC_VERSION 2.71
ENV SRC_HASH=f14c83cfebcc9427f2c3cea7258bd90df972d92eb26752da4ddad81c87a0faa4 ENV SRC_HASH f14c83cfebcc9427f2c3cea7258bd90df972d92eb26752da4ddad81c87a0faa4
RUN wget ${SRC_SITE}/autoconf-${SRC_VERSION}.tar.xz ENV SRC_FILE autoconf-${SRC_VERSION}.tar.xz
RUN echo "${SRC_HASH} autoconf-${SRC_VERSION}.tar.xz" | sha256sum -c
RUN tar -xf autoconf-${SRC_VERSION}.tar.xz FROM base as fetch
RUN set -eux; \
wget ${SRC_SITE}/${SRC_FILE}; \
echo "${SRC_HASH} ${SRC_FILE}" | sha256sum -c
FROM fetch as build
RUN tar -xf ${SRC_FILE}
WORKDIR autoconf-${SRC_VERSION} WORKDIR autoconf-${SRC_VERSION}
COPY --from=gcc . / COPY --from=gcc . /
COPY --from=binutils . / COPY --from=binutils . /
@ -28,7 +34,7 @@ RUN set -eux; \
RUN make DESTDIR=/home/user/rootfs install RUN make DESTDIR=/home/user/rootfs install
COPY --from=perl . /home/user/rootfs/ COPY --from=perl . /home/user/rootfs/
FROM scratch FROM scratch as package
COPY --from=build /home/user/rootfs / COPY --from=build /home/user/rootfs /
ENTRYPOINT ["/usr/bin/autoreconf"] ENTRYPOINT ["/usr/bin/autoreconf"]
CMD ["--version"] CMD ["--version"]

View File

@ -1,11 +1,12 @@
FROM imgrep/busybox:latest as busybox ARG REGISTRY=local
FROM imgrep/gcc:latest as gcc FROM ${REGISTRY}/busybox:latest as busybox
FROM imgrep/binutils:latest as binutils FROM ${REGISTRY}/gcc:latest as gcc
FROM imgrep/musl:latest as musl FROM ${REGISTRY}/binutils:latest as binutils
FROM imgrep/make:latest as make FROM ${REGISTRY}/musl:latest as musl
FROM imgrep/perl:latest as perl FROM ${REGISTRY}/make:latest as make
FROM imgrep/autoconf:latest as autoconf FROM ${REGISTRY}/perl:latest as perl
FROM imgrep/m4:latest as m4 FROM ${REGISTRY}/autoconf:latest as autoconf
FROM ${REGISTRY}/m4:latest as m4
FROM busybox as build FROM busybox as build
ENV SRC_SITE=https://ftp.gnu.org/gnu/automake ENV SRC_SITE=https://ftp.gnu.org/gnu/automake
@ -30,7 +31,7 @@ RUN make DESTDIR=/home/user/rootfs install
COPY --from=musl /usr/lib/libc.so /home/user/rootfs/lib/ld-musl-x86_64.so.1 COPY --from=musl /usr/lib/libc.so /home/user/rootfs/lib/ld-musl-x86_64.so.1
COPY --from=perl . /home/user/rootfs/ COPY --from=perl . /home/user/rootfs/
FROM scratch FROM scratch as package
COPY --from=build /home/user/rootfs / COPY --from=build /home/user/rootfs /
ENTRYPOINT ["/usr/bin/automake"] ENTRYPOINT ["/usr/bin/automake"]
CMD ["--version"] CMD ["--version"]

View File

@ -1,19 +1,45 @@
ARG GCC_IMAGE=library/gcc@sha256:ca38f292fe1ad0933f0122a657f9c644ed1f0a9e1aa336abcc83d420ad487e28 ARG REGISTRY=local
from ${REGISTRY}/binutils as binutils
from ${REGISTRY}/gcc as gcc
from ${REGISTRY}/musl as musl
from ${REGISTRY}/make as make
FROM ${GCC_IMAGE} as build from ${REGISTRY}/busybox as base
ENV SOURCE_SITE=https://ftp.gnu.org/gnu/bash ENV SRC_SITE=https://ftp.gnu.org/gnu/bash
ENV SOURCE_VERSION=5.2.15 ENV SRC_VERSION=5.2.21
ENV SOURCE_HASH=13720965b5f4fc3a0d4b61dd37e7565c741da9a5be24edc2ae00182fc1b3588c ENV SRC_HASH=c8e31bdc59b69aaffc5b36509905ba3e5cbb12747091d27b4b977f078560d5b8
RUN wget ${SOURCE_SITE}/bash-${SOURCE_VERSION}.tar.gz ENV SRC_FILE=bash-${SRC_VERSION}.tar.gz
RUN echo "${SOURCE_HASH} bash-${SOURCE_VERSION}.tar.gz" | sha256sum -c
RUN tar -xzf bash-${SOURCE_VERSION}.tar.gz FROM base as fetch
WORKDIR bash-${SOURCE_VERSION} RUN set -eux; \
wget ${SRC_SITE}/${SRC_FILE}; \
echo "${SRC_HASH} ${SRC_FILE}" | sha256sum -c
FROM fetch as build
RUN tar -xzf ${SRC_FILE}
WORKDIR bash-${SRC_VERSION}
COPY --from=gcc . /
COPY --from=binutils . /
COPY --from=make . /
COPY --from=musl . /
RUN set -eux; \ RUN set -eux; \
./configure \ ./configure \
--build=x86_64-unknown-linux-musl \
--host=x86_64-unknown-linux-musl \
--prefix=/usr \ --prefix=/usr \
--enable-static-link; \ --bindir=/bin \
make DESTDIR=/home/user/rootfs --mandir=/usr/share/man \
RUN make install DESTDIR=/home/user/rootfs --infodir=/usr/share/info \
--disable-nls \
--enable-readline \
--without-curses \
--without-bash-malloc; \
make
RUN make DESTDIR=/home/user/rootfs install
RUN ls -Rlah /home/user/rootfs
COPY --from=musl /usr/lib/libc.so /home/user/rootfs/lib/ld-musl-x86_64.so.1
FROM scratch FROM scratch as package
COPY --from=build /home/user/rootfs / COPY --from=build /home/user/rootfs /
ENTRYPOINT ["/bin/bash"]
CMD ["--version"]

View File

@ -1,5 +1,6 @@
FROM imgrep/musl:latest as musl ARG REGISTRY=local
FROM imgrep/bootstrap:latest as build FROM ${REGISTRY}/musl:latest as musl
FROM ${REGISTRY}/bootstrap:latest as build
ENV SRC_SITE https://ftp.gnu.org/gnu/binutils ENV SRC_SITE https://ftp.gnu.org/gnu/binutils
ENV SRC_VERSION 2.41 ENV SRC_VERSION 2.41
@ -46,7 +47,7 @@ RUN set -ex; \
make DESTDIR="/home/user/rootfs" install; make DESTDIR="/home/user/rootfs" install;
COPY --from=musl /usr/lib/libc.so /rootfs/lib/ld-musl-x86_64.so.1 COPY --from=musl /usr/lib/libc.so /rootfs/lib/ld-musl-x86_64.so.1
FROM scratch FROM scratch as package
COPY --from=build /home/user/rootfs / COPY --from=build /home/user/rootfs /
ENTRYPOINT ["/bin/ld"] ENTRYPOINT ["/bin/ld"]
CMD ["--version"] CMD ["--version"]

View File

@ -1,5 +1,8 @@
FROM alpine@sha256:eece025e432126ce23f223450a0326fbebde39cdf496a85d8c016293fc851978 FROM alpine@sha256:eece025e432126ce23f223450a0326fbebde39cdf496a85d8c016293fc851978 as seed
FROM seed as fetch
RUN set -ex; \ RUN set -ex; \
apk update; \ apk update; \
apk add gcc g++ libc-dev make linux-headers patch apk add gcc g++ libc-dev make linux-headers patch
FROM fetch as package

View File

@ -1,13 +1,18 @@
FROM imgrep/bootstrap as bootstrap ARG REGISTRY=local
FROM ${REGISTRY}/bootstrap as base
ENV SRC_SITE=https://busybox.net/downloads
ENV SRC_VERSION=1.35.0
ENV SRC_HASH=faeeb244c35a348a334f4a59e44626ee870fb07b6884d68c10ae8bc19f83a694
ENV SRC_FILE=busybox-${SRC_VERSION}.tar.bz2
FROM bootstrap as build FROM base as fetch
ENV SOURCE_SITE=https://busybox.net/downloads RUN set -eux; \
ENV SOURCE_VERSION=1.35.0 wget ${SRC_SITE}/${SRC_FILE}; \
ENV SOURCE_HASH=faeeb244c35a348a334f4a59e44626ee870fb07b6884d68c10ae8bc19f83a694 echo "${SRC_HASH} ${SRC_FILE}" | sha256sum -c
RUN wget ${SOURCE_SITE}/busybox-${SOURCE_VERSION}.tar.bz2
RUN echo "${SOURCE_HASH} busybox-${SOURCE_VERSION}.tar.bz2" | sha256sum -c FROM fetch as build
RUN tar -xjf busybox-${SOURCE_VERSION}.tar.bz2 RUN tar -xjf ${SRC_FILE}
WORKDIR busybox-${SOURCE_VERSION} WORKDIR busybox-${SRC_VERSION}
RUN set -eux; \ RUN set -eux; \
setConfs=' \ setConfs=' \
CONFIG_AR=y \ CONFIG_AR=y \
@ -50,7 +55,7 @@ RUN set -eux; \
RUN make RUN make
RUN cp busybox / RUN cp busybox /
FROM scratch FROM scratch as package
COPY --from=build busybox / COPY --from=build busybox /
RUN ["/busybox","mkdir","/bin"] RUN ["/busybox","mkdir","/bin"]
RUN ["/busybox","--install","-s","/bin"] RUN ["/busybox","--install","-s","/bin"]
@ -62,3 +67,7 @@ RUN chown -R 1000:1000 /home/user /tmp /var/tmp
WORKDIR /home/user WORKDIR /home/user
USER 1000:1000 USER 1000:1000
ENTRYPOINT ["/bin/sh"] ENTRYPOINT ["/bin/sh"]
ENV TZ=UTC
ENV LANG=C.UTF-8
ENV SOURCE_DATE_EPOCH=1
ENV PS1=busybox

View File

@ -1,2 +1,2 @@
FROM scratch FROM scratch as package
COPY cacert.pem /etc/ssl/certs/ca-certificates.crt COPY cacert.pem /etc/ssl/certs/ca-certificates.crt

View File

@ -1,12 +1,13 @@
FROM imgrep/busybox:latest as busybox ARG REGISTRY=local
FROM imgrep/gcc:latest as gcc FROM ${REGISTRY}/busybox:latest as busybox
FROM imgrep/binutils:latest as binutils FROM ${REGISTRY}/gcc:latest as gcc
FROM imgrep/musl:latest as musl FROM ${REGISTRY}/binutils:latest as binutils
FROM imgrep/curl:latest as curl FROM ${REGISTRY}/musl:latest as musl
FROM imgrep/ninja:latest as ninja FROM ${REGISTRY}/curl:latest as curl
FROM imgrep/openssl:latest as openssl FROM ${REGISTRY}/ninja:latest as ninja
FROM imgrep/linux-headers:latest as linux-headers FROM ${REGISTRY}/openssl:latest as openssl
FROM imgrep/make:latest as make FROM ${REGISTRY}/linux-headers:latest as linux-headers
FROM ${REGISTRY}/make:latest as make
FROM busybox as build FROM busybox as build
ENV SRC_SITE=https://cmake.org/files ENV SRC_SITE=https://cmake.org/files
@ -42,7 +43,7 @@ COPY --from=gcc /usr/lib/* /home/user/rootfs/usr/lib/
COPY --from=gcc /usr/lib64/* /home/user/rootfs/usr/lib/ COPY --from=gcc /usr/lib64/* /home/user/rootfs/usr/lib/
COPY --from=openssl /usr/lib/* /home/user/rootfs/usr/lib/ COPY --from=openssl /usr/lib/* /home/user/rootfs/usr/lib/
FROM scratch FROM scratch as package
COPY --from=build /home/user/rootfs / COPY --from=build /home/user/rootfs /
USER 100:100 USER 100:100
ENTRYPOINT ["/usr/bin/cmake"] ENTRYPOINT ["/usr/bin/cmake"]

View File

@ -1,10 +1,11 @@
FROM imgrep/gcc:latest as gcc ARG REGISTRY=local
FROM imgrep/musl:latest as musl FROM ${REGISTRY}/gcc:latest as gcc
FROM imgrep/busybox:latest as busybox FROM ${REGISTRY}/musl:latest as musl
FROM imgrep/make:latest as make FROM ${REGISTRY}/busybox:latest as busybox
FROM imgrep/binutils:latest as binutils FROM ${REGISTRY}/make:latest as make
FROM imgrep/openssl:latest as openssl FROM ${REGISTRY}/binutils:latest as binutils
FROM imgrep/ca-certificates:latest as ca-certificates FROM ${REGISTRY}/openssl:latest as openssl
FROM ${REGISTRY}/ca-certificates:latest as ca-certificates
FROM busybox as build FROM busybox as build
ENV SRC_SITE=https://curl.se/download ENV SRC_SITE=https://curl.se/download
@ -38,7 +39,7 @@ COPY --from=musl . /home/user/rootfs/
COPY --from=openssl . /home/user/rootfs/ COPY --from=openssl . /home/user/rootfs/
COPY --from=ca-certificates . /home/user/rootfs/ COPY --from=ca-certificates . /home/user/rootfs/
FROM scratch FROM scratch as package
COPY --from=build /home/user/rootfs / COPY --from=build /home/user/rootfs /
USER 100:100 USER 100:100
ENTRYPOINT ["/usr/bin/curl"] ENTRYPOINT ["/usr/bin/curl"]

View File

@ -1,25 +1,45 @@
FROM imgrep/musl:latest as musl ARG REGISTRY=local
FROM imgrep/bootstrap:latest as build FROM ${REGISTRY}/musl:latest as musl
ENV GCC_SITE https://mirrors.kernel.org/gnu/gcc FROM ${REGISTRY}/bootstrap:latest as base
ENV GCC_VERSION 12.2.0 ENV VERSION 12.2.0
ENV GCC_HASH e549cf9cf3594a00e27b6589d4322d70e0720cdd213f39beb4181e06926230ff ENV SRC_FILE gcc-$VERSION.tar.xz
ENV SRC_SITE https://mirrors.kernel.org/gnu/gcc/gcc-${VERSION}
ENV SRC_HASH e549cf9cf3594a00e27b6589d4322d70e0720cdd213f39beb4181e06926230ff
ENV DEP_SITE https://gcc.gnu.org/pub/gcc/infrastructure/
ENV GMP_FILE gmp-6.2.1.tar.bz2
ENV GMP_HASH eae9326beb4158c386e39a356818031bd28f3124cf915f8c5b1dc4c7a36b4d7c
ENV MPFR_FILE mpfr-4.1.0.tar.bz2
ENV MPFR_HASH feced2d430dd5a97805fa289fed3fc8ff2b094c02d05287fd6133e7f1f0ec926
ENV MPC_FILE mpc-1.2.1.tar.gz
ENV MPC_HASH 17503d2c395dfcf106b622dc142683c1199431d095367c6aacba6eec30340459
ENV ISL_FILE isl-0.24.tar.bz2
ENV ISL_HASH fcf78dd9656c10eb8cf9fbd5f59a0b6b01386205fe1934b3b287a0a1898145c0
RUN echo wget ${GCC_SITE}/gcc-$GCC_VERSION/gcc-$GCC_VERSION.tar.xz FROM base as fetch
RUN wget ${GCC_SITE}/gcc-$GCC_VERSION/gcc-$GCC_VERSION.tar.xz RUN set -eux; \
RUN echo "${GCC_HASH} gcc-${GCC_VERSION}.tar.xz" | sha256sum -c wget ${SRC_SITE}/${SRC_FILE}; \
RUN tar -xf gcc-${GCC_VERSION}.tar.xz echo "${SRC_HASH} ${SRC_FILE}" | sha256sum -c; \
WORKDIR gcc-${GCC_VERSION} wget ${DEP_SITE}/${GMP_FILE}; \
RUN set -ex; \ echo "${GMP_HASH} ${GMP_FILE}" | sha256sum -c; \
wget ${DEP_SITE}/${MPFR_FILE}; \
echo "${MPFR_HASH} ${MPFR_FILE}" | sha256sum -c; \
wget ${DEP_SITE}/${MPC_FILE}; \
echo "${MPC_HASH} ${MPC_FILE}" | sha256sum -c; \
wget ${DEP_SITE}/${ISL_FILE}; \
echo "${ISL_HASH} ${ISL_FILE}" | sha256sum -c
FROM fetch as build
RUN tar -xf ${SRC_FILE}
WORKDIR gcc-${VERSION}
RUN set -eux; \
mv ../*.tar.* .; \
./contrib/download_prerequisites; \ ./contrib/download_prerequisites; \
{ rm *.tar.* || true; }
RUN set -ex; \
./configure \ ./configure \
--target=x86_64-linux-musl \ --target=x86_64-linux-musl \
--build=x86_64-linux-musl \ --build=x86_64-linux-musl \
--host=x86_64-linux-musl \ --host=x86_64-linux-musl \
--prefix /usr \ --prefix=/usr \
--mandir=/usr/share/man \ --mandir=/usr/share/man \
--infodir=/usr/share/info \ --infodir=/usr/share/info \
--libdir=/usr/lib \ --libdir=/usr/lib \
@ -35,13 +55,23 @@ RUN set -ex; \
--enable-languages=c,c++ \ --enable-languages=c,c++ \
--enable-link-serialization=2 \ --enable-link-serialization=2 \
--enable-linker-build-id; \ --enable-linker-build-id; \
make -j "$(nproc)" make -j "$(nproc)"; \
RUN set -eux; \
make DESTDIR=/home/user/rootfs/ install-strip; \ make DESTDIR=/home/user/rootfs/ install-strip; \
ln -s gcc /home/user/rootfs/usr/bin/cc ln -s gcc /home/user/rootfs/usr/bin/cc
COPY --from=musl /lib/* /home/user/rootfs/lib/ COPY --from=musl /lib/* /home/user/rootfs/lib/
FROM scratch FROM ${REGISTRY}/binutils:latest as binutils
FROM scratch as test
COPY --from=busybox . /
COPY --from=binutils . /
COPY --from=musl . /
COPY --from=build /home/user/rootfs /
ADD test.c .
RUN set -eux; \
gcc test.c -static -o main; \
./main | grep "Success"
FROM scratch as package
COPY --from=build /home/user/rootfs / COPY --from=build /home/user/rootfs /
ENTRYPOINT ["/usr/bin/gcc"] ENTRYPOINT ["/usr/bin/gcc"]
CMD ["--version"] CMD ["--version"]

View File

@ -1,11 +1,10 @@
ARG REGISTRY = imgrep/ ARG REGISTRY = local
ARG BUSYBOX_VERSION = latest ARG BUSYBOX_VERSION = latest
FROM ${REGISTRY}busybox:${BUSYBOX_VERSION} as busybox FROM ${REGISTRY}/busybox:${BUSYBOX_VERSION} as busybox
FROM ${REGISTRY}/bash:latest as bash
FROM imgrep/bash:latest as bash FROM ${REGISTRY}/gcc:latest as gcc
FROM imgrep/gcc:latest as gcc FROM ${REGISTRY}/binutils:latest as binutils
FROM imgrep/binutils:latest as binutils FROM ${REGISTRY}/musl:latest as musl
FROM imgrep/musl:latest as musl
FROM busybox as stage1 FROM busybox as stage1
COPY --from=bash . /bin/ COPY --from=bash . /bin/
@ -86,7 +85,7 @@ RUN set -eux; \
mkdir -p ${DEST}; \ mkdir -p ${DEST}; \
cp -R bin lib pkg src ${DEST} cp -R bin lib pkg src ${DEST}
FROM scratch FROM scratch as package
COPY --from=stage3 /home/user/go-stage3 / COPY --from=stage3 /home/user/go-stage3 /
USER 100:100 USER 100:100
ENTRYPOINT ["/bin/go"] ENTRYPOINT ["/bin/go"]

View File

@ -1,11 +1,12 @@
FROM imgrep/busybox:latest as busybox ARG REGISTRY=local
FROM imgrep/gcc:latest as gcc FROM ${REGISTRY}/busybox:latest as busybox
FROM imgrep/binutils:latest as binutils FROM ${REGISTRY}/gcc:latest as gcc
FROM imgrep/musl:latest as musl FROM ${REGISTRY}/binutils:latest as binutils
FROM imgrep/make:latest as make FROM ${REGISTRY}/musl:latest as musl
FROM imgrep/m4:latest as m4 FROM ${REGISTRY}/make:latest as make
FROM imgrep/bash:latest as bash FROM ${REGISTRY}/m4:latest as m4
FROM imgrep/sed:latest as sed FROM ${REGISTRY}/bash:latest as bash
FROM ${REGISTRY}/sed:latest as sed
FROM busybox as build FROM busybox as build
ENV SRC_SITE=https://ftp.gnu.org/gnu/libtool ENV SRC_SITE=https://ftp.gnu.org/gnu/libtool
@ -28,9 +29,9 @@ RUN make DESTDIR=/home/user/rootfs install
COPY --from=musl /usr/lib/libc.so /home/user/rootfs/lib/ld-musl-x86_64.so.1 COPY --from=musl /usr/lib/libc.so /home/user/rootfs/lib/ld-musl-x86_64.so.1
COPY --from=bash . /home/user/rootfs COPY --from=bash . /home/user/rootfs
COPY --from=sed . /home/user/rootfs COPY --from=sed . /home/user/rootfs
RUN ln -s /usr/bin/bash /home/user/rootfs/bin/sh RUN ln -s /bin/bash /home/user/rootfs/bin/sh
FROM scratch FROM scratch as package
COPY --from=build /home/user/rootfs / COPY --from=build /home/user/rootfs /
ENTRYPOINT ["/usr/bin/libtool"] ENTRYPOINT ["/usr/bin/libtool"]
CMD ["--version"] CMD ["--version"]

View File

@ -1,11 +1,12 @@
FROM imgrep/busybox:latest as busybox ARG REGISTRY=local
FROM imgrep/gcc:latest as gcc FROM ${REGISTRY}/busybox as busybox
FROM imgrep/binutils:latest as binutils FROM ${REGISTRY}/gcc as gcc
FROM imgrep/musl:latest as musl FROM ${REGISTRY}/binutils as binutils
FROM imgrep/make:latest as make FROM ${REGISTRY}/musl as musl
FROM imgrep/autoconf:latest as autoconf FROM ${REGISTRY}/make as make
FROM imgrep/automake:latest as automake FROM ${REGISTRY}/autoconf as autoconf
FROM imgrep/libtool:latest as libtool FROM ${REGISTRY}/automake as automake
FROM ${REGISTRY}/libtool as libtool
FROM busybox as build FROM busybox as build
ENV SRC_SITE=https://github.com/libunwind/libunwind/releases/download ENV SRC_SITE=https://github.com/libunwind/libunwind/releases/download
@ -16,13 +17,12 @@ RUN echo "${SRC_HASH} libunwind-${SRC_VERSION}.tar.gz" | sha256sum -c
RUN tar -xf libunwind-${SRC_VERSION}.tar.gz RUN tar -xf libunwind-${SRC_VERSION}.tar.gz
WORKDIR libunwind-${SRC_VERSION} WORKDIR libunwind-${SRC_VERSION}
COPY --from=gcc . / COPY --from=gcc . /
COPY --from=binutils . /
COPY --from=make . / COPY --from=make . /
COPY --from=musl . / COPY --from=musl . /
COPY --from=binutils . /
COPY --from=autoconf . / COPY --from=autoconf . /
COPY --from=automake . / COPY --from=automake . /
COPY --from=libtool . / COPY --from=libtool . /
#LDFLAGS="-lucontext" CFLAGS="-fno-stack-protector" \
RUN set -eux; \ RUN set -eux; \
./configure \ ./configure \
--build=x86_64-unknown-linux-musl \ --build=x86_64-unknown-linux-musl \
@ -33,9 +33,9 @@ RUN set -eux; \
--localstatedir=/usr/share/man \ --localstatedir=/usr/share/man \
--enable-cxx-exceptions \ --enable-cxx-exceptions \
--disable-tests \ --disable-tests \
--infodir=/usr/share/info; \ --infodir=/usr/share/info || cat config.log; \
make; make;
RUN make DESTDIR=/home/user/rootfs install RUN make DESTDIR=/home/user/rootfs install
FROM scratch FROM scratch as package
COPY --from=build /home/user/rootfs / COPY --from=build /home/user/rootfs /

View File

@ -1,14 +1,15 @@
FROM imgrep/busybox:latest as busybox ARG REGISTRY=local
FROM imgrep/gcc:latest as gcc FROM ${REGISTRY}/busybox:latest as busybox
FROM imgrep/binutils:latest as binutils FROM ${REGISTRY}/gcc:latest as gcc
FROM imgrep/musl:latest as musl FROM ${REGISTRY}/binutils:latest as binutils
FROM imgrep/make:latest as make FROM ${REGISTRY}/musl:latest as musl
FROM imgrep/autoconf:latest as autoconf FROM ${REGISTRY}/make:latest as make
FROM imgrep/automake:latest as automake FROM ${REGISTRY}/autoconf:latest as autoconf
FROM imgrep/libtool:latest as libtool FROM ${REGISTRY}/automake:latest as automake
FROM imgrep/pkgconf:latest as pkgconf FROM ${REGISTRY}/libtool:latest as libtool
FROM imgrep/python:latest as python FROM ${REGISTRY}/pkgconf:latest as pkgconf
FROM imgrep/m4:latest as m4 FROM ${REGISTRY}/python:latest as python
FROM ${REGISTRY}/m4:latest as m4
FROM busybox as build FROM busybox as build
ENV SRC_SITE=https://gitlab.gnome.org/GNOME/libxml2/-/archive ENV SRC_SITE=https://gitlab.gnome.org/GNOME/libxml2/-/archive
@ -43,5 +44,5 @@ RUN set -eux; \
RUN make DESTDIR=/home/user/rootfs install RUN make DESTDIR=/home/user/rootfs install
RUN ls -Rlah /home/user/rootfs RUN ls -Rlah /home/user/rootfs
FROM scratch FROM scratch as package
COPY --from=build /home/user/rootfs / COPY --from=build /home/user/rootfs /

View File

@ -1,5 +1,6 @@
FROM imgrep/musl:latest as musl ARG REGISTRY=local
FROM imgrep/bootstrap:latest as build FROM ${REGISTRY}/musl:latest as musl
FROM ${REGISTRY}/bootstrap:latest as build
ENV SRC_SITE https://mirrors.edge.kernel.org/pub/linux/kernel/v6.x/ ENV SRC_SITE https://mirrors.edge.kernel.org/pub/linux/kernel/v6.x/
ENV SRC_VERSION 6.6 ENV SRC_VERSION 6.6
@ -16,5 +17,5 @@ RUN set -ex; \
find /rootfs/usr/include/ ! -iname "*.h" -type f -exec rm -v {} \+; \ find /rootfs/usr/include/ ! -iname "*.h" -type f -exec rm -v {} \+; \
rm -rf /rootfs/usr/include/drm; rm -rf /rootfs/usr/include/drm;
FROM scratch FROM scratch as package
COPY --from=build /rootfs / COPY --from=build /rootfs /

View File

@ -1,22 +1,24 @@
FROM imgrep/busybox:latest as busybox ARG REGISTRY=local
FROM imgrep/gcc:latest as gcc FROM ${REGISTRY}/busybox as busybox
FROM imgrep/binutils:latest as binutils FROM ${REGISTRY}/gcc as gcc
FROM imgrep/musl:latest as musl FROM ${REGISTRY}/binutils as binutils
FROM imgrep/openssl:latest as openssl FROM ${REGISTRY}/musl as musl
FROM imgrep/python:latest as python FROM ${REGISTRY}/openssl as openssl
FROM imgrep/py-setuptools:latest as py-setuptools FROM ${REGISTRY}/python as python
FROM imgrep/cmake:latest as cmake FROM ${REGISTRY}/py-setuptools as py-setuptools
FROM imgrep/ninja:latest as ninja FROM ${REGISTRY}/cmake as cmake
FROM ${REGISTRY}/ninja as ninja
FROM busybox as build FROM busybox as build
ARG VERSION=16.0.6
ENV SRC_VERSION=${VERSION}
ENV SRC_SITE=https://github.com/llvm/llvm-project/releases/download ENV SRC_SITE=https://github.com/llvm/llvm-project/releases/download
ENV SRC_VERSION=16.0.6 ENV SRC_HASH_13_0_1=326335a830f2e32d06d0a36393b5455d17dc73e0bd1211065227ee014f92cbf8
ENV SRC_HASH=ce5e71081d17ce9e86d7cbcfa28c4b04b9300f8fb7e78422b1feb6bc52c3028e ENV SRC_HASH_16_0_6=ce5e71081d17ce9e86d7cbcfa28c4b04b9300f8fb7e78422b1feb6bc52c3028e
RUN wget ${SRC_SITE}/llvmorg-${SRC_VERSION}/llvm-project-${SRC_VERSION}.src.tar.xz RUN wget ${SRC_SITE}/llvmorg-${SRC_VERSION}/llvm-project-${SRC_VERSION}.src.tar.xz
RUN echo "${SRC_HASH} llvm-project-${SRC_VERSION}.src.tar.xz" | sha256sum -c RUN echo "$(printenv SRC_HASH_${VERSION//./_}) llvm-project-${SRC_VERSION}.src.tar.xz" | sha256sum -c
RUN tar -xf llvm-project-${SRC_VERSION}.src.tar.xz RUN tar -xf llvm-project-${SRC_VERSION}.src.tar.xz
WORKDIR llvm-project-${SRC_VERSION}.src WORKDIR llvm-project-${SRC_VERSION}.src
RUN ls -lah .
ADD . . ADD . .
RUN patch -p1 < rust-feature-tables.patch RUN patch -p1 < rust-feature-tables.patch
COPY --from=binutils . / COPY --from=binutils . /
@ -48,7 +50,7 @@ RUN set -eux; \
-DLLVM_ENABLE_ASSERTIONS=OFF \ -DLLVM_ENABLE_ASSERTIONS=OFF \
-DLLVM_ENABLE_DUMP=ON \ -DLLVM_ENABLE_DUMP=ON \
-DLLVM_ENABLE_EH=ON \ -DLLVM_ENABLE_EH=ON \
-DLLVM_ENABLE_FFI=ON \ -DLLVM_ENABLE_FFI=OFF \
-DLLVM_ENABLE_LIBCXX=OFF \ -DLLVM_ENABLE_LIBCXX=OFF \
-DLLVM_ENABLE_LIBEDIT=OFF \ -DLLVM_ENABLE_LIBEDIT=OFF \
-DLLVM_ENABLE_PIC=ON \ -DLLVM_ENABLE_PIC=ON \
@ -74,7 +76,7 @@ COPY --from=musl /lib/* /home/user/rootfs/lib/
COPY --from=gcc /usr/lib/* /home/user/rootfs/usr/lib/ COPY --from=gcc /usr/lib/* /home/user/rootfs/usr/lib/
COPY --from=gcc /usr/lib64/* /home/user/rootfs/usr/lib/ COPY --from=gcc /usr/lib64/* /home/user/rootfs/usr/lib/
FROM scratch FROM scratch as package
COPY --from=build /home/user/rootfs / COPY --from=build /home/user/rootfs /
USER 100:100 USER 100:100
ENTRYPOINT ["/usr/bin/llc"] ENTRYPOINT ["/usr/bin/llc"]

View File

@ -1,81 +0,0 @@
FROM imgrep/busybox:latest as busybox
FROM imgrep/gcc:latest as gcc
FROM imgrep/binutils:latest as binutils
FROM imgrep/musl:latest as musl
FROM imgrep/openssl:latest as openssl
FROM imgrep/python:latest as python
FROM imgrep/py-setuptools:latest as py-setuptools
FROM imgrep/cmake:latest as cmake
FROM imgrep/ninja:latest as ninja
FROM busybox as build
ENV SRC_SITE=https://github.com/llvm/llvm-project/releases/download
ENV SRC_VERSION=13.0.1
ENV SRC_HASH=326335a830f2e32d06d0a36393b5455d17dc73e0bd1211065227ee014f92cbf8
RUN wget ${SRC_SITE}/llvmorg-${SRC_VERSION}/llvm-project-${SRC_VERSION}.src.tar.xz
RUN echo "${SRC_HASH} llvm-project-${SRC_VERSION}.src.tar.xz" | sha256sum -c
RUN tar -xf llvm-project-${SRC_VERSION}.src.tar.xz
WORKDIR llvm-project-${SRC_VERSION}.src
RUN ls -lah .
ADD . .
RUN patch -p1 < rust-feature-tables.patch
COPY --from=binutils . /
COPY --from=cmake . /
COPY --from=ninja . /
COPY --from=musl . /
COPY --from=gcc . /
COPY --from=python . /
COPY --from=py-setuptools . /
RUN set -eux; \
python -c "import setuptools; print(setuptools.__version__)"; \
cmake \
-B build \
-G Ninja \
-Wno-dev -S llvm \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_PREFIX=/usr/ \
-DCMAKE_INSTALL_RPATH=/usr/ \
-DLLVM_DEFAULT_TARGET_TRIPLE="x86_64-linux-musl" \
-DLLVM_HOST_TRIPLE="x86_64-linux-musl" \
-DLLVM_APPEND_VC_REV=OFF \
-DLLVM_BINUTILS_INCDIR=/usr/include \
-DLLVM_BUILD_DOCS=OFF \
-DLLVM_BUILD_EXAMPLES=OFF \
-DLLVM_BUILD_EXTERNAL_COMPILER_RT=ON \
-DLLVM_BUILD_LLVM_DYLIB=ON \
-DLLVM_BUILD_TESTS=ON \
-DLLVM_ENABLE_ASSERTIONS=OFF \
-DLLVM_ENABLE_DUMP=ON \
-DLLVM_ENABLE_EH=ON \
-DLLVM_ENABLE_FFI=OFF \
-DLLVM_ENABLE_LIBCXX=OFF \
-DLLVM_ENABLE_LIBEDIT=OFF \
-DLLVM_ENABLE_PIC=ON \
-DLLVM_ENABLE_RTTI=ON \
-DLLVM_ENABLE_SPHINX=OFF \
-DLLVM_ENABLE_TERMINFO=ON \
-DLLVM_ENABLE_ZLIB=OFF \
-DLLVM_ENABLE_ZSTD=OFF \
-DLLVM_INCLUDE_BENCHMARKS=OFF \
-DLLVM_INCLUDE_EXAMPLES=OFF \
-DLLVM_INSTALL_UTILS=ON \
-DLLVM_LINK_LLVM_DYLIB=ON \
-DLLVM_USE_PERF=ON; \
cmake --build build; \
python3 llvm/utils/lit/setup.py build
RUN set -eux; \
export DESTDIR="/home/user/rootfs/"; \
cmake --install build; \
python3 llvm/utils/lit/setup.py install --root="$DESTDIR"
COPY --from=musl /lib/* /home/user/rootfs/lib/
COPY --from=gcc /usr/lib/* /home/user/rootfs/usr/lib/
COPY --from=gcc /usr/lib64/* /home/user/rootfs/usr/lib/
FROM scratch
COPY --from=build /home/user/rootfs /
USER 100:100
ENTRYPOINT ["/usr/bin/llc"]
CMD ["--version"]

View File

@ -1,305 +0,0 @@
<!DOCTYPE html>
<html lang='en'>
<head>
<title>rust-feature-tables.patch « llvm16 « main - aports - Alpine packages build scripts
</title>
<meta name='generator' content='cgit v1.2.3'/>
<meta name='robots' content='index, nofollow'/>
<link rel='stylesheet' type='text/css' href='/cgit.css'/>
<script type='text/javascript' src='/cgit.js'></script>
<link rel='shortcut icon' href='//alpinelinux.org/alpine-logo.ico'/>
<link rel='alternate' title='Atom feed' href='http://git.alpinelinux.org/aports/atom/main/llvm16/rust-feature-tables.patch?h=master' type='application/atom+xml'/>
<link rel='vcs-git' href='https://git.alpinelinux.org/aports' title='aports Git repository'/>
</head>
<body>
<div id='cgit'><table id='header'>
<tr>
<td class='logo' rowspan='2'><a href='/'><img src='//wiki.alpinelinux.org/images/alogo.svg' alt='cgit logo'/></a></td>
<td class='main'><a href='/'>index</a> : <a href='/aports/'>aports</a></td><td class='form'><form method='get'>
<select name='h' onchange='this.form.submit();'>
<option value='1.10-stable'>1.10-stable</option>
<option value='1.9'>1.9</option>
<option value='15308-community-pgbouncer-init-script-issues'>15308-community-pgbouncer-init-script-issues</option>
<option value='2.0-stable'>2.0-stable</option>
<option value='2.1-stable'>2.1-stable</option>
<option value='2.2-stable'>2.2-stable</option>
<option value='2.3-stable'>2.3-stable</option>
<option value='2.4-stable'>2.4-stable</option>
<option value='2.5-stable'>2.5-stable</option>
<option value='2.6-stable'>2.6-stable</option>
<option value='2.7-stable'>2.7-stable</option>
<option value='3.0-stable'>3.0-stable</option>
<option value='3.1-stable'>3.1-stable</option>
<option value='3.10-stable'>3.10-stable</option>
<option value='3.11-stable'>3.11-stable</option>
<option value='3.12-stable'>3.12-stable</option>
<option value='3.13-stable'>3.13-stable</option>
<option value='3.14-stable'>3.14-stable</option>
<option value='3.15-stable'>3.15-stable</option>
<option value='3.16-stable'>3.16-stable</option>
<option value='3.17-stable'>3.17-stable</option>
<option value='3.18-stable'>3.18-stable</option>
<option value='3.2-stable'>3.2-stable</option>
<option value='3.3-stable'>3.3-stable</option>
<option value='3.4-stable'>3.4-stable</option>
<option value='3.5-stable'>3.5-stable</option>
<option value='3.6-stable'>3.6-stable</option>
<option value='3.7-stable'>3.7-stable</option>
<option value='3.8-stable'>3.8-stable</option>
<option value='3.9-stable'>3.9-stable</option>
<option value='aports-testing-ttl'>aports-testing-ttl</option>
<option value='master' selected='selected'>master</option>
<option value='patches/3538'>patches/3538</option>
<option value='patches/3539'>patches/3539</option>
<option value='patches/3808'>patches/3808</option>
<option value='patches/3888'>patches/3888</option>
<option value='patches/3913'>patches/3913</option>
<option value='patches/3977'>patches/3977</option>
<option value='patches/3998'>patches/3998</option>
</select> <input type='submit' value='switch'/></form></td></tr>
<tr><td class='sub'>Alpine packages build scripts
</td><td class='sub right'>uwsgi</td></tr></table>
<table class='tabs'><tr><td>
<a href='/aports/about/'>about</a><a href='/aports/'>summary</a><a href='/aports/refs/'>refs</a><a href='/aports/log/main/llvm16/rust-feature-tables.patch'>log</a><a class='active' href='/aports/tree/main/llvm16/rust-feature-tables.patch'>tree</a><a href='/aports/commit/main/llvm16/rust-feature-tables.patch'>commit</a><a href='/aports/diff/main/llvm16/rust-feature-tables.patch'>diff</a><a href='/aports/stats/main/llvm16/rust-feature-tables.patch'>stats</a></td><td class='form'><form class='right' method='get' action='/aports/log/main/llvm16/rust-feature-tables.patch'>
<select name='qt'>
<option value='grep'>log msg</option>
<option value='author'>author</option>
<option value='committer'>committer</option>
<option value='range'>range</option>
</select>
<input class='txt' type='search' size='10' name='q' value=''/>
<input type='submit' value='search'/>
</form>
</td></tr></table>
<div class='path'>path: <a href='/aports/tree/'>root</a>/<a href='/aports/tree/main'>main</a>/<a href='/aports/tree/main/llvm16'>llvm16</a>/<a href='/aports/tree/main/llvm16/rust-feature-tables.patch'>rust-feature-tables.patch</a></div><div class='content'>blob: 2068d51f2b9aae67132d65eb83489b22c9d227c4 (<a href='/aports/plain/main/llvm16/rust-feature-tables.patch'>plain</a>)
<table summary='blob content' class='blob'>
<tr><td class='linenumbers'><pre><a id='n1' href='#n1'>1</a>
<a id='n2' href='#n2'>2</a>
<a id='n3' href='#n3'>3</a>
<a id='n4' href='#n4'>4</a>
<a id='n5' href='#n5'>5</a>
<a id='n6' href='#n6'>6</a>
<a id='n7' href='#n7'>7</a>
<a id='n8' href='#n8'>8</a>
<a id='n9' href='#n9'>9</a>
<a id='n10' href='#n10'>10</a>
<a id='n11' href='#n11'>11</a>
<a id='n12' href='#n12'>12</a>
<a id='n13' href='#n13'>13</a>
<a id='n14' href='#n14'>14</a>
<a id='n15' href='#n15'>15</a>
<a id='n16' href='#n16'>16</a>
<a id='n17' href='#n17'>17</a>
<a id='n18' href='#n18'>18</a>
<a id='n19' href='#n19'>19</a>
<a id='n20' href='#n20'>20</a>
<a id='n21' href='#n21'>21</a>
<a id='n22' href='#n22'>22</a>
<a id='n23' href='#n23'>23</a>
<a id='n24' href='#n24'>24</a>
<a id='n25' href='#n25'>25</a>
<a id='n26' href='#n26'>26</a>
<a id='n27' href='#n27'>27</a>
<a id='n28' href='#n28'>28</a>
<a id='n29' href='#n29'>29</a>
<a id='n30' href='#n30'>30</a>
<a id='n31' href='#n31'>31</a>
</pre></td>
<td class='lines'><pre><code><style>
@media only all and (prefers-color-scheme: dark) {
pre { line-height: 125%; }
td.linenos .normal { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; }
span.linenos { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; }
td.linenos .special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }
span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }
.highlight .hll { background-color: #49483e }
.highlight .c { color: #75715e } /* Comment */
.highlight .err { color: #960050; background-color: #1e0010 } /* Error */
.highlight .esc { color: #f8f8f2 } /* Escape */
.highlight .g { color: #f8f8f2 } /* Generic */
.highlight .k { color: #66d9ef } /* Keyword */
.highlight .l { color: #ae81ff } /* Literal */
.highlight .n { color: #f8f8f2 } /* Name */
.highlight .o { color: #f92672 } /* Operator */
.highlight .x { color: #f8f8f2 } /* Other */
.highlight .p { color: #f8f8f2 } /* Punctuation */
.highlight .ch { color: #75715e } /* Comment.Hashbang */
.highlight .cm { color: #75715e } /* Comment.Multiline */
.highlight .cp { color: #75715e } /* Comment.Preproc */
.highlight .cpf { color: #75715e } /* Comment.PreprocFile */
.highlight .c1 { color: #75715e } /* Comment.Single */
.highlight .cs { color: #75715e } /* Comment.Special */
.highlight .gd { color: #f92672 } /* Generic.Deleted */
.highlight .ge { color: #f8f8f2; font-style: italic } /* Generic.Emph */
.highlight .gr { color: #f8f8f2 } /* Generic.Error */
.highlight .gh { color: #f8f8f2 } /* Generic.Heading */
.highlight .gi { color: #a6e22e } /* Generic.Inserted */
.highlight .go { color: #66d9ef } /* Generic.Output */
.highlight .gp { color: #f92672; font-weight: bold } /* Generic.Prompt */
.highlight .gs { color: #f8f8f2; font-weight: bold } /* Generic.Strong */
.highlight .gu { color: #75715e } /* Generic.Subheading */
.highlight .gt { color: #f8f8f2 } /* Generic.Traceback */
.highlight .kc { color: #66d9ef } /* Keyword.Constant */
.highlight .kd { color: #66d9ef } /* Keyword.Declaration */
.highlight .kn { color: #f92672 } /* Keyword.Namespace */
.highlight .kp { color: #66d9ef } /* Keyword.Pseudo */
.highlight .kr { color: #66d9ef } /* Keyword.Reserved */
.highlight .kt { color: #66d9ef } /* Keyword.Type */
.highlight .ld { color: #e6db74 } /* Literal.Date */
.highlight .m { color: #ae81ff } /* Literal.Number */
.highlight .s { color: #e6db74 } /* Literal.String */
.highlight .na { color: #a6e22e } /* Name.Attribute */
.highlight .nb { color: #f8f8f2 } /* Name.Builtin */
.highlight .nc { color: #a6e22e } /* Name.Class */
.highlight .no { color: #66d9ef } /* Name.Constant */
.highlight .nd { color: #a6e22e } /* Name.Decorator */
.highlight .ni { color: #f8f8f2 } /* Name.Entity */
.highlight .ne { color: #a6e22e } /* Name.Exception */
.highlight .nf { color: #a6e22e } /* Name.Function */
.highlight .nl { color: #f8f8f2 } /* Name.Label */
.highlight .nn { color: #f8f8f2 } /* Name.Namespace */
.highlight .nx { color: #a6e22e } /* Name.Other */
.highlight .py { color: #f8f8f2 } /* Name.Property */
.highlight .nt { color: #f92672 } /* Name.Tag */
.highlight .nv { color: #f8f8f2 } /* Name.Variable */
.highlight .ow { color: #f92672 } /* Operator.Word */
.highlight .pm { color: #f8f8f2 } /* Punctuation.Marker */
.highlight .w { color: #f8f8f2 } /* Text.Whitespace */
.highlight .mb { color: #ae81ff } /* Literal.Number.Bin */
.highlight .mf { color: #ae81ff } /* Literal.Number.Float */
.highlight .mh { color: #ae81ff } /* Literal.Number.Hex */
.highlight .mi { color: #ae81ff } /* Literal.Number.Integer */
.highlight .mo { color: #ae81ff } /* Literal.Number.Oct */
.highlight .sa { color: #e6db74 } /* Literal.String.Affix */
.highlight .sb { color: #e6db74 } /* Literal.String.Backtick */
.highlight .sc { color: #e6db74 } /* Literal.String.Char */
.highlight .dl { color: #e6db74 } /* Literal.String.Delimiter */
.highlight .sd { color: #e6db74 } /* Literal.String.Doc */
.highlight .s2 { color: #e6db74 } /* Literal.String.Double */
.highlight .se { color: #ae81ff } /* Literal.String.Escape */
.highlight .sh { color: #e6db74 } /* Literal.String.Heredoc */
.highlight .si { color: #e6db74 } /* Literal.String.Interpol */
.highlight .sx { color: #e6db74 } /* Literal.String.Other */
.highlight .sr { color: #e6db74 } /* Literal.String.Regex */
.highlight .s1 { color: #e6db74 } /* Literal.String.Single */
.highlight .ss { color: #e6db74 } /* Literal.String.Symbol */
.highlight .bp { color: #f8f8f2 } /* Name.Builtin.Pseudo */
.highlight .fm { color: #a6e22e } /* Name.Function.Magic */
.highlight .vc { color: #f8f8f2 } /* Name.Variable.Class */
.highlight .vg { color: #f8f8f2 } /* Name.Variable.Global */
.highlight .vi { color: #f8f8f2 } /* Name.Variable.Instance */
.highlight .vm { color: #f8f8f2 } /* Name.Variable.Magic */
.highlight .il { color: #ae81ff } /* Literal.Number.Integer.Long */
}
@media (prefers-color-scheme: light) {
pre { line-height: 125%; }
td.linenos .normal { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; }
span.linenos { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; }
td.linenos .special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }
span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; }
.highlight .hll { background-color: #ffffcc }
.highlight .c { color: #888888 } /* Comment */
.highlight .err { color: #a61717; background-color: #e3d2d2 } /* Error */
.highlight .k { color: #008800; font-weight: bold } /* Keyword */
.highlight .ch { color: #888888 } /* Comment.Hashbang */
.highlight .cm { color: #888888 } /* Comment.Multiline */
.highlight .cp { color: #cc0000; font-weight: bold } /* Comment.Preproc */
.highlight .cpf { color: #888888 } /* Comment.PreprocFile */
.highlight .c1 { color: #888888 } /* Comment.Single */
.highlight .cs { color: #cc0000; font-weight: bold; background-color: #fff0f0 } /* Comment.Special */
.highlight .gd { color: #000000; background-color: #ffdddd } /* Generic.Deleted */
.highlight .ge { font-style: italic } /* Generic.Emph */
.highlight .gr { color: #aa0000 } /* Generic.Error */
.highlight .gh { color: #333333 } /* Generic.Heading */
.highlight .gi { color: #000000; background-color: #ddffdd } /* Generic.Inserted */
.highlight .go { color: #888888 } /* Generic.Output */
.highlight .gp { color: #555555 } /* Generic.Prompt */
.highlight .gs { font-weight: bold } /* Generic.Strong */
.highlight .gu { color: #666666 } /* Generic.Subheading */
.highlight .gt { color: #aa0000 } /* Generic.Traceback */
.highlight .kc { color: #008800; font-weight: bold } /* Keyword.Constant */
.highlight .kd { color: #008800; font-weight: bold } /* Keyword.Declaration */
.highlight .kn { color: #008800; font-weight: bold } /* Keyword.Namespace */
.highlight .kp { color: #008800 } /* Keyword.Pseudo */
.highlight .kr { color: #008800; font-weight: bold } /* Keyword.Reserved */
.highlight .kt { color: #888888; font-weight: bold } /* Keyword.Type */
.highlight .m { color: #0000DD; font-weight: bold } /* Literal.Number */
.highlight .s { color: #dd2200; background-color: #fff0f0 } /* Literal.String */
.highlight .na { color: #336699 } /* Name.Attribute */
.highlight .nb { color: #003388 } /* Name.Builtin */
.highlight .nc { color: #bb0066; font-weight: bold } /* Name.Class */
.highlight .no { color: #003366; font-weight: bold } /* Name.Constant */
.highlight .nd { color: #555555 } /* Name.Decorator */
.highlight .ne { color: #bb0066; font-weight: bold } /* Name.Exception */
.highlight .nf { color: #0066bb; font-weight: bold } /* Name.Function */
.highlight .nl { color: #336699; font-style: italic } /* Name.Label */
.highlight .nn { color: #bb0066; font-weight: bold } /* Name.Namespace */
.highlight .py { color: #336699; font-weight: bold } /* Name.Property */
.highlight .nt { color: #bb0066; font-weight: bold } /* Name.Tag */
.highlight .nv { color: #336699 } /* Name.Variable */
.highlight .ow { color: #008800 } /* Operator.Word */
.highlight .w { color: #bbbbbb } /* Text.Whitespace */
.highlight .mb { color: #0000DD; font-weight: bold } /* Literal.Number.Bin */
.highlight .mf { color: #0000DD; font-weight: bold } /* Literal.Number.Float */
.highlight .mh { color: #0000DD; font-weight: bold } /* Literal.Number.Hex */
.highlight .mi { color: #0000DD; font-weight: bold } /* Literal.Number.Integer */
.highlight .mo { color: #0000DD; font-weight: bold } /* Literal.Number.Oct */
.highlight .sa { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Affix */
.highlight .sb { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Backtick */
.highlight .sc { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Char */
.highlight .dl { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Delimiter */
.highlight .sd { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Doc */
.highlight .s2 { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Double */
.highlight .se { color: #0044dd; background-color: #fff0f0 } /* Literal.String.Escape */
.highlight .sh { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Heredoc */
.highlight .si { color: #3333bb; background-color: #fff0f0 } /* Literal.String.Interpol */
.highlight .sx { color: #22bb22; background-color: #f0fff0 } /* Literal.String.Other */
.highlight .sr { color: #008800; background-color: #fff0ff } /* Literal.String.Regex */
.highlight .s1 { color: #dd2200; background-color: #fff0f0 } /* Literal.String.Single */
.highlight .ss { color: #aa6600; background-color: #fff0f0 } /* Literal.String.Symbol */
.highlight .bp { color: #003388 } /* Name.Builtin.Pseudo */
.highlight .fm { color: #0066bb; font-weight: bold } /* Name.Function.Magic */
.highlight .vc { color: #336699 } /* Name.Variable.Class */
.highlight .vg { color: #dd7700 } /* Name.Variable.Global */
.highlight .vi { color: #3333bb } /* Name.Variable.Instance */
.highlight .vm { color: #336699 } /* Name.Variable.Magic */
.highlight .il { color: #0000DD; font-weight: bold } /* Literal.Number.Integer.Long */
}
</style><div class="highlight"><pre><span></span>Patch-Source: https://github.com/rust-lang/llvm-project/commit/0a157fd7a5f61973ffddf96b3d445a718193eb1a
From 0a157fd7a5f61973ffddf96b3d445a718193eb1a Mon Sep 17 00:00:00 2001
From: Cameron Hart &lt;cameron.hart@gmail.com&gt;
Date: Sun, 10 Jul 2016 23:55:53 +1000
Subject: [PATCH] [rust] Add accessors for MCSubtargetInfo CPU and Feature
<span class="w"> </span>tables
This is needed for `-C target-cpu=help` and `-C target-feature=help` in rustc
<span class="gs">---</span>
<span class="w"> </span>llvm/include/llvm/MC/MCSubtargetInfo.h | 8 ++++++++
<span class="w"> </span>1 file changed, 8 insertions(+)
<span class="gh">diff --git a/llvm/include/llvm/MC/MCSubtargetInfo.h b/llvm/include/llvm/MC/MCSubtargetInfo.h</span>
<span class="gh">index e1f0a86141e36..1e529bf4fb31e 100644</span>
<span class="gd">--- a/llvm/include/llvm/MC/MCSubtargetInfo.h</span>
<span class="gi">+++ b/llvm/include/llvm/MC/MCSubtargetInfo.h</span>
<span class="gu">@@ -230,6 +230,14 @@ class MCSubtargetInfo {</span>
<span class="w"> </span> return Found != ProcDesc.end() &amp;&amp; StringRef(Found-&gt;Key) == CPU;
<span class="w"> </span> }
<span class="w"> </span>
<span class="gi">+ ArrayRef&lt;SubtargetSubTypeKV&gt; getCPUTable() const {</span>
<span class="gi">+ return ProcDesc;</span>
<span class="gi">+ }</span>
<span class="gi">+</span>
<span class="gi">+ ArrayRef&lt;SubtargetFeatureKV&gt; getFeatureTable() const {</span>
<span class="gi">+ return ProcFeatures;</span>
<span class="gi">+ }</span>
<span class="gi">+</span>
<span class="w"> </span> virtual unsigned getHwMode() const { return 0; }
<span class="w"> </span>
<span class="w"> </span> /// Return the cache size in bytes for the given level of cache.
</pre></div>
</code></pre></td></tr></table>
</div> <!-- class=content -->
<div class='footer'>generated by <a href='https://git.zx2c4.com/cgit/about/'>cgit v1.2.3</a> (<a href='https://git-scm.com/'>git 2.41.0</a>) at 2023-11-20 09:07:59 +0000</div>
</div> <!-- id=cgit -->
</body>
</html>

View File

@ -1,8 +1,9 @@
FROM imgrep/busybox:latest as busybox ARG REGISTRY=local
FROM imgrep/gcc:latest as gcc FROM ${REGISTRY}/busybox:latest as busybox
FROM imgrep/binutils:latest as binutils FROM ${REGISTRY}/gcc:latest as gcc
FROM imgrep/musl:latest as musl FROM ${REGISTRY}/binutils:latest as binutils
FROM imgrep/make:latest as make FROM ${REGISTRY}/musl:latest as musl
FROM ${REGISTRY}/make:latest as make
FROM busybox as build FROM busybox as build
COPY --from=gcc . / COPY --from=gcc . /
@ -24,7 +25,7 @@ RUN set -eux; \
RUN make DESTDIR=/home/user/rootfs install RUN make DESTDIR=/home/user/rootfs install
COPY --from=musl /usr/lib/libc.so /home/user/rootfs/lib/ld-musl-x86_64.so.1 COPY --from=musl /usr/lib/libc.so /home/user/rootfs/lib/ld-musl-x86_64.so.1
FROM scratch FROM scratch as package
COPY --from=build /home/user/rootfs / COPY --from=build /home/user/rootfs /
ENTRYPOINT ["/usr/bin/m4"] ENTRYPOINT ["/usr/bin/m4"]
CMD ["--version"] CMD ["--version"]

View File

@ -1,5 +1,6 @@
FROM imgrep/musl:latest as musl ARG REGISTRY=local
FROM imgrep/bootstrap:latest as build FROM ${REGISTRY}/musl:latest as musl
FROM ${REGISTRY}/bootstrap:latest as build
ENV SRC_SITE https://ftp.gnu.org/gnu/make ENV SRC_SITE https://ftp.gnu.org/gnu/make
ENV SRC_VERSION 4.4 ENV SRC_VERSION 4.4
@ -22,7 +23,7 @@ RUN set -ex; \
make DESTDIR="/rootfs" install; make DESTDIR="/rootfs" install;
COPY --from=musl /usr/lib/libc.so /rootfs/lib/ld-musl-x86_64.so.1 COPY --from=musl /usr/lib/libc.so /rootfs/lib/ld-musl-x86_64.so.1
FROM scratch FROM scratch as package
COPY --from=build /rootfs / COPY --from=build /rootfs /
ENTRYPOINT ["/usr/bin/make"] ENTRYPOINT ["/usr/bin/make"]
CMD ["--version"] CMD ["--version"]

View File

@ -1,4 +1,5 @@
FROM imgrep/bootstrap:latest as build ARG REGISTRY=local
FROM ${REGISTRY}/bootstrap:latest as build
ENV SRC_SITE http://musl.libc.org ENV SRC_SITE http://musl.libc.org
ENV SRC_VERSION 1.2.4 ENV SRC_VERSION 1.2.4
@ -30,12 +31,12 @@ RUN set -eux; \
RUN set -eux; \ RUN set -eux; \
make DESTDIR=/home/user/rootfs install; \ make DESTDIR=/home/user/rootfs install; \
mkdir -p /home/user/rootfs/usr/bin; \ mkdir -p /home/user/rootfs/usr/bin; \
printf "%s\n%s\n" '#!/bin/sh' 'exec /lib/ld-musl-x86_64.so.1 --list "\$@"' \ printf "%s\n%s\n" '#!/bin/sh' 'exec /lib/ld-musl-x86_64.so.1 --list "$@"' \
> /home/user/rootfs/usr/bin/ldd; \ > /home/user/rootfs/usr/bin/ldd; \
chmod 755 /home/user/rootfs/usr/bin/ldd; \ chmod 755 /home/user/rootfs/usr/bin/ldd; \
mv -f /home/user/rootfs/usr/lib/libc.so /home/user/rootfs/lib/ld-musl-x86_64.so.1; \ mv -f /home/user/rootfs/usr/lib/libc.so /home/user/rootfs/lib/ld-musl-x86_64.so.1; \
ln -sf ld-musl-x86_64.so.1 /home/user/rootfs/lib/libc.musl-x86_64.so.1; \ ln -sf ld-musl-x86_64.so.1 /home/user/rootfs/lib/libc.musl-x86_64.so.1; \
ln -sf ../../lib/ld-musl-x86_64.so.1 /home/user/rootfs/usr/lib/libc.so; ln -sf ../../lib/ld-musl-x86_64.so.1 /home/user/rootfs/usr/lib/libc.so;
FROM scratch FROM scratch as package
COPY --from=build /home/user/rootfs / COPY --from=build /home/user/rootfs /

View File

@ -1,10 +1,11 @@
FROM imgrep/busybox:latest as busybox ARG REGISTRY=local
FROM imgrep/gcc:latest as gcc FROM ${REGISTRY}/busybox:latest as busybox
FROM imgrep/binutils:latest as binutils FROM ${REGISTRY}/gcc:latest as gcc
FROM imgrep/musl:latest as musl FROM ${REGISTRY}/binutils:latest as binutils
FROM imgrep/make:latest as make FROM ${REGISTRY}/musl:latest as musl
FROM imgrep/openssl:latest as openssl FROM ${REGISTRY}/make:latest as make
FROM imgrep/python:latest as python FROM ${REGISTRY}/openssl:latest as openssl
FROM ${REGISTRY}/python:latest as python
FROM busybox as build FROM busybox as build
ENV SRC_SITE=https://github.com/martine/ninja/archive/ ENV SRC_SITE=https://github.com/martine/ninja/archive/
@ -34,7 +35,7 @@ RUN set -eux; \
COPY --from=gcc /usr/lib64/* /home/user/rootfs/usr/lib/ COPY --from=gcc /usr/lib64/* /home/user/rootfs/usr/lib/
COPY --from=musl . /home/user/rootfs/ COPY --from=musl . /home/user/rootfs/
FROM scratch FROM scratch as package
COPY --from=build /home/user/rootfs / COPY --from=build /home/user/rootfs /
USER 100:100 USER 100:100
ENTRYPOINT ["/usr/bin/ninja"] ENTRYPOINT ["/usr/bin/ninja"]

View File

@ -1,10 +1,11 @@
FROM imgrep/busybox:latest as busybox ARG REGISTRY=local
FROM imgrep/gcc:latest as gcc FROM ${REGISTRY}/busybox:latest as busybox
FROM imgrep/binutils:latest as binutils FROM ${REGISTRY}/gcc:latest as gcc
FROM imgrep/musl:latest as musl FROM ${REGISTRY}/binutils:latest as binutils
FROM imgrep/make:latest as make FROM ${REGISTRY}/musl:latest as musl
FROM imgrep/perl:latest as perl FROM ${REGISTRY}/make:latest as make
FROM imgrep/linux-headers:latest as linux-headers FROM ${REGISTRY}/perl:latest as perl
FROM ${REGISTRY}/linux-headers:latest as linux-headers
FROM busybox as build FROM busybox as build
COPY --from=gcc . / COPY --from=gcc . /
@ -43,7 +44,7 @@ RUN set -eux; \
make; \ make; \
make DESTDIR=/home/user/rootfs install make DESTDIR=/home/user/rootfs install
FROM scratch FROM scratch as package
COPY --from=build /home/user/rootfs / COPY --from=build /home/user/rootfs /
USER 100:100 USER 100:100
ENTRYPOINT ["/usr/bin/openssl"] ENTRYPOINT ["/usr/bin/openssl"]

View File

@ -1,8 +1,9 @@
FROM imgrep/busybox:latest as busybox ARG REGISTRY=local
FROM imgrep/gcc:latest as gcc FROM ${REGISTRY}/busybox:latest as busybox
FROM imgrep/binutils:latest as binutils FROM ${REGISTRY}/gcc:latest as gcc
FROM imgrep/musl:latest as musl FROM ${REGISTRY}/binutils:latest as binutils
FROM imgrep/make:latest as make FROM ${REGISTRY}/musl:latest as musl
FROM ${REGISTRY}/make:latest as make
FROM busybox as build FROM busybox as build
ENV SRC_SITE=https://www.cpan.org/src/5.0 ENV SRC_SITE=https://www.cpan.org/src/5.0
@ -48,7 +49,7 @@ RUN set -eux; \
make DESTDIR=/home/user/rootfs install make DESTDIR=/home/user/rootfs install
COPY --from=musl /usr/lib/libc.so /home/user/rootfs/lib/ld-musl-x86_64.so.1 COPY --from=musl /usr/lib/libc.so /home/user/rootfs/lib/ld-musl-x86_64.so.1
FROM scratch FROM scratch as package
COPY --from=build /home/user/rootfs / COPY --from=build /home/user/rootfs /
USER 100:100 USER 100:100
ENTRYPOINT ["/usr/bin/perl"] ENTRYPOINT ["/usr/bin/perl"]

View File

@ -1,8 +1,9 @@
FROM imgrep/busybox:latest as busybox ARG REGISTRY=local
FROM imgrep/gcc:latest as gcc FROM ${REGISTRY}/busybox:latest as busybox
FROM imgrep/binutils:latest as binutils FROM ${REGISTRY}/gcc:latest as gcc
FROM imgrep/musl:latest as musl FROM ${REGISTRY}/binutils:latest as binutils
FROM imgrep/make:latest as make FROM ${REGISTRY}/musl:latest as musl
FROM ${REGISTRY}/make:latest as make
FROM busybox as build FROM busybox as build
ENV SRC_SITE=https://distfiles.ariadne.space/pkgconf/ ENV SRC_SITE=https://distfiles.ariadne.space/pkgconf/
@ -24,7 +25,7 @@ RUN make DESTDIR=/home/user/rootfs install
RUN ln -s pkgconf /home/user/rootfs/usr/bin/pkg-config RUN ln -s pkgconf /home/user/rootfs/usr/bin/pkg-config
COPY --from=musl /usr/lib/libc.so /home/user/rootfs/lib/ld-musl-x86_64.so.1 COPY --from=musl /usr/lib/libc.so /home/user/rootfs/lib/ld-musl-x86_64.so.1
FROM scratch FROM scratch as package
COPY --from=build /home/user/rootfs / COPY --from=build /home/user/rootfs /
ENTRYPOINT ["/usr/bin/pkgconf"] ENTRYPOINT ["/usr/bin/pkgconf"]
CMD ["--version"] CMD ["--version"]

View File

@ -1,5 +1,6 @@
FROM imgrep/busybox:latest as busybox ARG REGISTRY=local
FROM imgrep/python:latest as python FROM ${REGISTRY}/busybox:latest as busybox
FROM ${REGISTRY}/python:latest as python
FROM busybox as build FROM busybox as build
ENV SRC_SITE=https://pypi.io/packages/source/s/setuptools ENV SRC_SITE=https://pypi.io/packages/source/s/setuptools
@ -15,5 +16,5 @@ RUN set -eux; \
python3 setup.py install --root=/home/user/rootfs; \ python3 setup.py install --root=/home/user/rootfs; \
ls -Rlah /home/user/rootfs ls -Rlah /home/user/rootfs
FROM scratch FROM scratch as package
COPY --from=build /home/user/rootfs / COPY --from=build /home/user/rootfs /

View File

@ -1,9 +1,10 @@
FROM imgrep/busybox:latest as busybox ARG REGISTRY=local
FROM imgrep/gcc:latest as gcc FROM ${REGISTRY}/busybox:latest as busybox
FROM imgrep/binutils:latest as binutils FROM ${REGISTRY}/gcc:latest as gcc
FROM imgrep/musl:latest as musl FROM ${REGISTRY}/binutils:latest as binutils
FROM imgrep/make:latest as make FROM ${REGISTRY}/musl:latest as musl
FROM imgrep/openssl:latest as openssl FROM ${REGISTRY}/make:latest as make
FROM ${REGISTRY}/openssl:latest as openssl
FROM busybox as build FROM busybox as build
ENV SRC_SITE=https://www.python.org/ftp/python ENV SRC_SITE=https://www.python.org/ftp/python
@ -34,7 +35,7 @@ RUN set -eux; \
RUN ln -s /usr/bin/python3 /home/user/rootfs/usr/bin/python RUN ln -s /usr/bin/python3 /home/user/rootfs/usr/bin/python
COPY --from=musl . /home/user/rootfs/ COPY --from=musl . /home/user/rootfs/
FROM scratch FROM scratch as package
COPY --from=build /home/user/rootfs / COPY --from=build /home/user/rootfs /
USER 100:100 USER 100:100
ENTRYPOINT ["/usr/bin/python"] ENTRYPOINT ["/usr/bin/python"]

View File

@ -1,9 +1,10 @@
FROM imgrep/busybox:latest as busybox ARG REGISTRY=local
FROM imgrep/gcc:latest as gcc FROM ${REGISTRY}/busybox:latest as busybox
FROM imgrep/binutils:latest as binutils FROM ${REGISTRY}/gcc:latest as gcc
FROM imgrep/musl:latest as musl FROM ${REGISTRY}/binutils:latest as binutils
FROM imgrep/make:latest as make FROM ${REGISTRY}/musl:latest as musl
FROM imgrep/bash:latest as bash FROM ${REGISTRY}/make:latest as make
FROM ${REGISTRY}/bash:latest as bash
FROM busybox as build FROM busybox as build
ENV SRC_SITE=https://ftp.gnu.org/gnu/sed ENV SRC_SITE=https://ftp.gnu.org/gnu/sed
@ -24,7 +25,7 @@ RUN set -eux; \
RUN make DESTDIR=/home/user/rootfs install RUN make DESTDIR=/home/user/rootfs install
COPY --from=musl /usr/lib/libc.so /home/user/rootfs/lib/ld-musl-x86_64.so.1 COPY --from=musl /usr/lib/libc.so /home/user/rootfs/lib/ld-musl-x86_64.so.1
FROM scratch FROM scratch as package
COPY --from=build /home/user/rootfs / COPY --from=build /home/user/rootfs /
ENTRYPOINT ["/bin/sed"] ENTRYPOINT ["/bin/sed"]
CMD ["--version"] CMD ["--version"]

View File

@ -1,16 +0,0 @@
FROM ocirep/busybox as build
COPY --from=ocirep/gcc . /
COPY --from=ocirep/musl . /
COPY --from=ocirep/binutils . /
COPY . .
RUN set -eux; \
gcc main.c -static -o main; \
mkdir -p $HOME/rootfs/etc; \
echo "nogroup:*:100:nobody" > ~/rootfs/etc/group; \
echo "nobody:*:100:100:::" > ~/rootfs/etc/passwd; \
cp main $HOME/rootfs/
FROM scratch
COPY --from=build --chown=100:100 /home/user/rootfs /
USER 100:100
ENTRYPOINT ["/main"]

View File

@ -1,8 +1,9 @@
FROM imgrep/busybox:latest as busybox ARG REGISTRY=local
FROM imgrep/gcc:latest as gcc FROM ${REGISTRY}/busybox:latest as busybox
FROM imgrep/binutils:latest as binutils FROM ${REGISTRY}/gcc:latest as gcc
FROM imgrep/musl:latest as musl FROM ${REGISTRY}/binutils:latest as binutils
FROM imgrep/make:latest as make FROM ${REGISTRY}/musl:latest as musl
FROM ${REGISTRY}/make:latest as make
FROM busybox as build FROM busybox as build
COPY --from=gcc . / COPY --from=gcc . /
@ -24,5 +25,5 @@ RUN set -eux; \
make; make;
RUN make DESTDIR=/home/user/rootfs install RUN make DESTDIR=/home/user/rootfs install
FROM scratch FROM scratch as package
COPY --from=build /home/user/rootfs / COPY --from=build /home/user/rootfs /