mirror of
https://github.com/GrammaticalFramework/gf-core.git
synced 2026-09-15 23:06:01 -06:00
more updates from master
This commit is contained in:
@@ -2,7 +2,7 @@ name: Build Binary Packages
|
|||||||
|
|
||||||
on:
|
on:
|
||||||
workflow_dispatch:
|
workflow_dispatch:
|
||||||
release:
|
release:
|
||||||
types: ["created"]
|
types: ["created"]
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
@@ -13,9 +13,9 @@ jobs:
|
|||||||
name: Build Ubuntu package
|
name: Build Ubuntu package
|
||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
os:
|
ghc: ["9.6"]
|
||||||
- ubuntu-18.04
|
cabal: ["3.10"]
|
||||||
- ubuntu-20.04
|
os: ["ubuntu-24.04"]
|
||||||
|
|
||||||
runs-on: ${{ matrix.os }}
|
runs-on: ${{ matrix.os }}
|
||||||
|
|
||||||
@@ -25,12 +25,13 @@ jobs:
|
|||||||
# Note: `haskell-platform` is listed as requirement in debian/control,
|
# Note: `haskell-platform` is listed as requirement in debian/control,
|
||||||
# which is why it's installed using apt instead of the Setup Haskell action.
|
# which is why it's installed using apt instead of the Setup Haskell action.
|
||||||
|
|
||||||
# - name: Setup Haskell
|
- name: Setup Haskell
|
||||||
# uses: actions/setup-haskell@v1
|
uses: haskell-actions/setup@v2
|
||||||
# id: setup-haskell-cabal
|
id: setup-haskell-cabal
|
||||||
# with:
|
with:
|
||||||
# ghc-version: ${{ matrix.ghc }}
|
ghc-version: ${{ matrix.ghc }}
|
||||||
# cabal-version: ${{ matrix.cabal }}
|
cabal-version: ${{ matrix.cabal }}
|
||||||
|
if: matrix.os == 'ubuntu-24.04'
|
||||||
|
|
||||||
- name: Install build tools
|
- name: Install build tools
|
||||||
run: |
|
run: |
|
||||||
@@ -39,14 +40,15 @@ jobs:
|
|||||||
make \
|
make \
|
||||||
dpkg-dev \
|
dpkg-dev \
|
||||||
debhelper \
|
debhelper \
|
||||||
haskell-platform \
|
|
||||||
libghc-json-dev \
|
libghc-json-dev \
|
||||||
python-dev \
|
|
||||||
default-jdk \
|
default-jdk \
|
||||||
libtool-bin
|
python-dev-is-python3 \
|
||||||
|
libtool-bin
|
||||||
|
cabal install alex happy
|
||||||
|
|
||||||
- name: Build package
|
- name: Build package
|
||||||
run: |
|
run: |
|
||||||
|
export PYTHONPATH="/home/runner/work/gf-core/gf-core/debian/gf/usr/local/lib/python3.12/dist-packages/"
|
||||||
make deb
|
make deb
|
||||||
|
|
||||||
- name: Copy package
|
- name: Copy package
|
||||||
@@ -54,7 +56,7 @@ jobs:
|
|||||||
cp ../gf_*.deb dist/
|
cp ../gf_*.deb dist/
|
||||||
|
|
||||||
- name: Upload artifact
|
- name: Upload artifact
|
||||||
uses: actions/upload-artifact@v2
|
uses: actions/upload-artifact@v4
|
||||||
with:
|
with:
|
||||||
name: gf-${{ github.event.release.tag_name }}-${{ matrix.os }}.deb
|
name: gf-${{ github.event.release.tag_name }}-${{ matrix.os }}.deb
|
||||||
path: dist/gf_*.deb
|
path: dist/gf_*.deb
|
||||||
@@ -64,14 +66,14 @@ jobs:
|
|||||||
run: |
|
run: |
|
||||||
mv dist/gf_*.deb dist/gf-${{ github.event.release.tag_name }}-${{ matrix.os }}.deb
|
mv dist/gf_*.deb dist/gf-${{ github.event.release.tag_name }}-${{ matrix.os }}.deb
|
||||||
|
|
||||||
- uses: actions/upload-release-asset@v1.0.2
|
#- uses: actions/upload-release-asset@v1.0.2
|
||||||
env:
|
# env:
|
||||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
with:
|
# with:
|
||||||
upload_url: ${{ github.event.release.upload_url }}
|
# upload_url: ${{ github.event.release.upload_url }}
|
||||||
asset_path: dist/gf-${{ github.event.release.tag_name }}-${{ matrix.os }}.deb
|
# asset_path: dist/gf-${{ github.event.release.tag_name }}-${{ matrix.os }}.deb
|
||||||
asset_name: gf-${{ github.event.release.tag_name }}-${{ matrix.os }}.deb
|
# asset_name: gf-${{ github.event.release.tag_name }}-${{ matrix.os }}.deb
|
||||||
asset_content_type: application/octet-stream
|
# asset_content_type: application/octet-stream
|
||||||
|
|
||||||
# ---
|
# ---
|
||||||
|
|
||||||
@@ -79,16 +81,16 @@ jobs:
|
|||||||
name: Build macOS package
|
name: Build macOS package
|
||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
ghc: ["8.6.5"]
|
ghc: ["9.6"]
|
||||||
cabal: ["2.4"]
|
cabal: ["3.10"]
|
||||||
os: ["macos-10.15"]
|
os: ["macos-latest", "macos-13"]
|
||||||
runs-on: ${{ matrix.os }}
|
runs-on: ${{ matrix.os }}
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v2
|
- uses: actions/checkout@v2
|
||||||
|
|
||||||
- name: Setup Haskell
|
- name: Setup Haskell
|
||||||
uses: actions/setup-haskell@v1
|
uses: haskell-actions/setup@v2
|
||||||
id: setup-haskell-cabal
|
id: setup-haskell-cabal
|
||||||
with:
|
with:
|
||||||
ghc-version: ${{ matrix.ghc }}
|
ghc-version: ${{ matrix.ghc }}
|
||||||
@@ -97,8 +99,10 @@ jobs:
|
|||||||
- name: Install build tools
|
- name: Install build tools
|
||||||
run: |
|
run: |
|
||||||
brew install \
|
brew install \
|
||||||
automake
|
automake \
|
||||||
|
libtool
|
||||||
cabal v1-install alex happy
|
cabal v1-install alex happy
|
||||||
|
pip install setuptools
|
||||||
|
|
||||||
- name: Build package
|
- name: Build package
|
||||||
run: |
|
run: |
|
||||||
@@ -107,24 +111,24 @@ jobs:
|
|||||||
make pkg
|
make pkg
|
||||||
|
|
||||||
- name: Upload artifact
|
- name: Upload artifact
|
||||||
uses: actions/upload-artifact@v2
|
uses: actions/upload-artifact@v4
|
||||||
with:
|
with:
|
||||||
name: gf-${{ github.event.release.tag_name }}-macos
|
name: gf-${{ github.event.release.tag_name }}-${{ matrix.os }}
|
||||||
path: dist/gf-*.pkg
|
path: dist/gf-*.pkg
|
||||||
if-no-files-found: error
|
if-no-files-found: error
|
||||||
|
|
||||||
- name: Rename package
|
- name: Rename package
|
||||||
run: |
|
run: |
|
||||||
mv dist/gf-*.pkg dist/gf-${{ github.event.release.tag_name }}-macos.pkg
|
mv dist/gf-*.pkg dist/gf-${{ github.event.release.tag_name }}-macos.pkg
|
||||||
|
|
||||||
- uses: actions/upload-release-asset@v1.0.2
|
#- uses: actions/upload-release-asset@v1.0.2
|
||||||
env:
|
# env:
|
||||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
with:
|
# with:
|
||||||
upload_url: ${{ github.event.release.upload_url }}
|
# upload_url: ${{ github.event.release.upload_url }}
|
||||||
asset_path: dist/gf-${{ github.event.release.tag_name }}-macos.pkg
|
# asset_path: dist/gf-${{ github.event.release.tag_name }}-macos.pkg
|
||||||
asset_name: gf-${{ github.event.release.tag_name }}-macos.pkg
|
# asset_name: gf-${{ github.event.release.tag_name }}-macos.pkg
|
||||||
asset_content_type: application/octet-stream
|
# asset_content_type: application/octet-stream
|
||||||
|
|
||||||
# ---
|
# ---
|
||||||
|
|
||||||
@@ -132,9 +136,9 @@ jobs:
|
|||||||
name: Build Windows package
|
name: Build Windows package
|
||||||
strategy:
|
strategy:
|
||||||
matrix:
|
matrix:
|
||||||
ghc: ["8.6.5"]
|
ghc: ["9.6.7"]
|
||||||
cabal: ["2.4"]
|
cabal: ["3.10"]
|
||||||
os: ["windows-2019"]
|
os: ["windows-2022"]
|
||||||
runs-on: ${{ matrix.os }}
|
runs-on: ${{ matrix.os }}
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
@@ -147,6 +151,7 @@ jobs:
|
|||||||
base-devel
|
base-devel
|
||||||
gcc
|
gcc
|
||||||
python-devel
|
python-devel
|
||||||
|
autotools
|
||||||
|
|
||||||
- name: Prepare dist folder
|
- name: Prepare dist folder
|
||||||
shell: msys2 {0}
|
shell: msys2 {0}
|
||||||
@@ -171,7 +176,8 @@ jobs:
|
|||||||
- name: Build Java bindings
|
- name: Build Java bindings
|
||||||
shell: msys2 {0}
|
shell: msys2 {0}
|
||||||
run: |
|
run: |
|
||||||
export JDKPATH=/c/hostedtoolcache/windows/Java_Adopt_jdk/8.0.292-10/x64
|
echo $JAVA_HOME_8_X64
|
||||||
|
export JDKPATH="$(cygpath -u "${JAVA_HOME_8_X64}")"
|
||||||
export PATH="${PATH}:${JDKPATH}/bin"
|
export PATH="${PATH}:${JDKPATH}/bin"
|
||||||
cd src/runtime/java
|
cd src/runtime/java
|
||||||
make \
|
make \
|
||||||
@@ -180,6 +186,9 @@ jobs:
|
|||||||
make install
|
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
|
cp jpgf.jar /c/tmp-dist/java
|
||||||
|
if: false
|
||||||
|
|
||||||
|
# - uses: actions/setup-python@v5
|
||||||
|
|
||||||
- name: Build Python bindings
|
- name: Build Python bindings
|
||||||
shell: msys2 {0}
|
shell: msys2 {0}
|
||||||
@@ -188,12 +197,13 @@ jobs:
|
|||||||
EXTRA_LIB_DIRS: /mingw64/lib
|
EXTRA_LIB_DIRS: /mingw64/lib
|
||||||
run: |
|
run: |
|
||||||
cd src/runtime/python
|
cd src/runtime/python
|
||||||
|
pacman --noconfirm -S python-setuptools
|
||||||
python setup.py build
|
python setup.py build
|
||||||
python setup.py install
|
python setup.py install
|
||||||
cp /usr/lib/python3.9/site-packages/pgf* /c/tmp-dist/python
|
cp -r /usr/lib/python3.12/site-packages/pgf* /c/tmp-dist/python
|
||||||
|
|
||||||
- name: Setup Haskell
|
- name: Setup Haskell
|
||||||
uses: actions/setup-haskell@v1
|
uses: haskell-actions/setup@v2
|
||||||
id: setup-haskell-cabal
|
id: setup-haskell-cabal
|
||||||
with:
|
with:
|
||||||
ghc-version: ${{ matrix.ghc }}
|
ghc-version: ${{ matrix.ghc }}
|
||||||
@@ -205,13 +215,13 @@ jobs:
|
|||||||
|
|
||||||
- name: Build GF
|
- name: Build GF
|
||||||
run: |
|
run: |
|
||||||
cabal install --only-dependencies -fserver
|
cabal install -fserver --only-dependencies
|
||||||
cabal configure -fserver
|
cabal configure -fserver
|
||||||
cabal build
|
cabal build
|
||||||
copy dist\build\gf\gf.exe C:\tmp-dist
|
copy dist-newstyle/build/x86_64-windows/ghc-${{matrix.ghc}}/*/x/gf/build/gf/gf.exe C:/tmp-dist
|
||||||
|
|
||||||
- name: Upload artifact
|
- name: Upload artifact
|
||||||
uses: actions/upload-artifact@v2
|
uses: actions/upload-artifact@v4
|
||||||
with:
|
with:
|
||||||
name: gf-${{ github.event.release.tag_name }}-windows
|
name: gf-${{ github.event.release.tag_name }}-windows
|
||||||
path: C:\tmp-dist\*
|
path: C:\tmp-dist\*
|
||||||
@@ -220,11 +230,11 @@ jobs:
|
|||||||
- name: Create archive
|
- name: Create archive
|
||||||
run: |
|
run: |
|
||||||
Compress-Archive C:\tmp-dist C:\gf-${{ github.event.release.tag_name }}-windows.zip
|
Compress-Archive C:\tmp-dist C:\gf-${{ github.event.release.tag_name }}-windows.zip
|
||||||
- uses: actions/upload-release-asset@v1.0.2
|
#- uses: actions/upload-release-asset@v1.0.2
|
||||||
env:
|
# env:
|
||||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
# GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
with:
|
# with:
|
||||||
upload_url: ${{ github.event.release.upload_url }}
|
# upload_url: ${{ github.event.release.upload_url }}
|
||||||
asset_path: C:\gf-${{ github.event.release.tag_name }}-windows.zip
|
# asset_path: C:\gf-${{ github.event.release.tag_name }}-windows.zip
|
||||||
asset_name: gf-${{ github.event.release.tag_name }}-windows.zip
|
# asset_name: gf-${{ github.event.release.tag_name }}-windows.zip
|
||||||
asset_content_type: application/zip
|
# asset_content_type: application/zip
|
||||||
|
|||||||
@@ -13,24 +13,25 @@ jobs:
|
|||||||
strategy:
|
strategy:
|
||||||
fail-fast: true
|
fail-fast: true
|
||||||
matrix:
|
matrix:
|
||||||
os: [ubuntu-18.04, macos-10.15]
|
os: [ubuntu-latest, macos-latest, macos-13]
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v1
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
- uses: actions/setup-python@v1
|
- uses: actions/setup-python@v5
|
||||||
name: Install Python
|
name: Install Python
|
||||||
with:
|
with:
|
||||||
python-version: '3.7'
|
python-version: '3.x'
|
||||||
|
|
||||||
- name: Install cibuildwheel
|
- name: Install cibuildwheel
|
||||||
run: |
|
run: |
|
||||||
python -m pip install git+https://github.com/joerick/cibuildwheel.git@main
|
python -m pip install cibuildwheel
|
||||||
|
|
||||||
- name: Install build tools for OSX
|
- name: Install build tools for OSX
|
||||||
if: startsWith(matrix.os, 'macos')
|
if: startsWith(matrix.os, 'macos')
|
||||||
run: |
|
run: |
|
||||||
brew install automake
|
brew install automake
|
||||||
|
brew install libtool
|
||||||
|
|
||||||
- name: Build wheels on Linux
|
- name: Build wheels on Linux
|
||||||
if: startsWith(matrix.os, 'macos') != true
|
if: startsWith(matrix.os, 'macos') != true
|
||||||
@@ -42,30 +43,32 @@ jobs:
|
|||||||
- name: Build wheels on OSX
|
- name: Build wheels on OSX
|
||||||
if: startsWith(matrix.os, 'macos')
|
if: startsWith(matrix.os, 'macos')
|
||||||
env:
|
env:
|
||||||
CIBW_BEFORE_BUILD: cd src/runtime/c && glibtoolize && autoreconf -i && ./configure && make && make install
|
CIBW_BEFORE_BUILD: cd src/runtime/c && glibtoolize && autoreconf -i && ./configure && make && sudo make install
|
||||||
run: |
|
run: |
|
||||||
python -m cibuildwheel src/runtime/python --output-dir wheelhouse
|
python -m cibuildwheel src/runtime/python --output-dir wheelhouse
|
||||||
|
|
||||||
- uses: actions/upload-artifact@v2
|
- uses: actions/upload-artifact@v4
|
||||||
with:
|
with:
|
||||||
|
name: wheel-${{ matrix.os }}
|
||||||
path: ./wheelhouse
|
path: ./wheelhouse
|
||||||
|
|
||||||
build_sdist:
|
build_sdist:
|
||||||
name: Build source distribution
|
name: Build source distribution
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v2
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
- uses: actions/setup-python@v2
|
- uses: actions/setup-python@v5
|
||||||
name: Install Python
|
name: Install Python
|
||||||
with:
|
with:
|
||||||
python-version: '3.7'
|
python-version: '3.10'
|
||||||
|
|
||||||
- name: Build sdist
|
- name: Build sdist
|
||||||
run: cd src/runtime/python && python setup.py sdist
|
run: cd src/runtime/python && python setup.py sdist
|
||||||
|
|
||||||
- uses: actions/upload-artifact@v2
|
- uses: actions/upload-artifact@v4
|
||||||
with:
|
with:
|
||||||
|
name: wheel-source
|
||||||
path: ./src/runtime/python/dist/*.tar.gz
|
path: ./src/runtime/python/dist/*.tar.gz
|
||||||
|
|
||||||
upload_pypi:
|
upload_pypi:
|
||||||
@@ -75,24 +78,25 @@ jobs:
|
|||||||
if: github.ref == 'refs/heads/master' && github.event_name == 'push'
|
if: github.ref == 'refs/heads/master' && github.event_name == 'push'
|
||||||
|
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/checkout@v2
|
- uses: actions/checkout@v4
|
||||||
|
|
||||||
- name: Set up Python
|
- name: Set up Python
|
||||||
uses: actions/setup-python@v2
|
uses: actions/setup-python@v5
|
||||||
with:
|
with:
|
||||||
python-version: '3.x'
|
python-version: '3.x'
|
||||||
|
|
||||||
- name: Install twine
|
- name: Install twine
|
||||||
run: pip install twine
|
run: pip install twine
|
||||||
|
|
||||||
- uses: actions/download-artifact@v2
|
- uses: actions/download-artifact@v4.1.7
|
||||||
with:
|
with:
|
||||||
name: artifact
|
pattern: wheel-*
|
||||||
|
merge-multiple: true
|
||||||
path: ./dist
|
path: ./dist
|
||||||
|
|
||||||
- name: Publish
|
- name: Publish
|
||||||
env:
|
env:
|
||||||
TWINE_USERNAME: __token__
|
TWINE_USERNAME: __token__
|
||||||
TWINE_PASSWORD: ${{ secrets.pypi_password }}
|
TWINE_PASSWORD: ${{ secrets.PYPI_PASSWORD }}
|
||||||
run: |
|
run: |
|
||||||
(cd ./src/runtime/python && curl -I --fail https://pypi.org/project/$(python setup.py --name)/$(python setup.py --version)/) || twine upload dist/*
|
twine upload --verbose --non-interactive --skip-existing dist/*
|
||||||
@@ -1188,7 +1188,7 @@ use ``generate_trees = gt``.
|
|||||||
this wine is fresh
|
this wine is fresh
|
||||||
this wine is warm
|
this wine is warm
|
||||||
```
|
```
|
||||||
The default **depth** is 3; the depth can be
|
The default **depth** is 5; the depth can be
|
||||||
set by using the ``depth`` flag:
|
set by using the ``depth`` flag:
|
||||||
```
|
```
|
||||||
> generate_trees -depth=2 | l
|
> generate_trees -depth=2 | l
|
||||||
@@ -1265,10 +1265,16 @@ Human eye may prefer to see a visualization: ``visualize_tree = vt``:
|
|||||||
> parse "this delicious cheese is very Italian" | visualize_tree
|
> parse "this delicious cheese is very Italian" | visualize_tree
|
||||||
```
|
```
|
||||||
The tree is generated in postscript (``.ps``) file. The ``-view`` option is used for
|
The tree is generated in postscript (``.ps``) file. The ``-view`` option is used for
|
||||||
telling what command to use to view the file. Its default is ``"open"``, which works
|
telling what command to use to view the file.
|
||||||
on Mac OS X. On Ubuntu Linux, one can write
|
|
||||||
|
This works on Mac OS X:
|
||||||
```
|
```
|
||||||
> parse "this delicious cheese is very Italian" | visualize_tree -view="eog"
|
> parse "this delicious cheese is very Italian" | visualize_tree -view=open
|
||||||
|
```
|
||||||
|
On Linux, one can use one of the following commands.
|
||||||
|
```
|
||||||
|
> parse "this delicious cheese is very Italian" | visualize_tree -view=eog
|
||||||
|
> parse "this delicious cheese is very Italian" | visualize_tree -view=xdg-open
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
||||||
@@ -1733,6 +1739,13 @@ A new module can **extend** an old one:
|
|||||||
Pizza : Kind ;
|
Pizza : Kind ;
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
Note that the extended grammar doesn't inherit the start
|
||||||
|
category from the grammar it extends, so if you want to
|
||||||
|
generate sentences with this grammar, you'll have to either
|
||||||
|
add a startcat (e.g. ``flags startcat = Question ;``),
|
||||||
|
or in the GF shell, specify the category to ``generate_random`` or ``geneate_trees``
|
||||||
|
(e.g. ``gr -cat=Comment`` or ``gt -cat=Question``).
|
||||||
|
|
||||||
Parallel to the abstract syntax, extensions can
|
Parallel to the abstract syntax, extensions can
|
||||||
be built for concrete syntaxes:
|
be built for concrete syntaxes:
|
||||||
```
|
```
|
||||||
@@ -3733,7 +3746,7 @@ However, type-incorrect commands are rejected by the typecheck:
|
|||||||
The parsing is successful but the type checking failed with error(s):
|
The parsing is successful but the type checking failed with error(s):
|
||||||
Couldn't match expected type Device light
|
Couldn't match expected type Device light
|
||||||
against the interred type Device fan
|
against the interred type Device fan
|
||||||
In the expression: DKindOne fan
|
In the expression: DKindOne fan
|
||||||
```
|
```
|
||||||
|
|
||||||
#NEW
|
#NEW
|
||||||
@@ -4171,7 +4184,7 @@ division of integers.
|
|||||||
```
|
```
|
||||||
abstract Calculator = {
|
abstract Calculator = {
|
||||||
flags startcat = Exp ;
|
flags startcat = Exp ;
|
||||||
|
|
||||||
cat Exp ;
|
cat Exp ;
|
||||||
|
|
||||||
fun
|
fun
|
||||||
@@ -4578,7 +4591,7 @@ in any multilingual grammar between any languages in the grammar.
|
|||||||
module Main where
|
module Main where
|
||||||
|
|
||||||
import PGF
|
import PGF
|
||||||
import System (getArgs)
|
import System.Environment (getArgs)
|
||||||
|
|
||||||
main :: IO ()
|
main :: IO ()
|
||||||
main = do
|
main = do
|
||||||
|
|||||||
Reference in New Issue
Block a user