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 && \
|
apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin && \
|
||||||
rm -rf /var/lib/apt/lists/*
|
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/
|
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 )"
|
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}"
|
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
|
# 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() {
|
function build_arch() {
|
||||||
local CMAKE_DIR="$1"
|
local CMAKE_DIR="$1"
|
||||||
|
|
||||||
@ -118,14 +134,15 @@ function build_arch() {
|
|||||||
export CMAKE_MODULE_LINKER_FLAGS="-fuse-ld=mold"
|
export CMAKE_MODULE_LINKER_FLAGS="-fuse-ld=mold"
|
||||||
export CMAKE_SHARED_LINKER_FLAGS="-fuse-ld=mold"
|
export CMAKE_SHARED_LINKER_FLAGS="-fuse-ld=mold"
|
||||||
|
|
||||||
if [ -d "${ARCH_SYSROOT}/usr/lib64" ]; then
|
# if [ -d "${ARCH_SYSROOT}/usr/lib64" ]; then
|
||||||
export OPENSSL_LIBDIR="${ARCH_SYSROOT}/usr/lib64"
|
# export OPENSSL_LIBDIR="${ARCH_SYSROOT}/usr/lib64"
|
||||||
elif [ -d "${ARCH_SYSROOT}/usr/lib" ]; then
|
# elif [ -d "${ARCH_SYSROOT}/usr/lib" ]; then
|
||||||
export OPENSSL_LIBDIR="${ARCH_SYSROOT}/usr/lib"
|
# export OPENSSL_LIBDIR="${ARCH_SYSROOT}/usr/lib"
|
||||||
else
|
# else
|
||||||
echo "Neither lib nor lib64 found in ${ARCH_SYSROOT}/usr"
|
# echo "Neither lib nor lib64 found in ${ARCH_SYSROOT}/usr"
|
||||||
exit 1
|
# exit 1
|
||||||
fi
|
# fi
|
||||||
|
#create_openssl_cmake_vars "$OPENSSL_LIBDIR"
|
||||||
|
|
||||||
cmake -B "${ARCH_BUILD_DIR}" -G Ninja \
|
cmake -B "${ARCH_BUILD_DIR}" -G Ninja \
|
||||||
-DCMAKE_BUILD_TYPE="${CMAKE_BUILD_TYPE}" \
|
-DCMAKE_BUILD_TYPE="${CMAKE_BUILD_TYPE}" \
|
||||||
@ -136,9 +153,9 @@ function build_arch() {
|
|||||||
-DCMAKE_CXX_COMPILER_TARGET="${ARCH}-linux-musl" \
|
-DCMAKE_CXX_COMPILER_TARGET="${ARCH}-linux-musl" \
|
||||||
-DCMAKE_C_FLAGS="${CFLAGS}" \
|
-DCMAKE_C_FLAGS="${CFLAGS}" \
|
||||||
-DCMAKE_CXX_FLAGS="${CXXFLAGS}" \
|
-DCMAKE_CXX_FLAGS="${CXXFLAGS}" \
|
||||||
-DCMAKE_FIND_ROOT_PATH="${SYSROOT}" \
|
-DCMAKE_FIND_ROOT_PATH="${ARCH_SYSROOT}" \
|
||||||
-DCMAKE_SYSROOT="${SYSROOT}" \
|
-DCMAKE_SYSROOT="${ARCH_SYSROOT}" \
|
||||||
-DCMAKE_FIND_ROOT_PATH="${SYSROOT}"
|
-DCMAKE_PREFIX_PATH="${ARCH_SYSROOT}/usr"
|
||||||
cd "${ARCH_BUILD_DIR}" || exit 1
|
cd "${ARCH_BUILD_DIR}" || exit 1
|
||||||
ninja -k0 -j"${JOBS}"
|
ninja -k0 -j"${JOBS}"
|
||||||
|
|
||||||
|
@ -163,6 +163,43 @@ function install_packages() {
|
|||||||
# fi
|
# 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
|
# OpenSSL for musl cross toolchains
|
||||||
@ -251,6 +288,8 @@ function install_openssl_musl() {
|
|||||||
echo
|
echo
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
rm -rf "$BUILD_DIR"
|
||||||
|
|
||||||
cd "$PREVDIR"
|
cd "$PREVDIR"
|
||||||
|
|
||||||
echo "OpenSSL built and installed for $FULLARCH"
|
echo "OpenSSL built and installed for $FULLARCH"
|
||||||
@ -310,6 +349,7 @@ function install_musl() {
|
|||||||
check_path "$TOOLCHAIN"
|
check_path "$TOOLCHAIN"
|
||||||
|
|
||||||
install_openssl_musl "$TOOLCHAIN"
|
install_openssl_musl "$TOOLCHAIN"
|
||||||
|
install_unwind_musl "$TOOLCHAIN"
|
||||||
done
|
done
|
||||||
|
|
||||||
# Clean up
|
# Clean up
|
||||||
|
Loading…
x
Reference in New Issue
Block a user