'Generic Commit'
Some checks failed
dropshell-build / build (push) Has been cancelled

This commit is contained in:
Your Name 2025-06-02 21:55:57 +12:00
parent cb7a1faa2f
commit 1e8c3cd523
5 changed files with 85 additions and 11 deletions

View File

@ -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/

View File

@ -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}"

@ -0,0 +1 @@
Subproject commit f75061c3b6499ba3b616a04d913c0a4a3c79cbe2

View File

@ -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}"

View File

@ -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