From 0b17828e62a8f7510978d167fd7d9a62109f249d Mon Sep 17 00:00:00 2001 From: mwcw Date: Mon, 29 Apr 2024 16:06:19 +1000 Subject: [PATCH] Added OSGI version creation when building snapshots. --- build.gradle | 18 +++++++++++++++++- jmail/build.gradle | 6 ++++-- mail/build.gradle | 6 ++++-- mls/build.gradle | 7 ++++--- pg/build.gradle | 6 ++++-- pkix/build.gradle | 7 +++++-- prov/build.gradle | 5 ++++- tls/build.gradle | 6 ++++-- util/build.gradle | 7 ++++--- 9 files changed, 50 insertions(+), 18 deletions(-) diff --git a/build.gradle b/build.gradle index bf4dd6d118..83822bc79e 100644 --- a/build.gradle +++ b/build.gradle @@ -31,6 +31,22 @@ if (JavaVersion.current().isJava8Compatible()) { } } +def String deriveOSGIVersion(String prjVersion) { + if (prjVersion.contains("-SNAPSHOT")) { + // Snapshots always extend to fourth level and terminate with time in seconds since epoch. + prjVersion = prjVersion.replace("-SNAPSHOT", ""); + while (prjVersion.count(".") < 2) { + prjVersion = prjVersion + ".0"; + } + prjVersion = prjVersion + "." + System.currentTimeMillis().intdiv(1000L).intdiv(60).intdiv(60).intdiv(24); + } + return prjVersion +} + +ext { + bundle_version = deriveOSGIVersion(version.toString()); +} + // this needs to go here, otherwise it can't find config apply plugin: 'io.spring.nohttp' @@ -46,7 +62,6 @@ allprojects { mavenCentral() } - dependencies { testImplementation group: 'junit', name: 'junit', version: '4.13.2' } @@ -171,6 +186,7 @@ ext { + subprojects { apply plugin: 'eclipse' diff --git a/jmail/build.gradle b/jmail/build.gradle index 5773b1e431..27115d6d79 100644 --- a/jmail/build.gradle +++ b/jmail/build.gradle @@ -79,12 +79,14 @@ jar { into('META-INF/versions/9') { from sourceSets.java9.output } + String v = "${rootProject.extensions.ext.bundle_version}" manifest.attributes('Multi-Release': 'true') manifest.attributes('Bundle-Name': 'bcjmail') manifest.attributes('Bundle-SymbolicName': 'bcjmail') manifest.attributes('Bundle-RequiredExecutionEnvironment': 'JavaSE-1.8') - manifest.attributes('Export-Package': 'org.bouncycastle.mail.*') - manifest.attributes('Import-Package': "java.*;resolution:=optional,javax.*;resolution:=optional,jakarta.*;resolution:=optional,!org.bouncycastle.mail.*,org.bouncycastle.*;version=\"[${version},${maxVersion})\"") + manifest.attributes('Export-Package': "org.bouncycastle.mail.*;version=${v}") + manifest.attributes('Import-Package': "java.*;resolution:=optional,javax.*;resolution:=optional,jakarta.*;resolution:=optional,!org.bouncycastle.mail.*,org.bouncycastle.*;version=\"[${v},${maxVersion})\"") + manifest.attributes('Bundle-Version': "${v}") } task sourcesJar(type: Jar) { diff --git a/mail/build.gradle b/mail/build.gradle index e0f4a8099e..398c62af48 100644 --- a/mail/build.gradle +++ b/mail/build.gradle @@ -59,12 +59,14 @@ jar { into('META-INF/versions/9') { from sourceSets.java9.output } + String v = "${rootProject.extensions.ext.bundle_version}" manifest.attributes('Multi-Release': 'true') manifest.attributes('Bundle-Name': 'bcmail') manifest.attributes('Bundle-SymbolicName': 'bcmail') manifest.attributes('Bundle-RequiredExecutionEnvironment': 'JavaSE-1.8') - manifest.attributes('Export-Package': 'org.bouncycastle.mail.*') - manifest.attributes('Import-Package': "java.*;resolution:=optional,javax.*;resolution:=optional,!org.bouncycastle.mail.*,org.bouncycastle.*;version=\"[${version},${maxVersion})\"") + manifest.attributes('Export-Package': "org.bouncycastle.mail.*;version=${v}") + manifest.attributes('Import-Package': "java.*;resolution:=optional,javax.*;resolution:=optional,!org.bouncycastle.mail.*,org.bouncycastle.*;version=\"[${v},${maxVersion})\"") + manifest.attributes('Bundle-Version': "${v}") } task sourcesJar(type: Jar) { diff --git a/mls/build.gradle b/mls/build.gradle index 748d12b7e6..fa6aee3f13 100644 --- a/mls/build.gradle +++ b/mls/build.gradle @@ -155,13 +155,14 @@ jar { } String packages = 'org.bouncycastle.mls.*' - + String v = "${rootProject.extensions.ext.bundle_version}" manifest.attributes('Multi-Release': 'true') manifest.attributes('Bundle-Name': 'bcmls') manifest.attributes('Bundle-SymbolicName': 'bcmls') manifest.attributes('Bundle-RequiredExecutionEnvironment': 'JavaSE-1.8') - manifest.attributes('Export-Package': "${packages}") - manifest.attributes('Import-Package': "java.*;resolution:=optional,javax.*;resolution:=optional,!${packages},org.bouncycastle.*;version=\"[${version},${maxVersion})\"") + manifest.attributes('Export-Package': "${packages};version=${v}") + manifest.attributes('Import-Package': "java.*;resolution:=optional,javax.*;resolution:=optional,!${packages},org.bouncycastle.*;version=\"[${v},${maxVersion})\"") + manifest.attributes('Bundle-Version': "${v}") } task sourcesJar(type: Jar) { diff --git a/pg/build.gradle b/pg/build.gradle index f14cee7d4b..4bc4b238f4 100644 --- a/pg/build.gradle +++ b/pg/build.gradle @@ -67,12 +67,14 @@ jar { into('META-INF/versions/9') { from sourceSets.java9.output } + String v = "${rootProject.extensions.ext.bundle_version}" manifest.attributes('Multi-Release': 'true') manifest.attributes('Bundle-RequiredExecutionEnvironment': 'JavaSE-1.8') manifest.attributes('Bundle-Name': 'bcpg') manifest.attributes('Bundle-SymbolicName': 'bcpg') - manifest.attributes('Export-Package': 'org.bouncycastle.{apache|bcpg|gpg|openpgp}.*') - manifest.attributes('Import-Package': "java.*;resolution:=optional,javax.*;resolution:=optional,!org.bouncycastle.{apache|bcpg|gpg|openpgp|}.*,org.bouncycastle.*;version=\"[${version},${maxVersion})\"") + manifest.attributes('Export-Package': "org.bouncycastle.{apache|bcpg|gpg|openpgp}.*;version=${v}") + manifest.attributes('Import-Package': "java.*;resolution:=optional,javax.*;resolution:=optional,!org.bouncycastle.{apache|bcpg|gpg|openpgp|}.*,org.bouncycastle.*;version=\"[${v},${maxVersion})\"") + manifest.attributes('Bundle-Version': "${v}") } diff --git a/pkix/build.gradle b/pkix/build.gradle index abad0611b4..47545249ae 100644 --- a/pkix/build.gradle +++ b/pkix/build.gradle @@ -69,12 +69,15 @@ jar { String packages = 'org.bouncycastle.{cert|cmc|cms|dvcs|eac|est|its|mime|mozilla|voms|operator|pkix|openssl|pkcs|tsp}.*' + String v = "${rootProject.extensions.ext.bundle_version}" + manifest.attributes('Multi-Release': 'true') manifest.attributes('Bundle-Name': 'bcpkix') manifest.attributes('Bundle-SymbolicName': 'bcpkix') manifest.attributes('Bundle-RequiredExecutionEnvironment': 'JavaSE-1.8') - manifest.attributes('Export-Package': "${packages}") - manifest.attributes('Import-Package': "java.*;resolution:=optional,javax.*;resolution:=optional,!${packages},org.bouncycastle.*;version=\"[${version},${maxVersion})\"") + manifest.attributes('Export-Package': "${packages};version=${v}") + manifest.attributes('Import-Package': "java.*;resolution:=optional,javax.*;resolution:=optional,!${packages},org.bouncycastle.*;version=\"[${v},${maxVersion})\"") + manifest.attributes('Bundle-Version': "${v}") } diff --git a/prov/build.gradle b/prov/build.gradle index d9c620fd01..7cd1c966de 100644 --- a/prov/build.gradle +++ b/prov/build.gradle @@ -144,12 +144,15 @@ jar { into('META-INF/versions/21') { from sourceSets.java21.output } + String v = "${rootProject.extensions.ext.bundle_version}" manifest.attributes('Multi-Release': 'true') manifest.attributes('Bundle-Name': 'bcprov') manifest.attributes('Bundle-SymbolicName': 'bcprov') manifest.attributes('Bundle-RequiredExecutionEnvironment': 'JavaSE-1.8') - manifest.attributes('Export-Package': '!org.bouncycastle.internal.*,org.bouncycastle.*') + manifest.attributes('Export-Package': "!org.bouncycastle.internal.*,org.bouncycastle.*;version=${v}") manifest.attributes('Import-Package': 'java.*;resolution:=optional,javax.*;resolution:=optional') + manifest.attributes('Bundle-Version': "${v}") + } diff --git a/tls/build.gradle b/tls/build.gradle index b012f3d14d..06fb3077b2 100644 --- a/tls/build.gradle +++ b/tls/build.gradle @@ -145,12 +145,14 @@ jar { into('META-INF/versions/9') { from sourceSets.java9.output } + String v = "${rootProject.extensions.ext.bundle_version}" manifest.attributes('Multi-Release': 'true') manifest.attributes('Bundle-Name': 'bctls') manifest.attributes('Bundle-SymbolicName': 'bctls') manifest.attributes('Bundle-RequiredExecutionEnvironment': 'JavaSE-1.8') - manifest.attributes('Export-Package': 'org.bouncycastle.{jsse|tls}.*') - manifest.attributes('Import-Package': "java.*;resolution:=optional,javax.*;resolution:=optional,!org.bouncycastle.{jsse|tls}.*,org.bouncycastle.*;version=\"[${version},${maxVersion})\"") + manifest.attributes('Export-Package': "org.bouncycastle.{jsse|tls}.*;version=${v}") + manifest.attributes('Import-Package': "java.*;resolution:=optional,javax.*;resolution:=optional,!org.bouncycastle.{jsse|tls}.*,org.bouncycastle.*;version=\"[${v},${maxVersion})\"") + manifest.attributes('Bundle-Version': "${v}") } diff --git a/util/build.gradle b/util/build.gradle index 6fc6cc7792..31e96d4152 100644 --- a/util/build.gradle +++ b/util/build.gradle @@ -64,13 +64,14 @@ jar { from sourceSets.java9.output } String packages = 'org.bouncycastle.asn1.{bsi|cmc|cmp|cms|crmf|cryptlib|dvcs|eac|edec|esf|ess|est|gnu|iana|icao|isara|isismtt|iso|kisa|microsoft|misc|mozilla|nsri|ntt|oiw|rosstandart|smime|tsp}.*' - + String v = "${rootProject.extensions.ext.bundle_version}" manifest.attributes('Multi-Release': 'true') manifest.attributes('Bundle-Name': 'bcutil') manifest.attributes('Bundle-SymbolicName': 'bcutil') manifest.attributes('Bundle-RequiredExecutionEnvironment': 'JavaSE-1.8') - manifest.attributes('Export-Package': "${packages},org.bouncycastle.oer.*") - manifest.attributes('Import-Package': "java.*;resolution:=optional,javax.*;resolution:=optional,!${packages},!org.bouncycastle.oer.*,org.bouncycastle.*;version=\"[${version},${maxVersion})\"") + manifest.attributes('Export-Package': "${packages};version=${v},org.bouncycastle.oer.*;version=${v}") + manifest.attributes('Import-Package': "java.*;resolution:=optional,javax.*;resolution:=optional,!${packages},!org.bouncycastle.oer.*,org.bouncycastle.*;version=\"[${v},${maxVersion})\"") + manifest.attributes('Bundle-Version': "${v}") }