diff options
author | Andrew Cady <d@jerkface.net> | 2020-05-30 00:48:35 -0400 |
---|---|---|
committer | Andrew Cady <d@jerkface.net> | 2020-05-30 00:48:35 -0400 |
commit | 41d5d8bfe3104f0a05bcb77999bac99f182d4eba (patch) | |
tree | de8286b7da3defc6b96df2c42fea5ca780fb0f89 | |
parent | 8a4224d366a3560a1a8b9780016c1ae899904eb2 (diff) |
implement "apt-update" to install apt lists
presently this hard-codes stretch & amd64
-rw-r--r-- | fsmgr.hs | 16 | ||||
-rw-r--r-- | src/ConfigFile.hs | 4 |
2 files changed, 18 insertions, 2 deletions
@@ -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 | ||
56 | aptListFiles :: [FilePath] | ||
57 | aptListFiles = ("/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 | |||
56 | buildRoot :: DiskImageConfig -> FilePath -> Action () | 69 | buildRoot :: DiskImageConfig -> FilePath -> Action () |
57 | buildRoot config@DiskImageConfig{..} finalOut = do | 70 | buildRoot 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 | ||
67 | parsePackageName :: Text -> Package | 68 | parsePackageName :: 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 | ||
84 | convSeeded :: DiskImageConfig -> DiskImageConfig | 86 | convSeeded :: DiskImageConfig -> DiskImageConfig |
85 | convSeeded x@(DiskImageConfig (ParentImageConfigFile f) _ _ _ _ _ _ _ _ (Just size)) = x { initialImage = SeededImage size f } | 87 | convSeeded x@(DiskImageConfig (ParentImageConfigFile f) _ _ _ _ _ _ _ _ (Just size) _) = x { initialImage = SeededImage size f } |
86 | convSeeded x = x | 88 | convSeeded x = x |
87 | 89 | ||
88 | readCfg :: FilePath -> Action DiskImageConfig | 90 | readCfg :: FilePath -> Action DiskImageConfig |