From 393275c10521145bcc6b18cfd39db6854ae0831e Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Tue, 1 Aug 2023 15:08:56 -0400 Subject: [PATCH] Setup.hs: Stop installing man pages, desktop files, and the git-annex-shell and git-remote-tor-annex symlinks Anything still relying on that, eg via cabal v1-install will need to change to using make install-home. Which was added back in 2019 in 6491b626140a9e5cc8e99fff4a1434d7c0e9bc39 because cabal new-build (now the default) already didn't use Setup in a way that let its installation of those things work. Notably this means Setup does not need to depend on unix-compat, which is useful because in 0.7 it removed System.PosixCompat.User, which Setup needed to determine where to install the desktop files. See https://github.com/haskell-pkg-janitors/unix-compat/issues/3 --- CHANGELOG | 4 ++++ Setup.hs | 59 ------------------------------------------------- git-annex.cabal | 6 ++--- 3 files changed, 7 insertions(+), 62 deletions(-) diff --git a/CHANGELOG b/CHANGELOG index 3845b4dd8e..4500c65011 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -30,6 +30,10 @@ git-annex (10.20230627) UNRELEASED; urgency=medium * dropunused: Support --jobs * Support "onlyingroup=" in preferred content expressions. * Support --onlyingroup= matching option. + * Setup.hs: Stop installing man pages, desktop files, and the + git-annex-shell and git-remote-tor-annex symlinks. + Anything still relying on that, eg via cabal v1-install will need to + change to using make install-home. -- Joey Hess Mon, 26 Jun 2023 13:10:40 -0400 diff --git a/Setup.hs b/Setup.hs index 57efd86e0c..a92d784b44 100644 --- a/Setup.hs +++ b/Setup.hs @@ -1,72 +1,13 @@ -{-# LANGUAGE NamedFieldPuns #-} {-# OPTIONS_GHC -fno-warn-tabs #-} {- cabal setup file -} import Distribution.Simple -import Distribution.Simple.LocalBuildInfo -import Distribution.Simple.Setup -import Distribution.Simple.Utils (installOrdinaryFiles, rawSystemExit) -import Distribution.PackageDescription (PackageDescription(..)) -import Distribution.Verbosity (Verbosity) -import System.FilePath -import Control.Applicative -import Control.Monad -import System.Directory -import Data.List -import Data.Maybe -import Control.Exception -import qualified System.Info - -import qualified Build.DesktopFile as DesktopFile import qualified Build.Configure as Configure -import Build.Mans (buildMans) -import Utility.SafeCommand main :: IO () main = defaultMainWithHooks simpleUserHooks { preConf = \_ _ -> do Configure.run Configure.tests return (Nothing, []) - , postCopy = myPostCopy } - -myPostCopy :: Args -> CopyFlags -> PackageDescription -> LocalBuildInfo -> IO () -myPostCopy _ flags pkg lbi = when (System.Info.os /= "mingw32") $ do - installGitAnnexLinks dest verbosity pkg lbi - installManpages dest verbosity pkg lbi - installDesktopFile dest verbosity pkg lbi - where - dest = fromFlag $ copyDest flags - verbosity = fromFlag $ copyVerbosity flags - -installGitAnnexLinks :: CopyDest -> Verbosity -> PackageDescription -> LocalBuildInfo -> IO () -installGitAnnexLinks copyDest verbosity pkg lbi = do - rawSystemExit verbosity "ln" - ["-sf", "git-annex", dstBinDir "git-annex-shell"] - rawSystemExit verbosity "ln" - ["-sf", "git-annex", dstBinDir "git-remote-tor-annex"] - where - dstBinDir = bindir $ absoluteInstallDirs pkg lbi copyDest - -{- See http://www.haskell.org/haskellwiki/Cabal/Developer-FAQ#Installing_manpages -} -installManpages :: CopyDest -> Verbosity -> PackageDescription -> LocalBuildInfo -> IO () -installManpages copyDest verbosity pkg lbi = - installOrdinaryFiles verbosity dstManDir =<< srcManpages - where - dstManDir = mandir (absoluteInstallDirs pkg lbi copyDest) "man1" - -- If mdwn2man fails, perhaps because perl is not available, - -- we just skip installing man pages. - srcManpages = zip (repeat "man") . map takeFileName . catMaybes - <$> buildMans - -installDesktopFile :: CopyDest -> Verbosity -> PackageDescription -> LocalBuildInfo -> IO () -installDesktopFile copyDest _verbosity pkg lbi - | progfile copyDest == progfile NoCopyDest = - DesktopFile.installUser (progfile copyDest) - `catch` installerror - | otherwise = return () - where - progfile cd = bindir (absoluteInstallDirs pkg lbi cd) "git-annex" - installerror :: SomeException -> IO () - installerror e = putStrLn ("Warning: Installation of desktop integration files did not succeed (" ++ show e ++ "); skipping.") diff --git a/git-annex.cabal b/git-annex.cabal index 72a4c0f4f5..b065949653 100644 --- a/git-annex.cabal +++ b/git-annex.cabal @@ -299,13 +299,13 @@ source-repository head location: git://git-annex.branchable.com/ custom-setup - Setup-Depends: base (>= 4.11.1.0 && < 5.0), split, unix-compat (< 0.7), - filepath, exceptions, bytestring, IfElse, data-default, + Setup-Depends: base (>= 4.11.1.0 && < 5.0), split, + filepath, exceptions, bytestring, filepath-bytestring (>= 1.4.2.1.4), process (>= 1.6.3), time (>= 1.5.0), directory (>= 1.2.7.0), - async, utf8-string, transformers, Cabal (< 4.0) + async, Cabal (< 4.0) Executable git-annex Main-Is: git-annex.hs