Use wget -q --show-progress for less verbose wget output, when built with wget 1.16.

This commit is contained in:
Joey Hess 2014-12-16 14:04:40 -04:00
parent 7aa66cb185
commit c64ede23cd
5 changed files with 72 additions and 28 deletions

View file

@ -10,10 +10,13 @@ import Control.Monad
import Build.TestConfig import Build.TestConfig
import Build.Version import Build.Version
import Utility.PartialPrelude
import Utility.Process
import Utility.SafeCommand import Utility.SafeCommand
import Utility.ExternalSHA import Utility.ExternalSHA
import Utility.Env import Utility.Env
import qualified Git.Version import qualified Git.Version
import Utility.DottedVersion
tests :: [TestCase] tests :: [TestCase]
tests = tests =
@ -29,6 +32,7 @@ tests =
, TestCase "rsync" $ requireCmd "rsync" "rsync --version >/dev/null" , TestCase "rsync" $ requireCmd "rsync" "rsync --version >/dev/null"
, TestCase "curl" $ testCmd "curl" "curl --version >/dev/null" , TestCase "curl" $ testCmd "curl" "curl --version >/dev/null"
, TestCase "wget" $ testCmd "wget" "wget --version >/dev/null" , TestCase "wget" $ testCmd "wget" "wget --version >/dev/null"
, TestCase "wget supports -q --show-progress" checkWgetQuietProgress
, TestCase "bup" $ testCmd "bup" "bup --version >/dev/null" , TestCase "bup" $ testCmd "bup" "bup --version >/dev/null"
, TestCase "nice" $ testCmd "nice" "nice true >/dev/null" , TestCase "nice" $ testCmd "nice" "nice true >/dev/null"
, TestCase "ionice" $ testCmd "ionice" "ionice -c3 true >/dev/null" , TestCase "ionice" $ testCmd "ionice" "ionice -c3 true >/dev/null"
@ -96,6 +100,18 @@ getGitVersion = do
error $ "installed git version " ++ show v ++ " is too old! (Need " ++ show oldestallowed ++ " or newer)" error $ "installed git version " ++ show v ++ " is too old! (Need " ++ show oldestallowed ++ " or newer)"
return $ Config "gitversion" $ StringConfig $ show v return $ Config "gitversion" $ StringConfig $ show v
checkWgetQuietProgress :: Test
checkWgetQuietProgress = Config "wgetquietprogress" . BoolConfig
. maybe False (>= normalize "1.16")
<$> getWgetVersion
getWgetVersion :: IO (Maybe DottedVersion)
getWgetVersion = extract <$> readProcess "wget" ["--version"]
where
extract s = case lines s of
[] -> Nothing
(l:_) -> normalize <$> headMaybe (drop 2 $ words l)
getSshConnectionCaching :: Test getSshConnectionCaching :: Test
getSshConnectionCaching = Config "sshconnectioncaching" . BoolConfig <$> getSshConnectionCaching = Config "sshconnectioncaching" . BoolConfig <$>
boolSystem "sh" [Param "-c", Param "ssh -o ControlPersist=yes -V >/dev/null 2>/dev/null"] boolSystem "sh" [Param "-c", Param "ssh -o ControlPersist=yes -V >/dev/null 2>/dev/null"]

View file

