summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Cady <d@jerkface.net>2020-05-30 00:48:35 -0400
committerAndrew Cady <d@jerkface.net>2020-05-30 00:48:35 -0400
commit41d5d8bfe3104f0a05bcb77999bac99f182d4eba (patch)
treede8286b7da3defc6b96df2c42fea5ca780fb0f89
parent8a4224d366a3560a1a8b9780016c1ae899904eb2 (diff)
implement "apt-update" to install apt lists
presently this hard-codes stretch & amd64
-rw-r--r--fsmgr.hs16
-rw-r--r--src/ConfigFile.hs4
2 files changed, 18 insertions, 2 deletions
diff --git a/fsmgr.hs b/fsmgr.hs
index 65797c4..2a2d09c 100644
--- a/fsmgr.hs
+++ b/fsmgr.hs
@@ -53,6 +53,19 @@ uname = unsafePerformIO $ do
53 Stdout out <- cmd "uname -r" 53 Stdout out <- cmd "uname -r"
54 return $ last . wordsBy '-' . head . lines $ out 54 return $ last . wordsBy '-' . head . lines $ out
55 55
56aptListFiles :: [FilePath]
57aptListFiles = ("/var/lib/apt/lists" </>) <$> observedCorrectListForStretch
58 where
59 observedCorrectListForStretch =
60 [ "httpredir.debian.org_debian_dists_stretch_main_binary-amd64_Packages"
61 , "httpredir.debian.org_debian_dists_stretch_main_i18n_Translation-en"
62 , "httpredir.debian.org_debian_dists_stretch_Release"
63 , "httpredir.debian.org_debian_dists_stretch_Release.gpg"
64 , "security.debian.org_dists_stretch_updates_InRelease"
65 , "security.debian.org_dists_stretch_updates_main_binary-amd64_Packages"
66 , "security.debian.org_dists_stretch_updates_main_i18n_Translation-en"
67 ]
68
56buildRoot :: DiskImageConfig -> FilePath -> Action () 69buildRoot :: DiskImageConfig -> FilePath -> Action ()
57buildRoot config@DiskImageConfig{..} finalOut = do 70buildRoot config@DiskImageConfig{..} finalOut = do
58 let out = finalOut <.> "tmp" 71 let out = finalOut <.> "tmp"
@@ -81,7 +94,8 @@ buildRoot config@DiskImageConfig{..} finalOut = do
81 cmd_ (AddEnv "DEBIAN_FRONTEND" "noninteractive") 94 cmd_ (AddEnv "DEBIAN_FRONTEND" "noninteractive")
82 ["dpkg"] [if unpackOnly then "--unpack" else "--install"] (dynamicNames <$> debs) 95 ["dpkg"] [if unpackOnly then "--unpack" else "--install"] (dynamicNames <$> debs)
83 {- 2.5. install apt package cache -} 96 {- 2.5. install apt package cache -}
84 -- TODO 97 when installAptLists $ do
98 cmd_ "rsync -Ra" (("/./" ++) <$> aptListFiles) (mountpoint ++ "/")
85 {- 3. binaries -} 99 {- 3. binaries -}
86 let go b = do 100 let go b = do
87 p <- fromMaybe (fail $ "not found in ${PATH}: " ++ b) <$> liftIO (pathLocate b) 101 p <- fromMaybe (fail $ "not found in ${PATH}: " ++ b) <$> liftIO (pathLocate b)
diff --git a/src/ConfigFile.hs b/src/ConfigFile.hs
index 08aa914..a5b5989 100644
--- a/src/ConfigFile.hs
+++ b/src/ConfigFile.hs
@@ -62,6 +62,7 @@ data DiskImageConfig = DiskImageConfig {
62, skelFiles :: Vector Text 62, skelFiles :: Vector Text
63, optionalSkelFiles :: Vector Text 63, optionalSkelFiles :: Vector Text
64, newSeededImgSize :: Maybe Int64 64, newSeededImgSize :: Maybe Int64
65, installAptLists :: Bool
65} deriving (Show, Read) 66} deriving (Show, Read)
66 67
67parsePackageName :: Text -> Package 68parsePackageName :: Text -> Package
@@ -80,9 +81,10 @@ diskImageConfigParser = object $
80 <*> defaultField "skel-files" Vector.empty (array string) 81 <*> defaultField "skel-files" Vector.empty (array string)
81 <*> defaultField "skel-files-optional" Vector.empty (array string) 82 <*> defaultField "skel-files-optional" Vector.empty (array string)
82 <*> optField "seedme" integer 83 <*> optField "seedme" integer
84 <*> defaultField "apt-update" False bool
83 85
84convSeeded :: DiskImageConfig -> DiskImageConfig 86convSeeded :: DiskImageConfig -> DiskImageConfig
85convSeeded x@(DiskImageConfig (ParentImageConfigFile f) _ _ _ _ _ _ _ _ (Just size)) = x { initialImage = SeededImage size f } 87convSeeded x@(DiskImageConfig (ParentImageConfigFile f) _ _ _ _ _ _ _ _ (Just size) _) = x { initialImage = SeededImage size f }
86convSeeded x = x 88convSeeded x = x
87 89
88readCfg :: FilePath -> Action DiskImageConfig 90readCfg :: FilePath -> Action DiskImageConfig