This commit is contained in:
parent
cb7a1faa2f
commit
1e8c3cd523
13
Dockerfile
13
Dockerfile
@ -18,6 +18,19 @@ RUN apt-get update && \
|
||||
apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin && \
|
||||
rm -rf /var/lib/apt/lists/*
|
||||
|
||||
RUN mkdir -p "$HOME/.musl-cross"
|
||||
|
||||
RUN wget -nc -O "$HOME/.musl-cross/x86_64-linux-musl-cross.tgz" "https://getbin.xyz/x86_64-linux-musl-cross.tgz:latest" && \
|
||||
tar -C "$HOME/.musl-cross" -xvf "$HOME/.musl-cross/x86_64-linux-musl-cross.tgz" && \
|
||||
rm "$HOME/.musl-cross/x86_64-linux-musl-cross.tgz"
|
||||
|
||||
RUN wget -nc -O "$HOME/.musl-cross/x86_64-linux-musl-native.tgz" "https://getbin.xyz/x86_64-linux-musl-native.tgz:latest" && \
|
||||
tar -C "$HOME/.musl-cross" -xvf "$HOME/.musl-cross/x86_64-linux-musl-native.tgz" && \
|
||||
rm "$HOME/.musl-cross/x86_64-linux-musl-native.tgz"
|
||||
|
||||
RUN wget -nc -O "$HOME/.musl-cross/aarch64-linux-musl-cross.tgz" "https://getbin.xyz/aarch64-linux-musl-cross.tgz:latest" && \
|
||||
tar -C "$HOME/.musl-cross" -xvf "$HOME/.musl-cross/aarch64-linux-musl-cross.tgz" && \
|
||||
rm "$HOME/.musl-cross/aarch64-linux-musl-cross.tgz"
|
||||
|
||||
COPY --chmod=0755 ./src/* /usr/local/bin/
|
||||
|
||||
|
3
build.sh
3
build.sh
@ -4,5 +4,8 @@ set -euo pipefail
|
||||
|
||||
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )"
|
||||
|
||||
rm -rf "${SCRIPT_DIR}/src/build"
|
||||
rm -rf "${SCRIPT_DIR}/src/build.*"
|
||||
|
||||
docker build -t gitea.jde.nz/public/dropshell-build:test -f "${SCRIPT_DIR}/Dockerfile" "${SCRIPT_DIR}"
|
||||
|
||||
|
1
src/build.aarch64/libunwind
Submodule
1
src/build.aarch64/libunwind
Submodule
@ -0,0 +1 @@
|
||||
Subproject commit f75061c3b6499ba3b616a04d913c0a4a3c79cbe2
|
@ -79,6 +79,22 @@ trap 'cd "${OLD_PWD}"' EXIT
|
||||
# BUILD
|
||||
# ----------------------------------------------------------------------------------------------------------
|
||||
|
||||
# function create_openssl_cmake_vars() {
|
||||
# mkdir -p "$1/cmake/OpenSSL"
|
||||
# cat <<EOF > "$1/cmake/OpenSSL/OpenSSLConfig.cmake"
|
||||
# add_library(OpenSSL::SSL STATIC IMPORTED)
|
||||
# set_target_properties(OpenSSL::SSL PROPERTIES
|
||||
# IMPORTED_LOCATION "${OPENSSL_LIBDIR}/libssl.a"
|
||||
# INTERFACE_INCLUDE_DIRECTORIES "${ARCH_SYSROOT}/usr/include"
|
||||
# )
|
||||
# add_library(OpenSSL::Crypto STATIC IMPORTED)
|
||||
# set_target_properties(OpenSSL::Crypto PROPERTIES
|
||||
# IMPORTED_LOCATION "${OPENSSL_LIBDIR}/libcrypto.a"
|
||||
# INTERFACE_INCLUDE_DIRECTORIES "${ARCH_SYSROOT}/usr/include"
|
||||
# )
|
||||
# EOF
|
||||
# }
|
||||
|
||||
function build_arch() {
|
||||
local CMAKE_DIR="$1"
|
||||
|
||||
@ -118,14 +134,15 @@ function build_arch() {
|
||||
export CMAKE_MODULE_LINKER_FLAGS="-fuse-ld=mold"
|
||||
export CMAKE_SHARED_LINKER_FLAGS="-fuse-ld=mold"
|
||||
|
||||
if [ -d "${ARCH_SYSROOT}/usr/lib64" ]; then
|
||||
export OPENSSL_LIBDIR="${ARCH_SYSROOT}/usr/lib64"
|
||||
elif [ -d "${ARCH_SYSROOT}/usr/lib" ]; then
|
||||
export OPENSSL_LIBDIR="${ARCH_SYSROOT}/usr/lib"
|
||||
else
|
||||
echo "Neither lib nor lib64 found in ${ARCH_SYSROOT}/usr"
|
||||
exit 1
|
||||
fi
|
||||
# if [ -d "${ARCH_SYSROOT}/usr/lib64" ]; then
|
||||
# export OPENSSL_LIBDIR="${ARCH_SYSROOT}/usr/lib64"
|
||||
# elif [ -d "${ARCH_SYSROOT}/usr/lib" ]; then
|
||||
# export OPENSSL_LIBDIR="${ARCH_SYSROOT}/usr/lib"
|
||||
# else
|
||||
# echo "Neither lib nor lib64 found in ${ARCH_SYSROOT}/usr"
|
||||
# exit 1
|
||||
# fi
|
||||
#create_openssl_cmake_vars "$OPENSSL_LIBDIR"
|
||||
|
||||
cmake -B "${ARCH_BUILD_DIR}" -G Ninja \
|
||||
-DCMAKE_BUILD_TYPE="${CMAKE_BUILD_TYPE}" \
|
||||
@ -136,9 +153,9 @@ function build_arch() {
|
||||
-DCMAKE_CXX_COMPILER_TARGET="${ARCH}-linux-musl" \
|
||||
-DCMAKE_C_FLAGS="${CFLAGS}" \
|
||||
-DCMAKE_CXX_FLAGS="${CXXFLAGS}" \
|
||||
-DCMAKE_FIND_ROOT_PATH="${SYSROOT}" \
|
||||
-DCMAKE_SYSROOT="${SYSROOT}" \
|
||||
-DCMAKE_FIND_ROOT_PATH="${SYSROOT}"
|
||||
-DCMAKE_FIND_ROOT_PATH="${ARCH_SYSROOT}" \
|
||||
-DCMAKE_SYSROOT="${ARCH_SYSROOT}" \
|
||||
-DCMAKE_PREFIX_PATH="${ARCH_SYSROOT}/usr"
|
||||
cd "${ARCH_BUILD_DIR}" || exit 1
|
||||
ninja -k0 -j"${JOBS}"
|
||||
|
||||
|
@ -163,6 +163,43 @@ function install_packages() {
|
||||
# fi
|
||||
# }
|
||||
|
||||
#----------------------------------------------------------------------------------------------------------
|
||||
# unwind for musl cross toolchains
|
||||
#----------------------------------------------------------------------------------------------------------
|
||||
|
||||
function install_unwind_musl() {
|
||||
local FULLARCH="$1"
|
||||
local ARCH="${FULLARCH%%-*}"
|
||||
local ARCH_SHORT_PREFIX="${FULLARCH%-*}"
|
||||
local MUSL_PATH="${INSTALL_DIR}/${FULLARCH}"
|
||||
[ -d "$MUSL_PATH" ] || _die "MUSL_PATH does not exist: $MUSL_PATH"
|
||||
|
||||
local BUILD_DIR="${SCRIPT_DIR}/build.$ARCH"
|
||||
PREVDIR="$PWD"
|
||||
rm -rf "$BUILD_DIR"
|
||||
mkdir -p "$BUILD_DIR"
|
||||
cd "$BUILD_DIR"
|
||||
|
||||
local SYSROOT="$MUSL_PATH/${ARCH_SHORT_PREFIX}/sysroot"
|
||||
|
||||
LIBPATH="$MUSL_PATH/${ARCH_SHORT_PREFIX}/sysroot/usr/lib"
|
||||
[ -d "$LIBPATH" ] || LIBPATH="$MUSL_PATH/${ARCH_SHORT_PREFIX}/sysroot/usr/lib64"
|
||||
if [ -f "$LIBPATH/libunwind.a" ]; then
|
||||
echo "Unwind $ARCH is already installed"
|
||||
return
|
||||
fi
|
||||
|
||||
# download and install unwind
|
||||
git clone https://github.com/libunwind/libunwind.git
|
||||
cd libunwind
|
||||
autoreconf -i
|
||||
./configure --enable-static --disable-minidebuginfo --disable-zlibdebuginfo
|
||||
make -j
|
||||
${SUDOCMD:-} make install
|
||||
|
||||
cd "$PREVDIR"
|
||||
rm -rf "$BUILD_DIR"
|
||||
}
|
||||
|
||||
#----------------------------------------------------------------------------------------------------------
|
||||
# OpenSSL for musl cross toolchains
|
||||
@ -251,6 +288,8 @@ function install_openssl_musl() {
|
||||
echo
|
||||
fi
|
||||
|
||||
rm -rf "$BUILD_DIR"
|
||||
|
||||
cd "$PREVDIR"
|
||||
|
||||
echo "OpenSSL built and installed for $FULLARCH"
|
||||
@ -310,6 +349,7 @@ function install_musl() {
|
||||
check_path "$TOOLCHAIN"
|
||||
|
||||
install_openssl_musl "$TOOLCHAIN"
|
||||
install_unwind_musl "$TOOLCHAIN"
|
||||
done
|
||||
|
||||
# Clean up
|
||||
|
Loading…
x
Reference in New Issue
Block a user