@@ -97,7 +97,7 @@ function declare_package
9797}
9898
9999declare_package static_linux_sdk \
100- " Swift statically linked SDK for Linux" \
100+ " Swift Static SDK for Linux" \
101101 " Apache-2.0" " https://swift.org/install/sdk"
102102declare_package swift " swift" " Apache-2.0" " https://swift.org"
103103declare_package musl " musl" " MIT" " https://musl.org"
@@ -109,9 +109,13 @@ declare_package curl "curl" "MIT" "https://curl.se"
109109declare_package boringssl " boringssl" " OpenSSL AND ISC AND MIT" \
110110 " https://boringssl.googlesource.com/boringssl/"
111111declare_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/"
112116
113117# Parse command line arguments
114- static_linux_sdk_version=0.0.1
118+ static_linux_sdk_version=0.1.0
115119sdk_name=
116120archs=x86_64,aarch64
117121build_type=RelWithDebInfo
@@ -233,6 +237,15 @@ boringssl_version=$(describe ${source_dir}/boringssl)
233237
234238zlib_version=$( versionFromTag ${source_dir} /zlib)
235239
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+
236249function quiet_pushd {
237250 pushd " $1 " > /dev/null 2>&1
238251}
@@ -258,6 +271,10 @@ echo " - libxml2 ${libxml2_version}"
258271echo " - curl ${curl_version} "
259272echo " - BoringSSL ${boringssl_version} "
260273echo " - zlib ${zlib_version} "
274+ echo " - bzip2 ${bzip2_version} "
275+ echo " - xz ${xz_version} "
276+ echo " - libarchive ${libarchive_version} "
277+ echo " - mimalloc ${mimalloc_version} "
261278
262279function run() {
263280 echo " $@ "
@@ -297,6 +314,19 @@ else
297314 exit 1
298315fi
299316
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+
300330# -----------------------------------------------------------------------
301331
302332header " Patching BoringSSL"
@@ -367,7 +397,7 @@ for arch in $archs; do
367397 cat > $sdk_root /SDKSettings.json << EOF
368398{
369399 "DisplayName": "Swift SDK for Statically Linked Linux ($arch )",
370- "Version": "0.0.1 ",
400+ "Version": "${static_linux_sdk_version} ",
371401 "VersionMap": {},
372402 "CanonicalName": "${arch} -swift-linux-musl"
373403}
567597
568598 # -----------------------------------------------------------------------
569599
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+
570631 header " Building zlib for $arch "
571632
572633 mkdir -p $build_dir /$arch /zlib
@@ -592,17 +653,67 @@ EOF
592653
593654 # -----------------------------------------------------------------------
594655
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+
595706 header " Building libxml2 for $arch "
596707
597708 run cmake -G Ninja -S ${source_dir} /libxml2 -B ${build_dir} /$arch /libxml2 \
598709 -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" \
600711 -DCMAKE_BUILD_TYPE=RelWithDebInfo \
601712 -DCMAKE_INSTALL_PREFIX=$sdk_root /usr \
602713 -DBUILD_SHARED_LIBS=NO \
603714 -DLIBXML2_WITH_PYTHON=NO \
604715 -DLIBXML2_WITH_ICU=NO \
605- -DLIBXML2_WITH_LZMA=NO
716+ -DLIBXML2_WITH_LZMA=YES
606717
607718 quiet_pushd ${build_dir} /$arch /libxml2
608719 run ninja -j$parallel_jobs
616727
617728 # -----------------------------------------------------------------------
618729
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+
619753 header " Building BoringSSL for $arch "
620754
621755 run cmake -G Ninja -S ${source_dir} /boringssl -B ${build_dir} /$arch /boringssl \
644778 -DCMAKE_INSTALL_PREFIX=$sdk_root /usr \
645779 -DBUILD_SHARED_LIBS=NO \
646780 -DBUILD_STATIC_LIBS=YES \
647- -DBUILD_CURL_EXE=NO
781+ -DBUILD_CURL_EXE=NO \
782+ -DCURL_USE_PKGCONFIG=OFF \
783+ -DCURL_USE_LIBPSL=OFF
648784
649785 quiet_pushd ${build_dir} /$arch /curl
650786 ninja -j$parallel_jobs
688824-stdlib=libc++
689825-fuse-ld=lld
690826-unwindlib=libunwind
827+ -lmimalloc
691828-lc++abi
692829-static
693830EOF
@@ -824,7 +961,7 @@ header "Bundling SDK"
824961
825962spdx_uuid=$( uuidgen)
826963spdx_doc_uuid=$( uuidgen)
827- spdx_timestamp=$( date -Iseconds)
964+ spdx_timestamp=$( date -Iseconds -z Z | sed ' s/\+00:00$/Z/g ' )
828965
829966sdk_name=swift-${swift_version} _static-linux-${static_linux_sdk_version}
830967bundle=" ${sdk_name} .artifactbundle"
@@ -845,7 +982,7 @@ cat > info.json <<EOF
845982 "path": "$sdk_name /swift-linux-musl"
846983 }
847984 ],
848- "version": "0.0.1 ",
985+ "version": "${static_linux_sdk_version} ",
849986 "type": "swiftSDK"
850987 }
851988 }
0 commit comments