Added support for quilt series files when patching

This commit is contained in:
James Hobson 2022-01-12 10:01:48 +01:00
parent 7fab328acc
commit f8548fefb3
No known key found for this signature in database
GPG Key ID: F26F0E100770F597

View File

@ -879,20 +879,27 @@ makeOut args workdir = do
executeOut mymake args workdir executeOut mymake args workdir
-- | Try to apply patches in order. Fails with 'PatchFailed' -- | Try to apply patches in order. The order is determined by
-- on first failure. -- a quilt series file (in the patch directory) if one exists,
-- else the patches are applied in lexicographical order.
-- Fails with 'PatchFailed' on first failure.
applyPatches :: (MonadReader env m, HasDirs env, HasLog env, MonadIO m) applyPatches :: (MonadReader env m, HasDirs env, HasLog env, MonadIO m)
=> FilePath -- ^ dir containing patches => FilePath -- ^ dir containing patches
-> FilePath -- ^ dir to apply patches in -> FilePath -- ^ dir to apply patches in
-> Excepts '[PatchFailed] m () -> Excepts '[PatchFailed] m ()
applyPatches pdir ddir = do applyPatches pdir ddir = do
patches <- (fmap . fmap) (pdir </>) $ liftIO $ findFiles seriesExists <- liftIO (doesFileExist (pdir </> "series"))
pdir patches <- if seriesExists
(makeRegexOpts compExtended then
execBlank liftIO $ map (pdir </>) . lines <$> readFile (pdir </> "series")
([s|.+\.(patch|diff)$|] :: ByteString) else
) (fmap . fmap) (pdir </>) $ liftIO $ sort <$> findFiles
forM_ (sort patches) $ \patch' -> applyPatch patch' ddir pdir
(makeRegexOpts compExtended
execBlank
([s|.+\.(patch|diff)$|] :: ByteString)
)
forM_ patches $ \patch' -> applyPatch patch' ddir
applyPatch :: (MonadReader env m, HasDirs env, HasLog env, MonadIO m) applyPatch :: (MonadReader env m, HasDirs env, HasLog env, MonadIO m)