Skip to content

Commit 10f6082

Browse files
authored
Merge pull request #1246 from IETS3/feature/package_sbom
Package SBOM in the language library distribution
2 parents 45d30a9 + 415d6b9 commit 10f6082

File tree

16 files changed

+334
-243
lines changed

16 files changed

+334
-243
lines changed

build.gradle

Lines changed: 74 additions & 51 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import de.itemis.mps.gradle.*
22
import de.itemis.mps.gradle.tasks.MpsMigrate
33
import de.itemis.mps.gradle.tasks.Remigrate
44
import de.itemis.mps.gradle.downloadJBR.DownloadJbrForPlatform
5+
import groovy.transform.TupleConstructor
56
import groovy.xml.XmlSlurper
67
import java.time.LocalDate
78
import java.time.format.DateTimeFormatter
@@ -20,7 +21,7 @@ plugins {
2021
id 'de.itemis.mps.gradle.common' version '1.29.+'
2122
id 'de.itemis.mps.gradle.launcher' version '2.5.2.+'
2223
id "com.github.breadmoirai.github-release" version "2.4.1"
23-
id "org.cyclonedx.bom" version "1.8.2"
24+
id "org.cyclonedx.bom" version "2.2.0"
2425
}
2526

2627
ext.dependencyRepositories = [
@@ -115,13 +116,16 @@ ext.snapshotRepository = 'https://artifacts.itemis.cloud/repository/maven-mps-sn
115116
ext.publishingRepository = version.toString().endsWith("-SNAPSHOT") ? snapshotRepository : releaseRepository
116117

117118

119+
def buildDirPath(pathUnderBuildDir) {
120+
project.layout.buildDirectory.dir(pathUnderBuildDir).get().asFile
121+
}
118122

119123
// 'artifacts' is used in the generated ant scripts as build output directory
120-
ext.artifactsDir = new File(buildDir, 'artifacts')
121-
124+
ext.artifactsDir = buildDirPath('artifacts')
125+
ext.reportsDir = buildDirPath('reports')
122126

123127
wrapper {
124-
gradleVersion '8.0.2'
128+
gradleVersion '8.13'
125129
distributionType Wrapper.DistributionType.ALL
126130
}
127131

@@ -130,8 +134,6 @@ configurations {
130134
rerunMigrationsBackend
131135
languageLibs
132136
junitAnt
133-
pcollections // Synced to org.iets3.core.expr.base.collections.stubs/lib
134-
bigMath // Synced to org.iets3.core.expr.math.interpreter/lib
135137
}
136138

137139
dependencies {
@@ -140,8 +142,62 @@ dependencies {
140142
languageLibs "org.mpsqa:all-in-one:$mpsQAVersion"
141143
languageLibs "com.mbeddr:platform:$mbeddrVersionSelector"
142144
junitAnt 'org.apache.ant:ant-junit:1.10.6'
143-
pcollections 'org.pcollections:pcollections:4.0.1'
144-
bigMath 'ch.obermuhlner:big-math:2.3.2'
145+
}
146+
147+
@TupleConstructor
148+
class BundledDep {
149+
String name
150+
List<String> entries
151+
String libSolutionName
152+
Closure configClosure = { transitive = false }
153+
// in case a legacy dependency has a broken artifact name, e.g. w/o extension
154+
String jarNameOverride
155+
String getConfigName() {
156+
name + '_bundled'
157+
}
158+
String getResolveTaskName() {
159+
'resolve_' + this.configName
160+
}
161+
BundledDep overrideArtifactName(String artifactName) {
162+
this.jarNameOverride = artifactName
163+
this
164+
}
165+
}
166+
167+
def bundledDeps = [
168+
new BundledDep('pcollections', ['org.pcollections:pcollections:4.0.1'], 'org.iets3.core.expr.base.collections.stubs'),
169+
new BundledDep('bigMath', ['ch.obermuhlner:big-math:2.3.2'], 'org.iets3.core.expr.math.interpreter'),
170+
new BundledDep('functionalJava', ['org.functionaljava:functionaljava:4.8.1'], 'org.iets3.core.expr.genjava.functionalJava'),
171+
new BundledDep('cpsSuite', ['io.takari.junit:takari-cpsuite:1.2.7'], 'org.iets3.opensource.build.gentests.rt').overrideArtifactName('takari-cpsuite.jar')
172+
]
173+
174+
bundledDeps.each { dep ->
175+
configurations {
176+
create(dep.configName)
177+
}
178+
dependencies {
179+
dep.entries.each {entry ->
180+
add(dep.configName, entry, dep.configClosure)
181+
}
182+
}
183+
tasks.create(dep.resolveTaskName, Sync.class) {
184+
from configurations.getByName(dep.configName)
185+
into file("code/languages/org.iets3.opensource/solutions/${dep.libSolutionName}/lib")
186+
187+
// Strip version numbers from file names
188+
rename { filename ->
189+
def ra = configurations.getByName(dep.configName).resolvedConfiguration.resolvedArtifacts.find { ResolvedArtifact ra -> ra.file.name == filename }
190+
String finalName
191+
if (dep.jarNameOverride != null) {
192+
finalName = dep.jarNameOverride
193+
} else if (ra.classifier != null) {
194+
finalName = "${ra.name}-${ra.classifier}.${ra.extension}"
195+
} else {
196+
finalName = "${ra.name}.${ra.extension}"
197+
}
198+
return finalName
199+
}
200+
}
145201
}
146202

147203

@@ -160,41 +216,8 @@ task resolveLanguageLibs(type: Sync) {
160216
into "$buildDir/dependencies"
161217
}
162218

163-
task resolvePcollections(type: Sync) {
164-
from configurations.pcollections
165-
into file('code/languages/org.iets3.opensource/solutions/org.iets3.core.expr.base.collections.stubs/lib')
166-
167-
// Strip version numbers from file names
168-
rename { filename ->
169-
def ra = configurations.pcollections.resolvedConfiguration.resolvedArtifacts.find { ResolvedArtifact ra -> ra.file.name == filename }
170-
String finalName
171-
if (ra.classifier != null) {
172-
finalName = "${ra.name}-${ra.classifier}.${ra.extension}"
173-
} else {
174-
finalName = "${ra.name}.${ra.extension}"
175-
}
176-
return finalName
177-
}
178-
}
179-
180-
task resolveBigMath(type: Sync) {
181-
from configurations.bigMath
182-
into file('code/languages/org.iets3.opensource/solutions/org.iets3.core.expr.math.interpreter/lib')
183-
184-
// Strip version numbers from file names
185-
rename { filename ->
186-
def ra = configurations.bigMath.resolvedConfiguration.resolvedArtifacts.find { ResolvedArtifact ra -> ra.file.name == filename }
187-
String finalName
188-
if (ra.classifier != null) {
189-
finalName = "${ra.name}-${ra.classifier}.${ra.extension}"
190-
} else {
191-
finalName = "${ra.name}.${ra.extension}"
192-
}
193-
return finalName
194-
}
195-
}
196-
197-
task resolveDependencies(dependsOn: ['downloadJbr', resolveMps, resolveLanguageLibs, resolvePcollections, resolveBigMath])
219+
task resolveDependencies(dependsOn: ['downloadJbr', resolveMps, resolveLanguageLibs])
220+
resolveDependencies.dependsOn << bundledDeps.collect {it.resolveTaskName }
198221

199222
ext.mpsHomeDir = resolveMps.destinationDir
200223

@@ -344,10 +367,14 @@ checkmodels {
344367
dependsOn(resolveMps)
345368
}
346369

347-
task packageLanguages(type: Zip, dependsOn: buildLanguages) {
370+
task packageLanguages(type: Zip, dependsOn: [buildLanguages, cyclonedxBom]) {
348371
archiveBaseName = 'org.iets3.opensource'
349-
from artifactsDir
350-
include 'org.iets3.opensource/**'
372+
from(artifactsDir) {
373+
include 'org.iets3.opensource/**'
374+
}
375+
from(reportsDir) {
376+
include 'sbom.json'
377+
}
351378
}
352379

353380
task packageTests(type: Zip, dependsOn: buildAndRunTests) {
@@ -565,15 +592,11 @@ tasks.named('githubRelease').configure {
565592

566593
cyclonedxBom {
567594
// SBOM destination directory
568-
destination = file("build/reports")
595+
destination = reportsDir
569596
// The file name for the generated SBOMs (before the file format suffix)
570597
outputName = "sbom"
571598
// The file format generated, can be xml, json or all for generating both
572599
outputFormat = "json"
573600
// Don't include license texts in generated SBOMs
574601
includeLicenseText = false
575602
}
576-
577-
assemble {
578-
dependsOn('cyclonedxBom')
579-
}

build/scripts/build-allScripts.xml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -283,7 +283,7 @@
283283
<classpath>
284284
<fileset file="${artifacts.mps}/lib/mps-references.jar" />
285285
<pathelement path="${build.tmp}/java/out/org.iets3.opensource.build.gentests.rt" />
286-
<fileset file="${iets3.lang.opensource}/solutions/org.iets3.opensource.build.gentests.rt/lib/takari-cpsuite-1.2.7.jar" />
286+
<fileset file="${iets3.lang.opensource}/solutions/org.iets3.opensource.build.gentests.rt/lib/takari-cpsuite.jar" />
287287
<fileset file="${artifacts.com.mbeddr.platform}/com.mbeddr.platform.jar" />
288288
<fileset file="${artifacts.com.mbeddr.platform}/de.itemis.mps.extensions.build/languages/de.itemis.mps.extensions.build/de.itemis.mps.extensions.build.jar" />
289289
</classpath>
@@ -440,7 +440,7 @@
440440
</src>
441441
<classpath>
442442
<fileset file="${artifacts.mps}/lib/mps-references.jar" />
443-
<fileset file="${iets3.lang.opensource}/solutions/org.iets3.opensource.build.gentests.rt/lib/takari-cpsuite-1.2.7.jar" />
443+
<fileset file="${iets3.lang.opensource}/solutions/org.iets3.opensource.build.gentests.rt/lib/takari-cpsuite.jar" />
444444
<fileset file="${artifacts.mps}/lib/junit4.jar" />
445445
</classpath>
446446
</javac>
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
*
2+
!.gitignore
-729 KB
Binary file not shown.

code/languages/org.iets3.opensource/solutions/org.iets3.core.expr.genjava.functionalJava/org.iets3.core.expr.genjava.functionalJava.msd

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
<?xml version="1.0" encoding="UTF-8"?>
22
<solution name="org.iets3.core.expr.genjava.functionalJava" uuid="708a03ad-8699-43c9-821a-6cd00b68e9f8" moduleVersion="0">
33
<models>
4-
<modelRoot contentPath="${module}" type="java_classes">
5-
<sourceRoot location="lib/functionaljava_1.8-4.8-SNAPSHOT.jar" />
4+
<modelRoot type="java_classes" contentPath="${module}/lib">
5+
<sourceRoot location="functionaljava.jar" />
66
</modelRoot>
77
</models>
88
<facets>
9-
<facet type="java" compile="mps" classes="mps" ext="no">
9+
<facet type="java" compile="ext" classes="mps" ext="no">
1010
<classes generated="true" path="${module}/classes_gen" />
11-
<library location="${module}/lib/functionaljava_1.8-4.8-SNAPSHOT.jar" />
11+
<library location="${module}/lib/functionaljava.jar" />
1212
</facet>
1313
</facets>
1414
<dependencies>
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,2 @@
1-
*
1+
*
22
!.gitignore
-56.8 KB
Binary file not shown.

code/languages/org.iets3.opensource/solutions/org.iets3.opensource.allScripts.build/models/org/iets3/opensource/allScripts/build/build.mps

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,7 @@
8989
</concept>
9090
<concept id="868032131020265945" name="jetbrains.mps.build.mps.structure.BuildMPSPlugin" flags="ng" index="3b7kt6" />
9191
<concept id="5253498789149381388" name="jetbrains.mps.build.mps.structure.BuildMps_Module" flags="ng" index="3bQrTs">
92+
<property id="1500819558096356884" name="doNotCompile" index="2GAjPV" />
9293
<child id="5253498789149547825" name="sources" index="3bR31x" />
9394
<child id="5253498789149547704" name="dependencies" index="3bR37C" />
9495
</concept>
@@ -403,6 +404,7 @@
403404
<property role="BnDLt" value="true" />
404405
<property role="TrG5h" value="org.iets3.opensource.build.gentests.rt" />
405406
<property role="3LESm3" value="e70ad515-8ff0-4a50-8cb4-41406f14e348" />
407+
<property role="2GAjPV" value="true" />
406408
<node concept="398BVA" id="3ZBI8Awh4x5" role="3LF7KH">
407409
<ref role="398BVh" node="5wLtKNeTaqD" resolve="iets3.lang.opensource" />
408410
<node concept="2Ry0Ak" id="3ZBI8Awh4x6" role="iGT6I">
@@ -463,18 +465,18 @@
463465
</node>
464466
</node>
465467
</node>
466-
<node concept="1SiIV0" id="67tIbohRuGz" role="3bR37C">
467-
<node concept="1BurEX" id="67tIbohRuG$" role="1SiIV1">
468-
<node concept="398BVA" id="67tIbohRuGm" role="1BurEY">
468+
<node concept="1SiIV0" id="5C16jUTWDYH" role="3bR37C">
469+
<node concept="1BurEX" id="5C16jUTWDYI" role="1SiIV1">
470+
<node concept="398BVA" id="5C16jUTWDYw" role="1BurEY">
469471
<ref role="398BVh" node="5wLtKNeTaqD" resolve="iets3.lang.opensource" />
470-
<node concept="2Ry0Ak" id="67tIbohRuGn" role="iGT6I">
472+
<node concept="2Ry0Ak" id="5C16jUTWDYx" role="iGT6I">
471473
<property role="2Ry0Am" value="solutions" />
472-
<node concept="2Ry0Ak" id="67tIbohRuGo" role="2Ry0An">
474+
<node concept="2Ry0Ak" id="5C16jUTWDYy" role="2Ry0An">
473475
<property role="2Ry0Am" value="org.iets3.opensource.build.gentests.rt" />
474-
<node concept="2Ry0Ak" id="67tIbohRuGp" role="2Ry0An">
476+
<node concept="2Ry0Ak" id="5C16jUTWDYz" role="2Ry0An">
475477
<property role="2Ry0Am" value="lib" />
476-
<node concept="2Ry0Ak" id="67tIbohRuGq" role="2Ry0An">
477-
<property role="2Ry0Am" value="takari-cpsuite-1.2.7.jar" />
478+
<node concept="2Ry0Ak" id="5C16jUTWDY$" role="2Ry0An">
479+
<property role="2Ry0Am" value="takari-cpsuite.jar" />
478480
</node>
479481
</node>
480482
</node>
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
*
2+
!.gitignore
-22 KB
Binary file not shown.

0 commit comments

Comments
 (0)