Skip to content

Commit

Permalink
Fix Setup.hs'es to install into the requested locations.
Browse files Browse the repository at this point in the history
Without this, Gentoo ebuilds try to install directly to /usr/bin (and this trips
the sandbox).
  • Loading branch information
khumba committed Aug 4, 2016
1 parent 100bd67 commit 0eb37d9
Show file tree
Hide file tree
Showing 3 changed files with 36 additions and 18 deletions.
18 changes: 12 additions & 6 deletions qtah-cpp/Setup.hs
Original file line number Diff line number Diff line change
Expand Up @@ -44,13 +44,16 @@ import Distribution.Simple.Setup (
BuildFlags,
CleanFlags,
ConfigFlags,
CopyDest (NoCopyDest),
CopyDest (CopyTo, NoCopyDest),
buildVerbosity,
cleanVerbosity,
configConfigurationsFlags,
configVerbosity,
copyDest,
copyVerbosity,
flagToMaybe,
fromFlagOrDefault,
installDistPref,
installVerbosity,
)
import Distribution.Simple.UserHooks (
Expand Down Expand Up @@ -99,10 +102,13 @@ qtahHooks = simpleUserHooks
, buildHook = \pd lbi uh bf -> do doBuild lbi bf
buildHook simpleUserHooks pd lbi uh bf
, copyHook = \pd lbi uh cf -> do let verbosity = fromFlagOrDefault normal $ copyVerbosity cf
doInstall verbosity pd lbi
dest = fromFlagOrDefault NoCopyDest $ copyDest cf
doInstall verbosity pd lbi dest
copyHook simpleUserHooks pd lbi uh cf
, instHook = \pd lbi uh if' -> do let verbosity = fromFlagOrDefault normal $ installVerbosity if'
doInstall verbosity pd lbi
dest = maybe NoCopyDest CopyTo $
flagToMaybe $ installDistPref if'
doInstall verbosity pd lbi dest
instHook simpleUserHooks pd lbi uh if'
, cleanHook = \pd z uh cf -> do doClean cf
cleanHook simpleUserHooks pd z uh cf
Expand Down Expand Up @@ -171,11 +177,11 @@ doBuild localBuildInfo buildFlags = do

setCurrentDirectory startDir

doInstall :: Verbosity -> PackageDescription -> LocalBuildInfo -> IO ()
doInstall verbosity packageDesc localBuildInfo = do
doInstall :: Verbosity -> PackageDescription -> LocalBuildInfo -> CopyDest -> IO ()
doInstall verbosity packageDesc localBuildInfo copyDest = do
startDir <- getCurrentDirectory
let cppSourceDir = startDir </> "cpp"
libDir = libdir $ absoluteInstallDirs packageDesc localBuildInfo NoCopyDest
libDir = libdir $ absoluteInstallDirs packageDesc localBuildInfo copyDest

-- Install the built library into the package's libdir.
createDirectoryIfMissing True libDir
Expand Down
18 changes: 12 additions & 6 deletions qtah-generator/Setup.hs
Original file line number Diff line number Diff line change
Expand Up @@ -36,9 +36,12 @@ import Distribution.Simple.Program (
import Distribution.Simple.Program.Find (findProgramOnSearchPath)
import Distribution.Simple.Setup (
CleanFlags,
CopyDest (NoCopyDest),
CopyDest (CopyTo, NoCopyDest),
cleanVerbosity,
copyDest,
flagToMaybe,
fromFlagOrDefault,
installDistPref,
)
import Distribution.Simple.UserHooks (
UserHooks (
Expand Down Expand Up @@ -66,9 +69,12 @@ qtahHooks :: UserHooks
qtahHooks = simpleUserHooks
{ hookedPrograms = [listenerGenProgram, qmakeProgram]
, postConf = \_ _ _ lbi -> generateSources lbi
, copyHook = \pd lbi uh cf -> do doInstall pd lbi
, copyHook = \pd lbi uh cf -> do let dest = fromFlagOrDefault NoCopyDest $ copyDest cf
doInstall pd lbi dest
copyHook simpleUserHooks pd lbi uh cf
, instHook = \pd lbi uh if' -> do doInstall pd lbi
, instHook = \pd lbi uh if' -> do let dest = maybe NoCopyDest CopyTo $
flagToMaybe $ installDistPref if'
doInstall pd lbi dest
instHook simpleUserHooks pd lbi uh if'
, cleanHook = \pd z uh cf -> do doClean cf
cleanHook simpleUserHooks pd z uh cf
Expand All @@ -90,10 +96,10 @@ generateSources localBuildInfo = do
let programDb = withPrograms localBuildInfo
runDbProgram normal listenerGenProgram programDb ["--gen-hs-dir", "."]

doInstall :: PackageDescription -> LocalBuildInfo -> IO ()
doInstall packageDesc localBuildInfo = do
doInstall :: PackageDescription -> LocalBuildInfo -> CopyDest -> IO ()
doInstall packageDesc localBuildInfo copyDest = do
startDir <- getCurrentDirectory
let binDir = bindir $ absoluteInstallDirs packageDesc localBuildInfo NoCopyDest
let binDir = bindir $ absoluteInstallDirs packageDesc localBuildInfo copyDest
createDirectoryIfMissing True binDir
installExecutableFile verbose
(startDir </> "qtah-listener-gen")
Expand Down
18 changes: 12 additions & 6 deletions qtah/Setup.hs
Original file line number Diff line number Diff line change
Expand Up @@ -53,12 +53,15 @@ import Distribution.Simple.Program (
import Distribution.Simple.Setup (
CleanFlags,
ConfigFlags,
CopyDest (NoCopyDest),
CopyDest (CopyTo, NoCopyDest),
cleanVerbosity,
configConfigurationsFlags,
configVerbosity,
copyDest,
copyVerbosity,
flagToMaybe,
fromFlagOrDefault,
installDistPref,
installVerbosity,
)
import Distribution.Simple.UserHooks (
Expand Down Expand Up @@ -110,11 +113,14 @@ qtahHooks = simpleUserHooks
, preTest = \_ _ -> addLibDir
, preCopy = \_ _ -> addLibDir -- Not sure if necessary, but doesn't hurt.
, copyHook = \pd lbi uh cf -> do let verbosity = fromFlagOrDefault normal $ copyVerbosity cf
doInstall verbosity pd lbi
dest = fromFlagOrDefault NoCopyDest $ copyDest cf
doInstall verbosity pd lbi dest
copyHook simpleUserHooks pd lbi uh cf
, preInst = \_ _ -> addLibDir -- Not sure if necessary, but doesn't hurt.
, instHook = \pd lbi uh if' -> do let verbosity = fromFlagOrDefault normal $ installVerbosity if'
doInstall verbosity pd lbi
dest = maybe NoCopyDest CopyTo $
flagToMaybe $ installDistPref if'
doInstall verbosity pd lbi dest
instHook simpleUserHooks pd lbi uh if'
, preReg = \_ _ -> addLibDir -- Necessary.
, cleanHook = \pd z uh cf -> do doClean cf
Expand Down Expand Up @@ -182,10 +188,10 @@ generateSources configFlags localBuildInfo qtahCppLibDir = do
-- Generate binding source code.
runDbProgram verbosity generatorProgram programDb ["--gen-hs", "src"]

doInstall :: Verbosity -> PackageDescription -> LocalBuildInfo -> IO ()
doInstall verbosity packageDesc localBuildInfo = do
doInstall :: Verbosity -> PackageDescription -> LocalBuildInfo -> CopyDest -> IO ()
doInstall verbosity packageDesc localBuildInfo copyDest = do
-- Record what version of Qt we are using.
let libDir = libdir $ absoluteInstallDirs packageDesc localBuildInfo NoCopyDest
let libDir = libdir $ absoluteInstallDirs packageDesc localBuildInfo copyDest
createDirectoryIfMissing True libDir
installOrdinaryFile verbosity
(buildDir localBuildInfo </> "qtah-qt-version")
Expand Down

0 comments on commit 0eb37d9

Please sign in to comment.