diff --git a/.travis.yml b/.travis.yml index f0a26335..72ea1d26 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,112 +1,190 @@ # This Travis job script has been generated by a script via # -# runghc make_travis_yml_2.hs '-o' '.travis.yml' 'threadscope.cabal' 'libgtk2.0-dev' '--osx=8.2.2' +# haskell-ci 'threadscope.cabal' '--apt' 'libgtk2.0-dev' '--osx' '8.6.5' '--osx' '8.8.1' '--travis-patches' '.travis/osx.patch' '--travis-patches' '.travis/deploy.patch' '--travis-patches' '.travis/allow-failrues.patch' # -# For more information, see https://github.com/hvr/multi-ghc-travis +# For more information, see https://github.com/haskell-CI/haskell-ci # +# version: 0.9.20191126 +# +version: ~> 1.0 language: c -sudo: false - +os: linux +dist: xenial git: - submodules: false # whether to recursively clone submodules - + # whether to recursively clone submodules + submodules: false cache: directories: - $HOME/.cabal/packages - $HOME/.cabal/store + - $HOME/.hlint - $HOME/.ghc-install - before_cache: - - rm -fv $HOME/.cabal/packages/hackage.haskell.org/build-reports.log + - rm -fv $CABALHOME/packages/hackage.haskell.org/build-reports.log # remove files that are regenerated by 'cabal update' - - rm -fv $HOME/.cabal/packages/hackage.haskell.org/00-index.* - - rm -fv $HOME/.cabal/packages/hackage.haskell.org/*.json - - rm -fv $HOME/.cabal/packages/hackage.haskell.org/01-index.cache - - rm -fv $HOME/.cabal/packages/hackage.haskell.org/01-index.tar - - rm -fv $HOME/.cabal/packages/hackage.haskell.org/01-index.tar.idx - - - rm -rfv $HOME/.cabal/packages/head.hackage - -matrix: + - rm -fv $CABALHOME/packages/hackage.haskell.org/00-index.* + - rm -fv $CABALHOME/packages/hackage.haskell.org/*.json + - rm -fv $CABALHOME/packages/hackage.haskell.org/01-index.cache + - rm -fv $CABALHOME/packages/hackage.haskell.org/01-index.tar + - rm -fv $CABALHOME/packages/hackage.haskell.org/01-index.tar.idx + - rm -rfv $CABALHOME/packages/head.hackage +jobs: include: - - compiler: "ghc-7.10.2" - # env: TEST=--disable-tests BENCH=--disable-benchmarks - addons: {apt: {packages: [ghc-ppa-tools,cabal-install-head,ghc-7.10.2,libgtk2.0-dev], sources: [hvr-ghc]}} - - compiler: "ghc-8.0.2" - # env: TEST=--disable-tests BENCH=--disable-benchmarks - addons: {apt: {packages: [ghc-ppa-tools,cabal-install-head,ghc-8.0.2,libgtk2.0-dev], sources: [hvr-ghc]}} - - compiler: "ghc-8.2.2" - # env: TEST=--disable-tests BENCH=--disable-benchmarks - addons: {apt: {packages: [ghc-ppa-tools,cabal-install-head,ghc-8.2.2,libgtk2.0-dev], sources: [hvr-ghc]}} - - compiler: "ghc-8.4.2" - # env: TEST=--disable-tests BENCH=--disable-benchmarks - addons: {apt: {packages: [ghc-ppa-tools,cabal-install-head,ghc-8.4.2,libgtk2.0-dev], sources: [hvr-ghc]}} - - compiler: "ghc-8.2.2" - # env: TEST=--disable-tests BENCH=--disable-benchmarks - addons: {apt: {packages: [ghc-ppa-tools,cabal-install-head,ghc-8.2.2,libgtk2.0-dev], sources: [hvr-ghc]}} + - compiler: ghc-8.8.1 + addons: {"apt":{"sources":[{"sourceline":"deb http://ppa.launchpad.net/hvr/ghc/ubuntu xenial main","key_url":"https://keyserver.ubuntu.com/pks/lookup?op=get&search=0x063dab2bdc0b3f9fcebc378bff3aeacef6f88286"}],"packages":["ghc-8.8.1","cabal-install-3.0","libgtk2.0-dev"]}} + os: linux + - compiler: ghc-8.6.5 + addons: {"apt":{"sources":[{"sourceline":"deb http://ppa.launchpad.net/hvr/ghc/ubuntu xenial main","key_url":"https://keyserver.ubuntu.com/pks/lookup?op=get&search=0x063dab2bdc0b3f9fcebc378bff3aeacef6f88286"}],"packages":["ghc-8.6.5","cabal-install-3.0","libgtk2.0-dev"]}} + os: linux + - compiler: ghc-8.4.4 + addons: {"apt":{"sources":[{"sourceline":"deb http://ppa.launchpad.net/hvr/ghc/ubuntu xenial main","key_url":"https://keyserver.ubuntu.com/pks/lookup?op=get&search=0x063dab2bdc0b3f9fcebc378bff3aeacef6f88286"}],"packages":["ghc-8.4.4","cabal-install-3.0","libgtk2.0-dev"]}} + os: linux + - compiler: ghc-8.2.2 + addons: {"apt":{"sources":[{"sourceline":"deb http://ppa.launchpad.net/hvr/ghc/ubuntu xenial main","key_url":"https://keyserver.ubuntu.com/pks/lookup?op=get&search=0x063dab2bdc0b3f9fcebc378bff3aeacef6f88286"}],"packages":["ghc-8.2.2","cabal-install-3.0","libgtk2.0-dev"]}} + os: linux + - compiler: ghc-8.8.1 + addons: {"homebrew": {"packages":["gtk+", "gtk-mac-integration"]}} + env: PKG_CONFIG_PATH=/usr/local/opt/libffi/lib/pkgconfig os: osx - + osx_image: xcode11 + - compiler: ghc-8.6.5 + addons: {"homebrew": {"packages":["gtk+", "gtk-mac-integration"]}} + env: PKG_CONFIG_PATH=/usr/local/opt/libffi/lib/pkgconfig + os: osx + osx_image: xcode11 + allow_failures: + - compiler: ghc-8.8.1 + os: linux before_install: - - HC=${CC} - - HCPKG=${HC/ghc/ghc-pkg} + - HC=$(echo "/opt/$CC/bin/ghc" | sed 's/-/\//') + - WITHCOMPILER="-w $HC" + - HADDOCK=$(echo "/opt/$CC/bin/haddock" | sed 's/-/\//') + - if [ "$TRAVIS_OS_NAME" = "osx" ]; then HADDOCK=$(echo $HADDOCK | sed "s:^/opt:$HOME/.ghc-install:"); fi + - HCPKG="$HC-pkg" - unset CC - - ROOTDIR=$(pwd) - - mkdir -p $HOME/.local/bin - - "if [ \"$(uname)\" = \"Darwin\" ]; then brew update; brew install gtk+ gtk-mac-integration; brew upgrade python@3; curl https://haskell.futurice.com/haskell-on-macos.py | python3 - --make-dirs --install-dir=$HOME/.ghc-install --cabal-alias=head install cabal-install-head ${HC}; fi" - - "if [ \"$(uname)\" = \"Darwin\" ]; then PATH=$HOME/.ghc-install/ghc/bin:$HOME/local/bin:$PATH; else PATH=/opt/ghc/bin:/opt/ghc-ppa-tools/bin:$HOME/local/bin:$PATH; fi" - - HCNUMVER=$(( $(${HC} --numeric-version|sed -E 's/([0-9]+)\.([0-9]+)\.([0-9]+).*/\1 * 10000 + \2 * 100 + \3/') )) + - CABAL=/opt/ghc/bin/cabal + - CABALHOME=$HOME/.cabal + - export PATH="$CABALHOME/bin:$PATH" + - TOP=$(pwd) + - if [ "$TRAVIS_OS_NAME" = "osx" ]; then curl https://haskell.futurice.com/haskell-on-macos.py | python3 - --make-dirs --install-dir=$HOME/.ghc-install --cabal-alias=3.0.0.0 install cabal-install-3.0.0.0 ${TRAVIS_COMPILER}; fi + - if [ "$TRAVIS_OS_NAME" = "osx" ]; then HC=$HOME/.ghc-install/ghc/bin/$TRAVIS_COMPILER; WITHCOMPILER="-w $HC"; HCPKG=${HC/ghc/ghc-pkg}; CABAL=$HOME/.ghc-install/ghc/bin/cabal; fi + - "HCNUMVER=$(${HC} --numeric-version|perl -ne '/^(\\d+)\\.(\\d+)\\.(\\d+)(\\.(\\d+))?$/; print(10000 * $1 + 100 * $2 + ($3 == 0 ? $5 != 1 : $3))')" - echo $HCNUMVER - + - CABAL="$CABAL -vnormal+nowrap+markoutput" + - set -o pipefail + - | + echo 'function blue(s) { printf "\033[0;34m" s "\033[0m " }' >> .colorful.awk + echo 'BEGIN { state = "output"; }' >> .colorful.awk + echo '/^-----BEGIN CABAL OUTPUT-----$/ { state = "cabal" }' >> .colorful.awk + echo '/^-----END CABAL OUTPUT-----$/ { state = "output" }' >> .colorful.awk + echo '!/^(-----BEGIN CABAL OUTPUT-----|-----END CABAL OUTPUT-----)/ {' >> .colorful.awk + echo ' if (state == "cabal") {' >> .colorful.awk + echo ' print blue($0)' >> .colorful.awk + echo ' } else {' >> .colorful.awk + echo ' print $0' >> .colorful.awk + echo ' }' >> .colorful.awk + echo '}' >> .colorful.awk + - cat .colorful.awk + - | + color_cabal_output () { + awk -f $TOP/.colorful.awk + } + - echo text | color_cabal_output install: - - cabal --version + - ${CABAL} --version - echo "$(${HC} --version) [$(${HC} --print-project-git-commit-id 2> /dev/null || echo '?')]" - - BENCH=${BENCH---enable-benchmarks} - - TEST=${TEST---enable-tests} - - HADDOCK=${HADDOCK-true} - - INSTALLED=${INSTALLED-true} - - GHCHEAD=${GHCHEAD-false} - - travis_retry cabal update -v - - "sed -i.bak 's/^jobs:/-- jobs:/' ${HOME}/.cabal/config" - - rm -fv cabal.project cabal.project.local - - grep -Ev -- '^\s*--' ${HOME}/.cabal/config | grep -Ev '^\s*$' - - "printf 'packages: \".\"\\n' > cabal.project" - - cat cabal.project - - if [ -f "./configure.ac" ]; then - (cd "." && autoreconf -i); + - TEST=--enable-tests + - BENCH=--enable-benchmarks + - HEADHACKAGE=false + - rm -f $CABALHOME/config + - | + echo "verbose: normal +nowrap +markoutput" >> $CABALHOME/config + echo "remote-build-reporting: anonymous" >> $CABALHOME/config + echo "write-ghc-environment-files: always" >> $CABALHOME/config + echo "remote-repo-cache: $CABALHOME/packages" >> $CABALHOME/config + echo "logs-dir: $CABALHOME/logs" >> $CABALHOME/config + echo "world-file: $CABALHOME/world" >> $CABALHOME/config + echo "extra-prog-path: $CABALHOME/bin" >> $CABALHOME/config + echo "symlink-bindir: $CABALHOME/bin" >> $CABALHOME/config + echo "installdir: $CABALHOME/bin" >> $CABALHOME/config + echo "build-summary: $CABALHOME/logs/build.log" >> $CABALHOME/config + echo "store-dir: $CABALHOME/store" >> $CABALHOME/config + echo "install-dirs user" >> $CABALHOME/config + echo " prefix: $CABALHOME" >> $CABALHOME/config + echo "repository hackage.haskell.org" >> $CABALHOME/config + echo " url: http://hackage.haskell.org/" >> $CABALHOME/config + echo " secure: True" >> $CABALHOME/config + echo " key-threshold: 3" >> $CABALHOME/config + echo " root-keys:" >> $CABALHOME/config + echo " fe331502606802feac15e514d9b9ea83fee8b6ffef71335479a2e68d84adc6b0" >> $CABALHOME/config + echo " 1ea9ba32c526d1cc91ab5e5bd364ec5e9e8cb67179a471872f6e26f0ae773d42" >> $CABALHOME/config + echo " 2c6c3627bd6c982990239487f1abd02e08a02e6cf16edb105a8012d444d870c3" >> $CABALHOME/config + echo " 0a5c7ea47cd1b15f01f5f51a33adda7e655bc0f0b0615baa8e271f4c3351e21d" >> $CABALHOME/config + echo " 51f0161b906011b52c6613376b1ae937670da69322113a246a09f807c62f6921" >> $CABALHOME/config + - | + echo "program-default-options" >> $CABALHOME/config + echo " ghc-options: $GHCJOBS +RTS -M6G -RTS" >> $CABALHOME/config + - cat $CABALHOME/config + - rm -fv cabal.project cabal.project.local cabal.project.freeze + - travis_retry ${CABAL} v2-update -v + # Generate cabal.project + - rm -rf cabal.project cabal.project.local cabal.project.freeze + - touch cabal.project + - | + echo "packages: ." >> cabal.project + - | + - "for pkg in $($HCPKG list --simple-output); do echo $pkg | sed 's/-[^-]*$//' | (grep -vE -- '^(threadscope)$' || true) | sed 's/^/constraints: /' | sed 's/$/ installed/' >> cabal.project.local; done" + - | + if [ "$TRAVIS_OS_NAME" = "osx" ]; then + echo 'constraints: gtk +have-quartz-gtk' >> cabal.project + echo 'allow-newer: Cabal, gtk-mac-integration:gtk' >> cabal.project fi - - rm -f cabal.project.freeze - - cabal new-configure -w ${HC} --allow-newer=Cabal - - "if [ \"$(uname)\" = \"Darwin\" ]; then cabal new-configure -w ${HC} --allow-newer=Cabal --constraint='gtk +have-quartz-gtk'; fi" - - cabal new-build -w ${HC} ${TEST} ${BENCH} --project-file="cabal.project" --dep -j2 all - - cabal new-build -w ${HC} --disable-tests --disable-benchmarks --project-file="cabal.project" --dep -j2 all - - rm -rf .ghc.environment.* "."/dist - - DISTDIR=$(mktemp -d /tmp/dist-test.XXXX) - -# Here starts the actual work to be performed for the package under test; -# any command which exits with a non-zero exit code causes the build to fail. + - cat cabal.project || true + - cat cabal.project.local || true + - if [ -f "./configure.ac" ]; then (cd "." && autoreconf -i); fi + - ${CABAL} v2-freeze $WITHCOMPILER ${TEST} ${BENCH} | color_cabal_output + - "cat cabal.project.freeze | sed -E 's/^(constraints: *| *)//' | sed 's/any.//'" + - rm cabal.project.freeze + - ${CABAL} v2-build $WITHCOMPILER ${TEST} ${BENCH} --dep -j2 all | color_cabal_output + - ${CABAL} v2-build $WITHCOMPILER --disable-tests --disable-benchmarks --dep -j2 all | color_cabal_output script: - # test that source-distributions can be generated - - (cd "." && cabal sdist) - - mv "."/dist-newstyle/sdist/threadscope-*.tar.gz ${DISTDIR}/ + - DISTDIR=$(mktemp -d /tmp/dist-test.XXXX) + # Packaging... + - ${CABAL} v2-sdist all | color_cabal_output + # Unpacking... + - mv dist-newstyle/sdist/*.tar.gz ${DISTDIR}/ - cd ${DISTDIR} || false - - find . -maxdepth 1 -name '*.tar.gz' -exec tar -xvf '{}' \; - - "printf 'packages: threadscope-*/*.cabal\\n' > cabal.project" - - cat cabal.project - - cabal new-configure -w ${HC} --allow-newer=Cabal - - "if [ \"$(uname)\" = \"Darwin\" ]; then cabal new-configure -w ${HC} --allow-newer=Cabal --constraint='gtk +have-quartz-gtk'; fi" + - find . -maxdepth 1 -type f -name '*.tar.gz' -exec tar -xvf '{}' \; + - find . -maxdepth 1 -type f -name '*.tar.gz' -exec rm '{}' \; + - PKGDIR_threadscope="$(find . -maxdepth 1 -type d -regex '.*/threadscope-[0-9.]*')" + # Generate cabal.project + - rm -rf cabal.project cabal.project.local cabal.project.freeze + - touch cabal.project + - | + echo "packages: ${PKGDIR_threadscope}" >> cabal.project + - | + - "for pkg in $($HCPKG list --simple-output); do echo $pkg | sed 's/-[^-]*$//' | (grep -vE -- '^(threadscope)$' || true) | sed 's/^/constraints: /' | sed 's/$/ installed/' >> cabal.project.local; done" + - | + if [ "$TRAVIS_OS_NAME" = "osx" ]; then + echo 'constraints: gtk +have-quartz-gtk' >> cabal.project + echo 'allow-newer: Cabal, gtk-mac-integration:gtk' >> cabal.project + fi + - cat cabal.project || true + - cat cabal.project.local || true + # Building... # this builds all libraries and executables (without tests/benchmarks) - - cabal new-build -w ${HC} --disable-tests --disable-benchmarks all - - # Build with installed constraints for packages in global-db - - if $INSTALLED; then echo cabal new-build -w ${HC} --disable-tests --disable-benchmarks $(${HCPKG} list --global --simple-output --names-only | sed 's/\([a-zA-Z0-9-]\{1,\}\) */--constraint="\1 installed" /g') all | sh; else echo "Not building with installed constraints"; fi - + - ${CABAL} v2-build $WITHCOMPILER --disable-tests --disable-benchmarks all | color_cabal_output + # Building with tests and benchmarks... # build & run tests, build benchmarks - - cabal new-build -w ${HC} ${TEST} ${BENCH} all + - ${CABAL} v2-build $WITHCOMPILER ${TEST} ${BENCH} all | color_cabal_output + # cabal check... + - (cd ${PKGDIR_threadscope} && ${CABAL} -vnormal check) + # Building without installed constraints for packages in global-db... + - rm -f cabal.project.local + - ${CABAL} v2-build $WITHCOMPILER --disable-tests --disable-benchmarks all | color_cabal_output - # cabal check - - (cd threadscope-* && cabal check) - -# REGENDATA ["-o",".travis.yml","threadscope.cabal","libgtk2.0-dev","--osx=8.2.2"] +# REGENDATA ("0.9.20191126",["threadscope.cabal","--apt","libgtk2.0-dev","--osx","8.6.5","--osx","8.8.1","--travis-patches",".travis/osx.patch","--travis-patches",".travis/deploy.patch","--travis-patches",".travis/allow-failrues.patch"]) +# EOF before_deploy: - cp $(find dist-newstyle/ -type f -name threadscope -exec test -x {} \; -print) threadscope.$TRAVIS_OS_NAME @@ -121,6 +199,4 @@ deploy: on: repo: haskell/ThreadScope tags: true - condition: "$HC = ghc-8.2.2" - -# EOF + condition: "$HC = ghc-8.6.5" diff --git a/.travis/deploy.patch b/.travis/deploy.patch new file mode 100644 index 00000000..a5108169 --- /dev/null +++ b/.travis/deploy.patch @@ -0,0 +1,23 @@ +diff --git a/.travis.yml b/.travis.yml +index d21f854..6443253 100644 +--- a/.travis.yml ++++ b/.travis.yml +@@ -145,3 +145,18 @@ script: + + # REGENDATA ["travis","threadscope.cabal","--apt","libgtk2.0-dev","--osx","8.6.5"] + # EOF ++ ++before_deploy: ++ - cp $(find dist-newstyle/ -type f -name threadscope -exec test -x {} \; -print) threadscope.$TRAVIS_OS_NAME ++ - gzip -f threadscope.$TRAVIS_OS_NAME ++ ++deploy: ++ provider: releases ++ api_key: ++ secure: "CLdDbxzqQRTU6wMRqyMutoprbgr8o6fQfIYZc7DBkbRi1r6bOpJl/2Bmob6FYC1XhMsdeBhZfLy0a0MqcU4LNbToLtR8yKN+SvmfEUQn3novk69vfI5KipFqLLeduN4oHgGXSdjIdck3nF/ze8kB2ottJUNdp8J3UxAgMwS9AF8=" ++ file: threadscope.$TRAVIS_OS_NAME.gz ++ skip_cleanup: true ++ on: ++ repo: haskell/ThreadScope ++ tags: true ++ condition: "$HC = ghc-8.6.5" diff --git a/.travis/osx.patch b/.travis/osx.patch new file mode 100644 index 00000000..859605ab --- /dev/null +++ b/.travis/osx.patch @@ -0,0 +1,53 @@ +diff --git a/.travis.yml b/.travis.yml +index 8d435cb..a8af409 100644 +--- a/.travis.yml ++++ b/.travis.yml +@@ -49,11 +49,15 @@ jobs: + addons: {"apt":{"sources":[{"sourceline":"deb http://ppa.launchpad.net/hvr/ghc/ubuntu xenial main","key_url":"https://keyserver.ubuntu.com/pks/lookup?op=get&search=0x063dab2bdc0b3f9fcebc378bff3aeacef6f88286"}],"packages":["ghc-7.10.2","cabal-install-3.0","libgtk2.0-dev"]}} + os: linux + - compiler: ghc-8.8.1 +- addons: {"apt":{"sources":[{"sourceline":"deb http://ppa.launchpad.net/hvr/ghc/ubuntu xenial main","key_url":"https://keyserver.ubuntu.com/pks/lookup?op=get&search=0x063dab2bdc0b3f9fcebc378bff3aeacef6f88286"}],"packages":["ghc-8.8.1","cabal-install-3.0","libgtk2.0-dev"]}} ++ addons: {"homebrew": {"packages":["gtk+", "gtk-mac-integration"]}} ++ env: PKG_CONFIG_PATH=/usr/local/opt/libffi/lib/pkgconfig + os: osx ++ osx_image: xcode11 + - compiler: ghc-8.6.5 +- addons: {"apt":{"sources":[{"sourceline":"deb http://ppa.launchpad.net/hvr/ghc/ubuntu xenial main","key_url":"https://keyserver.ubuntu.com/pks/lookup?op=get&search=0x063dab2bdc0b3f9fcebc378bff3aeacef6f88286"}],"packages":["ghc-8.6.5","cabal-install-3.0","libgtk2.0-dev"]}} ++ addons: {"homebrew": {"packages":["gtk+", "gtk-mac-integration"]}} ++ env: PKG_CONFIG_PATH=/usr/local/opt/libffi/lib/pkgconfig + os: osx ++ osx_image: xcode11 + before_install: + - HC=$(echo "/opt/$CC/bin/ghc" | sed 's/-/\//') + - WITHCOMPILER="-w $HC" +@@ -69,7 +69,7 @@ before_install: + - CABALHOME=$HOME/.cabal + - export PATH="$CABALHOME/bin:$PATH" + - TOP=$(pwd) +- - if [ "$TRAVIS_OS_NAME" = "osx" ]; then curl https://haskell.futurice.com/haskell-on-macos.py | python3 - --make-dirs --install-dir=$HOME/.ghc-install --cabal-alias=head install cabal-install-head ${TRAVIS_COMPILER}; fi ++ - if [ "$TRAVIS_OS_NAME" = "osx" ]; then curl https://haskell.futurice.com/haskell-on-macos.py | python3 - --make-dirs --install-dir=$HOME/.ghc-install --cabal-alias=3.0.0.0 install cabal-install-3.0.0.0 ${TRAVIS_COMPILER}; fi + - if [ "$TRAVIS_OS_NAME" = "osx" ]; then HC=$HOME/.ghc-install/ghc/bin/$TRAVIS_COMPILER; WITHCOMPILER="-w $HC"; HCPKG=${HC/ghc/ghc-pkg}; CABAL=$HOME/.ghc-install/ghc/bin/cabal; fi + - "HCNUMVER=$(${HC} --numeric-version|perl -ne '/^(\\d+)\\.(\\d+)\\.(\\d+)(\\.(\\d+))?$/; print(10000 * $1 + 100 * $2 + ($3 == 0 ? $5 != 1 : $3))')" + - echo $HCNUMVER +@@ -138,5 +138,10 @@ install: + - | + - "for pkg in $($HCPKG list --simple-output); do echo $pkg | sed 's/-[^-]*$//' | (grep -vE -- '^(threadscope)$' || true) | sed 's/^/constraints: /' | sed 's/$/ installed/' >> cabal.project.local; done" ++ - | ++ if [ "$TRAVIS_OS_NAME" = "osx" ]; then ++ echo 'constraints: gtk +have-quartz-gtk' >> cabal.project ++ echo 'allow-newer: Cabal, gtk-mac-integration:gtk' >> cabal.project ++ fi + - cat cabal.project || true + - cat cabal.project.local || true + - if [ -f "./configure.ac" ]; then (cd "." && autoreconf -i); fi +@@ -167,5 +178,10 @@ script: + - | + - "for pkg in $($HCPKG list --simple-output); do echo $pkg | sed 's/-[^-]*$//' | (grep -vE -- '^(threadscope)$' || true) | sed 's/^/constraints: /' | sed 's/$/ installed/' >> cabal.project.local; done" ++ - | ++ if [ "$TRAVIS_OS_NAME" = "osx" ]; then ++ echo 'constraints: gtk +have-quartz-gtk' >> cabal.project ++ echo 'allow-newer: Cabal, gtk-mac-integration:gtk' >> cabal.project ++ fi + - cat cabal.project || true + - cat cabal.project.local || true + # Building... diff --git a/README.md b/README.md index 78c8d501..2a8b9d97 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,5 @@ # ThreadScope + [![Hackage](https://img.shields.io/hackage/v/threadscope.svg)](https://hackage.haskell.org/package/threadscope) [![Hackage-Deps](https://img.shields.io/hackage-deps/v/threadscope.svg)](http://packdeps.haskellers.com/feed?needle=threadscope) [![Build Status](https://travis-ci.org/haskell/ThreadScope.svg?branch=master)](https://travis-ci.org/haskell/ThreadScope) @@ -6,23 +7,28 @@ ## Using pre-built binaries +NOTE: Currently Windows builds are broken. See [#98](https://github.com/haskell/ThreadScope/issues/98) for the current status. + Currently [pre-built binaries](https://github.com/haskell/ThreadScope/releases) for the following platforms are provided: * Ubuntu Trusty (64-bit) -* OS X +* macOS (XCode 11) * Windows (x64) GTK+2 needs to be installed for those binaries to work. -On OS X, `gtk-mac-integration` also needs to be installed. -``` +On OS X, [`gtk-mac-integration`](https://github.com/jralls/gtk-mac-integration) also needs to be installed: + +```sh brew install gtk+ gtk-mac-integration ``` On Windows, the [MSYS2](http://www.msys2.org) is the recommended way to install GTK+2. In MSYS2 MINGW64 shell: -``` + +```sh pacman -S $MINGW_PACKAGE_PREFIX-gtk2 ``` + then you can run the threadscope binary from the shell. ## Building from source @@ -38,11 +44,13 @@ sudo apt install libgtk2.0-dev ``` Then you can build threadscope using cabal: + ```sh -cabal new-build +cabal v2-build ``` Or using stack: + ```sh stack setup stack install @@ -50,18 +58,20 @@ stack install ### OS X -GTK+ and gtk-mac-integration are required. +GTK+ and gtk-mac-integration are required: ```sh brew install gtk+ gtk-mac-integration ``` Then you can build threadscope using cabal: + ```sh -cabal new-build --constraint="gtk +have-quartz-gtk" +cabal v2-build --constraint="gtk +have-quartz-gtk" ``` Or using stack: + ```sh stack setup stack install --flag gtk:have-quartz-gtk @@ -81,7 +91,7 @@ pacman -Sy mingw-w64-x86_64-gtk2 then you can build threadscope using cabal: ```sh -cabal new-build +cabal v2-build ``` Or you can use stack instead. diff --git a/threadscope.cabal b/threadscope.cabal index f4dfa16f..dd0d6d9e 100644 --- a/threadscope.cabal +++ b/threadscope.cabal @@ -35,10 +35,10 @@ Cabal-version: >= 1.6 Data-files: threadscope.ui, threadscope.png Extra-source-files: include/windows_cconv.h README.md -Tested-with: GHC == 7.10.2 - GHC == 8.0.2 - GHC == 8.2.2 - GHC == 8.4.2 +Tested-with: GHC == 8.2.2 + GHC == 8.4.4 + GHC == 8.6.5 + GHC == 8.8.1 source-repository head type: git @@ -46,16 +46,16 @@ source-repository head Executable threadscope Main-is: Main.hs - Build-Depends: base >= 4.6 && < 5, + Build-Depends: base >= 4.10 && < 5, gtk >= 0.12 && < 0.16, cairo < 0.14, glib < 0.14, pango < 0.14, - binary < 0.10, + binary < 0.11, array < 0.6, mtl < 2.3, filepath < 1.5, - ghc-events >= 0.5 && < 0.10, + ghc-events >= 0.5 && < 0.12, containers >= 0.2 && < 0.7, deepseq >= 1.1, text < 1.3,