diff --git a/.gitignore b/.gitignore index f4715be5e6..cd2f5d150c 100644 --- a/.gitignore +++ b/.gitignore @@ -28,24 +28,29 @@ buildSrc/.gradle /core/lib /stf/lib /stf.test/lib +/libratory/lib /eclipse/build /core/build /server/build /intellij/build /stf/build /stf.test/build +/libratory/build /eclipse/.classpath /core/.classpath /server/.classpath /intellij/.classpath /stf/.classpath /stf.test/.classpath +/libratory/.classpath /eclipse/.project /core/.project /server/.project /intellij/.project /stf/.project /stf.test/.project +/libratory/.project + .DS_Store /.gradle/ /build/ diff --git a/build.gradle.kts b/build.gradle.kts index 32fbf342cf..1d39873880 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -182,6 +182,7 @@ tasks { register("generateLibAll") { dependsOn( "cleanGenerateLibAll", + ":saros.libratory:generateLib", ":saros.core:generateLib", ":saros.eclipse:generateLib", ":saros.stf:generateLib", @@ -190,6 +191,7 @@ tasks { register("cleanGenerateLibAll") { doLast { + project(":saros.libratory").file("lib").deleteRecursively() project(":saros.eclipse").file("lib").deleteRecursively() project(":saros.core").file("lib").deleteRecursively() project(":saros.stf").file("lib").deleteRecursively() @@ -233,11 +235,13 @@ tasks { dependsOn( ":saros.core:test", ":saros.eclipse:test", - ":saros.eclipse:jar") + ":saros.eclipse:jar", + ":saros.libratory:jar") group = "Build" description = "Builds and tests all modules required by Saros for Eclipse" + from(project(":saros.libratory").tasks.findByName("jar")) from(project(":saros.core").tasks.findByName("jar")) from(project(":saros.eclipse").tasks.findByName("jar")) into("build/distribution/eclipse") diff --git a/core/META-INF/MANIFEST.MF b/core/META-INF/MANIFEST.MF index 9cde0e8e76..3003586c3b 100644 --- a/core/META-INF/MANIFEST.MF +++ b/core/META-INF/MANIFEST.MF @@ -4,6 +4,7 @@ Bundle-Name: Saros Core Bundle-SymbolicName: saros.core Bundle-Version: 0.2.0 Bundle-RequiredExecutionEnvironment: JavaSE-1.8 +Require-Bundle: saros.libratory Export-Package: com.thoughtworks.xstream, com.thoughtworks.xstream.annotations, com.thoughtworks.xstream.converters, @@ -94,64 +95,12 @@ Export-Package: com.thoughtworks.xstream, org.apache.commons.lang3, org.apache.commons.lang3.exception, org.apache.commons.lang3.time, - org.apache.commons.lang3.tuple, - org.apache.log4j, - org.apache.log4j.config, - org.apache.log4j.helpers, - org.apache.log4j.spi, - org.apache.logging.log4j, - org.apache.logging.log4j.core, - org.apache.logging.log4j.core.appender, - org.apache.logging.log4j.core.config, - org.apache.logging.log4j.status, - org.apache.logging.log4j.core.lookup, - org.bitlet.weupnp, - org.jivesoftware.smack, - org.jivesoftware.smack.debugger, - org.jivesoftware.smack.filter, - org.jivesoftware.smack.packet, - org.jivesoftware.smack.provider, - org.jivesoftware.smack.proxy, - org.jivesoftware.smack.util, - org.jivesoftware.smackx, - org.jivesoftware.smackx.bytestreams, - org.jivesoftware.smackx.bytestreams.ibb, - org.jivesoftware.smackx.bytestreams.socks5, - org.jivesoftware.smackx.filetransfer, - org.jivesoftware.smackx.muc, - org.jivesoftware.smackx.packet, - org.jivesoftware.smackx.search, - saros.repackaged.picocontainer, - saros.repackaged.picocontainer.adapters, - saros.repackaged.picocontainer.annotations, - saros.repackaged.picocontainer.behaviors, - saros.repackaged.picocontainer.classname, - saros.repackaged.picocontainer.composers, - saros.repackaged.picocontainer.containers, - saros.repackaged.picocontainer.converters, - saros.repackaged.picocontainer.injectors, - saros.repackaged.picocontainer.lifecycle, - saros.repackaged.picocontainer.monitors, - saros.repackaged.picocontainer.parameters, - saros.repackaged.picocontainer.paranamer, - saros.repackaged.picocontainer.references, - saros.repackaged.picocontainer.security, - saros.repackaged.picocontainer.visitors, - org.xmlpull.mxp1, - org.xmlpull.v1 + org.apache.commons.lang3.tuple Bundle-ClassPath: ., - lib/smack-3.4.1.jar, - lib/log4j-core-2.13.3.jar, - lib/log4j-api-2.13.3.jar, - lib/log4j-1.2-api-2.13.3.jar, - lib/smackx-3.4.1.jar, lib/commons-codec-1.3.jar, lib/commons-io-2.0.1.jar, lib/commons-lang3-3.8.1.jar, lib/xstream-1.4.10.jar, - lib/xpp3-1.1.4c.jar, - lib/picocontainer-2.11.2-patched_relocated.jar, - lib/weupnp.jar, lib/libidn-1.15.jar, log4j2.component.properties Bundle-Vendor: Saros Project diff --git a/core/build.gradle.kts b/core/build.gradle.kts index 8821e37e7e..54a0d732b3 100644 --- a/core/build.gradle.kts +++ b/core/build.gradle.kts @@ -27,37 +27,27 @@ configurations { sarosEclipse { manifest = file("META-INF/MANIFEST.MF") + excludeManifestDependencies = listOf("saros.libratory") isCreateBundleJar = true isAddPdeNature = true pluginVersionQualifier = versionQualifier } dependencies { + implementation(project(":saros.libratory")) + releaseDep("commons-codec:commons-codec:1.3") releaseDep("commons-io:commons-io:2.0.1") releaseDep("org.apache.commons:commons-lang3:3.8.1") releaseDep("javax.jmdns:jmdns:3.4.1") - releaseDep("xpp3:xpp3:1.1.4c") releaseDep("com.thoughtworks.xstream:xstream:1.4.10") releaseDep("org.gnu.inet:libidn:1.15") - - releaseDep(log4j2ApiVersion) - releaseDep(log4j2CoreVersion) - releaseDep(log4j2BridgeVersion) - - // TODO: use real release. This version is a customized SNAPSHOT - releaseDep(files("libs/weupnp.jar")) - // Workaround until we updated to a newer smack version - releaseDep(files("libs/smack-3.4.1.jar")) - releaseDep(files("libs/smackx-3.4.1.jar")) - // Workaround until we can publish and use (without a user token) the repackaged jar in GitHub Packages - releaseDep(rootProject.files("libs/picocontainer-2.11.2-patched_relocated.jar")) } sourceSets { main { - java.srcDirs("src", "patches") + java.srcDirs("src") resources.srcDirs("resources") } test { diff --git a/core/build.properties b/core/build.properties index dee832fb91..825b1e6c49 100644 --- a/core/build.properties +++ b/core/build.properties @@ -1,5 +1,4 @@ -source.. = src/,\ - patches/ +source.. = src/ output.. = bin/ bin.includes = META-INF/,\ .,\ diff --git a/eclipse/META-INF/MANIFEST.MF b/eclipse/META-INF/MANIFEST.MF index 964becbc8e..ed88ca96dd 100644 --- a/eclipse/META-INF/MANIFEST.MF +++ b/eclipse/META-INF/MANIFEST.MF @@ -20,7 +20,8 @@ Require-Bundle: org.eclipse.ui, org.eclipse.equinox.security, org.junit;resolution:=optional, org.eclipse.jdt.launching;resolution:=optional, - saros.core + saros.core, + saros.libratory Bundle-ActivationPolicy: lazy Export-Package: saros; uses:="org.eclipse.core.runtime, diff --git a/eclipse/build.gradle.kts b/eclipse/build.gradle.kts index 2ddf6d5b04..80a4c08db3 100644 --- a/eclipse/build.gradle.kts +++ b/eclipse/build.gradle.kts @@ -19,7 +19,7 @@ configurations { sarosEclipse { manifest = file("META-INF/MANIFEST.MF") - excludeManifestDependencies = listOf("saros.core", "org.junit", "org.eclipse.gef") + excludeManifestDependencies = listOf("saros.libratory", "saros.core", "org.junit", "org.eclipse.gef") isAddPdeNature = true isCreateBundleJar = true isAddDependencies = true @@ -39,12 +39,14 @@ sourceSets { } dependencies { + implementation(project(":saros.libratory")) implementation(project(":saros.core")) // This is a workaround for https://github.com/saros-project/saros/issues/1086 implementation("org.eclipse.platform:org.eclipse.urischeme:1.1.0") // This is a workaround for https://github.com/saros-project/saros/issues/1114 implementation("org.eclipse.platform:org.eclipse.ui.ide:3.17.200") implementation("org.eclipse.platform:org.eclipse.ui.workbench:3.120.0") + testImplementation(project(path = ":saros.libratory", configuration = "testing")) testImplementation(project(path = ":saros.core", configuration = "testing")) } @@ -113,7 +115,7 @@ tasks { * |- site.xml */ val updateSitePreparation by registering(Copy::class) { - dependsOn(":saros.core:jar", ":saros.eclipse:jar") + dependsOn(":saros.core:jar", ":saros.libratory:jar", ":saros.eclipse:jar") into(updateSiteDirPath) into("features") { @@ -122,6 +124,7 @@ tasks { into("plugins") { from(project.tasks.findByName("jar")) from(project(":saros.core").tasks.findByName("jar")) + from(project(":saros.libratory").tasks.findByName("jar")) } from("update/site.xml") } diff --git a/eclipse/feature/feature.xml b/eclipse/feature/feature.xml index 9f221a3de5..2d96426cb4 100644 --- a/eclipse/feature/feature.xml +++ b/eclipse/feature/feature.xml @@ -380,4 +380,11 @@ Public License instead of this License. version="0.2.0" unpack="false"/> + + diff --git a/intellij/build.gradle.kts b/intellij/build.gradle.kts index dba4be097b..51a963d3f2 100644 --- a/intellij/build.gradle.kts +++ b/intellij/build.gradle.kts @@ -14,6 +14,7 @@ configurations { } dependencies { + implementation(project(":saros.libratory", configuration = "plain")) compile(project(path = ":saros.core", configuration = "plain")) compile("org.easytesting:fest-assert:1.2") @@ -21,6 +22,7 @@ dependencies { compile("org.easytesting:fest-swing:1.2.1") compile("org.easytesting:fest-util:1.1.3") + testImplementation(project(path = ":saros.libratory", configuration = "testing")) testCompile(project(path = ":saros.core", configuration = "testing")) } diff --git a/libratory/META-INF/MANIFEST.MF b/libratory/META-INF/MANIFEST.MF new file mode 100644 index 0000000000..2bf294d8ec --- /dev/null +++ b/libratory/META-INF/MANIFEST.MF @@ -0,0 +1,64 @@ +Manifest-Version: 1.0 +Bundle-ManifestVersion: 2 +Bundle-Name: Saros Libratory +Bundle-SymbolicName: saros.libratory +Bundle-Version: 1.0.0 +Automatic-Module-Name: libratory +Bundle-RequiredExecutionEnvironment: JavaSE-1.8 +Export-Package: org.apache.log4j, + org.apache.log4j.config, + org.apache.log4j.helpers, + org.apache.log4j.spi, + org.apache.logging.log4j, + org.apache.logging.log4j.core, + org.apache.logging.log4j.core.appender, + org.apache.logging.log4j.core.config, + org.apache.logging.log4j.status, + org.apache.logging.log4j.core.lookup, + org.bitlet.weupnp, + org.jivesoftware.smack, + org.jivesoftware.smack.debugger, + org.jivesoftware.smack.filter, + org.jivesoftware.smack.packet, + org.jivesoftware.smack.provider, + org.jivesoftware.smack.proxy, + org.jivesoftware.smack.util, + org.jivesoftware.smackx, + org.jivesoftware.smackx.bytestreams, + org.jivesoftware.smackx.bytestreams.ibb, + org.jivesoftware.smackx.bytestreams.socks5, + org.jivesoftware.smackx.entitycaps, + org.jivesoftware.smackx.entitycaps.packet, + org.jivesoftware.smackx.filetransfer, + org.jivesoftware.smackx.muc, + org.jivesoftware.smackx.packet, + org.jivesoftware.smackx.search, + saros.repackaged.picocontainer, + saros.repackaged.picocontainer.adapters, + saros.repackaged.picocontainer.annotations, + saros.repackaged.picocontainer.behaviors, + saros.repackaged.picocontainer.classname, + saros.repackaged.picocontainer.composers, + saros.repackaged.picocontainer.containers, + saros.repackaged.picocontainer.converters, + saros.repackaged.picocontainer.injectors, + saros.repackaged.picocontainer.lifecycle, + saros.repackaged.picocontainer.monitors, + saros.repackaged.picocontainer.parameters, + saros.repackaged.picocontainer.paranamer, + saros.repackaged.picocontainer.references, + saros.repackaged.picocontainer.security, + saros.repackaged.picocontainer.visitors, + org.xmlpull.mxp1, + org.xmlpull.v1 +Bundle-ClassPath: ., + lib/smack-3.4.1.jar, + lib/log4j-core-2.13.3.jar, + lib/log4j-api-2.13.3.jar, + lib/log4j-1.2-api-2.13.3.jar, + lib/smackx-3.4.1.jar, + lib/xpp3-1.1.4c.jar, + lib/picocontainer-2.11.2-patched_relocated.jar, + lib/weupnp.jar +Bundle-Vendor: Saros Project + diff --git a/libratory/build.gradle.kts b/libratory/build.gradle.kts new file mode 100644 index 0000000000..4a639548e4 --- /dev/null +++ b/libratory/build.gradle.kts @@ -0,0 +1,81 @@ +plugins { + id("saros.gradle.eclipse.plugin") +} + +val versionQualifier = ext.get("versionQualifier") as String + +val log4j2ApiVersion = ext.get("log4j2ApiVersion") as String +val log4j2CoreVersion = ext.get("log4j2CoreVersion") as String +val log4j2BridgeVersion = ext.get("log4j2BridgeVersion") as String + +configurations { + // Defined in root build.gradle + val testConfig by getting {} + val releaseDep by getting {} + + // Default configuration + val compile by getting { + extendsFrom(releaseDep) + } + val testCompile by getting { + extendsFrom(testConfig) + } + val plain by creating { + extendsFrom(compile) + } +} + +sarosEclipse { + manifest = file("META-INF/MANIFEST.MF") + isCreateBundleJar = true + isAddPdeNature = true + pluginVersionQualifier = versionQualifier +} + +dependencies { + releaseDep(log4j2ApiVersion) + releaseDep(log4j2CoreVersion) + releaseDep(log4j2BridgeVersion) + + // TODO: use real release. This version is a customized SNAPSHOT + releaseDep(files("libs/weupnp.jar")) + // Workaround until we updated to a newer smack version + releaseDep(files("libs/smack-3.4.1.jar")) + releaseDep(files("libs/smackx-3.4.1.jar")) + releaseDep("xpp3:xpp3:1.1.4c") + // Workaround until we can publish and use (without a user token) the repackaged jar in GitHub Packages + releaseDep(rootProject.files("libs/picocontainer-2.11.2-patched_relocated.jar")) +} + +sourceSets { + main { + java.srcDirs("src", "patches") + resources.srcDirs("resources") + } + test { + java.srcDirs("test/junit") + } +} + +tasks { + + val testJar by registering(Jar::class) { + classifier = "tests" + from(sourceSets["test"].output) + } + + // Jar containing only the core code (the default jar is an osgi bundle + // containing a lib dir with all dependency jars) + val plainJar by registering(Jar::class) { + manifest { + from("META-INF/MANIFEST.MF") + } + from(sourceSets["main"].output) + classifier = "plain" + } + + artifacts { + add("testing", testJar) + add("plain", plainJar) + } +} diff --git a/libratory/build.properties b/libratory/build.properties new file mode 100644 index 0000000000..a7ca936fee --- /dev/null +++ b/libratory/build.properties @@ -0,0 +1,6 @@ +source.. = src/,\ + patches/ +output.. = bin/ +bin.includes = META-INF/,\ + .,\ + lib/,\ diff --git a/core/libs/smack-3.4.1.jar b/libratory/libs/smack-3.4.1.jar similarity index 100% rename from core/libs/smack-3.4.1.jar rename to libratory/libs/smack-3.4.1.jar diff --git a/core/libs/smackx-3.4.1.jar b/libratory/libs/smackx-3.4.1.jar similarity index 100% rename from core/libs/smackx-3.4.1.jar rename to libratory/libs/smackx-3.4.1.jar diff --git a/core/libs/weupnp.jar b/libratory/libs/weupnp.jar similarity index 100% rename from core/libs/weupnp.jar rename to libratory/libs/weupnp.jar diff --git a/core/patches/org/jivesoftware/smack/Roster.java b/libratory/patches/org/jivesoftware/smack/Roster.java similarity index 100% rename from core/patches/org/jivesoftware/smack/Roster.java rename to libratory/patches/org/jivesoftware/smack/Roster.java diff --git a/core/patches/org/jivesoftware/smack/RosterEntry.java b/libratory/patches/org/jivesoftware/smack/RosterEntry.java similarity index 100% rename from core/patches/org/jivesoftware/smack/RosterEntry.java rename to libratory/patches/org/jivesoftware/smack/RosterEntry.java diff --git a/core/patches/org/jivesoftware/smack/sasl/SASLGSSAPIMechanism.java b/libratory/patches/org/jivesoftware/smack/sasl/SASLGSSAPIMechanism.java similarity index 100% rename from core/patches/org/jivesoftware/smack/sasl/SASLGSSAPIMechanism.java rename to libratory/patches/org/jivesoftware/smack/sasl/SASLGSSAPIMechanism.java diff --git a/core/patches/org/jivesoftware/smack/sasl/SASLMechanism.java b/libratory/patches/org/jivesoftware/smack/sasl/SASLMechanism.java similarity index 100% rename from core/patches/org/jivesoftware/smack/sasl/SASLMechanism.java rename to libratory/patches/org/jivesoftware/smack/sasl/SASLMechanism.java diff --git a/core/patches/org/jivesoftware/smack/sasl/smack-357.patch b/libratory/patches/org/jivesoftware/smack/sasl/smack-357.patch similarity index 100% rename from core/patches/org/jivesoftware/smack/sasl/smack-357.patch rename to libratory/patches/org/jivesoftware/smack/sasl/smack-357.patch diff --git a/core/patches/org/jivesoftware/smack/smack-312.patch b/libratory/patches/org/jivesoftware/smack/smack-312.patch similarity index 100% rename from core/patches/org/jivesoftware/smack/smack-312.patch rename to libratory/patches/org/jivesoftware/smack/smack-312.patch diff --git a/core/patches/smack_patches_readme.txt b/libratory/patches/smack_patches_readme.txt similarity index 100% rename from core/patches/smack_patches_readme.txt rename to libratory/patches/smack_patches_readme.txt diff --git a/server/build.gradle.kts b/server/build.gradle.kts index 34033242a7..9b4f7cdfc7 100644 --- a/server/build.gradle.kts +++ b/server/build.gradle.kts @@ -8,6 +8,7 @@ configurations { } dependencies { + implementation(project(":saros.libratory")) compile(project(":saros.core")) compile("org.apache.commons:commons-collections4:4.2") } diff --git a/settings.gradle.kts b/settings.gradle.kts index 7b9da6e571..e0a7a2d19a 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -7,7 +7,7 @@ plugins { * because the osgi bundle names had to match the project names. */ val prefix = "saros." -listOf("core", "eclipse", "intellij", "server", "lsp", "stf", "stf.test").forEach { dir -> +listOf("core", "eclipse", "libratory", "intellij", "server", "lsp", "stf", "stf.test").forEach { dir -> val projectName = prefix + dir include(projectName) project(":$projectName").projectDir = file(dir) diff --git a/stf.test/META-INF/MANIFEST.MF b/stf.test/META-INF/MANIFEST.MF index d74085838f..fd9a0eea88 100644 --- a/stf.test/META-INF/MANIFEST.MF +++ b/stf.test/META-INF/MANIFEST.MF @@ -7,6 +7,7 @@ Bundle-Vendor: Saros Project Bundle-RequiredExecutionEnvironment: JavaSE-1.8 Require-Bundle: saros.eclipse, saros.core, + saros.libratory, org.eclipse.core.runtime, org.eclipse.jface, org.junit diff --git a/stf.test/build.gradle.kts b/stf.test/build.gradle.kts index 17e6e35a08..a66806b9b7 100644 --- a/stf.test/build.gradle.kts +++ b/stf.test/build.gradle.kts @@ -7,7 +7,7 @@ val eclipseVersionNr = ext.get("eclipseVersion") as String sarosEclipse { manifest = file("META-INF/MANIFEST.MF") - excludeManifestDependencies = listOf("org.junit", "saros.eclipse", "saros.core") + excludeManifestDependencies = listOf("org.junit", "saros.eclipse", "saros.core", "saros.libratory") isAddDependencies = true eclipseVersion = eclipseVersionNr } diff --git a/stf/META-INF/MANIFEST.MF b/stf/META-INF/MANIFEST.MF index df6cff9b3f..f53c57dd68 100644 --- a/stf/META-INF/MANIFEST.MF +++ b/stf/META-INF/MANIFEST.MF @@ -16,6 +16,7 @@ Require-Bundle: org.eclipse.ui, org.eclipse.jdt.launching;resolution:=optional, saros.core, saros.eclipse, + saros.libratory, org.junit Bundle-ClassPath: ., lib/org.eclipse.swtbot.ant.junit_2.7.0.201806111355.jar, diff --git a/stf/build.gradle.kts b/stf/build.gradle.kts index efc7af91a5..565f48b842 100644 --- a/stf/build.gradle.kts +++ b/stf/build.gradle.kts @@ -8,7 +8,7 @@ val junitVersion = ext.get("junitVersion") sarosEclipse { manifest = file("META-INF/MANIFEST.MF") - excludeManifestDependencies = listOf("saros.core", "saros.eclipse", "org.junit", "org.eclipse.gef") + excludeManifestDependencies = listOf("saros.core", "saros.eclipse", "org.junit", "org.eclipse.gef", "saros.libratory") isCreateBundleJar = true isAddDependencies = true pluginVersionQualifier = versionQualifier @@ -26,6 +26,7 @@ dependencies { if (junitVersion != null) { compile(junitVersion) } + implementation(project(":saros.libratory")) compile(project(":saros.core")) compile(project(":saros.eclipse")) // This is a workaround for https://github.com/saros-project/saros/issues/1086