1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
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
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
|
module Rules.SourceDist (sourceDistRules) where
import Hadrian.Oracles.DirectoryContents
import Base
import Builder
import Oracles.Setting
import Rules.Clean
sourceDistRules :: Rules ()
sourceDistRules = do
"source-dist" ~> do
-- We clean the source tree first.
-- See https://github.com/snowleopard/hadrian/issues/384.
-- TODO: Do we still need to clean the tree?
cleanSourceTree
version <- setting ProjectVersion
need ["sdistprep/ghc-" ++ version ++ "-src.tar.xz"]
putSuccess "| Done"
"sdistprep/ghc-*-src.tar.xz" %> \fname -> do
let tarName = takeFileName fname
dropTarXz = dropExtension . dropExtension
treePath = "sdistprep/ghc" -/- dropTarXz tarName
prepareTree treePath
runBuilderWithCmdOptions [Cwd "sdistprep/ghc"] (Tar Create)
["cJf", ".." -/- tarName, dropTarXz tarName]
["cJf", ".." -/- tarName] [dropTarXz tarName]
"GIT_COMMIT_ID" %> \fname ->
writeFileChanged fname =<< setting ProjectGitCommitId
"VERSION" %> \fname ->
writeFileChanged fname =<< setting ProjectVersion
prepareTree :: FilePath -> Action ()
prepareTree dest = do
mapM_ cpDir srcDirs
mapM_ cpFile srcFiles
where
cpFile a = copyFile a (dest -/- a)
cpDir a = copyDirectoryContents (Not excluded) a (dest -/- a)
excluded = Or
[ Test "//.*"
, Test "//#*"
, Test "//*-SAVE"
, Test "//*.orig"
, Test "//*.rej"
, Test "//*~"
, Test "//autom4te*"
, Test "//dist"
, Test "//dist-install"
, 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/primitive"
, Test "libraries/random"
, Test "libraries/stm"
, Test "libraries/vector"
, Test "mk/build.mk" ]
srcDirs =
[ "bindisttest"
, "compiler"
, "distrib"
, "docs"
, "docs"
, "driver"
, "ghc"
, "hadrian"
, "includes"
, "iserv"
, "libffi"
, "libffi-tarballs"
, "libraries"
, "mk"
, "rts"
, "rules"
, "utils" ]
srcFiles =
[ "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"
]
|