From dc32442f1a7f8de3fc0d426ab1d4e74c2aea4d4a Mon Sep 17 00:00:00 2001 From: iovxw Date: Tue, 28 Jul 2026 21:46:54 +0800 Subject: [PATCH] Avoid concurrent git operations on marisa-trie --- src/Main.hs | 1 + src/Rules/Marisa.hs | 17 ++++++++++++----- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/src/Main.hs b/src/Main.hs index 4ca166be..5b189b14 100644 --- a/src/Main.hs +++ b/src/Main.hs @@ -64,6 +64,7 @@ main = do glogRule yamlCppRule leveldbRule + marisaSourceRule hostMarisaRule marisaRule librimeRule diff --git a/src/Rules/Marisa.hs b/src/Rules/Marisa.hs index 66fd1db7..2f3447c8 100644 --- a/src/Rules/Marisa.hs +++ b/src/Rules/Marisa.hs @@ -6,6 +6,7 @@ module Rules.Marisa ( marisaRule, hostMarisaRule, + marisaSourceRule, ) where @@ -18,13 +19,20 @@ data MarisaTrie = MarisaTrie type instance RuleResult MarisaTrie = () +marisaSourceRule :: Rules () +marisaSourceRule = do + "marisa-source" ~> do + src <- liftIO $ canonicalizePath "marisa-trie" + cmd_ (Cwd src) "git checkout ." + cmd_ (Cwd src) "git apply ../patches/marisa-tire.patch" + hostMarisaRule :: Rules () hostMarisaRule = do "host-marisa" ~> do + need ["marisa-source"] marisaSrc <- liftIO $ canonicalizePath "marisa-trie" let buildDir = outputDir "marisa-build-host" let hostPrefix = outputDir "host" - cmd_ (Cwd marisaSrc) "git checkout ." cmd_ "cmake" "-B" buildDir @@ -41,9 +49,8 @@ marisaRule = do useCMake $ (cmakeBuilder "marisa") { source = const $ pure "marisa-trie", - preBuild = BuildAction $ \_ src -> do - cmd_ (Cwd src) "git checkout ." - cmd_ (Cwd src) "git apply ../patches/marisa-tire.patch", cmakeFlags = const ["-DBUILD_SHARED_LIBS=OFF"] } - "marisa" ~> buildWithAndroidEnv buildMarisa MarisaTrie + "marisa" ~> do + need ["marisa-source"] + buildWithAndroidEnv buildMarisa MarisaTrie