From 5c73d6d7a9071395abf5a9d63164b421e440de7e Mon Sep 17 00:00:00 2001 From: Mikael Brockman Date: Mon, 21 Aug 2017 14:50:38 +0300 Subject: [PATCH] Add a Travis configuration for autotesting commits The configuration uses Nix to install dependencies. I first tried using just Cabal, but compiling all the dependencies takes too long for the free tier of Travis. Nix doesn't compile Hackage dependencies because it has a "binary cache" with compiled versions of almost all Hackage packages. I do not run the GF test suite, because it seems to be in a failing state. This can be enabled later. All of this will only be enabled once the Travis service is set up by someone in the GF team with the permissions to do so. Build results will then be automatically visible on all new commits and pull requests. --- .travis.yml | 2 ++ default.nix | 34 ++++++++++++++++++++++++++++++++++ gf.nix | 3 +++ 3 files changed, 39 insertions(+) create mode 100644 .travis.yml create mode 100644 default.nix create mode 100644 gf.nix diff --git a/.travis.yml b/.travis.yml new file mode 100644 index 000000000..50d53fc4e --- /dev/null +++ b/.travis.yml @@ -0,0 +1,2 @@ +language: nix +script: rm -rf .git && nix-build gf.nix diff --git a/default.nix b/default.nix new file mode 100644 index 000000000..98cae21a4 --- /dev/null +++ b/default.nix @@ -0,0 +1,34 @@ +{ mkDerivation, alex, array, base, bytestring, Cabal, cgi +, containers, directory, exceptions, filepath, happy, haskeline +, HTF, httpd-shed, HUnit, json, lifted-base, mtl, network +, network-uri, old-locale, parallel, pretty, process, random +, stdenv, terminfo, time, time-compat, unix, utf8-string +}: +mkDerivation { + pname = "gf"; + version = "3.9"; + src = ./.; + isLibrary = true; + isExecutable = true; + enableSeparateDataOutput = true; + libraryHaskellDepends = [ + array base bytestring cgi containers directory exceptions filepath + haskeline httpd-shed json mtl network network-uri old-locale + parallel pretty process random terminfo time time-compat unix + utf8-string + ]; + libraryToolDepends = [ alex happy ]; + executableHaskellDepends = [ base containers lifted-base mtl ]; + testHaskellDepends = [ + base Cabal directory filepath HTF HUnit process + ]; + doCheck = false; + postPatch = '' + sed -i "s|\"-s\"|\"\"|" ./Setup.hs + sed -i "s|numJobs (bf bi)++||" ./Setup.hs + ''; + preBuild = ''export LD_LIBRARY_PATH=`pwd`/dist/build:$LD_LIBRARY_PATH''; + homepage = "http://www.grammaticalframework.org/"; + description = "Grammatical Framework"; + license = "unknown"; +} diff --git a/gf.nix b/gf.nix new file mode 100644 index 000000000..4b7ed2092 --- /dev/null +++ b/gf.nix @@ -0,0 +1,3 @@ +let pkgs = import {}; in rec { + gf = pkgs.haskellPackages.callPackage ./default.nix {}; +}