diff options
author | Ben Sima <ben@bsima.me> | 2022-08-03 15:21:53 -0400 |
---|---|---|
committer | Ben Sima <ben@bsima.me> | 2022-08-03 15:21:53 -0400 |
commit | 3cbb52bb2eedf42caadaae0fd4832469bfbdde12 (patch) | |
tree | b0c4100705a653a1f4bb0f769c0d0665a7ed932f /Biz/Bild.hs | |
parent | 27a631b2c94df80ac5da8c97b66a3e99e1813811 (diff) |
Distinguish between output name and output path
Bild.nix relies on output name when setting the output path, which is gonna be
different than the dev build cabdir output path.
Diffstat (limited to 'Biz/Bild.hs')
-rw-r--r-- | Biz/Bild.hs | 38 |
1 files changed, 25 insertions, 13 deletions
diff --git a/Biz/Bild.hs b/Biz/Bild.hs index 2b7a2e1..2113b5a 100644 --- a/Biz/Bild.hs +++ b/Biz/Bild.hs @@ -209,7 +209,11 @@ data Out = Lib String | Bin String | None deriving (Show, Eq) instance Aeson.ToJSON Out where - toJSON out = outdir out |> Text.pack |> Aeson.String + toJSON = + Aeson.String <. Text.pack <. \case + Bin a -> a + Lib a -> a + None -> "" data Compiler = Copy @@ -237,6 +241,8 @@ instance Aeson.ToJSON Compiler where data Target = Target { -- | Output name out :: Out, + -- | Output path (into cabdir) + outPath :: FilePath, -- | Fully qualified namespace partitioned by '.' namespace :: Namespace, -- | Absolute path to file @@ -282,8 +288,8 @@ isBuildableNs = \case ] -- | Emulate the *nix hierarchy in the cabdir. -outdir :: Out -> String -outdir = \case +outToPath :: Out -> FilePath +outToPath = \case Bin o -> "_/bin" </> o Lib o -> "_/lib" </> o None -> mempty @@ -297,8 +303,8 @@ createHier :: String -> IO () createHier root = traverse_ (Dir.createDirectoryIfMissing True) - [ root </> (outdir <| Bin ""), - root </> (outdir <| Lib ""), + [ root </> (outToPath <| Bin ""), + root </> (outToPath <| Lib ""), root </> intdir, root </> nixdir, root </> vardir @@ -375,8 +381,9 @@ analyze hmap ns = case Map.lookup ns hmap of [ [o, dir, Text.pack absPath] ++ guileFlags | let outable = out /= None, o <- outable ?: (["-o"], []), - dir <- outable ?: ([Text.pack <| root </> outdir out], []) + dir <- outable ?: ([Text.pack <| root </> outToPath out], []) ], + outPath = outToPath out, .. } Namespace.Hs -> do @@ -411,7 +418,7 @@ analyze hmap ns = case Map.lookup ns hmap of [ "-main-is", Namespace.toHaskellModule namespace, "-o", - root </> outdir out + root </> outToPath out ], [] ), @@ -421,6 +428,7 @@ analyze hmap ns = case Map.lookup ns hmap of /> Regex.match (metaSys "--") |> catMaybes |> Set.fromList, + outPath = outToPath out, .. } Namespace.Lisp -> do @@ -445,9 +453,10 @@ analyze hmap ns = case Map.lookup ns hmap of "--eval", "(require :asdf)", "--eval", - "(sb-ext:save-lisp-and-die #p\"" <> (root </> outdir out) <> "\" :toplevel #'main :executable t)" + "(sb-ext:save-lisp-and-die #p\"" <> (root </> outToPath out) <> "\" :toplevel #'main :executable t)" ], builder = user <> "@localhost", + outPath = outToPath out, .. } Namespace.Nix -> do @@ -478,6 +487,7 @@ analyze hmap ns = case Map.lookup ns hmap of Text.unpack builder ], out = None, + outPath = outToPath None, .. } Namespace.Scm -> do @@ -504,6 +514,7 @@ analyze hmap ns = case Map.lookup ns hmap of path ], builder = user <> "@localhost", + outPath = outToPath out, .. } Namespace.Rs -> do @@ -520,8 +531,9 @@ analyze hmap ns = case Map.lookup ns hmap of { langdeps = Set.empty, sysdeps = Set.empty, compiler = Rustc, - compilerFlags = map Text.pack [path, "-o", root </> outdir out], + compilerFlags = map Text.pack [path, "-o", root </> outToPath out], builder = user <> "@localhost", + outPath = outToPath out, .. } detectHaskellImports :: [Text] -> IO (Set Dep) @@ -588,7 +600,7 @@ test loud Target {..} = case compiler of run <| Proc { loud = loud, - cmd = root </> outdir out, + cmd = root </> outToPath out, args = ["test"], ns = namespace, onFailure = Log.fail ["test", nschunk namespace] >> Log.br, @@ -629,7 +641,7 @@ build andTest loud analysis = do _ <- proc loud namespace "guild" compilerFlags when (out /= None) <| do writeFile - (root </> outdir out) + (root </> outToPath out) <| Text.pack <| joinWith "\n" @@ -641,8 +653,8 @@ build andTest loud analysis = do <> Namespace.toPath namespace <> " \"$@\"" ] - p <- Dir.getPermissions <| root </> outdir out - Dir.setPermissions (root </> outdir out) (Dir.setOwnerExecutable True p) + p <- Dir.getPermissions <| root </> outToPath out + Dir.setPermissions (root </> outToPath out) (Dir.setOwnerExecutable True p) pure Exit.ExitSuccess NixBuild -> do Log.info ["bild", "nix", builder, nschunk namespace] |