From 4223935b124a0b16053aef719abccdc5fca36287 Mon Sep 17 00:00:00 2001 From: "John J. Camilleri" Date: Mon, 30 Nov 2020 20:57:20 +0100 Subject: Combine binary workflows into one with multiple jobs --- .github/workflows/build-binary-packages.yml | 173 ++++++++++++++++++++++++++++ .github/workflows/build-debian-package.yml | 45 -------- .github/workflows/build-macos-package.yml | 43 ------- .github/workflows/build-windows-package.yml | 92 --------------- 4 files changed, 173 insertions(+), 180 deletions(-) create mode 100644 .github/workflows/build-binary-packages.yml delete mode 100644 .github/workflows/build-debian-package.yml delete mode 100644 .github/workflows/build-macos-package.yml delete mode 100644 .github/workflows/build-windows-package.yml (limited to '.github') diff --git a/.github/workflows/build-binary-packages.yml b/.github/workflows/build-binary-packages.yml new file mode 100644 index 000000000..e387ae9b1 --- /dev/null +++ b/.github/workflows/build-binary-packages.yml @@ -0,0 +1,173 @@ +name: Build Binary Packages + +on: + workflow_dispatch: + release: + +jobs: + +# --- + + ubuntu: + name: Build Ubuntu package + runs-on: ubuntu-18.04 + # env: + # LC_ALL: C.UTF-8 + + steps: + - uses: actions/checkout@v2 + + - name: Install build tools + run: | + sudo apt update + sudo apt install -y \ + make \ + dpkg-dev \ + debhelper \ + haskell-platform \ + libghc-json-dev \ + python-dev \ + default-jdk \ + libtool-bin + + - name: Build Debian package + run: | + make deb + + - name: Copy package + run: | + cp ../gf_*.deb dist/ + + - name: Upload artifact + uses: actions/upload-artifact@v2 + with: + name: gf-${{ github.sha }}-debian + path: dist/gf_*.deb + if-no-files-found: error + +# --- + + macos: + name: Build macOS package + runs-on: macos-10.15 + strategy: + matrix: + ghc: ["8.6.5"] + cabal: ["2.4"] + + steps: + - uses: actions/checkout@v2 + + - name: Setup Haskell + uses: actions/setup-haskell@v1 + id: setup-haskell-cabal + with: + ghc-version: ${{ matrix.ghc }} + cabal-version: ${{ matrix.cabal }} + + - name: Install build tools + run: | + brew install \ + automake + cabal v1-install alex happy + + - name: Build macOS package + run: | + sudo mkdir -p /Library/Java/Home + sudo ln -s /usr/local/opt/openjdk/include /Library/Java/Home/include + make pkg + + - name: Upload artifact + uses: actions/upload-artifact@v2 + with: + name: gf-${{ github.sha }}-macos + path: dist/gf-*.pkg + if-no-files-found: error + +# --- + + windows: + name: Build Windows package + runs-on: windows-2019 + strategy: + matrix: + ghc: ["8.6.5"] + cabal: ["2.4"] + + steps: + - uses: actions/checkout@v2 + + - name: Setup MSYS2 + uses: msys2/setup-msys2@v2 + with: + install: >- + base-devel + gcc + python-devel + + - name: Prepare dist folder + shell: msys2 {0} + run: | + mkdir /c/tmp-dist + mkdir /c/tmp-dist/c + mkdir /c/tmp-dist/java + mkdir /c/tmp-dist/python + + - name: Build C runtime + shell: msys2 {0} + run: | + cd src/runtime/c + autoreconf -i + ./configure + make + make install + cp /mingw64/bin/libpgf-0.dll /c/tmp-dist/c + cp /mingw64/bin/libgu-0.dll /c/tmp-dist/c + + - name: Build Java bindings + shell: msys2 {0} + run: | + export PATH="${PATH}:/c/Program Files/Java/jdk8u275-b01/bin" + cd src/runtime/java + make \ + JNI_INCLUDES="-I \"/c/Program Files/Java/jdk8u275-b01/include\" -I \"/c/Program Files/Java/jdk8u275-b01/include/win32\" -I \"/mingw64/include\" -D__int64=int64_t" \ + WINDOWS_LDFLAGS="-L\"/mingw64/lib\" -no-undefined" + make install + cp .libs//msys-jpgf-0.dll /c/tmp-dist/java/jpgf.dll + cp jpgf.jar /c/tmp-dist/java + + - name: Build Python bindings + shell: msys2 {0} + env: + EXTRA_INCLUDE_DIRS: /mingw64/include + EXTRA_LIB_DIRS: /mingw64/lib + run: | + cd src/runtime/python + python setup.py build + python setup.py install + cp /usr/lib/python3.8/site-packages/pgf* /c/tmp-dist/python + + - name: Setup Haskell + uses: actions/setup-haskell@v1 + id: setup-haskell-cabal + with: + ghc-version: ${{ matrix.ghc }} + cabal-version: ${{ matrix.cabal }} + + - name: Install Haskell build tools + run: | + cabal install alex happy + + - name: Build GF + run: | + cabal install --only-dependencies -fserver + cabal configure -fserver + cabal build + copy dist\build\gf\gf.exe C:\tmp-dist + + - name: Upload artifact + uses: actions/upload-artifact@v2 + with: + name: gf-${{ github.sha }}-windows + path: C:\tmp-dist\* + if-no-files-found: error diff --git a/.github/workflows/build-debian-package.yml b/.github/workflows/build-debian-package.yml deleted file mode 100644 index 02a0b3846..000000000 --- a/.github/workflows/build-debian-package.yml +++ /dev/null @@ -1,45 +0,0 @@ -name: Build Debian Package - -on: - workflow_dispatch: - -jobs: - build: - name: Build on ${{ matrix.os }} - runs-on: ${{ matrix.os }} - strategy: - matrix: - os: [ubuntu-18.04] - env: - LC_ALL: C.UTF-8 - - steps: - - uses: actions/checkout@v2 - - - name: Install build tools - run: | - sudo apt update - sudo apt install -y \ - make \ - dpkg-dev \ - debhelper \ - haskell-platform \ - libghc-json-dev \ - python-dev \ - default-jdk \ - libtool-bin - - - name: Build Debian package - run: | - make deb - - - name: Copy package - run: | - cp ../gf_*.deb dist/ - - - name: Upload artifact - uses: actions/upload-artifact@v2 - with: - name: gf-${{ github.sha }}-debian - path: dist/gf_*.deb - if-no-files-found: error diff --git a/.github/workflows/build-macos-package.yml b/.github/workflows/build-macos-package.yml deleted file mode 100644 index 1ebf5dfa6..000000000 --- a/.github/workflows/build-macos-package.yml +++ /dev/null @@ -1,43 +0,0 @@ -name: Build macOS Package - -on: - workflow_dispatch: - -jobs: - build: - name: Build on ${{ matrix.os }} - runs-on: ${{ matrix.os }} - strategy: - matrix: - os: [macos-10.15] - ghc: ["8.6.5"] - cabal: ["2.4"] - - steps: - - uses: actions/checkout@v2 - - - name: Setup Haskell - uses: actions/setup-haskell@v1 - id: setup-haskell-cabal - with: - ghc-version: ${{ matrix.ghc }} - cabal-version: ${{ matrix.cabal }} - - - name: Install build tools - run: | - brew install \ - automake - cabal v1-install alex happy - - - name: Build macOS package - run: | - sudo mkdir -p /Library/Java/Home - sudo ln -s /usr/local/opt/openjdk/include /Library/Java/Home/include - make pkg - - - name: Upload artifact - uses: actions/upload-artifact@v2 - with: - name: gf-${{ github.sha }}-macos - path: dist/gf-*.pkg - if-no-files-found: error diff --git a/.github/workflows/build-windows-package.yml b/.github/workflows/build-windows-package.yml deleted file mode 100644 index df6f77be9..000000000 --- a/.github/workflows/build-windows-package.yml +++ /dev/null @@ -1,92 +0,0 @@ -name: Build Windows Package - -on: - workflow_dispatch: - -jobs: - build: - name: Build on ${{ matrix.os }} - runs-on: ${{ matrix.os }} - strategy: - matrix: - os: [windows-2019] - ghc: ["8.6.5"] - cabal: ["2.4"] - - steps: - - uses: actions/checkout@v2 - - - name: Setup MSYS2 - uses: msys2/setup-msys2@v2 - with: - install: >- - base-devel - gcc - python-devel - - - name: Prepare dist folder - shell: msys2 {0} - run: | - mkdir /c/tmp-dist - mkdir /c/tmp-dist/c - mkdir /c/tmp-dist/java - mkdir /c/tmp-dist/python - - - name: Build C runtime - shell: msys2 {0} - run: | - cd src/runtime/c - autoreconf -i - ./configure - make - make install - cp /mingw64/bin/libpgf-0.dll /c/tmp-dist/c - cp /mingw64/bin/libgu-0.dll /c/tmp-dist/c - - - name: Build Java bindings - shell: msys2 {0} - run: | - export PATH="${PATH}:/c/Program Files/Java/jdk8u275-b01/bin" - cd src/runtime/java - make \ - JNI_INCLUDES="-I \"/c/Program Files/Java/jdk8u275-b01/include\" -I \"/c/Program Files/Java/jdk8u275-b01/include/win32\" -I \"/mingw64/include\" -D__int64=int64_t" \ - WINDOWS_LDFLAGS="-L\"/mingw64/lib\" -no-undefined" - make install - cp .libs//msys-jpgf-0.dll /c/tmp-dist/java/jpgf.dll - cp jpgf.jar /c/tmp-dist/java - - - name: Build Python bindings - shell: msys2 {0} - env: - EXTRA_INCLUDE_DIRS: /mingw64/include - EXTRA_LIB_DIRS: /mingw64/lib - run: | - cd src/runtime/python - python setup.py build - python setup.py install - cp /usr/lib/python3.8/site-packages/pgf* /c/tmp-dist/python - - - name: Setup Haskell - uses: actions/setup-haskell@v1 - id: setup-haskell-cabal - with: - ghc-version: ${{ matrix.ghc }} - cabal-version: ${{ matrix.cabal }} - - - name: Install Haskell build tools - run: | - cabal install alex happy - - - name: Build GF - run: | - cabal install --only-dependencies -fserver - cabal configure -fserver - cabal build - copy dist\build\gf\gf.exe C:\tmp-dist - - - name: Upload artifact - uses: actions/upload-artifact@v2 - with: - name: gf-${{ github.sha }}-windows - path: C:\tmp-dist\* - if-no-files-found: error -- cgit v1.2.3