@@ -97,7 +97,7 @@ function declare_package
97
97
}
98
98
99
99
declare_package static_linux_sdk \
100
- " Swift statically linked SDK for Linux" \
100
+ " Swift Static SDK for Linux" \
101
101
" Apache-2.0" " https://swift.org/install/sdk"
102
102
declare_package swift " swift" " Apache-2.0" " https://swift.org"
103
103
declare_package musl " musl" " MIT" " https://musl.org"
@@ -109,9 +109,13 @@ declare_package curl "curl" "MIT" "https://curl.se"
109
109
declare_package boringssl " boringssl" " OpenSSL AND ISC AND MIT" \
110
110
" https://boringssl.googlesource.com/boringssl/"
111
111
declare_package zlib " zlib" " Zlib" " https://zlib.net"
112
+ declare_package bzip2 " bzip2" " bzip2-1.0.6" " https://sourceware.org/bzip2/"
113
+ declare_package xz " XZ Utils" " 0BSD" " https://tukaani.org/xz"
114
+ declare_package libarchive " libarchive" " BSD-2-Clause" " https://www.libarchive.org"
115
+ declare_package mimalloc " mimalloc" " MIT" " https://microsoft.github.io/mimalloc/"
112
116
113
117
# Parse command line arguments
114
- static_linux_sdk_version=0.0.1
118
+ static_linux_sdk_version=0.1.0
115
119
sdk_name=
116
120
archs=x86_64,aarch64
117
121
build_type=RelWithDebInfo
@@ -233,6 +237,15 @@ boringssl_version=$(describe ${source_dir}/boringssl)
233
237
234
238
zlib_version=$( versionFromTag ${source_dir} /zlib)
235
239
240
+ bzip2_desc=$( describe ${source_dir} /bzip2)
241
+ bzip2_version=${bzip2_desc# bzip2-}
242
+
243
+ libarchive_version=$( versionFromTag ${source_dir} /libarchive)
244
+
245
+ mimalloc_version=$( versionFromTag ${source_dir} /mimalloc)
246
+
247
+ xz_version=$( versionFromTag ${source_dir} /xz)
248
+
236
249
function quiet_pushd {
237
250
pushd " $1 " > /dev/null 2>&1
238
251
}
@@ -258,6 +271,10 @@ echo " - libxml2 ${libxml2_version}"
258
271
echo " - curl ${curl_version} "
259
272
echo " - BoringSSL ${boringssl_version} "
260
273
echo " - zlib ${zlib_version} "
274
+ echo " - bzip2 ${bzip2_version} "
275
+ echo " - xz ${xz_version} "
276
+ echo " - libarchive ${libarchive_version} "
277
+ echo " - mimalloc ${mimalloc_version} "
261
278
262
279
function run() {
263
280
echo " $@ "
@@ -297,6 +314,19 @@ else
297
314
exit 1
298
315
fi
299
316
317
+ echo " Applying Musl security patches... "
318
+ for patch in $( realpath " ${resource_dir} /patches/musl" ) /* ; do
319
+ echo -n " $( basename $patch ) ..."
320
+ if git -C ${source_dir} /musl apply --reverse --check " $patch " > /dev/null 2>&1 ; then
321
+ echo " already patched"
322
+ elif git -C ${source_dir} /musl apply " $patch " > /dev/null 2>&1 ; then
323
+ echo " done"
324
+ else
325
+ echo " failed"
326
+ exit 1
327
+ fi
328
+ done
329
+
300
330
# -----------------------------------------------------------------------
301
331
302
332
header " Patching BoringSSL"
@@ -367,7 +397,7 @@ for arch in $archs; do
367
397
cat > $sdk_root /SDKSettings.json << EOF
368
398
{
369
399
"DisplayName": "Swift SDK for Statically Linked Linux ($arch )",
370
- "Version": "0.0.1 ",
400
+ "Version": "${static_linux_sdk_version} ",
371
401
"VersionMap": {},
372
402
"CanonicalName": "${arch} -swift-linux-musl"
373
403
}
567
597
568
598
# -----------------------------------------------------------------------
569
599
600
+ header " Building mimalloc for $arch "
601
+
602
+ run cmake -G Ninja -S ${source_dir} /mimalloc \
603
+ -B ${build_dir} /$arch /mimalloc \
604
+ -DCMAKE_TOOLCHAIN_FILE=${build_dir} /$arch /toolchain.cmake \
605
+ -DCMAKE_BUILD_TYPE=RelWithDebInfo \
606
+ -DCMAKE_INSTALL_PREFIX=" $sdk_root /usr" \
607
+ -DMI_LIBC_MUSL=ON \
608
+ -DMI_BUILD_SHARED=OFF \
609
+ -DMI_BUILD_STATIC=ON \
610
+ -DMI_BUILD_TESTS=OFF \
611
+ -DMI_INSTALL_TOPLEVEL=ON
612
+
613
+ quiet_pushd ${build_dir} /$arch /mimalloc
614
+ run ninja -j$parallel_jobs
615
+ quiet_popd
616
+
617
+ header " Installing mimalloc for ${arch} "
618
+
619
+ quiet_pushd ${build_dir} /$arch /mimalloc
620
+ run ninja -j$parallel_jobs install
621
+ quiet_popd
622
+
623
+ # Make sure we link mimalloc
624
+ ldflags=" -lmimalloc $ldflags "
625
+ cxxldflags=" -lmimalloc $cxxldflags "
626
+ sed -i -e ' s/-lc++ /-lmimalloc -lc++ /g' \
627
+ ${build_dir} /${arch} /toolchain.cmake
628
+
629
+ # -----------------------------------------------------------------------
630
+
570
631
header " Building zlib for $arch "
571
632
572
633
mkdir -p $build_dir /$arch /zlib
@@ -592,17 +653,67 @@ EOF
592
653
593
654
# -----------------------------------------------------------------------
594
655
656
+ header " Building bzip2 for $arch "
657
+
658
+ rm -rf ${build_dir} /$arch /bzip2
659
+ cp -R ${source_dir} /bzip2 ${build_dir} /$arch /bzip2
660
+ quiet_pushd $build_dir /$arch /bzip2
661
+ run make \
662
+ CC=" $cc " \
663
+ CXX=" $cxx " \
664
+ LDFLAGS=" $ldflags " \
665
+ CXXLDFLAGS=" $cxxldflags " \
666
+ AS=" $as " \
667
+ AR=" ar" RANLIB=" ranlib" \
668
+ PREFIX=$sdk_root /usr
669
+ quiet_popd
670
+
671
+ header " Installing bzip2 for $arch "
672
+
673
+ quiet_pushd $build_dir /$arch /bzip2
674
+ run make install \
675
+ CC=" $cc " \
676
+ CXX=" $cxx " \
677
+ LDFLAGS=" $ldflags " \
678
+ CXXLDFLAGS=" $cxxldflags " \
679
+ AS=" $as " \
680
+ AR=" ar" RANLIB=" ranlib" \
681
+ PREFIX=$sdk_root /usr
682
+ quiet_popd
683
+
684
+ # -----------------------------------------------------------------------
685
+
686
+ header " Building xz for $arch "
687
+
688
+ run cmake -G Ninja -S ${source_dir} /xz -B ${build_dir} /$arch /xz \
689
+ -DCMAKE_TOOLCHAIN_FILE=${build_dir} /$arch /toolchain.cmake \
690
+ -DCMAKE_BUILD_TYPE=RelWithDebInfo \
691
+ -DCMAKE_INSTALL_PREFIX=$sdk_root /usr \
692
+ -DBUILD_SHARED_LIBS=NO
693
+
694
+ quiet_pushd ${build_dir} /$arch /xz
695
+ run ninja -j$parallel_jobs
696
+ quiet_popd
697
+
698
+ header " Installing xz for $arch "
699
+
700
+ quiet_pushd ${build_dir} /$arch /xz
701
+ run ninja -j$parallel_jobs install
702
+ quiet_popd
703
+
704
+ # -----------------------------------------------------------------------
705
+
595
706
header " Building libxml2 for $arch "
596
707
597
708
run cmake -G Ninja -S ${source_dir} /libxml2 -B ${build_dir} /$arch /libxml2 \
598
709
-DCMAKE_TOOLCHAIN_FILE=${build_dir} /$arch /toolchain.cmake \
599
- -DCMAKE_EXTRA_LINK_FLAGS=" -rtlib=compiler-rt -unwindlib=libunwind -stdlib=libc++ -fuse-ld=lld -lc++ -lc++abi" \
710
+ -DCMAKE_EXTRA_LINK_FLAGS=" -rtlib=compiler-rt -unwindlib=libunwind -stdlib=libc++ -fuse-ld=lld -lmimalloc - lc++ -lc++abi" \
600
711
-DCMAKE_BUILD_TYPE=RelWithDebInfo \
601
712
-DCMAKE_INSTALL_PREFIX=$sdk_root /usr \
602
713
-DBUILD_SHARED_LIBS=NO \
603
714
-DLIBXML2_WITH_PYTHON=NO \
604
715
-DLIBXML2_WITH_ICU=NO \
605
- -DLIBXML2_WITH_LZMA=NO
716
+ -DLIBXML2_WITH_LZMA=YES
606
717
607
718
quiet_pushd ${build_dir} /$arch /libxml2
608
719
run ninja -j$parallel_jobs
616
727
617
728
# -----------------------------------------------------------------------
618
729
730
+ header " Building libarchive for $arch "
731
+
732
+ run cmake -G Ninja -S ${source_dir} /libarchive \
733
+ -B ${build_dir} /$arch /libarchive \
734
+ -DCMAKE_TOOLCHAIN_FILE=${build_dir} /$arch /toolchain.cmake \
735
+ -DCMAKE_BUILD_TYPE=RelWithDebInfo \
736
+ -DCMAKE_INSTALL_PREFIX=$sdk_root /usr \
737
+ -DCMAKE_INSTALL_LIBDIR=$sdk_root /usr/lib \
738
+ -DBUILD_SHARED_LIBS=NO \
739
+ -DENABLE_OPENSSL=NO
740
+
741
+ quiet_pushd ${build_dir} /$arch /libarchive
742
+ run ninja -j$parallel_jobs
743
+ quiet_popd
744
+
745
+ header " Installing libarchive for $arch "
746
+
747
+ quiet_pushd ${build_dir} /$arch /libarchive
748
+ run ninja -j$parallel_jobs install
749
+ quiet_popd
750
+
751
+ # -----------------------------------------------------------------------
752
+
619
753
header " Building BoringSSL for $arch "
620
754
621
755
run cmake -G Ninja -S ${source_dir} /boringssl -B ${build_dir} /$arch /boringssl \
644
778
-DCMAKE_INSTALL_PREFIX=$sdk_root /usr \
645
779
-DBUILD_SHARED_LIBS=NO \
646
780
-DBUILD_STATIC_LIBS=YES \
647
- -DBUILD_CURL_EXE=NO
781
+ -DBUILD_CURL_EXE=NO \
782
+ -DCURL_USE_PKGCONFIG=OFF \
783
+ -DCURL_USE_LIBPSL=OFF
648
784
649
785
quiet_pushd ${build_dir} /$arch /curl
650
786
ninja -j$parallel_jobs
688
824
-stdlib=libc++
689
825
-fuse-ld=lld
690
826
-unwindlib=libunwind
827
+ -lmimalloc
691
828
-lc++abi
692
829
-static
693
830
EOF
@@ -824,7 +961,7 @@ header "Bundling SDK"
824
961
825
962
spdx_uuid=$( uuidgen)
826
963
spdx_doc_uuid=$( uuidgen)
827
- spdx_timestamp=$( date -Iseconds)
964
+ spdx_timestamp=$( date -Iseconds -z Z | sed ' s/\+00:00$/Z/g ' )
828
965
829
966
sdk_name=swift-${swift_version} _static-linux-${static_linux_sdk_version}
830
967
bundle=" ${sdk_name} .artifactbundle"
@@ -845,7 +982,7 @@ cat > info.json <<EOF
845
982
"path": "$sdk_name /swift-linux-musl"
846
983
}
847
984
],
848
- "version": "0.0.1 ",
985
+ "version": "${static_linux_sdk_version} ",
849
986
"type": "swiftSDK"
850
987
}
851
988
}
0 commit comments