Skip to content

Commit e0ebe41

Browse files
authored
Merge pull request #470 from IETS3/feature/publish-kernelf-runtime
[breaking?] Publish KernelF runtime + remove MPS dependency from published artifacts
2 parents 81128a3 + 713e600 commit e0ebe41

File tree

8 files changed

+194
-268
lines changed

8 files changed

+194
-268
lines changed

build.gradle

Lines changed: 108 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -135,12 +135,14 @@ configurations {
135135
mps
136136
languageLibs
137137
junitAnt
138+
pcollections // Synced to org.iets3.core.expr.base.collections.stubs/lib
138139
}
139140

140141
dependencies {
141142
mps "com.jetbrains:mps:$mpsVersion"
142143
languageLibs "com.mbeddr:platform:$mbeddrVersionSelector"
143144
junitAnt 'org.apache.ant:ant-junit:1.10.6'
145+
pcollections 'org.pcollections:pcollections:3.1.4'
144146
}
145147

146148
repositories {
@@ -159,21 +161,40 @@ repositories {
159161
mavenCentral()
160162
}
161163

162-
task resolveMps(type: Copy) {
164+
task resolveMps(type: Sync) {
163165
dependsOn configurations.mps
164166
from {
165167
configurations.mps.resolve().collect { zipTree(it) }
166168
}
167169
into "$buildDir/mps"
168170
}
169171

170-
task resolveLanguageLibs(type: Copy) {
172+
task resolveLanguageLibs(type: Sync) {
171173
from {
172174
configurations.languageLibs.resolve().collect { zipTree(it) }
173175
}
174176
into "$buildDir/dependencies"
175177
}
176178

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+
177198
// Default arguments for ant scripts
178199
def defaultScriptArgs = [
179200
'mps.home' : resolveMps.destinationDir,
@@ -194,7 +215,7 @@ ext["itemis.mps.gradle.ant.defaultScriptArgs"] = defaultScriptArgs.collect { "-D
194215
ext["itemis.mps.gradle.ant.defaultScriptClasspath"] = defaultScriptClasspath
195216
ext["itemis.mps.gradle.ant.defaultJavaExecutable"] = new File(jdk_home, 'bin/java')
196217

197-
task buildAllScripts(type: BuildLanguages, dependsOn: [resolveMps, resolveLanguageLibs]) {
218+
task buildAllScripts(type: BuildLanguages, dependsOn: [resolveMps, resolveDependencies]) {
198219
script "$buildDir/scripts/build-allScripts.xml"
199220
}
200221

@@ -243,6 +264,27 @@ task packageDistroWithDependencies(type: Zip, dependsOn: buildDistroWithDependen
243264

244265
assemble.dependsOn packageLanguages, packageTests
245266

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+
}
287+
246288
publishing {
247289
repositories {
248290
maven {
@@ -275,46 +317,80 @@ publishing {
275317
groupId 'org.iets3'
276318
artifactId 'opensource'
277319
artifact packageLanguages
278-
pom.withXml {
279-
def dependenciesNode = asNode().appendNode('dependencies')
280-
configurations.languageLibs.resolvedConfiguration.firstLevelModuleDependencies.each{
281-
def dependencyNode = dependenciesNode.appendNode('dependency')
282-
dependencyNode.appendNode('groupId', it.moduleGroup)
283-
dependencyNode.appendNode('artifactId', it.moduleName)
284-
dependencyNode.appendNode('version', it.moduleVersion)
285-
dependencyNode.appendNode('type', it.moduleArtifacts[0].type)
286-
}
287-
configurations.mps.resolvedConfiguration.firstLevelModuleDependencies.each{
288-
def dependencyNode = dependenciesNode.appendNode('dependency')
289-
dependencyNode.appendNode('groupId', it.moduleGroup)
290-
dependencyNode.appendNode('artifactId', it.moduleName)
291-
dependencyNode.appendNode('version', it.moduleVersion)
292-
dependencyNode.appendNode('type', it.moduleArtifacts[0].type)
293-
dependencyNode.appendNode('scope', 'provided')
294-
}
295-
}
320+
321+
addDependency(pom, configurations.languageLibs)
296322
}
323+
297324
tests(MavenPublication) {
298325
groupId 'org.iets3.opensource'
299326
artifactId 'tests'
300327
artifact packageTests
301-
pom.withXml {
302-
def dependenciesNode = asNode().appendNode('dependencies')
303-
configurations.mps.resolvedConfiguration.firstLevelModuleDependencies.each{
304-
def dependencyNode = dependenciesNode.appendNode('dependency')
305-
dependencyNode.appendNode('groupId', it.moduleGroup)
306-
dependencyNode.appendNode('artifactId', it.moduleName)
307-
dependencyNode.appendNode('version', it.moduleVersion)
308-
dependencyNode.appendNode('type', it.moduleArtifacts[0].type)
309-
}
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
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
310380
}
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)
311387
}
312388
}
313389
}
314390

315391

316392
task generateLibrariesXml(type: GenerateLibrariesXml) {
317-
dependsOn resolveLanguageLibs
393+
dependsOn resolveDependencies
318394
description "Will read project libraries from projectlibraries.properties and generate libraries.xml in .mps directory. Libraries are loaded in mps during start."
319395
defaults rootProject.file('projectlibraries.properties')
320396
overrides rootProject.file('projectlibraries.overrides.properties')
@@ -323,7 +399,7 @@ task generateLibrariesXml(type: GenerateLibrariesXml) {
323399

324400
task setup {
325401
dependsOn generateLibrariesXml
326-
dependsOn resolveLanguageLibs
402+
dependsOn resolveDependencies
327403
description 'Set up MPS project libraries. Libraries are read in from projectlibraries.properties file.'
328404
}
329405

code/languages/org.iets3.opensource/languages/org.iets3.core.expr.collections/lib/pcollections/LICENSE

Lines changed: 0 additions & 19 deletions
This file was deleted.
-41.2 KB
Binary file not shown.
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
*
2+
!.gitignore

code/languages/org.iets3.opensource/solutions/org.iets3.core.expr.base.collections.stubs/lib/pcollections/LICENSE

Lines changed: 0 additions & 19 deletions
This file was deleted.
-41.2 KB
Binary file not shown.

code/languages/org.iets3.opensource/solutions/org.iets3.core.expr.base.collections.stubs/org.iets3.core.expr.base.collections.stubs.msd

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
<solution name="org.iets3.core.expr.base.collections.stubs" uuid="b76a0f63-5959-456b-993a-c796cc0d0c13" moduleVersion="0" compileInMPS="true">
33
<models>
44
<modelRoot contentPath="${module}/lib" type="java_classes">
5-
<sourceRoot location="pcollections/pcollections-28apr2016.jar" />
5+
<sourceRoot location="pcollections.jar" />
66
</modelRoot>
77
</models>
88
<facets>
@@ -11,7 +11,7 @@
1111
</facet>
1212
</facets>
1313
<stubModelEntries>
14-
<stubModelEntry path="${module}/lib/pcollections/pcollections-28apr2016.jar" />
14+
<stubModelEntry path="${module}/lib/pcollections.jar" />
1515
</stubModelEntries>
1616
<sourcePath />
1717
<dependencies>

0 commit comments

Comments
 (0)