From 2d85397821e1066ece5498c3bbaadced1c338a9c Mon Sep 17 00:00:00 2001 From: Rudy Ges Date: Wed, 5 Feb 2025 10:32:55 +0100 Subject: [PATCH] [CI] simplify CI and fix build --- .github/workflows/main.yml | 968 +------------------------------------ haxe.opam | 4 +- 2 files changed, 6 insertions(+), 966 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 17d25d27f31..72f78776e3b 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -5,255 +5,6 @@ name: CI on: [push, pull_request] jobs: - windows64-build: - runs-on: windows-latest - env: - ACTIONS_ALLOW_UNSECURE_COMMANDS: true - PLATFORM: windows64 - ARCH: 64 - MINGW_ARCH: x86_64 - CYG_ROOT: D:\cygwin - steps: - - uses: actions/checkout@main - with: - submodules: recursive - - - name: Use GNU Tar from msys - run: | - echo "C:\msys64\usr\bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append - rm C:\msys64\usr\bin\bash.exe - - - name: choco install nsis - uses: nick-invision/retry@v2 - with: - timeout_minutes: 10 - max_attempts: 10 - command: choco install --no-progress nsis.portable --version 3.09 -y - - - name: choco install things - shell: pwsh - run: choco install --no-progress curl wget 7zip.portable -y - - - name: Prepend Chocolatey path - shell: pwsh - run: Write-Host "::add-path::C:\ProgramData\chocolatey\bin" - - - name: Install Neko from S3 - shell: pwsh - run: | - Invoke-WebRequest https://build.haxe.org/builds/neko/$env:PLATFORM/neko_latest.zip -OutFile $env:RUNNER_TEMP/neko_latest.zip - Expand-Archive $env:RUNNER_TEMP/neko_latest.zip -DestinationPath $env:RUNNER_TEMP - $NEKOPATH = Get-ChildItem $env:RUNNER_TEMP/neko-*-* - echo "$NEKOPATH" >> $env:GITHUB_PATH - echo "NEKOPATH=$NEKOPATH" >> $env:GITHUB_ENV - - - name: Print Neko version - run: neko -version 2>&1 - - - name: Setup ocaml - uses: ocaml/setup-ocaml@v2 - with: - ocaml-compiler: 4.08.1 - opam-repositories: | - opam-repository-mingw: https://github.com/ocaml-opam/opam-repository-mingw.git#sunset - default: https://github.com/ocaml/opam-repository.git - opam-local-packages: | - haxe.opam - - - name: Install dependencies - shell: pwsh - run: | - Set-PSDebug -Trace 1 - curl.exe -fsSL -o "libmbedtls.tar.xz" --retry 3 https://github.com/Simn/mingw64-mbedtls/releases/download/2.16.3/mingw64-$($env:MINGW_ARCH)-mbedtls-2.16.3-1.tar.xz - & "$($env:CYG_ROOT)/bin/bash.exe" @('-lc', 'curl -L https://cpanmin.us | perl - App::cpanminus') - & "$($env:CYG_ROOT)/bin/bash.exe" @('-lc', 'cpanm IPC::System::Simple module') - & "$($env:CYG_ROOT)/bin/bash.exe" @('-lc', 'cpanm String::ShellQuote') - & "$($env:CYG_ROOT)/bin/bash.exe" @('-lc', 'echo "$OLDPWD"') - & "$($env:CYG_ROOT)/bin/bash.exe" @('-lc', 'cd "$OLDPWD" && tar -C / -xvf libmbedtls.tar.xz') - - - name: Install OCaml libraries - shell: pwsh - run: | - Set-PSDebug -Trace 1 - opam install haxe --deps-only - opam list - - - name: Expose mingw dll files - shell: pwsh - run: Write-Host "::add-path::${env:CYG_ROOT}/usr/$($env:MINGW_ARCH)-w64-mingw32/sys-root/mingw/bin" - - # required to be able to retrieve the revision - - name: Mark directory as safe - shell: pwsh - run: | - Set-PSDebug -Trace 1 - & "$($env:CYG_ROOT)/bin/bash.exe" @('-lc', 'git config --global --add safe.directory "$OLDPWD"') - - - name: Set ADD_REVISION=1 for non-release - if: ${{ !startsWith(github.ref, 'refs/tags/') }} - shell: pwsh - run: echo "ADD_REVISION=1" >> $Env:GITHUB_ENV - - - name: Build Haxe - shell: pwsh - run: | - Set-PSDebug -Trace 1 - & "$($env:CYG_ROOT)/bin/bash.exe" @('-lc', 'cd "$OLDPWD" && opam config exec -- make -s -f Makefile.win -j`nproc` haxe 2>&1') - & "$($env:CYG_ROOT)/bin/bash.exe" @('-lc', 'cd "$OLDPWD" && opam config exec -- make -s -f Makefile.win haxelib 2>&1') - & "$($env:CYG_ROOT)/bin/bash.exe" @('-lc', 'cd "$OLDPWD" && opam config exec -- make -f Makefile.win echo_package_files package_bin package_installer_win package_choco 2>&1') - dir out - & "$($env:CYG_ROOT)/bin/bash.exe" @('-lc', 'cd "$OLDPWD" && cygcheck ./haxe.exe') - & "$($env:CYG_ROOT)/bin/bash.exe" @('-lc', 'cd "$OLDPWD" && cygcheck ./haxelib.exe') - & "$($env:CYG_ROOT)/bin/bash.exe" @('-lc', 'cd "$OLDPWD" && ls ./out') - - - name: Check artifact - shell: bash - run: | - ls out - # Output should contain binaries zip, installer zip and nupkg - [ $(ls -1 out | wc -l) -eq "3" ] - - - name: Upload artifact - uses: actions/upload-artifact@v3 - with: - name: win${{env.ARCH}}Binaries - path: out - - - windows-build: - runs-on: windows-latest - env: - ACTIONS_ALLOW_UNSECURE_COMMANDS: true - PLATFORM: windows - ARCH: 32 - MINGW_ARCH: i686 - CYG_ROOT: D:\cygwin - steps: - - uses: actions/checkout@main - with: - submodules: recursive - - - name: Use GNU Tar from msys - run: | - echo "C:\msys64\usr\bin" | Out-File -FilePath $env:GITHUB_PATH -Encoding utf8 -Append - rm C:\msys64\usr\bin\bash.exe - - - name: choco install nsis - uses: nick-invision/retry@v2 - with: - timeout_minutes: 10 - max_attempts: 10 - command: choco install --no-progress nsis.portable --version 3.09 -y - - - name: choco install things - shell: pwsh - run: choco install --no-progress curl wget 7zip.portable -y - - - name: Prepend Chocolatey path - shell: pwsh - run: Write-Host "::add-path::C:\ProgramData\chocolatey\bin" - - - name: Install Neko from S3 - shell: pwsh - run: | - Invoke-WebRequest https://build.haxe.org/builds/neko/$env:PLATFORM/neko_latest.zip -OutFile $env:RUNNER_TEMP/neko_latest.zip - Expand-Archive $env:RUNNER_TEMP/neko_latest.zip -DestinationPath $env:RUNNER_TEMP - $NEKOPATH = Get-ChildItem $env:RUNNER_TEMP/neko-*-* - echo "$NEKOPATH" >> $env:GITHUB_PATH - echo "NEKOPATH=$NEKOPATH" >> $env:GITHUB_ENV - - - name: Print Neko version - run: neko -version 2>&1 - - - name: Setup ocaml - id: ocaml - continue-on-error: true - uses: kLabz/setup-ocaml@win32 - with: - ocaml-compiler: 4.08.1 - opam-depext: false - opam-repositories: | - opam-repository-mingw: https://github.com/ocaml-opam/opam-repository-mingw.git#sunset - default: https://github.com/ocaml/opam-repository.git - opam-local-packages: | - haxe.opam - cache-prefix: w32-v1 - - # TODO make it work on first try - # (when cygwin cache doesn't exist, ocaml install fails with a curl error) - - name: Setup ocaml (second chance) - if: steps.ocaml.outcome == 'failure' - uses: kLabz/setup-ocaml@win32 - with: - ocaml-compiler: 4.08.1 - opam-depext: false - opam-repositories: | - opam-repository-mingw: https://github.com/ocaml-opam/opam-repository-mingw.git#sunset - default: https://github.com/ocaml/opam-repository.git - opam-local-packages: | - haxe.opam - cache-prefix: w32-v1 - - - name: Install dependencies - shell: pwsh - run: | - Set-PSDebug -Trace 1 - curl.exe -fsSL -o "libmbedtls.tar.xz" --retry 3 https://github.com/Simn/mingw64-mbedtls/releases/download/2.16.3/mingw64-$($env:MINGW_ARCH)-mbedtls-2.16.3-1.tar.xz - & "$($env:CYG_ROOT)/bin/bash.exe" @('-lc', 'curl -L https://cpanmin.us | perl - App::cpanminus') - & "$($env:CYG_ROOT)/bin/bash.exe" @('-lc', 'cpanm IPC::System::Simple module') - & "$($env:CYG_ROOT)/bin/bash.exe" @('-lc', 'cpanm String::ShellQuote') - & "$($env:CYG_ROOT)/bin/bash.exe" @('-lc', 'echo "$OLDPWD"') - & "$($env:CYG_ROOT)/bin/bash.exe" @('-lc', 'cd "$OLDPWD" && tar -C / -xvf libmbedtls.tar.xz') - - - name: Install OCaml libraries - shell: pwsh - run: | - Set-PSDebug -Trace 1 - opam install haxe --deps-only - opam list - - - name: Expose mingw dll files - shell: pwsh - run: Write-Host "::add-path::${env:CYG_ROOT}/usr/$($env:MINGW_ARCH)-w64-mingw32/sys-root/mingw/bin" - - # required to be able to retrieve the revision - - name: Mark directory as safe - shell: pwsh - run: | - Set-PSDebug -Trace 1 - & "$($env:CYG_ROOT)/bin/bash.exe" @('-lc', 'git config --global --add safe.directory "$OLDPWD"') - - - name: Set ADD_REVISION=1 for non-release - if: ${{ !startsWith(github.ref, 'refs/tags/') }} - shell: pwsh - run: echo "ADD_REVISION=1" >> $Env:GITHUB_ENV - - - name: Build Haxe - shell: pwsh - run: | - Set-PSDebug -Trace 1 - & "$($env:CYG_ROOT)/bin/bash.exe" @('-lc', 'cd "$OLDPWD" && opam config exec -- make -s -f Makefile.win -j`nproc` haxe 2>&1') - & "$($env:CYG_ROOT)/bin/bash.exe" @('-lc', 'cd "$OLDPWD" && opam config exec -- make -s -f Makefile.win haxelib 2>&1') - & "$($env:CYG_ROOT)/bin/bash.exe" @('-lc', 'cd "$OLDPWD" && opam config exec -- make -f Makefile.win echo_package_files package_bin package_installer_win package_choco 2>&1') - dir out - & "$($env:CYG_ROOT)/bin/bash.exe" @('-lc', 'cd "$OLDPWD" && cygcheck ./haxe.exe') - & "$($env:CYG_ROOT)/bin/bash.exe" @('-lc', 'cd "$OLDPWD" && cygcheck ./haxelib.exe') - & "$($env:CYG_ROOT)/bin/bash.exe" @('-lc', 'cd "$OLDPWD" && ls ./out') - - - name: Check artifact - shell: bash - run: | - ls out - # Output should contain binaries zip, installer zip and nupkg - [ $(ls -1 out | wc -l) -eq "3" ] - - - name: Upload artifact - uses: actions/upload-artifact@v3 - with: - name: win${{env.ARCH}}Binaries - path: out - - linux-build: runs-on: ubuntu-20.04 env: @@ -262,7 +13,8 @@ jobs: strategy: fail-fast: false matrix: - ocaml: ["4.08.1", "5.0.0"] + ocaml: ["4.08.1"] + # ocaml: ["4.08.1", "5.0.0"] steps: - uses: actions/checkout@main with: @@ -347,726 +99,14 @@ jobs: EOL - name: Upload artifact - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: name: linuxBinaries${{ (matrix.ocaml == '5.0.0' && '_ocaml5') || '' }} path: out - name: Upload xmldoc artifact - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 if: matrix.ocaml == '4.08.1' with: name: xmldoc path: extra/doc - - linux-test: - needs: linux-build - runs-on: ubuntu-20.04 - env: - PLATFORM: linux64 - TEST: ${{matrix.target}} - HXCPP_COMPILE_CACHE: ~/hxcache - HAXE_STD_PATH: /usr/local/share/haxe/std - strategy: - fail-fast: false - matrix: - ocaml: ["4.08.1", "5.0.0"] - target: [macro, js, hl, cpp, 'java,jvm', cs, php, python, lua, flash, neko] - include: - - target: hl - APT_PACKAGES: cmake ninja-build libturbojpeg-dev - - target: cpp - APT_PACKAGES: gcc-multilib g++-multilib - - target: lua - APT_PACKAGES: ncurses-dev - - target: flash - APT_PACKAGES: libglib2.0-0 libgtk2.0-0 libfreetype6 xvfb - steps: - - uses: actions/checkout@main - with: - submodules: recursive - - uses: actions/download-artifact@v3 - with: - name: linuxBinaries${{ (matrix.ocaml == '5.0.0' && '_ocaml5') || '' }} - path: linuxBinaries - - - name: Install Neko from S3 - run: | - set -ex - - curl -sSL https://build.haxe.org/builds/neko/$PLATFORM/neko_latest.tar.gz -o $RUNNER_TEMP/neko_latest.tar.gz - tar -xf $RUNNER_TEMP/neko_latest.tar.gz -C $RUNNER_TEMP - NEKOPATH=`echo $RUNNER_TEMP/neko-*-*` - sudo mkdir -p /usr/local/bin - sudo mkdir -p /usr/local/lib/neko - sudo ln -s $NEKOPATH/{neko,nekoc,nekoml,nekotools} /usr/local/bin/ - sudo ln -s $NEKOPATH/libneko.* /usr/local/lib/ - sudo ln -s $NEKOPATH/*.ndll /usr/local/lib/neko/ - echo "NEKOPATH=$NEKOPATH" >> $GITHUB_ENV - - - name: Print Neko version - run: neko -version 2>&1 - - - - name: Setup Haxe - run: | - sudo apt install -qqy libmbedtls-dev - - set -ex - tar -xf linuxBinaries/*_bin.tar.gz -C linuxBinaries --strip-components=1 - sudo mkdir -p /usr/local/bin/ - sudo mkdir -p /usr/local/share/haxe/ - sudo ln -s `pwd`/linuxBinaries/haxe /usr/local/bin/haxe - sudo ln -s `pwd`/linuxBinaries/haxelib /usr/local/bin/haxelib - sudo ln -s `pwd`/linuxBinaries/std /usr/local/share/haxe/std - - - name: Print Haxe version - run: haxe -version - - - name: Setup haxelib - run: | - set -ex - mkdir ~/haxelib - haxelib setup ~/haxelib - - - name: Install apt packages - if: matrix.APT_PACKAGES - run: | - set -ex - sudo apt update -qqy - sudo apt install -qqy ${{matrix.APT_PACKAGES}} - - - name: Flash setup - if: matrix.target == 'flash' - run: export DISPLAY=:99.0 - - - name: Test - run: haxe RunCi.hxml - working-directory: ${{github.workspace}}/tests - - test-docgen: - needs: linux-build - runs-on: ubuntu-20.04 - env: - PLATFORM: linux64 - HXCPP_COMPILE_CACHE: ~/hxcache - steps: - - uses: actions/checkout@main - with: - submodules: recursive - - - uses: actions/download-artifact@v3 - with: - name: linuxBinaries - path: linuxBinaries - - - name: Download xmldoc artifact - uses: actions/download-artifact@v3 - with: - name: xmldoc - path: xmldoc - - - name: Install Neko from S3 - run: | - set -ex - - curl -sSL https://build.haxe.org/builds/neko/$PLATFORM/neko_latest.tar.gz -o $RUNNER_TEMP/neko_latest.tar.gz - tar -xf $RUNNER_TEMP/neko_latest.tar.gz -C $RUNNER_TEMP - NEKOPATH=`echo $RUNNER_TEMP/neko-*-*` - sudo mkdir -p /usr/local/bin - sudo mkdir -p /usr/local/lib/neko - sudo ln -s $NEKOPATH/{neko,nekoc,nekoml,nekotools} /usr/local/bin/ - sudo ln -s $NEKOPATH/libneko.* /usr/local/lib/ - sudo ln -s $NEKOPATH/*.ndll /usr/local/lib/neko/ - echo "NEKOPATH=$NEKOPATH" >> $GITHUB_ENV - - - name: Print Neko version - run: neko -version 2>&1 - - - - name: Setup Haxe - run: | - sudo apt install -qqy libmbedtls-dev - - set -ex - tar -xf linuxBinaries/*_bin.tar.gz -C linuxBinaries --strip-components=1 - sudo mkdir -p /usr/local/bin/ - sudo mkdir -p /usr/local/share/haxe/ - sudo ln -s `pwd`/linuxBinaries/haxe /usr/local/bin/haxe - sudo ln -s `pwd`/linuxBinaries/haxelib /usr/local/bin/haxelib - sudo ln -s `pwd`/linuxBinaries/std /usr/local/share/haxe/std - - - name: Print Haxe version - run: haxe -version - - - name: Setup haxelib - run: | - set -ex - mkdir ~/haxelib - haxelib setup ~/haxelib - - - name: Test documentation generation - run: | - set -ex - haxelib git dox https://github.com/HaxeFoundation/dox.git - haxelib git hxtemplo https://github.com/Simn/hxtemplo.git - haxelib git hxargs https://github.com/Simn/hxargs.git - haxelib git markdown https://github.com/dpeek/haxe-markdown.git - haxelib git hxcpp https://github.com/HaxeFoundation/hxcpp.git - cd $(haxelib libpath hxcpp)/tools/hxcpp - haxe compile.hxml - cd - - haxe dox.hxml - mkdir resources - cp ../../src-json/* resources - cpp/Dox -i ../../xmldoc -ex microsoft -ex javax -ex cs.internal -theme $(haxelib libpath dox)/themes/default - working-directory: ${{github.workspace}}/tests/docgen - - linux-arm64: - runs-on: ubuntu-20.04 - permissions: - packages: write - env: - FORCE_COLOR: 1 - steps: - - name: Login to GitHub Container Registry - uses: docker/login-action@v2 - with: - registry: ghcr.io - username: ${{ github.actor }} - password: ${{ secrets.GITHUB_TOKEN }} - - - name: Install Earthly - 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' - - - name: Set up QEMU - id: qemu - uses: docker/setup-qemu-action@v2 - with: - image: tonistiigi/binfmt:latest - platforms: all - - - uses: actions/checkout@main - with: - submodules: recursive - - - name: Set CONTAINER_ vars - run: | - echo "CONTAINER_REG=$(echo ${{ github.repository }} | tr '[:upper:]' '[:lower:]')" >> $GITHUB_ENV; - echo "CONTAINER_TAG=$(echo ${{ github.ref_name }} | sed -e 's/[^A-Za-z0-9\.]/-/g')" >> $GITHUB_ENV; - - - name: Build devcontainer - 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" - env: - EARTHLY_PUSH: "${{ github.event_name == 'push' }}" - EARTHLY_USE_INLINE_CACHE: true - EARTHLY_SAVE_INLINE_CACHE: true - - - name: Set ADD_REVISION=1 for non-release - if: ${{ !startsWith(github.ref, 'refs/tags/') }} - run: echo "ADD_REVISION=1" >> $GITHUB_ENV - - - name: Build - run: earthly --platform=linux/arm64 +build --ADD_REVISION="$ADD_REVISION" --SET_SAFE_DIRECTORY="true" - env: - EARTHLY_PUSH: "${{ github.event_name == 'push' }}" - EARTHLY_REMOTE_CACHE: "ghcr.io/${{env.CONTAINER_REG}}_cache:build-${{env.CONTAINER_TAG}}-arm64" - - - name: Upload artifact - uses: actions/upload-artifact@v3 - with: - name: linuxArm64Binaries - path: out/linux/arm64 - - mac-build: - runs-on: macos-latest - env: - PLATFORM: mac - OPAMYES: 1 - MACOSX_DEPLOYMENT_TARGET: 10.13 - steps: - - uses: actions/checkout@main - with: - submodules: recursive - - - name: Cache opam - id: cache-opam - uses: actions/cache@v3.0.11 - with: - path: ~/.opam/ - key: ${{ runner.os }}-${{ hashFiles('./haxe.opam', './libs/') }} - - - name: Install Neko from S3 - run: | - set -ex - - curl -sSL https://build.haxe.org/builds/neko/$PLATFORM/neko_latest.tar.gz -o $RUNNER_TEMP/neko_latest.tar.gz - tar -xf $RUNNER_TEMP/neko_latest.tar.gz -C $RUNNER_TEMP - NEKOPATH=`echo $RUNNER_TEMP/neko-*-*` - sudo mkdir -p /usr/local/bin - sudo mkdir -p /usr/local/lib/neko - sudo ln -s $NEKOPATH/{neko,nekoc,nekoml,nekotools} /usr/local/bin/ - sudo ln -s $NEKOPATH/libneko.* /usr/local/lib/ - sudo ln -s $NEKOPATH/*.ndll /usr/local/lib/neko/ - echo "NEKOPATH=$NEKOPATH" >> $GITHUB_ENV - - - name: Print Neko version - run: neko -version 2>&1 - - - name: Install dependencies - env: - # For compatibility with macOS 10.13 - ZLIB_VERSION: 1.3 - MBEDTLS_VERSION: 2.28.5 - PCRE2_VERSION: 10.42 - run: | - set -ex - brew uninstall openssl@1.0.2t || echo - brew uninstall python@2.7.17 || echo - brew untap local/openssl || echo - brew untap local/python2 || echo - brew update - # brew unlink python@2 - brew bundle --file=tests/Brewfile --no-upgrade || brew link --overwrite awscli - brew install libunistring - brew install cpanminus - cpanm IPC::System::Simple - cpanm String::ShellQuote - curl -L https://www.zlib.net/zlib-$ZLIB_VERSION.tar.gz | tar xz - cd zlib-$ZLIB_VERSION - ./configure - make && make install - cd .. - curl -L https://github.com/ARMmbed/mbedtls/archive/v$MBEDTLS_VERSION.tar.gz | tar xz - cd mbedtls-$MBEDTLS_VERSION - make && make install - cd .. - curl -L https://github.com/PCRE2Project/pcre2/releases/download/pcre2-$PCRE2_VERSION/pcre2-$PCRE2_VERSION.tar.gz | tar xz - cd pcre2-$PCRE2_VERSION - ./configure --enable-unicode --enable-pcre2-8 --enable-pcre2-16 --enable-pcre2-32 --enable-unicode-properties --enable-pcre2grep-libz --enable-pcre2grep-libbz2 --enable-jit - make && make install - cd .. - - - name: Install OCaml libraries - if: steps.cache-opam.outputs.cache-hit != 'true' - run: | - set -ex - opam init # --disable-sandboxing - opam update - opam switch create 4.08.1 - eval $(opam env) - opam env - opam pin add ctypes 0.17.1 --yes - opam pin add haxe . --no-action - opam install haxe --deps-only --assume-depexts - opam list - ocamlopt -v - - - name: Set ADD_REVISION=1 for non-release - if: ${{ !startsWith(github.ref, 'refs/tags/') }} - run: echo "ADD_REVISION=1" >> $GITHUB_ENV - - - name: Build Haxe - run: | - set -ex - eval $(opam env) - opam config exec -- make -s -j`sysctl -n hw.ncpu` STATICLINK=1 "LIB_PARAMS=/usr/local/lib/libz.a /usr/local/lib/libpcre2-8.a /usr/local/lib/libmbedtls.a /usr/local/lib/libmbedcrypto.a /usr/local/lib/libmbedx509.a -cclib '-framework Security -framework CoreFoundation'" haxe - opam config exec -- make -s haxelib - make -s package_unix package_installer_mac - ls -l out - otool -L ./haxe - otool -L ./haxelib - - - name: Upload artifact - uses: actions/upload-artifact@v3 - with: - name: macBinaries - path: out - - - windows64-test: - needs: windows64-build - runs-on: windows-latest - env: - ACTIONS_ALLOW_UNSECURE_COMMANDS: true - PLATFORM: windows64 - TEST: ${{matrix.target}} - HXCPP_COMPILE_CACHE: ~/hxcache - ARCH: 64 - strategy: - fail-fast: false - matrix: - # TODO enable lua after https://github.com/HaxeFoundation/haxe/issues/10919 - target: [macro, js, hl, cpp, 'java,jvm', cs, php, python, flash, neko] - steps: - - uses: actions/checkout@main - with: - submodules: recursive - - uses: actions/download-artifact@v3 - with: - name: win${{env.ARCH}}Binaries - path: win${{env.ARCH}}Binaries - - - name: Install Neko from S3 - shell: pwsh - run: | - Invoke-WebRequest https://build.haxe.org/builds/neko/$env:PLATFORM/neko_latest.zip -OutFile $env:RUNNER_TEMP/neko_latest.zip - Expand-Archive $env:RUNNER_TEMP/neko_latest.zip -DestinationPath $env:RUNNER_TEMP - $NEKOPATH = Get-ChildItem $env:RUNNER_TEMP/neko-*-* - echo "$NEKOPATH" >> $env:GITHUB_PATH - echo "NEKOPATH=$NEKOPATH" >> $env:GITHUB_ENV - - - name: Print Neko version - run: neko -version 2>&1 - - - uses: actions/setup-node@v3 - with: - node-version: 18.17.1 - - # - name: Quick test - # shell: pwsh - # run: | - # $DOWNLOADDIR="./win$($env:ARCH)Binaries" - # new-item -Name $DOWNLOADDIR -ItemType directory - # Invoke-WebRequest https://build.haxe.org/builds/haxe/$env:PLATFORM/haxe_latest.zip -OutFile $DOWNLOADDIR/haxe_bin.zip - - - name: Setup Haxe - shell: pwsh - run: | - $DOWNLOADDIR="./win$($env:ARCH)Binaries" - Expand-Archive $DOWNLOADDIR/*_bin.zip -DestinationPath $DOWNLOADDIR - Set-PSDebug -Trace 1 - $HAXEPATH = Get-ChildItem $DOWNLOADDIR/haxe_*_* -Directory - Write-Host "::add-path::$HAXEPATH" - Write-Host "::set-env name=HAXELIB_ROOT::$HAXEPATH\lib" - - - name: Print Haxe version - shell: pwsh - run: haxe -version - - - name: "Make Python 3 be available as python3 in the cmdline" - shell: pwsh - run: | - Set-PSDebug -Trace 1 - $pypath = python -c "import sys; print(sys.executable)" - $py3path = $pypath.replace("python.exe","python3.exe") - cmd /c mklink $py3path $pypath - python3 -V - - - name: Install hererocks - if: matrix.target == 'lua' - shell: cmd - run: | - pip install hererocks - hererocks lua53 -l5.3 -rlatest - call lua53/bin/activate - - - name: Install wget - if: matrix.target == 'flash' - shell: cmd - run: | - choco install wget - wget --version - - - name: Setup haxelib - shell: pwsh - run: | - mkdir "$env:HAXELIB_ROOT" - haxelib setup "$env:HAXELIB_ROOT" - - - name: Test - shell: pwsh - run: haxe RunCi.hxml - working-directory: ${{github.workspace}}/tests - - - windows-test: - needs: windows-build - runs-on: windows-latest - env: - ACTIONS_ALLOW_UNSECURE_COMMANDS: true - PLATFORM: windows - TEST: ${{matrix.target}} - HXCPP_COMPILE_CACHE: ~/hxcache - ARCH: 32 - strategy: - fail-fast: false - matrix: - # TODO jvm: https://github.com/HaxeFoundation/haxe/issues/8601 - # TODO enable lua after https://github.com/HaxeFoundation/haxe/issues/10919 - target: [macro, js, hl, cpp, java, cs, php, python, flash, neko] - steps: - - uses: actions/checkout@main - with: - submodules: recursive - - uses: actions/download-artifact@v3 - with: - name: win${{env.ARCH}}Binaries - path: win${{env.ARCH}}Binaries - - - name: Install Neko from S3 - shell: pwsh - run: | - Invoke-WebRequest https://build.haxe.org/builds/neko/$env:PLATFORM/neko_latest.zip -OutFile $env:RUNNER_TEMP/neko_latest.zip - Expand-Archive $env:RUNNER_TEMP/neko_latest.zip -DestinationPath $env:RUNNER_TEMP - $NEKOPATH = Get-ChildItem $env:RUNNER_TEMP/neko-*-* - echo "$NEKOPATH" >> $env:GITHUB_PATH - echo "NEKOPATH=$NEKOPATH" >> $env:GITHUB_ENV - - - name: Print Neko version - run: neko -version 2>&1 - - - uses: actions/setup-node@v3 - with: - node-version: 18.17.1 - - # - name: Quick test - # shell: pwsh - # run: | - # $DOWNLOADDIR="./win$($env:ARCH)Binaries" - # new-item -Name $DOWNLOADDIR -ItemType directory - # Invoke-WebRequest https://build.haxe.org/builds/haxe/$env:PLATFORM/haxe_latest.zip -OutFile $DOWNLOADDIR/haxe_bin.zip - - - name: Setup Haxe - shell: pwsh - run: | - $DOWNLOADDIR="./win$($env:ARCH)Binaries" - Expand-Archive $DOWNLOADDIR/*_bin.zip -DestinationPath $DOWNLOADDIR - Set-PSDebug -Trace 1 - $HAXEPATH = Get-ChildItem $DOWNLOADDIR/haxe_*_* -Directory - Write-Host "::add-path::$HAXEPATH" - Write-Host "::set-env name=HAXELIB_ROOT::$HAXEPATH\lib" - - - name: Print Haxe version - shell: pwsh - run: haxe -version - - - name: "Make Python 3 be available as python3 in the cmdline" - shell: pwsh - run: | - Set-PSDebug -Trace 1 - $pypath = python -c "import sys; print(sys.executable)" - $py3path = $pypath.replace("python.exe","python3.exe") - cmd /c mklink $py3path $pypath - python3 -V - - - name: Install hererocks - if: matrix.target == 'lua' - shell: cmd - run: | - pip install hererocks - hererocks lua53 -l5.3 -rlatest - call lua53/bin/activate - - - name: Install wget - if: matrix.target == 'flash' - shell: cmd - run: | - choco install wget - wget --version - - - name: Setup haxelib - shell: pwsh - run: | - mkdir "$env:HAXELIB_ROOT" - haxelib setup "$env:HAXELIB_ROOT" - - - name: Test - shell: pwsh - run: haxe RunCi.hxml - working-directory: ${{github.workspace}}/tests - - - mac-test: - needs: mac-build - runs-on: macos-latest - env: - PLATFORM: mac - TEST: ${{matrix.target}} - HXCPP_COMPILE_CACHE: ~/hxcache - HAXE_STD_PATH: /usr/local/share/haxe/std - strategy: - fail-fast: false - matrix: - target: [macro, js, hl, cpp, 'java,jvm', cs, php, python, flash, neko] - include: - - target: hl - BREW_PACKAGES: ninja - steps: - - uses: actions/checkout@main - with: - submodules: recursive - - uses: actions/download-artifact@v3 - with: - name: macBinaries - path: macBinaries - - - name: Install Neko from S3 - run: | - set -ex - - curl -sSL https://build.haxe.org/builds/neko/$PLATFORM/neko_latest.tar.gz -o $RUNNER_TEMP/neko_latest.tar.gz - tar -xf $RUNNER_TEMP/neko_latest.tar.gz -C $RUNNER_TEMP - NEKOPATH=`echo $RUNNER_TEMP/neko-*-*` - sudo mkdir -p /usr/local/bin - sudo mkdir -p /usr/local/lib/neko - sudo ln -s $NEKOPATH/{neko,nekoc,nekoml,nekotools} /usr/local/bin/ - sudo ln -s $NEKOPATH/libneko.* /usr/local/lib/ - sudo ln -s $NEKOPATH/*.ndll /usr/local/lib/neko/ - echo "NEKOPATH=$NEKOPATH" >> $GITHUB_ENV - - - name: Print Neko version - run: neko -version 2>&1 - - - name: Setup Haxe - run: | - # mkdir ./macBinaries - # curl -sSL https://build.haxe.org/builds/haxe/mac/haxe_latest.tar.gz -o ./macBinaries/haxe_bin.tar.gz - - set -ex - tar -xf macBinaries/*_bin.tar.gz -C macBinaries --strip-components=1 - sudo mkdir -p /usr/local/bin/ - sudo mkdir -p /usr/local/share/haxe/ - sudo ln -s `pwd`/macBinaries/haxe /usr/local/bin/haxe - sudo ln -s `pwd`/macBinaries/haxelib /usr/local/bin/haxelib - sudo ln -s `pwd`/macBinaries/std /usr/local/share/haxe/std - - - name: Print Haxe version - run: haxe -version - - - name: Setup haxelib - run: | - set -ex - mkdir ~/haxelib - haxelib setup ~/haxelib - - - name: Install homebrew packages - if: matrix.BREW_PACKAGES - run: brew install ${{matrix.BREW_PACKAGES}} - - - name: Test - run: | - # disable invalid Unicode filenames on APFS - echo "" > sys/compile-fs.hxml - haxe RunCi.hxml - working-directory: ${{github.workspace}}/tests - - - deploy: - if: success() && github.repository_owner == 'HaxeFoundation' && github.event_name != 'pull_request' - needs: [linux-test, linux-arm64, mac-test, windows-test, windows64-test] - runs-on: ubuntu-20.04 - steps: - # this is only needed for to get `COMMIT_DATE`... - # maybe https://github.uint.cloudmunity/t/expose-commit-timestamp-in-the-github-context-data/16460/3 - # would be faster - - name: Checkout the repository - uses: actions/checkout@main - - - name: Download build artifacts - uses: actions/download-artifact@v3 - - - name: Install awscli - run: | - set -ex - sudo apt-get update -qqy - sudo apt-get install -qqy awscli - - # https://stackoverflow.com/questions/58033366/how-to-get-current-branch-within-github-actions - - name: Extract branch name - id: extract_branch - shell: bash - run: echo "branch=${GITHUB_REF#refs/heads/}" >> $GITHUB_OUTPUT - - - name: Upload binaries - shell: bash - env: - AWS_ACCESS_KEY_ID: ${{ secrets.HXBUILDS_AWS_ACCESS_KEY_ID }} - AWS_SECRET_ACCESS_KEY: ${{ secrets.HXBUILDS_AWS_SECRET_ACCESS_KEY }} - HXBUILDS_S3ADDR: ${{ secrets.HXBUILDS_S3ADDR }} - AWS_EC2_METADATA_DISABLED: true - run: | - set -ex - COMMIT_HASH_SHORT=${GITHUB_SHA:0:7} - COMMIT_DATE=`TZ=UTC git show --quiet --date='format-local:%Y-%m-%d' --format="%cd"` - FILE_NAME=haxe_${COMMIT_DATE}_${{ steps.extract_branch.outputs.branch }}_${COMMIT_HASH_SHORT} - aws s3 cp linuxBinaries/*_bin.tar.gz ${HXBUILDS_S3ADDR}/haxe/linux64/${FILE_NAME}.tar.gz - aws s3 cp linuxArm64Binaries/*_bin.tar.gz ${HXBUILDS_S3ADDR}/haxe/linux-arm64/${FILE_NAME}.tar.gz - aws s3 cp macBinaries/*_bin.tar.gz ${HXBUILDS_S3ADDR}/haxe/mac/${FILE_NAME}.tar.gz - aws s3 cp macBinaries/*_installer.tar.gz ${HXBUILDS_S3ADDR}/haxe/mac-installer/${FILE_NAME}.tar.gz - aws s3 cp win64Binaries/*_bin.zip ${HXBUILDS_S3ADDR}/haxe/windows64/${FILE_NAME}.zip - aws s3 cp win64Binaries/*_installer.zip ${HXBUILDS_S3ADDR}/haxe/windows64-installer/${FILE_NAME}.zip - aws s3 cp win64Binaries/*.nupkg ${HXBUILDS_S3ADDR}/haxe/windows64-choco/ - aws s3 cp win32Binaries/*_bin.zip ${HXBUILDS_S3ADDR}/haxe/windows/${FILE_NAME}.zip - aws s3 cp win32Binaries/*_installer.zip ${HXBUILDS_S3ADDR}/haxe/windows-installer/${FILE_NAME}.zip - aws s3 cp win32Binaries/*.nupkg ${HXBUILDS_S3ADDR}/haxe/windows-choco/ - - - name: Update "latest" - if: github.ref == 'refs/heads/development' - shell: bash - env: - AWS_ACCESS_KEY_ID: ${{ secrets.HXBUILDS_AWS_ACCESS_KEY_ID }} - AWS_SECRET_ACCESS_KEY: ${{ secrets.HXBUILDS_AWS_SECRET_ACCESS_KEY }} - HXBUILDS_S3ADDR: ${{ secrets.HXBUILDS_S3ADDR }} - AWS_EC2_METADATA_DISABLED: true - run: | - set -ex - aws s3 cp linuxBinaries/*_bin.tar.gz ${HXBUILDS_S3ADDR}/haxe/linux64/haxe_latest.tar.gz - aws s3 cp linuxArm64Binaries/*_bin.tar.gz ${HXBUILDS_S3ADDR}/haxe/linux-arm64/haxe_latest.tar.gz - aws s3 cp macBinaries/*_bin.tar.gz ${HXBUILDS_S3ADDR}/haxe/mac/haxe_latest.tar.gz - aws s3 cp macBinaries/*_installer.tar.gz ${HXBUILDS_S3ADDR}/haxe/mac-installer/haxe_latest.tar.gz - aws s3 cp win64Binaries/*_bin.zip ${HXBUILDS_S3ADDR}/haxe/windows64/haxe_latest.zip - aws s3 cp win64Binaries/*_installer.zip ${HXBUILDS_S3ADDR}/haxe/windows64-installer/haxe_latest.zip - aws s3 cp win32Binaries/*_bin.zip ${HXBUILDS_S3ADDR}/haxe/windows/haxe_latest.zip - aws s3 cp win32Binaries/*_installer.zip ${HXBUILDS_S3ADDR}/haxe/windows-installer/haxe_latest.zip - - # Chocolatey packages have to be named with version number, - # so let's use web redirection to keep the original file name. - [[ "$HXBUILDS_S3ADDR" =~ s3://([^/]+)(.*) ]] && HXBUILDS_S3BUCKET="${BASH_REMATCH[1]}" && HXBUILDS_S3PATH="${BASH_REMATCH[2]}" - [[ `echo win64Binaries/*.nupkg` =~ win64Binaries/(.+) ]] && FILE_NAME="${BASH_REMATCH[1]}" - aws s3 cp ${HXBUILDS_S3ADDR}/haxe/windows64-choco/${FILE_NAME} ${HXBUILDS_S3ADDR}/haxe/windows64-choco/haxe_latest.nupkg --acl public-read --website-redirect "${HXBUILDS_S3PATH}/haxe/windows64-choco/${FILE_NAME}" - [[ `echo win32Binaries/*.nupkg` =~ win32Binaries/(.+) ]] && FILE_NAME="${BASH_REMATCH[1]}" - aws s3 cp ${HXBUILDS_S3ADDR}/haxe/windows-choco/${FILE_NAME} ${HXBUILDS_S3ADDR}/haxe/windows-choco/haxe_latest.nupkg --acl public-read --website-redirect "${HXBUILDS_S3PATH}/haxe/windows-choco/${FILE_NAME}" - - deploy_apidoc: - if: success() && github.repository_owner == 'HaxeFoundation' && github.event_name != 'pull_request' - needs: [linux-test, linux-arm64, mac-test, windows-test, windows64-test] - runs-on: ubuntu-20.04 - steps: - - name: Install dependencies - run: | - set -ex - sudo apt-get install -qqy libc6 - - - name: Download Haxe - uses: actions/download-artifact@v3 - with: - name: linuxBinaries - path: linuxBinaries - - - name: Setup Haxe - run: | - set -ex - tar -xf linuxBinaries/*_bin.tar.gz -C linuxBinaries --strip-components=1 - sudo mkdir -p /usr/local/bin/ - sudo mkdir -p /usr/local/share/haxe/ - sudo ln -s `pwd`/linuxBinaries/haxe /usr/local/bin/haxe - sudo ln -s `pwd`/linuxBinaries/haxelib /usr/local/bin/haxelib - sudo ln -s `pwd`/linuxBinaries/std /usr/local/share/haxe/std - - - name: Download xmldoc artifact - uses: actions/download-artifact@v3 - with: - name: xmldoc - path: xmldoc - - - name: Deploy to api.haxe.org - env: - GHP_EMAIL: haxe-ci@onthewings.net - GHP_USERNAME: Haxe CI Bot - GHP_REMOTE: ${{ secrets.GHP_REMOTE }} - run: | - set -ex - LOCAL="`pwd`/extra/api.haxe.org" - git clone "${GHP_REMOTE}" "${LOCAL}" - haxe --cwd "${LOCAL}" --run ImportXml "`pwd`/xmldoc" diff --git a/haxe.opam b/haxe.opam index e93455e01f1..909f195c2d2 100644 --- a/haxe.opam +++ b/haxe.opam @@ -25,13 +25,13 @@ depends: [ "dune" {>= "1.11"} "sedlex" {>= "2.0"} "xml-light" - "extlib" {>= "1.7.8"} + "extlib" {= "1.7.8"} "sha" "camlp-streams" "conf-libpcre2-8" "conf-zlib" "conf-neko" - "luv" {>= "0.5.12"} + "luv" {= "0.5.12"} "ipaddr" "terminal_size" ]