@@ -11,11 +11,14 @@ trapFunc() {
1111trap ' trapFunc "${LINENO}/${BASH_LINENO}" "$?" "$BASH_COMMAND"' ERR
1212
1313globals () {
14+ detect_arch
1415 SCRIPT_DIR=" $( cd -- " $( dirname -- " ${BASH_SOURCE[0]:- $0 } " ; ) " & > /dev/null && pwd 2> /dev/null; ) "
1516 ROOT_DIR=$( git rev-parse --show-toplevel)
1617
1718 set +e
18- export $( grep -v ' ^#' $ROOT_DIR /.env | sed -e ' s/\r$//' | xargs) > /dev/null
19+ if [ -f $ROOT_DIR /.env ]; then
20+ export $( grep -v ' ^#' $ROOT_DIR /.env | sed -e ' s/\r$//' | xargs) > /dev/null
21+ fi
1922 set -e
2023
2124 GIT_REF=$( git rev-parse --short=8 HEAD)
@@ -24,6 +27,10 @@ globals() {
2427 pushd $ROOT_DIR /vcpkg
2528 VCPKG_REF=$( git rev-parse --short=8 HEAD)
2629 popd
30+ if [ " $ARCH " == " arm64" ]; then
31+ VCPKG_REF=" $VCPKG_REF -arm"
32+ RELEASE_BASE_IMAGE=" arm64v8/$RELEASE_BASE_IMAGE "
33+ fi
2734 DOCKER_USERNAME=" ${DOCKER_USERNAME:- hpccbuilds} "
2835
2936 CMAKE_OPTIONS=" -G Ninja -DCPACK_THREADS=$( docker info --format ' {{.NCPU}}' ) -DUSE_OPTIONAL=OFF -DCONTAINERIZED=ON -DINCLUDE_PLUGINS=ON -DSUPPRESS_V8EMBED=ON"
@@ -265,6 +272,10 @@ build() {
265272 exit 1
266273 fi
267274
275+ if [ " $ARCH " == " arm64" ]; then
276+ base=" $base "
277+ fi
278+
268279 if [ " $RECONFIGURE " -eq 1 ]; then
269280 reconfigure
270281 fi
@@ -331,6 +342,25 @@ function cleanup() {
331342 fi
332343}
333344
345+ function detect_arch() {
346+ if [ -z " $ARCH " ]; then
347+ if [ " $( uname -m) " == " x86_64" ]; then
348+ ARCH=" x64"
349+ elif [ " $( uname -m) " == " aarch64" ]; then
350+ ARCH=" arm64"
351+ elif [ " $( uname -m) " == " arm64" ]; then
352+ ARCH=" arm64"
353+ else
354+ echo " Unsupported architecture: $( uname -m) "
355+ exit 1
356+ fi
357+ fi
358+ if [ " $ARCH " != " x64" ] && [ " $ARCH " != " arm64" ]; then
359+ echo " Unsupported architecture: $ARCH "
360+ exit 1
361+ fi
362+ }
363+
334364trap cleanup EXIT
335365
336366status () {
@@ -344,7 +374,9 @@ status() {
344374 echo " MODE: $MODE "
345375 echo " RECONFIGURE: $RECONFIGURE "
346376 echo " BUILD_OS: $BUILD_OS "
377+ echo " RELEASE_BASE_IMAGE: $RELEASE_BASE_IMAGE "
347378 echo " HPCC_BUILD: $HPCC_BUILD "
379+ echo " ARCH: $ARCH "
348380}
349381
350382# Print usage information
@@ -361,6 +393,7 @@ usage() {
361393 echo " -t, --tag tag the build volume with the current branch ref"
362394 echo " will preserve build state per branch"
363395 echo " -r, --reconfigure reconfigure CMake before building"
396+ echo " -a, --architecture override default architecture (x64 or arm64)"
364397}
365398
366399# Set default values
@@ -369,8 +402,9 @@ MODE="release"
369402RECONFIGURE=0
370403DEB_FILE=" "
371404BUILD_OS=" ubuntu-22.04"
372- RELEASE_BASE_IMAGE=" ubuntu:jammy-20230308 " # Matches vcpkg base image (does not need to be an exact match)
405+ RELEASE_BASE_IMAGE=" ubuntu:22.04 " # Matches vcpkg base image (does not need to be an exact match)
373406TAG_BUILD=0
407+ ARCH=" "
374408
375409# Parse command line arguments
376410while [[ $# -gt 0 ]]
@@ -413,6 +447,11 @@ case $key in
413447 RECONFIGURE=1
414448 shift # past argument
415449 ;;
450+ -a|--architecture)
451+ ARCH=" $2 "
452+ shift # past argument
453+ shift # past value
454+ ;;
416455 -h|--help)
417456 usage
418457 exit 0
0 commit comments