@@ -254,55 +254,73 @@ jobs:
254254 env :
255255 ROBBOT_PASS : ${{ secrets.ROBBOT_PASS }}
256256
257- linux-arm64 :
258- runs-on : ubuntu-20.04
259- permissions :
260- packages : write
257+ linux-arm64-build :
258+ runs-on : ubuntu-22.04-arm
261259 env :
262- FORCE_COLOR : 1
260+ PLATFORM : linux-arm64
261+ OPAMYES : 1
263262 steps :
264- - name : Login to GitHub Container Registry
265- uses : docker/login-action@v3
263+ - uses : actions/checkout@main
266264 with :
267- registry : ghcr.io
268- username : ${{ github.actor }}
269- password : ${{ secrets.GITHUB_TOKEN }}
270-
271- - name : Install Earthly
272- run : sudo /bin/sh -c 'wget https://github.com/earthly/earthly/releases/download/v0.6.13/earthly-linux-amd64 -O /usr/local/bin/earthly && chmod +x /usr/local/bin/earthly && /usr/local/bin/earthly bootstrap --with-autocomplete'
265+ submodules : recursive
273266
274- - name : Set up QEMU
275- id : qemu
276- uses : docker/setup-qemu-action@v3
267+ - name : Cache opam
268+ id : cache-opam
269+ uses : actions/cache@v4
277270 with :
278- image : tonistiigi/binfmt:latest
279- platforms : all
271+ path : ~/.opam/
272+ key : arm-${{ runner.os }}-${{ hashFiles('./haxe.opam', './libs/') }}
280273
281- - uses : actions/checkout@main
282- with :
283- submodules : recursive
274+ - name : Install Neko from S3
275+ run : |
276+ set -ex
284277
285- - name : Set CONTAINER_ vars
278+ curl -sSL https://build.haxe.org/builds/neko/$PLATFORM/neko_latest.tar.gz -o $RUNNER_TEMP/neko_latest.tar.gz
279+ tar -xf $RUNNER_TEMP/neko_latest.tar.gz -C $RUNNER_TEMP
280+ NEKOPATH=`echo $RUNNER_TEMP/neko-*-*`
281+ sudo mkdir -p /usr/local/bin
282+ sudo mkdir -p /usr/local/include
283+ sudo mkdir -p /usr/local/lib/neko
284+ sudo ln -s $NEKOPATH/{neko,nekoc,nekoml,nekotools} /usr/local/bin/
285+ sudo ln -s $NEKOPATH/libneko.* /usr/local/lib/
286+ sudo ln -s $NEKOPATH/include/* /usr/local/include/
287+ sudo ln -s $NEKOPATH/*.ndll /usr/local/lib/neko/
288+ echo "NEKOPATH=$NEKOPATH" >> $GITHUB_ENV
289+
290+ - name : Print Neko version
291+ run : neko -version 2>&1
292+
293+
294+ - name : Install dependencies
286295 run : |
287- echo "CONTAINER_REG=$(echo ${{ github.repository }} | tr '[:upper:]' '[:lower:]')" >> $GITHUB_ENV;
288- echo "CONTAINER_TAG=$(echo ${{ github.ref_name }} | sed -e 's/[^A-Za-z0-9\.]/-/g')" >> $GITHUB_ENV;
296+ set -ex
297+ sudo apt-get update -qqy
298+ sudo apt-get install -qqy ocaml-nox opam libpcre2-dev zlib1g-dev libgtk2.0-dev libmbedtls-dev libipc-system-simple-perl libstring-shellquote-perl ninja-build
289299
290- - name : Build devcontainer
291- run : earthly --platform=linux/arm64 +devcontainer --IMAGE_NAME="ghcr.io/${CONTAINER_REG}_devcontainer" --IMAGE_TAG="${CONTAINER_TAG}-arm64" --IMAGE_CACHE="ghcr.io/haxefoundation/haxe_devcontainer:development-arm64"
292- env :
293- EARTHLY_PUSH : " ${{ github.event_name == 'push' }}"
294- EARTHLY_USE_INLINE_CACHE : true
295- EARTHLY_SAVE_INLINE_CACHE : true
300+ - name : Install OCaml libraries
301+ if : steps.cache-opam.outputs.cache-hit != 'true'
302+ run : |
303+ set -ex
304+ opam init
305+ opam pin add haxe . --no-action
306+ opam install haxe --deps-only --assume-depexts
307+ opam list
308+ ocamlopt -v
296309
297310 - name : Set ADD_REVISION=1 for non-release
298311 if : ${{ !startsWith(github.ref, 'refs/tags/') }}
299312 run : echo "ADD_REVISION=1" >> $GITHUB_ENV
300313
301- - name : Build
302- run : earthly --platform=linux/arm64 +build --ADD_REVISION="$ADD_REVISION" --SET_SAFE_DIRECTORY="true"
303- env :
304- EARTHLY_PUSH : " ${{ github.event_name == 'push' }}"
305- EARTHLY_REMOTE_CACHE : " ghcr.io/${{env.CONTAINER_REG}}_cache:build-${{env.CONTAINER_TAG}}-arm64"
314+ - name : Build Haxe
315+ run : |
316+ set -ex
317+ eval $(opam env)
318+ opam config exec -- make -s -j`nproc` STATICLINK=1 haxe
319+ opam config exec -- make -s haxelib
320+ make -s package_unix
321+ ls -l out
322+ ldd -v ./haxe
323+ ldd -v ./haxelib
306324
307325 - name : Get KhaTools_linux_arm64
308326 run : git clone https://github.com/Kode/KhaTools_linux_arm64.git
@@ -342,6 +360,82 @@ jobs:
342360 env :
343361 ROBBOT_PASS : ${{ secrets.ROBBOT_PASS }}
344362
363+ linux-arm64-test :
364+ needs : linux-arm64-build
365+ runs-on : ubuntu-22.04-arm
366+ env :
367+ PLATFORM : linux-arm64
368+ TEST : ${{matrix.target}}
369+ HXCPP_COMPILE_CACHE : ~/hxcache
370+ HAXE_STD_PATH : /usr/local/share/haxe/std
371+ strategy :
372+ fail-fast : false
373+ matrix :
374+ target : [macro, js, cpp, jvm, php, python, lua, neko]
375+ include :
376+ - target : lua
377+ APT_PACKAGES : ncurses-dev
378+ steps :
379+ - uses : actions/checkout@main
380+ with :
381+ submodules : recursive
382+ - uses : actions/download-artifact@v4
383+ with :
384+ name : linuxArm64Binaries
385+ path : linuxBinaries
386+
387+ - name : Install Neko from S3
388+ run : |
389+ set -ex
390+
391+ curl -sSL https://build.haxe.org/builds/neko/$PLATFORM/neko_latest.tar.gz -o $RUNNER_TEMP/neko_latest.tar.gz
392+ tar -xf $RUNNER_TEMP/neko_latest.tar.gz -C $RUNNER_TEMP
393+ NEKOPATH=`echo $RUNNER_TEMP/neko-*-*`
394+ sudo mkdir -p /usr/local/bin
395+ sudo mkdir -p /usr/local/include
396+ sudo mkdir -p /usr/local/lib/neko
397+ sudo ln -s $NEKOPATH/{neko,nekoc,nekoml,nekotools} /usr/local/bin/
398+ sudo ln -s $NEKOPATH/libneko.* /usr/local/lib/
399+ sudo ln -s $NEKOPATH/include/* /usr/local/include/
400+ sudo ln -s $NEKOPATH/*.ndll /usr/local/lib/neko/
401+ echo "NEKOPATH=$NEKOPATH" >> $GITHUB_ENV
402+
403+ - name : Print Neko version
404+ run : neko -version 2>&1
405+
406+
407+ - name : Setup Haxe
408+ run : |
409+ sudo apt install -qqy libmbedtls-dev
410+
411+ set -ex
412+ tar -xf linuxBinaries/*_bin.tar.gz -C linuxBinaries --strip-components=1
413+ sudo mkdir -p /usr/local/bin/
414+ sudo mkdir -p /usr/local/share/haxe/
415+ sudo ln -s `pwd`/linuxBinaries/haxe /usr/local/bin/haxe
416+ sudo ln -s `pwd`/linuxBinaries/haxelib /usr/local/bin/haxelib
417+ sudo ln -s `pwd`/linuxBinaries/std /usr/local/share/haxe/std
418+
419+ - name : Print Haxe version
420+ run : haxe -version
421+
422+ - name : Setup haxelib
423+ run : |
424+ set -ex
425+ mkdir ~/haxelib
426+ haxelib setup ~/haxelib
427+
428+ - name : Install apt packages
429+ if : matrix.APT_PACKAGES
430+ run : |
431+ set -ex
432+ sudo apt update -qqy
433+ sudo apt install -qqy ${{matrix.APT_PACKAGES}}
434+
435+ - name : Test
436+ run : haxe RunCi.hxml
437+ working-directory : ${{github.workspace}}/tests
438+
345439 mac-build :
346440 strategy :
347441 fail-fast : false
0 commit comments