feat: glibc-gcc wrapper and specs
This commit is contained in:
parent
b253654485
commit
70d4422bc4
5 changed files with 55 additions and 43 deletions
|
@ -15,8 +15,6 @@ FROM fetch AS build
|
|||
|
||||
COPY --from=stagex/busybox . /
|
||||
COPY --from=stagex/musl . /
|
||||
# RUN rm -rf /usr/include
|
||||
|
||||
COPY --from=stagex/binutils . /
|
||||
COPY --from=stagex/bison . /
|
||||
COPY --from=stagex/gawk . /
|
||||
|
@ -28,8 +26,8 @@ COPY --from=stagex/make . /
|
|||
COPY --from=stagex/python . /
|
||||
RUN tar -xzf ${SRC_FILE}
|
||||
WORKDIR glibc-${VERSION}
|
||||
COPY --from=stagex/linux-headers /usr/include /usr/include/x86_64-linux-gnu
|
||||
ENV _TRIPLE=x86_64-linux-gnu
|
||||
COPY --from=stagex/linux-headers /usr/include /usr/include/${ARCH}-linux-gnu
|
||||
ENV _TRIPLE=${ARCH}-linux-gnu
|
||||
ENV _LIBDIR=/usr/lib/${_TRIPLE}
|
||||
ENV _INCDIR=/usr/include/${_TRIPLE}
|
||||
RUN --network=none <<-EOF
|
||||
|
@ -64,16 +62,16 @@ RUN --network=none <<-EOF
|
|||
set -eux
|
||||
cd build
|
||||
make DESTDIR=/rootfs install
|
||||
mkdir -p /rootfs/usr/lib/
|
||||
mv /rootfs/lib64/* /rootfs/usr/lib/
|
||||
rmdir /rootfs/lib64
|
||||
mv /rootfs/sbin/* /rootfs/usr/bin
|
||||
mv /rootfs/lib64 /rootfs/usr/lib64-pre-move
|
||||
rmdir /rootfs/sbin
|
||||
# mkdir -p /rootfs/usr/bin /rootfs/usr/lib
|
||||
# rm -rf /rootfs/lib
|
||||
# ln -sf /usr/lib/ld-musl-${ARCH}.so.1 /rootfs/usr/bin/ldd
|
||||
# mv -f /rootfs/usr/lib/libc.so /rootfs/usr/lib/ld-musl-${ARCH}.so.1
|
||||
# ln -sf ld-musl-${ARCH}.so.1 /rootfs/usr/lib/libc.musl-${ARCH}.so.1
|
||||
# ln -sf /usr/lib/ld-musl-${ARCH}.so.1 /rootfs/usr/lib/libc.so
|
||||
ln -s ${ARCH}-linux-gnu/libc.so /rootfs/usr/lib/ld-gnu-${ARCH}.so.1
|
||||
EOF
|
||||
ADD glibc-gcc /rootfs/usr/bin/
|
||||
ADD glibc-gcc.specs /rootfs/usr/lib/${ARCH}-linux-gnu/glibc-gcc.specs
|
||||
RUN ls -Rlah /rootfs
|
||||
|
||||
FROM scratch AS package
|
||||
COPY --from=stagex/filesystem . /
|
||||
|
|
2
packages/glibc/glibc-gcc
Executable file
2
packages/glibc/glibc-gcc
Executable file
|
@ -0,0 +1,2 @@
|
|||
#!/bin/sh
|
||||
exec "${REALGCC:-x86_64-linux-musl-gcc}" "$@" -specs "/usr/lib/x86_64-linux-gnu/glibc-gcc.specs"
|
32
packages/glibc/glibc-gcc.specs
Normal file
32
packages/glibc/glibc-gcc.specs
Normal file
|
@ -0,0 +1,32 @@
|
|||
%rename cpp_options old_cpp_options
|
||||
|
||||
*cpp_options:
|
||||
-nostdinc -isystem /usr/include/x86_64-linux-gnu -isystem include%s %(old_cpp_options)
|
||||
|
||||
*cc1:
|
||||
%(cc1_cpu) -nostdinc -isystem /usr/include/x86_64-linux-gnu -isystem include%s
|
||||
|
||||
*link_libgcc:
|
||||
-L/usr/lib/x86_64-linux-gnu -L .%s
|
||||
|
||||
*libgcc:
|
||||
libgcc.a%s %:if-exists(libgcc_eh.a%s)
|
||||
|
||||
*startfile:
|
||||
%{!shared: /usr/lib/x86_64-linux-gnu/Scrt1.o} /usr/lib/x86_64-linux-gnu/crti.o crtbeginS.o%s
|
||||
|
||||
*endfile:
|
||||
crtendS.o%s /usr/lib/x86_64-linux-gnu/crtn.o
|
||||
|
||||
*link:
|
||||
-dynamic-linker -nostdlib %{shared:-shared} %{static:-static} %{rdynamic:-export-dynamic}
|
||||
|
||||
*esp_link:
|
||||
|
||||
|
||||
*esp_options:
|
||||
|
||||
|
||||
*esp_cpp_options:
|
||||
|
||||
|
|
@ -1,12 +1,11 @@
|
|||
FROM scratch AS base
|
||||
ARG VERSION=1.76.0
|
||||
ARG VERSION=1.81.0
|
||||
ENV SRC_SITE=https://static.rust-lang.org/dist
|
||||
ENV SRC_HASH=9e5cff033a7f0d2266818982ad90e4d3e4ef8f8ee1715776c6e25073a136c021
|
||||
ENV SRC_HASH=872448febdff32e50c3c90a7e15f9bb2db131d13c588fe9071b0ed88837ccfa7
|
||||
|
||||
FROM base AS fetch
|
||||
COPY --from=stagex/busybox . /
|
||||
ADD --checksum=sha256:${SRC_HASH} ${SRC_SITE}/rustc-${VERSION}-src.tar.gz .
|
||||
#ADD rust rustc-${VERSION}-src
|
||||
|
||||
FROM fetch AS build
|
||||
COPY --from=stagex/binutils . /
|
||||
|
@ -23,27 +22,18 @@ COPY --from=stagex/gcc . /
|
|||
COPY --from=stagex/libunwind . /
|
||||
COPY --from=stagex/musl . /
|
||||
COPY --from=stagex/rust . /
|
||||
|
||||
COPY --from=stagex/glibc . /
|
||||
|
||||
COPY --from=stagex/curl . /
|
||||
COPY --from=stagex/ca-certificates . /
|
||||
COPY --from=stagex/llvm . /
|
||||
|
||||
COPY --from=stagex/llvm16 . /
|
||||
RUN mkdir -p $HOME/.cargo/registry/src/index.crates.io-6f17d22bba15001f/
|
||||
|
||||
#ADD no-default-static.patch .
|
||||
ADD glibc.patch .
|
||||
RUN tar -xzf rustc-${VERSION}-src.tar.gz
|
||||
WORKDIR rustc-${VERSION}-src
|
||||
ADD *.patch .
|
||||
RUN <<EOF
|
||||
set -eux
|
||||
#PATCHES=no-default-static
|
||||
PATCHES=glibc
|
||||
PREFIX=/rust-${VERSION}/usr
|
||||
tar -xzf rustc-${VERSION}-src.tar.gz
|
||||
cd rustc-${VERSION}-src
|
||||
[[ -z "$PATCHES" ]] || for name in ${PATCHES//,/ }; do
|
||||
patch -p1 < ../${name}.patch
|
||||
done
|
||||
patch -p1 ../glibc.patch
|
||||
./configure \
|
||||
--build="x86_64-unknown-linux-musl" \
|
||||
--host="x86_64-unknown-linux-musl" \
|
||||
|
@ -57,7 +47,7 @@ RUN <<EOF
|
|||
--enable-vendor \
|
||||
--dist-compression-formats=gz \
|
||||
--python="python3" \
|
||||
--prefix="/rootfs/usr" \
|
||||
--prefix="/usr" \
|
||||
--libdir="/usr/lib/x86_64-linux-gnu" \
|
||||
--sysconfdir="/rootfs/etc" \
|
||||
--release-channel="stable" \
|
||||
|
@ -78,27 +68,17 @@ RUN <<EOF
|
|||
--set="target.x86_64-unknown-linux-gnu.ar=ar" \
|
||||
--set="target.x86_64-unknown-linux-gnu.linker=cc" \
|
||||
--set="target.x86_64-unknown-linux-gnu.musl-libdir=/usr/lib/x86_64-linux-gnu"
|
||||
# un-usrmerge glibc
|
||||
rm /lib64
|
||||
mv /usr/lib64-pre-move /lib64
|
||||
python3 x.py build --stage 0 --target x86_64-unknown-linux-gnu library
|
||||
# RUSTFLAGS from pcsc
|
||||
# export RUSTFLAGS="-L /rustc-1.76.0-src/build/x86_64-unknown-linux-musl/stage0-sysroot/lib64/rustlib/x86_64-unknown-linux-gnu/lib/ -L /rustc-1.76.0-src/build/x86_64-unknown-linux-musl/stage0-sysroot/lib64/rustlib/x86_64-unknown-linux-gnu/lib/self-contained/ -L /usr/lib/x86_64-linux-gnu -L /lib64 -C target-feature=+crt-static"
|
||||
EOF
|
||||
|
||||
FROM build AS test
|
||||
ENV RUSTFLAGS="-L /rustc-1.76.0-src/build/x86_64-unknown-linux-musl/stage0-sysroot/lib64/rustlib/x86_64-unknown-linux-gnu/lib/ -L /rustc-1.76.0-src/build/x86_64-unknown-linux-musl/stage0-sysroot/lib64/rustlib/x86_64-unknown-linux-gnu/lib/self-contained/ -L /usr/lib/x86_64-linux-gnu -L /lib64 -C target-feature=+crt-static"
|
||||
RUN <<EOF
|
||||
set -eux
|
||||
cargo new --bin hello_world
|
||||
cd hello_world
|
||||
cargo run --release --target x86_64-unknown-linux-gnu
|
||||
EOF
|
||||
|
||||
FROM build AS install
|
||||
RUN <<-EOF
|
||||
mkdir /rootfs
|
||||
cp -r /rustc-1.76.0-src/build/x86_64-unknown-linux-musl/stage0-sysroot/lib64/rustlib/x86_64-unknown-linux-gnu /usr/lib/rustlib/x86_64-unknown-linux-gnu
|
||||
mkdir -p /rootfs/usr/lib/rustlib/
|
||||
cp -r \
|
||||
/rustc-${VERSION}-src/build/x86_64-unknown-linux-musl/stage0-sysroot/lib64/rustlib/x86_64-unknown-linux-gnu \
|
||||
/rootfs/usr/lib/rustlib/
|
||||
EOF
|
||||
|
||||
FROM stagex/filesystem AS package
|
Loading…
Reference in a new issue