This commit is contained in:
parent
ab9443a2d2
commit
006cc201b1
40
Dockerfile
40
Dockerfile
@ -1,25 +1,12 @@
|
||||
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 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" && \
|
||||
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"
|
||||
@ -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" && \
|
||||
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/
|
||||
|
||||
RUN /usr/local/bin/dropshell-build-install-requirements
|
||||
|
@ -59,19 +59,54 @@ function set_current_arch() {
|
||||
# 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 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"
|
||||
|
||||
JOBS=$(nproc) # Set JOBS to the number of available CPU cores
|
||||
|
||||
|
||||
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}"
|
||||
|
||||
# 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"
|
||||
trap 'cd "${OLD_PWD}"' EXIT
|
||||
|
||||
@ -101,8 +136,6 @@ function build_arch() {
|
||||
local ARCH_BUILD_DIR="${CMAKE_DIR}/build/build.$ARCH"
|
||||
local OUTPUT_DIR="${CMAKE_DIR}/output"
|
||||
|
||||
local JOBS;
|
||||
JOBS=$(nproc) # Set JOBS to the number of available CPU cores
|
||||
cd "${CMAKE_DIR}" || exit 1
|
||||
|
||||
mkdir -p "${ARCH_BUILD_DIR}"
|
||||
@ -120,19 +153,10 @@ function build_arch() {
|
||||
CMAKE_BUILD_TYPE="Debug"
|
||||
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 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 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
|
||||
# export OPENSSL_LIBDIR="${ARCH_SYSROOT}/usr/lib64"
|
||||
@ -149,8 +173,8 @@ function build_arch() {
|
||||
-DCMAKE_C_COMPILER_LAUNCHER=ccache \
|
||||
-DCMAKE_CXX_COMPILER_LAUNCHER=ccache \
|
||||
-DCMAKE_LINKER=mold \
|
||||
-DCMAKE_C_COMPILER_TARGET="${ARCH}-linux-musl" \
|
||||
-DCMAKE_CXX_COMPILER_TARGET="${ARCH}-linux-musl" \
|
||||
-DCMAKE_C_COMPILER_TARGET="${ARCH_SHORT_PREFIX}" \
|
||||
-DCMAKE_CXX_COMPILER_TARGET="${ARCH_SHORT_PREFIX}" \
|
||||
-DCMAKE_C_FLAGS="${CFLAGS}" \
|
||||
-DCMAKE_CXX_FLAGS="${CXXFLAGS}" \
|
||||
-DCMAKE_FIND_ROOT_PATH="${ARCH_SYSROOT}" \
|
||||
|
@ -67,9 +67,8 @@ is_package_installed() {
|
||||
dpkg -l "$1"
|
||||
fi
|
||||
}
|
||||
function install_packages() {
|
||||
function check_packages() {
|
||||
local PACKAGES
|
||||
local HAVE_UPDATED=0
|
||||
|
||||
# Detect distribution
|
||||
if [ -f /etc/os-release ]; then
|
||||
@ -89,36 +88,7 @@ function install_packages() {
|
||||
# Common packages for both Ubuntu and Debian
|
||||
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"
|
||||
;;
|
||||
"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"
|
||||
sed gawk autoconf automake libtool autotools-dev"
|
||||
;;
|
||||
*)
|
||||
print_error "Unsupported distribution: $OS"
|
||||
@ -130,19 +100,8 @@ function install_packages() {
|
||||
print_status "Checking and installing required packages..."
|
||||
for pkg in $PACKAGES; do
|
||||
if ! is_package_installed "$pkg"; then
|
||||
print_status "Installing $pkg..."
|
||||
|
||||
# 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"
|
||||
print_error "Package $pkg is not installed"
|
||||
exit 1
|
||||
fi
|
||||
else
|
||||
print_status "$pkg is already installed"
|
||||
fi
|
||||
@ -173,35 +132,72 @@ function install_packages() {
|
||||
# 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() {
|
||||
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"
|
||||
set_current_arch "$1"
|
||||
|
||||
[ -d "$ARCH_MUSL_PATH" ] || _die "MUSL_PATH does not exist: $ARCH_MUSL_PATH"
|
||||
|
||||
local BUILD_DIR="${SCRIPT_DIR}/build.$ARCH"
|
||||
PREVDIR="$PWD"
|
||||
rm -rf "$BUILD_DIR"
|
||||
mkdir -p "$BUILD_DIR"
|
||||
cd "$BUILD_DIR"
|
||||
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
|
||||
|
||||
# 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"
|
||||
[ ! -f "$LIBPATH/libunwind.a" ] || echo "Unwind $ARCH is already installed" && return
|
||||
|
||||
git clone https://github.com/libunwind/libunwind.git
|
||||
cd libunwind
|
||||
@ -210,13 +206,13 @@ function install_unwind_musl() {
|
||||
# Configure for cross-compiling
|
||||
CC="$CC" AR="$AR" RANLIB="$RANLIB" ./configure \
|
||||
--host="$ARCH_SHORT_PREFIX" \
|
||||
--prefix="$SYSROOT/usr" \
|
||||
--prefix="$ARCH_SYSROOT/usr" \
|
||||
--enable-static \
|
||||
--disable-shared \
|
||||
--disable-minidebuginfo \
|
||||
--disable-zlibdebuginfo
|
||||
|
||||
make -j
|
||||
make -j"$JOBS"
|
||||
${SUDOCMD:-} make install
|
||||
|
||||
cd "$PREVDIR"
|
||||
@ -237,34 +233,16 @@ toolchain_to_openssl_target() {
|
||||
|
||||
function install_openssl_musl() {
|
||||
OPENSSL_VERSION=3.5.0
|
||||
set_current_arch "${1:-}"
|
||||
|
||||
PREVDIR="$PWD"
|
||||
|
||||
# set the ARCH, ARCH_OS, ARCH_FULL_PREFIX, ARCH_SHORT_PREFIX, and MUSL_PATH variables
|
||||
# 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"
|
||||
[ -d "$ARCH_MUSL_PATH" ] || _die "MUSL_PATH does not exist: $ARCH_MUSL_PATH"
|
||||
|
||||
local ARCH="${FULLARCH%%-*}"
|
||||
#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
|
||||
[ ! -f "$LIBPATH/libssl.a" ] || echo "OpenSSL $ARCH is already installed" && return
|
||||
|
||||
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)
|
||||
version_ge() {
|
||||
@ -275,45 +253,25 @@ function install_openssl_musl() {
|
||||
echo "==============================="
|
||||
echo "Checking OpenSSL for $ARCH..."
|
||||
echo "==============================="
|
||||
local OPENSSL_TARGET
|
||||
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"
|
||||
fi
|
||||
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}"
|
||||
|
||||
echo "----------------------------------------------"
|
||||
echo "Configuring for $ARCH with sysroot $SYSROOT..."
|
||||
CC="$CC" AR="$AR" RANLIB="$RANLIB" ./Configure "$OPENSSL_TARGET" no-shared --prefix="$SYSROOT/usr"
|
||||
echo "Building..."
|
||||
make -j"$(nproc)"
|
||||
make -j"$JOBS"
|
||||
echo "Installing to $SYSROOT/usr ..."
|
||||
make install_sw
|
||||
${SUDOCMD:-} make install_sw
|
||||
|
||||
echo "Done for $ARCH."
|
||||
echo
|
||||
fi
|
||||
|
||||
rm -rf "$BUILD_DIR"
|
||||
|
||||
cd "$PREVDIR"
|
||||
|
||||
rm -rf "$BUILD_DIR"
|
||||
echo "OpenSSL built and installed for $FULLARCH"
|
||||
}
|
||||
|
||||
@ -394,7 +352,7 @@ function output_version() {
|
||||
|
||||
function main() {
|
||||
|
||||
install_packages
|
||||
check_packages
|
||||
|
||||
install_musl
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user