Skip to content

Commit

Permalink
Fix input-output-hk#42: use patches for revisions
Browse files Browse the repository at this point in the history
  • Loading branch information
yvan-sraka committed Apr 21, 2023
1 parent 586b692 commit a0cbd0d
Showing 1 changed file with 23 additions and 4 deletions.
27 changes: 23 additions & 4 deletions app/Foliage/CmdBuild.hs
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ module Foliage.CmdBuild (cmdBuild) where
import Codec.Archive.Tar qualified as Tar
import Codec.Archive.Tar.Entry qualified as Tar
import Codec.Compression.GZip qualified as GZip
import Control.Monad (unless, void, when)
import Control.Monad (foldM, unless, void, when)
import Data.Aeson qualified as Aeson
import Data.ByteString qualified as BS
import Data.ByteString.Lazy qualified as BL
Expand Down Expand Up @@ -113,9 +113,22 @@ buildAction
cf <- prepareIndexPkgCabal pkgId cabalFileTimestamp originalCabalFilePath

-- all revised cabal files, with their timestamp
revcf <- for cabalFileRevisions $ uncurry (prepareIndexPkgCabal pkgId)

return $ cf : revcf
revcf <-
foldM
( \(lastRevisionPath, cabalFiles) (timestamp, revisionPath) -> do
if takeExtension originalCabalFilePath `elem` [".diff", ".patch"]
then do
patchedRevisionPath <- applyPatch lastRevisionPath revisionPath
preparedCabal <- prepareIndexPkgCabal pkgId timestamp patchedRevisionPath
pure (patchedRevisionPath, cabalFiles ++ [preparedCabal])
else do
preparedCabal <- prepareIndexPkgCabal pkgId timestamp revisionPath
pure (revisionPath, cabalFiles ++ [preparedCabal])
)
(originalCabalFilePath, [])
(sortOn fst cabalFileRevisions)

return $ cf : snd revcf
)
packageVersions

Expand Down Expand Up @@ -312,3 +325,9 @@ mkTarEntry contents indexFile timestamp =
anchorPath :: Path Absolute -> (RepoLayout -> RepoPath) -> FilePath
anchorPath outputDirRoot p =
toFilePath $ anchorRepoPathLocally outputDirRoot $ p hackageRepoLayout

applyPatch :: FilePath -> FilePath -> Action FilePath
applyPatch originalFilePath patchFilePath = do
withTempFile $ \outputFilePath -> do
cmd_ ["patch", "-i", patchFilePath, "-o", outputFilePath, originalFilePath]
return outputFilePath

0 comments on commit a0cbd0d

Please sign in to comment.