on master help sign in
Automated uploads
52ca2ccMichael Snoyman
Stackage/InstallInfo.hs+2
@@ -129,6 +129,8 @@ getInstallInfo settings = do
129 , ghcVer
129 , ghcVer
130 , ", "
130 , ", "
131 , date
131 , date
132+ , ", "
133+ , incexc
132 , "\nGenerated on "
134 , "\nGenerated on "
133 , show now
135 , show now
134 ]
136 ]
Stackage/ServerFiles.hs+17−6
@@ -23,18 +23,29 @@ createHackageFile :: Bool -- ^ inclusive?
23 -> Handle -- ^ tarballs
23 -> Handle -- ^ tarballs
24 -> IO ()
24 -> IO ()
25createHackageFile isInc ii ghcVer date hackageH tarballH = do
25createHackageFile 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"
26 hPutStr tarballH $ concat
33 hPutStr tarballH $ concat
27− [ "#!/bin/bash -ex\n\ntar czfv ../ghc-"
34+ [ "#!/bin/bash -ex\n\ntar czfv "
28− , ghcVer
35+ , stackageFP
29− , "-"
30− , date
31− , if isInc then "-inclusive" else "-exclusive"
32− , ".stackage hackage desc"
36+ , " hackage desc"
33 ]
37 ]
34 indextargz <- getTarballName
38 indextargz <- getTarballName
35 indexLBS <- L.readFile indextargz
39 indexLBS <- L.readFile indextargz
36 loop $ Tar.read indexLBS
40 loop $ Tar.read indexLBS
37 hPutStrLn tarballH ""
41 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+ ]
38 where
49 where
39 selected = Map.fromList . map toStrs . Map.toList $
50 selected = Map.fromList . map toStrs . Map.toList $
40 fmap spiVersion (iiPackages ii)
51 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
9./dist/build/stackage/stackage build
9./dist/build/stackage/stackage build
10./dist/build/stackage/stackage test
10./dist/build/stackage/stackage test
11
11
12+cabal install http-client
13+
12for f in inclusive exclusive
14for f in inclusive exclusive
13do
15do
14 cd $f
16 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