diff --git a/CURATORS.md b/CURATORS.md index 80da8441..da594cb2 100644 --- a/CURATORS.md +++ b/CURATORS.md @@ -333,14 +333,15 @@ early and hopefully the nightlies will be timely. LTS minor bumps typically are run on Sundays. -### Website sync debugging (and other out of disk space errors) +### Diskspace errors (and website sync debugging) -* You can detect the problem by running `df`. If you see that `/` is out of space, we have a problem +* You can detect the problem by running `df`. If you see that `/` is out of space, we have a problem. * If you see that `/var/stackage/` is out of space, you can: + * run `./etc/diskspace/clean-old-stack-libs.sh [nightly|lts-XX]` (hopefully sufficient) + + optionally (not recommended?): * `rm -r /var/stackage/stackage/automated/work/lts*/unpack-dir/unpacked/` * `rm -r /var/stackage/stackage/automated/work/nightly/unpack-dir/unpacked/` -* (outdated) There are many temp files inside `/home/ubuntu/stackage-server-cron` that can be cleared out occasionally -* (outdated) You can then manually run `/home/ubuntu/stackage-server-cron.sh`, or wait for the cron job to do it ### Wiping the cache diff --git a/build-constraints.yaml b/build-constraints.yaml index db9a103a..d78ae54c 100644 --- a/build-constraints.yaml +++ b/build-constraints.yaml @@ -12,6 +12,12 @@ packages: "Allan Lukwago @epicallan": - servant-errors + "Christian Charukiewicz @charukiewicz": + - isbn + + "Koz Ross @kozross": + - medea + "Ashlynn Anderson @lambdadog": - proto3-wire @@ -86,7 +92,7 @@ packages: "Robert Vollmert @robx": - configurator-pg - - postgrest + - postgrest < 7.0.1 # https://github.com/commercialhaskell/stackage/issues/5383 "Sandy Maguire @isovector": - ecstasy @@ -316,8 +322,8 @@ packages: "Pasqualino Assini @tittoassini": # - zm - # - flat # fails to build - - model < 0 # BuildFailureException Process exited with ExitFailure 1: ./Setup build + - flat + - model "Jose Iborra @pepeiborra": # - arrowp-qq # build failure https://github.com/pepeiborra/arrowp/issues/8 @@ -469,7 +475,7 @@ packages: "Li-yao Xia @Lysxia": - boltzmann-samplers - - first-class-families < 0.8.0.0 + - first-class-families - generic-data - generic-data-surgery < 0 # via generic-data - generic-random @@ -478,7 +484,7 @@ packages: - type-map "Tobias Dammers @tdammers": - - ginger < 0 # via regex-tdfa-1.3.0 + - ginger - yeshql < 0 # via yeshql-hdbc "Yair Chuchem @yairchu": @@ -865,7 +871,7 @@ packages: - compensated - compressed < 0 - concurrent-supply - - constraints < 0.12 # https://github.com/commercialhaskell/stackage/issues/5124 + - constraints - contravariant - distributive - discrimination < 0 @@ -1220,6 +1226,7 @@ packages: "Colin Woodbury @fosskers": - aur + - aura - bounded-queue - kanji - language-bash @@ -3266,7 +3273,7 @@ packages: - validation "Tony Day @tonyday567": - - numhask + - numhask < 0.5 # https://github.com/commercialhaskell/stackage/issues/5382 - numhask-array < 0 - numhask-prelude < 0 - numhask-space < 0 @@ -3625,7 +3632,7 @@ packages: - ilist - life-sync - membrain - - relude < 0.7 # https://github.com/commercialhaskell/stackage/issues/5361 + - relude - shellmet - shortcut-links - summoner @@ -3869,10 +3876,10 @@ packages: - heist < 0 # GHC 8.4 via map-syntax - snap < 0 # GHC 8.4 via base-4.11.0.0 - conferer - # - conferer-snap # Because snap + #- conferer-snap # Because snap - conferer-warp - conferer-hspec - - conferer-provider-json + - conferer-source-json "Tim Humphries @thumphries": - transformers-either < 0 # via exceptions-0.10.0 @@ -4038,7 +4045,7 @@ packages: - secp256k1-haskell - rocksdb-haskell - rocksdb-query - - haskoin-core + - haskoin-core < 0.13.5 # https://github.com/haskoin/haskoin-core/issues/385 - haskoin-node - haskoin-store < 0 # https://github.com/haskoin/haskoin-store/issues/12 @@ -4175,7 +4182,8 @@ packages: - minimal-configuration "Davit Nalchevanidze @nalchevanidze": - - morpheus-graphql + - morpheus-graphql + - morpheus-graphql-core "Satoshi Egi @egisatoshi": - egison @@ -4245,6 +4253,12 @@ packages: "Rickey Visinski @rickeyski": - slack-api + "Dobromir Nikolov @dnikolovv": + - it-has + + "Gabriele Sales @gbrsales": + - cabal-appimage + "Grandfathered dependencies": - network - Boolean @@ -4403,6 +4417,7 @@ packages: - functor-combinators < 0 # via dependent-sum - generic-arbitrary - generics-sop-lens + - ghc-byteorder - ghc-compact - ghc-paths - ghc-prof @@ -4814,15 +4829,9 @@ packages: # https://github.com/commercialhaskell/stackage/issues/5335 - brick <0.53 - # https://github.com/commercialhaskell/stackage/issues/5336 - - colourista < 0.1.0.0 - # https://github.com/commercialhaskell/stackage/issues/5347 - persistent-template < 2.8.3 - # https://github.com/commercialhaskell/stackage/issues/5346 - - validation-selective < 0.1.0.0 - # https://github.com/commercialhaskell/stackage/issues/5348 - tasty < 1.3 - tasty-golden < 2.3.3.3 @@ -4833,6 +4842,8 @@ packages: # https://github.com/commercialhaskell/stackage/issues/5351 - pantry < 0.5 + # https://github.com/commercialhaskell/path/issues/161 + - path < 0.7.1 # end of packages # Package flags are applied to individual packages, and override the values of diff --git a/etc/diskspace/clean-old-stack-libs.sh b/etc/diskspace/clean-old-stack-libs.sh new file mode 100755 index 00000000..e63044f9 --- /dev/null +++ b/etc/diskspace/clean-old-stack-libs.sh @@ -0,0 +1,13 @@ +#!/bin/bash + +set -e + +if [ $# != 1 ]; then + echo "Usage: $0 [nightly|lts-xx]" + exit 1 +fi + +cd ~/stackage/automated/work/$1/unpack-dir/.stack-work/install/x86_64-linux/*/*/lib/x86_64-linux-ghc-* +pwd + +stack --resolver lts-14.27 script ~/stackage/etc/diskspace/remove-old-stack-work-libs.hs diff --git a/etc/diskspace/remove-old-stack-work-libs.hs b/etc/diskspace/remove-old-stack-work-libs.hs new file mode 100644 index 00000000..a2cd4e3b --- /dev/null +++ b/etc/diskspace/remove-old-stack-work-libs.hs @@ -0,0 +1,54 @@ +#!/usr/bin/env stack +-- stack --resolver lts-14 script + +-- Utility to remove old libs installed under .stack-work/ to save diskspace + +-- Should be run in: +-- work/*/unpack-dir/.stack-work/install/x86_64-linux/*/*/lib/x86_64-linux-ghc-* + +import Data.List +import System.Directory +import System.FilePath +import Text.Regex.TDFA + +main = do + files <- sort <$> listDirectory "." + let (dynlibs,libdirs) = partition (".so" `isExtensionOf`) files + pkglibdirs = groupBy samePkgLibDir libdirs + pkgdynlibs = groupBy samePkgDynLib dynlibs + mapM_ (removeOlder removeDirectoryRecursive) pkglibdirs + mapM_ (removeOlder removeFile) pkgdynlibs + where + samePkgLibDir l1 l2 = pkgDirName l1 == pkgDirName l2 + where + pkgDirName p = + if length p < 25 + then error $ p ++ " too short to be in correct name-version-hash format" + else extractNameInternal p + + extractNameInternal :: String -> String + extractNameInternal p = + let (name,match,internal) = p =~ "-[0-9.]+-[0-9A-Za-z]{20,22}" :: (String, String, String) + in if null match || null name then error $ p ++ " not in correct name-version-hash format" + else name ++ internal + + samePkgDynLib d1 d2 = pkgDynName d1 == pkgDynName d2 + where + pkgDynName p = + if length p < 42 + then error $ p ++ " too short to be libHSname-version-hash-ghc*.so format" + else (extractNameInternal . removeDashSegment) p + + removeDashSegment = dropWhileEnd (/= '-') + + removeOlder remover files = do + -- keep 2 latest builds + oldfiles <- drop 2 . reverse <$> sortByAge files + mapM_ remover oldfiles + + sortByAge files = do + timestamps <- mapM getModificationTime files + let fileTimes = zip files timestamps + return $ map fst $ sortBy compareSnd fileTimes + + compareSnd (_,t1) (_,t2) = compare t1 t2