summaryrefslogtreecommitdiff
path: root/Build/Configure.hs
diff options
context:
space:
mode:
authorGravatar Joey Hess <joey@kitenet.net>2013-10-06 17:48:38 -0400
committerGravatar Joey Hess <joey@kitenet.net>2013-10-06 17:48:38 -0400
commite64c2e0929ee56ad44d40689d78f1f6b650d3cf9 (patch)
tree32f199e70e3779ffabbd394cc847d6ef42cdd766 /Build/Configure.hs
parent55011adebbf792a99f7d5bd6014726324eb32386 (diff)
factor out Build.Version
Diffstat (limited to 'Build/Configure.hs')
-rw-r--r--Build/Configure.hs59
1 files changed, 3 insertions, 56 deletions
diff --git a/Build/Configure.hs b/Build/Configure.hs
index 9caff6c08..aae874d48 100644
--- a/Build/Configure.hs
+++ b/Build/Configure.hs
@@ -13,9 +13,9 @@ import Control.Monad.IfElse
import Data.Char
import Build.TestConfig
+import Build.Version
import Utility.SafeCommand
import Utility.Monad
-import Utility.Exception
import Utility.ExternalSHA
import qualified Git.Version
@@ -89,40 +89,6 @@ testCp k option = TestCase cmd $ testCmd k cmdline
cmd = "cp " ++ option
cmdline = cmd ++ " " ++ testFile ++ " " ++ testFile ++ ".new"
-isReleaseBuild :: IO Bool
-isReleaseBuild = isJust <$> catchMaybeIO (getEnv "RELEASE_BUILD")
-
-{- Version is usually based on the major version from the changelog,
- - plus the date of the last commit, plus the git rev of that commit.
- - This works for autobuilds, ad-hoc builds, etc.
- -
- - If git or a git repo is not available, or something goes wrong,
- - or this is a release build, just use the version from the changelog. -}
-getVersion :: Test
-getVersion = do
- changelogversion <- getChangelogVersion
- version <- ifM (isReleaseBuild)
- ( return changelogversion
- , catchDefaultIO changelogversion $ do
- let major = takeWhile (/= '.') changelogversion
- autoversion <- readProcess "sh"
- [ "-c"
- , "git log -n 1 --format=format:'%ci %h'| sed -e 's/-//g' -e 's/ .* /-g/'"
- ] ""
- if null autoversion
- then return changelogversion
- else return $ concat [ major, ".", autoversion ]
- )
- return $ Config "packageversion" (StringConfig version)
-
-getChangelogVersion :: IO String
-getChangelogVersion = do
- changelog <- readFile "debian/changelog"
- let verline = takeWhile (/= '\n') changelog
- return $ middle (words verline !! 1)
- where
- middle = drop 1 . init
-
getGitVersion :: Test
getGitVersion = Config "gitversion" . StringConfig . show
<$> Git.Version.installed
@@ -131,25 +97,6 @@ getSshConnectionCaching :: Test
getSshConnectionCaching = Config "sshconnectioncaching" . BoolConfig <$>
boolSystem "sh" [Param "-c", Param "ssh -o ControlPersist=yes -V >/dev/null 2>/dev/null"]
-{- Set up cabal file with version. -}
-cabalSetup :: IO ()
-cabalSetup = do
- version <- takeWhile (\c -> isDigit c || c == '.')
- <$> getChangelogVersion
- cabal <- readFile cabalfile
- writeFile tmpcabalfile $ unlines $
- map (setfield "Version" version) $
- lines cabal
- renameFile tmpcabalfile cabalfile
- where
- cabalfile = "git-annex.cabal"
- tmpcabalfile = cabalfile++".tmp"
- setfield field value s
- | fullfield `isPrefixOf` s = fullfield ++ value
- | otherwise = s
- where
- fullfield = field ++ ": "
-
setup :: IO ()
setup = do
createDirectoryIfMissing True tmpDir
@@ -167,8 +114,8 @@ run ts = do
then writeSysConfig $ androidConfig config
else writeSysConfig config
cleanup
- whenM (isReleaseBuild) $
- cabalSetup
+ whenM isReleaseBuild $
+ cabalSetup "git-annex.cabal"
{- Hard codes some settings to cross-compile for Android. -}
androidConfig :: [Config] -> [Config]