Merge branch 'later'

This commit is contained in:
Joey Hess 2018-06-26 12:11:21 -04:00
commit 8d509f8a61
No known key found for this signature in database
GPG key ID: DB12DB0FF05F8F38
7 changed files with 46 additions and 42 deletions

2
.gitignore vendored
View file

@ -5,7 +5,7 @@ Setup
tmp
test
Build/SysConfig
Build/SysConfig.hs
Build/Version
Build/InstallDesktopFile
Build/EvilSplicer
Build/Standalone

View file

@ -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

View file

@ -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]

View file

@ -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 = []

View file

@ -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"

View file

@ -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 \

View file

@ -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.