Skip to content

Merge branch 'majestic' of github.com:GrammaticalFramework/gf-core in… #933

Merge branch 'majestic' of github.com:GrammaticalFramework/gf-core in…

Merge branch 'majestic' of github.com:GrammaticalFramework/gf-core in… #933

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:/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:/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:/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/*