packages feed

jarify-1.0: Setup.hs

import Data.Monoid
import Distribution.Simple
import Distribution.Simple.LocalBuildInfo
import Distribution.Simple.BuildPaths (mkSharedLibName)
import Distribution.Simple.Setup (buildVerbosity, configVerbosity, fromFlag)
import Distribution.Simple.Utils (rawSystemExit)
import System.Directory (getCurrentDirectory, withCurrentDirectory)
import System.Exit
import System.FilePath ((</>))

main = defaultMainWithHooks simpleUserHooks
    { postConf = \_ flags _ _ -> do
        let verbosity = fromFlag (configVerbosity flags)
        configurePatchElf verbosity
    , postBuild = \_ flags _ lbi -> do
        let verbosity = fromFlag (buildVerbosity flags)
        buildJavaSource verbosity
        buildPatchElf verbosity
    }

configurePatchElf verbosity = do
    withCurrentDirectory "vendor/patchelf" $
      rawSystemExit verbosity "./bootstrap.sh" []
    cwd <- getCurrentDirectory
    rawSystemExit verbosity "mkdir" ["-p", "build/src/patchelf"]
    withCurrentDirectory "build/src/patchelf" $
      rawSystemExit
        verbosity
        (cwd </> "vendor/patchelf/configure")
        ["--prefix=" <> cwd </> "build"]

buildJavaSource verbosity = do
    rawSystemExit
      verbosity
      "gradle"
      ["build"]

buildPatchElf verbosity = do
    withCurrentDirectory "build/src/patchelf" $
      rawSystemExit verbosity "make" ["install"]