Support GHC-8.4.1 and newer deps
This commit is contained in:
parent
3e8c2170d1
commit
c56fda3869
23 changed files with 124 additions and 84 deletions
77
.travis.yml
77
.travis.yml
|
@ -1,6 +1,6 @@
|
||||||
# This Travis job script has been generated by a script via
|
# This Travis job script has been generated by a script via
|
||||||
#
|
#
|
||||||
# runghc make_travis_yml_2.hs '--config=cabal.make-travis-yml' '--output=.travis.yml' '--max-backjumps=10000' 'cabal.project'
|
# runghc make_travis_yml_2.hs '--config=cabal.make-travis-yml' '--output=.travis.yml' 'cabal.project'
|
||||||
#
|
#
|
||||||
# For more information, see https://github.com/hvr/multi-ghc-travis
|
# For more information, see https://github.com/hvr/multi-ghc-travis
|
||||||
#
|
#
|
||||||
|
@ -33,18 +33,21 @@ before_cache:
|
||||||
|
|
||||||
matrix:
|
matrix:
|
||||||
include:
|
include:
|
||||||
- compiler: "ghc-7.8.4"
|
- compiler: "ghc-8.4.2"
|
||||||
# env: TEST=--disable-tests BENCH=--disable-benchmarks
|
# env: TEST=--disable-tests BENCH=--disable-benchmarks
|
||||||
addons: {apt: {packages: [ghc-ppa-tools,ghc-7.8.4,xz-utils], sources: [hvr-ghc]}}
|
addons: {apt: {packages: [ghc-ppa-tools,ghc-8.4.2], sources: [hvr-ghc]}}
|
||||||
- compiler: "ghc-7.10.3"
|
|
||||||
# env: TEST=--disable-tests BENCH=--disable-benchmarks
|
|
||||||
addons: {apt: {packages: [ghc-ppa-tools,ghc-7.10.3,xz-utils], sources: [hvr-ghc]}}
|
|
||||||
- compiler: "ghc-8.0.2"
|
|
||||||
# env: TEST=--disable-tests BENCH=--disable-benchmarks
|
|
||||||
addons: {apt: {packages: [ghc-ppa-tools,ghc-8.0.2,xz-utils], sources: [hvr-ghc]}}
|
|
||||||
- compiler: "ghc-8.2.2"
|
- compiler: "ghc-8.2.2"
|
||||||
# env: TEST=--disable-tests BENCH=--disable-benchmarks
|
# env: TEST=--disable-tests BENCH=--disable-benchmarks
|
||||||
addons: {apt: {packages: [ghc-ppa-tools,ghc-8.2.2,xz-utils], sources: [hvr-ghc]}}
|
addons: {apt: {packages: [ghc-ppa-tools,ghc-8.2.2], sources: [hvr-ghc]}}
|
||||||
|
- compiler: "ghc-8.0.2"
|
||||||
|
# env: TEST=--disable-tests BENCH=--disable-benchmarks
|
||||||
|
addons: {apt: {packages: [ghc-ppa-tools,ghc-8.0.2], sources: [hvr-ghc]}}
|
||||||
|
- compiler: "ghc-7.10.3"
|
||||||
|
# env: TEST=--disable-tests BENCH=--disable-benchmarks
|
||||||
|
addons: {apt: {packages: [ghc-ppa-tools,ghc-7.10.3], sources: [hvr-ghc]}}
|
||||||
|
- compiler: "ghc-7.8.4"
|
||||||
|
# env: TEST=--disable-tests BENCH=--disable-benchmarks
|
||||||
|
addons: {apt: {packages: [ghc-ppa-tools,ghc-7.8.4], sources: [hvr-ghc]}}
|
||||||
|
|
||||||
before_install:
|
before_install:
|
||||||
- HC=${CC}
|
- HC=${CC}
|
||||||
|
@ -75,15 +78,14 @@ install:
|
||||||
- HADDOCK=${HADDOCK-true}
|
- HADDOCK=${HADDOCK-true}
|
||||||
- INSTALLED=${INSTALLED-true}
|
- INSTALLED=${INSTALLED-true}
|
||||||
- GHCHEAD=${GHCHEAD-false}
|
- GHCHEAD=${GHCHEAD-false}
|
||||||
- CABALNEWBUILDOPTS=--max-backjumps=10000
|
|
||||||
- travis_retry cabal update -v
|
- travis_retry cabal update -v
|
||||||
- "sed -i.bak 's/^jobs:/-- jobs:/' ${HOME}/.cabal/config"
|
- "sed -i.bak 's/^jobs:/-- jobs:/' ${HOME}/.cabal/config"
|
||||||
- rm -fv cabal.project cabal.project.local
|
- rm -fv cabal.project cabal.project.local
|
||||||
- "if [ $HCNUMVER -ge 70800 ]; then sed -i.bak 's/-- ghc-options:.*/ghc-options: -j2/' ${HOME}/.cabal/config; fi"
|
- "if [ $HCNUMVER -ge 70800 ]; then sed -i.bak 's/-- ghc-options:.*/ghc-options: -j2/' ${HOME}/.cabal/config; fi"
|
||||||
- grep -Ev -- '^\s*--' ${HOME}/.cabal/config | grep -Ev '^\s*$'
|
- grep -Ev -- '^\s*--' ${HOME}/.cabal/config | grep -Ev '^\s*$'
|
||||||
- "printf 'packages: \"servant\" \"servant-client\" \"servant-client-core\" \"servant-docs\" \"servant-foreign\" \"servant-server\" \"doc/tutorial\" \"doc/cookbook/db-postgres-pool\" \"doc/cookbook/jwt-and-basic-auth\" \"doc/cookbook/db-sqlite-simple\" \"doc/cookbook/basic-auth\" \"doc/cookbook/https\" \"doc/cookbook/structuring-apis\" \"doc/cookbook/using-custom-monad\" \"doc/cookbook/file-upload\"\\n' > cabal.project"
|
- "printf 'packages: \"servant\" \"servant-client\" \"servant-client-core\" \"servant-docs\" \"servant-foreign\" \"servant-server\" \"doc/tutorial\" \"doc/cookbook/basic-auth\" \"doc/cookbook/db-postgres-pool\" \"doc/cookbook/db-sqlite-simple\" \"doc/cookbook/file-upload\" \"doc/cookbook/https\" \"doc/cookbook/pagination\" \"doc/cookbook/structuring-apis\" \"doc/cookbook/using-custom-monad\"\\n' > cabal.project"
|
||||||
- "echo 'constraints: foundation >=0.0.14,memory <0.14.12 || >0.14.12' >> cabal.project"
|
- "echo 'constraints: foundation >=0.0.14,memory <0.14.12 || >0.14.12' >> cabal.project"
|
||||||
- "echo 'allow-newer: servant-js:servant,servant-js:servant-foreign,servant-auth-server:http-types,servant-multipart:lens,servant-multipart:resourcet,servant-multipart:servant,servant-multipart:servant-server,servant-auth-server:servant-server' >> cabal.project"
|
- "echo 'allow-newer: servant-js:servant,servant-js:servant-foreign,servant-auth-server:http-types,servant-multipart:lens,servant-multipart:resourcet,servant-multipart:servant,servant-multipart:servant-server,servant-auth-server:servant-server, http-media:base' >> cabal.project"
|
||||||
- cat cabal.project
|
- cat cabal.project
|
||||||
- if [ -f "servant/configure.ac" ]; then
|
- if [ -f "servant/configure.ac" ]; then
|
||||||
(cd "servant" && autoreconf -i);
|
(cd "servant" && autoreconf -i);
|
||||||
|
@ -106,32 +108,32 @@ install:
|
||||||
- if [ -f "doc/tutorial/configure.ac" ]; then
|
- if [ -f "doc/tutorial/configure.ac" ]; then
|
||||||
(cd "doc/tutorial" && autoreconf -i);
|
(cd "doc/tutorial" && autoreconf -i);
|
||||||
fi
|
fi
|
||||||
|
- if [ -f "doc/cookbook/basic-auth/configure.ac" ]; then
|
||||||
|
(cd "doc/cookbook/basic-auth" && autoreconf -i);
|
||||||
|
fi
|
||||||
- if [ -f "doc/cookbook/db-postgres-pool/configure.ac" ]; then
|
- if [ -f "doc/cookbook/db-postgres-pool/configure.ac" ]; then
|
||||||
(cd "doc/cookbook/db-postgres-pool" && autoreconf -i);
|
(cd "doc/cookbook/db-postgres-pool" && autoreconf -i);
|
||||||
fi
|
fi
|
||||||
- if [ -f "doc/cookbook/jwt-and-basic-auth/configure.ac" ]; then
|
|
||||||
(cd "doc/cookbook/jwt-and-basic-auth" && autoreconf -i);
|
|
||||||
fi
|
|
||||||
- if [ -f "doc/cookbook/db-sqlite-simple/configure.ac" ]; then
|
- if [ -f "doc/cookbook/db-sqlite-simple/configure.ac" ]; then
|
||||||
(cd "doc/cookbook/db-sqlite-simple" && autoreconf -i);
|
(cd "doc/cookbook/db-sqlite-simple" && autoreconf -i);
|
||||||
fi
|
fi
|
||||||
- if [ -f "doc/cookbook/basic-auth/configure.ac" ]; then
|
- if [ -f "doc/cookbook/file-upload/configure.ac" ]; then
|
||||||
(cd "doc/cookbook/basic-auth" && autoreconf -i);
|
(cd "doc/cookbook/file-upload" && autoreconf -i);
|
||||||
fi
|
fi
|
||||||
- if [ -f "doc/cookbook/https/configure.ac" ]; then
|
- if [ -f "doc/cookbook/https/configure.ac" ]; then
|
||||||
(cd "doc/cookbook/https" && autoreconf -i);
|
(cd "doc/cookbook/https" && autoreconf -i);
|
||||||
fi
|
fi
|
||||||
|
- if [ -f "doc/cookbook/pagination/configure.ac" ]; then
|
||||||
|
(cd "doc/cookbook/pagination" && autoreconf -i);
|
||||||
|
fi
|
||||||
- if [ -f "doc/cookbook/structuring-apis/configure.ac" ]; then
|
- if [ -f "doc/cookbook/structuring-apis/configure.ac" ]; then
|
||||||
(cd "doc/cookbook/structuring-apis" && autoreconf -i);
|
(cd "doc/cookbook/structuring-apis" && autoreconf -i);
|
||||||
fi
|
fi
|
||||||
- if [ -f "doc/cookbook/using-custom-monad/configure.ac" ]; then
|
- if [ -f "doc/cookbook/using-custom-monad/configure.ac" ]; then
|
||||||
(cd "doc/cookbook/using-custom-monad" && autoreconf -i);
|
(cd "doc/cookbook/using-custom-monad" && autoreconf -i);
|
||||||
fi
|
fi
|
||||||
- if [ -f "doc/cookbook/file-upload/configure.ac" ]; then
|
|
||||||
(cd "doc/cookbook/file-upload" && autoreconf -i);
|
|
||||||
fi
|
|
||||||
- rm -f cabal.project.freeze
|
- rm -f cabal.project.freeze
|
||||||
- rm -rf .ghc.environment.* "servant"/dist "servant-client"/dist "servant-client-core"/dist "servant-docs"/dist "servant-foreign"/dist "servant-server"/dist "doc/tutorial"/dist "doc/cookbook/db-postgres-pool"/dist "doc/cookbook/jwt-and-basic-auth"/dist "doc/cookbook/db-sqlite-simple"/dist "doc/cookbook/basic-auth"/dist "doc/cookbook/https"/dist "doc/cookbook/structuring-apis"/dist "doc/cookbook/using-custom-monad"/dist "doc/cookbook/file-upload"/dist
|
- rm -rf .ghc.environment.* "servant"/dist "servant-client"/dist "servant-client-core"/dist "servant-docs"/dist "servant-foreign"/dist "servant-server"/dist "doc/tutorial"/dist "doc/cookbook/basic-auth"/dist "doc/cookbook/db-postgres-pool"/dist "doc/cookbook/db-sqlite-simple"/dist "doc/cookbook/file-upload"/dist "doc/cookbook/https"/dist "doc/cookbook/pagination"/dist "doc/cookbook/structuring-apis"/dist "doc/cookbook/using-custom-monad"/dist
|
||||||
- DISTDIR=$(mktemp -d /tmp/dist-test.XXXX)
|
- DISTDIR=$(mktemp -d /tmp/dist-test.XXXX)
|
||||||
|
|
||||||
# Here starts the actual work to be performed for the package under test;
|
# Here starts the actual work to be performed for the package under test;
|
||||||
|
@ -146,38 +148,37 @@ script:
|
||||||
- (cd "servant-foreign" && cabal sdist)
|
- (cd "servant-foreign" && cabal sdist)
|
||||||
- (cd "servant-server" && cabal sdist)
|
- (cd "servant-server" && cabal sdist)
|
||||||
- (cd "doc/tutorial" && cabal sdist)
|
- (cd "doc/tutorial" && cabal sdist)
|
||||||
- (cd "doc/cookbook/db-postgres-pool" && cabal sdist)
|
|
||||||
- (cd "doc/cookbook/jwt-and-basic-auth" && cabal sdist)
|
|
||||||
- (cd "doc/cookbook/db-sqlite-simple" && cabal sdist)
|
|
||||||
- (cd "doc/cookbook/basic-auth" && cabal sdist)
|
- (cd "doc/cookbook/basic-auth" && cabal sdist)
|
||||||
|
- (cd "doc/cookbook/db-postgres-pool" && cabal sdist)
|
||||||
|
- (cd "doc/cookbook/db-sqlite-simple" && cabal sdist)
|
||||||
|
- (cd "doc/cookbook/file-upload" && cabal sdist)
|
||||||
- (cd "doc/cookbook/https" && cabal sdist)
|
- (cd "doc/cookbook/https" && cabal sdist)
|
||||||
|
- (cd "doc/cookbook/pagination" && cabal sdist)
|
||||||
- (cd "doc/cookbook/structuring-apis" && cabal sdist)
|
- (cd "doc/cookbook/structuring-apis" && cabal sdist)
|
||||||
- (cd "doc/cookbook/using-custom-monad" && cabal sdist)
|
- (cd "doc/cookbook/using-custom-monad" && cabal sdist)
|
||||||
- (cd "doc/cookbook/file-upload" && cabal sdist)
|
|
||||||
- echo -en 'travis_fold:end:sdist\\r'
|
- echo -en 'travis_fold:end:sdist\\r'
|
||||||
- echo Unpacking... && echo -en 'travis_fold:start:unpack\\r'
|
- echo Unpacking... && echo -en 'travis_fold:start:unpack\\r'
|
||||||
- mv "servant"/dist/servant-*.tar.gz "servant-client"/dist/servant-client-*.tar.gz "servant-client-core"/dist/servant-client-core-*.tar.gz "servant-docs"/dist/servant-docs-*.tar.gz "servant-foreign"/dist/servant-foreign-*.tar.gz "servant-server"/dist/servant-server-*.tar.gz "doc/tutorial"/dist/tutorial-*.tar.gz "doc/cookbook/db-postgres-pool"/dist/cookbook-db-postgres-pool-*.tar.gz "doc/cookbook/jwt-and-basic-auth"/dist/cookbook-jwt-and-basic-auth-*.tar.gz "doc/cookbook/db-sqlite-simple"/dist/cookbook-db-sqlite-simple-*.tar.gz "doc/cookbook/basic-auth"/dist/cookbook-basic-auth-*.tar.gz "doc/cookbook/https"/dist/cookbook-https-*.tar.gz "doc/cookbook/structuring-apis"/dist/cookbook-structuring-apis-*.tar.gz "doc/cookbook/using-custom-monad"/dist/cookbook-using-custom-monad-*.tar.gz "doc/cookbook/file-upload"/dist/cookbook-file-upload-*.tar.gz ${DISTDIR}/
|
- mv "servant"/dist/servant-*.tar.gz "servant-client"/dist/servant-client-*.tar.gz "servant-client-core"/dist/servant-client-core-*.tar.gz "servant-docs"/dist/servant-docs-*.tar.gz "servant-foreign"/dist/servant-foreign-*.tar.gz "servant-server"/dist/servant-server-*.tar.gz "doc/tutorial"/dist/tutorial-*.tar.gz "doc/cookbook/basic-auth"/dist/cookbook-basic-auth-*.tar.gz "doc/cookbook/db-postgres-pool"/dist/cookbook-db-postgres-pool-*.tar.gz "doc/cookbook/db-sqlite-simple"/dist/cookbook-db-sqlite-simple-*.tar.gz "doc/cookbook/file-upload"/dist/cookbook-file-upload-*.tar.gz "doc/cookbook/https"/dist/cookbook-https-*.tar.gz "doc/cookbook/pagination"/dist/cookbook-pagination-*.tar.gz "doc/cookbook/structuring-apis"/dist/cookbook-structuring-apis-*.tar.gz "doc/cookbook/using-custom-monad"/dist/cookbook-using-custom-monad-*.tar.gz ${DISTDIR}/
|
||||||
- cd ${DISTDIR} || false
|
- cd ${DISTDIR} || false
|
||||||
- find . -maxdepth 1 -name '*.tar.gz' -exec tar -xvf '{}' \;
|
- find . -maxdepth 1 -name '*.tar.gz' -exec tar -xvf '{}' \;
|
||||||
- "printf 'packages: servant-*/*.cabal servant-client-*/*.cabal servant-client-core-*/*.cabal servant-docs-*/*.cabal servant-foreign-*/*.cabal servant-server-*/*.cabal tutorial-*/*.cabal cookbook-db-postgres-pool-*/*.cabal cookbook-jwt-and-basic-auth-*/*.cabal cookbook-db-sqlite-simple-*/*.cabal cookbook-basic-auth-*/*.cabal cookbook-https-*/*.cabal cookbook-structuring-apis-*/*.cabal cookbook-using-custom-monad-*/*.cabal cookbook-file-upload-*/*.cabal\\n' > cabal.project"
|
- "printf 'packages: servant-*/*.cabal servant-client-*/*.cabal servant-client-core-*/*.cabal servant-docs-*/*.cabal servant-foreign-*/*.cabal servant-server-*/*.cabal tutorial-*/*.cabal cookbook-basic-auth-*/*.cabal cookbook-db-postgres-pool-*/*.cabal cookbook-db-sqlite-simple-*/*.cabal cookbook-file-upload-*/*.cabal cookbook-https-*/*.cabal cookbook-pagination-*/*.cabal cookbook-structuring-apis-*/*.cabal cookbook-using-custom-monad-*/*.cabal\\n' > cabal.project"
|
||||||
- "echo 'constraints: foundation >=0.0.14,memory <0.14.12 || >0.14.12' >> cabal.project"
|
- "echo 'constraints: foundation >=0.0.14,memory <0.14.12 || >0.14.12' >> cabal.project"
|
||||||
- "echo 'allow-newer: servant-js:servant,servant-js:servant-foreign,servant-auth-server:http-types,servant-multipart:lens,servant-multipart:resourcet,servant-multipart:servant,servant-multipart:servant-server,servant-auth-server:servant-server' >> cabal.project"
|
- "echo 'allow-newer: servant-js:servant,servant-js:servant-foreign,servant-auth-server:http-types,servant-multipart:lens,servant-multipart:resourcet,servant-multipart:servant,servant-multipart:servant-server,servant-auth-server:servant-server, http-media:base' >> cabal.project"
|
||||||
- cat cabal.project
|
- cat cabal.project
|
||||||
- echo -en 'travis_fold:end:unpack\\r'
|
- echo -en 'travis_fold:end:unpack\\r'
|
||||||
|
|
||||||
|
|
||||||
- echo Building with tests and benchmarks... && echo -en 'travis_fold:start:build-everything\\r'
|
- echo Building with tests and benchmarks... && echo -en 'travis_fold:start:build-everything\\r'
|
||||||
# build & run tests, build benchmarks
|
# build & run tests, build benchmarks
|
||||||
- cabal new-build -w ${HC} ${TEST} ${BENCH} ${CABALNEWBUILDOPTS} all
|
- cabal new-build -w ${HC} ${TEST} ${BENCH} all
|
||||||
- echo -en 'travis_fold:end:build-everything\\r'
|
- echo -en 'travis_fold:end:build-everything\\r'
|
||||||
- if [ "x$TEST" = "x--enable-tests" ]; then cabal new-test -w ${HC} ${TEST} ${BENCH} ${CABALNEWBUILDOPTS} all; fi
|
- if [ "x$TEST" = "x--enable-tests" ]; then cabal new-test -w ${HC} ${TEST} ${BENCH} all; fi
|
||||||
|
|
||||||
# - echo Haddock... && echo -en 'travis_fold:start:haddock\\r'
|
- echo Haddock... && echo -en 'travis_fold:start:haddock\\r'
|
||||||
# # haddock
|
# haddock
|
||||||
# - rm -rf ./dist-newstyle
|
- rm -rf ./dist-newstyle
|
||||||
# - if $HADDOCK; then cabal new-haddock -w ${HC} ${TEST} ${BENCH} ${CABALNEWBUILDOPTS} all; else echo "Skipping haddock generation";fi
|
- if $HADDOCK; then cabal new-haddock -w ${HC} ${TEST} ${BENCH} all; else echo "Skipping haddock generation";fi
|
||||||
#
|
|
||||||
# - echo -en 'travis_fold:end:haddock\\r'
|
|
||||||
|
|
||||||
# REGENDATA ["--config=cabal.make-travis-yml","--output=.travis.yml","--max-backjumps=10000","cabal.project"]
|
- echo -en 'travis_fold:end:haddock\\r'
|
||||||
|
# REGENDATA ["--config=cabal.make-travis-yml","--output=.travis.yml","cabal.project"]
|
||||||
# EOF
|
# EOF
|
||||||
|
|
|
@ -5,19 +5,27 @@ packages: servant/
|
||||||
servant-foreign/
|
servant-foreign/
|
||||||
servant-server/
|
servant-server/
|
||||||
doc/tutorial/
|
doc/tutorial/
|
||||||
doc/cookbook/*/*.cabal
|
|
||||||
|
-- doc/cookbook/*/*.cabal
|
||||||
|
|
||||||
|
doc/cookbook/basic-auth
|
||||||
|
doc/cookbook/db-postgres-pool
|
||||||
|
doc/cookbook/db-sqlite-simple
|
||||||
|
doc/cookbook/file-upload
|
||||||
|
doc/cookbook/https
|
||||||
|
-- doc/cookbook/jwt-and-basic-auth
|
||||||
|
doc/cookbook/pagination
|
||||||
|
doc/cookbook/structuring-apis
|
||||||
|
doc/cookbook/using-custom-monad
|
||||||
|
|
||||||
allow-newer:
|
allow-newer:
|
||||||
servant-js:servant,
|
|
||||||
servant-js:servant-foreign,
|
|
||||||
servant-auth-server:http-types,
|
servant-auth-server:http-types,
|
||||||
servant-multipart:lens,
|
|
||||||
servant-multipart:resourcet,
|
|
||||||
servant-multipart:servant,
|
|
||||||
servant-multipart:servant-server,
|
|
||||||
servant-auth-server:servant-server
|
servant-auth-server:servant-server
|
||||||
|
|
||||||
constraints:
|
constraints:
|
||||||
-- see https://github.com/haskell-infra/hackage-trustees/issues/119
|
-- see https://github.com/haskell-infra/hackage-trustees/issues/119
|
||||||
foundation >=0.0.14,
|
foundation >=0.0.14,
|
||||||
memory <0.14.12 || >0.14.12
|
memory <0.14.12 || >0.14.12
|
||||||
|
|
||||||
|
allow-newer:
|
||||||
|
http-media:base
|
||||||
|
|
|
@ -8,7 +8,7 @@ author: Servant Contributors
|
||||||
maintainer: haskell-servant-maintainers@googlegroups.com
|
maintainer: haskell-servant-maintainers@googlegroups.com
|
||||||
build-type: Simple
|
build-type: Simple
|
||||||
cabal-version: >=1.10
|
cabal-version: >=1.10
|
||||||
tested-with: GHC==7.8.4, GHC==7.10.3, GHC==8.0.2, GHC==8.2.2
|
tested-with: GHC==7.8.4, GHC==7.10.3, GHC==8.0.2, GHC==8.2.2, GHC==8.4.2
|
||||||
|
|
||||||
executable cookbook-basic-auth
|
executable cookbook-basic-auth
|
||||||
main-is: BasicAuth.lhs
|
main-is: BasicAuth.lhs
|
||||||
|
|
|
@ -8,7 +8,7 @@ author: Servant Contributors
|
||||||
maintainer: haskell-servant-maintainers@googlegroups.com
|
maintainer: haskell-servant-maintainers@googlegroups.com
|
||||||
build-type: Simple
|
build-type: Simple
|
||||||
cabal-version: >=1.10
|
cabal-version: >=1.10
|
||||||
tested-with: GHC==7.8.4, GHC==7.10.3, GHC==8.0.2, GHC==8.2.2
|
tested-with: GHC==7.8.4, GHC==7.10.3, GHC==8.0.2, GHC==8.2.2, GHC==8.4.2
|
||||||
|
|
||||||
executable cookbook-db-postgres-pool
|
executable cookbook-db-postgres-pool
|
||||||
main-is: PostgresPool.lhs
|
main-is: PostgresPool.lhs
|
||||||
|
|
|
@ -8,7 +8,7 @@ author: Servant Contributors
|
||||||
maintainer: haskell-servant-maintainers@googlegroups.com
|
maintainer: haskell-servant-maintainers@googlegroups.com
|
||||||
build-type: Simple
|
build-type: Simple
|
||||||
cabal-version: >=1.10
|
cabal-version: >=1.10
|
||||||
tested-with: GHC==7.8.4, GHC==7.10.3, GHC==8.0.2, GHC==8.2.2
|
tested-with: GHC==7.8.4, GHC==7.10.3, GHC==8.0.2, GHC==8.2.2, GHC==8.4.2
|
||||||
|
|
||||||
executable cookbook-db-sqlite-simple
|
executable cookbook-db-sqlite-simple
|
||||||
main-is: DBConnection.lhs
|
main-is: DBConnection.lhs
|
||||||
|
|
|
@ -8,7 +8,7 @@ author: Servant Contributors
|
||||||
maintainer: haskell-servant-maintainers@googlegroups.com
|
maintainer: haskell-servant-maintainers@googlegroups.com
|
||||||
build-type: Simple
|
build-type: Simple
|
||||||
cabal-version: >=1.10
|
cabal-version: >=1.10
|
||||||
tested-with: GHC==7.8.4, GHC==7.10.3, GHC==8.0.2, GHC==8.2.2
|
tested-with: GHC==7.8.4, GHC==7.10.3, GHC==8.0.2, GHC==8.2.2, GHC==8.4.2
|
||||||
|
|
||||||
executable cookbook-file-upload
|
executable cookbook-file-upload
|
||||||
main-is: FileUpload.lhs
|
main-is: FileUpload.lhs
|
||||||
|
|
|
@ -8,7 +8,7 @@ author: Servant Contributors
|
||||||
maintainer: haskell-servant-maintainers@googlegroups.com
|
maintainer: haskell-servant-maintainers@googlegroups.com
|
||||||
build-type: Simple
|
build-type: Simple
|
||||||
cabal-version: >=1.10
|
cabal-version: >=1.10
|
||||||
tested-with: GHC==7.8.4, GHC==7.10.3, GHC==8.0.2, GHC==8.2.2
|
tested-with: GHC==7.8.4, GHC==7.10.3, GHC==8.0.2, GHC==8.2.2, GHC==8.4.2
|
||||||
|
|
||||||
executable cookbook-https
|
executable cookbook-https
|
||||||
main-is: Https.lhs
|
main-is: Https.lhs
|
||||||
|
|
|
@ -11,7 +11,7 @@ maintainer: haskell-servant-maintainers@googlegroups.com
|
||||||
category: Servant
|
category: Servant
|
||||||
build-type: Simple
|
build-type: Simple
|
||||||
cabal-version: >=1.10
|
cabal-version: >=1.10
|
||||||
tested-with: GHC==7.8.4, GHC==7.10.3, GHC==8.0.2, GHC==8.2.2
|
tested-with: GHC==7.8.4, GHC==7.10.3, GHC==8.0.2, GHC==8.2.2, GHC==8.4.2
|
||||||
|
|
||||||
executable cookbook-jwt-and-basic-auth
|
executable cookbook-jwt-and-basic-auth
|
||||||
if !impl(ghc >= 7.10)
|
if !impl(ghc >= 7.10)
|
||||||
|
|
3
doc/cookbook/pagination/Dummy.hs
Normal file
3
doc/cookbook/pagination/Dummy.hs
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
module Main where
|
||||||
|
main :: IO ()
|
||||||
|
main = return ()
|
|
@ -8,17 +8,20 @@ author: Servant Contributors
|
||||||
maintainer: haskell-servant-maintainers@googlegroups.com
|
maintainer: haskell-servant-maintainers@googlegroups.com
|
||||||
build-type: Simple
|
build-type: Simple
|
||||||
cabal-version: >=1.10
|
cabal-version: >=1.10
|
||||||
|
tested-with: GHC==7.8.4, GHC==7.10.3, GHC==8.0.2, GHC==8.2.2, GHC==8.4.2
|
||||||
|
|
||||||
executable cookbook-pagination
|
executable cookbook-pagination
|
||||||
if impl(ghc < 7.10.1)
|
if impl(ghc >= 8.0)
|
||||||
buildable: False
|
main-is: Pagination.lhs
|
||||||
main-is: Pagination.lhs
|
build-depends: base >= 4.8 && <4.12
|
||||||
build-depends: base == 4.*
|
, aeson
|
||||||
, aeson
|
, servant
|
||||||
, servant
|
, servant-server
|
||||||
, servant-server
|
, servant-pagination >= 2.1.0 && < 3.0.0
|
||||||
, servant-pagination >= 2.1.0 && < 3.0.0
|
, warp
|
||||||
, warp
|
default-language: Haskell2010
|
||||||
default-language: Haskell2010
|
ghc-options: -Wall -pgmL markdown-unlit
|
||||||
ghc-options: -Wall -pgmL markdown-unlit
|
build-tool-depends: markdown-unlit:markdown-unlit
|
||||||
build-tool-depends: markdown-unlit:markdown-unlit
|
else
|
||||||
|
main-is: Dummy.hs
|
||||||
|
build-depends: base
|
||||||
|
|
|
@ -8,7 +8,7 @@ author: Servant Contributors
|
||||||
maintainer: haskell-servant-maintainers@googlegroups.com
|
maintainer: haskell-servant-maintainers@googlegroups.com
|
||||||
build-type: Simple
|
build-type: Simple
|
||||||
cabal-version: >=1.10
|
cabal-version: >=1.10
|
||||||
tested-with: GHC==7.8.4, GHC==7.10.3, GHC==8.0.2, GHC==8.2.2
|
tested-with: GHC==7.8.4, GHC==7.10.3, GHC==8.0.2, GHC==8.2.2, GHC==8.4.2
|
||||||
|
|
||||||
executable cookbook-structuring-apis
|
executable cookbook-structuring-apis
|
||||||
main-is: StructuringApis.lhs
|
main-is: StructuringApis.lhs
|
||||||
|
|
|
@ -8,7 +8,7 @@ author: Servant Contributors
|
||||||
maintainer: haskell-servant-maintainers@googlegroups.com
|
maintainer: haskell-servant-maintainers@googlegroups.com
|
||||||
build-type: Simple
|
build-type: Simple
|
||||||
cabal-version: >=1.10
|
cabal-version: >=1.10
|
||||||
tested-with: GHC==7.8.4, GHC==7.10.3, GHC==8.0.2, GHC==8.2.2
|
tested-with: GHC==7.8.4, GHC==7.10.3, GHC==8.0.2, GHC==8.2.2, GHC==8.4.2
|
||||||
|
|
||||||
executable cookbook-using-custom-monad
|
executable cookbook-using-custom-monad
|
||||||
main-is: UsingCustomMonad.lhs
|
main-is: UsingCustomMonad.lhs
|
||||||
|
|
|
@ -17,6 +17,7 @@ tested-with:
|
||||||
GHC==7.10.3
|
GHC==7.10.3
|
||||||
GHC==8.0.2
|
GHC==8.0.2
|
||||||
GHC==8.2.2
|
GHC==8.2.2
|
||||||
|
GHC==8.4.2
|
||||||
extra-source-files:
|
extra-source-files:
|
||||||
static/index.html
|
static/index.html
|
||||||
static/ui.js
|
static/ui.js
|
||||||
|
@ -34,7 +35,7 @@ library
|
||||||
-- Packages `servant` depends on.
|
-- Packages `servant` depends on.
|
||||||
-- We don't need to specify bounds here as this package is never released.
|
-- We don't need to specify bounds here as this package is never released.
|
||||||
build-depends:
|
build-depends:
|
||||||
base >= 4.7 && <4.11
|
base >= 4.7 && <4.12
|
||||||
, aeson
|
, aeson
|
||||||
, aeson-compat
|
, aeson-compat
|
||||||
, attoparsec
|
, attoparsec
|
||||||
|
|
|
@ -23,6 +23,7 @@ tested-with:
|
||||||
GHC==7.10.3
|
GHC==7.10.3
|
||||||
GHC==8.0.2
|
GHC==8.0.2
|
||||||
GHC==8.2.2
|
GHC==8.2.2
|
||||||
|
GHC==8.4.2
|
||||||
|
|
||||||
source-repository head
|
source-repository head
|
||||||
type: git
|
type: git
|
||||||
|
@ -47,7 +48,7 @@ library
|
||||||
--
|
--
|
||||||
-- note: mtl lower bound is so low because of GHC-7.8
|
-- note: mtl lower bound is so low because of GHC-7.8
|
||||||
build-depends:
|
build-depends:
|
||||||
base >= 4.7 && < 4.11
|
base >= 4.7 && < 4.12
|
||||||
, bytestring >= 0.10.4.0 && < 0.11
|
, bytestring >= 0.10.4.0 && < 0.11
|
||||||
, containers >= 0.5.5.1 && < 0.6
|
, containers >= 0.5.5.1 && < 0.6
|
||||||
, mtl >= 2.1 && < 2.3
|
, mtl >= 2.1 && < 2.3
|
||||||
|
|
|
@ -31,7 +31,7 @@ library
|
||||||
Servant.Client.Ghcjs
|
Servant.Client.Ghcjs
|
||||||
Servant.Client.Internal.XhrClient
|
Servant.Client.Internal.XhrClient
|
||||||
build-depends:
|
build-depends:
|
||||||
base >= 4.7 && < 4.11
|
base >= 4.7 && < 4.12
|
||||||
, bytestring >= 0.10 && < 0.11
|
, bytestring >= 0.10 && < 0.11
|
||||||
, case-insensitive >= 1.2.0.0 && < 1.3.0.0
|
, case-insensitive >= 1.2.0.0 && < 1.3.0.0
|
||||||
, containers >= 0.5 && < 0.6
|
, containers >= 0.5 && < 0.6
|
||||||
|
|
|
@ -21,6 +21,7 @@ tested-with:
|
||||||
GHC==7.10.3
|
GHC==7.10.3
|
||||||
GHC==8.0.2
|
GHC==8.0.2
|
||||||
GHC==8.2.2
|
GHC==8.2.2
|
||||||
|
GHC==8.4.2
|
||||||
homepage: http://haskell-servant.readthedocs.org/
|
homepage: http://haskell-servant.readthedocs.org/
|
||||||
Bug-reports: http://github.com/haskell-servant/servant/issues
|
Bug-reports: http://github.com/haskell-servant/servant/issues
|
||||||
extra-source-files:
|
extra-source-files:
|
||||||
|
@ -41,7 +42,7 @@ library
|
||||||
--
|
--
|
||||||
-- note: mtl lower bound is so low because of GHC-7.8
|
-- note: mtl lower bound is so low because of GHC-7.8
|
||||||
build-depends:
|
build-depends:
|
||||||
base >= 4.7 && < 4.11
|
base >= 4.7 && < 4.12
|
||||||
, bytestring >= 0.10.4.0 && < 0.11
|
, bytestring >= 0.10.4.0 && < 0.11
|
||||||
, containers >= 0.5.5.1 && < 0.6
|
, containers >= 0.5.5.1 && < 0.6
|
||||||
, mtl >= 2.1 && < 2.3
|
, mtl >= 2.1 && < 2.3
|
||||||
|
@ -121,7 +122,7 @@ test-suite spec
|
||||||
, hspec >= 2.4.4 && < 2.6
|
, hspec >= 2.4.4 && < 2.6
|
||||||
, HUnit >= 1.6 && < 1.7
|
, HUnit >= 1.6 && < 1.7
|
||||||
, random-bytestring >= 0.1 && < 0.2
|
, random-bytestring >= 0.1 && < 0.2
|
||||||
, network >= 2.6.3.2 && < 2.7
|
, network >= 2.6.3.2 && < 2.8
|
||||||
, QuickCheck >= 2.10.1 && < 2.12
|
, QuickCheck >= 2.10.1 && < 2.12
|
||||||
, servant == 0.13.*
|
, servant == 0.13.*
|
||||||
, servant-server == 0.13.*
|
, servant-server == 0.13.*
|
||||||
|
|
|
@ -29,7 +29,6 @@ module Servant.StreamSpec (spec) where
|
||||||
import Control.Monad (replicateM_, void)
|
import Control.Monad (replicateM_, void)
|
||||||
import qualified Data.ByteString as BS
|
import qualified Data.ByteString as BS
|
||||||
import Data.Proxy
|
import Data.Proxy
|
||||||
import GHC.Stats (currentBytesUsed, getGCStats)
|
|
||||||
import qualified Network.HTTP.Client as C
|
import qualified Network.HTTP.Client as C
|
||||||
import Prelude ()
|
import Prelude ()
|
||||||
import Prelude.Compat
|
import Prelude.Compat
|
||||||
|
@ -47,6 +46,11 @@ import Servant.ClientSpec (Person (..))
|
||||||
import qualified Servant.ClientSpec as CS
|
import qualified Servant.ClientSpec as CS
|
||||||
import Servant.Server
|
import Servant.Server
|
||||||
|
|
||||||
|
#if MIN_VERSION_base(4,10,0)
|
||||||
|
import GHC.Stats (gcdetails_mem_in_use_bytes, gc, getRTSStats)
|
||||||
|
#else
|
||||||
|
import GHC.Stats (currentBytesUsed, getGCStats)
|
||||||
|
#endif
|
||||||
|
|
||||||
spec :: Spec
|
spec :: Spec
|
||||||
spec = describe "Servant.Stream" $ do
|
spec = describe "Servant.Stream" $ do
|
||||||
|
@ -81,16 +85,16 @@ server = serve sapi
|
||||||
:<|> return (StreamGenerator lotsGenerator)
|
:<|> return (StreamGenerator lotsGenerator)
|
||||||
where
|
where
|
||||||
lotsGenerator f r = do
|
lotsGenerator f r = do
|
||||||
f ""
|
void $ f ""
|
||||||
withFile "/dev/urandom" ReadMode $
|
void $ withFile "/dev/urandom" ReadMode $
|
||||||
\handle -> streamFiveMBNTimes handle 1000 r
|
\handle -> streamFiveMBNTimes handle 1000 r
|
||||||
return ()
|
return ()
|
||||||
|
|
||||||
streamFiveMBNTimes handle left sink
|
streamFiveMBNTimes handle left sink
|
||||||
| left <= 0 = return ""
|
| left <= (0 :: Int) = return ()
|
||||||
| otherwise = do
|
| otherwise = do
|
||||||
msg <- BS.hGet handle (megabytes 5)
|
msg <- BS.hGet handle (megabytes 5)
|
||||||
sink msg
|
_ <- sink msg
|
||||||
streamFiveMBNTimes handle (left - 1) sink
|
streamFiveMBNTimes handle (left - 1) sink
|
||||||
|
|
||||||
|
|
||||||
|
@ -129,8 +133,12 @@ streamSpec = beforeAll (CS.startWaiApp server) $ afterAll CS.endWaiApp $ do
|
||||||
Right (ResultStream res) <- runClient getGetALot baseUrl
|
Right (ResultStream res) <- runClient getGetALot baseUrl
|
||||||
let consumeNChunks n = replicateM_ n (res void)
|
let consumeNChunks n = replicateM_ n (res void)
|
||||||
consumeNChunks 900
|
consumeNChunks 900
|
||||||
|
#if MIN_VERSION_base(4,10,0)
|
||||||
|
memUsed <- gcdetails_mem_in_use_bytes . gc <$> getRTSStats
|
||||||
|
#else
|
||||||
memUsed <- currentBytesUsed <$> getGCStats
|
memUsed <- currentBytesUsed <$> getGCStats
|
||||||
memUsed `shouldSatisfy` (< (megabytes 20))
|
#endif
|
||||||
|
memUsed `shouldSatisfy` (< megabytes 22)
|
||||||
|
|
||||||
megabytes :: Num a => a -> a
|
megabytes :: Num a => a -> a
|
||||||
megabytes n = n * (1000 ^ 2)
|
megabytes n = n * (1000 ^ (2 :: Int))
|
||||||
|
|
|
@ -21,6 +21,7 @@ tested-with:
|
||||||
GHC==7.10.3
|
GHC==7.10.3
|
||||||
GHC==8.0.2
|
GHC==8.0.2
|
||||||
GHC==8.2.2
|
GHC==8.2.2
|
||||||
|
GHC==8.4.2
|
||||||
homepage: http://haskell-servant.readthedocs.org/
|
homepage: http://haskell-servant.readthedocs.org/
|
||||||
Bug-reports: http://github.com/haskell-servant/servant/issues
|
Bug-reports: http://github.com/haskell-servant/servant/issues
|
||||||
extra-source-files:
|
extra-source-files:
|
||||||
|
@ -42,7 +43,7 @@ library
|
||||||
--
|
--
|
||||||
-- note: mtl lower bound is so low because of GHC-7.8
|
-- note: mtl lower bound is so low because of GHC-7.8
|
||||||
build-depends:
|
build-depends:
|
||||||
base >= 4.7 && < 4.11
|
base >= 4.7 && < 4.12
|
||||||
, bytestring >= 0.10.4.0 && < 0.11
|
, bytestring >= 0.10.4.0 && < 0.11
|
||||||
, text >= 1.2.3.0 && < 1.3
|
, text >= 1.2.3.0 && < 1.3
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,11 @@
|
||||||
[The latest version of this document is on GitHub.](https://github.com/haskell-servant/servant/blob/master/servant-foreign/CHANGELOG.md)
|
[The latest version of this document is on GitHub.](https://github.com/haskell-servant/servant/blob/master/servant-foreign/CHANGELOG.md)
|
||||||
[Changelog for `servant` package contains significant entries for all core packages.](https://github.com/haskell-servant/servant/blob/master/servant/CHANGELOG.md)
|
[Changelog for `servant` package contains significant entries for all core packages.](https://github.com/haskell-servant/servant/blob/master/servant/CHANGELOG.md)
|
||||||
|
|
||||||
|
0.11.1
|
||||||
|
------
|
||||||
|
|
||||||
|
- Add missing `Semigroup` instances
|
||||||
|
|
||||||
0.11
|
0.11
|
||||||
----
|
----
|
||||||
|
|
||||||
|
|
|
@ -27,6 +27,7 @@ tested-with:
|
||||||
GHC==7.10.3
|
GHC==7.10.3
|
||||||
GHC==8.0.2
|
GHC==8.0.2
|
||||||
GHC==8.2.2
|
GHC==8.2.2
|
||||||
|
GHC==8.4.2
|
||||||
|
|
||||||
source-repository head
|
source-repository head
|
||||||
type: git
|
type: git
|
||||||
|
@ -42,9 +43,13 @@ library
|
||||||
--
|
--
|
||||||
-- note: mtl lower bound is so low because of GHC-7.8
|
-- note: mtl lower bound is so low because of GHC-7.8
|
||||||
build-depends:
|
build-depends:
|
||||||
base >= 4.7 && <4.11
|
base >= 4.7 && <4.12
|
||||||
, text >= 1.2.3.0 && < 1.3
|
, text >= 1.2.3.0 && < 1.3
|
||||||
|
|
||||||
|
if !impl(ghc >= 8.0)
|
||||||
|
build-depends:
|
||||||
|
semigroups >=0.18.3 && <0.19
|
||||||
|
|
||||||
-- Servant dependencies
|
-- Servant dependencies
|
||||||
build-depends:
|
build-depends:
|
||||||
servant == 0.13.*
|
servant == 0.13.*
|
||||||
|
|
|
@ -27,6 +27,7 @@ import Control.Lens (makePrisms, makeLenses, Getter, (&), (<>~), (%~),
|
||||||
(.~))
|
(.~))
|
||||||
import Data.Data (Data)
|
import Data.Data (Data)
|
||||||
import Data.Proxy
|
import Data.Proxy
|
||||||
|
import Data.Semigroup (Semigroup)
|
||||||
import Data.String
|
import Data.String
|
||||||
import Data.Text
|
import Data.Text
|
||||||
import Data.Typeable (Typeable)
|
import Data.Typeable (Typeable)
|
||||||
|
@ -38,12 +39,12 @@ import Servant.API.TypeLevel
|
||||||
import Servant.API.Modifiers (RequiredArgument)
|
import Servant.API.Modifiers (RequiredArgument)
|
||||||
|
|
||||||
newtype FunctionName = FunctionName { unFunctionName :: [Text] }
|
newtype FunctionName = FunctionName { unFunctionName :: [Text] }
|
||||||
deriving (Data, Show, Eq, Monoid, Typeable)
|
deriving (Data, Show, Eq, Semigroup, Monoid, Typeable)
|
||||||
|
|
||||||
makePrisms ''FunctionName
|
makePrisms ''FunctionName
|
||||||
|
|
||||||
newtype PathSegment = PathSegment { unPathSegment :: Text }
|
newtype PathSegment = PathSegment { unPathSegment :: Text }
|
||||||
deriving (Data, Show, Eq, IsString, Monoid, Typeable)
|
deriving (Data, Show, Eq, IsString, Semigroup, Monoid, Typeable)
|
||||||
|
|
||||||
makePrisms ''PathSegment
|
makePrisms ''PathSegment
|
||||||
|
|
||||||
|
|
|
@ -26,6 +26,7 @@ tested-with:
|
||||||
GHC==7.10.3
|
GHC==7.10.3
|
||||||
GHC==8.0.2
|
GHC==8.0.2
|
||||||
GHC==8.2.2
|
GHC==8.2.2
|
||||||
|
GHC==8.4.2
|
||||||
extra-source-files:
|
extra-source-files:
|
||||||
include/*.h
|
include/*.h
|
||||||
CHANGELOG.md
|
CHANGELOG.md
|
||||||
|
@ -60,7 +61,7 @@ library
|
||||||
--
|
--
|
||||||
-- note: mtl lower bound is so low because of GHC-7.8
|
-- note: mtl lower bound is so low because of GHC-7.8
|
||||||
build-depends:
|
build-depends:
|
||||||
base >= 4.7 && < 4.11
|
base >= 4.7 && < 4.12
|
||||||
, bytestring >= 0.10.4.0 && < 0.11
|
, bytestring >= 0.10.4.0 && < 0.11
|
||||||
, containers >= 0.5.5.1 && < 0.6
|
, containers >= 0.5.5.1 && < 0.6
|
||||||
, mtl >= 2.1 && < 2.3
|
, mtl >= 2.1 && < 2.3
|
||||||
|
@ -89,7 +90,7 @@ library
|
||||||
, http-types >= 0.12 && < 0.13
|
, http-types >= 0.12 && < 0.13
|
||||||
, network-uri >= 2.6.1.0 && < 2.7
|
, network-uri >= 2.6.1.0 && < 2.7
|
||||||
, monad-control >= 1.0.0.4 && < 1.1
|
, monad-control >= 1.0.0.4 && < 1.1
|
||||||
, network >= 2.6.3.2 && < 2.7
|
, network >= 2.6.3.2 && < 2.8
|
||||||
, safe >= 0.3.15 && < 0.4
|
, safe >= 0.3.15 && < 0.4
|
||||||
, split >= 0.2.3.2 && < 0.3
|
, split >= 0.2.3.2 && < 0.3
|
||||||
, string-conversions >= 0.4.0.1 && < 0.5
|
, string-conversions >= 0.4.0.1 && < 0.5
|
||||||
|
|
|
@ -22,6 +22,7 @@ tested-with:
|
||||||
GHC==7.10.3
|
GHC==7.10.3
|
||||||
GHC==8.0.2
|
GHC==8.0.2
|
||||||
GHC==8.2.2
|
GHC==8.2.2
|
||||||
|
GHC==8.4.2
|
||||||
extra-source-files:
|
extra-source-files:
|
||||||
include/*.h
|
include/*.h
|
||||||
CHANGELOG.md
|
CHANGELOG.md
|
||||||
|
@ -69,7 +70,7 @@ library
|
||||||
--
|
--
|
||||||
-- note: mtl lower bound is so low because of GHC-7.8
|
-- note: mtl lower bound is so low because of GHC-7.8
|
||||||
build-depends:
|
build-depends:
|
||||||
base >= 4.7 && < 4.11
|
base >= 4.7 && < 4.12
|
||||||
, bytestring >= 0.10.4.0 && < 0.11
|
, bytestring >= 0.10.4.0 && < 0.11
|
||||||
, mtl >= 2.1 && < 2.3
|
, mtl >= 2.1 && < 2.3
|
||||||
, text >= 1.2.3.0 && < 1.3
|
, text >= 1.2.3.0 && < 1.3
|
||||||
|
|
Loading…
Reference in a new issue