The stack CI already tests against 9.2.7 instead of 9.2.5 (as the cabal
file said), since we just specify the major version of the LTS resolver,
and lts-20 is up to 9.2.7 by now. Not much has changed since 9.2.5, but
update the haskell-ci workflow regardless. Likewise, 9.4 can be bumped
one minor version, so do that as well.
Related: xmonad/xmonad-contrib@1d84db959c
+ Regenerate haskell-ci and adjust relevant patches.
- Remove haskell-ci-dependabot.patch, as it is no longer necessary.
Related: xmonad/xmonad-contrib@635711e994
hlint 3.5 is built against libtinfo6 and works on Ubuntu 22.04 without
needing to install libtinfo5.
Fixes: e6329968ffe8 ("ci: Pin runner in hlint, nix workflows to ubuntu-20.04")
Invoking cabal in the project directory with a cabal.project file might
fail on unrelated dependencies missing, see
4f539734be
Doesn't fail in this repo, but let's keep the workflows in sync.
Both are now broken with ubuntu-22.04. Nix:
error: could not set permissions on '/nix/var/nix/profiles/per-user' to 755: Operation not permitted
hlint:
/opt/hostedtoolcache/hlint/3.4.1/x64/hlint: error while loading shared libraries: libtinfo.so.5: cannot open shared object file: No such file or directory
Breaks `apt update` on the ubuntu-22.04 runner, which is what
ubuntu-latest resolves to these days.
Fixes: 3977a7a4e2d4 ("ci: Drop GHC installation via apt")
Debian stable is not on 8.6, which was always our guide as to which GHC
versions we want to support.
In particular, this lets us get rid of all the quickcheck-classes
special treatment.
Related: 400730fe3b
haskell-ci by default passes --haddock-all to cabal v2-haddock, which
builds docs for all components and the …-docs.tar.gz tarball ends up
containing the docs for the last component, which happens to be tests.
We need the tarball to contain the library docs, for upload to Hackage.
Fixes: 25a4ed69da9c ("ci: Bump haskell-ci")
The apt repo hosting these packages has been unmaintained for quite a
while, and we've excluded ~/.stack/programs from the cache long time
ago, so we can just let stack handle the installation. It's not much
slower than installing via apt, and even if it was, some matrix jobs
need to use the slow path anyway.
Related: 9fce3805fcf2 ("ci: Use system GHC in Stack to not waste GH Actions cache space")
Related: 7d10e470d71d ("ci: Avoid caching GHC")
The "haskell/actions/hlint-run" GitHub Action produces annotations which
GitHub shows in the code diff, in addition to just failing the workflow
when there are any suggestions. Also, now it runs in parallel to the
other workflows.
Related: https://github.com/xmonad/xmonad-contrib/issues/669
Related: dd26fcc3f1
The version of unix removes the 3rd Maybe FileMode argument of openFd,
so we need to handle this breaking change using a MIN_VERSION macro. The
argument is integrated with the OpenFileFlags argument and the
integrated value in defaultFileFlags is Nothing, so there's no
difference between the two function calls.
Users often mistakenly use className to query the application (resource)
name of a window; probably since WM_CLASS even has "class" in its name,
so confusion ensues. Improve the documentation to explicitly state
which of the two strings in WM_CLASS the respective functions match.
As advised in [1], provide a way to set the path for the xmessage and
ghc binaries via XMONAD_XMESSAGE and XMONAD_GHC environment variables.
[1]: 36d5761b3e
This reverts commit e5a258f19c0ae715c36c3d5646486578f4cdf94d.
https://github.com/xmonad/xmonad-contrib/pull/731 fixes the
WindowNavigation issue with alpha channels, so we can re-enable alpha
support.
This reverts commit 29475fa7f8f04dcb68913b78bffcdfa2e99ee33a.
xmonad/xmonad-contrib#731 fixes the WindowNavigation issue with alpha
channels, so we can re-enable alpha support. A subsequent commit will
bump versions/dependencies to keep things in sync, although strictly
speaking that's not necessary here.
As discussed in #401, while hlint complains on a definition like
(<||>) x y = ifM x (pure True) y
because it could be eta reduced, actually doing that and writing
(<||>) x = ifM x (pure True)
feels a bit awkward. The solution is to always actually define these
kinds of infix operators in an infix way; i.e., we write
x <||> y = ifM x (pure True) y
instead. For the sake of consistency, it now seems prudent to define
all infix operators in this way (with exceptions for literal aliases,
like `(<+>) = mappend`).
Related: https://github.com/xmonad/xmonad/pull/401