Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
18 changes: 15 additions & 3 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -269,7 +269,7 @@ jobs:
MATRIX_HOSTS+='{
"name": "linux-x86_64",
"runner": "zephyr-runner-v2-linux-x64-4xlarge",
"container": "ghcr.io/zephyrproject-rtos/sdk-build:v1.4.2",
"container": "ghcr.io/zephyrproject-rtos/sdk-build:v1.4.3",
"archive": "tar.xz"
},'
fi
Expand All @@ -278,7 +278,7 @@ jobs:
MATRIX_HOSTS+='{
"name": "linux-aarch64",
"runner": "zephyr-runner-v2-linux-arm64-4xlarge",
"container": "ghcr.io/zephyrproject-rtos/sdk-build:v1.4.2",
"container": "ghcr.io/zephyrproject-rtos/sdk-build:v1.4.3",
"archive": "tar.xz"
},'
fi
Expand All @@ -305,7 +305,7 @@ jobs:
MATRIX_HOSTS+='{
"name": "windows-x86_64",
"runner": "zephyr-runner-v2-linux-x64-4xlarge",
"container": "ghcr.io/zephyrproject-rtos/sdk-build:v1.4.2",
"container": "ghcr.io/zephyrproject-rtos/sdk-build:v1.4.3",
"archive": "7z"
},'
fi
Expand Down Expand Up @@ -1149,6 +1149,18 @@ jobs:
mkdir -p ${WORKSPACE}/hosttools
BUILD_OUTPUT="${WORKSPACE}/hosttools"

# Build wget
WGET_BUILD="${WORKSPACE}/build/wget"
WGET_SOURCE="${GITHUB_WORKSPACE}/wget"

mkdir -p ${WGET_BUILD}
pushd ${WGET_BUILD}
${BUILD_PRECMD} ${GITHUB_WORKSPACE}/scripts/build_wget.sh \
${{ matrix.host.name }} \
${WGET_SOURCE} \
${BUILD_OUTPUT}
popd

# Build QEMU
QEMU_BUILD="${WORKSPACE}/build/qemu"
QEMU_SOURCE="${GITHUB_WORKSPACE}/qemu"
Expand Down
119 changes: 119 additions & 0 deletions scripts/build_wget.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,119 @@
#!/usr/bin/env bash

set -e

WGET_VERSION="1.25.0"

usage()
{
echo "Usage: $(basename $0) host source output"
}

# Validate and parse arguments
if [ "$1" == "" ]; then
usage
echo
echo "host must be specified."
exit 1
elif [ "$2" == "" ]; then
usage
echo
echo "source must be specified."
exit 1
elif [ "$3" == "" ]; then
usage
echo
echo "output must be specified."
exit 1
fi

BUILD_HOST="$1"
BUILD_SOURCE="$2"
BUILD_OUTPUT="$3"

# Set build parameters
WGET_FLAGS=" \
--with-ssl=openssl \
--disable-pcre2 \
"

if [ "${BUILD_HOST}" == "windows-x86_64" ]; then
BUILD_PREFIX="${BUILD_OUTPUT}/wget"

WGET_FLAGS+="--host=x86_64-w64-mingw32"
elif [[ "${BUILD_HOST}" =~ ^macos-.* ]]; then
BUILD_PREFIX="${BUILD_OUTPUT}/opt/wget"

case ${BUILD_HOST} in
macos-aarch64)
HOMEBREW_PREFIX="/opt/homebrew"
;;
macos-x86_64)
HOMEBREW_PREFIX="/usr/local"
;;
esac

# Ensure that arch-specific Homebrew environment is configured
eval $(${HOMEBREW_PREFIX}/bin/brew shellenv)

# Specify statically linked libraries and their dependencies
export LIBIDN2_LIBS=" \
${HOMEBREW_PREFIX}/lib/libidn2.a \
${HOMEBREW_PREFIX}/lib/libunistring.a \
"

export OPENSSL_LIBS=" \
${HOMEBREW_PREFIX}/lib/libssl.a \
${HOMEBREW_PREFIX}/lib/libcrypto.a \
"
else
echo "ERROR: Invalid build host '${BUILD_HOST}'"
exit 1
fi

# Download and extract wget source code
mkdir -p ${BUILD_SOURCE}
pushd ${BUILD_SOURCE}
wget -O wget.tar.gz https://ftp.gnu.org/gnu/wget/wget-${WGET_VERSION}.tar.gz
tar --strip-components=1 -xvf wget.tar.gz
popd

# Build wget
${BUILD_SOURCE}/configure \
${WGET_FLAGS} \
--prefix="${BUILD_PREFIX}"

make -j
make install

# Install root CA certificates (Mozilla CA certificate store)
mkdir -p ${BUILD_PREFIX}/etc/ssl
wget \
-O ${BUILD_PREFIX}/etc/ssl/cert.pem \
https://curl.se/ca/cacert.pem