@ -5,18 +5,16 @@
- Licensed under the GNU GPL version 3 or higher. - Licensed under the GNU GPL version 3 or higher.
-} -}
module Git.Version where module Git.Version (
installed,
normalize,
GitVersion,
) where
import Common import Common
import Utility.DottedVersion
data GitVersion = GitVersion String Integer type GitVersion = DottedVersion
deriving (Eq)
instance Ord GitVersion where
compare (GitVersion _ x) (GitVersion _ y) = compare x y
instance Show GitVersion where
show (GitVersion s _) = s
installed :: IO GitVersion installed :: IO GitVersion
installed = normalize . extract <$> readProcess "git" ["--version"] installed = normalize . extract <$> readProcess "git" ["--version"]
@ -24,20 +22,3 @@ installed = normalize . extract <$> readProcess "git" ["--version"]
extract s = case lines s of extract s = case lines s of
[] -> "" [] -> ""
(l:_) -> unwords $ drop 2 $ words l (l:_) -> unwords $ drop 2 $ words l
{- To compare dotted versions like 1.7.7 and 1.8, they are normalized to
- a somewhat arbitrary integer representation. -}
normalize :: String -> GitVersion
normalize v = GitVersion v $
sum $ mult 1 $ reverse $ extend precision $ take precision $
map readi $ split "." v
where
extend n l = l ++ replicate (n - length l) 0
mult _ [] = []
mult n (x:xs) = (n*x) : mult (n*10^width) xs
readi :: String -> Integer
readi s = case reads s of
((x,_):_) -> x
_ -> 0
precision = 10 -- number of segments of the version to compare
width = length "yyyymmddhhmmss" -- maximum width of a segment

36
Utility/DottedVersion.hs Normal file
View file

@ -0,0 +1,36 @@
{- dotted versions, such as 1.0.1
-
- Copyright 2011-2014 Joey Hess <joey@kitenet.net>
-
- License: BSD-2-clause
-}
module Utility.DottedVersion where
import Common
data DottedVersion = DottedVersion String Integer
deriving (Eq)
instance Ord DottedVersion where
compare (DottedVersion _ x) (DottedVersion _ y) = compare x y
instance Show DottedVersion where
show (DottedVersion s _) = s
{- To compare dotted versions like 1.7.7 and 1.8, they are normalized to
- a somewhat arbitrary integer representation. -}
normalize :: String -> DottedVersion
normalize v = DottedVersion v $
sum $ mult 1 $ reverse $ extend precision $ take precision $
map readi $ split "." v
where
extend n l = l ++ replicate (n - length l) 0
mult _ [] = []
mult n (x:xs) = (n*x) : mult (n*10^width) xs
readi :: String -> Integer
readi s = case reads s of
((x,_):_) -> x
_ -> 0
precision = 10 -- number of segments of the version to compare
width = length "yyyymmddhhmmss" -- maximum width of a segment

View file

@ -191,9 +191,18 @@ download' quiet url file uo =
wget = go "wget" $ headerparams ++ quietopt "-q" ++ wgetparams wget = go "wget" $ headerparams ++ quietopt "-q" ++ wgetparams
{- Regular wget needs --clobber to continue downloading an existing {- Regular wget needs --clobber to continue downloading an existing
- file. On Android, busybox wget is used, which does not - file. On Android, busybox wget is used, which does not
- support, or need that option. -} - support, or need that option.
-
- When the wget version is new enough, pass options for
- a less cluttered download display.
-}
#ifndef __ANDROID__ #ifndef __ANDROID__
wgetparams = [Params "--clobber -c -O"] wgetparams = catMaybes
[ if Build.SysConfig.wgetquietprogress
then Just $ Params "-q --show-progress"
else Nothing
, Just $ Params "--clobber -c -O"
]
#else #else
wgetparams = [Params "-c -O"] wgetparams = [Params "-c -O"]
#endif #endif

2
debian/changelog vendored
View file

@ -7,6 +7,8 @@ git-annex (5.20141204) UNRELEASED; urgency=medium
* Urls can now be claimed by remotes. This will allow creating, * Urls can now be claimed by remotes. This will allow creating,
for example, a external special remote that handles magnet: and for example, a external special remote that handles magnet: and
*.torrent urls. *.torrent urls.
* Use wget -q --show-progress for less verbose wget output,
when built with wget 1.16.
-- Joey Hess <id@joeyh.name> Fri, 05 Dec 2014 13:42:08 -0400 -- Joey Hess <id@joeyh.name> Fri, 05 Dec 2014 13:42:08 -0400