Revert to previous pinned version of pantry

The new pantry version in lts-22.6 was not compatible with the database
and/or config on the stackage server.
This commit is contained in:
Bryan Richter 2024-02-13 09:20:41 +02:00
parent 33e5cb2589
commit 5cb5668295
No known key found for this signature in database
GPG Key ID: B202264020068BFB
3 changed files with 64 additions and 47 deletions

View File

@ -2,6 +2,7 @@
{-# LANGUAGE NoImplicitPrelude #-} {-# LANGUAGE NoImplicitPrelude #-}
{-# LANGUAGE RecordWildCards #-} {-# LANGUAGE RecordWildCards #-}
{-# LANGUAGE TypeFamilies #-} {-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE TypeOperators #-}
module Data.WebsiteContent module Data.WebsiteContent
( WebsiteContent (..) ( WebsiteContent (..)
, StackRelease (..) , StackRelease (..)

View File

@ -42,9 +42,9 @@ import Network.HTTP.Types (status200, status404)
import Pantry (CabalFileInfo(..), DidUpdateOccur(..), import Pantry (CabalFileInfo(..), DidUpdateOccur(..),
HpackExecutable(HpackBundled), PackageIdentifierRevision(..), HpackExecutable(HpackBundled), PackageIdentifierRevision(..),
defaultCasaMaxPerRequest, defaultCasaRepoPrefix, defaultCasaMaxPerRequest, defaultCasaRepoPrefix,
defaultPackageIndexConfig, defaultHackageSecurityConfig, defaultSnapshotLocation)
defaultSnapshotLocation, withPantryConfig, PantryConfig) import Pantry.Internal.Stackage (HackageTarballResult(..), PantryConfig(..),
import Pantry.Internal.Stackage (HackageTarballResult(..), forceUpdateHackageIndex, Storage(..), forceUpdateHackageIndex,
getHackageTarball, packageTreeKey) getHackageTarball, packageTreeKey)
import Path (parseAbsDir, toFilePath) import Path (parseAbsDir, toFilePath)
import RIO import RIO
@ -57,6 +57,7 @@ import RIO.Process (mkDefaultProcessContext)
import qualified RIO.Set as Set import qualified RIO.Set as Set
import qualified RIO.Text as T import qualified RIO.Text as T
import RIO.Time import RIO.Time
import Settings
import Stackage.Database.Github import Stackage.Database.Github
import Stackage.Database.PackageInfo import Stackage.Database.PackageInfo
import Stackage.Database.Query import Stackage.Database.Query
@ -88,6 +89,11 @@ hoogleUrl n haddockBucketUrl = T.concat
hackageDeprecatedUrl :: Request hackageDeprecatedUrl :: Request
hackageDeprecatedUrl = "https://hackage.haskell.org/packages/deprecated.json" hackageDeprecatedUrl = "https://hackage.haskell.org/packages/deprecated.json"
withStorage :: (Storage -> IO a) -> IO a
withStorage inner = do
as <- getAppSettings
withStackageDatabase False (appDatabase as) (\db -> inner (Storage (runDatabase db) id))
getStackageSnapshotsDir :: RIO StackageCron FilePath getStackageSnapshotsDir :: RIO StackageCron FilePath
getStackageSnapshotsDir = do getStackageSnapshotsDir = do
cron <- ask cron <- ask
@ -151,10 +157,14 @@ stackageServerCron StackageCronOptions {..} = do
catchIO (bindPortTCP 17834 "127.0.0.1") $ catchIO (bindPortTCP 17834 "127.0.0.1") $
const $ throwString "Stackage Cron loader process already running, exiting." const $ throwString "Stackage Cron loader process already running, exiting."
connectionCount <- getNumCapabilities connectionCount <- getNumCapabilities
withStorage $ \storage -> do
lo <- logOptionsHandle stdout True lo <- logOptionsHandle stdout True
stackageRootDir <- getAppUserDataDirectory "stackage" stackageRootDir <- getAppUserDataDirectory "stackage"
pantryRootDir <- parseAbsDir (stackageRootDir </> "pantry") pantryRootDir <- parseAbsDir (stackageRootDir </> "pantry")
createDirectoryIfMissing True (toFilePath pantryRootDir) createDirectoryIfMissing True (toFilePath pantryRootDir)
updateRef <- newMVar True
cabalImmutable <- newIORef Map.empty
cabalMutable <- newIORef Map.empty
gpdCache <- newIORef IntMap.empty gpdCache <- newIORef IntMap.empty
defaultProcessContext <- mkDefaultProcessContext defaultProcessContext <- mkDefaultProcessContext
aws <- do aws <- do
@ -164,22 +174,24 @@ stackageServerCron StackageCronOptions {..} = do
Nothing -> aws' Nothing -> aws'
Just ep -> configureService (setEndpoint True (BS8.pack ep) 443 Amazonka.S3.defaultService) aws' Just ep -> configureService (setEndpoint True (BS8.pack ep) 443 Amazonka.S3.defaultService) aws'
withLogFunc (setLogMinLevel scoLogLevel lo) $ \logFunc -> do withLogFunc (setLogMinLevel scoLogLevel lo) $ \logFunc -> do
let cronWithPantryConfig :: HasLogFunc env => (PantryConfig -> RIO env a) -> RIO env a let pantryConfig =
cronWithPantryConfig = PantryConfig
withPantryConfig { pcHackageSecurity = defaultHackageSecurityConfig
pantryRootDir , pcHpackExecutable = HpackBundled
defaultPackageIndexConfig , pcRootDir = pantryRootDir
HpackBundled , pcStorage = storage
connectionCount , pcUpdateRef = updateRef
defaultCasaRepoPrefix , pcParsedCabalFilesRawImmutable = cabalImmutable
defaultCasaMaxPerRequest , pcParsedCabalFilesMutable = cabalMutable
defaultSnapshotLocation , pcConnectionCount = connectionCount
, pcCasaRepoPrefix = defaultCasaRepoPrefix
, pcCasaMaxPerRequest = defaultCasaMaxPerRequest
, pcSnapshotLocation = defaultSnapshotLocation
}
currentHoogleVersionId <- runRIO logFunc $ do currentHoogleVersionId <- runRIO logFunc $ do
cronWithPantryConfig $ \pantryConfig -> do
runStackageMigrations' pantryConfig runStackageMigrations' pantryConfig
getCurrentHoogleVersionIdWithPantryConfig pantryConfig getCurrentHoogleVersionIdWithPantryConfig pantryConfig
let stackage pantryConfig = let stackage =
StackageCron StackageCron
{ scPantryConfig = pantryConfig { scPantryConfig = pantryConfig
, scStackageRoot = stackageRootDir , scStackageRoot = stackageRootDir
@ -196,7 +208,7 @@ stackageServerCron StackageCronOptions {..} = do
, scCacheCabalFiles = scoCacheCabalFiles , scCacheCabalFiles = scoCacheCabalFiles
, scHoogleVersionId = currentHoogleVersionId , scHoogleVersionId = currentHoogleVersionId
} }
runRIO logFunc $ cronWithPantryConfig $ \pantryConfig -> runRIO (stackage pantryConfig) (runStackageUpdate scoDoNotUpload) runRIO stackage (runStackageUpdate scoDoNotUpload)
runStackageUpdate :: Bool -> RIO StackageCron () runStackageUpdate :: Bool -> RIO StackageCron ()

View File

@ -2,6 +2,10 @@ resolver: lts-22.6
extra-deps: extra-deps:
- hoogle-5.0.18.4@sha256:1372458e97dff541fcda099236af7936bf93ee6b8c5d15695ee6d9426dff5eed,3171 - hoogle-5.0.18.4@sha256:1372458e97dff541fcda099236af7936bf93ee6b8c5d15695ee6d9426dff5eed,3171
- safe-0.3.20@sha256:7813ad56161f57d5162a924de5597d454162a2faed06be6e268b37bb5c19d48d,2312 - safe-0.3.20@sha256:7813ad56161f57d5162a924de5597d454162a2faed06be6e268b37bb5c19d48d,2312
- Cabal-3.8.1.0@sha256:77121d8e1aff14a0fd95684b751599db78a7dd26d55862d9fcef27c88b193e9d,12609
- Cabal-syntax-3.8.1.0@sha256:ed2d937ba6c6a20b75850349eedd41374885fc42369ef152d69e2ba70f44f593,7620
- git: https://github.com/commercialhaskell/pantry.git
commit: 5df643cc1deb561d9c52a9cb6f593aba2bc4c08e
nix: nix:
packages: packages: