summaryrefslogtreecommitdiff
path: root/utils/verify-release/verify-packages.sh
blob: d5c6bf1bfcf75330abc2ad65aa29f0add5ed5027 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#!/bin/bash
#
# This script will verify that the packages in ghc,
# correspond to packages on hackage.
rm -fR ghc-packages hackage-packages package-diffs
mkdir -p ghc-packages hackage-packages package-diffs
# We'll skip Cabal and tarballs, while looking only at packages in libraries
# that we reference as gitmodules.
for lib in $(git submodule status|grep libraries|grep -v tarballs|grep -v Cabal|awk -F\  '{ print $2 }'); do
    (cd $lib && cabal new-sdist -o ../../ghc-packages);
done

for pkg in $(cd ghc-packages && ls *.tar.gz); do
    PKG=${pkg%%.tar.gz}
    (cd hackage-packages && cabal get --pristine ${PKG})
    (cd hackage-packages/${PKG} && git init && git add . && git commit -q -m "hackage packages" && rm -fR *)
    (cd hackage-packages && tar xzf ../ghc-packages/$pkg)
    (cd hackage-packages/${PKG} && git -c core.fileMode=false diff > ../$PKG.patch)
done
find hackage-packages -name "*.patch" -not -empty -type f -print -exec false {} +