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 tmp
test test
Build/SysConfig Build/SysConfig
Build/SysConfig.hs Build/Version
Build/InstallDesktopFile Build/InstallDesktopFile
Build/EvilSplicer Build/EvilSplicer
Build/Standalone Build/Standalone

View file

@ -1,6 +1,12 @@
{- Outputs the version of git-annex that was built, for use by {- For use by autobuilders, this outputs the version of git-annex that
- autobuilders. Note that this includes the git rev. -} - 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 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 #-} {-# OPTIONS_GHC -fno-warn-tabs #-}
@ -12,15 +12,13 @@ import Utility.Env.Basic
import qualified Git.Version import qualified Git.Version
import Utility.Directory import Utility.Directory
import Control.Monad.IfElse
import Control.Monad import Control.Monad
import Control.Applicative import Control.Applicative
import Prelude import Prelude
tests :: [TestCase] tests :: [TestCase]
tests = 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" $ testCmd "git" "git --version >/dev/null"
, TestCase "git version" getGitVersion , TestCase "git version" getGitVersion
, testCp "cp_a" "-a" , testCp "cp_a" "-a"
@ -120,9 +118,8 @@ run ts = do
case v of case v of
Just "Android" -> writeSysConfig $ androidConfig config Just "Android" -> writeSysConfig $ androidConfig config
_ -> writeSysConfig config _ -> writeSysConfig config
writeVersion =<< getVersion
cleanup cleanup
whenM isReleaseBuild $
cabalSetup "git-annex.cabal"
{- Hard codes some settings to cross-compile for Android. -} {- Hard codes some settings to cross-compile for Android. -}
androidConfig :: [Config] -> [Config] androidConfig :: [Config] -> [Config]

View file

@ -1,4 +1,4 @@
{- Package version determination, for configure script. -} {- Package version determination. -}
{-# OPTIONS_GHC -fno-warn-tabs #-} {-# OPTIONS_GHC -fno-warn-tabs #-}
@ -13,7 +13,6 @@ import Prelude
import Utility.Monad import Utility.Monad
import Utility.Exception import Utility.Exception
import Utility.Directory
type Version = String type Version = String
@ -22,26 +21,28 @@ type Version = String
isReleaseBuild :: IO Bool isReleaseBuild :: IO Bool
isReleaseBuild = (== Just "1") <$> catchMaybeIO (getEnv "RELEASE_BUILD") isReleaseBuild = (== Just "1") <$> catchMaybeIO (getEnv "RELEASE_BUILD")
{- Version is usually based on the major version from the changelog, {- Version comes from the CHANGELOG, plus the git rev of the last commit.
- plus the date of the last commit, plus the git rev of that commit.
- This works for autobuilds, ad-hoc builds, etc. - This works for autobuilds, ad-hoc builds, etc.
- -
- If git or a git repo is not available, or something goes wrong, - 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 :: IO Version
getVersion = do getVersion = do
changelogversion <- getChangelogVersion changelogversion <- getChangelogVersion
ifM (isReleaseBuild) ifM (isReleaseBuild)
( return changelogversion ( return changelogversion
, catchDefaultIO changelogversion $ do , catchDefaultIO changelogversion $ do
let major = takeWhile (/= '.') changelogversion gitversion <- takeWhile (\c -> isAlphaNum c) <$> readProcess "sh"
autoversion <- takeWhile (\c -> isAlphaNum c || c == '-') <$> readProcess "sh"
[ "-c" [ "-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 return $ if null gitversion
then return changelogversion then changelogversion
else return $ concat [ major, ".", autoversion ] else concat
[ changelogversion
, "-g"
, gitversion
]
) )
getChangelogVersion :: IO Version getChangelogVersion :: IO Version
@ -52,20 +53,17 @@ getChangelogVersion = do
where where
middle = drop 1 . init middle = drop 1 . init
{- Set up cabal file with version. -} writeVersion :: Version -> IO ()
cabalSetup :: FilePath -> IO () writeVersion = writeFile "Build/Version" . body
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
where where
tmpcabalfile = cabalfile++".tmp" body ver = unlines $ concat
setfield field value s [ header
| fullfield `isPrefixOf` s = fullfield ++ value , ["packageversion :: String"]
| otherwise = s , ["packageversion = \"" ++ ver ++ "\""]
where , footer
fullfield = field ++ ": " ]
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 -- This file is generated by the configure program with the results of its
-- probing. -- probing.
#include "Build/SysConfig" #include "Build/SysConfig"
-- This file is automatically generated from the CHANGELOG version
#include "Build/Version"

View file

@ -108,7 +108,7 @@ docs: mans
clean: clean:
if [ "$(BUILDER)" != ./Setup ] && [ "$(BUILDER)" != cabal ]; then $(BUILDER) clean; fi if [ "$(BUILDER)" != ./Setup ] && [ "$(BUILDER)" != cabal ]; then $(BUILDER) clean; fi
rm -rf tmp dist git-annex $(mans) configure *.tix .hpc \ 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 \ Setup Build/InstallDesktopFile Build/EvilSplicer \
Build/Standalone Build/OSXMkLibs Build/LinuxMkLibs \ Build/Standalone Build/OSXMkLibs Build/LinuxMkLibs \
Build/DistributionUpdate Build/BuildVersion Build/MakeMans \ Build/DistributionUpdate Build/BuildVersion Build/MakeMans \

View file

@ -63,6 +63,11 @@ getextra rsync.exe 85cb7a4d16d274fcf8069b39042965ad26abd6aa
#stack upgrade --git #stack upgrade --git
stack --version 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 # Build git-annex
stack setup --stack-yaml stack-windows.yaml stack setup --stack-yaml stack-windows.yaml
stack install -j 1 --stack-yaml stack-windows.yaml --no-haddock \ 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 --package nsis Build/NullSoftInstaller.hs
./Build/NullSoftInstaller ./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 # Test git-annex
# The test is run in c:/WINDOWS/Temp, because running it in the autobuilder # The test is run in c:/WINDOWS/Temp, because running it in the autobuilder
# directory runs afoul of Windows's short PATH_MAX. # directory runs afoul of Windows's short PATH_MAX.