Merge branch 'later'
This commit is contained in:
commit
8d509f8a61
7 changed files with 46 additions and 42 deletions
2
.gitignore
vendored
2
.gitignore
vendored
|
@ -5,7 +5,7 @@ Setup
|
|||
tmp
|
||||
test
|
||||
Build/SysConfig
|
||||
Build/SysConfig.hs
|
||||
Build/Version
|
||||
Build/InstallDesktopFile
|
||||
Build/EvilSplicer
|
||||
Build/Standalone
|
||||
|
|
|
@ -1,6 +1,12 @@
|
|||
{- Outputs the version of git-annex that was built, for use by
|
||||
- autobuilders. Note that this includes the git rev. -}
|
||||
{- For use by autobuilders, this outputs the version of git-annex that
|
||||
- is being built, and also updates the Build/Version file so the build
|
||||
- will report the right version, including the current git rev. -}
|
||||
|
||||
{-# OPTIONS_GHC -fno-warn-tabs #-}
|
||||
|
||||
import Build.Version
|
||||
|
||||
main = putStr =<< getVersion
|
||||
main = do
|
||||
ver <- getVersion
|
||||
writeVersion ver
|
||||
putStr ver
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
{- Checks system configuration and generates SysConfig. -}
|
||||
{- Checks system configuration and generates Build/SysConfig and Build/Version. -}
|
||||
|
||||
{-# OPTIONS_GHC -fno-warn-tabs #-}
|
||||
|
||||
|
@ -12,15 +12,13 @@ import Utility.Env.Basic
|
|||
import qualified Git.Version
|
||||
import Utility.Directory
|
||||
|
||||
import Control.Monad.IfElse
|
||||
import Control.Monad
|
||||
import Control.Applicative
|
||||
import Prelude
|
||||
|
||||
tests :: [TestCase]
|
||||
tests =
|
||||
[ TestCase "version" (Config "packageversion" . StringConfig <$> getVersion)
|
||||
, TestCase "UPGRADE_LOCATION" getUpgradeLocation
|
||||
[ TestCase "UPGRADE_LOCATION" getUpgradeLocation
|
||||
, TestCase "git" $ testCmd "git" "git --version >/dev/null"
|
||||
, TestCase "git version" getGitVersion
|
||||
, testCp "cp_a" "-a"
|
||||
|
@ -120,9 +118,8 @@ run ts = do
|
|||
case v of
|
||||
Just "Android" -> writeSysConfig $ androidConfig config
|
||||
_ -> writeSysConfig config
|
||||
writeVersion =<< getVersion
|
||||
cleanup
|
||||
whenM isReleaseBuild $
|
||||
cabalSetup "git-annex.cabal"
|
||||
|
||||
{- Hard codes some settings to cross-compile for Android. -}
|
||||
androidConfig :: [Config] -> [Config]
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
{- Package version determination, for configure script. -}
|
||||
{- Package version determination. -}
|
||||
|
||||
{-# OPTIONS_GHC -fno-warn-tabs #-}
|
||||
|
||||
|
@ -13,7 +13,6 @@ import Prelude
|
|||
|
||||
import Utility.Monad
|
||||
import Utility.Exception
|
||||
import Utility.Directory
|
||||
|
||||
type Version = String
|
||||
|
||||
|
@ -22,26 +21,28 @@ type Version = String
|
|||
isReleaseBuild :: IO Bool
|
||||
isReleaseBuild = (== Just "1") <$> 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.
|
||||
{- Version comes from the CHANGELOG, plus the git rev of the last 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. -}
|
||||
- or this is a release build, just use the version from the CHANGELOG. -}
|
||||
getVersion :: IO Version
|
||||
getVersion = do
|
||||
changelogversion <- getChangelogVersion
|
||||
ifM (isReleaseBuild)
|
||||
( return changelogversion
|
||||
, catchDefaultIO changelogversion $ do
|
||||
let major = takeWhile (/= '.') changelogversion
|
||||
autoversion <- takeWhile (\c -> isAlphaNum c || c == '-') <$> readProcess "sh"
|
||||
gitversion <- takeWhile (\c -> isAlphaNum c) <$> readProcess "sh"
|
||||
[ "-c"
|
||||
, "git log -n 1 --format=format:'%ci %h'| sed -e 's/-//g' -e 's/ .* /-g/'"
|
||||
, "git log -n 1 --format=format:'%h'"
|
||||
] ""
|
||||
if null autoversion
|
||||
then return changelogversion
|
||||
else return $ concat [ major, ".", autoversion ]
|
||||
return $ if null gitversion
|
||||
then changelogversion
|
||||
else concat
|
||||
[ changelogversion
|
||||
, "-g"
|
||||
, gitversion
|
||||
]
|
||||
)
|
||||
|
||||
getChangelogVersion :: IO Version
|
||||
|
@ -52,20 +53,17 @@ getChangelogVersion = do
|
|||
where
|
||||
middle = drop 1 . init
|
||||
|
||||
{- Set up cabal file with version. -}
|
||||
cabalSetup :: FilePath -> IO ()
|
||||
cabalSetup cabalfile = do
|
||||
version <- takeWhile (\c -> isDigit c || c == '.')
|
||||
<$> getChangelogVersion
|
||||
cabal <- readFile cabalfile
|
||||
writeFile tmpcabalfile $ unlines $
|
||||
map (setfield "Version" version) $
|
||||
lines cabal
|
||||
renameFile tmpcabalfile cabalfile
|
||||
writeVersion :: Version -> IO ()
|
||||
writeVersion = writeFile "Build/Version" . body
|
||||
where
|
||||
tmpcabalfile = cabalfile++".tmp"
|
||||
setfield field value s
|
||||
| fullfield `isPrefixOf` s = fullfield ++ value
|
||||
| otherwise = s
|
||||
where
|
||||
fullfield = field ++ ": "
|
||||
body ver = unlines $ concat
|
||||
[ header
|
||||
, ["packageversion :: String"]
|
||||
, ["packageversion = \"" ++ ver ++ "\""]
|
||||
, footer
|
||||
]
|
||||
header = [
|
||||
"{- Automatically generated. -}"
|
||||
, ""
|
||||
]
|
||||
footer = []
|
||||
|
|
|
@ -12,3 +12,5 @@ module BuildInfo where
|
|||
-- This file is generated by the configure program with the results of its
|
||||
-- probing.
|
||||
#include "Build/SysConfig"
|
||||
-- This file is automatically generated from the CHANGELOG version
|
||||
#include "Build/Version"
|
||||
|
|
2
Makefile
2
Makefile
|
@ -108,7 +108,7 @@ docs: mans
|
|||
clean:
|
||||
if [ "$(BUILDER)" != ./Setup ] && [ "$(BUILDER)" != cabal ]; then $(BUILDER) clean; fi
|
||||
rm -rf tmp dist git-annex $(mans) configure *.tix .hpc \
|
||||
doc/.ikiwiki html dist tags Build/SysConfig \
|
||||
doc/.ikiwiki html dist tags Build/SysConfig Build/Version \
|
||||
Setup Build/InstallDesktopFile Build/EvilSplicer \
|
||||
Build/Standalone Build/OSXMkLibs Build/LinuxMkLibs \
|
||||
Build/DistributionUpdate Build/BuildVersion Build/MakeMans \
|
||||
|
|
|
@ -63,6 +63,11 @@ getextra rsync.exe 85cb7a4d16d274fcf8069b39042965ad26abd6aa
|
|||
#stack upgrade --git
|
||||
stack --version
|
||||
|
||||
# Update version info for git rev being built.
|
||||
mkdir -p dist
|
||||
stack ghc --stack-yaml stack-windows.yaml --no-haddock Build/BuildVersion.hs
|
||||
./Build/BuildVersion > dist/build-version
|
||||
|
||||
# Build git-annex
|
||||
stack setup --stack-yaml stack-windows.yaml
|
||||
stack install -j 1 --stack-yaml stack-windows.yaml --no-haddock \
|
||||
|
@ -73,10 +78,6 @@ withcygpreferred stack ghc --stack-yaml stack-windows.yaml --no-haddock \
|
|||
--package nsis Build/NullSoftInstaller.hs
|
||||
./Build/NullSoftInstaller
|
||||
|
||||
mkdir -p dist
|
||||
stack ghc --stack-yaml stack-windows.yaml --no-haddock Build/BuildVersion.hs
|
||||
./Build/BuildVersion > dist/build-version
|
||||
|
||||
# Test git-annex
|
||||
# The test is run in c:/WINDOWS/Temp, because running it in the autobuilder
|
||||
# directory runs afoul of Windows's short PATH_MAX.
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue