@@ -63,7 +63,7 @@ def major = "2020"
63
63
def minor = " 3"
64
64
65
65
// Dependency versions
66
- ext. mpsVersion = ' 2020.3.1 '
66
+ ext. mpsVersion = ' 2020.3.4 '
67
67
68
68
def mbeddrVersion = " 2020.3+"
69
69
@@ -135,12 +135,14 @@ configurations {
135
135
mps
136
136
languageLibs
137
137
junitAnt
138
+ pcollections // Synced to org.iets3.core.expr.base.collections.stubs/lib
138
139
}
139
140
140
141
dependencies {
141
142
mps " com.jetbrains:mps:$mpsVersion "
142
143
languageLibs " com.mbeddr:platform:$mbeddrVersionSelector "
143
144
junitAnt ' org.apache.ant:ant-junit:1.10.6'
145
+ pcollections ' org.pcollections:pcollections:3.1.4'
144
146
}
145
147
146
148
repositories {
@@ -159,21 +161,40 @@ repositories {
159
161
mavenCentral()
160
162
}
161
163
162
- task resolveMps (type : Copy ) {
164
+ task resolveMps (type : Sync ) {
163
165
dependsOn configurations. mps
164
166
from {
165
167
configurations. mps. resolve(). collect { zipTree(it) }
166
168
}
167
169
into " $buildDir /mps"
168
170
}
169
171
170
- task resolveLanguageLibs (type : Copy ) {
172
+ task resolveLanguageLibs (type : Sync ) {
171
173
from {
172
174
configurations. languageLibs. resolve(). collect { zipTree(it) }
173
175
}
174
176
into " $buildDir /dependencies"
175
177
}
176
178
179
+ task resolvePcollections (type : Sync ) {
180
+ from configurations. pcollections
181
+ into file(' code/languages/org.iets3.opensource/solutions/org.iets3.core.expr.base.collections.stubs/lib' )
182
+
183
+ // Strip version numbers from file names
184
+ rename { filename ->
185
+ def ra = configurations. pcollections. resolvedConfiguration. resolvedArtifacts. find { ResolvedArtifact ra -> ra. file. name == filename }
186
+ String finalName
187
+ if (ra. classifier != null ) {
188
+ finalName = " ${ ra.name} -${ ra.classifier} .${ ra.extension} "
189
+ } else {
190
+ finalName = " ${ ra.name} .${ ra.extension} "
191
+ }
192
+ return finalName
193
+ }
194
+ }
195
+
196
+ task resolveDependencies (dependsOn : [resolveLanguageLibs, resolvePcollections])
197
+
177
198
// Default arguments for ant scripts
178
199
def defaultScriptArgs = [
179
200
' mps.home' : resolveMps. destinationDir,
@@ -194,7 +215,7 @@ ext["itemis.mps.gradle.ant.defaultScriptArgs"] = defaultScriptArgs.collect { "-D
194
215
ext[" itemis.mps.gradle.ant.defaultScriptClasspath" ] = defaultScriptClasspath
195
216
ext[" itemis.mps.gradle.ant.defaultJavaExecutable" ] = new File (jdk_home, ' bin/java' )
196
217
197
- task buildAllScripts (type : BuildLanguages , dependsOn : [resolveMps, resolveLanguageLibs ]) {
218
+ task buildAllScripts (type : BuildLanguages , dependsOn : [resolveMps, resolveDependencies ]) {
198
219
script " $buildDir /scripts/build-allScripts.xml"
199
220
}
200
221
@@ -218,12 +239,6 @@ task buildAndRunTests(type: TestLanguages, dependsOn: buildLanguages) {
218
239
219
240
check. dependsOn buildAndRunTests
220
241
221
- task packageAllScripts (type : Zip , dependsOn : buildAllScripts) {
222
- archiveBaseName = ' org.iets3.opensource.allScripts'
223
- from artifactsDir
224
- include ' org.iets3.opensource.allScripts.build/**'
225
- }
226
-
227
242
task packageLanguages (type : Zip , dependsOn : buildLanguages) {
228
243
archiveBaseName = ' org.iets3.opensource'
229
244
from artifactsDir
@@ -247,7 +262,28 @@ task packageDistroWithDependencies(type: Zip, dependsOn: buildDistroWithDependen
247
262
include ' org.iets3.opensource.distro/**'
248
263
}
249
264
250
- assemble. dependsOn packageAllScripts, packageLanguages, packageTests
265
+ assemble. dependsOn packageLanguages, packageTests
266
+
267
+ static def addDependency (Object pom , Object groupId , Object artifactId , Object version , Object type = null ) {
268
+ pom. withXml { XmlProvider prov ->
269
+ Node root = prov. asNode()
270
+ Node deps = root. dependencies[0 ] ?: root. appendNode(" dependencies" )
271
+ def dep = deps. appendNode(" dependency" )
272
+ dep. appendNode(" groupId" , groupId)
273
+ dep. appendNode(" artifactId" , artifactId)
274
+ dep. appendNode(" version" , version)
275
+ if (type != null ) {
276
+ dep. appendNode(" type" , type)
277
+ }
278
+ }
279
+ }
280
+
281
+ static def addDependency (Object pom , Configuration config ) {
282
+ config. resolvedConfiguration. firstLevelModuleDependencies. each {
283
+ addDependency(pom, it. moduleGroup, it. moduleName, it. moduleVersion, it. moduleArtifacts[0 ]. type)
284
+ }
285
+
286
+ }
251
287
252
288
publishing {
253
289
repositories {
@@ -261,57 +297,100 @@ publishing {
261
297
}
262
298
}
263
299
}
300
+ repositories {
301
+ if (currentBranch == " master" || currentBranch. startsWith(" maintenance" ) || currentBranch. startsWith(" mps" )) {
302
+ maven {
303
+ name = " GitHubPackages"
304
+ url = uri(" https://maven.pkg.github.com/IETS3/iets3.opensource" )
305
+ if (project. hasProperty(" gpr.token" )) {
306
+ credentials {
307
+ username = project. findProperty(" gpr.user" )
308
+ password = project. findProperty(" gpr.token" )
309
+ }
310
+ }
311
+ }
312
+ }
313
+ }
264
314
265
315
publications {
266
- allScripts(MavenPublication ) {
267
- groupId ' org.iets3.opensource'
268
- artifactId ' allScripts'
269
- artifact packageAllScripts
270
- }
271
316
openSource(MavenPublication ) {
272
317
groupId ' org.iets3'
273
318
artifactId ' opensource'
274
319
artifact packageLanguages
275
- pom. withXml {
276
- def dependenciesNode = asNode(). appendNode(' dependencies' )
277
- configurations. languageLibs. resolvedConfiguration. firstLevelModuleDependencies. each{
278
- def dependencyNode = dependenciesNode. appendNode(' dependency' )
279
- dependencyNode. appendNode(' groupId' , it. moduleGroup)
280
- dependencyNode. appendNode(' artifactId' , it. moduleName)
281
- dependencyNode. appendNode(' version' , it. moduleVersion)
282
- dependencyNode. appendNode(' type' , it. moduleArtifacts[0 ]. type)
283
- }
284
- configurations. mps. resolvedConfiguration. firstLevelModuleDependencies. each{
285
- def dependencyNode = dependenciesNode. appendNode(' dependency' )
286
- dependencyNode. appendNode(' groupId' , it. moduleGroup)
287
- dependencyNode. appendNode(' artifactId' , it. moduleName)
288
- dependencyNode. appendNode(' version' , it. moduleVersion)
289
- dependencyNode. appendNode(' type' , it. moduleArtifacts[0 ]. type)
290
- dependencyNode. appendNode(' scope' , ' provided' )
291
- }
292
- }
320
+
321
+ addDependency(pom, configurations. languageLibs)
293
322
}
323
+
294
324
tests(MavenPublication ) {
295
325
groupId ' org.iets3.opensource'
296
326
artifactId ' tests'
297
327
artifact packageTests
298
- pom. withXml {
299
- def dependenciesNode = asNode(). appendNode(' dependencies' )
300
- configurations. mps. resolvedConfiguration. firstLevelModuleDependencies. each{
301
- def dependencyNode = dependenciesNode. appendNode(' dependency' )
302
- dependencyNode. appendNode(' groupId' , it. moduleGroup)
303
- dependencyNode. appendNode(' artifactId' , it. moduleName)
304
- dependencyNode. appendNode(' version' , it. moduleVersion)
305
- dependencyNode. appendNode(' type' , it. moduleArtifacts[0 ]. type)
306
- }
328
+
329
+ addDependency(pom, ' org.iets3' , ' opensource' , project. version, ' zip' )
330
+ }
331
+
332
+ def runtimesDir = new File (artifactsDir, ' org.iets3.opensource/org.iets3.core.os/languages/iets3.core.os' )
333
+
334
+ ' org.iets3.core.expr.base.shared.runtime' (MavenPublication ) {
335
+ groupId ' org.iets3.core.expr.base.shared'
336
+ artifactId ' shared-runtime'
337
+ artifact(new File (runtimesDir, ' org.iets3.core.expr.base.shared.runtime.jar' )) {
338
+ builtBy buildLanguages
339
+ }
340
+ artifact(new File (runtimesDir, ' org.iets3.core.expr.base.shared.runtime-src.jar' )) {
341
+ builtBy buildLanguages
342
+ classifier ' sources'
343
+ }
344
+ }
345
+
346
+ ' org.iets3.core.expr.simpleTypes.runtime' (MavenPublication ) {
347
+ // GitHub Packages refuse uppercase artifactId (not sure about groupId) so use lower case here
348
+ groupId ' org.iets3.core.expr.simpletypes'
349
+ artifactId ' simpletypes-runtime'
350
+ artifact(new File (runtimesDir, ' org.iets3.core.expr.simpleTypes.runtime.jar' )) {
351
+ builtBy buildLanguages
307
352
}
353
+ artifact(new File (runtimesDir, ' org.iets3.core.expr.simpleTypes.runtime-src.jar' )) {
354
+ builtBy buildLanguages
355
+ classifier ' sources'
356
+ }
357
+
358
+ addDependency(pom, ' org.iets3.core.expr.base.shared' , ' shared-runtime' , project. version)
359
+ }
360
+
361
+ ' org.iets3.core.expr.datetime.runtime' (MavenPublication ) {
362
+ groupId ' org.iets3.core.expr.datetime'
363
+ artifactId ' datetime-runtime'
364
+ artifact(new File (runtimesDir, ' org.iets3.core.expr.datetime.runtime.jar' )) {
365
+ builtBy buildLanguages
366
+ }
367
+ artifact(new File (runtimesDir, ' org.iets3.core.expr.datetime.runtime-src.jar' )) {
368
+ builtBy buildLanguages
369
+ classifier ' sources'
370
+ }
371
+
372
+ addDependency(pom, ' org.iets3.core.expr.base.shared' , ' shared-runtime' , project. version)
373
+ }
374
+
375
+ ' org.iets3.core.expr.temporal.runtime' (MavenPublication ) {
376
+ groupId ' org.iets3.core.expr.temporal'
377
+ artifactId ' temporal-runtime'
378
+ artifact(new File (runtimesDir, ' org.iets3.core.expr.temporal.runtime.jar' )) {
379
+ builtBy buildLanguages
380
+ }
381
+ artifact(new File (runtimesDir, ' org.iets3.core.expr.temporal.runtime-src.jar' )) {
382
+ builtBy buildLanguages
383
+ classifier ' sources'
384
+ }
385
+
386
+ addDependency(pom, ' org.iets3.core.expr.datetime' , ' datetime-runtime' , project. version)
308
387
}
309
388
}
310
389
}
311
390
312
391
313
392
task generateLibrariesXml (type : GenerateLibrariesXml ) {
314
- dependsOn resolveLanguageLibs
393
+ dependsOn resolveDependencies
315
394
description " Will read project libraries from projectlibraries.properties and generate libraries.xml in .mps directory. Libraries are loaded in mps during start."
316
395
defaults rootProject. file(' projectlibraries.properties' )
317
396
overrides rootProject. file(' projectlibraries.overrides.properties' )
@@ -320,7 +399,7 @@ task generateLibrariesXml(type: GenerateLibrariesXml) {
320
399
321
400
task setup {
322
401
dependsOn generateLibrariesXml
323
- dependsOn resolveLanguageLibs
402
+ dependsOn resolveDependencies
324
403
description ' Set up MPS project libraries. Libraries are read in from projectlibraries.properties file.'
325
404
}
326
405
@@ -365,4 +444,4 @@ githubRelease.doFirst {
365
444
}
366
445
}
367
446
368
- githubRelease. dependsOn packageDistroWithDependencies
447
+ githubRelease. dependsOn packageDistroWithDependencies
0 commit comments