{- Copyright (c) 2005 John Goerzen Please see the COPYRIGHT file -} module Main where import Config import System.Environment import System.Directory import Import import Logging import Control.Exception import Utils import Versions import System.Log.Logger import System.Cmd.Utils import System.IO.HVFS.Utils import Darcs import System.Posix.Files import System.Cmd import System.Exit import Mirrors main = do initLogging ver <- getVerFromCL pkg <- getPkgFromCL let (upsv, debv) = splitVer ver case debv of Nothing -> infoM "main" "Debian-native package; not building upstream" Just dv -> do buildorig pkg upsv debv args <- getArgs buildenv <- try (getEnv "DBP_BUILDER") case buildenv of Right buildcmd -> safeSystem "/bin/sh" ["-c", buildcmd] Left _ -> safeSystem "debuild" (["-i_darcs", "-I_darcs"] ++ args) -- Build the orig.tar.gz buildorig pkg upsv debv = let tgzname = pkg ++ "_" ++ upsv ++ ".orig.tar.gz" origdirname = pkg ++ "-" ++ upsv ++ ".orig" in do e1 <- doesFileExist $ "../" ++ tgzname e2 <- doesDirectoryExist $ "../" ++ origdirname if e1 || e2 then infoM "main" $ "Upstream file or directory already exists; not re-building" else do cwd <- getCurrentDirectory (upstreamdir, _) <- getDirectories pkg upsMirrors <- getMirrors "upstream" pkg getItUps pkg upstreamdir upsMirrors bracketCWD ".." $ do ec <- rawSystem "darcs" ["get", "--partial", "--set-scripts-executable", "--tag=^" ++ quoteRe (upstreamTag pkg upsv) ++ "$", upstreamdir, origdirname] case ec of ExitSuccess -> do bracketCWD origdirname $ do safeSystem "darcs" ["dist"] rename (origdirname ++ ".tar.gz") ("../" ++ tgzname) recursiveRemove SystemFS origdirname _ -> warningM "main" "WARNING: FOUND NO UPSTREAM SOURCE FOR PACKAGE, will build native (no-diff) package"