From 4f256447e27a9537ad6a271b5709f71f9039672b Mon Sep 17 00:00:00 2001 From: "John J. Camilleri" Date: Thu, 22 Jul 2021 22:27:15 +0200 Subject: [PATCH 1/8] Add separate Windows binary CI action for easier testing --- .github/workflows/build-windows-binary.yml | 91 ++++++++++++++++++++++ 1 file changed, 91 insertions(+) create mode 100644 .github/workflows/build-windows-binary.yml diff --git a/.github/workflows/build-windows-binary.yml b/.github/workflows/build-windows-binary.yml new file mode 100644 index 000000000..0c0570cf8 --- /dev/null +++ b/.github/workflows/build-windows-binary.yml @@ -0,0 +1,91 @@ +name: Build Windows Binary + +on: + push: + +jobs: + 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 From 7b9bb780a2f8c296270987c8e4c146b3b73b76b0 Mon Sep 17 00:00:00 2001 From: "John J. Camilleri" Date: Thu, 22 Jul 2021 22:34:26 +0200 Subject: [PATCH 2/8] Find Java stuff --- .github/workflows/build-windows-binary.yml | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/.github/workflows/build-windows-binary.yml b/.github/workflows/build-windows-binary.yml index 0c0570cf8..60c13d4f7 100644 --- a/.github/workflows/build-windows-binary.yml +++ b/.github/workflows/build-windows-binary.yml @@ -23,6 +23,11 @@ jobs: gcc python-devel + - name: Find Java stuff + shell: msys2 {0} + run: | + find /c -name "jni.h" + - name: Prepare dist folder shell: msys2 {0} run: | From c67fe05c0896c6eff1eca8fc1f1ab5559c918bcb Mon Sep 17 00:00:00 2001 From: "John J. Camilleri" Date: Thu, 22 Jul 2021 22:44:53 +0200 Subject: [PATCH 3/8] Narrow search, print env var --- .github/workflows/build-windows-binary.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.github/workflows/build-windows-binary.yml b/.github/workflows/build-windows-binary.yml index 60c13d4f7..b30c7648a 100644 --- a/.github/workflows/build-windows-binary.yml +++ b/.github/workflows/build-windows-binary.yml @@ -26,7 +26,8 @@ jobs: - name: Find Java stuff shell: msys2 {0} run: | - find /c -name "jni.h" + echo $JAVA_HOME_8_X64 + find "/c/Program Files/Java" -name "jni.h" - name: Prepare dist folder shell: msys2 {0} From 7674f078d61fac8f193886c1e1dfe803e479f6de Mon Sep 17 00:00:00 2001 From: "John J. Camilleri" Date: Thu, 22 Jul 2021 22:49:44 +0200 Subject: [PATCH 4/8] Try another path --- .github/workflows/build-windows-binary.yml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/workflows/build-windows-binary.yml b/.github/workflows/build-windows-binary.yml index b30c7648a..46a34d7f1 100644 --- a/.github/workflows/build-windows-binary.yml +++ b/.github/workflows/build-windows-binary.yml @@ -26,8 +26,7 @@ jobs: - name: Find Java stuff shell: msys2 {0} run: | - echo $JAVA_HOME_8_X64 - find "/c/Program Files/Java" -name "jni.h" + find "/c/hostedtoolcache/windows/Java_Adopt_jdk" -name "jni.h" - name: Prepare dist folder shell: msys2 {0} From 2610219f6a4d43d53d43c04c12f597c9b2eba39e Mon Sep 17 00:00:00 2001 From: "John J. Camilleri" Date: Thu, 22 Jul 2021 22:56:39 +0200 Subject: [PATCH 5/8] Update path --- .github/workflows/build-windows-binary.yml | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/.github/workflows/build-windows-binary.yml b/.github/workflows/build-windows-binary.yml index 46a34d7f1..be39f357b 100644 --- a/.github/workflows/build-windows-binary.yml +++ b/.github/workflows/build-windows-binary.yml @@ -23,11 +23,6 @@ jobs: gcc python-devel - - name: Find Java stuff - shell: msys2 {0} - run: | - find "/c/hostedtoolcache/windows/Java_Adopt_jdk" -name "jni.h" - - name: Prepare dist folder shell: msys2 {0} run: | @@ -47,13 +42,15 @@ jobs: cp /mingw64/bin/libpgf-0.dll /c/tmp-dist/c cp /mingw64/bin/libgu-0.dll /c/tmp-dist/c + # JAVA_HOME_8_X64 = C:\hostedtoolcache\windows\Java_Adopt_jdk\8.0.292-10\x64 - name: Build Java bindings shell: msys2 {0} run: | - export PATH="${PATH}:/c/Program Files/Java/jdk8u275-b01/bin" + export JDKPATH=/c/hostedtoolcache/windows/Java_Adopt_jdk/8.0.292-10/x64 + export PATH="${PATH}:${JDKPATH}/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" \ + JNI_INCLUDES="-I \"${JDKPATH}/include\" -I \"${JDKPATH}/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 From 0d6c67f6b10ad542f9f74045b450177657ed6ac3 Mon Sep 17 00:00:00 2001 From: "John J. Camilleri" Date: Thu, 22 Jul 2021 23:02:22 +0200 Subject: [PATCH 6/8] Try without rewriting envvar --- .github/workflows/build-windows-binary.yml | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/.github/workflows/build-windows-binary.yml b/.github/workflows/build-windows-binary.yml index be39f357b..42a8c516f 100644 --- a/.github/workflows/build-windows-binary.yml +++ b/.github/workflows/build-windows-binary.yml @@ -42,19 +42,18 @@ jobs: cp /mingw64/bin/libpgf-0.dll /c/tmp-dist/c cp /mingw64/bin/libgu-0.dll /c/tmp-dist/c - # JAVA_HOME_8_X64 = C:\hostedtoolcache\windows\Java_Adopt_jdk\8.0.292-10\x64 - name: Build Java bindings shell: msys2 {0} run: | - export JDKPATH=/c/hostedtoolcache/windows/Java_Adopt_jdk/8.0.292-10/x64 - export PATH="${PATH}:${JDKPATH}/bin" + export PATH="${PATH}:${JAVA_HOME_8_X64}/bin" cd src/runtime/java make \ - JNI_INCLUDES="-I \"${JDKPATH}/include\" -I \"${JDKPATH}/include/win32\" -I \"/mingw64/include\" -D__int64=int64_t" \ + JNI_INCLUDES="-I \"${JAVA_HOME_8_X64}/include\" -I \"${JAVA_HOME_8_X64}/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 .libs/msys-jpgf-0.dll /c/tmp-dist/java/jpgf.dll cp jpgf.jar /c/tmp-dist/java + ls -al /c/tmp/dist/java - name: Build Python bindings shell: msys2 {0} From 7fdbf3f40080d3f23eb4514eb4533893021aed6d Mon Sep 17 00:00:00 2001 From: "John J. Camilleri" Date: Thu, 22 Jul 2021 23:11:01 +0200 Subject: [PATCH 7/8] Update path in main workflow for binaries --- .github/workflows/build-binary-packages.yml | 8 +- .github/workflows/build-windows-binary.yml | 92 --------------------- 2 files changed, 5 insertions(+), 95 deletions(-) delete mode 100644 .github/workflows/build-windows-binary.yml diff --git a/.github/workflows/build-binary-packages.yml b/.github/workflows/build-binary-packages.yml index 810fa1352..8770bed3e 100644 --- a/.github/workflows/build-binary-packages.yml +++ b/.github/workflows/build-binary-packages.yml @@ -136,16 +136,18 @@ jobs: cp /mingw64/bin/libpgf-0.dll /c/tmp-dist/c cp /mingw64/bin/libgu-0.dll /c/tmp-dist/c + # JAVA_HOME_8_X64 = C:\hostedtoolcache\windows\Java_Adopt_jdk\8.0.292-10\x64 - name: Build Java bindings shell: msys2 {0} run: | - export PATH="${PATH}:/c/Program Files/Java/jdk8u275-b01/bin" + export JDKPATH=/c/hostedtoolcache/windows/Java_Adopt_jdk/8.0.292-10/x64 + export PATH="${PATH}:${JDKPATH}/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" \ + JNI_INCLUDES="-I \"${JDKPATH}/include\" -I \"${JDKPATH}/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 .libs/msys-jpgf-0.dll /c/tmp-dist/java/jpgf.dll cp jpgf.jar /c/tmp-dist/java - name: Build Python bindings diff --git a/.github/workflows/build-windows-binary.yml b/.github/workflows/build-windows-binary.yml deleted file mode 100644 index 42a8c516f..000000000 --- a/.github/workflows/build-windows-binary.yml +++ /dev/null @@ -1,92 +0,0 @@ -name: Build Windows Binary - -on: - push: - -jobs: - 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}:${JAVA_HOME_8_X64}/bin" - cd src/runtime/java - make \ - JNI_INCLUDES="-I \"${JAVA_HOME_8_X64}/include\" -I \"${JAVA_HOME_8_X64}/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 - ls -al /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 From 4df8999ed5d477aae92bfa8c0d9e814930d9d4c5 Mon Sep 17 00:00:00 2001 From: "John J. Camilleri" Date: Fri, 23 Jul 2021 08:05:35 +0200 Subject: [PATCH 8/8] Change Python 3.8 to 3.9 --- .github/workflows/build-binary-packages.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build-binary-packages.yml b/.github/workflows/build-binary-packages.yml index 8770bed3e..53f039714 100644 --- a/.github/workflows/build-binary-packages.yml +++ b/.github/workflows/build-binary-packages.yml @@ -159,7 +159,7 @@ jobs: cd src/runtime/python python setup.py build python setup.py install - cp /usr/lib/python3.8/site-packages/pgf* /c/tmp-dist/python + cp /usr/lib/python3.9/site-packages/pgf* /c/tmp-dist/python - name: Setup Haskell uses: actions/setup-haskell@v1