diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index ff08a1b4b516e8c4c283a73b27faef1c7506bffc..8083023338a4f83b8314d934ce69a95f857bda48 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -20,10 +20,7 @@ build-all:
echo "with-compiler: $GHC" >> cabal.project
echo "packages: packages/*" >> cabal.project
- ./scripts/patch-tool unpack_patch_all
- - for pkg in `cat scripts/build-all.list`; do
- echo "Building $pkg"
- cabal new-install $pkg
- done
+ - ./scripts/build-all.py
image: "registry.gitlab.haskell.org/ghc/ci-images/x86_64-linux-deb9:$DOCKER_REV"
tags:
- x86_64-linux
diff --git a/scripts/build-all.py b/scripts/build-all.py
index d736e744a0782093133291978e0b529c76b98f7a..37ec6ea583c6f76417254152121dcbcc38547511 100755
--- a/scripts/build-all.py
+++ b/scripts/build-all.py
@@ -2,15 +2,22 @@
import subprocess
from pathlib import Path
+import json
-packages = open('scripts/build-all.list').read().split('\n')
-for pkg_version in packages:
- if not (Path('packages') / pkg_version).exists():
- subprocess.check_call(['scripts/patch-tool', 'unpack-patch', 'patches/'+pkg_version+'.patch'])
+def build_all(packages):
+ results = {}
+ for pkg_version in packages:
+ code = subprocess.call([
+ 'cabal', 'new-build', pkg_version,
+ '--allow-newer=base,template-haskell',
+ '--ghc-option="-ddump-to-file -ddump-timings"'
+ ])
+ results[pkg_version] = code
-print(open('cabal.project.local').read())
-for pkg_version in packages:
- #pkg, version = line.split(' ')
- #pkg_version = '%s-%s' % (pkg, version)
- subprocess.check_call(['cabal', 'new-install', pkg_version])
+ return results
+if __name__ == '__main__':
+ pkg_list = Path(__file__).parent / 'build-all.list'
+ packages = pkg_list.read_text().split('\n')
+ results = build_all(packages)
+ json.dump(results, open('build-all.json', 'w'))