1
1
mirror of https://github.com/github/semantic.git synced 2024-12-23 14:54:16 +03:00

Specify version bounds in .cabal file (#1)

Establish library bounds based on Stackage LTS 13.13.

We use the new cabal `^>=` operator to establish PVP-compatible versioning.
This commit is contained in:
Patrick Thomson 2019-04-03 09:12:49 -04:00 committed by Douglas Creager
parent 0f01935571
commit b2bbda5fca
8 changed files with 156 additions and 67 deletions

2
.gitignore vendored
View File

@ -31,5 +31,3 @@ tmp/
.licenses/log/
codex.tags
vendor/proto3-suite

View File

@ -94,9 +94,21 @@ Available options:
## Development
`semantic` is built using [`cabal`](https://www.haskell.org/cabal/) and the [ghc](https://www.haskell.org/ghc/) compiler. To get started:
We use `cabal's` [Nix-style local builds][nix] for development. To get started quickly:
1. **TBD**
```bash
git clone git@github.com:github/semantic.git
cd semantic
git submodule sync --recursive && git submodule update --init --recursive --force
cabal new-build
cabal new-test
```
`semantic` requires GHC 8.6.4. We recommend using [`ghcup`][ghcup] to sandbox GHC versions. Our version bounds are based on [Stackage][stackage] LTS versions. The current LTS version is 13.13; `stack` build should also work if you prefer.
[nix]: https://www.haskell.org/cabal/users-guide/nix-local-build-overview.html
[stackage]: https://stackage.org
[ghcup]: https://www.haskell.org/ghcup/
## Technology and architecture

3
cabal.project Normal file
View File

@ -0,0 +1,3 @@
packages: vendor/* vendor/proto3-suite vendor/haskell-tree-sitter/languages/* semantic.cabal
package proto3-suite

68
script/clone-example-repos Executable file
View File

@ -0,0 +1,68 @@
#!/bin/bash
#/ Usage: script/clone-example-repos
#/
#/ Clone some example repositories for smoke testing parsing and assignment
#/
#/ NOTES:
#/ - This script is intended to be called by `test/Examples.hs`
#/ - Go and Ruby examples are in submodules
#/ - PHP doesn't have any parse-examples
#/ - Java and Haskell have good examples, but they have assignment failures so currently aren't tested
set -e
cd $(dirname "$0")/..
dir="vendor/haskell-tree-sitter/languages"
# clone_repo LOCAL_PATH URL SHA
function clone_repo {
path=$1
url="https://github.com/$2"
sha=$3
if [ ! -d "$path" ]; then
echo "Cloning $url@$sha"
git clone "$url" "$path"
else
echo "$url@$sha already exists"
fi
pushd "$path" > /dev/null # && git pull -q # NB: Enable this if you need to pin to a different sha for one of the repos.
git reset --hard -q $sha
popd > /dev/null
}
python_examples="$dir/python/vendor/tree-sitter-python/examples"
clone_repo "$python_examples/numpy" numpy/numpy 058851c5cfc98f50f11237b1c13d77cfd1f40475
clone_repo "$python_examples/thealgorithms" thealgorithms/python c6be53e1c43f870f5364eef1499ee1b411c966fb
clone_repo "$python_examples/flask" pallets/flask 0b5b4a66ef99c8b91569dd9b9b34911834689d3f
clone_repo "$python_examples/httpie" jakubroztocil/httpie 358342d1c915d6462a080a77aefbb20166d0bd5d
clone_repo "$python_examples/keras" keras-team/keras e59570ae26670f788d6c649191031e4a8824f955
clone_repo "$python_examples/requests" requests/requests 64bde6582d9b49e9345d9b8df16aaa26dc372d13
clone_repo "$python_examples/scikit-learn" scikit-learn/scikit-learn d0f63a760d9993a7f68cfc5e1a075700d67c53d3
clone_repo "$python_examples/scrapy" scrapy/scrapy 65d631329a1434ec013f24341e4b8520241aec70
clone_repo "$python_examples/pytorch" pytorch/pytorch c865d46736db4afff51690a712e35ed8e3899490
clone_repo "$python_examples/certbot" certbot/certbot bb8222200a8cbd39a3ce9584ce6dfed6c5d05228
ts_examples="$dir/typescript/vendor/tree-sitter-typescript/examples"
clone_repo "$ts_examples/desktop" desktop/desktop d1324f56d02dd9afca5d2e9da545905a7d41d671
java_examples="$dir/java/vendor/tree-sitter-java/examples"
clone_repo "$java_examples/elasticsearch" elastic/elasticsearch 4d62640bf116af7e825d89c7319a39c3f2f325b4
clone_repo "$java_examples/guava" google/guava e24fddc5fff7fd36d33ea38737b6606a7e476845
clone_repo "$java_examples/RxJava" ReactiveX/RxJava 8a6bf14fc9a61f7c1c0016ca217be02ca86211d2
clone_repo "$ts_examples/npm" npm/npm ee147fbbca6f2707d3b16f4fa78f4c4606b2d9b1
haskell_examples="$dir/haskell/vendor/tree-sitter-haskell/examples"
clone_repo "$haskell_examples/effects" joshvera/effects 08f5f36f2600362685af593f4b327e933b60bf97
clone_repo "$haskell_examples/postgrest" PostgRest/postgrest f80cfbf165f951a062b3cbedac4556019905ca49
clone_repo "$haskell_examples/ivory" GaloisInc/ivory 3d00324ad1c113c7e70957ff6a6d636d271d0fc4
go_examples="$dir/go/vendor/tree-sitter-go/examples"
clone_repo "$go_examples/go" "golang/go" "870e12d7bfaea70fb0d743842f5864eb059cb939"
clone_repo "$go_examples/moby" "moby/moby" "f57f260b49b6142366e6bc1274204ee0a1205945"
ruby_examples="$dir/ruby/vendor/tree-sitter-ruby/examples"
clone_repo "$ruby_examples/ruby_spec" "ruby/spec" "c3e6b9017926f44a76e2b966c4dd35fa84c4cd3b"

View File

@ -37,20 +37,20 @@ generate_example () {
if [ -e "$fileA" ]; then
status $parseFileA
stack exec semantic -- parse --sexpression $fileA > $parseFileA
cabal new-run semantic -- parse --sexpression $fileA > $parseFileA
fi
if [ -e "$fileB" ]; then
status $parseFileB
stack exec semantic -- parse --sexpression $fileB > $parseFileB
cabal new-run semantic -- parse --sexpression $fileB > $parseFileB
fi
if [ -e "$fileA" -a -e "$fileB" ]; then
status $diffFileAB
stack exec semantic -- diff --sexpression $fileA $fileB > $diffFileAB
cabal new-run semantic -- diff --sexpression $fileA $fileB > $diffFileAB
status $diffFileBA
stack exec semantic -- diff --sexpression $fileB $fileA > $diffFileBA
cabal new-run semantic -- diff --sexpression $fileB $fileA > $diffFileBA
fi
}

View File

@ -13,6 +13,8 @@ category: Web
build-type: Simple
stability: alpha
tested-with: GHC == 8.6.4
flag release
description: Build with optimizations on (for CI or deployment builds)
default: False
@ -35,33 +37,36 @@ common haskell
, StrictData
, TypeApplications
-- Except in case of vendored dependencies, these deps should be expressed
-- as caret-operator bounds relative to a version in Stackage.
-- These are currently pinned to lts-13.13.
common dependencies
build-depends: base >= 4.8 && < 5
, aeson
, algebraic-graphs
, async
, bifunctors
, bytestring
, containers
, directory
, aeson ^>= 1.4.2.0
, algebraic-graphs ^>= 0.3
, async ^>= 2.2.1
, bifunctors ^>= 5.5
, bytestring ^>= 0.10.8.2
, containers ^>= 0.6.0.1
, directory ^>= 1.3.3.0
, fastsum
, filepath
, free
, filepath ^>= 1.4.2.1
, free ^>= 5.1
, fused-effects
, fused-effects-exceptions
, hashable
, hashable ^>= 1.2.7.0
, haskell-tree-sitter
, machines
, mtl
, network
, machines ^>= 0.6.4
, mtl ^>= 2.2.2
, network ^>= 2.8.0.0
, process
, recursion-schemes
, scientific
, recursion-schemes ^>= 5.1
, scientific ^>= 0.3.6.2
, safe-exceptions
, semilattices
, text
, these
, unix
, text ^>= 1.2.3.1
, these >= 0.7 && <1
, unix ^>= 2.7.2.2
, proto3-suite
, proto3-wire
@ -276,46 +281,47 @@ library
, Tags.Tagging
-- Custom Prelude
, Prologue
build-depends: base >= 4.8 && < 5
, ansi-terminal
, array
, attoparsec
, cmark-gfm
, cryptohash
, deepseq
, directory-tree
, ansi-terminal ^>= 0.8.2
, array ^>= 0.5.3.0
, attoparsec ^>= 0.13.2.2
, cmark-gfm == 0.1.8
, cryptohash ^>= 0.11.9
, deepseq ^>= 1.4.4.0
, directory-tree ^>= 0.12.1
, freer-cofreer
, generic-monoid
, ghc-prim
, gitrev
, haskeline
, hostname
, hscolour
, http-client
, http-client-tls
, http-types
, http-media
, kdt
, lens
, mersenne-random-pure64
, network-uri
, optparse-applicative
, parallel
, parsers
, pretty-show
, prettyprinter
, profunctors
, reducers
, semigroupoids
, servant
, generic-monoid ^>= 0.1.0.0
, ghc-prim ^>= 0.5.3
, gitrev ^>= 1.3.1
, haskeline ^>= 0.7.5.0
, hostname ^>= 1.0
, hscolour ^>= 1.24.4
, http-client ^>= 0.6.2
, http-client-tls ^>= 0.3.5.3
, http-types ^>= 0.12.3
, http-media ^>= 0.7.1.3
, kdt ^>= 0.2.4
, lens ^>= 4.17
, mersenne-random-pure64 ^>= 0.2.2.0
, network-uri ^>= 2.6.1.0
, optparse-applicative ^>= 0.14.3.0
, parallel ^>= 3.2.2.0
, parsers ^>= 0.12.9
, prettyprinter ^>= 1.2.1
, pretty-show ^>= 1.9.5
, profunctors ^>= 5.3
, reducers ^>= 3.12.3
, semigroupoids ^>= 5.3.2
, servant ^>= 0.15
, shelly
, split
, stm-chans
, template-haskell
, time
, split ^>= 0.2.3.3
, stm-chans ^>= 3.0.0.4
, template-haskell ^>= 2.14
, time ^>= 1.8.0.2
, unliftio-core
, unordered-containers
, vector
, unordered-containers ^>= 0.2.9.0
, vector ^>= 0.12.0.2
, haskell-tree-sitter
, tree-sitter-go
, tree-sitter-haskell
@ -391,11 +397,11 @@ test-suite test
build-depends: semantic
, tree-sitter-json
, Glob
, hspec >= 2.4.1
, hspec-core
, hspec-expectations-pretty-diff
, HUnit
, leancheck
, hspec >= 2.6 && <3
, hspec-core >= 2.6 && <3
, hspec-expectations-pretty-diff ^>= 0.7.2.5
, HUnit ^>= 1.6.0.0
, leancheck >= 0.8 && <1
, temporary
ghc-options: -O0
if flag(release)

1
vendor/proto3-suite vendored Submodule

@ -0,0 +1 @@
Subproject commit 83f3352f0c7c94ea091e6087f60692eda9991fae

1
vendor/proto3-wire vendored Submodule

@ -0,0 +1 @@
Subproject commit 84664e22f01beb67870368f1f88ada5d0ad01f56