From ec32f51b2d7d166b891c30961931984bdefdd32b Mon Sep 17 00:00:00 2001 From: u Date: Mon, 10 Jan 2022 17:18:24 -0500 Subject: fix long-standing bug where skel-files did not work --- fsmgr.hs | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/fsmgr.hs b/fsmgr.hs index 1c898e3..ed09669 100644 --- a/fsmgr.hs +++ b/fsmgr.hs @@ -176,14 +176,14 @@ buildRoot config@DiskImageConfig{..} finalOut = do forM_ (unpack <$> binaries) go forM_ (unpack <$> optionalBinaries) $ ignoreErrors . go {- 3.5 skel -} - let go f = do + let go f = when (not $ null f) $ do homeDir <- getHomeDir target <- absPath mountpoint <&> ( "etc/skel") cmd_ "mkdir -p" [target] - cmd_ (Cwd homeDir) "cp -r --preserve=mode,timestamps -L --parents -t" [target] [f] + cmd_ (Cwd homeDir) "cp -r --preserve=mode,timestamps -L --parents -t" [target] f in do - forM_ (unpack <$> skelFiles) go - forM_ (unpack <$> optionalSkelFiles) $ ignoreErrors . go + go $ toList (unpack <$> skelFiles) + ignoreErrors . go $ toList (unpack <$> optionalSkelFiles) {- 3.6 systemd unit files -} let go s = do target <- absPath mountpoint <&> ( "etc/systemd/system") @@ -224,8 +224,10 @@ absPath f = do getHomeDir :: Action FilePath getHomeDir = do - Stdout homeDir <- cmd "sh -c" ["if [ \"$SUDO_USER\" ]; then getent passwd \"$SUDO_USER\" | cut -d: -f6; else printf \"%s\n\" \"$HOME\"; fi"] + Stdout homeDir <- cmd "sh -c" [script] return homeDir + where + script = "if [ \"$SUDO_USER\" ]; then getent passwd \"$SUDO_USER\" | cut -z -d: -f6; else printf \"%s\\0\" \"$HOME\"; fi | xargs -0 printf %s" readFileOptional :: FilePath -> IO (String) readFileOptional f = IO.doesFileExist f >>= \case -- cgit v1.2.3