SourceDist.hs 3.1 KB
Newer Older
kaiha's avatar
kaiha committed
1
2
module Rules.SourceDist (sourceDistRules) where

3
4
import Hadrian.Oracles.DirectoryContents

kaiha's avatar
kaiha committed
5
import Base
6
import Oracles.Setting
7
import Rules.Clean
kaiha's avatar
kaiha committed
8
import UserSettings
9
import Utilities
kaiha's avatar
kaiha committed
10
11
12
13

sourceDistRules :: Rules ()
sourceDistRules = do
    "sdist-ghc" ~> do
14
        cleanSourceTree -- We clean the source tree first, see #384
kaiha's avatar
kaiha committed
15
16
        version <- setting ProjectVersion
        need ["sdistprep/ghc-" ++ version ++ "-src.tar.xz"]
17
        putSuccess "| Done"
kaiha's avatar
kaiha committed
18
    "sdistprep/ghc-*-src.tar.xz" %> \fname -> do
19
20
21
        let tarName   = takeFileName fname
            dropTarXz = dropExtension . dropExtension
            treePath  = "sdistprep/ghc" -/- dropTarXz tarName
kaiha's avatar
kaiha committed
22
        prepareTree treePath
23
24
        runBuilderWith [Cwd "sdistprep/ghc"] Tar
            ["cJf", ".." -/- tarName, dropTarXz tarName]
kaiha's avatar
kaiha committed
25
    "GIT_COMMIT_ID" %> \fname ->
26
        writeFileChanged fname =<< setting ProjectGitCommitId
kaiha's avatar
kaiha committed
27
    "VERSION" %> \fname ->
28
        writeFileChanged fname =<< setting ProjectVersion
kaiha's avatar
kaiha committed
29
30
31
32
33
34

prepareTree :: FilePath -> Action ()
prepareTree dest = do
    mapM_ cpDir  srcDirs
    mapM_ cpFile srcFiles
  where
Andrey Mokhov's avatar
Andrey Mokhov committed
35
    cpFile a = copyFile a (dest -/- a)
36
    cpDir  a = copyDirectoryContents (Not excluded) a (dest -/- a)
kaiha's avatar
kaiha committed
37
    excluded = Or
38
39
40
41
42
43
44
45
        [ Test "//.*"
        , Test "//#*"
        , Test "//*-SAVE"
        , Test "//*.orig"
        , Test "//*.rej"
        , Test "//*~"
        , Test "//autom4te*"
        , Test "//dist"
46
        , Test "//dist-install"
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
        , Test "//log"
        , Test "//stage0"
        , Test "//stage1"
        , Test "//stage2"
        , Test "//stage3"
        , Test "hadrian/.cabal-sandbox"
        , Test "hadrian/.stack-work"
        , Test "hadrian/UserSettings.hs"
        , Test "hadrian/cabal.sandbox.config"
        , Test "hadrian/cfg/system.config"
        , Test "hadrian/bin"
        , Test "hadrian/dist"
        , Test "hadrian/dist-newstyle"
        , Test "libraries//*.buildinfo"
        , Test "libraries//GNUmakefile"
        , Test "libraries//config.log"
        , Test "libraries//config.status"
        , Test "libraries//configure"
        , Test "libraries//ghc.mk"
        , Test "libraries//include/Hs*Config.h"
        , Test "libraries/dph"
        , Test "libraries/parallel"
        , Test "libraries/primitive"
        , Test "libraries/random"
        , Test "libraries/stm"
        , Test "libraries/vector"
        , Test "mk/build.mk" ]
kaiha's avatar
kaiha committed
74
    srcDirs =
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
        [ "bindisttest"
        , "compiler"
        , "distrib"
        , "docs"
        , "docs"
        , "driver"
        , "ghc"
        , "hadrian"
        , "includes"
        , "iserv"
        , "libffi"
        , "libffi-tarballs"
        , "libraries"
        , "mk"
        , "rts"
        , "rules"
        , "utils" ]
kaiha's avatar
kaiha committed
92
    srcFiles =
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
        [ "ANNOUNCE"
        , "GIT_COMMIT_ID"
        , "HACKING.md"
        , "INSTALL.md"
        , "LICENSE"
        , "MAKEHELP.md"
        , "Makefile"
        , "README.md"
        , "VERSION"
        , "aclocal.m4"
        , "boot"
        , "config.guess"
        , "config.sub"
        , "configure"
        , "configure.ac"
        , "ghc.mk"
        , "install-sh"
        , "packages"
        , "settings.in" ]