blob: 261313a5afea5d63ae42d8cde37ccb2139536eb2 [file] [log] [blame]
Tor Norbye3a2425a2013-11-04 10:16:08 -08001import static org.jetbrains.jps.idea.IdeaProjectLoader.guessHome
2
3setProperty("projectHome", guessHome(this as Script))
4setProperty("home", projectHome)
5
6includeTargets << new File("${projectHome}/build/scripts/utils.gant")
7
8setProperty("outDir", "${projectHome}/out/python")
9setProperty("ideaDir", "${outDir}/ideaCE")
10requireProperty("ideaPath", ideaDir)
11
12setProperty("pluginHelp", "${outDir}/help")
13
14setProperty("buildNumber", requireProperty("build.number", snapshot))
15setProperty("ideaBuildNumber", requireProperty("idea.build.number"))
16
17setProperty("ideaHomePacked", "${ideaDir}/jdk16") //compiled idea
18setProperty("ideaHome", "${ideaDir}/jdk16/idea-IC-${ideaBuildNumber}") //compiled idea
19
20setProperty("pluginHome", "${projectHome}/python")
21setProperty("pluginRevision", "${buildNumber}")
22
23setProperty("ideaLib", "${ideaHome}/lib")
24setProperty("ideaPlugins", "${ideaHome}/plugins") //compiled plugins
25
26
27setProperty("output", "${projectHome}/python/distCE")
28
29setProperty("zipdir", "${output}/zip")
30setProperty("plugindir", "${zipdir}/python")
31setProperty("zipname", "python-community-${pluginRevision}.zip")
32
33setProperty("srcDir", "${pluginHome}/src")
34
35setProperty("resourcesDir", "${pluginHome}/resources")
36
37setProperty("classesRootDir", "${outDir}/classes")
38setProperty("classesDir", "${classesRootDir}/python")
39
40//Compiler options
41setProperty("compilerDebug", "on")
42setProperty("compilerGenerateNoWarnings", "off")
43setProperty("compilerArgs", "")
44setProperty("compilerMaxMemory", "256m")
45
46ant.patternset(id: "resources.pt") {
47 include(name: "**/?*.properties")
48 include(name: "**/?*.template")
49 include(name: "**/?*.xml")
50 include(name: "**/?*.gif")
51 include(name: "**/?*.png")
52 include(name: "**/?*.txt")
53 include(name: "**/?*.jpeg")
54 include(name: "**/?*.jpg")
55 include(name: "**/?*.html")
56 include(name: "**/?*.dtd")
57 include(name: "**/?*.tld")
58 include(name: "**/?*.py")
59 include(name: "**/?*.ft")
60 include(name: "**/?*.dic")
61 exclude(name: "**/plugin.xml")
62}
63
64target(name: "clean", description: "Cleanup output") {
65 ant.echo("Cleaning ${output}")
66 ant.delete(dir: "${output}", failonerror: "false")
67 ant.echo("Cleaning ${classesRootDir}")
68 ant.delete(dir: "${classesRootDir}", failonerror: "false")
69 ant.echo("Cleaning ${ideaHome}")
70 ant.delete(dir: "${ideaHome}", failonerror: "false") // out/python/idea/
71}
72
73target(name: "unzip") {
74 ant.mkdir(dir: "${ideaHomePacked}")
75 ant.gunzip(src: "${ideaPath}/ideaIC-${ideaBuildNumber}.tar.gz")
76 ant.untar(src: "${ideaPath}/ideaIC-${ideaBuildNumber}.tar", dest: "${ideaHomePacked}")
77}
78
79target(name: "compile", description: "Compile module python") {
80 depends("unzip")
81
82 ant.path(id: "classpath.lib") {
83 fileset(dir: "${ideaLib}") {
84 include(name: "?*.jar")
85 }
86 fileset(dir: "${ideaPlugins}/terminal/lib") {
87 include(name: "*.jar")
88 }
89 }
90
91 ant.path(id: "sourcepath") {
92 dirset(dir: "${pluginHome}") {
93 include(name: "resources")
94 include(name: "src")
95 include(name: "pluginSrc")
96 include(name: "pydevSrc")
97 include(name: "openapi/src")
98 include(name: "psi-api/src")
99 }
100 }
101 //The task requires the following libraries from IntelliJ IDEA distribution:
102 //javac2.jar; jdom.jar; asm.jar; asm-commons.jar
103 ant.taskdef(name: "javac2", classname: "com.intellij.ant.Javac2") {
104 classpath {
105 fileset(dir: "${ideaLib}") {
106 include(name: "?*.jar")
107 }
108 }
109 }
110
111 ant.mkdir(dir: "${classesDir}")
112
113 //compile
114 ant.javac2(destdir: "${classesDir}",
115 debug: "${compilerDebug}",
116 nowarn: "${compilerGenerateNoWarnings}",
117 memorymaximumsize: "${compilerMaxMemory}",
118 fork: "true") {
119 compilerarg(line: "${compilerArgs}")
120 classpath(refid: "classpath.lib")
121 src(refid: "sourcepath")
122 }
123
124 //copy resources
125 ant.copy(todir: "${classesDir}") {
126 fileset(dir: "${resourcesDir}") {
127 patternset(refid: "resources.pt")
128 type(type: "file")
129 }
130 fileset(dir: "${pluginHome}/src") {
131 patternset(refid: "resources.pt")
132 type(type: "file")
133 }
134 fileset(dir: "${pluginHome}/psi-api/resources") {
135 patternset(refid: "resources.pt")
136 type(type: "file")
137 }
138 fileset(dir: "${pluginHome}/resources") {
139 patternset(refid: "resources.pt")
140 type(type: "file")
141 }
142 fileset(dir: "${home}/colorSchemes/src")
143 }
144
145 //copy plugin.xml
146 ant.mkdir(dir: "${classesDir}/META-INF")
147 ant.copy(todir: "${classesDir}/META-INF") {
148 fileset(file: "${pluginHome}/pluginSrc/META-INF/*.xml")
149 fileset(file: "${pluginHome}/pluginResources/META-INF/*.xml")
150 }
151
Tor Norbye0ecdb502014-02-19 09:43:01 -0800152 ant.replace(file: "${classesDir}/META-INF/plugin.xml") {
153 replacefilter(token: "@@BUILD_NUMBER@@", value: "${buildNumber}")
154 }
155
Tor Norbye3a2425a2013-11-04 10:16:08 -0800156 ant.replaceregexp(file: "${classesDir}/META-INF/plugin.xml",
157 match: "since-build=\"\\d+\\.\\d+\"",
158 replace: "since-build=\"${ideaBuildNumber}\"")
159}
160
161target(name: "jar", description: "Generate jar file") {
162 depends("compile")
163 ant.mkdir(dir: "${output}")
164 ant.jar(destfile: "${output}/python-community.jar", basedir: "${classesDir}") {
165 manifest() {
166 attribute(name: "Revision", value: "${pluginRevision}")
167 //<!--<attribute name="Build" value="${plugin.version}"/>-->
168 }
169 }
170}
171
172target(name: "zip", description: "Generate zip plugin file") {
173 depends("jar")
174
175 ant.mkdir(dir: "${zipdir}")
176
177 // copy plugin jar
178 ant.mkdir(dir: "${plugindir}/lib")
179 ant.move(file: "${output}/python-community.jar", todir: "${plugindir}/lib")
180
181 ant.mkdir(dir: "${plugindir}/helpers")
182 ant.copy(todir: "${plugindir}/helpers") {
183 fileset(dir: "${pluginHome}/helpers") {
184 include(name: "**/*")
185 }
186 }
187
188 ant.mkdir(dir: "${plugindir}/help")
189 ant.copy(file: "${pluginHelp}/pytonpluginhelp.jar", tofile: "${plugindir}/help/pythonpluginhelp.jar", failonerror: false)
190 ant.copy(file: "${pluginHelp}/pytonpluginhelp_mac.jar", tofile: "${plugindir}/help/pythonpluginhelp_mac.jar", failonerror: false)
191
192 ant.zip(basedir: "${zipdir}", destfile: "${output}/${zipname}")
193}
194
195target(name: "build") {
196 depends("unzip")
197 depends("compile")
198}
199
200target(name: "dist", description: "main target") {
201 depends("clean")
202 depends("build")
203 depends("zip")
204}
205
206target('default': "Build artifacts") {
207 depends("dist")
208}