# Copy required dynamic-link libraries for Windows
if [ "${BUILD_HOST}" == "windows-x86_64" ]; then
WGET_WIN_LIBS=" \
/opt/mingw-w64-win32/x86_64-w64-mingw32/bin/libcrypto-3-x64.dll \
/opt/mingw-w64-win32/x86_64-w64-mingw32/bin/libiconv-2.dll \
/opt/mingw-w64-win32/x86_64-w64-mingw32/bin/libidn2-0.dll \
/opt/mingw-w64-win32/x86_64-w64-mingw32/bin/libintl-8.dll \
/opt/mingw-w64-win32/x86_64-w64-mingw32/bin/libssl-3-x64.dll \
/opt/mingw-w64-win32/x86_64-w64-mingw32/bin/libunistring-5.dll \
"

for l in ${WGET_WIN_LIBS}; do
cp -f ${l} ${BUILD_PREFIX}/bin
done
fi

# Symlink wget executable for macOS
if [[ "${BUILD_HOST}" =~ ^macos-.* ]]; then
mkdir -p ${BUILD_OUTPUT}/usr/bin
pushd ${BUILD_OUTPUT}/usr/bin

ln -sf ../../opt/wget/bin/wget wget

popd
fi
18 changes: 15 additions & 3 deletions scripts/template_setup_posix
Original file line number Diff line number Diff line change
Expand Up @@ -213,7 +213,19 @@ echo

# Check dependencies
check_command cmake 90
check_command wget 91
[[ "${host}" =~ ^linux-.* ]] && check_command wget 91

# Resolve wget binary path
if [[ "${host}" =~ ^macos-.* ]]; then
# Use wget from the SDK host tools on macOS
wget=" \
${PWD}/hosttools/opt/wget/bin/wget \
--ca-certificate ${PWD}/hosttools/opt/wget/etc/ssl/cert.pem \
"
else
# Use the system wget on Linux
wget="wget"
fi

# Ask for user inputs if no argument is specified
if [ "${interactive}" = "y" ]; then
Expand All @@ -238,7 +250,7 @@ if [ "${do_gnu_toolchain}" = "y" ]; then
echo "Installing '${toolchain}' GNU toolchain ..."

# Download toolchain archive
wget -q --show-progress -N -O "${toolchain_filename}" "${toolchain_uri}"
${wget} -q --show-progress -N -O "${toolchain_filename}" "${toolchain_uri}"
if [ $? != 0 ]; then
rm -f "${toolchain_filename}"
echo "ERROR: GNU toolchain download failed"
Expand All @@ -265,7 +277,7 @@ if [ "${do_llvm_toolchain}" = "y" ] && [ ! -d "llvm" ]; then
toolchain_uri="${dl_rel_base}/${toolchain_filename}"

# Download toolchain archive
wget -q --show-progress -N -O "${toolchain_filename}" "${toolchain_uri}"
${wget} -q --show-progress -N -O "${toolchain_filename}" "${toolchain_uri}"
if [ $? != 0 ]; then
rm -f "${toolchain_filename}"
echo "ERROR: LLVM toolchain download failed"
Expand Down
10 changes: 6 additions & 4 deletions scripts/template_setup_win
Original file line number Diff line number Diff line change
Expand Up @@ -53,11 +53,13 @@ REM # Check dependencies

call :check_command cmake 90
if [%ERRORLEVEL%] neq [0] goto end
call :check_command wget 91
if [%ERRORLEVEL%] neq [0] goto end
call :check_command 7z 92
if [%ERRORLEVEL%] neq [0] goto end

REM # Set host tools wget binary path
set WGET_CA_CERT=%~dp0hosttools\wget\etc\ssl\cert.pem
set WGET=%~dp0hosttools\wget\bin\wget.exe --ca-certificate %WGET_CA_CERT%

REM # Enter interactive mode if enabled
if [%INTERACTIVE%] neq [] (
goto interactive
Expand Down Expand Up @@ -158,7 +160,7 @@ if [%DO_GNU_TOOLCHAIN%] neq [] (
echo Installing '%%t' GNU toolchain ...

REM # Download toolchain archive
wget -q --show-progress -N -O !TOOLCHAIN_FILENAME! !TOOLCHAIN_URI!
%WGET% -q --show-progress -N -O !TOOLCHAIN_FILENAME! !TOOLCHAIN_URI!
if [!ERRORLEVEL!] neq [0] (
del /q !TOOLCHAIN_FILENAME!
echo ERROR: GNU toolchain download failed
Expand Down Expand Up @@ -190,7 +192,7 @@ if [%DO_LLVM_TOOLCHAIN%] neq [] (
set TOOLCHAIN_URI=%DL_REL_BASE%/!TOOLCHAIN_FILENAME!

REM # Download toolchain archive
wget -q --show-progress -N -O !TOOLCHAIN_FILENAME! !TOOLCHAIN_URI!
%WGET% -q --show-progress -N -O !TOOLCHAIN_FILENAME! !TOOLCHAIN_URI!
if [!ERRORLEVEL!] neq [0] (
del /q !TOOLCHAIN_FILENAME!
echo ERROR: LLVM toolchain download failed
Expand Down
Loading