Skip to content

Commit 90422a4

Browse files
authored
Merge pull request #189 from crazy-max/ld-dockerfile-updates
ld: dockerfile enhancements
2 parents 38e6621 + 74dc16c commit 90422a4

File tree

1 file changed

+171
-92
lines changed

1 file changed

+171
-92
lines changed

src/ld/Dockerfile

Lines changed: 171 additions & 92 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
#syntax=docker/dockerfile:1.8
1+
#syntax=docker/dockerfile:1
22
#check=error=true
33

44
ARG ALPINE_VERSION=3.21
@@ -16,41 +16,54 @@ RUN apk add --no-cache git clang lld cmake make python3 bash
1616
COPY --link --from=xx / /
1717
ARG LIBTAPI_VERSION
1818
WORKDIR /work
19-
RUN git clone https://github.com/tpoechtrager/apple-libtapi --depth 1 -b ${LIBTAPI_VERSION}
19+
ADD "https://github.com/tpoechtrager/apple-libtapi.git#${LIBTAPI_VERSION}" apple-libtapi
2020
WORKDIR apple-libtapi
2121
RUN --mount=target=/tmp/libtapi-cmake-args.patch,source=libtapi-cmake-args.patch \
2222
git apply /tmp/libtapi-cmake-args.patch
2323
RUN apk add --no-cache gcc g++
24-
RUN NOMAKE=1 CMAKE_EXTRA_ARGS="$(xx-clang --print-cmake-defines) -DCMAKE_CXX_FLAGS=-D_LARGEFILE64_SOURCE" ./build.sh && \
25-
cd build && \
26-
make -j $(nproc) clang-tblgen llvm-tblgen && \
27-
cp -a bin/clang-tblgen bin/llvm-tblgen /usr/bin/ && \
28-
cd .. && rm -rf build
24+
RUN <<EOT
25+
set -ex
26+
NOMAKE=1 CMAKE_EXTRA_ARGS="$(xx-clang --print-cmake-defines) -DCMAKE_CXX_FLAGS=-D_LARGEFILE64_SOURCE" ./build.sh
27+
cd build
28+
make -j $(nproc) clang-tblgen llvm-tblgen
29+
cp -a bin/clang-tblgen bin/llvm-tblgen /usr/bin/
30+
cd ..
31+
rm -rf build
32+
EOT
2933

3034
FROM libtapi-base AS libtapi
3135
ARG TARGETPLATFORM
3236
RUN xx-apk add g++
33-
RUN INSTALLPREFIX=/opt/libtapi/ \
34-
CMAKE_EXTRA_ARGS="-DCLANG_TABLEGEN_EXE=/usr/bin/clang-tblgen -DLLVM_TABLEGEN=/usr/bin/llvm-tblgen -DCLANG_TABLEGEN=/usr/bin/clang-tblgen -DCMAKE_CXX_FLAGS=-D_LARGEFILE64_SOURCE $(xx-clang --print-cmake-defines)" \
35-
./build.sh && ./install.sh && \
36-
xx-verify /opt/libtapi/lib/libtapi.so && \
37-
rm -rf build
37+
RUN <<EOT
38+
set -ex
39+
export INSTALLPREFIX=/opt/libtapi/
40+
CMAKE_EXTRA_ARGS="-DCLANG_TABLEGEN_EXE=/usr/bin/clang-tblgen -DLLVM_TABLEGEN=/usr/bin/llvm-tblgen -DCLANG_TABLEGEN=/usr/bin/clang-tblgen -DCMAKE_CXX_FLAGS=-D_LARGEFILE64_SOURCE $(xx-clang --print-cmake-defines)" ./build.sh
41+
./install.sh
42+
xx-verify /opt/libtapi/lib/libtapi.so
43+
rm -rf build
44+
EOT
3845

