on master help sign in
Automated uploads
commit52ca2cc6e88fb7ae2ac6668292abde9eaeabe84f authorMichael Snoyman <michael@snoyman.com> dateMon 16 Jun 2014, 12:49 (12 years ago) parentc766873
4 files changed+66−6
Stackage/InstallInfo.hs+2 Stackage/ServerFiles.hs+17−6 jenkins-build.sh+2 stackage-upload.hs+45
Stackage/InstallInfo.hs+2
@@ -129,6 +129,8 @@ getInstallInfo settings = do
129129 , ghcVer
130130 , ", "
131131 , date
132+ , ", "
133+ , incexc
132134 , "\nGenerated on "
133135 , show now
134136 ]
Stackage/ServerFiles.hs+17−6
@@ -23,18 +23,29 @@ createHackageFile :: Bool -- ^ inclusive?
2323 -> Handle -- ^ tarballs
2424 -> IO ()
2525createHackageFile isInc ii ghcVer date hackageH tarballH = do
26+ let stackageFP = concat
27+ [ "../ghc-"
28+ , ghcVer
29+ , "-"
30+ , date
31+ , if isInc then "-inclusive" else "-exclusive"
32+ , ".stackage"
2633 hPutStr tarballH $ concat
27− [ "#!/bin/bash -ex\n\ntar czfv ../ghc-"
28− , ghcVer
29− , "-"
30− , date
31− , if isInc then "-inclusive" else "-exclusive"
32− , ".stackage hackage desc"
34+ [ "#!/bin/bash -ex\n\ntar czfv "
35+ , stackageFP
36+ , " hackage desc"
3337 ]
3438 indextargz <- getTarballName
3539 indexLBS <- L.readFile indextargz
3640 loop $ Tar.read indexLBS
3741 hPutStrLn tarballH ""
42+ hPutStrLn tarballH $ concat
43+ [ "runghc ../stackage-upload.hs "
44+ , stackageFP
45+ , " unstable-ghc"
46+ , filter (/= '.') ghcVer
47+ , if isInc then "-inclusive" else "-exclusive"
48+ ]
3849 where
3950 selected = Map.fromList . map toStrs . Map.toList $
4051 fmap spiVersion (iiPackages ii)
jenkins-build.sh+2
@@ -9,6 +9,8 @@ cabal install Cabal-$(cabal --version | sed -n 's@using version \(.*\) of the Ca
99./dist/build/stackage/stackage build
1010./dist/build/stackage/stackage test
1111
12+cabal install http-client
13+
1214for f in inclusive exclusive
1315do
1416 cd $f
stackage-upload.hsnew file+45
@@ -0,0 +1,45 @@
1+{-# LANGUAGE OverloadedStrings #-}
2+import qualified Data.ByteString.Char8 as S8
3+import Network.HTTP.Client
4+import Network.HTTP.Client.MultipartFormData
5+import System.Environment (getArgs, getEnv,
6+ getProgName)
7+import System.Exit (exitFailure)
8+
9+main :: IO ()
10+main = withManager defaultManagerSettings $ \m -> do
11+ args <- getArgs
12+ token <- getEnv "STACKAGE_AUTH_TOKEN"
13+ (filepath, alias) <-
14+ case args of
15+ [x, y] -> return (x, y)
16+ _ -> do
17+ pn <- getProgName
18+ putStrLn $ concat
19+ [ "Usage: "
20+ , pn
21+ , " <filepath> <alias name>"
22+ ]
23+ exitFailure
24+
25+ putStrLn $ concat
26+ [ "Uploading "
27+ , filepath
28+ , " as "
29+ , alias
30+ ]
31+
32+ req1 <- parseUrl "http://www.stackage.org/upload"
33+ let formData =
34+ [ partBS "alias" $ S8.pack alias
35+ , partFileSource "stackage" filepath
36+ ]
37+ req2 <- formDataBody formData req1
38+ let req3 = req2
39+ { method = "PUT"
40+ , requestHeaders =
41+ [ ("Authorization", S8.pack token)
42+ , ("Accept", "application/json")
43+ ] ++ requestHeaders req2
44+ }
45+ httpLbs req3 m >>= print