webapp: Check annex.version.
This commit is contained in:
parent
2430302379
commit
9c20185f55
9 changed files with 80 additions and 52 deletions
69
Assistant.hs
69
Assistant.hs
|
@ -64,8 +64,8 @@ stopDaemon = liftIO . Utility.Daemon.stopDaemon =<< fromRepo gitAnnexPidFile
|
|||
-
|
||||
- startbrowser is passed the url and html shim file, as well as the original
|
||||
- stdout and stderr descriptors. -}
|
||||
startDaemon :: Bool -> Bool -> Maybe Duration -> Maybe HostName -> Maybe (Maybe Handle -> Maybe Handle -> String -> FilePath -> IO ()) -> Annex ()
|
||||
startDaemon assistant foreground startdelay listenhost startbrowser = do
|
||||
startDaemon :: Bool -> Bool -> Maybe Duration -> Maybe String -> Maybe HostName -> Maybe (Maybe Handle -> Maybe Handle -> String -> FilePath -> IO ()) -> Annex ()
|
||||
startDaemon assistant foreground startdelay cannotrun listenhost startbrowser = do
|
||||
Annex.changeState $ \s -> s { Annex.daemon = True }
|
||||
pidfile <- fromRepo gitAnnexPidFile
|
||||
logfile <- fromRepo gitAnnexLogFile
|
||||
|
@ -117,44 +117,51 @@ startDaemon assistant foreground startdelay listenhost startbrowser = do
|
|||
#endif
|
||||
notice ["starting", desc, "version", SysConfig.packageversion]
|
||||
urlrenderer <- liftIO newUrlRenderer
|
||||
mapM_ (startthread urlrenderer)
|
||||
[ watch $ commitThread
|
||||
#ifdef WITH_WEBAPP
|
||||
, assist $ webAppThread d urlrenderer False listenhost Nothing webappwaiter
|
||||
let webappthread = [ assist $ webAppThread d urlrenderer False cannotrun listenhost Nothing webappwaiter ]
|
||||
#else
|
||||
let webappthread = []
|
||||
#endif
|
||||
let threads = if isJust cannotrun
|
||||
then webappthread
|
||||
else webappthread ++
|
||||
[ watch $ commitThread
|
||||
#ifdef WITH_WEBAPP
|
||||
#ifdef WITH_PAIRING
|
||||
, assist $ pairListenerThread urlrenderer
|
||||
, assist $ pairListenerThread urlrenderer
|
||||
#endif
|
||||
#ifdef WITH_XMPP
|
||||
, assist $ xmppClientThread urlrenderer
|
||||
, assist $ xmppSendPackThread urlrenderer
|
||||
, assist $ xmppReceivePackThread urlrenderer
|
||||
, assist $ xmppClientThread urlrenderer
|
||||
, assist $ xmppSendPackThread urlrenderer
|
||||
, assist $ xmppReceivePackThread urlrenderer
|
||||
#endif
|
||||
#endif
|
||||
, assist $ pushThread
|
||||
, assist $ pushRetryThread
|
||||
, assist $ mergeThread
|
||||
, assist $ transferWatcherThread
|
||||
, assist $ transferPollerThread
|
||||
, assist $ transfererThread
|
||||
, assist $ daemonStatusThread
|
||||
, assist $ sanityCheckerDailyThread
|
||||
, assist $ sanityCheckerHourlyThread
|
||||
, assist $ problemFixerThread urlrenderer
|
||||
, assist $ pushThread
|
||||
, assist $ pushRetryThread
|
||||
, assist $ mergeThread
|
||||
, assist $ transferWatcherThread
|
||||
, assist $ transferPollerThread
|
||||
, assist $ transfererThread
|
||||
, assist $ daemonStatusThread
|
||||
, assist $ sanityCheckerDailyThread
|
||||
, assist $ sanityCheckerHourlyThread
|
||||
, assist $ problemFixerThread urlrenderer
|
||||
#ifdef WITH_CLIBS
|
||||
, assist $ mountWatcherThread urlrenderer
|
||||
, assist $ mountWatcherThread urlrenderer
|
||||
#endif
|
||||
, assist $ netWatcherThread
|
||||
, assist $ netWatcherFallbackThread
|
||||
, assist $ transferScannerThread urlrenderer
|
||||
, assist $ cronnerThread urlrenderer
|
||||
, assist $ configMonitorThread
|
||||
, assist $ glacierThread
|
||||
, watch $ watchThread
|
||||
-- must come last so that all threads that wait
|
||||
-- on it have already started waiting
|
||||
, watch $ sanityCheckerStartupThread startdelay
|
||||
]
|
||||
, assist $ netWatcherThread
|
||||
, assist $ netWatcherFallbackThread
|
||||
, assist $ transferScannerThread urlrenderer
|
||||
, assist $ cronnerThread urlrenderer
|
||||
, assist $ configMonitorThread
|
||||
, assist $ glacierThread
|
||||
, watch $ watchThread
|
||||
-- must come last so that all threads that wait
|
||||
-- on it have already started waiting
|
||||
, watch $ sanityCheckerStartupThread startdelay
|
||||
]
|
||||
|
||||
mapM_ (startthread urlrenderer) threads
|
||||
liftIO waitForTermination
|
||||
|
||||
watch a = (True, a)
|
||||
|
|
|
@ -52,11 +52,12 @@ webAppThread
|
|||
:: AssistantData
|
||||
-> UrlRenderer
|
||||
-> Bool
|
||||
-> Maybe String
|
||||
-> Maybe HostName
|
||||
-> Maybe (IO Url)
|
||||
-> Maybe (Url -> FilePath -> IO ())
|
||||
-> NamedThread
|
||||
webAppThread assistantdata urlrenderer noannex listenhost postfirstrun onstartup = thread $ liftIO $ do
|
||||
webAppThread assistantdata urlrenderer noannex cannotrun listenhost postfirstrun onstartup = thread $ liftIO $ do
|
||||
#ifdef __ANDROID__
|
||||
when (isJust listenhost) $
|
||||
-- See Utility.WebApp
|
||||
|
@ -68,6 +69,7 @@ webAppThread assistantdata urlrenderer noannex listenhost postfirstrun onstartup
|
|||
<*> getreldir
|
||||
<*> pure staticRoutes
|
||||
<*> pure postfirstrun
|
||||
<*> pure cannotrun
|
||||
<*> pure noannex
|
||||
<*> pure listenhost
|
||||
setUrlRenderer urlrenderer $ yesodRender webapp (pack "")
|
||||
|
|
|
@ -52,16 +52,19 @@ page title navbaritem content = customPage navbaritem $ do
|
|||
customPage :: Maybe NavBarItem -> Widget -> Handler Html
|
||||
customPage navbaritem content = do
|
||||
webapp <- getYesod
|
||||
navbar <- map navdetails <$> selectNavBar
|
||||
pageinfo <- widgetToPageContent $ do
|
||||
addStylesheet $ StaticR css_bootstrap_css
|
||||
addStylesheet $ StaticR css_bootstrap_responsive_css
|
||||
addScript $ StaticR jquery_full_js
|
||||
addScript $ StaticR js_bootstrap_dropdown_js
|
||||
addScript $ StaticR js_bootstrap_modal_js
|
||||
addScript $ StaticR js_bootstrap_collapse_js
|
||||
$(widgetFile "page")
|
||||
giveUrlRenderer $(Hamlet.hamletFile $ hamletTemplate "bootstrap")
|
||||
case cannotRun webapp of
|
||||
Nothing -> do
|
||||
navbar <- map navdetails <$> selectNavBar
|
||||
pageinfo <- widgetToPageContent $ do
|
||||
addStylesheet $ StaticR css_bootstrap_css
|
||||
addStylesheet $ StaticR css_bootstrap_responsive_css
|
||||
addScript $ StaticR jquery_full_js
|
||||
addScript $ StaticR js_bootstrap_dropdown_js
|
||||
addScript $ StaticR js_bootstrap_modal_js
|
||||
addScript $ StaticR js_bootstrap_collapse_js
|
||||
$(widgetFile "page")
|
||||
giveUrlRenderer $(Hamlet.hamletFile $ hamletTemplate "bootstrap")
|
||||
Just msg -> error msg
|
||||
where
|
||||
navdetails i = (navBarName i, navBarRoute i, Just i == navbaritem)
|
||||
|
||||
|
|
|
@ -44,6 +44,7 @@ data WebApp = WebApp
|
|||
, relDir :: Maybe FilePath
|
||||
, getStatic :: Static
|
||||
, postFirstRun :: Maybe (IO String)
|
||||
, cannotRun :: Maybe String
|
||||
, noAnnex :: Bool
|
||||
, listenHost ::Maybe HostName
|
||||
}
|
||||
|
|
|
@ -32,5 +32,5 @@ start :: Bool -> Bool -> Bool -> Maybe Duration -> CommandStart
|
|||
start assistant foreground stopdaemon startdelay = do
|
||||
if stopdaemon
|
||||
then stopDaemon
|
||||
else startDaemon assistant foreground startdelay Nothing Nothing -- does not return
|
||||
else startDaemon assistant foreground startdelay Nothing Nothing Nothing -- does not return
|
||||
stop
|
||||
|
|
|
@ -30,6 +30,8 @@ import qualified Git.CurrentRepo
|
|||
import qualified Annex
|
||||
import Config.Files
|
||||
import qualified Option
|
||||
import Upgrade
|
||||
import Annex.Version
|
||||
|
||||
import Control.Concurrent
|
||||
import Control.Concurrent.STM
|
||||
|
@ -56,10 +58,14 @@ start = start' True
|
|||
start' :: Bool -> Maybe HostName -> CommandStart
|
||||
start' allowauto listenhost = do
|
||||
liftIO ensureInstalled
|
||||
ifM isInitialized ( go , auto )
|
||||
ifM isInitialized
|
||||
( go
|
||||
, auto
|
||||
)
|
||||
stop
|
||||
where
|
||||
go = do
|
||||
cannotrun <- needsUpgrade . fromMaybe (error "no version") =<< getVersion
|
||||
browser <- fromRepo webBrowser
|
||||
f <- liftIO . absPath =<< fromRepo gitAnnexHtmlShim
|
||||
ifM (checkpid <&&> checkshim f)
|
||||
|
@ -69,7 +75,7 @@ start' allowauto listenhost = do
|
|||
url <- liftIO . readFile
|
||||
=<< fromRepo gitAnnexUrlFile
|
||||
liftIO $ openBrowser browser f url Nothing Nothing
|
||||
, startDaemon True True Nothing listenhost $ Just $
|
||||
, startDaemon True True Nothing cannotrun listenhost $ Just $
|
||||
\origout origerr url htmlshim ->
|
||||
if isJust listenhost
|
||||
then maybe noop (`hPutStrLn` url) origout
|
||||
|
@ -133,7 +139,7 @@ firstRun listenhost = do
|
|||
let callback a = Just $ a v
|
||||
runAssistant d $ do
|
||||
startNamedThread urlrenderer $
|
||||
webAppThread d urlrenderer True listenhost
|
||||
webAppThread d urlrenderer True Nothing listenhost
|
||||
(callback signaler)
|
||||
(callback mainthread)
|
||||
waitNamedThreads
|
||||
|
@ -155,7 +161,7 @@ firstRun listenhost = do
|
|||
_wait <- takeMVar v
|
||||
state <- Annex.new =<< Git.CurrentRepo.get
|
||||
Annex.eval state $
|
||||
startDaemon True True Nothing listenhost $ Just $
|
||||
startDaemon True True Nothing Nothing listenhost $ Just $
|
||||
sendurlback v
|
||||
sendurlback v _origout _origerr url _htmlshim = do
|
||||
recordUrl url
|
||||
|
|
16
Upgrade.hs
16
Upgrade.hs
|
@ -19,15 +19,21 @@ import qualified Upgrade.V2
|
|||
import qualified Upgrade.V4
|
||||
|
||||
checkUpgrade :: Version -> Annex ()
|
||||
checkUpgrade v
|
||||
| v `elem` supportedVersions = noop
|
||||
| v `elem` autoUpgradeableVersions = unlessM (upgrade True) $
|
||||
err "Automatic upgrade failed!"
|
||||
checkUpgrade = maybe noop error <=< needsUpgrade
|
||||
|
||||
needsUpgrade :: Version -> Annex (Maybe String)
|
||||
needsUpgrade v
|
||||
| v `elem` supportedVersions = ok
|
||||
| v `elem` autoUpgradeableVersions = ifM (upgrade True)
|
||||
( ok
|
||||
, err "Automatic upgrade failed!"
|
||||
)
|
||||
| v `elem` upgradableVersions = err "Upgrade this repository: git-annex upgrade"
|
||||
| otherwise = err "Upgrade git-annex."
|
||||
where
|
||||
err msg = error $ "Repository version " ++ v ++
|
||||
err msg = return $ Just $ "Repository version " ++ v ++
|
||||
" is not supported. " ++ msg
|
||||
ok = return Nothing
|
||||
|
||||
upgrade :: Bool -> Annex Bool
|
||||
upgrade automatic = go =<< getVersion
|
||||
|
|
1
debian/changelog
vendored
1
debian/changelog
vendored
|
@ -39,6 +39,7 @@ git-annex (5.20131102) UNRELEASED; urgency=low
|
|||
* Switched to the tasty test framework.
|
||||
* Android: Adjust default .gitignore to ignore .thumbnails at any location
|
||||
in the tree, not just at its top.
|
||||
* webapp: Check annex.version.
|
||||
|
||||
-- Joey Hess <joeyh@debian.org> Wed, 06 Nov 2013 16:14:14 -0400
|
||||
|
||||
|
|
|
@ -30,3 +30,5 @@ the failing version is running the one from wheezy backports.
|
|||
### Please provide any additional information below.
|
||||
|
||||
screenshot coming up.
|
||||
|
||||
> [[fixed|done]] --[[Joey]]
|
||||
|
|
Loading…
Add table
Reference in a new issue