88 inputs :
99
1010 host :
11- description : Host (Arch+OS) [ALL ==> Run on All Hosts (No riscv64)]
11+ description : Host (Arch+OS) [ALL ==> Run on All Hosts (No loongarch64| riscv64)]
1212 type : choice
1313 options :
1414 - " ALL"
1515 - " aarch64-Linux"
16+ # - "loongarch64-Linux"
1617 - " riscv64-Linux"
1718 - " x86_64-Linux"
1819
@@ -72,10 +73,13 @@ jobs:
7273 if [[ "${{ github.event.inputs.ci-infra }}" == "github" || -z "${{ github.event.inputs.ci-infra }}" ]]; then
7374 if [[ "${{ github.event.inputs.host }}" == "ALL" ]]; then
7475 echo '{"host": "aarch64-Linux", "runner": "ubuntu-24.04-arm", "ghcr_pkg": "${{ inputs.ghcr-url }}"},' >> "./MATRIX.json.tmp"
76+ #echo '{"host": "loongarch64-Linux", "runner": "ubuntu-latest", "ghcr_pkg": "${{ inputs.ghcr-url }}"},' >> "./MATRIX.json.tmp"
7577 #echo '{"host": "riscv64-Linux", "runner": "ubuntu-latest", "ghcr_pkg": "${{ inputs.ghcr-url }}"},' >> "./MATRIX.json.tmp"
7678 echo '{"host": "x86_64-Linux", "runner": "ubuntu-latest", "ghcr_pkg": "${{ inputs.ghcr-url }}"}' >> "./MATRIX.json.tmp"
7779 elif [[ "${{ github.event.inputs.host }}" == "aarch64-Linux" ]]; then
7880 echo '{"host": "aarch64-Linux", "runner": "ubuntu-24.04-arm", "ghcr_pkg": "${{ inputs.ghcr-url }}"}' >> "./MATRIX.json.tmp"
81+ elif [[ "${{ github.event.inputs.host }}" == "loongarch64-Linux" ]]; then
82+ echo '{"host": "loongarch64-Linux", "runner": "ubuntu-latest", "ghcr_pkg": "${{ inputs.ghcr-url }}"}' >> "./MATRIX.json.tmp"
7983 elif [[ "${{ github.event.inputs.host }}" == "riscv64-Linux" ]]; then
8084 echo '{"host": "riscv64-Linux", "runner": "ubuntu-latest", "ghcr_pkg": "${{ inputs.ghcr-url }}"}' >> "./MATRIX.json.tmp"
8185 elif [[ "${{ github.event.inputs.host }}" == "x86_64-Linux" ]]; then
@@ -85,10 +89,13 @@ jobs:
8589 curl -X "POST" -H "content-type: application/json" -qfsSL "${{ secrets.CIRCLE_CI_WEBHOOK_URL }}?secret=${{ secrets.CIRCLE_CI_SECRET }}"
8690 if [[ "${{ github.event.inputs.host }}" == "ALL" ]]; then
8791 echo '{"host": "aarch64-Linux", "runner": "arm64-linux-circle", "ghcr_pkg": "${{ inputs.ghcr-url }}"},' >> "./MATRIX.json.tmp"
92+ #echo '{"host": "loongarch64-Linux", "runner": "amd64-linux-circle", "ghcr_pkg": "${{ inputs.ghcr-url }}"},' >> "./MATRIX.json.tmp"
8893 #echo '{"host": "riscv64-Linux", "runner": "amd64-linux-circle", "ghcr_pkg": "${{ inputs.ghcr-url }}"},' >> "./MATRIX.json.tmp"
8994 echo '{"host": "x86_64-Linux", "runner": "amd64-linux-circle", "ghcr_pkg": "${{ inputs.ghcr-url }}"}' >> "./MATRIX.json.tmp"
9095 elif [[ "${{ github.event.inputs.host }}" == "aarch64-Linux" ]]; then
9196 echo '{"host": "aarch64-Linux", "runner": "arm64-linux-circle", "ghcr_pkg": "${{ inputs.ghcr-url }}"}' >> "./MATRIX.json.tmp"
97+ elif [[ "${{ github.event.inputs.host }}" == "loongarch64-Linux" ]]; then
98+ echo '{"host": "loongarch64-Linux", "runner": "amd64-linux-circle", "ghcr_pkg": "${{ inputs.ghcr-url }}"}' >> "./MATRIX.json.tmp"
9299 elif [[ "${{ github.event.inputs.host }}" == "riscv64-Linux" ]]; then
93100 echo '{"host": "riscv64-Linux", "runner": "amd64-linux-circle", "ghcr_pkg": "${{ inputs.ghcr-url }}"}' >> "./MATRIX.json.tmp"
94101 elif [[ "${{ github.event.inputs.host }}" == "x86_64-Linux" ]]; then
@@ -98,10 +105,13 @@ jobs:
98105 echo ""
99106 if [[ "${{ github.event.inputs.host }}" == "ALL" ]]; then
100107 echo '{"host": "aarch64-Linux", "runner": "self-hosted-aarch64", "ghcr_pkg": "${{ inputs.ghcr-url }}"},' >> "./MATRIX.json.tmp"
108+ #echo '{"host": "loongarch64-Linux", "runner": "self-hosted-loongarch64", "ghcr_pkg": "${{ inputs.ghcr-url }}"},' >> "./MATRIX.json.tmp"
101109 #echo '{"host": "riscv64-Linux", "runner": "self-hosted-riscv64", "ghcr_pkg": "${{ inputs.ghcr-url }}"},' >> "./MATRIX.json.tmp"
102110 echo '{"host": "x86_64-Linux", "runner": "self-hosted-x86_64", "ghcr_pkg": "${{ inputs.ghcr-url }}"}' >> "./MATRIX.json.tmp"
103111 elif [[ "${{ github.event.inputs.host }}" == "aarch64-Linux" ]]; then
104112 echo '{"host": "aarch64-Linux", "runner": "self-hosted-aarch64", "ghcr_pkg": "${{ inputs.ghcr-url }}"}' >> "./MATRIX.json.tmp"
113+ elif [[ "${{ github.event.inputs.host }}" == "loongarch64-Linux" ]]; then
114+ echo '{"host": "loongarch64-Linux", "runner": "self-hosted-loongarch64", "ghcr_pkg": "${{ inputs.ghcr-url }}"}' >> "./MATRIX.json.tmp"
105115 elif [[ "${{ github.event.inputs.host }}" == "riscv64-Linux" ]]; then
106116 echo '{"host": "riscv64-Linux", "runner": "self-hosted-riscv64", "ghcr_pkg": "${{ inputs.ghcr-url }}"}' >> "./MATRIX.json.tmp"
107117 elif [[ "${{ github.event.inputs.host }}" == "x86_64-Linux" ]]; then
@@ -145,13 +155,18 @@ jobs:
145155 if [[ "${{ github.event.inputs.host }}" != "ALL" ]] && [[ "${{ github.event.inputs.host }}" != "aarch64-Linux" ]]; then
146156 echo "CONTINUE_GHRUN=FALSE" >> "${GITHUB_ENV}"
147157 fi
158+ elif [[ "$(uname -m | tr -d '[:space:]')" == "loongarch64" ]]; then
159+ if [[ "${{ github.event.inputs.host }}" != "ALL" ]] && [[ "${{ github.event.inputs.host }}" != "loongarch64-Linux" ]]; then
160+ echo "CONTINUE_GHRUN=FALSE" >> "${GITHUB_ENV}"
161+ fi
148162 elif [[ "$(uname -m | tr -d '[:space:]')" == "riscv64" ]]; then
149163 if [[ "${{ github.event.inputs.host }}" != "ALL" ]] && [[ "${{ github.event.inputs.host }}" != "riscv64-Linux" ]]; then
150164 echo "CONTINUE_GHRUN=FALSE" >> "${GITHUB_ENV}"
151165 fi
152166 elif [[ "$(uname -m | tr -d '[:space:]')" == "x86_64" ]]; then
153167 if [[ "${{ github.event.inputs.host }}" != "ALL" ]] && [[ "${{ github.event.inputs.host }}" != "x86_64-Linux" ]]; then
154- if [[ "${{ github.event.inputs.host }}" == "riscv64-Linux" ]]; then
168+ if [[ "${{ github.event.inputs.host }}" == "riscv64-Linux" ||\
169+ "${{ github.event.inputs.host }}" == "loongarch64-Linux" ]]; then
155170 echo "CONTINUE_GHRUN=TRUE" >> "${GITHUB_ENV}"
156171 else
157172 echo "CONTINUE_GHRUN=FALSE" >> "${GITHUB_ENV}"
@@ -187,26 +202,44 @@ jobs:
187202 set +x ; set +e
188203 #-------------#
189204 ##Host Triplet
190- if [[ "${{ matrix.package.host }}" == "riscv64-Linux" ]] ; then
191- export HOST_TRIPLET="riscv64-Linux"
192- if [[ "$(uname -m | tr -d '[:space:]')" == "riscv64" ]]; then
193- export ON_QEMU="NO"
194- else
195- export ON_QEMU="YES"
205+ if [[ "${{ matrix.package.host }}" != "$(uname -m)-$(uname -s)" ]] ; then
206+ export CROSS_COMPILING="YES"
207+ export HOST_TRIPLET_R="$(uname -m)-$(uname -s)"
208+ export ON_QEMU="YES"
209+ if [[ "${{ matrix.package.host }}" == "loongarch64-Linux" ]] ; then
210+ export HOST_TRIPLET="loongarch64-Linux"
211+ elif [[ "${{ matrix.package.host }}" == "riscv64-Linux" ]] ; then
212+ export HOST_TRIPLET="riscv64-Linux"
196213 fi
197- else
214+ elif [[ "${{ matrix.package.host }}" == "$(uname -m)-$(uname -s)" ]] ; then
215+ export CROSS_COMPILING="NO"
198216 export HOST_TRIPLET="$(uname -m)-$(uname -s)"
217+ export HOST_TRIPLET_R="${HOST_TRIPLET}"
199218 export ON_QEMU="NO"
200219 fi
220+ echo "CROSS_COMPILING=${CROSS_COMPILING}" >> "${GITHUB_ENV}"
201221 echo "HOST_TRIPLET=${HOST_TRIPLET}" >> "${GITHUB_ENV}"
222+ echo "HOST_TRIPLET_R=${HOST_TRIPLET_R}" >> "${GITHUB_ENV}"
202223 echo "ON_QEMU=${ON_QEMU}" >> "${GITHUB_ENV}"
203- ##Debug
224+ ##Debug
204225 if [[ "${{ github.event.inputs.debug }}" == "true" ]] ; then
205226 export DEBUG="1"
206227 else
207228 export DEBUG="0"
208229 fi
209230 echo "DEBUG=${DEBUG}" >> "${GITHUB_ENV}"
231+ ##Docker Platform
232+ if echo "${HOST_TRIPLET}" | grep -qiE "aarch64"; then
233+ DOCKER_PLATFORM="linux/arm64"
234+ elif echo "${HOST_TRIPLET}" | grep -qiE "loongarch64"; then
235+ DOCKER_PLATFORM="linux/loong64"
236+ elif echo "${HOST_TRIPLET}" | grep -qiE "riscv64"; then
237+ DOCKER_PLATFORM="linux/riscv64"
238+ elif echo "${HOST_TRIPLET}" | grep -qiE "x86_64"; then
239+ DOCKER_PLATFORM="linux/amd64"
240+ fi
241+ echo "DOCKER_PLATFORM_ARCH=${HOST_TRIPLET%%-*}" >> "${GITHUB_ENV}"
242+ echo "DOCKER_PLATFORM=${DOCKER_PLATFORM}" >> "${GITHUB_ENV}"
210243 ##GHCRPKG_URL
211244 GHCRPKG_LOCAL="$(echo "${{ inputs.ghcr-url }}" | tr '[:upper:]' '[:lower:]' | tr -d '[:space:]')"
212245 export GHCRPKG_LOCAL
@@ -232,7 +265,7 @@ jobs:
232265 fi
233266 echo "SBUILD_REBUILD=${SBUILD_REBUILD}" >> "${GITHUB_ENV}"
234267 ##SBUILD_URL
235- sudo curl -qfsSL "https://bin.pkgforge.dev/$(uname -m)-$(uname -s) /yq" -o "/usr/local/bin/yq" && \
268+ sudo curl -qfsSL "https://bin.pkgforge.dev/${HOST_TRIPLET_R} /yq" -o "/usr/local/bin/yq" && \
236269 sudo chmod 'a+x' "/usr/local/bin/yq" && command -v yq >/dev/null || exit 1
237270 SBUILD_FILE_URL="$(echo "${{ github.event.inputs.sbuild-url }}" | tr -d '[:space:]')"
238271 pushd "$(mktemp -d)" >/dev/null 2>&1
@@ -246,10 +279,20 @@ jobs:
246279 echo "SBUILD_FILE_URL=${SBUILD_FILE_URL}" >> "${GITHUB_ENV}"
247280 #Check for x_exec.host
248281 if yq e '.x_exec.host != null' "./SBUILD_INPUT" | grep -qi 'true'; then
282+ #check if supported
249283 if ! yq '.x_exec.host[]' "./SBUILD_INPUT" | grep -v '^#' | grep -qi "${HOST_TRIPLET,,}"; then
250- echo -e "\n[✗] WARNING: SBUILD (./SBUILD_INPUT) is NOT Supported on ${HOST_TRIPLET}\n"
251- yq '.x_exec.host[]' "./SBUILD_INPUT"
252- echo "CONTINUE_GHRUN=FALSE" >> "${GITHUB_ENV}"
284+ echo -e "\n[✗] WARNING: SBUILD (./SBUILD_INPUT) is NOT Supported on ${HOST_TRIPLET}\n"
285+ yq '.x_exec.host[]' "./SBUILD_INPUT"
286+ echo "CONTINUE_GHRUN=FALSE" >> "${GITHUB_ENV}"
287+ exit 1
288+ fi
289+ #get build system
290+ if yq '.x_exec.bsys' "./SBUILD_INPUT" | grep -v '^#' | grep -qi "docker://"; then
291+ echo "BUILD_ON_HOST=FALSE" >> "${GITHUB_ENV}"
292+ echo "BUILD_SYSTEM=DOCKER" >> "${GITHUB_ENV}"
293+ elif yq '.x_exec.bsys' "./SBUILD_INPUT" | grep -v '^#' | grep -qi "host://"; then
294+ echo "BUILD_ON_HOST=TRUE" >> "${GITHUB_ENV}"
295+ echo "BUILD_SYSTEM=HOST" >> "${GITHUB_ENV}"
253296 fi
254297 fi
255298 fi
@@ -305,8 +348,8 @@ jobs:
305348 sudo sysctl -p "/etc/sysctl.conf"
306349 continue-on-error : true
307350
308- - name : If riscv64 on QEMU [${{ matrix.package.host }}<==>${{ matrix.package.runner }}]
309- if : env.HOST_TRIPLET == 'riscv64-Linux ' && env.ON_QEMU == 'YES ' && env.CONTINUE_GHRUN != 'FALSE'
351+ - name : If Cross Compiling on QEMU HOST [${{ matrix.package.host }}<==>${{ matrix.package.runner }}]
352+ if : env.CROSS_COMPILING == 'YES ' && env.BUILD_SYSTEM == 'HOST ' && env.CONTINUE_GHRUN != 'FALSE'
310353 env :
311354 # GHCR_TOKEN: "${{ secrets.GHCR_TOKEN }}" #Needs Actions' Token if we want to make the packages public
312355 GHCR_TOKEN : " ${{ github.token }}"
@@ -319,23 +362,22 @@ jobs:
319362 set -x
320363 fi
321364 #-------------#
322- echo "RISCV64_ON_QEMU=TRUE" >> "${GITHUB_ENV}"
323365 echo "INSIDE_PODMAN=TRUE" >> "${GITHUB_ENV}"
324366 bash <(curl -qfsSL "https://raw.githubusercontent.com/pkgforge/devscripts/main/Linux/install_bins_curl.sh")
325367 echo "${GHCR_TOKEN}" | oras login --username "Azathothas" --password-stdin "ghcr.io"
326368 continue-on-error : true
327369
328370 - name : Set up QEMU [${{ matrix.package.host }}<==>${{ matrix.package.runner }}]
329- if : env.RISCV64_ON_QEMU == 'TRUE ' && env.CONTINUE_GHRUN != 'FALSE'
371+ if : env.CROSS_COMPILING == 'YES ' && env.CONTINUE_GHRUN != 'FALSE'
330372 uses : docker/setup-qemu-action@v3
331- continue-on-error : true
373+ continue-on-error : false
332374 - name : Set up Cross Arch [${{ matrix.package.host }}<==>${{ matrix.package.runner }}]
333- if : env.RISCV64_ON_QEMU == 'TRUE ' && env.CONTINUE_GHRUN != 'FALSE'
375+ if : env.CROSS_COMPILING == 'YES ' && env.CONTINUE_GHRUN != 'FALSE'
334376 uses : docker/setup-buildx-action@v3
335377 continue-on-error : true
336378
337379 - name : Install/Configure Podman [${{ matrix.package.host }}<==>${{ matrix.package.runner }}]
338- if : env.RISCV64_ON_QEMU == 'TRUE' && env.CONTINUE_GHRUN != 'FALSE'
380+ if : env.INSIDE_PODMAN == 'TRUE' && env.CONTINUE_GHRUN != 'FALSE'
339381 run : |
340382 ##Presets
341383 set +x ; set +e
@@ -368,7 +410,7 @@ jobs:
368410 continue-on-error : true
369411
370412 - name : Daemonize Podman [${{ matrix.package.host }}<==>${{ matrix.package.runner }}]
371- if : env.RISCV64_ON_QEMU == 'TRUE' && env.CONTINUE_GHRUN != 'FALSE'
413+ if : env.INSIDE_PODMAN == 'TRUE' && env.CONTINUE_GHRUN != 'FALSE'
372414 run : |
373415 ##Presets
374416 set +x ; set +e
@@ -383,8 +425,8 @@ jobs:
383425 ##Run
384426 sudo mkdir -p "/var/lib/containers/tmp-runner01"
385427 sudo chmod 1777 -v "/var/lib/containers/tmp-runner01"
386- POD_IMAGE="ghcr.io/pkgforge/devscripts/ubuntu-systemd-base:riscv64 "
387- sudo podman run --platform="linux/riscv64 " --detach --privileged \
428+ POD_IMAGE="ghcr.io/pkgforge/devscripts/ubuntu-systemd-base:${DOCKER_PLATFORM_ARCH} "
429+ sudo podman run --platform="${DOCKER_PLATFORM} " --detach --privileged \
388430 --device "/dev/fuse" --env-file="env.list" --hostname "$(hostname)" --name="ubuntu-builder" \
389431 --network="bridge" --pull="always" --systemd="always" --tz="UTC" --ulimit="host" \
390432 --volume "${HOME}/.minisign:/home/runner/.minisign" \
@@ -444,7 +486,7 @@ jobs:
444486 export GHCRPKG_LOCAL="${GHCRPKG_LOCAL}"
445487 export SBUILD_REBUILD="${SBUILD_REBUILD}"
446488 export GITHUB_TEST_BUILD="${GITHUB_TEST_BUILD}"
447- if [[ "${{ env.RISCV64_ON_QEMU }}" == "TRUE" ]]; then
489+ if [[ "${{ env.INSIDE_PODMAN }}" == "TRUE" ]]; then
448490 sudo podman cp "${SYSTMP}/BUILDER.sh" "${POD_ID}:/tmp/BUILDER.sh"
449491 sudo podman exec -u "runner" -w "/tmp" \
450492 -e DEBUG="${DEBUG}" \
@@ -458,6 +500,7 @@ jobs:
458500 -e SBUILD_REBUILD="${SBUILD_REBUILD}" \
459501 -e GITHUB_TEST_BUILD="${GITHUB_TEST_BUILD}" \
460502 -e INSIDE_PODMAN="${INSIDE_PODMAN}" \
503+ -e CROSS_COMPILING="${CROSS_COMPILING}" \
461504 -e SBUILD_FILE_URL="${SBUILD_FILE_URL}" \
462505 "${POD_ID}" \
463506 bash -c 'bash "/tmp/BUILDER.sh" "${SBUILD_FILE_URL}" | tee "/tmp/BUILD.log" 2>&1'
0 commit comments