From 257949f2216fea493c81ab6e50130ecf5c1eb08e Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Fri, 18 Aug 2017 10:53:31 -0400 Subject: git-annex.cabal: Deal with breaking changes in Cabal 2.0 https://github.com/haskell/cabal/issues/4655 This means that when a module is conditionally imported via ifdef depending on the OS or build flags, the cabal file has to mirror the same logic there to only list the module then. Since there are lots of OS's and lots of combinations of build flags here, it's rather difficult to know if the cabal file has been completelty correctly updated to match the source code. So I am very unhappy with needing to update things in two places. I've only tested this on linux with most build flags enables; this will probably need significant time and testing to catch every cabal file tweak that this change to Cabal requires. And it will be a continual source of compile failures going forward when the code is modified and the cabal file not also updated. DRY DRY DRY, I repeat myself, but: DRY! Sigh.. (Also, had to remove all Build.* that are standalone programs from the Other-Modules list, because since cabal passes those modules to ghc when building git-annex, it complains that they use module Main. Those modules are only used when building with the Makefile anyway, so this change shouldn't break anything.) This commit was sponsored by Thomas Hochstein on Patreon. --- CHANGELOG | 1 + doc/bugs/Cannot_build_with_GHC_8.2.1.mdwn | 1 + ...ent_6_e948c8fcf34559808726aaa0d5f5f020._comment | 14 +++++++ git-annex.cabal | 47 +++++++++------------- 4 files changed, 35 insertions(+), 28 deletions(-) create mode 100644 doc/bugs/Cannot_build_with_GHC_8.2.1/comment_6_e948c8fcf34559808726aaa0d5f5f020._comment diff --git a/CHANGELOG b/CHANGELOG index f3b36bf00..68e6b5cf5 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -39,6 +39,7 @@ git-annex (6.20170521) UNRELEASED; urgency=medium * Fix the external special remotes git-annex-remote-ipfs, git-annex-remote-torrent and the example.sh template to correctly support filenames with spaces. + * git-annex.cabal: Deal with breaking changes in Cabal 2.0. -- Joey Hess Sat, 17 Jun 2017 13:02:24 -0400 diff --git a/doc/bugs/Cannot_build_with_GHC_8.2.1.mdwn b/doc/bugs/Cannot_build_with_GHC_8.2.1.mdwn index 941033fde..4fa9e18ab 100644 --- a/doc/bugs/Cannot_build_with_GHC_8.2.1.mdwn +++ b/doc/bugs/Cannot_build_with_GHC_8.2.1.mdwn @@ -48,3 +48,4 @@ Dependency tree exhaustively searched. ### Have you had any luck using git-annex before? (Sometimes we get tired of reading bug reports all day and a lil' positive end note does wonders) Yes :) +> [[fixed|done]] --[[Joey]] diff --git a/doc/bugs/Cannot_build_with_GHC_8.2.1/comment_6_e948c8fcf34559808726aaa0d5f5f020._comment b/doc/bugs/Cannot_build_with_GHC_8.2.1/comment_6_e948c8fcf34559808726aaa0d5f5f020._comment new file mode 100644 index 000000000..ee4b88feb --- /dev/null +++ b/doc/bugs/Cannot_build_with_GHC_8.2.1/comment_6_e948c8fcf34559808726aaa0d5f5f020._comment @@ -0,0 +1,14 @@ +[[!comment format=mdwn + username="joey" + subject="""comment 6""" + date="2017-08-18T15:02:42Z" + content=""" +I've updated the cabal file, it should build now. Although unfortunately +the breaking changes to cabal are such that it might still fail to build +with some OS's and some combinations of build flags, where it used to build +before. I only tested on Linux with stack (modified for resolver: +nightly-2017-08-17) + +As to the quickcheck failures, I think that's the same problem I already +fixed in [[!commit da8e84efe997fcbfcf489bc4fa9cc835ed131d3a]]. +"""]] diff --git a/git-annex.cabal b/git-annex.cabal index 4b7eadfb7..7f5047f7e 100644 --- a/git-annex.cabal +++ b/git-annex.cabal @@ -409,30 +409,31 @@ Executable git-annex CPP-Options: -DWITH_ASSISTANT if flag(Assistant) - if os(linux) + if os(linux) || flag(Android) Build-Depends: hinotify CPP-Options: -DWITH_INOTIFY + Other-Modules: Utility.DirWatcher.INotify else if os(darwin) Build-Depends: hfsevents CPP-Options: -DWITH_FSEVENTS + Other-Modules: Utility.DirWatcher.FSEvents else if os(windows) Build-Depends: Win32-notify CPP-Options: -DWITH_WIN32NOTIFY + Other-Modules: Utility.DirWatcher.Win32Notify else if (! os(solaris) && ! os(linux)) - if flag(Android) - Build-Depends: hinotify - CPP-Options: -DWITH_INOTIFY - else - CPP-Options: -DWITH_KQUEUE - C-Sources: Utility/libkqueue.c + CPP-Options: -DWITH_KQUEUE + C-Sources: Utility/libkqueue.c + Other-Modules: Utility.DirWatcher.Kqueue if flag(Dbus) if (os(linux)) Build-Depends: dbus (>= 0.10.7), fdo-notify (>= 0.3) CPP-Options: -DWITH_DBUS -DWITH_DESKTOP_NOTIFY -DWITH_DBUS_NOTIFICATIONS + Other-Modules: Utility.DBus if flag(Android) Build-Depends: data-endian @@ -481,6 +482,7 @@ Executable git-annex if flag(Benchmark) Build-Depends: criterion, deepseq CPP-Options: -DWITH_BENCHMARK + Other-Modules: Command.Benchmark Other-Modules: Annex @@ -651,20 +653,10 @@ Executable git-annex Backend.URL Backend.Utilities Backend.WORM - Build.BuildVersion Build.BundledPrograms Build.Configure Build.DesktopFile - Build.DistributionUpdate - Build.EvilLinker - Build.EvilSplicer - Build.InstallDesktopFile - Build.LinuxMkLibs - Build.MakeMans Build.Mans - Build.NullSoftInstaller - Build.OSXMkLibs - Build.Standalone Build.TestConfig Build.Version BuildInfo @@ -687,7 +679,6 @@ Executable git-annex Command.AddUrl Command.Adjust Command.Assistant - Command.Benchmark Command.CalcKey Command.CheckPresentKey Command.Commit @@ -984,16 +975,11 @@ Executable git-annex Utility.Bloom Utility.CoProcess Utility.CopyFile - Utility.DBus Utility.Daemon Utility.Data Utility.DataUnits Utility.DirWatcher - Utility.DirWatcher.FSEvents - Utility.DirWatcher.INotify - Utility.DirWatcher.Kqueue Utility.DirWatcher.Types - Utility.DirWatcher.Win32Notify Utility.Directory Utility.DiskFree Utility.Dot @@ -1016,14 +1002,10 @@ Executable git-annex Utility.LockFile Utility.LockFile.LockStatus Utility.LockFile.PidLock - Utility.LockFile.Posix - Utility.LockFile.Windows Utility.LockPool Utility.LockPool.LockHandle Utility.LockPool.PidLock - Utility.LockPool.Posix Utility.LockPool.STM - Utility.LockPool.Windows Utility.LogFile Utility.Lsof Utility.MagicWormhole @@ -1070,5 +1052,14 @@ Executable git-annex Utility.UserInfo Utility.Verifiable Utility.WebApp - Utility.WinProcess Utility.Yesod + + if (os(windows)) + Other-Modules: + Utility.LockFile.Windows + Utility.LockPool.Windows + Utility.WinProcess + else + Other-Modules: + Utility.LockFile.Posix + Utility.LockPool.Posix -- cgit v1.2.3