3946
FROM libtapi-base AS libtapi-static
4047
ARG TARGETPLATFORM
4148
RUN xx-apk add g++
42-
RUN export INSTALLPREFIX=/opt/libtapi/ \
43-
CMAKE_EXTRA_ARGS="-DCLANG_TABLEGEN_EXE=/usr/bin/clang-tblgen -DLLVM_TABLEGEN=/usr/bin/llvm-tblgen -DCLANG_TABLEGEN=/usr/bin/clang-tblgen -DCMAKE_CXX_FLAGS=-D_LARGEFILE64_SOURCE $(xx-clang --print-cmake-defines)" \
44-
&& sed -i s/SHARED/STATIC/g src/tapi/tools/libtapi/CMakeLists.txt && \
45-
./build.sh && cd build && make -j $(nproc) LLVMObject tapiCore LLVMSupport LLVMDemangle LLVMMC LLVMBinaryFormat tapiObjCMetadata tapiNoInits LLVMTextAPI install-tapi-headers && \
46-
mkdir /opt/libtapi/lib && cp -a ./lib/*.a /opt/libtapi/lib/ && \
47-
cd .. && rm -rf build
49+
RUN <<EOT
50+
set -x
51+
export INSTALLPREFIX=/opt/libtapi/
52+
sed -i s/SHARED/STATIC/g src/tapi/tools/libtapi/CMakeLists.txt
53+
CMAKE_EXTRA_ARGS="-DCLANG_TABLEGEN_EXE=/usr/bin/clang-tblgen -DLLVM_TABLEGEN=/usr/bin/llvm-tblgen -DCLANG_TABLEGEN=/usr/bin/clang-tblgen -DCMAKE_CXX_FLAGS=-D_LARGEFILE64_SOURCE $(xx-clang --print-cmake-defines)" ./build.sh
54+
cd build
55+
make -j $(nproc) LLVMObject tapiCore LLVMSupport LLVMDemangle LLVMMC LLVMBinaryFormat tapiObjCMetadata tapiNoInits LLVMTextAPI install-tapi-headers
56+
mkdir /opt/libtapi/lib
57+
cp -a ./lib/*.a /opt/libtapi/lib/
58+
cd ..
59+
rm -rf build
60+
EOT
4861

4962
FROM --platform=$BUILDPLATFORM alpine:${ALPINE_VERSION} AS aports
5063
RUN apk add git
5164
WORKDIR /work
5265
ARG APORTS_VERSION
53-
RUN git clone --depth 1 -b ${APORTS_VERSION} https://github.com/alpinelinux/aports.git
66+
ADD "https://github.com/alpinelinux/aports.git#${APORTS_VERSION}" aports
5467

5568
FROM scratch AS patches-binutils
5669
COPY --from=aports /work/aports/main/binutils/*.patch /
@@ -64,19 +77,20 @@ RUN apk add git clang lld cmake samurai patch
6477
ARG LIBDISPATCH_VERSION
6578
COPY --link --from=xx / /
6679
WORKDIR /work
67-
RUN --mount=target=/patches,from=patches-libdispatch \
68-
git clone -b ${LIBDISPATCH_VERSION} --depth 1 https://github.com/apple/swift-corelibs-libdispatch.git && \
69-
cd swift-corelibs-libdispatch && \
70-
for f in /patches/*; do patch -p1 < $f; done
80+
ADD "https://github.com/apple/swift-corelibs-libdispatch.git#${LIBDISPATCH_VERSION}" swift-corelibs-libdispatch
7181
WORKDIR swift-corelibs-libdispatch
82+
RUN --mount=target=/patches,from=patches-libdispatch \
83+
for f in /patches/*; do patch -p1 < $f; done
7284
ARG TARGETPLATFORM
7385
RUN xx-apk add --no-cache gcc g++ musl-dev linux-headers bsd-compat-headers
74-
RUN cmake $(xx-clang --print-cmake-defines) -G Ninja -B build -DCMAKE_INSTALL_PREFIX=/out/libdispatch -DCMAKE_INSTALL_LIBDIR=lib -DBUILD_SHARED_LIBS=False -DCMAKE_BUILD_TYPE=MinSizeRel && \
75-
cmake --build build && \
76-
cmake --install build && \
77-
rm -rf build
78-
RUN ls -l /out/libdispatch/lib && \
79-
[ -f /out/libdispatch/lib/libdispatch.a ] && [ -f /out/libdispatch/lib/libBlocksRuntime.a ]
86+
RUN <<EOT
87+
set -ex
88+
cmake $(xx-clang --print-cmake-defines) -G Ninja -B build -DCMAKE_INSTALL_PREFIX=/out/libdispatch -DCMAKE_INSTALL_LIBDIR=lib -DBUILD_SHARED_LIBS=False -DCMAKE_BUILD_TYPE=MinSizeRel
89+
cmake --build build
90+
cmake --install build
91+
rm -rf build
92+
EOT
93+
RUN ls -l /out/libdispatch/lib && [ -f /out/libdispatch/lib/libdispatch.a ] && [ -f /out/libdispatch/lib/libBlocksRuntime.a ]
8094

8195
FROM scratch AS libdispatch
8296
COPY --from=libdispatch-base /out/libdispatch/lib/*.a /lib/
@@ -85,9 +99,8 @@ FROM --platform=${BUILDPLATFORM} alpine:${ALPINE_VERSION} AS cctools-base
8599
RUN apk add --no-cache git clang lld make llvm llvm-dev libdispatch-dev
86100
COPY --link --from=xx / /
87101
WORKDIR /work
88-
ARG CCTOOLS_REPO=https://github.com/tpoechtrager/cctools-port
89102
ARG CCTOOLS_VERSION
90-
RUN git clone $CCTOOLS_REPO -b ${CCTOOLS_VERSION}
103+
ADD "https://github.com/tpoechtrager/cctools-port.git#${CCTOOLS_VERSION}" cctools-port
91104
WORKDIR cctools-port/cctools
92105
ARG TARGETPLATFORM
93106
RUN --mount=target=/libdispatch,from=libdispatch \
@@ -96,53 +109,65 @@ RUN --mount=target=/libdispatch,from=libdispatch \
96109

97110
FROM cctools-base AS lipo-base
98111
ARG LIPO_CFLAGS="-Wl,-s -Os"
99-
RUN export CFLAGS=${LIPO_CFLAGS} && \
100-
./configure --host=$(xx-clang --print-target-triple) LDFLAGS=--static && \
101-
make -C libmacho && make -C libstuff && make -C misc lipo && \
102-
xx-verify --static misc/lipo
112+
RUN <<EOT
113+
set -ex
114+
export CFLAGS=${LIPO_CFLAGS}
115+
./configure --host=$(xx-clang --print-target-triple) LDFLAGS=--static
116+
make -C libmacho
117+
make -C libstuff
118+
make -C misc lipo
119+
xx-verify --static misc/lipo
120+
EOT
103121

104122
FROM scratch AS lipo-static
105123
COPY --from=lipo-base /work/cctools-port/cctools/misc/lipo /
106124

107125
FROM cctools-base AS codesign-allocate-base
108126
ARG CODESIGN_CFLAGS="-Wl,-s -Os"
109-
RUN export CFLAGS=${CODESIGN_CFLAGS} && \
110-
./configure --host=$(xx-clang --print-target-triple) LDFLAGS=--static && \
111-
make -C libmacho && make -C libstuff && make -C misc codesign_allocate && \
112-
xx-verify --static misc/codesign_allocate
113-
127+
RUN <<EOT
128+
export CFLAGS=${CODESIGN_CFLAGS}
129+
./configure --host=$(xx-clang --print-target-triple) LDFLAGS=--static
130+
make -C libmacho
131+
make -C libstuff
132+
make -C misc codesign_allocate
133+
xx-verify --static misc/codesign_allocate
134+
EOT
114135
FROM scratch AS codesign-allocate-static
115136
COPY --from=codesign-allocate-base /work/cctools-port/cctools/misc/codesign_allocate /
116137

117138
FROM cctools-base AS ld64-static-base
118139
# for LTO
119140
RUN apk add llvm-dev
120141
ARG LD64_CXXFLAGS="-Wl,-s -Os"
121-
RUN --mount=from=libtapi-static,source=/opt/libtapi,target=/opt/libtapi \
122-
export CXXFLAGS=${LD64_CXXFLAGS} && ./configure --with-libtapi=/opt/libtapi --host=$(xx-clang --print-target-triple) &&\
123-
sed -i 's/-ltapi/-ltapi -ltapiCore -ltapiObjCMetadata -lLLVMObject -lLLVMTextAPI -lLLVMSupport -lLLVMDemangle -lLLVMMC -lLLVMBinaryFormat --static/' ld64/src/ld/Makefile && \
124-
make -j $(nproc) -C ld64 && \
125-
xx-verify --static ld64/src/ld/ld
126-
142+
RUN --mount=from=libtapi-static,source=/opt/libtapi,target=/opt/libtapi <<EOT
143+
set -ex
144+
export CXXFLAGS=${LD64_CXXFLAGS}
145+
./configure --with-libtapi=/opt/libtapi --host=$(xx-clang --print-target-triple)
146+
sed -i 's/-ltapi/-ltapi -ltapiCore -ltapiObjCMetadata -lLLVMObject -lLLVMTextAPI -lLLVMSupport -lLLVMDemangle -lLLVMMC -lLLVMBinaryFormat --static/' ld64/src/ld/Makefile
147+
make -j $(nproc) -C ld64
148+
xx-verify --static ld64/src/ld/ld
149+
EOT
127150
FROM --platform=${BUILDPLATFORM} alpine:${ALPINE_VERSION} AS sigtool-base
128151
RUN apk add --no-cache git clang lld cmake make pkgconf
129152
COPY --from=xx / /
130153
WORKDIR /work
131154
ARG SIGTOOL_VERSION
132-
RUN git clone https://github.com/thefloweringash/sigtool && \
133-
cd sigtool && \
134-
git checkout ${SIGTOOL_VERSION}
155+
ADD "https://github.com/thefloweringash/sigtool.git#${SIGTOOL_VERSION}" sigtool
135156
WORKDIR sigtool
136157
RUN --mount=target=/tmp/sigtool-static.patch,source=sigtool-static.patch \
137158
git apply /tmp/sigtool-static.patch
138159
ARG TARGETPLATFORM
139160
RUN xx-apk add --no-cache g++ openssl-dev openssl-libs-static
140161
ARG SIGTOOL_CXXFLAGS="-Wl,-s -Os"
141-
RUN export CXXFLAGS=${SIGTOOL_CXXFLAGS} && \
142-
mkdir build && cd build && \
143-
cmake -DBUILD_SHARED_LIBS=False $(xx-clang --print-cmake-defines) -DCMAKE_EXE_LINKER_FLAGS=-static .. && \
144-
make -j $(nproc) && \
145-
xx-verify --static ./sigtool ./codesign
162+
RUN <<EOT
163+
set -ex
164+
export CXXFLAGS=${SIGTOOL_CXXFLAGS}
165+
mkdir build
166+
cd build
167+
cmake -DBUILD_SHARED_LIBS=False $(xx-clang --print-cmake-defines) -DCMAKE_EXE_LINKER_FLAGS=-static ..
168+
make -j $(nproc)
169+
xx-verify --static ./sigtool ./codesign
170+
EOT
146171

147172
FROM scratch AS sigtool-static
148173
COPY --link --from=codesign-allocate-static / /
@@ -174,13 +199,15 @@ FROM cctools-base AS cctools-build
174199
RUN apk add llvm-dev
175200
ARG CCTOOLS_CXXFLAGS="-Wl,-s -Os"
176201
ARG CCTOOLS_CFLAGS="-Wl,-s -Os"
177-
RUN --mount=from=libtapi,source=/opt/libtapi,target=/opt/libtapi \
178-
# copy to /usr/bin for clean rpath. TODO: try static build
179-
cp -a /opt/libtapi/. /usr/ && \
180-
export CFLAGS=${CCTOOLS_CFLAGS} CXXFLAGS=${CCTOOLS_CXXFLAGS} && \
181-
./configure --prefix=/opt/cctools --with-libtapi=/opt/libtapi --host=$(xx-clang --print-target-triple) && \
182-
make -j $(nproc) install && \
183-
xx-verify /opt/cctools/bin/ld
202+
RUN --mount=from=libtapi,source=/opt/libtapi,target=/opt/libtapi <<EOT
203+
set -ex
204+
# copy to /usr/bin for clean rpath. TODO: try static build
205+
cp -a /opt/libtapi/. /usr/
206+
export CFLAGS=${CCTOOLS_CFLAGS} CXXFLAGS=${CCTOOLS_CXXFLAGS}
207+
./configure --prefix=/opt/cctools --with-libtapi=/opt/libtapi --host=$(xx-clang --print-target-triple)
208+
make -j $(nproc) install
209+
xx-verify /opt/cctools/bin/ld
210+
EOT
184211

185212
FROM scratch AS cctools
186213
COPY --link --from=libtapi /opt/libtapi/lib/*.so /usr/lib/
@@ -193,17 +220,22 @@ WORKDIR /work
193220
COPY --link --from=xx / /
194221
COPY --link --from=patches-binutils / patches/
195222
ARG BINUTILS_VERSION
196-
RUN wget https://ftp.gnu.org/gnu/binutils/binutils-${BINUTILS_VERSION}.tar.gz
223+
RUN wget https://sourceware.org/pub/binutils/releases/binutils-${BINUTILS_VERSION}.tar.gz
197224
ARG TARGETPLATFORM
198225
# first build version for current architecture that is used then cross compiling
199-
RUN export CC=xx-clang CXX=xx-clang++ LD=lld BINUTILS_TARGET=${TARGETPLATFORM} && unset TARGETPLATFORM && \
200-
tar xf binutils-${BINUTILS_VERSION}.tar.gz && \
201-
cd binutils-${BINUTILS_VERSION} && \
202-
for f in ../patches/*; do patch -p1 < $f; done && \
203-
./configure --disable-separate-code --libdir=/lib --prefix=/usr --disable-multilib --enable-deterministic-archives --target=$(TARGETPLATFORM=$BINUTILS_TARGET xx-info) --disable-nls --disable-gprofng && \
204-
make -j $(nproc) && \
205-
make install && \
206-
cd .. && rm -rf binutils-${BINUTILS_VERSION}
226+
RUN <<EOT
227+
set -ex
228+
export CC=xx-clang CXX=xx-clang++ LD=lld BINUTILS_TARGET=${TARGETPLATFORM}
229+
unset TARGETPLATFORM
230+
tar xf binutils-${BINUTILS_VERSION}.tar.gz
231+
cd binutils-${BINUTILS_VERSION}
232+
for f in ../patches/*; do patch -p1 < $f; done
233+
./configure --disable-separate-code --libdir=/lib --prefix=/usr --disable-multilib --enable-deterministic-archives --target=$(TARGETPLATFORM=$BINUTILS_TARGET xx-info) --disable-nls --disable-gprofng
234+
make -j $(nproc)
235+
make install
236+
cd ..
237+
rm -rf binutils-${BINUTILS_VERSION}
238+
EOT
207239
RUN xx-apk add --no-cache musl-dev gcc g++ zlib-dev zstd-dev
208240

209241
FROM binutils-base0 AS ld-base
@@ -215,18 +247,42 @@ ARG LD_TARGET=${TARGETOS}-${TARGETARCH}${TARGETVARIANT}
215247
ARG LD_CFLAGS="-Wl,-s -Os"
216248
# BINUTILS_CONFIG defines extra options passed to binutils configure script
217249
ARG BINUTILS_CONFIG=
218-
RUN export CC=xx-clang CXX=xx-clang++ CFLAGS="$LD_CFLAGS --static" CXXFLAGS="$LD_CFLAGS" LD_TARGET_TRIPLE=$(TARGETPLATFORM= TARGETPAIR=$LD_TARGET xx-info) XX_CC_PREFER_LINKER=ld && \
219-
tar xf binutils-${BINUTILS_VERSION}.tar.gz && \
220-
cd binutils-${BINUTILS_VERSION} && \
221-
for f in ../patches/*; do patch -p1 < $f; done && \
222-
./configure --disable-separate-code --libdir=/lib --prefix=/ --disable-multilib --enable-deterministic-archives --target=$LD_TARGET_TRIPLE --host $(xx-clang --print-target-triple) --disable-nls --disable-gold --enable-relro --disable-plugins --with-pic --with-mmap --with-system-zlib --disable-gas --disable-elfcpp --disable-binutils --disable-gprofng $BINUTILS_CONFIG && \
223-
make -j $(nproc) && \
224-
make install && \
225-
cd .. && rm -rf binutils-${BINUTILS_VERSION} && \
226-
xx-verify --static /$LD_TARGET_TRIPLE/bin/ld && \
227-
mkdir -p /out && mv /$LD_TARGET_TRIPLE/bin/ld /out/$LD_TARGET-ld && \
228-
mkdir -p /out/ldscripts && mv /$LD_TARGET_TRIPLE/lib/ldscripts/* /out/ldscripts/
229-
250+
RUN <<EOT
251+
set -ex
252+
export CC=xx-clang CXX=xx-clang++ CFLAGS="$LD_CFLAGS --static" CXXFLAGS="$LD_CFLAGS" LD_TARGET_TRIPLE=$(TARGETPLATFORM= TARGETPAIR=$LD_TARGET xx-info) XX_CC_PREFER_LINKER=ld
253+
tar xf binutils-${BINUTILS_VERSION}.tar.gz
254+
cd binutils-${BINUTILS_VERSION}
255+
for f in ../patches/*; do patch -p1 < $f; done
256+
./configure \
257+
--disable-separate-code \
258+
--libdir=/lib \
259+
--prefix=/ \
260+
--disable-multilib \
261+
--enable-deterministic-archives \
262+
--target=$LD_TARGET_TRIPLE \
263+
--host=$(xx-clang --print-target-triple) \
264+
--disable-nls \
265+
--disable-gold \
266+
--enable-relro \
267+
--disable-plugins \
268+
--with-pic \
269+
--with-mmap \
270+
--with-system-zlib \
271+
--disable-gas \
272+
--disable-elfcpp \
273+
--disable-binutils \
274+
--disable-gprofng \
275+
$BINUTILS_CONFIG
276+
make -j $(nproc)
277+
make install
278+
cd ..
279+
rm -rf binutils-${BINUTILS_VERSION}
280+
xx-verify --static /$LD_TARGET_TRIPLE/bin/ld
281+
mkdir -p /out
282+
mv /$LD_TARGET_TRIPLE/bin/ld /out/$LD_TARGET-ld
283+
mkdir -p /out/ldscripts
284+
mv /$LD_TARGET_TRIPLE/lib/ldscripts/* /out/ldscripts/
285+
EOT
230286
FROM ld-base AS ld-tgz-base
231287
ARG TARGETOS TARGETARCH TARGETVARIANT
232288
ARG LD_TARGET
@@ -247,15 +303,38 @@ ARG BINUTILS_TARGET=${TARGETOS}-${TARGETARCH}${TARGETVARIANT}
247303
ARG BINUTILS_CFLAGS="-Wl,-s -Os"
248304
# BINUTILS_CONFIG defines extra options passed to binutils configure script
249305
ARG BINUTILS_CONFIG=
250-
RUN export CC=xx-clang CXX=xx-clang++ CFLAGS="$BINUTILS_CFLAGS" CXXFLAGS="$BINUTILS_CFLAGS" && \
251-
tar xf binutils-${BINUTILS_VERSION}.tar.gz && \
252-
cd binutils-${BINUTILS_VERSION} && \
253-
for f in ../patches/*; do patch -p1 < $f; done && \
254-
./configure --disable-separate-code --libdir=/lib --prefix=/out --disable-multilib --enable-deterministic-archives --target=$(TARGETPLATFORM= TARGETPAIR=$BINUTILS_TARGET xx-info) --host $(xx-clang --print-target-triple) --disable-nls --enable-gold --enable-relro --enable-plugins --with-pic --with-mmap --with-system-zlib --disable-gprofng $BINUTILS_CONFIG && \
255-
make -j $(nproc) && \
256-
make install && \
257-
cd .. && rm -rf binutils-${BINUTILS_VERSION} && \
258-
for f in /out/bin/*; do xx-verify $f; done
259-
306+
RUN <<EOT
307+
set -ex
308+
export CC=xx-clang CXX=xx-clang++ CFLAGS="$BINUTILS_CFLAGS" CXXFLAGS="$BINUTILS_CFLAGS"
309+
tar xf binutils-${BINUTILS_VERSION}.tar.gz
310+
cd binutils-${BINUTILS_VERSION}
311+
for f in ../patches/*; do patch -p1 < $f; done
312+
./configure \
313+
--disable-separate-code \
314+
--libdir=/lib \
315+
--prefix=/out \
316+
--disable-multilib \
317+
--enable-deterministic-archives \
318+
--target=$(TARGETPLATFORM= TARGETPAIR=$BINUTILS_TARGET xx-info) \
319+
--host=$(xx-clang --print-target-triple) \
320+
--disable-nls \
321+
--enable-gold \
322+
--enable-relro \
323+
--enable-plugins \
324+
--with-pic \
325+
--with-mmap \
326+
--with-system-zlib \
327+
--disable-gprofng \
328+
$BINUTILS_CONFIG
329+
make -j $(nproc)
330+
make install
331+
cd ..
332+
rm -rf binutils-${BINUTILS_VERSION}
333+
for f in /out/bin/*; do
334+
if ! file "$f" | grep -q 'ASCII text'; then
335+
xx-verify $f
336+
fi
337+
done
338+
EOT
260339
FROM scratch AS binutils
261340
COPY --from=binutils-base /out /usr/

0 commit comments

Comments
 (0)