forked from GitHub/gf-core
370 lines
8.9 KiB
YAML
370 lines
8.9 KiB
YAML
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/*
|