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

This commit is contained in:
Your Name 2025-06-02 22:47:48 +12:00
parent ab9443a2d2
commit 006cc201b1
3 changed files with 150 additions and 162 deletions

View File

@ -1,25 +1,12 @@
FROM ubuntu:latest FROM ubuntu:latest
RUN apt-get update && apt-get install -y \
build-essential cmake git wget tar curl ninja-build mold nodejs npm perl jq ccache nlohmann-json3-dev \
ca-certificates \
&& rm -rf /var/lib/apt/lists/*
RUN echo "deb http://deb.debian.org/debian testing main" | tee /etc/apt/sources.list.d/testing-temp.list
RUN apt-get update && apt-get install -f && apt-get -t testing install -y upx-ucl && \
rm -rf /var/lib/apt/lists/* && \
rm /etc/apt/sources.list.d/testing-temp.list && \
rm -rf /var/lib/apt/lists/*
RUN curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc
RUN echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | tee /etc/apt/sources.list.d/docker.list > /dev/null
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 mkdir -p "$HOME/.musl-cross"
RUN apt-get update && apt-get install -y \
wget tar curl bash git && \
rm -rf /var/lib/apt/lists/*
RUN wget -nc -O "$HOME/.musl-cross/x86_64-linux-musl-cross.tgz" "https://getbin.xyz/x86_64-linux-musl-cross.tgz:latest" && \ 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" && \ 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" rm "$HOME/.musl-cross/x86_64-linux-musl-cross.tgz"
@ -32,6 +19,25 @@ RUN wget -nc -O "$HOME/.musl-cross/aarch64-linux-musl-cross.tgz" "https://getbin
tar -C "$HOME/.musl-cross" -xvf "$HOME/.musl-cross/aarch64-linux-musl-cross.tgz" && \ tar -C "$HOME/.musl-cross" -xvf "$HOME/.musl-cross/aarch64-linux-musl-cross.tgz" && \
rm "$HOME/.musl-cross/aarch64-linux-musl-cross.tgz" rm "$HOME/.musl-cross/aarch64-linux-musl-cross.tgz"
RUN apt-get update && apt-get install -y \
build-essential cmake ninja-build mold nodejs npm perl jq ccache nlohmann-json3-dev \
ca-certificates upx-ucl autoconf automake libtool gawk \
&& rm -rf /var/lib/apt/lists/*
RUN install -m 0755 -d /etc/apt/keyrings && \
curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc && \
chmod a+r /etc/apt/keyrings/docker.asc && \
echo \
"deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
$(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}") stable" | \
tee /etc/apt/sources.list.d/docker.list > /dev/null && \
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/*
COPY --chmod=0755 ./src/* /usr/local/bin/ COPY --chmod=0755 ./src/* /usr/local/bin/
RUN /usr/local/bin/dropshell-build-install-requirements RUN /usr/local/bin/dropshell-build-install-requirements

View File

@ -59,19 +59,54 @@ function set_current_arch() {
# ARCH_SHORT_PREFIX=aarch64-linux-musl # ARCH_SHORT_PREFIX=aarch64-linux-musl
# MUSL_PATH=/home/jde/.musl-cr oss/aarch64-linux-musl-cross # MUSL_PATH=/home/jde/.musl-cr oss/aarch64-linux-musl-cross
# arch should just be x86_64 or aarch64 # arch should just be x86_64 or aarch64
[ -n "$FULLARCH" ] || _die "No toolchain provided"
export ARCH="${FULLARCH%%-*}" export ARCH="${FULLARCH%%-*}"
export ARCH_OS="${FULLARCH#*-}" export ARCH_OS="${FULLARCH#*-}"
export ARCH_SHORT_PREFIX="${FULLARCH%-*}" export ARCH_SHORT_PREFIX="${FULLARCH%-*}"
export ARCH_MUSL_PATH="${MUSL_ROOT_PATH}/${FULLARCH}" export ARCH_MUSL_PATH="${MUSL_ROOT_PATH}/${FULLARCH}"
export ARCH_SYSROOT="${ARCH_MUSL_PATH}/${ARCH_SHORT_PREFIX}/sysroot" export ARCH_SYSROOT="${ARCH_MUSL_PATH}/${ARCH_SHORT_PREFIX}/sysroot"
export LIBPATH="$ARCH_SYSROOT/usr/lib"
[ -d "$LIBPATH" ] || export LIBPATH="$ARCH_SYSROOT/usr/lib64"
JOBS=$(nproc) # Set JOBS to the number of available CPU cores
echo "ARCH: ${ARCH}" echo "ARCH: ${ARCH}"
echo "ARCH_OS: ${ARCH_OS}" echo "ARCH_OS: ${ARCH_OS}"
echo "ARCH_SHORT_PREFIX: ${ARCH_SHORT_PREFIX}" echo "ARCH_SHORT_PREFIX: ${ARCH_SHORT_PREFIX}"
echo "ARCH_MUSL_PATH: ${ARCH_MUSL_PATH}" echo "ARCH_MUSL_PATH: ${ARCH_MUSL_PATH}"
echo "ARCH_SYSROOT: ${ARCH_SYSROOT}" echo "ARCH_SYSROOT: ${ARCH_SYSROOT}"
echo "LIBPATH: ${LIBPATH}"
# Set cross-compiler and sysroot
export CC="$ARCH_MUSL_PATH/bin/${ARCH_SHORT_PREFIX}-gcc"
[ -f "$CC" ] || export CC="$ARCH_MUSL_PATH/bin/gcc"
export CXX="${ARCH_MUSL_PATH}/bin/${ARCH_SHORT_PREFIX}-g++"
[ -f "$CXX" ] || export CXX="$ARCH_MUSL_PATH/bin/g++"
export AR="$ARCH_MUSL_PATH/bin/${ARCH_SHORT_PREFIX}-ar"
[ -f "$AR" ] || export AR="$ARCH_MUSL_PATH/bin/ar"
export RANLIB="$ARCH_MUSL_PATH/bin/${ARCH_SHORT_PREFIX}-ranlib"
[ -f "$RANLIB" ] || export RANLIB="$ARCH_MUSL_PATH/bin/ranlib"
echo "CC: ${CC}"
echo "CXX: ${CXX}"
echo "AR: ${AR}"
echo "RANLIB: ${RANLIB}"
export CFLAGS="--sysroot=$ARCH_SYSROOT -I$ARCH_SYSROOT/usr/include"
export CXXFLAGS="--sysroot=$ARCH_SYSROOT -I$ARCH_SYSROOT/usr/include"
export CMAKE_EXE_LINKER_FLAGS="-fuse-ld=mold"
export CMAKE_MODULE_LINKER_FLAGS="-fuse-ld=mold"
export CMAKE_SHARED_LINKER_FLAGS="-fuse-ld=mold"
export LDFLAGS="--sysroot=$ARCH_SYSROOT"
export MAKEFLAGS="-j${JOBS}"
} }
OLD_PWD="$PWD" OLD_PWD="$PWD"
trap 'cd "${OLD_PWD}"' EXIT trap 'cd "${OLD_PWD}"' EXIT
@ -101,8 +136,6 @@ function build_arch() {
local ARCH_BUILD_DIR="${CMAKE_DIR}/build/build.$ARCH" local ARCH_BUILD_DIR="${CMAKE_DIR}/build/build.$ARCH"
local OUTPUT_DIR="${CMAKE_DIR}/output" local OUTPUT_DIR="${CMAKE_DIR}/output"
local JOBS;
JOBS=$(nproc) # Set JOBS to the number of available CPU cores
cd "${CMAKE_DIR}" || exit 1 cd "${CMAKE_DIR}" || exit 1
mkdir -p "${ARCH_BUILD_DIR}" mkdir -p "${ARCH_BUILD_DIR}"
@ -120,19 +153,10 @@ function build_arch() {
CMAKE_BUILD_TYPE="Debug" CMAKE_BUILD_TYPE="Debug"
fi fi
export CC="${ARCH_MUSL_PATH}/bin/${ARCH_SHORT_PREFIX}-gcc"
export CXX="${ARCH_MUSL_PATH}/bin/${ARCH_SHORT_PREFIX}-g++"
export SYSROOT="${ARCH_SYSROOT}" export SYSROOT="${ARCH_SYSROOT}"
export OPENSSL_ROOT_DIR="${SYSROOT}/usr" export OPENSSL_ROOT_DIR="${SYSROOT}/usr"
export CFLAGS="--sysroot=$SYSROOT -I$SYSROOT/usr/include"
export CXXFLAGS="--sysroot=$SYSROOT -I$SYSROOT/usr/include"
export LDFLAGS="--sysroot=$SYSROOT"
export MAKEFLAGS="-j${JOBS}"
export CCACHE_DIR="${ARCH_BUILD_DIR}/ccache" export CCACHE_DIR="${ARCH_BUILD_DIR}/ccache"
export CMAKE_EXE_LINKER_FLAGS="-fuse-ld=mold"
export CMAKE_MODULE_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"
@ -149,8 +173,8 @@ function build_arch() {
-DCMAKE_C_COMPILER_LAUNCHER=ccache \ -DCMAKE_C_COMPILER_LAUNCHER=ccache \
-DCMAKE_CXX_COMPILER_LAUNCHER=ccache \ -DCMAKE_CXX_COMPILER_LAUNCHER=ccache \
-DCMAKE_LINKER=mold \ -DCMAKE_LINKER=mold \
-DCMAKE_C_COMPILER_TARGET="${ARCH}-linux-musl" \ -DCMAKE_C_COMPILER_TARGET="${ARCH_SHORT_PREFIX}" \
-DCMAKE_CXX_COMPILER_TARGET="${ARCH}-linux-musl" \ -DCMAKE_CXX_COMPILER_TARGET="${ARCH_SHORT_PREFIX}" \
-DCMAKE_C_FLAGS="${CFLAGS}" \ -DCMAKE_C_FLAGS="${CFLAGS}" \
-DCMAKE_CXX_FLAGS="${CXXFLAGS}" \ -DCMAKE_CXX_FLAGS="${CXXFLAGS}" \
-DCMAKE_FIND_ROOT_PATH="${ARCH_SYSROOT}" \ -DCMAKE_FIND_ROOT_PATH="${ARCH_SYSROOT}" \

View File

@ -67,9 +67,8 @@ is_package_installed() {
dpkg -l "$1" dpkg -l "$1"
fi fi
} }
function install_packages() { function check_packages() {
local PACKAGES local PACKAGES
local HAVE_UPDATED=0
# Detect distribution # Detect distribution
if [ -f /etc/os-release ]; then if [ -f /etc/os-release ]; then
@ -89,36 +88,7 @@ function install_packages() {
# Common packages for both Ubuntu and Debian # Common packages for both Ubuntu and Debian
PACKAGES="build-essential cmake git wget tar curl ninja-build \ PACKAGES="build-essential cmake git wget tar curl ninja-build \
mold nodejs npm perl jq ccache upx-ucl nlohmann-json3-dev \ mold nodejs npm perl jq ccache upx-ucl nlohmann-json3-dev \
sed gawk autoconf automake autotools-dev" sed gawk autoconf automake libtool autotools-dev"
INSTALLCMD="apt-get install -y"
UPDATECMD="apt-get update"
;;
"Debian GNU/Linux")
PACKAGES="build-essential cmake git wget tar curl ninja-build \
mold nodejs npm perl jq ccache upx-ucl nlohmann-json3-dev \
sed gawk autoconf automake autotools-dev"
INSTALLCMD="apt-get install -y"
UPDATECMD="apt-get update"
# special case for debian 12
if ! is_package_installed "upx-ucl"; then
# get from testing.
# Add testing repo temporarily
echo "deb http://deb.debian.org/debian testing main" | ${SUDOCMD:-} tee /etc/apt/sources.list.d/testing-temp.list
# Update package lists
${SUDOCMD:-} bash -c "apt-get update"
${SUDOCMD:-} bash -c "apt-get -t testing install -y upx-ucl"
${SUDOCMD:-} bash -c "rm /etc/apt/sources.list.d/testing-temp.list"
${SUDOCMD:-} bash -c "apt-get update"
HAVE_UPDATED=1
fi
;;
"Alpine Linux")
PACKAGES="build-base cmake git wget tar curl ninja \
mold nodejs npm linux-headers perl jq ccache upx nlohmann-json-dev \
sed gawk autoconf automake autotools-dev"
INSTALLCMD="apk add --no-cache"
UPDATECMD="apk update"
;; ;;
*) *)
print_error "Unsupported distribution: $OS" print_error "Unsupported distribution: $OS"
@ -130,19 +100,8 @@ function install_packages() {
print_status "Checking and installing required packages..." print_status "Checking and installing required packages..."
for pkg in $PACKAGES; do for pkg in $PACKAGES; do
if ! is_package_installed "$pkg"; then if ! is_package_installed "$pkg"; then
print_status "Installing $pkg..." print_error "Package $pkg is not installed"
# Update package lists
if [ "$HAVE_UPDATED" -eq 0 ]; then
print_status "Updating package lists..."
${SUDOCMD:-} bash -c "${UPDATECMD}"
HAVE_UPDATED=1
fi
if ! bash -c "${SUDOCMD:-} ${INSTALLCMD} $pkg"; then
print_error "Failed to install $pkg"
exit 1 exit 1
fi
else else
print_status "$pkg is already installed" print_status "$pkg is already installed"
fi fi
@ -173,35 +132,72 @@ function install_packages() {
# unwind for musl cross toolchains # unwind for musl cross toolchains
#---------------------------------------------------------------------------------------------------------- #----------------------------------------------------------------------------------------------------------
function set_current_arch() {
export FULLARCH="$1"
# e.g. aarch64-linux-musl-cross
# ARCH=aarch64
# ARCH_OS=linux-musl-cross
# FULLARCH=aarch64-linux-musl-cross
# ARCH_SHORT_PREFIX=aarch64-linux-musl
# MUSL_PATH=/home/jde/.musl-cr oss/aarch64-linux-musl-cross
# arch should just be x86_64 or aarch64
[ -n "$FULLARCH" ] || _die "No toolchain provided"
export MUSL_ROOT_PATH="${USER_HOME}/.musl-cross"
export ARCH="${FULLARCH%%-*}"
export ARCH_OS="${FULLARCH#*-}"
export ARCH_SHORT_PREFIX="${FULLARCH%-*}"
export ARCH_MUSL_PATH="${MUSL_ROOT_PATH}/${FULLARCH}"
export ARCH_SYSROOT="${ARCH_MUSL_PATH}/${ARCH_SHORT_PREFIX}/sysroot"
export LIBPATH="$ARCH_SYSROOT/usr/lib"
[ -d "$LIBPATH" ] || export LIBPATH="$ARCH_SYSROOT/usr/lib64"
echo "ARCH: ${ARCH}"
echo "ARCH_OS: ${ARCH_OS}"
echo "ARCH_SHORT_PREFIX: ${ARCH_SHORT_PREFIX}"
echo "ARCH_MUSL_PATH: ${ARCH_MUSL_PATH}"
echo "ARCH_SYSROOT: ${ARCH_SYSROOT}"
echo "LIBPATH: ${LIBPATH}"
JOBS=$(nproc) # Set JOBS to the number of available CPU cores
# Set cross-compiler and sysroot
export CC="$ARCH_MUSL_PATH/bin/${ARCH_SHORT_PREFIX}-gcc"
[ -f "$CC" ] || export CC="$ARCH_MUSL_PATH/bin/gcc"
export CXX="${ARCH_MUSL_PATH}/bin/${ARCH_SHORT_PREFIX}-g++"
[ -f "$CXX" ] || export CXX="$ARCH_MUSL_PATH/bin/g++"
export AR="$ARCH_MUSL_PATH/bin/${ARCH_SHORT_PREFIX}-ar"
[ -f "$AR" ] || export AR="$ARCH_MUSL_PATH/bin/ar"
export RANLIB="$ARCH_MUSL_PATH/bin/${ARCH_SHORT_PREFIX}-ranlib"
[ -f "$RANLIB" ] || export RANLIB="$ARCH_MUSL_PATH/bin/ranlib"
echo "CC: ${CC}"
echo "CXX: ${CXX}"
echo "AR: ${AR}"
echo "RANLIB: ${RANLIB}"
export CFLAGS="--sysroot=$ARCH_SYSROOT -I$ARCH_SYSROOT/usr/include"
export CXXFLAGS="--sysroot=$ARCH_SYSROOT -I$ARCH_SYSROOT/usr/include"
export CMAKE_EXE_LINKER_FLAGS="-fuse-ld=mold"
export CMAKE_MODULE_LINKER_FLAGS="-fuse-ld=mold"
export CMAKE_SHARED_LINKER_FLAGS="-fuse-ld=mold"
export LDFLAGS="--sysroot=$ARCH_SYSROOT"
export MAKEFLAGS="-j${JOBS}"
}
function install_unwind_musl() { function install_unwind_musl() {
local FULLARCH="$1" set_current_arch "$1"
local ARCH="${FULLARCH%%-*}"
local ARCH_SHORT_PREFIX="${FULLARCH%-*}" [ -d "$ARCH_MUSL_PATH" ] || _die "MUSL_PATH does not exist: $ARCH_MUSL_PATH"
local MUSL_PATH="${INSTALL_DIR}/${FULLARCH}"
[ -d "$MUSL_PATH" ] || _die "MUSL_PATH does not exist: $MUSL_PATH"
local BUILD_DIR="${SCRIPT_DIR}/build.$ARCH" local BUILD_DIR="${SCRIPT_DIR}/build.$ARCH"
PREVDIR="$PWD" PREVDIR="$PWD"
rm -rf "$BUILD_DIR" rm -rf "$BUILD_DIR" && mkdir -p "$BUILD_DIR" && cd "$BUILD_DIR"
mkdir -p "$BUILD_DIR"
cd "$BUILD_DIR"
local SYSROOT="$MUSL_PATH/${ARCH_SHORT_PREFIX}/sysroot" [ ! -f "$LIBPATH/libunwind.a" ] || echo "Unwind $ARCH is already installed" && return
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
# Set cross-compiler and sysroot
local CC="$MUSL_PATH/bin/${ARCH_SHORT_PREFIX}-gcc"
[ -f "$CC" ] || CC="$MUSL_PATH/bin/gcc"
local AR="$MUSL_PATH/bin/${ARCH_SHORT_PREFIX}-ar"
[ -f "$AR" ] || AR="$MUSL_PATH/bin/ar"
local RANLIB="$MUSL_PATH/bin/${ARCH_SHORT_PREFIX}-ranlib"
[ -f "$RANLIB" ] || RANLIB="$MUSL_PATH/bin/ranlib"
git clone https://github.com/libunwind/libunwind.git git clone https://github.com/libunwind/libunwind.git
cd libunwind cd libunwind
@ -210,13 +206,13 @@ function install_unwind_musl() {
# Configure for cross-compiling # Configure for cross-compiling
CC="$CC" AR="$AR" RANLIB="$RANLIB" ./configure \ CC="$CC" AR="$AR" RANLIB="$RANLIB" ./configure \
--host="$ARCH_SHORT_PREFIX" \ --host="$ARCH_SHORT_PREFIX" \
--prefix="$SYSROOT/usr" \ --prefix="$ARCH_SYSROOT/usr" \
--enable-static \ --enable-static \
--disable-shared \ --disable-shared \
--disable-minidebuginfo \ --disable-minidebuginfo \
--disable-zlibdebuginfo --disable-zlibdebuginfo
make -j make -j"$JOBS"
${SUDOCMD:-} make install ${SUDOCMD:-} make install
cd "$PREVDIR" cd "$PREVDIR"
@ -237,34 +233,16 @@ toolchain_to_openssl_target() {
function install_openssl_musl() { function install_openssl_musl() {
OPENSSL_VERSION=3.5.0 OPENSSL_VERSION=3.5.0
set_current_arch "${1:-}"
PREVDIR="$PWD" PREVDIR="$PWD"
# set the ARCH, ARCH_OS, ARCH_FULL_PREFIX, ARCH_SHORT_PREFIX, and MUSL_PATH variables [ -d "$ARCH_MUSL_PATH" ] || _die "MUSL_PATH does not exist: $ARCH_MUSL_PATH"
# e.g. aarch64-linux-musl-cross
# ARCH=aarch64
# ARCH_OS=linux-musl-cross
# ARCH_SHORT_PREFIX=aarch64-linux-musl
# MUSL_PATH=/home/jde/.musl-cross/aarch64-linux-musl-cross
# arch should just be x86_64 or aarch64
local FULLARCH="${1:-}"
[ -n "$FULLARCH" ] || _die "No toolchain provided"
local ARCH="${FULLARCH%%-*}" [ ! -f "$LIBPATH/libssl.a" ] || echo "OpenSSL $ARCH is already installed" && return
#local ARCH_OS="${FULLARCH#*-}"
local ARCH_SHORT_PREFIX="${FULLARCH%-*}"
local MUSL_PATH="${INSTALL_DIR}/${FULLARCH}"
[ -d "$MUSL_PATH" ] || _die "MUSL_PATH does not exist: $MUSL_PATH"
LIBPATH="$MUSL_PATH/${ARCH_SHORT_PREFIX}/sysroot/usr/lib"
[ -d "$LIBPATH" ] || LIBPATH="$MUSL_PATH/${ARCH_SHORT_PREFIX}/sysroot/usr/lib64"
if [ -f "$LIBPATH/libssl.a" ]; then
echo "OpenSSL $ARCH is already installed"
return
fi
local BUILD_DIR="${SCRIPT_DIR}/build.$ARCH" local BUILD_DIR="${SCRIPT_DIR}/build.$ARCH"
mkdir -p "$BUILD_DIR" rm -rf "$BUILD_DIR" && mkdir -p "$BUILD_DIR" && cd "$BUILD_DIR"
# Helper: compare versions (returns 0 if $1 >= $2) # Helper: compare versions (returns 0 if $1 >= $2)
version_ge() { version_ge() {
@ -275,45 +253,25 @@ function install_openssl_musl() {
echo "===============================" echo "==============================="
echo "Checking OpenSSL for $ARCH..." echo "Checking OpenSSL for $ARCH..."
echo "===============================" echo "==============================="
local OPENSSL_TARGET
OPENSSL_TARGET=$(toolchain_to_openssl_target "$FULLARCH") OPENSSL_TARGET=$(toolchain_to_openssl_target "$FULLARCH")
local SYSROOT="$MUSL_PATH/${ARCH_SHORT_PREFIX}/sysroot"
local CC="$MUSL_PATH/bin/${ARCH_SHORT_PREFIX}-gcc"
[ -f "$CC" ] || CC="$MUSL_PATH/bin/gcc"
local AR="$MUSL_PATH/bin/${ARCH_SHORT_PREFIX}-ar"
[ -f "$AR" ] || AR="$MUSL_PATH/bin/ar"
local RANLIB="$MUSL_PATH/bin/${ARCH_SHORT_PREFIX}-ranlib"
[ -f "$RANLIB" ] || RANLIB="$MUSL_PATH/bin/ranlib"
DEST_PATH="$SYSROOT/usr/lib/libssl.a"
if [ -f "$DEST_PATH" ]; then
echo "OpenSSL $ARCH is already installed"
else
cd "$BUILD_DIR"
if [ ! -d "openssl-${OPENSSL_VERSION}" ]; then
if [ ! -f "openssl-${OPENSSL_VERSION}.tar.gz" ]; then
wget "https://www.openssl.org/source/openssl-${OPENSSL_VERSION}.tar.gz" || _die "Failed to download openssl-${OPENSSL_VERSION}.tar.gz" wget "https://www.openssl.org/source/openssl-${OPENSSL_VERSION}.tar.gz" || _die "Failed to download openssl-${OPENSSL_VERSION}.tar.gz"
fi
tar xf "openssl-${OPENSSL_VERSION}.tar.gz" || _die "Failed to extract openssl-${OPENSSL_VERSION}.tar.gz" tar xf "openssl-${OPENSSL_VERSION}.tar.gz" || _die "Failed to extract openssl-${OPENSSL_VERSION}.tar.gz"
fi
cd "openssl-${OPENSSL_VERSION}" || _die "Failed to cd to openssl-${OPENSSL_VERSION}" cd "openssl-${OPENSSL_VERSION}" || _die "Failed to cd to openssl-${OPENSSL_VERSION}"
echo "----------------------------------------------" echo "----------------------------------------------"
echo "Configuring for $ARCH with sysroot $SYSROOT..." echo "Configuring for $ARCH with sysroot $SYSROOT..."
CC="$CC" AR="$AR" RANLIB="$RANLIB" ./Configure "$OPENSSL_TARGET" no-shared --prefix="$SYSROOT/usr" CC="$CC" AR="$AR" RANLIB="$RANLIB" ./Configure "$OPENSSL_TARGET" no-shared --prefix="$SYSROOT/usr"
echo "Building..." echo "Building..."
make -j"$(nproc)" make -j"$JOBS"
echo "Installing to $SYSROOT/usr ..." echo "Installing to $SYSROOT/usr ..."
make install_sw ${SUDOCMD:-} make install_sw
echo "Done for $ARCH." echo "Done for $ARCH."
echo echo
fi
rm -rf "$BUILD_DIR"
cd "$PREVDIR" cd "$PREVDIR"
rm -rf "$BUILD_DIR"
echo "OpenSSL built and installed for $FULLARCH" echo "OpenSSL built and installed for $FULLARCH"
} }
@ -394,7 +352,7 @@ function output_version() {
function main() { function main() {
install_packages check_packages
install_musl install_musl