Skip to content

Stop using gtk-mac-integration and fix broken CI #103

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 4 commits into from
Mar 3, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
119 changes: 44 additions & 75 deletions .travis.yml
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
# This Travis job script has been generated by a script via
#
# 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'
# haskell-ci 'threadscope.cabal' '--apt' 'libgtk2.0-dev' '--osx' '8.6.5' '--osx' '8.8.2' '--travis-patches' '.travis/deploy.patch' '--travis-patches' '.travis/osx.patch'
#
# For more information, see https://github.com/haskell-CI/haskell-ci
#
# version: 0.9.20191126
# version: 0.9.20200225
#
version: ~> 1.0
language: c
Expand All @@ -30,8 +30,8 @@ before_cache:
- rm -rfv $CABALHOME/packages/head.hackage
jobs:
include:
- 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"]}}
- compiler: ghc-8.8.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.8.2","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"]}}
Expand All @@ -42,19 +42,16 @@ jobs:
- 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"]}}
- compiler: ghc-8.8.2
addons: {"homebrew": {"packages":["gcc@9", "gtk+", "gtk-mac-integration", "python3"], "update": true}}
env: PKG_CONFIG_PATH=/usr/local/opt/libffi/lib/pkgconfig
os: osx
osx_image: xcode11
osx_image: xcode11.3
- compiler: ghc-8.6.5
addons: {"homebrew": {"packages":["gtk+", "gtk-mac-integration"]}}
addons: {"homebrew": {"packages":["gcc@9", "gtk+", "gtk-mac-integration", "python3"], "update": true}}
env: PKG_CONFIG_PATH=/usr/local/opt/libffi/lib/pkgconfig
os: osx
osx_image: xcode11
allow_failures:
- compiler: ghc-8.8.1
os: linux
osx_image: xcode11.3
before_install:
- HC=$(echo "/opt/$CC/bin/ghc" | sed 's/-/\//')
- WITHCOMPILER="-w $HC"
Expand All @@ -70,57 +67,31 @@ before_install:
- 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"
- CABAL="$CABAL -vnormal+nowrap"
- 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
- echo "$(${HC} --version) [$(${HC} --print-project-git-commit-id 2> /dev/null || echo '?')]"
- 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 "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
install:
- ${CABAL} --version
- echo "$(${HC} --version) [$(${HC} --print-project-git-commit-id 2> /dev/null || echo '?')]"
- |
echo "program-default-options" >> $CABALHOME/config
echo " ghc-options: $GHCJOBS +RTS -M6G -RTS" >> $CABALHOME/config
Expand All @@ -132,25 +103,21 @@ install:
- touch cabal.project
- |
echo "packages: ." >> cabal.project
- if [ "$TRAVIS_OS_NAME" = "osx" ]; then cp cabal.project.osx cabal.project; fi
- |
- "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
- ${CABAL} v2-freeze $WITHCOMPILER ${TEST} ${BENCH} | color_cabal_output
- ${CABAL} v2-freeze $WITHCOMPILER ${TEST} ${BENCH}
- "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
- ${CABAL} v2-build $WITHCOMPILER ${TEST} ${BENCH} --dep -j2 all
- ${CABAL} v2-build $WITHCOMPILER --disable-tests --disable-benchmarks --dep -j2 all
script:
- DISTDIR=$(mktemp -d /tmp/dist-test.XXXX)
# Packaging...
- ${CABAL} v2-sdist all | color_cabal_output
- ${CABAL} v2-sdist all
# Unpacking...
- mv dist-newstyle/sdist/*.tar.gz ${DISTDIR}/
- cd ${DISTDIR} || false
Expand All @@ -163,27 +130,29 @@ script:
- |
echo "packages: ${PKGDIR_threadscope}" >> cabal.project
- |
if [ "$TRAVIS_OS_NAME" = "osx" ]; then
echo "constraints: gtk +have-quartz-gtk" >> cabal.project
echo "package *" >> cabal.project
echo " gcc-location: gcc-9" >> cabal.project
echo "program-locations" >> cabal.project
echo " gcc-location: gcc-9" >> cabal.project
fi
- "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} v2-build $WITHCOMPILER --disable-tests --disable-benchmarks all | color_cabal_output
- ${CABAL} v2-build $WITHCOMPILER --disable-tests --disable-benchmarks all
# Building with tests and benchmarks...
# build & run tests, build benchmarks
- ${CABAL} v2-build $WITHCOMPILER ${TEST} ${BENCH} all | color_cabal_output
- ${CABAL} v2-build $WITHCOMPILER ${TEST} ${BENCH} all
# 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} v2-build $WITHCOMPILER --disable-tests --disable-benchmarks all

# 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"])
# REGENDATA ("0.9.20200225",["threadscope.cabal","--apt","libgtk2.0-dev","--osx","8.6.5","--osx","8.8.2","--travis-patches",".travis/deploy.patch","--travis-patches",".travis/osx.patch"])
# EOF

before_deploy:
Expand Down
37 changes: 16 additions & 21 deletions .travis/osx.patch
Original file line number Diff line number Diff line change
Expand Up @@ -5,18 +5,18 @@ index 8d435cb..a8af409 100644
@@ -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"]}}
- compiler: ghc-8.8.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.8.2","cabal-install-3.0","libgtk2.0-dev"]}}
+ addons: {"homebrew": {"packages":["gcc@9", "gtk+", "gtk-mac-integration", "python3"], "update": true}}
+ env: PKG_CONFIG_PATH=/usr/local/opt/libffi/lib/pkgconfig
os: osx
+ osx_image: xcode11
+ osx_image: xcode11.3
- 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"]}}
+ addons: {"homebrew": {"packages":["gcc@9", "gtk+", "gtk-mac-integration", "python3"], "update": true}}
+ env: PKG_CONFIG_PATH=/usr/local/opt/libffi/lib/pkgconfig
os: osx
+ osx_image: xcode11
+ osx_image: xcode11.3
before_install:
- HC=$(echo "/opt/$CC/bin/ghc" | sed 's/-/\//')
- WITHCOMPILER="-w $HC"
Expand All @@ -29,25 +29,20 @@ index 8d435cb..a8af409 100644
- 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:
@@ -103,6 +103,7 @@ install:
- touch cabal.project
- |
echo "packages: ." >> cabal.project
+ - if [ "$TRAVIS_OS_NAME" = "osx" ]; then cp cabal.project.osx cabal.project; fi
- |
- "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:
@@ -124,7 +124,7 @@ script:
- touch cabal.project
- |
echo "packages: ${PKGDIR_threadscope}" >> cabal.project
- - |
+ - if [ "$TRAVIS_OS_NAME" = "osx" ]; then cp ${PKGDIR_threadscope}/cabal.project.osx cabal.project; fi
- "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...
27 changes: 0 additions & 27 deletions GUI/App.hs
Original file line number Diff line number Diff line change
@@ -1,6 +1,3 @@
{-# LANGUAGE CPP #-}
{-# LANGUAGE TemplateHaskell #-}

-------------------------------------------------------------------------------
-- | Module : GUI.App
--
Expand All @@ -9,33 +6,9 @@

module GUI.App (initApp) where

-- Mac OS X-specific GTK imports
#if defined(darwin_HOST_OS)
import qualified Graphics.UI.Gtk as Gtk
import qualified Graphics.UI.Gtk.OSX as OSX
import GUI.DataFiles (loadLogo)
#endif

-------------------------------------------------------------------------------

#if defined(darwin_HOST_OS)

-- | Initialize application
-- Perform Mac OS X-specific application initialization
initApp :: IO ()
initApp = do
app <- OSX.applicationNew
menuBar <- Gtk.menuBarNew
OSX.applicationSetMenuBar app menuBar
logo <- $loadLogo
OSX.applicationSetDockIconPixbuf app logo
OSX.applicationReady app

#else

-- | Initialize application
-- Perform application initialization for non-Mac OS X platforms
initApp :: IO ()
initApp = return ()

#endif
12 changes: 5 additions & 7 deletions appveyor.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,12 +8,11 @@ environment:
global:
APPVEYOR_SAVE_CACHE_ON_ERROR: true
CABOPTS: "--store-dir=c:/SR --http-transport=plain-http"
# C_INCLUDE_PATH: "c:/msys64/mingw64/include"
# LIBRARY_PATH: "c:/msys64/mingw64/lib;c:/msys64/mingw64/bin"
matrix:
- GHCVER: "8.0.2"
- GHCVER: "8.8.2"
- GHCVER: "8.6.5"
- GHCVER: "8.4.4"
- GHCVER: "8.2.2"
- GHCVER: "8.4.3"

cache:
- "c:/SR"
Expand All @@ -35,12 +34,11 @@ build_script:

test_script:
- "cabal %CABOPTS% new-build -j1 -vnormal+nowrap all"
#- "cabal %CABOPTS% new-test -j1 -vnormal+nowrap all"

after_test:
- bash -c "cp -v $(find -name threadscope.exe) ./threadscope.exe"
- 7z a threadscope.windows.%PLATFORM%.ghc-%GHCVER%.zip threadscope.exe
- ps: "Push-AppveyorArtifact threadscope.windows.$($env:PLATFORM).zip"
- ps: "Push-AppveyorArtifact threadscope.windows.$($env:PLATFORM).ghc-$($env:GHCVER).zip"

deploy:
- provider: GitHub
Expand All @@ -50,4 +48,4 @@ deploy:
release: $(appveyor_repo_tag_name)
on:
appveyor_repo_tag: true
GHCVER: "8.4.3"
GHCVER: "8.8.2"
8 changes: 8 additions & 0 deletions cabal.project.osx
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
packages: .
constraints: gtk +have-quartz-gtk

package *
gcc-location: gcc-9

program-locations
gcc-location: gcc-9
4 changes: 1 addition & 3 deletions threadscope.cabal
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@ Extra-source-files: include/windows_cconv.h
Tested-with: GHC == 8.2.2
GHC == 8.4.4
GHC == 8.6.5
GHC == 8.8.1
GHC == 8.8.2

source-repository head
type: git
Expand All @@ -64,8 +64,6 @@ Executable threadscope
file-embed < 0.1,
template-haskell < 2.16,
temporary >= 1.1 && < 1.4
if os(osx)
build-depends: gtk-mac-integration < 0.4

include-dirs: include
Extensions: RecordWildCards, NamedFieldPuns, BangPatterns, PatternGuards
Expand Down