bugfix #942
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Build majestic runtime | |
on: push | |
env: | |
LD_LIBRARY_PATH: /usr/local/lib | |
jobs: | |
linux-runtime: | |
name: Runtime (Linux) | |
runs-on: ubuntu-latest | |
container: | |
image: quay.io/pypa/manylinux2014_x86_64:2024-01-08-eb135ed | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Build runtime | |
working-directory: ./src/runtime/c | |
run: | | |
autoreconf -i | |
./configure | |
make | |
make install | |
- name: Upload artifact | |
uses: actions/upload-artifact@v3 | |
with: | |
name: libpgf-linux | |
path: | | |
/usr/local/lib/libpgf* | |
/usr/local/include/pgf | |
linux-haskell: | |
name: Haskell (Linux) | |
runs-on: ubuntu-latest | |
needs: linux-runtime | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Download artifact | |
uses: actions/download-artifact@v3 | |
with: | |
name: libpgf-linux | |
- run: | | |
sudo mv lib/* /usr/local/lib/ | |
sudo mv include/* /usr/local/include/ | |
- name: Setup Haskell | |
uses: haskell/actions/setup@v2 | |
with: | |
ghc-version: 8 | |
- name: Install Haskell build tools | |
run: | | |
cabal v1-install alex happy | |
- name: build and test the runtime | |
working-directory: ./src/runtime/haskell | |
run: | | |
cabal v1-install --extra-lib-dirs=/usr/local/lib | |
cabal test --extra-lib-dirs=/usr/local/lib | |
- name: build the compiler | |
working-directory: ./src/compiler | |
run: | | |
cabal v1-install | |
- name: Upload artifact | |
uses: actions/upload-artifact@master | |
with: | |
name: compiler-linux | |
path: | | |
~/.cabal/bin/gf | |
linux-python: | |
name: Python (Linux) | |
runs-on: ubuntu-latest | |
needs: linux-runtime | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Download artifact | |
uses: actions/download-artifact@v3 | |
with: | |
name: libpgf-linux | |
- name: Install cibuildwheel | |
run: | | |
python3 -m pip install git+https://github.com/joerick/cibuildwheel.git@main | |
- name: Install and test bindings | |
env: | |
CIBW_BEFORE_BUILD: cp -r lib/* /usr/lib/ && cp -r include/* /usr/include/ | |
CIBW_TEST_REQUIRES: pytest | |
CIBW_TEST_COMMAND: "pytest {project}/src/runtime/python" | |
CIBW_SKIP: "pp* *i686 *musllinux_x86_64" | |
run: | | |
python3 -m cibuildwheel src/runtime/python --output-dir wheelhouse | |
- uses: actions/upload-artifact@master | |
with: | |
name: python-linux | |
path: ./wheelhouse | |
# linux-javascript: | |
# name: JavaScript (Linux) | |
# runs-on: ubuntu-latest | |
# needs: linux-runtime | |
# | |
# steps: | |
# - uses: actions/checkout@v3 | |
# - name: Download artifact | |
# uses: actions/download-artifact@master | |
# with: | |
# name: libpgf-linux | |
# - run: | | |
# sudo mv lib/* /usr/local/lib/ | |
# sudo mv include/* /usr/local/include/ | |
# | |
# - name: Setup Node.js | |
# uses: actions/setup-node@v2 | |
# with: | |
# node-version: '12' | |
# | |
# - name: Install dependencies | |
# working-directory: ./src/runtime/javascript | |
# run: | | |
# npm ci | |
# | |
# - name: Run testsuite | |
# working-directory: ./src/runtime/javascript | |
# run: | | |
# npm run test | |
# ---------------------------------------------------------------------------- | |
macos-runtime: | |
name: Runtime (macOS) | |
runs-on: macOS-11 | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Install build tools | |
run: | | |
brew install \ | |
autoconf \ | |
automake \ | |
libtool \ | |
- name: Build runtime | |
working-directory: ./src/runtime/c | |
run: | | |
glibtoolize | |
autoreconf -i | |
./configure | |
make | |
sudo make install | |
- name: Upload artifact | |
uses: actions/upload-artifact@master | |
with: | |
name: libpgf-macos | |
path: | | |
/usr/local/lib/libpgf* | |
/usr/local/include/pgf | |
macos-haskell: | |
name: Haskell (macOS) | |
runs-on: macOS-11 | |
needs: macos-runtime | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Download artifact | |
uses: actions/download-artifact@master | |
with: | |
name: libpgf-macos | |
- run: | | |
sudo mv lib/* /usr/local/lib/ | |
sudo mv include/* /usr/local/include/ | |
- name: Setup Haskell | |
uses: haskell/actions/setup@v2 | |
with: | |
ghc-version: 8 | |
- name: Build & run testsuite | |
working-directory: ./src/runtime/haskell | |
run: | | |
cabal test --extra-lib-dirs=/usr/local/lib | |
macos-python: | |
name: Python (macOS) | |
runs-on: macOS-11 | |
needs: macos-runtime | |
env: | |
EXTRA_INCLUDE_DIRS: /usr/local/include | |
EXTRA_LIB_DIRS: /usr/local/lib | |
MACOSX_DEPLOYMENT_TARGET: 11.0 | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Download artifact | |
uses: actions/download-artifact@master | |
with: | |
name: libpgf-macos | |
- run: | | |
sudo mv lib/* /usr/local/lib/ | |
sudo mv include/* /usr/local/include/ | |
- name: Install cibuildwheel | |
run: | | |
python3 -m pip install git+https://github.com/joerick/cibuildwheel.git@main | |
- name: Install and test bindings | |
env: | |
CIBW_TEST_REQUIRES: pytest | |
CIBW_TEST_COMMAND: "pytest {project}/src/runtime/python" | |
CIBW_SKIP: "pp* cp36* cp37* cp38* cp39*" | |
run: | | |
python3 -m cibuildwheel src/runtime/python --output-dir wheelhouse | |
- uses: actions/upload-artifact@master | |
with: | |
name: python-macos | |
path: ./wheelhouse | |
# macos-javascript: | |
# name: JavaScript (macOS) | |
# runs-on: macOS-11 | |
# needs: macos-runtime | |
# | |
# steps: | |
# - uses: actions/checkout@v3 | |
# - name: Download artifact | |
# uses: actions/download-artifact@master | |
# with: | |
# name: libpgf-macos | |
# - run: | | |
# sudo mv lib/* /usr/local/lib/ | |
# sudo mv include/* /usr/local/include/ | |
# | |
# - name: Setup Node.js | |
# uses: actions/setup-node@v2 | |
# with: | |
# node-version: '12' | |
# | |
# - name: Install dependencies | |
# working-directory: ./src/runtime/javascript | |
# run: | | |
# npm ci | |
# | |
# - name: Run testsuite | |
# working-directory: ./src/runtime/javascript | |
# run: | | |
# npm run test | |
# ---------------------------------------------------------------------------- | |
mingw64-runtime: | |
name: Runtime (MinGW64) | |
runs-on: windows-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Setup MSYS2 | |
uses: msys2/setup-msys2@v2 | |
with: | |
msystem: MINGW64 | |
install: >- | |
base-devel | |
autoconf | |
automake | |
libtool | |
mingw-w64-x86_64-toolchain | |
mingw-w64-x86_64-libtool | |
- name: Build runtime | |
shell: msys2 {0} | |
working-directory: ./src/runtime/c | |
run: | | |
autoreconf -i | |
./configure | |
make | |
make install | |
- name: Upload artifact | |
uses: actions/upload-artifact@master | |
with: | |
name: libpgf-windows | |
path: | | |
${{runner.temp}}/msys64/mingw64/bin/libpgf* | |
${{runner.temp}}/msys64/mingw64/bin/libgcc_s_seh-1.dll | |
${{runner.temp}}/msys64/mingw64/bin/libstdc++-6.dll | |
${{runner.temp}}/msys64/mingw64/bin/libwinpthread-1.dll | |
${{runner.temp}}/msys64/mingw64/lib/libpgf* | |
${{runner.temp}}/msys64/mingw64/include/pgf | |
windows-python: | |
name: Python (Windows) | |
runs-on: windows-latest | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Setup Python | |
uses: actions/setup-python@v4 | |
with: | |
python-version: '3.10' | |
- name: Install cibuildwheel | |
run: | | |
python3 -m pip install git+https://github.com/joerick/cibuildwheel.git@main | |
- name: Install and test bindings | |
env: | |
CIBW_TEST_REQUIRES: pytest | |
CIBW_TEST_COMMAND: "pytest {project}\\src\\runtime\\python" | |
CIBW_SKIP: "pp* *-win32" | |
run: | | |
python3 -m cibuildwheel src\runtime\python --output-dir wheelhouse | |
- uses: actions/upload-artifact@master | |
with: | |
name: python-windows | |
path: ./wheelhouse | |
upload_pypi: | |
name: Upload to PyPI | |
needs: [linux-python, macos-python, windows-python] | |
runs-on: ubuntu-latest | |
if: github.ref == 'refs/heads/majestic' && github.event_name == 'push' | |
steps: | |
- uses: actions/checkout@v3 | |
- name: Set up Python | |
uses: actions/setup-python@v3 | |
with: | |
python-version: '3.x' | |
- name: Install twine | |
run: pip install twine | |
- uses: actions/download-artifact@master | |
with: | |
name: python-linux | |
path: ./dist | |
- uses: actions/download-artifact@master | |
with: | |
name: python-macos | |
path: ./dist | |
- uses: actions/download-artifact@master | |
with: | |
name: python-windows | |
path: ./dist | |
- name: Publish | |
env: | |
TWINE_USERNAME: __token__ | |
TWINE_PASSWORD: ${{ secrets.pypi_majestic_password }} | |
run: | | |
(cd ./src/runtime/python && curl -I --fail https://pypi.org/project/$(python setup.py --name)/$(python setup.py --version)/) || twine upload --skip-existing dist/* |