From de6a4b0be32fad6a629d0c3c32a1c766dbe8a820 Mon Sep 17 00:00:00 2001 From: Matt McCormick Date: Fri, 21 Feb 2025 15:51:36 -0500 Subject: [PATCH] dockcross-command.sh: support multi-arch tags --- tools/dockcross-command.sh | 10 ++++++++-- tools/dockcross-make-builder.sh | 19 ++++++++++++++----- 2 files changed, 22 insertions(+), 7 deletions(-) diff --git a/tools/dockcross-command.sh b/tools/dockcross-command.sh index df7bd6e..e8d2a01 100755 --- a/tools/dockcross-command.sh +++ b/tools/dockcross-command.sh @@ -4,8 +4,14 @@ if (( $# >= 2 )); then image_complet=$1 image=${image_complet%:*} tag=${image_complet#*:} + host_arch=$(uname -m | sed -e 's/x86_64/amd64/' -e 's/aarch64/arm64/') if test $tag = $image; then - tag="latest" + # use multiarch image if available + if docker images | grep dockcross/${image} | grep latest-${host_arch} >/dev/null; then + tag="latest-${host_arch}" + else + tag="latest" + fi fi shift 1 @@ -16,7 +22,7 @@ if (( $# >= 2 )); then # docker pull "dockcross/$image:$tag" echo "Make script dockcross-$image" - docker run --rm dockcross/"$image" > ./dockcross-"$image" + docker run --rm dockcross/"$image:$tag" > ./dockcross-"$image" chmod +x ./dockcross-"$image" echo "Run command in dockcross-$image" diff --git a/tools/dockcross-make-builder.sh b/tools/dockcross-make-builder.sh index c22c5ec..e353481 100755 --- a/tools/dockcross-make-builder.sh +++ b/tools/dockcross-make-builder.sh @@ -1,10 +1,19 @@ #!/usr/bin/env bash if (( $# >= 1 )); then - image_complet=$1 - image=${image_complet%:*} - tag=${image_complet#*:} + image_complete=$1 + image=${image_complete%:*} + tag=${image_complete#*:} build_file=build-$image + host_arch=$(uname -m | sed -e 's/x86_64/amd64/' -e 's/aarch64/arm64/') + if test $tag = $image; then + # use multiarch image if available + if docker images | grep dockcross/${image} | grep latest-${host_arch} >/dev/null; then + tag="latest-${host_arch}" + else + tag="latest" + fi + fi shift 1 make_arg=$* @@ -14,11 +23,11 @@ if (( $# >= 1 )); then # docker pull "dockcross/$image:$tag" echo "Make script dockcross-$image" - docker run --rm dockcross/"$image" > ./dockcross-"$image" + docker run --rm dockcross/"$image:$tag" > ./dockcross-"$image" chmod +x ./dockcross-"$image" echo "Build $build_file" - ./dockcross-"$image" -i dockcross/"$image":latest bash -c 'make CXX=${CXX} CC=${CC} AR=${AR} AS=${AS} LD=${LD} CPP=${CPP} FC=${FC} '"$make_arg" + ./dockcross-"$image" -i dockcross/"$image:$tag" bash -c 'make CXX=${CXX} CC=${CC} AR=${AR} AS=${AS} LD=${LD} CPP=${CPP} FC=${FC} '"$make_arg" else echo "Usage: ${0##*/} " exit 1