From 233a6954b9e98d599867eb32746c58925a71fbe4 Mon Sep 17 00:00:00 2001 From: Joey Hess Date: Tue, 25 Feb 2025 17:00:00 -0400 Subject: [PATCH] ingest when --unreproducible is used without --fast --- Command/AddComputed.hs | 33 ++++++++++++++++++++------------- 1 file changed, 20 insertions(+), 13 deletions(-) diff --git a/Command/AddComputed.hs b/Command/AddComputed.hs index 01a334bf9e..4edce492e2 100644 --- a/Command/AddComputed.hs +++ b/Command/AddComputed.hs @@ -21,6 +21,7 @@ import Types.RemoteConfig import Types.KeySource import Messages.Progress import Logs.Location +import Utility.Metered import Utility.MonotonicClock import Backend.URL (fromUrl) @@ -136,23 +137,29 @@ perform o r program = do logChange NoLiveUpdate k (Remote.uuid r) InfoPresent addfile fast state tmpdir outputfile - | fast || not isreproducible = do - let stateurl = Remote.Compute.computeStateUrl state outputfile - let k = fromUrl stateurl Nothing isreproducible - addSymlink outputfile k Nothing - return k - | otherwise = do - let outputfile' = tmpdir outputfile - let ld = LockedDown ldc $ KeySource + | fast = do + addSymlink outputfile stateurlk Nothing + return stateurlk + | isreproducible = do + sz <- liftIO $ getFileSize outputfile' + metered Nothing sz Nothing $ \_ p -> + ingestwith $ ingestAdd p (Just ld) + | otherwise = ingestwith $ + ingestAdd' nullMeterUpdate (Just ld) (Just stateurlk) + where + stateurl = Remote.Compute.computeStateUrl state outputfile + stateurlk = fromUrl stateurl Nothing True + outputfile' = tmpdir outputfile + ld = LockedDown ldc $ KeySource { keyFilename = outputfile , contentLocation = outputfile' , inodeCache = Nothing } - sz <- liftIO $ getFileSize outputfile' - metered Nothing sz Nothing $ \_ p -> - ingestAdd p (Just ld) >>= \case - Nothing -> giveup "key generation failed" - Just k -> return k + ingestwith a = a >>= \case + Nothing -> giveup "key generation failed" + Just k -> do + logStatus NoLiveUpdate k InfoPresent + return k ldc = LockDownConfig { lockingFile = True