Integrate Third Party repackaging from Argeo SLC
authorMathieu Baudier <mbaudier@argeo.org>
Sun, 16 Oct 2022 07:16:53 +0000 (09:16 +0200)
committerMathieu Baudier <mbaudier@argeo.org>
Sun, 16 Oct 2022 07:16:53 +0000 (09:16 +0200)
226 files changed:
.gitignore
.gitmodules
Makefile [new file with mode: 0644]
branch.mk [new file with mode: 0644]
configure [new file with mode: 0755]
rebuild/Makefile [new file with mode: 0644]
rebuild/org.argeo.tp/Makefile [new file with mode: 0644]
rebuild/org.argeo.tp/com.sun.mail.mbox/.classpath [new file with mode: 0644]
rebuild/org.argeo.tp/com.sun.mail.mbox/.gitignore [new file with mode: 0644]
rebuild/org.argeo.tp/com.sun.mail.mbox/.project [new file with mode: 0644]
rebuild/org.argeo.tp/com.sun.mail.mbox/META-INF/.gitignore [new file with mode: 0644]
rebuild/org.argeo.tp/com.sun.mail.mbox/bnd.bnd [new file with mode: 0644]
rebuild/org.argeo.tp/com.sun.mail.mbox/build.properties [new file with mode: 0644]
rebuild/org.argeo.tp/org.argeo.ext.slf4j/.classpath [new file with mode: 0644]
rebuild/org.argeo.tp/org.argeo.ext.slf4j/.project [new file with mode: 0644]
rebuild/org.argeo.tp/org.argeo.ext.slf4j/META-INF/.gitignore [new file with mode: 0644]
rebuild/org.argeo.tp/org.argeo.ext.slf4j/bnd.bnd [new file with mode: 0644]
rebuild/org.argeo.tp/org.argeo.ext.slf4j/build.properties [new file with mode: 0644]
rebuild/org.argeo.tp/org.argeo.ext.slf4j/src/org/slf4j/impl/ArgeoLogger.java [new file with mode: 0644]
rebuild/org.argeo.tp/org.argeo.ext.slf4j/src/org/slf4j/impl/StaticLoggerBinder.java [new file with mode: 0644]
rebuild/org.argeo.tp/org.argeo.ext.slf4j/src/org/slf4j/impl/SystemLoggingAdapter.java [new file with mode: 0644]
repackage/Make.java [new file with mode: 0644]
repackage/Makefile [new file with mode: 0644]
repackage/lib/linux/aarch64/swt/rcp/org.argeo.tp.swt/eclipse-rcp/common.bnd [new file with mode: 0644]
repackage/lib/linux/aarch64/swt/rcp/org.argeo.tp.swt/eclipse-rcp/includes.properties [new file with mode: 0644]
repackage/lib/linux/x86_64/swt/rcp/org.argeo.tp.swt/eclipse-rcp/common.bnd [new file with mode: 0644]
repackage/lib/linux/x86_64/swt/rcp/org.argeo.tp.swt/eclipse-rcp/includes.properties [new file with mode: 0644]
repackage/lib/macosx/x86_64/swt/rcp/org.argeo.tp.swt/eclipse-rcp/common.bnd [new file with mode: 0644]
repackage/lib/macosx/x86_64/swt/rcp/org.argeo.tp.swt/eclipse-rcp/includes.properties [new file with mode: 0644]
repackage/lib/win32/x86_64/swt/rcp/org.argeo.tp.swt/eclipse-rcp/common.bnd [new file with mode: 0644]
repackage/lib/win32/x86_64/swt/rcp/org.argeo.tp.swt/eclipse-rcp/includes.properties [new file with mode: 0644]
repackage/org.argeo.tp.apache/apache-sshd/common.bnd [new file with mode: 0644]
repackage/org.argeo.tp.apache/apache-sshd/merge.bnd [new file with mode: 0644]
repackage/org.argeo.tp.apache/apache-sshd/org.apache.sshd.cli.bnd [new file with mode: 0644]
repackage/org.argeo.tp.apache/apache-sshd/org.apache.sshd.common.bnd.retired [new file with mode: 0644]
repackage/org.argeo.tp.apache/apache-sshd/org.apache.sshd.core.bnd.retired [new file with mode: 0644]
repackage/org.argeo.tp.apache/apache-sshd/org.apache.sshd.git.bnd [new file with mode: 0644]
repackage/org.argeo.tp.apache/apache-sshd/org.apache.sshd.putty.bnd [new file with mode: 0644]
repackage/org.argeo.tp.apache/apache-sshd/org.apache.sshd.scp.bnd [new file with mode: 0644]
repackage/org.argeo.tp.apache/apache-sshd/org.apache.sshd.sftp.bnd [new file with mode: 0644]
repackage/org.argeo.tp.apache/batik/common.bnd [new file with mode: 0644]
repackage/org.argeo.tp.apache/batik/merge.bnd [new file with mode: 0644]
repackage/org.argeo.tp.apache/batik/org.apache.batik.constants.bnd [new file with mode: 0644]
repackage/org.argeo.tp.apache/batik/org.apache.batik.css.bnd [new file with mode: 0644]
repackage/org.argeo.tp.apache/batik/org.apache.batik.i18n.bnd [new file with mode: 0644]
repackage/org.argeo.tp.apache/batik/org.apache.batik.util.bnd [new file with mode: 0644]
repackage/org.argeo.tp.apache/org.apache.commons.cli.bnd [new file with mode: 0644]
repackage/org.argeo.tp.apache/org.apache.commons.codec.bnd [new file with mode: 0644]
repackage/org.argeo.tp.apache/org.apache.commons.compress.bnd [new file with mode: 0644]
repackage/org.argeo.tp.apache/org.apache.commons.exec.bnd [new file with mode: 0644]
repackage/org.argeo.tp.apache/org.apache.commons.fileupload.bnd [new file with mode: 0644]
repackage/org.argeo.tp.apache/org.apache.commons.httpclient.bnd [new file with mode: 0644]
repackage/org.argeo.tp.apache/org.apache.commons.io.bnd [new file with mode: 0644]
repackage/org.argeo.tp.apache/org.apache.commons.vfs.bnd [new file with mode: 0644]
repackage/org.argeo.tp.apache/org.apache.httpcomponents.httpclient.bnd [new file with mode: 0644]
repackage/org.argeo.tp.apache/org.apache.httpcomponents.httpcore.bnd [new file with mode: 0644]
repackage/org.argeo.tp.apache/org.apache.httpcomponents.httpmime.bnd [new file with mode: 0644]
repackage/org.argeo.tp.apache/org.apache.tika.core.bnd [new file with mode: 0644]
repackage/org.argeo.tp.apache/org.apache.tika.parsers.bnd [new file with mode: 0644]
repackage/org.argeo.tp.apache/org.apache.tomcat.jni.bnd [new file with mode: 0644]
repackage/org.argeo.tp.apache/org.apache.xalan.bnd.retired [new file with mode: 0644]
repackage/org.argeo.tp.apache/org.apache.xalan.serializer.bnd.retired [new file with mode: 0644]
repackage/org.argeo.tp.apache/org.apache.xerces.bnd [new file with mode: 0644]
repackage/org.argeo.tp.apache/org.apache.xml.resolver.bnd [new file with mode: 0644]
repackage/org.argeo.tp.apache/org.apache.xmlgraphics.bnd.retired [new file with mode: 0644]
repackage/org.argeo.tp.apache/xalan/merge.bnd [new file with mode: 0644]
repackage/org.argeo.tp.apache/xmlgraphics/merge.bnd [new file with mode: 0644]
repackage/org.argeo.tp.apache/xmlgraphics/services/org.apache.xmlgraphics.image.loader.spi.ImageConverter [new file with mode: 0644]
repackage/org.argeo.tp.apache/xmlgraphics/services/org.apache.xmlgraphics.image.loader.spi.ImageLoaderFactory [new file with mode: 0644]
repackage/org.argeo.tp.apache/xmlgraphics/services/org.apache.xmlgraphics.image.loader.spi.ImagePreloader [new file with mode: 0644]
repackage/org.argeo.tp.formats/com.adobe.xmp.xmpcore.bnd [new file with mode: 0644]
repackage/org.argeo.tp.formats/com.drew.metadata.bnd [new file with mode: 0644]
repackage/org.argeo.tp.formats/com.github.mangstadt.biweekly.bnd [new file with mode: 0644]
repackage/org.argeo.tp.formats/com.github.mangstadt.ezvcard.bnd [new file with mode: 0644]
repackage/org.argeo.tp.formats/com.github.mangstadt.vinnie.bnd [new file with mode: 0644]
repackage/org.argeo.tp.formats/com.graphbuilder.bnd [new file with mode: 0644]
repackage/org.argeo.tp.formats/com.lowagie.bnd [new file with mode: 0644]
repackage/org.argeo.tp.formats/de.rototor.pdfbox.graphics2d.bnd [new file with mode: 0644]
repackage/org.argeo.tp.formats/flying-saucer/common.bnd [new file with mode: 0644]
repackage/org.argeo.tp.formats/flying-saucer/org.xhtmlrenderer.core.bnd [new file with mode: 0644]
repackage/org.argeo.tp.formats/flying-saucer/org.xhtmlrenderer.openpdf.bnd [new file with mode: 0644]
repackage/org.argeo.tp.formats/flying-saucer/org.xhtmlrenderer.swt.bnd [new file with mode: 0644]
repackage/org.argeo.tp.formats/fop/merge.bnd [new file with mode: 0644]
repackage/org.argeo.tp.formats/io.nayuki.qrcodegen.bnd [new file with mode: 0644]
repackage/org.argeo.tp.formats/javax.xml.bind.bnd [new file with mode: 0644]
repackage/org.argeo.tp.formats/org.apache.commons.collections4.bnd [new file with mode: 0644]
repackage/org.argeo.tp.formats/org.apache.commons.csv.bnd [new file with mode: 0644]
repackage/org.argeo.tp.formats/org.apache.commons.imaging.bnd [new file with mode: 0644]
repackage/org.argeo.tp.formats/org.apache.commons.lang3.bnd [new file with mode: 0644]
repackage/org.argeo.tp.formats/org.apache.commons.math3.bnd [new file with mode: 0644]
repackage/org.argeo.tp.formats/org.apache.commons.text.bnd [new file with mode: 0644]
repackage/org.argeo.tp.formats/org.apache.pdfbox.jempbox.bnd [new file with mode: 0644]
repackage/org.argeo.tp.formats/org.apache.xml.security.bnd [new file with mode: 0644]
repackage/org.argeo.tp.formats/org.mozilla.javascript.bnd [new file with mode: 0644]
repackage/org.argeo.tp.formats/pdfbox/common.bnd [new file with mode: 0644]
repackage/org.argeo.tp.formats/pdfbox/org.apache.pdfbox.bnd [new file with mode: 0644]
repackage/org.argeo.tp.formats/pdfbox/org.apache.pdfbox.fontbox.bnd [new file with mode: 0644]
repackage/org.argeo.tp.formats/pdfbox/org.apache.pdfbox.xmpbox.bnd [new file with mode: 0644]
repackage/org.argeo.tp.gis/Repackage.java [new file with mode: 0644]
repackage/org.argeo.tp.gis/ejml/merge.bnd [new file with mode: 0644]
repackage/org.argeo.tp.gis/geotools/merge.bnd [new file with mode: 0644]
repackage/org.argeo.tp.gis/org.json.simple.bnd [new file with mode: 0644]
repackage/org.argeo.tp.gis/org.locationtech.jts.bnd [new file with mode: 0644]
repackage/org.argeo.tp.gis/units/merge.bnd [new file with mode: 0644]
repackage/org.argeo.tp.jcr/EDU.oswego.cs.dl.util.concurrent.bnd [new file with mode: 0644]
repackage/org.argeo.tp.jcr/com.google.guava.bnd.retired [new file with mode: 0644]
repackage/org.argeo.tp.jcr/com.google.guava.failureaccess.bnd.retired [new file with mode: 0644]
repackage/org.argeo.tp.jcr/jackrabbit/common.bnd [new file with mode: 0644]
repackage/org.argeo.tp.jcr/jackrabbit/org.apache.jackrabbit.api.bnd.retired [new file with mode: 0644]
repackage/org.argeo.tp.jcr/jackrabbit/org.apache.jackrabbit.core.bnd [new file with mode: 0644]
repackage/org.argeo.tp.jcr/jackrabbit/org.apache.jackrabbit.data.bnd [new file with mode: 0644]
repackage/org.argeo.tp.jcr/jackrabbit/org.apache.jackrabbit.jcr.client.bnd [new file with mode: 0644]
repackage/org.argeo.tp.jcr/jackrabbit/org.apache.jackrabbit.jcr.commons.bnd [new file with mode: 0644]
repackage/org.argeo.tp.jcr/jackrabbit/org.apache.jackrabbit.jcr2dav.bnd [new file with mode: 0644]
repackage/org.argeo.tp.jcr/jackrabbit/org.apache.jackrabbit.jcr2spi.bnd [new file with mode: 0644]
repackage/org.argeo.tp.jcr/jackrabbit/org.apache.jackrabbit.server.bnd [new file with mode: 0644]
repackage/org.argeo.tp.jcr/jackrabbit/org.apache.jackrabbit.servlet.bnd [new file with mode: 0644]
repackage/org.argeo.tp.jcr/jackrabbit/org.apache.jackrabbit.spi.bnd [new file with mode: 0644]
repackage/org.argeo.tp.jcr/jackrabbit/org.apache.jackrabbit.spi.commons.bnd [new file with mode: 0644]
repackage/org.argeo.tp.jcr/jackrabbit/org.apache.jackrabbit.spi2dav.bnd [new file with mode: 0644]
repackage/org.argeo.tp.jcr/jackrabbit/org.apache.jackrabbit.spi2jcr.bnd [new file with mode: 0644]
repackage/org.argeo.tp.jcr/jackrabbit/org.apache.jackrabbit.webdav.bnd [new file with mode: 0644]
repackage/org.argeo.tp.jcr/javax.jcr.bnd [new file with mode: 0644]
repackage/org.argeo.tp.jcr/oak/common.bnd [new file with mode: 0644]
repackage/org.argeo.tp.jcr/oak/org.apache.jackrabbit.api.bnd [new file with mode: 0644]
repackage/org.argeo.tp.jcr/org.apache.commons.collections.bnd [new file with mode: 0644]
repackage/org.argeo.tp.jcr/org.apache.commons.dbcp.bnd [new file with mode: 0644]
repackage/org.argeo.tp.jcr/org.apache.commons.pool.bnd [new file with mode: 0644]
repackage/org.argeo.tp.jcr/org.apache.lucene.bnd [new file with mode: 0644]
repackage/org.argeo.tp.jetty/jetty-websocket/merge.bnd [new file with mode: 0644]
repackage/org.argeo.tp.jetty/jetty/common.bnd [new file with mode: 0644]
repackage/org.argeo.tp.jetty/jetty/org.eclipse.jetty.alpn.client.bnd [new file with mode: 0644]
repackage/org.argeo.tp.jetty/jetty/org.eclipse.jetty.alpn.server.bnd [new file with mode: 0644]
repackage/org.argeo.tp.jetty/jetty/org.eclipse.jetty.client.bnd [new file with mode: 0644]
repackage/org.argeo.tp.jetty/jetty/org.eclipse.jetty.continuation.bnd.retired [new file with mode: 0644]
repackage/org.argeo.tp.jetty/jetty/org.eclipse.jetty.http.bnd [new file with mode: 0644]
repackage/org.argeo.tp.jetty/jetty/org.eclipse.jetty.http2.client.bnd [new file with mode: 0644]
repackage/org.argeo.tp.jetty/jetty/org.eclipse.jetty.http2.common.bnd [new file with mode: 0644]
repackage/org.argeo.tp.jetty/jetty/org.eclipse.jetty.http2.hpack.bnd [new file with mode: 0644]
repackage/org.argeo.tp.jetty/jetty/org.eclipse.jetty.http2.server.bnd [new file with mode: 0644]
repackage/org.argeo.tp.jetty/jetty/org.eclipse.jetty.io.bnd [new file with mode: 0644]
repackage/org.argeo.tp.jetty/jetty/org.eclipse.jetty.jmx.bnd [new file with mode: 0644]
repackage/org.argeo.tp.jetty/jetty/org.eclipse.jetty.security.bnd [new file with mode: 0644]
repackage/org.argeo.tp.jetty/jetty/org.eclipse.jetty.server.bnd [new file with mode: 0644]
repackage/org.argeo.tp.jetty/jetty/org.eclipse.jetty.servlet.bnd [new file with mode: 0644]
repackage/org.argeo.tp.jetty/jetty/org.eclipse.jetty.servlets.bnd [new file with mode: 0644]
repackage/org.argeo.tp.jetty/jetty/org.eclipse.jetty.util.ajax.bnd [new file with mode: 0644]
repackage/org.argeo.tp.jetty/jetty/org.eclipse.jetty.util.bnd [new file with mode: 0644]
repackage/org.argeo.tp.jetty/jetty/org.eclipse.jetty.xml.bnd [new file with mode: 0644]
repackage/org.argeo.tp.poi/org.apache.xmlbeans.bnd [new file with mode: 0644]
repackage/org.argeo.tp.poi/poi/common.bnd [new file with mode: 0644]
repackage/org.argeo.tp.poi/poi/org.apache.poi.bnd [new file with mode: 0644]
repackage/org.argeo.tp.poi/poi/org.apache.poi.ooxml.bnd [new file with mode: 0644]
repackage/org.argeo.tp.poi/poi/org.apache.poi.ooxml.schemas.bnd [new file with mode: 0644]
repackage/org.argeo.tp.poi/poi/org.apache.poi.scratchpad.bnd [new file with mode: 0644]
repackage/org.argeo.tp.sdk/biz.aQute.bndlib.bnd [new file with mode: 0644]
repackage/org.argeo.tp.sdk/junit-jupiter/merge.bnd [new file with mode: 0644]
repackage/org.argeo.tp.sdk/junit-platform/merge.bnd [new file with mode: 0644]
repackage/org.argeo.tp.sdk/org.apiguardian.bnd [new file with mode: 0644]
repackage/org.argeo.tp.sdk/org.eclipse.jdt.core.compiler.batch.bnd [new file with mode: 0644]
repackage/org.argeo.tp.sdk/org.eclipse.jgit.bnd [new file with mode: 0644]
repackage/org.argeo.tp.sdk/org.graalvm.bnd.retired [new file with mode: 0644]
repackage/org.argeo.tp.sdk/org.hamcrest.core.bnd [new file with mode: 0644]
repackage/org.argeo.tp.sdk/org.junit.bnd [new file with mode: 0644]
repackage/org.argeo.tp.sdk/org.junit.vintage.bnd [new file with mode: 0644]
repackage/org.argeo.tp.sdk/org.opentest4j.bnd [new file with mode: 0644]
repackage/org.argeo.tp.sdk/org.redline-rpm.bnd [new file with mode: 0644]
repackage/org.argeo.tp/bouncycastle/bcmail.bnd [new file with mode: 0644]
repackage/org.argeo.tp/bouncycastle/bcpg.bnd [new file with mode: 0644]
repackage/org.argeo.tp/bouncycastle/bcpkix.bnd [new file with mode: 0644]
repackage/org.argeo.tp/bouncycastle/bcprov.bnd [new file with mode: 0644]
repackage/org.argeo.tp/bouncycastle/bcutil.bnd [new file with mode: 0644]
repackage/org.argeo.tp/bouncycastle/common.bnd [new file with mode: 0644]
repackage/org.argeo.tp/com.googlecode.javaewah.JavaEWAH.bnd [new file with mode: 0644]
repackage/org.argeo.tp/com.zaxxer.sparsebits.bnd [new file with mode: 0644]
repackage/org.argeo.tp/jackson/com.fasterxml.jackson.core.jackson-annotations.bnd [new file with mode: 0644]
repackage/org.argeo.tp/jackson/com.fasterxml.jackson.core.jackson-core.bnd [new file with mode: 0644]
repackage/org.argeo.tp/jackson/com.fasterxml.jackson.core.jackson-databind.bnd [new file with mode: 0644]
repackage/org.argeo.tp/jackson/common.bnd [new file with mode: 0644]
repackage/org.argeo.tp/jakarta.mail.bnd [new file with mode: 0644]
repackage/org.argeo.tp/jakarta.servlet.api.bnd [new file with mode: 0644]
repackage/org.argeo.tp/javax.activation.bnd [new file with mode: 0644]
repackage/org.argeo.tp/javax.websocket.bnd [new file with mode: 0644]
repackage/org.argeo.tp/net.i2p.crypto.eddsa.bnd [new file with mode: 0644]
repackage/org.argeo.tp/org.h2.bnd [new file with mode: 0644]
repackage/org.argeo.tp/org.postgresql.jdbc42.bnd [new file with mode: 0644]
repackage/org.argeo.tp/org.tukaani.xz.bnd [new file with mode: 0644]
repackage/org.argeo.tp/org.w3c.css.sac.bnd [new file with mode: 0644]
repackage/org.argeo.tp/org.w3c.dom.smil.bnd [new file with mode: 0644]
repackage/org.argeo.tp/org.w3c.dom.svg.bnd [new file with mode: 0644]
repackage/org.argeo.tp/slf4j/common.bnd [new file with mode: 0644]
repackage/org.argeo.tp/slf4j/org.slf4j.api.bnd [new file with mode: 0644]
repackage/org.argeo.tp/slf4j/org.slf4j.commons.logging.bnd [new file with mode: 0644]
repackage/org.argeo.tp/slf4j/org.slf4j.log4j.bnd.deactivated [new file with mode: 0644]
repackage/osgi/api/org.argeo.tp.osgi/osgi.cmpn.bnd [new file with mode: 0644]
repackage/osgi/api/org.argeo.tp.osgi/osgi.core.bnd [new file with mode: 0644]
repackage/osgi/equinox/org.argeo.tp.eclipse/eclipse-equinox/common.bnd [new file with mode: 0644]
repackage/osgi/equinox/org.argeo.tp.eclipse/eclipse-equinox/includes.properties [new file with mode: 0644]
repackage/osgi/equinox/org.argeo.tp.osgi/eclipse-equinox/common.bnd [new file with mode: 0644]
repackage/osgi/equinox/org.argeo.tp.osgi/eclipse-equinox/includes.properties [new file with mode: 0644]
repackage/swt/rap/org.argeo.tp.swt.workbench/eclipse-rap/common.bnd [new file with mode: 0644]
repackage/swt/rap/org.argeo.tp.swt.workbench/eclipse-rap/excludes.properties [new file with mode: 0644]
repackage/swt/rap/org.argeo.tp.swt.workbench/eclipse-rap/includes.properties [new file with mode: 0644]
repackage/swt/rap/org.argeo.tp.swt/eclipse-rap/common.bnd [new file with mode: 0644]
repackage/swt/rap/org.argeo.tp.swt/eclipse-rap/includes.properties [new file with mode: 0644]
repackage/swt/rcp/org.argeo.tp.swt.workbench/eclipse-rcp/common.bnd [new file with mode: 0644]
repackage/swt/rcp/org.argeo.tp.swt.workbench/eclipse-rcp/excludes.properties [new file with mode: 0644]
repackage/swt/rcp/org.argeo.tp.swt.workbench/eclipse-rcp/includes.properties [new file with mode: 0644]
repackage/swt/rcp/org.argeo.tp.swt.workbench/org.eclipse.emf.common.bnd [new file with mode: 0644]
repackage/swt/rcp/org.argeo.tp.swt.workbench/org.eclipse.emf.ecore.bnd [new file with mode: 0644]
repackage/swt/rcp/org.argeo.tp.swt.workbench/org.eclipse.emf.ecore.change.bnd [new file with mode: 0644]
repackage/swt/rcp/org.argeo.tp.swt.workbench/org.eclipse.emf.ecore.xmi.bnd [new file with mode: 0644]
repackage/swt/rcp/org.argeo.tp.swt/eclipse-equinox/common.bnd [new file with mode: 0644]
repackage/swt/rcp/org.argeo.tp.swt/eclipse-equinox/excludes.properties [new file with mode: 0644]
repackage/swt/rcp/org.argeo.tp.swt/eclipse-equinox/includes.properties [new file with mode: 0644]
repackage/swt/rcp/org.argeo.tp.swt/eclipse-nebula/common.bnd [new file with mode: 0644]
repackage/swt/rcp/org.argeo.tp.swt/eclipse-nebula/excludes.properties [new file with mode: 0644]
repackage/swt/rcp/org.argeo.tp.swt/eclipse-nebula/includes.properties [new file with mode: 0644]
repackage/swt/rcp/org.argeo.tp.swt/eclipse-rcp/common.bnd [new file with mode: 0644]
repackage/swt/rcp/org.argeo.tp.swt/eclipse-rcp/excludes.properties [new file with mode: 0644]
repackage/swt/rcp/org.argeo.tp.swt/eclipse-rcp/includes.properties [new file with mode: 0644]
repackage/uris.properties [new file with mode: 0644]
sdk.mk [new file with mode: 0644]
sdk/argeo-build
sdk/branches/unstable.bnd [new file with mode: 0644]
src/org.argeo.tp/ee4j-mail [new submodule]

index 40b25ff7bcd6aa1dc2d2ecfba453134b10791c2e..e97834465a7c8aa4cb22c629dd56e2fa12a02871 100644 (file)
@@ -2,6 +2,7 @@
 /build
 /cache
 
+**/bin
 **/target
 **/*.target
 **/feature.xml
index 07b10cacb00393eff6d61e695fefe2acf9ab0577..8ee8d8ccd73565329fc552e20c42263d5a932ab3 100644 (file)
@@ -2,3 +2,6 @@
        path = sdk/argeo-build
        url = http://git.argeo.org/cc0/argeo-build.git
        branch = unstable
+[submodule "src/org.argeo.tp/ee4j-mail"]
+       path = src/org.argeo.tp/ee4j-mail
+       url = https://github.com/eclipse-ee4j/mail.git
diff --git a/Makefile b/Makefile
new file mode 100644 (file)
index 0000000..8327b9b
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,28 @@
+include sdk.mk
+.PHONY: clean all
+
+all: distribution
+
+BOOTSTRAP_BASE=$(SDK_BUILD_BASE)/bootstrap
+
+A2_OUTPUT = $(SDK_BUILD_BASE)/a2
+
+distribution: bootstrap
+       make -C repackage all
+       make -C rebuild all
+       
+bootstrap :
+       mkdir -p $(SDK_BUILD_BASE)/bootstrap
+       wget -c -O $(BOOTSTRAP_BASE)/ecj.jar https://repo1.maven.org/maven2/org/eclipse/jdt/ecj/3.29.0/ecj-3.29.0.jar
+       wget -c -O $(BOOTSTRAP_BASE)/slf4j-api.jar https://repo1.maven.org/maven2/org/slf4j/slf4j-api/1.7.28/slf4j-api-1.7.28.jar
+       wget -c -O $(BOOTSTRAP_BASE)/bndlib.jar https://repo1.maven.org/maven2/biz/aQute/bnd/biz.aQute.bndlib/5.3.0/biz.aQute.bndlib-5.3.0.jar
+
+clean:
+       rm -rf $(BOOTSTRAP_BASE)
+       make -C repackage clean
+       make -C rebuild clean
+
+clean-origin-cache:
+       rm -rf $(HOME)/.cache/argeo/build
+
+include  $(SDK_SRC_BASE)/sdk/argeo-build/osgi.mk
\ No newline at end of file
diff --git a/branch.mk b/branch.mk
new file mode 100644 (file)
index 0000000..afde0f8
--- /dev/null
+++ b/branch.mk
@@ -0,0 +1 @@
+BRANCH=unstable
\ No newline at end of file
diff --git a/configure b/configure
new file mode 100755 (executable)
index 0000000..47f7d96
--- /dev/null
+++ b/configure
@@ -0,0 +1,7 @@
+#!/bin/sh
+
+# Source are located where this script is
+SDK_SRC_BASE="$(cd "$(dirname "$0")"; pwd -P)"
+
+# Source the configure script
+. $SDK_SRC_BASE/sdk/argeo-build/configure
diff --git a/rebuild/Makefile b/rebuild/Makefile
new file mode 100644 (file)
index 0000000..f062f2a
--- /dev/null
@@ -0,0 +1,8 @@
+.PHONY: clean all
+
+all:
+       make -C org.argeo.tp all
+       
+clean:
+       make -C org.argeo.tp clean
+       
\ No newline at end of file
diff --git a/rebuild/org.argeo.tp/Makefile b/rebuild/org.argeo.tp/Makefile
new file mode 100644 (file)
index 0000000..7cbbc1e
--- /dev/null
@@ -0,0 +1,20 @@
+include ../../sdk.mk
+.PHONY: clean all osgi
+
+all: prepare osgi
+
+prepare:
+       rsync -a --exclude module-info.java $(SDK_SRC_BASE)/src/org.argeo.tp/ee4j-mail/mbox/src/main/java/ com.sun.mail.mbox/src
+
+A2_CATEGORY = org.argeo.tp
+
+BUNDLES = \
+org.argeo.ext.slf4j \
+com.sun.mail.mbox \
+
+clean:
+       rm -rf $(BUILD_BASE)
+
+DEP_CATEGORIES = org.argeo.tp
+
+include  $(SDK_SRC_BASE)/sdk/argeo-build/osgi.mk
\ No newline at end of file
diff --git a/rebuild/org.argeo.tp/com.sun.mail.mbox/.classpath b/rebuild/org.argeo.tp/com.sun.mail.mbox/.classpath
new file mode 100644 (file)
index 0000000..ca9ba96
--- /dev/null
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+       <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
+       <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins">
+               <attributes>
+                       <attribute name="module" value="true"/>
+               </attributes>
+       </classpathentry>
+       <classpathentry kind="src" path="src"/>
+       <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/rebuild/org.argeo.tp/com.sun.mail.mbox/.gitignore b/rebuild/org.argeo.tp/com.sun.mail.mbox/.gitignore
new file mode 100644 (file)
index 0000000..4f00cd9
--- /dev/null
@@ -0,0 +1 @@
+/src/
diff --git a/rebuild/org.argeo.tp/com.sun.mail.mbox/.project b/rebuild/org.argeo.tp/com.sun.mail.mbox/.project
new file mode 100644 (file)
index 0000000..c003462
--- /dev/null
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+       <name>com.sun.mail.mbox</name>
+       <comment></comment>
+       <projects>
+       </projects>
+       <buildSpec>
+               <buildCommand>
+                       <name>org.eclipse.jdt.core.javabuilder</name>
+                       <arguments>
+                       </arguments>
+               </buildCommand>
+               <buildCommand>
+                       <name>org.eclipse.pde.ManifestBuilder</name>
+                       <arguments>
+                       </arguments>
+               </buildCommand>
+               <buildCommand>
+                       <name>org.eclipse.pde.SchemaBuilder</name>
+                       <arguments>
+                       </arguments>
+               </buildCommand>
+       </buildSpec>
+       <natures>
+               <nature>org.eclipse.pde.PluginNature</nature>
+               <nature>org.eclipse.jdt.core.javanature</nature>
+       </natures>
+</projectDescription>
diff --git a/rebuild/org.argeo.tp/com.sun.mail.mbox/META-INF/.gitignore b/rebuild/org.argeo.tp/com.sun.mail.mbox/META-INF/.gitignore
new file mode 100644 (file)
index 0000000..4854a41
--- /dev/null
@@ -0,0 +1 @@
+/MANIFEST.MF
diff --git a/rebuild/org.argeo.tp/com.sun.mail.mbox/bnd.bnd b/rebuild/org.argeo.tp/com.sun.mail.mbox/bnd.bnd
new file mode 100644 (file)
index 0000000..66fc6c7
--- /dev/null
@@ -0,0 +1,9 @@
+Export-Package: com.sun.mail.*;version="1.6.7"
+
+Import-Package: \
+javax.mail.event,\
+*
+
+major: 1
+minor: 6
+micro: 7
\ No newline at end of file
diff --git a/rebuild/org.argeo.tp/com.sun.mail.mbox/build.properties b/rebuild/org.argeo.tp/com.sun.mail.mbox/build.properties
new file mode 100644 (file)
index 0000000..34d2e4d
--- /dev/null
@@ -0,0 +1,4 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+               .
diff --git a/rebuild/org.argeo.tp/org.argeo.ext.slf4j/.classpath b/rebuild/org.argeo.tp/org.argeo.ext.slf4j/.classpath
new file mode 100644 (file)
index 0000000..e801ebf
--- /dev/null
@@ -0,0 +1,7 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+       <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-11"/>
+       <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+       <classpathentry kind="src" path="src"/>
+       <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/rebuild/org.argeo.tp/org.argeo.ext.slf4j/.project b/rebuild/org.argeo.tp/org.argeo.ext.slf4j/.project
new file mode 100644 (file)
index 0000000..3ed363d
--- /dev/null
@@ -0,0 +1,28 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+       <name>org.argeo.ext.slf4j</name>
+       <comment></comment>
+       <projects>
+       </projects>
+       <buildSpec>
+               <buildCommand>
+                       <name>org.eclipse.jdt.core.javabuilder</name>
+                       <arguments>
+                       </arguments>
+               </buildCommand>
+               <buildCommand>
+                       <name>org.eclipse.pde.ManifestBuilder</name>
+                       <arguments>
+                       </arguments>
+               </buildCommand>
+               <buildCommand>
+                       <name>org.eclipse.pde.SchemaBuilder</name>
+                       <arguments>
+                       </arguments>
+               </buildCommand>
+       </buildSpec>
+       <natures>
+               <nature>org.eclipse.pde.PluginNature</nature>
+               <nature>org.eclipse.jdt.core.javanature</nature>
+       </natures>
+</projectDescription>
diff --git a/rebuild/org.argeo.tp/org.argeo.ext.slf4j/META-INF/.gitignore b/rebuild/org.argeo.tp/org.argeo.ext.slf4j/META-INF/.gitignore
new file mode 100644 (file)
index 0000000..4854a41
--- /dev/null
@@ -0,0 +1 @@
+/MANIFEST.MF
diff --git a/rebuild/org.argeo.tp/org.argeo.ext.slf4j/bnd.bnd b/rebuild/org.argeo.tp/org.argeo.ext.slf4j/bnd.bnd
new file mode 100644 (file)
index 0000000..37061df
--- /dev/null
@@ -0,0 +1,3 @@
+Export-Package: org.slf4j.impl
+
+Import-Package: *
diff --git a/rebuild/org.argeo.tp/org.argeo.ext.slf4j/build.properties b/rebuild/org.argeo.tp/org.argeo.ext.slf4j/build.properties
new file mode 100644 (file)
index 0000000..34d2e4d
--- /dev/null
@@ -0,0 +1,4 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+               .
diff --git a/rebuild/org.argeo.tp/org.argeo.ext.slf4j/src/org/slf4j/impl/ArgeoLogger.java b/rebuild/org.argeo.tp/org.argeo.ext.slf4j/src/org/slf4j/impl/ArgeoLogger.java
new file mode 100644 (file)
index 0000000..5c4889a
--- /dev/null
@@ -0,0 +1,180 @@
+package org.slf4j.impl;
+
+import org.slf4j.helpers.MarkerIgnoringBase;
+
+class ArgeoLogger extends MarkerIgnoringBase {
+       private static final long serialVersionUID = -7719157836932627307L;
+       private final SystemLoggingAdapter log;
+
+       protected ArgeoLogger(String name, SystemLoggingAdapter log) {
+               this.name = name;
+               this.log = log;
+       }
+
+       @Override
+       public boolean isDebugEnabled() {
+               return log.isDebugEnabled();
+       }
+
+       @Override
+       public boolean isTraceEnabled() {
+               return log.isDebugEnabled();
+       }
+
+       @Override
+       public void trace(String msg) {
+               log.trace(msg);
+
+       }
+
+       @Override
+       public void trace(String format, Object... arguments) {
+               log.trace(format, arguments);
+
+       }
+
+       @Override
+       public void trace(String msg, Throwable t) {
+               log.trace(msg, t);
+
+       }
+
+       @Override
+       public void debug(String msg) {
+               log.debug(msg);
+
+       }
+
+       @Override
+       public void debug(String format, Object... arguments) {
+               log.debug(format, arguments);
+
+       }
+
+       @Override
+       public void debug(String msg, Throwable t) {
+               log.debug(msg, t);
+
+       }
+
+       @Override
+       public boolean isInfoEnabled() {
+               return log.isInfoEnabled();
+       }
+
+       @Override
+       public void info(String msg) {
+               log.info(msg);
+
+       }
+
+       @Override
+       public void info(String format, Object... arguments) {
+               log.info(format, arguments);
+       }
+
+       @Override
+       public void info(String msg, Throwable t) {
+               log.info(msg, t);
+
+       }
+
+       @Override
+       public boolean isWarnEnabled() {
+               return log.isWarnEnabled();
+       }
+
+       @Override
+       public void warn(String msg) {
+               log.warn(msg);
+
+       }
+
+       @Override
+       public void warn(String format, Object... arguments) {
+               log.warn(format, arguments);
+
+       }
+
+       @Override
+       public void warn(String msg, Throwable t) {
+               log.warn(msg, t);
+
+       }
+
+       @Override
+       public boolean isErrorEnabled() {
+
+               return log.isErrorEnabled();
+       }
+
+       @Override
+       public void error(String msg) {
+               log.error(msg);
+
+       }
+
+       @Override
+       public void error(String format, Object... arguments) {
+               log.error(format, arguments);
+
+       }
+
+       @Override
+       public void error(String msg, Throwable t) {
+               log.error(msg, t);
+
+       }
+
+       @Override
+       public void trace(String format, Object arg) {
+               trace(format, new Object[] { arg });
+
+       }
+
+       @Override
+       public void trace(String format, Object arg1, Object arg2) {
+               trace(format, new Object[] { arg1, arg2 });
+       }
+
+       @Override
+       public void debug(String format, Object arg) {
+               debug(format, new Object[] { arg });
+       }
+
+       @Override
+       public void debug(String format, Object arg1, Object arg2) {
+               debug(format, new Object[] { arg1, arg2 });
+       }
+
+       @Override
+       public void info(String format, Object arg) {
+               info(format, new Object[] { arg });
+       }
+
+       @Override
+       public void info(String format, Object arg1, Object arg2) {
+               info(format, new Object[] { arg1, arg2 });
+       }
+
+       @Override
+       public void warn(String format, Object arg) {
+               warn(format, new Object[] { arg });
+       }
+
+       @Override
+       public void warn(String format, Object arg1, Object arg2) {
+               warn(format, new Object[] { arg1, arg2 });
+       }
+
+       @Override
+       public void error(String format, Object arg) {
+               error(format, new Object[] { arg });
+       }
+
+       @Override
+       public void error(String format, Object arg1, Object arg2) {
+               error(format, new Object[] { arg1, arg2 });
+       }
+
+}
\ No newline at end of file
diff --git a/rebuild/org.argeo.tp/org.argeo.ext.slf4j/src/org/slf4j/impl/StaticLoggerBinder.java b/rebuild/org.argeo.tp/org.argeo.ext.slf4j/src/org/slf4j/impl/StaticLoggerBinder.java
new file mode 100644 (file)
index 0000000..8c5b3ad
--- /dev/null
@@ -0,0 +1,41 @@
+package org.slf4j.impl;
+
+import org.slf4j.ILoggerFactory;
+import org.slf4j.spi.LoggerFactoryBinder;
+
+public class StaticLoggerBinder implements LoggerFactoryBinder {
+       public static final String REQUESTED_API_VERSION = "1.7";
+
+       private static final StaticLoggerBinder SINGLETON = new StaticLoggerBinder();
+
+       private final ILoggerFactory loggerFactory;
+
+       protected StaticLoggerBinder() {
+               loggerFactory = new SystemLoggerFactory();
+       }
+
+       @Override
+       public ILoggerFactory getLoggerFactory() {
+               return loggerFactory;
+       }
+
+       @Override
+       public String getLoggerFactoryClassStr() {
+               return SystemLoggerFactory.class.getName();
+       }
+
+       public static final StaticLoggerBinder getSingleton() {
+               return SINGLETON;
+       }
+
+       static class SystemLoggerFactory implements ILoggerFactory {
+
+               @Override
+               public org.slf4j.Logger getLogger(String name) {
+                       SystemLoggingAdapter logger = SystemLoggingAdapter.getLog(name);
+                       return new ArgeoLogger(name, logger);
+               }
+
+       }
+
+}
diff --git a/rebuild/org.argeo.tp/org.argeo.ext.slf4j/src/org/slf4j/impl/SystemLoggingAdapter.java b/rebuild/org.argeo.tp/org.argeo.ext.slf4j/src/org/slf4j/impl/SystemLoggingAdapter.java
new file mode 100644 (file)
index 0000000..7a6c865
--- /dev/null
@@ -0,0 +1,203 @@
+package org.slf4j.impl;
+
+import java.lang.System.Logger;
+import java.lang.System.Logger.Level;
+import java.util.Objects;
+import java.util.function.Supplier;
+
+/**
+ * A Commons Logging / SLF4J style logging utilities wrapping a standard Java
+ * platform {@link Logger}.
+ */
+public interface SystemLoggingAdapter {
+       Logger getLogger();
+
+       default boolean isDebugEnabled() {
+               return getLogger().isLoggable(Level.DEBUG);
+       }
+
+       default boolean isErrorEnabled() {
+               return getLogger().isLoggable(Level.ERROR);
+       }
+
+       default boolean isInfoEnabled() {
+               return getLogger().isLoggable(Level.INFO);
+       }
+
+       default boolean isTraceEnabled() {
+               return getLogger().isLoggable(Level.TRACE);
+       }
+
+       default boolean isWarnEnabled() {
+               return getLogger().isLoggable(Level.WARNING);
+       }
+
+       /*
+        * TRACE
+        */
+
+       default void trace(String message) {
+               getLogger().log(Level.TRACE, message);
+       }
+
+       default void trace(Supplier<String> message) {
+               getLogger().log(Level.TRACE, message);
+       }
+
+       default void trace(Object message) {
+               getLogger().log(Level.TRACE, Objects.requireNonNull(message));
+       }
+
+       default void trace(String message, Throwable t) {
+               getLogger().log(Level.TRACE, message, t);
+       }
+
+       default void trace(Object message, Throwable t) {
+               trace(Objects.requireNonNull(message).toString(), t);
+       }
+
+       default void trace(String format, Object... arguments) {
+               getLogger().log(Level.TRACE, format, arguments);
+       }
+
+       /*
+        * DEBUG
+        */
+
+       default void debug(String message) {
+               getLogger().log(Level.DEBUG, message);
+       }
+
+       default void debug(Supplier<String> message) {
+               getLogger().log(Level.DEBUG, message);
+       }
+
+       default void debug(Object message) {
+               getLogger().log(Level.DEBUG, message);
+       }
+
+       default void debug(String message, Throwable t) {
+               getLogger().log(Level.DEBUG, message, t);
+       }
+
+       default void debug(Object message, Throwable t) {
+               debug(Objects.requireNonNull(message).toString(), t);
+       }
+
+       default void debug(String format, Object... arguments) {
+               getLogger().log(Level.DEBUG, format, arguments);
+       }
+
+       /*
+        * INFO
+        */
+
+       default void info(String message) {
+               getLogger().log(Level.INFO, message);
+       }
+
+       default void info(Supplier<String> message) {
+               getLogger().log(Level.INFO, message);
+       }
+
+       default void info(Object message) {
+               getLogger().log(Level.INFO, message);
+       }
+
+       default void info(String message, Throwable t) {
+               getLogger().log(Level.INFO, message, t);
+       }
+
+       default void info(Object message, Throwable t) {
+               info(Objects.requireNonNull(message).toString(), t);
+       }
+
+       default void info(String format, Object... arguments) {
+               getLogger().log(Level.INFO, format, arguments);
+       }
+
+       /*
+        * WARN
+        */
+
+       default void warn(String message) {
+               getLogger().log(Level.WARNING, message);
+       }
+
+       default void warn(Supplier<String> message) {
+               getLogger().log(Level.WARNING, message);
+       }
+
+       default void warn(Object message) {
+               getLogger().log(Level.WARNING, message);
+       }
+
+       default void warn(String message, Throwable t) {
+               getLogger().log(Level.WARNING, message, t);
+       }
+
+       default void warn(Object message, Throwable t) {
+               warn(Objects.requireNonNull(message).toString(), t);
+       }
+
+       default void warn(String format, Object... arguments) {
+               getLogger().log(Level.WARNING, format, arguments);
+       }
+
+       /*
+        * ERROR
+        */
+
+       default void error(String message) {
+               getLogger().log(Level.ERROR, message);
+       }
+
+       default void error(Supplier<String> message) {
+               getLogger().log(Level.ERROR, message);
+       }
+
+       default void error(Object message) {
+               getLogger().log(Level.ERROR, message);
+       }
+
+       default void error(String message, Throwable t) {
+               getLogger().log(Level.ERROR, message, t);
+       }
+
+       default void error(Object message, Throwable t) {
+               error(Objects.requireNonNull(message).toString(), t);
+       }
+
+       default void error(String format, Object... arguments) {
+               getLogger().log(Level.ERROR, format, arguments);
+       }
+
+       /*
+        * STATIC UTILITIES
+        */
+
+       static SystemLoggingAdapter getLog(Class<?> clss) {
+               return getLog(Objects.requireNonNull(clss).getName());
+       }
+
+       static SystemLoggingAdapter getLog(String name) {
+               Logger logger = System.getLogger(Objects.requireNonNull(name));
+               return new LoggerWrapper(logger);
+       }
+
+       /** A trivial implementation wrapping a platform logger. */
+       static class LoggerWrapper implements SystemLoggingAdapter {
+               private final Logger logger;
+
+               LoggerWrapper(Logger logger) {
+                       this.logger = logger;
+               }
+
+               @Override
+               public Logger getLogger() {
+                       return logger;
+               }
+
+       }
+
+}
diff --git a/repackage/Make.java b/repackage/Make.java
new file mode 100644 (file)
index 0000000..11c7bcd
--- /dev/null
@@ -0,0 +1,48 @@
+import java.nio.file.Path;
+import java.nio.file.Paths;
+
+import org.argeo.slc.factory.A2Factory;
+
+class Make {
+       public static void main(String[] args) {
+               if (args.length < 1) {
+                       System.err.println("Usage: <path to a2 output dir>");
+                       System.exit(1);
+               }
+               Path a2Base = Paths.get(args[0]).toAbsolutePath().normalize();
+               Path descriptorsBase = Paths.get("./tp").toAbsolutePath().normalize();
+               A2Factory factory = new A2Factory(a2Base, descriptorsBase, true);
+
+               // SDK
+               factory.processCategory(Paths.get("org.argeo.tp.sdk"));
+
+               // Eclipse
+               factory.processCategory(Paths.get("osgi/api/org.argeo.tp.osgi"));
+               factory.processEclipseArchive(Paths.get("osgi/equinox/org.argeo.tp.osgi", "eclipse-equinox"));
+               factory.processEclipseArchive(Paths.get("osgi/equinox/org.argeo.tp.eclipse", "eclipse-equinox"));
+
+               factory.processEclipseArchive(Paths.get("swt/rap/org.argeo.tp.swt", "eclipse-rap"));
+               factory.processEclipseArchive(Paths.get("swt/rap/org.argeo.tp.swt.workbench", "eclipse-rap"));
+
+               factory.processEclipseArchive(Paths.get("swt/rcp/org.argeo.tp.swt", "eclipse-rcp"));
+
+               factory.processEclipseArchive(Paths.get("lib/linux/x86_64/swt/rcp/org.argeo.tp.swt", "eclipse-rcp"));
+               factory.processEclipseArchive(Paths.get("lib/linux/aarch64/swt/rcp/org.argeo.tp.swt", "eclipse-rcp"));
+               factory.processEclipseArchive(Paths.get("lib/win32/x86_64/swt/rcp/org.argeo.tp.swt", "eclipse-rcp"));
+               factory.processEclipseArchive(Paths.get("lib/macosx/x86_64/swt/rcp/org.argeo.tp.swt", "eclipse-rcp"));
+
+               factory.processEclipseArchive(Paths.get("swt/rcp/org.argeo.tp.swt", "eclipse-nebula"));
+               factory.processEclipseArchive(Paths.get("swt/rcp/org.argeo.tp.swt.workbench", "eclipse-rcp"));
+               factory.processCategory(Paths.get("swt/rcp/org.argeo.tp.swt.workbench"));
+
+               // Maven
+               factory.processCategory(Paths.get("org.argeo.tp"));
+               factory.processCategory(Paths.get("org.argeo.tp.apache"));
+               factory.processCategory(Paths.get("org.argeo.tp.jetty"));
+               factory.processCategory(Paths.get("org.argeo.tp.jcr"));
+               factory.processCategory(Paths.get("org.argeo.tp.formats"));
+               factory.processCategory(Paths.get("org.argeo.tp.poi"));
+               factory.processCategory(Paths.get("org.argeo.tp.gis"));
+       }
+
+}
\ No newline at end of file
diff --git a/repackage/Makefile b/repackage/Makefile
new file mode 100644 (file)
index 0000000..40aef3e
--- /dev/null
@@ -0,0 +1,50 @@
+include ../sdk.mk
+.PHONY: clean all
+
+all: distribution
+
+BOOTSTRAP_BASE=$(SDK_BUILD_BASE)/bootstrap
+
+A2_OUTPUT = $(SDK_BUILD_BASE)/a2
+
+CATEGORIES=\
+org.argeo.tp.sdk \
+osgi/api/org.argeo.tp.osgi \
+osgi/equinox/org.argeo.tp.osgi \
+osgi/equinox/org.argeo.tp.eclipse \
+swt/rap/org.argeo.tp.swt \
+swt/rap/org.argeo.tp.swt.workbench \
+swt/rcp/org.argeo.tp.swt \
+lib/linux/x86_64/swt/rcp/org.argeo.tp.swt \
+lib/linux/aarch64/swt/rcp/org.argeo.tp.swt \
+lib/win32/x86_64/swt/rcp/org.argeo.tp.swt \
+lib/macosx/x86_64/swt/rcp/org.argeo.tp.swt \
+swt/rcp/org.argeo.tp.swt \
+swt/rcp/org.argeo.tp.swt.workbench \
+org.argeo.tp \
+org.argeo.tp.apache \
+org.argeo.tp.jetty \
+org.argeo.tp.jcr \
+org.argeo.tp.formats \
+org.argeo.tp.poi \
+org.argeo.tp.gis \
+
+
+distribution:
+       $(JVM) -cp \
+        $(BOOTSTRAP_BASE)/bndlib.jar:$(BOOTSTRAP_BASE)/slf4j-api.jar:$(BOOTSTRAP_BASE)/org.argeo.slc.api/bin:$(BOOTSTRAP_BASE)/org.argeo.slc.factory/bin \
+        $(SDK_SRC_BASE)/sdk/argeo-build/src/org/argeo/build/Repackage.java $(A2_OUTPUT) $(CATEGORIES)
+
+clean:
+       rm -rf $(A2_OUTPUT)/org.argeo.tp
+       rm -rf $(A2_OUTPUT)/org.argeo.tp.*
+       rm -rf $(A2_OUTPUT)/*/org.argeo.tp
+       rm -rf $(A2_OUTPUT)/*/org.argeo.tp.*
+       rm -rf $(A2_OUTPUT)/*/*/org.argeo.tp
+       rm -rf $(A2_OUTPUT)/*/*/org.argeo.tp.*
+       rm -rf $(A2_OUTPUT)/*/*/*/org.argeo.tp
+       rm -rf $(A2_OUTPUT)/*/*/*/org.argeo.tp.*
+       rm -rf $(A2_OUTPUT)/*/*/*/*/org.argeo.tp
+       rm -rf $(A2_OUTPUT)/*/*/*/*/org.argeo.tp.*
+
+include  $(SDK_SRC_BASE)/sdk/argeo-build/osgi.mk
\ No newline at end of file
diff --git a/repackage/lib/linux/aarch64/swt/rcp/org.argeo.tp.swt/eclipse-rcp/common.bnd b/repackage/lib/linux/aarch64/swt/rcp/org.argeo.tp.swt/eclipse-rcp/common.bnd
new file mode 100644 (file)
index 0000000..9a7ae1d
--- /dev/null
@@ -0,0 +1,2 @@
+Bundle-License: EPL-1.0
+SLC-Origin-ManifestNotModified: true
diff --git a/repackage/lib/linux/aarch64/swt/rcp/org.argeo.tp.swt/eclipse-rcp/includes.properties b/repackage/lib/linux/aarch64/swt/rcp/org.argeo.tp.swt/eclipse-rcp/includes.properties
new file mode 100644 (file)
index 0000000..d39a318
--- /dev/null
@@ -0,0 +1,2 @@
+plugins/com.sun.jna*.jar=
+plugins/org.eclipse.swt.gtk.linux.aarch64*=
diff --git a/repackage/lib/linux/x86_64/swt/rcp/org.argeo.tp.swt/eclipse-rcp/common.bnd b/repackage/lib/linux/x86_64/swt/rcp/org.argeo.tp.swt/eclipse-rcp/common.bnd
new file mode 100644 (file)
index 0000000..9a7ae1d
--- /dev/null
@@ -0,0 +1,2 @@
+Bundle-License: EPL-1.0
+SLC-Origin-ManifestNotModified: true
diff --git a/repackage/lib/linux/x86_64/swt/rcp/org.argeo.tp.swt/eclipse-rcp/includes.properties b/repackage/lib/linux/x86_64/swt/rcp/org.argeo.tp.swt/eclipse-rcp/includes.properties
new file mode 100644 (file)
index 0000000..56af205
--- /dev/null
@@ -0,0 +1,2 @@
+plugins/com.sun.jna*.jar=
+plugins/org.eclipse.swt.gtk.linux.x86_64*=
diff --git a/repackage/lib/macosx/x86_64/swt/rcp/org.argeo.tp.swt/eclipse-rcp/common.bnd b/repackage/lib/macosx/x86_64/swt/rcp/org.argeo.tp.swt/eclipse-rcp/common.bnd
new file mode 100644 (file)
index 0000000..9a7ae1d
--- /dev/null
@@ -0,0 +1,2 @@
+Bundle-License: EPL-1.0
+SLC-Origin-ManifestNotModified: true
diff --git a/repackage/lib/macosx/x86_64/swt/rcp/org.argeo.tp.swt/eclipse-rcp/includes.properties b/repackage/lib/macosx/x86_64/swt/rcp/org.argeo.tp.swt/eclipse-rcp/includes.properties
new file mode 100644 (file)
index 0000000..5405ab8
--- /dev/null
@@ -0,0 +1,2 @@
+plugins/com.sun.jna*.jar=
+plugins/org.eclipse.swt.cocoa.macosx.x86_64*=
diff --git a/repackage/lib/win32/x86_64/swt/rcp/org.argeo.tp.swt/eclipse-rcp/common.bnd b/repackage/lib/win32/x86_64/swt/rcp/org.argeo.tp.swt/eclipse-rcp/common.bnd
new file mode 100644 (file)
index 0000000..9a7ae1d
--- /dev/null
@@ -0,0 +1,2 @@
+Bundle-License: EPL-1.0
+SLC-Origin-ManifestNotModified: true
diff --git a/repackage/lib/win32/x86_64/swt/rcp/org.argeo.tp.swt/eclipse-rcp/includes.properties b/repackage/lib/win32/x86_64/swt/rcp/org.argeo.tp.swt/eclipse-rcp/includes.properties
new file mode 100644 (file)
index 0000000..7dff8c9
--- /dev/null
@@ -0,0 +1,2 @@
+plugins/com.sun.jna*.jar=
+plugins/org.eclipse.swt.win32.win32.x86_64*=
diff --git a/repackage/org.argeo.tp.apache/apache-sshd/common.bnd b/repackage/org.argeo.tp.apache/apache-sshd/common.bnd
new file mode 100644 (file)
index 0000000..f3f8597
--- /dev/null
@@ -0,0 +1,2 @@
+Bundle-License: Apache-2.0
+SLC-Origin-M2: :2.8.0
\ No newline at end of file
diff --git a/repackage/org.argeo.tp.apache/apache-sshd/merge.bnd b/repackage/org.argeo.tp.apache/apache-sshd/merge.bnd
new file mode 100644 (file)
index 0000000..ce57733
--- /dev/null
@@ -0,0 +1,16 @@
+Bundle-License: Apache-2.0
+Bundle-SymbolicName: org.apache.sshd
+SLC-Origin-M2: :2.8.0
+Export-Package: org.apache.*
+Import-Package: \
+org.apache.tomcat.jni.*;resolution:=optional,\
+org.bouncycastle.crypto.prng,\
+org.bouncycastle.jce.provider.*;resolution:=optional,\
+net.i2p.crypto.eddsa.*;resolution:=optional,\
+org.slf4j,\
+org.slf4j.event,\
+org.slf4j.helpers,\
+*
+SLC-Origin-M2-Merge: \
+org.apache.sshd:sshd-core, \
+org.apache.sshd:sshd-common
diff --git a/repackage/org.argeo.tp.apache/apache-sshd/org.apache.sshd.cli.bnd b/repackage/org.argeo.tp.apache/apache-sshd/org.apache.sshd.cli.bnd
new file mode 100644 (file)
index 0000000..7b00c2c
--- /dev/null
@@ -0,0 +1,2 @@
+Bundle-SymbolicName: org.apache.sshd.cli
+SLC-Origin-M2: org.apache.sshd:sshd-cli
diff --git a/repackage/org.argeo.tp.apache/apache-sshd/org.apache.sshd.common.bnd.retired b/repackage/org.argeo.tp.apache/apache-sshd/org.apache.sshd.common.bnd.retired
new file mode 100644 (file)
index 0000000..02377e2
--- /dev/null
@@ -0,0 +1,11 @@
+Bundle-SymbolicName: org.apache.sshd.common
+Fragment-Host: org.apache.sshd.core
+Import-Package: \
+org.bouncycastle.jce.provider.*;resolution:=optional,\
+net.i2p.crypto.eddsa.*;resolution:=optional,\
+org.slf4j,\
+org.slf4j.event,\
+org.slf4j.helpers,\
+*
+
+SLC-Origin-M2: org.apache.sshd:sshd-common
diff --git a/repackage/org.argeo.tp.apache/apache-sshd/org.apache.sshd.core.bnd.retired b/repackage/org.argeo.tp.apache/apache-sshd/org.apache.sshd.core.bnd.retired
new file mode 100644 (file)
index 0000000..c3e183a
--- /dev/null
@@ -0,0 +1,6 @@
+Bundle-SymbolicName: org.apache.sshd.core
+SLC-Origin-M2: org.apache.sshd:sshd-core
+Import-Package: \
+org.apache.tomcat.jni.*;resolution:=optional,\
+org.bouncycastle.crypto.prng,\
+*
\ No newline at end of file
diff --git a/repackage/org.argeo.tp.apache/apache-sshd/org.apache.sshd.git.bnd b/repackage/org.argeo.tp.apache/apache-sshd/org.apache.sshd.git.bnd
new file mode 100644 (file)
index 0000000..7d9ef2b
--- /dev/null
@@ -0,0 +1,6 @@
+Bundle-SymbolicName: org.apache.sshd.git
+SLC-Origin-M2: org.apache.sshd:sshd-git
+Import-Package: \
+org.eclipse.jgit.pgm.*;resolution:=optional,\
+org.kohsuke.*;resolution:=optional,\
+*
\ No newline at end of file
diff --git a/repackage/org.argeo.tp.apache/apache-sshd/org.apache.sshd.putty.bnd b/repackage/org.argeo.tp.apache/apache-sshd/org.apache.sshd.putty.bnd
new file mode 100644 (file)
index 0000000..cf8a99a
--- /dev/null
@@ -0,0 +1,5 @@
+Bundle-SymbolicName: org.apache.sshd.putty
+SLC-Origin-M2: org.apache.sshd:sshd-putty
+Import-Package: \
+net.i2p.*;resolution:=optional,\
+*
\ No newline at end of file
diff --git a/repackage/org.argeo.tp.apache/apache-sshd/org.apache.sshd.scp.bnd b/repackage/org.argeo.tp.apache/apache-sshd/org.apache.sshd.scp.bnd
new file mode 100644 (file)
index 0000000..6744473
--- /dev/null
@@ -0,0 +1,2 @@
+Bundle-SymbolicName: org.apache.sshd.scp
+SLC-Origin-M2: org.apache.sshd:sshd-scp
diff --git a/repackage/org.argeo.tp.apache/apache-sshd/org.apache.sshd.sftp.bnd b/repackage/org.argeo.tp.apache/apache-sshd/org.apache.sshd.sftp.bnd
new file mode 100644 (file)
index 0000000..b6b8b0d
--- /dev/null
@@ -0,0 +1,2 @@
+Bundle-SymbolicName: org.apache.sshd.sftp
+SLC-Origin-M2: org.apache.sshd:sshd-sftp
diff --git a/repackage/org.argeo.tp.apache/batik/common.bnd b/repackage/org.argeo.tp.apache/batik/common.bnd
new file mode 100644 (file)
index 0000000..bc76a97
--- /dev/null
@@ -0,0 +1,2 @@
+Bundle-License: Apache-2.0
+SLC-Origin-M2: :1.14
\ No newline at end of file
diff --git a/repackage/org.argeo.tp.apache/batik/merge.bnd b/repackage/org.argeo.tp.apache/batik/merge.bnd
new file mode 100644 (file)
index 0000000..6c303ef
--- /dev/null
@@ -0,0 +1,28 @@
+Bundle-License: Apache-2.0
+Bundle-SymbolicName: org.apache.batik
+SLC-Origin-M2: :1.14
+Export-Package: org.apache.*
+Import-Package: \
+org.apache.batik.script.*;resolution:="optional",\
+org.apache.batik.*,\
+org.apache.xmlgraphics.*,\
+org.w3c.*,\
+*;resolution:="optional"
+SLC-Origin-M2-Merge: \
+org.apache.xmlgraphics:batik-anim, \
+org.apache.xmlgraphics:batik-awt-util, \
+org.apache.xmlgraphics:batik-bridge, \
+org.apache.xmlgraphics:batik-codec, \
+org.apache.xmlgraphics:batik-dom, \
+org.apache.xmlgraphics:batik-ext, \
+org.apache.xmlgraphics:batik-extension, \
+org.apache.xmlgraphics:batik-gui-util, \
+org.apache.xmlgraphics:batik-gvt, \
+org.apache.xmlgraphics:batik-parser, \
+org.apache.xmlgraphics:batik-shared-resources, \
+org.apache.xmlgraphics:batik-script, \
+org.apache.xmlgraphics:batik-svg-dom, \
+org.apache.xmlgraphics:batik-svggen, \
+org.apache.xmlgraphics:batik-swing, \
+org.apache.xmlgraphics:batik-transcoder, \
+org.apache.xmlgraphics:batik-xml
\ No newline at end of file
diff --git a/repackage/org.argeo.tp.apache/batik/org.apache.batik.constants.bnd b/repackage/org.argeo.tp.apache/batik/org.apache.batik.constants.bnd
new file mode 100644 (file)
index 0000000..fea69fa
--- /dev/null
@@ -0,0 +1,2 @@
+Bundle-SymbolicName: org.apache.batik.constants
+SLC-Origin-M2: org.apache.xmlgraphics:batik-constants
diff --git a/repackage/org.argeo.tp.apache/batik/org.apache.batik.css.bnd b/repackage/org.argeo.tp.apache/batik/org.apache.batik.css.bnd
new file mode 100644 (file)
index 0000000..8ec1225
--- /dev/null
@@ -0,0 +1,2 @@
+Bundle-SymbolicName: org.apache.batik.css
+SLC-Origin-M2: org.apache.xmlgraphics:batik-css
diff --git a/repackage/org.argeo.tp.apache/batik/org.apache.batik.i18n.bnd b/repackage/org.argeo.tp.apache/batik/org.apache.batik.i18n.bnd
new file mode 100644 (file)
index 0000000..321ae88
--- /dev/null
@@ -0,0 +1,2 @@
+Bundle-SymbolicName: org.apache.batik.i18n
+SLC-Origin-M2: org.apache.xmlgraphics:batik-i18n
diff --git a/repackage/org.argeo.tp.apache/batik/org.apache.batik.util.bnd b/repackage/org.argeo.tp.apache/batik/org.apache.batik.util.bnd
new file mode 100644 (file)
index 0000000..0b672dc
--- /dev/null
@@ -0,0 +1,2 @@
+Bundle-SymbolicName: org.apache.batik.util
+SLC-Origin-M2: org.apache.xmlgraphics:batik-util
diff --git a/repackage/org.argeo.tp.apache/org.apache.commons.cli.bnd b/repackage/org.argeo.tp.apache/org.apache.commons.cli.bnd
new file mode 100644 (file)
index 0000000..7e34d59
--- /dev/null
@@ -0,0 +1,3 @@
+Bundle-License: Apache-2.0
+Bundle-SymbolicName: org.apache.commons.cli
+SLC-Origin-M2: commons-cli:commons-cli:1.5.0
diff --git a/repackage/org.argeo.tp.apache/org.apache.commons.codec.bnd b/repackage/org.argeo.tp.apache/org.apache.commons.codec.bnd
new file mode 100644 (file)
index 0000000..fe4bfa6
--- /dev/null
@@ -0,0 +1,3 @@
+Bundle-License: Apache-2.0
+Bundle-SymbolicName: org.apache.commons.codec
+SLC-Origin-M2: commons-codec:commons-codec:1.15
diff --git a/repackage/org.argeo.tp.apache/org.apache.commons.compress.bnd b/repackage/org.argeo.tp.apache/org.apache.commons.compress.bnd
new file mode 100644 (file)
index 0000000..e126b0a
--- /dev/null
@@ -0,0 +1,8 @@
+Bundle-License: Apache-2.0
+Bundle-SymbolicName: org.apache.commons.compress
+SLC-Origin-M2: org.apache.commons:commons-compress:1.21
+Import-Package: \
+org.brotli.*;resolution:=optional,
+org.tukaani.*;resolution:=optional,
+com.github.luben.zstd;resolution:=optional,
+*
\ No newline at end of file
diff --git a/repackage/org.argeo.tp.apache/org.apache.commons.exec.bnd b/repackage/org.argeo.tp.apache/org.apache.commons.exec.bnd
new file mode 100644 (file)
index 0000000..b188587
--- /dev/null
@@ -0,0 +1,3 @@
+Bundle-License: Apache-2.0
+Bundle-SymbolicName: org.apache.commons.exec
+SLC-Origin-M2: org.apache.commons:commons-exec:1.3
\ No newline at end of file
diff --git a/repackage/org.argeo.tp.apache/org.apache.commons.fileupload.bnd b/repackage/org.argeo.tp.apache/org.apache.commons.fileupload.bnd
new file mode 100644 (file)
index 0000000..73b19d4
--- /dev/null
@@ -0,0 +1,6 @@
+Bundle-License: Apache-2.0
+Import-Package:\
+javax.portlet;resolution:=optional,\
+javax.servlet.*;resolution:=optional,\
+*
+SLC-Origin-M2: commons-fileupload:commons-fileupload:1.4
diff --git a/repackage/org.argeo.tp.apache/org.apache.commons.httpclient.bnd b/repackage/org.argeo.tp.apache/org.apache.commons.httpclient.bnd
new file mode 100644 (file)
index 0000000..a064d48
--- /dev/null
@@ -0,0 +1,3 @@
+Bundle-License: Apache-2.0
+Bundle-SymbolicName: org.apache.commons.httpclient
+SLC-Origin-M2: commons-httpclient:commons-httpclient:3.1
diff --git a/repackage/org.argeo.tp.apache/org.apache.commons.io.bnd b/repackage/org.argeo.tp.apache/org.apache.commons.io.bnd
new file mode 100644 (file)
index 0000000..e1e25b3
--- /dev/null
@@ -0,0 +1,4 @@
+Bundle-License: Apache-2.0
+Bundle-SymbolicName: org.apache.commons.io
+SLC-Origin-M2: commons-io:commons-io:2.11.0
+Import-Package: sun.*;resolution:=optional, *
diff --git a/repackage/org.argeo.tp.apache/org.apache.commons.vfs.bnd b/repackage/org.argeo.tp.apache/org.apache.commons.vfs.bnd
new file mode 100644 (file)
index 0000000..3a73689
--- /dev/null
@@ -0,0 +1,5 @@
+Bundle-License: Apache-2.0
+Bundle-SymbolicName: org.apache.commons.vfs
+Import-Package: org.apache.tools.ant.*;resolution:=optional,
+*
+SLC-Origin-M2: org.apache.commons:commons-vfs2:2.9.0
\ No newline at end of file
diff --git a/repackage/org.argeo.tp.apache/org.apache.httpcomponents.httpclient.bnd b/repackage/org.argeo.tp.apache/org.apache.httpcomponents.httpclient.bnd
new file mode 100644 (file)
index 0000000..eead3b2
--- /dev/null
@@ -0,0 +1,3 @@
+Bundle-License: Apache-2.0
+Bundle-SymbolicName: org.apache.httpcomponents.httpclient
+SLC-Origin-M2: org.apache.httpcomponents:httpclient:4.5.13
\ No newline at end of file
diff --git a/repackage/org.argeo.tp.apache/org.apache.httpcomponents.httpcore.bnd b/repackage/org.argeo.tp.apache/org.apache.httpcomponents.httpcore.bnd
new file mode 100644 (file)
index 0000000..b0d0c7a
--- /dev/null
@@ -0,0 +1,3 @@
+Bundle-License: Apache-2.0
+Bundle-SymbolicName: org.apache.httpcomponents.httpcore
+SLC-Origin-M2: org.apache.httpcomponents:httpcore:4.4.15
\ No newline at end of file
diff --git a/repackage/org.argeo.tp.apache/org.apache.httpcomponents.httpmime.bnd b/repackage/org.argeo.tp.apache/org.apache.httpcomponents.httpmime.bnd
new file mode 100644 (file)
index 0000000..1623fb5
--- /dev/null
@@ -0,0 +1,3 @@
+Bundle-License: Apache-2.0
+Bundle-SymbolicName: org.apache.httpcomponents.httpmime
+SLC-Origin-M2: org.apache.httpcomponents:httpmime:4.5.13
\ No newline at end of file
diff --git a/repackage/org.argeo.tp.apache/org.apache.tika.core.bnd b/repackage/org.argeo.tp.apache/org.apache.tika.core.bnd
new file mode 100644 (file)
index 0000000..cfe157a
--- /dev/null
@@ -0,0 +1,4 @@
+Bundle-License: Apache-2.0
+Bundle-SymbolicName: org.apache.tika.core
+SLC-Origin-M2: org.apache.tika:tika-core:1.28.2
+SLC-Origin-ManifestNotModified: true
diff --git a/repackage/org.argeo.tp.apache/org.apache.tika.parsers.bnd b/repackage/org.argeo.tp.apache/org.apache.tika.parsers.bnd
new file mode 100644 (file)
index 0000000..90489d3
--- /dev/null
@@ -0,0 +1,5 @@
+Bundle-Activator: org.apache.tika.parser.internal.Activator
+Bundle-License: Apache-2.0
+Bundle-SymbolicName: org.apache.tika.parsers
+Import-Package: *;resolution:=optional
+SLC-Origin-M2: org.apache.tika:tika-parsers:1.28.2
\ No newline at end of file
diff --git a/repackage/org.argeo.tp.apache/org.apache.tomcat.jni.bnd b/repackage/org.argeo.tp.apache/org.apache.tomcat.jni.bnd
new file mode 100644 (file)
index 0000000..99cb821
--- /dev/null
@@ -0,0 +1,3 @@
+Bundle-License: Apache-2.0
+# Use Tomcat v9 to stay compatible with JNI library v1.2 provided by Debian 11
+SLC-Origin-M2: org.apache.tomcat:tomcat-jni:9.0.43
\ No newline at end of file
diff --git a/repackage/org.argeo.tp.apache/org.apache.xalan.bnd.retired b/repackage/org.argeo.tp.apache/org.apache.xalan.bnd.retired
new file mode 100644 (file)
index 0000000..1d2106b
--- /dev/null
@@ -0,0 +1,3 @@
+Bundle-License: Apache-2.0
+Bundle-SymbolicName: org.apache.xalan
+SLC-Origin-M2: xalan:xalan:2.7.2
\ No newline at end of file
diff --git a/repackage/org.argeo.tp.apache/org.apache.xalan.serializer.bnd.retired b/repackage/org.argeo.tp.apache/org.apache.xalan.serializer.bnd.retired
new file mode 100644 (file)
index 0000000..e0fb19c
--- /dev/null
@@ -0,0 +1,3 @@
+Bundle-License: Apache-2.0
+Bundle-SymbolicName: org.apache.xalan.serializer
+SLC-Origin-M2: xalan:serializer:2.7.2
\ No newline at end of file
diff --git a/repackage/org.argeo.tp.apache/org.apache.xerces.bnd b/repackage/org.argeo.tp.apache/org.apache.xerces.bnd
new file mode 100644 (file)
index 0000000..6cb8646
--- /dev/null
@@ -0,0 +1,6 @@
+Bundle-License: Apache-2.0
+Bundle-SymbolicName: org.apache.xerces
+Import-Package:\
+sun.*;resolution:=optional,\
+*
+SLC-Origin-M2: xerces:xercesImpl:2.12.2
\ No newline at end of file
diff --git a/repackage/org.argeo.tp.apache/org.apache.xml.resolver.bnd b/repackage/org.argeo.tp.apache/org.apache.xml.resolver.bnd
new file mode 100644 (file)
index 0000000..95f9a5e
--- /dev/null
@@ -0,0 +1,3 @@
+Bundle-License: Apache-2.0
+Bundle-SymbolicName: org.apache.xml.resolver
+SLC-Origin-M2: xml-resolver:xml-resolver:1.2
\ No newline at end of file
diff --git a/repackage/org.argeo.tp.apache/org.apache.xmlgraphics.bnd.retired b/repackage/org.argeo.tp.apache/org.apache.xmlgraphics.bnd.retired
new file mode 100644 (file)
index 0000000..254a0af
--- /dev/null
@@ -0,0 +1,3 @@
+Bundle-License: Apache-2.0
+Bundle-SymbolicName: org.apache.xmlgraphics
+SLC-Origin-M2: org.apache.xmlgraphics:xmlgraphics-commons:2.7
diff --git a/repackage/org.argeo.tp.apache/xalan/merge.bnd b/repackage/org.argeo.tp.apache/xalan/merge.bnd
new file mode 100644 (file)
index 0000000..4c36a94
--- /dev/null
@@ -0,0 +1,6 @@
+Bundle-SymbolicName: org.apache.xalan
+SLC-Origin-M2: :2.7.2
+Export-Package: org.apache.*
+SLC-Origin-M2-Merge: \
+xalan:xalan,\
+xalan:serializer,\
\ No newline at end of file
diff --git a/repackage/org.argeo.tp.apache/xmlgraphics/merge.bnd b/repackage/org.argeo.tp.apache/xmlgraphics/merge.bnd
new file mode 100644 (file)
index 0000000..8cb1d14
--- /dev/null
@@ -0,0 +1,11 @@
+Bundle-License: Apache-2.0
+Bundle-SymbolicName: org.apache.xmlgraphics
+SLC-Origin-M2: :2.7
+SLC-Origin-M2-Merge: \
+org.apache.xmlgraphics:xmlgraphics-commons
+Export-Package: org.apache.xmlgraphics.*
+Import-Package: \
+org.apache.fop.image.loader.batik;resolution:="optional", \
+org.apache.fop.render.pdf.pdfbox;resolution:="optional", \
+*
+
diff --git a/repackage/org.argeo.tp.apache/xmlgraphics/services/org.apache.xmlgraphics.image.loader.spi.ImageConverter b/repackage/org.argeo.tp.apache/xmlgraphics/services/org.apache.xmlgraphics.image.loader.spi.ImageConverter
new file mode 100644 (file)
index 0000000..292f716
--- /dev/null
@@ -0,0 +1,5 @@
+org.apache.fop.image.loader.batik.ImageConverterSVG2G2D
+org.apache.fop.image.loader.batik.ImageConverterG2D2SVG
+org.apache.fop.image.loader.batik.ImageConverterWMF2G2D
+org.apache.fop.render.pdf.pdfbox.ImageConverterPDF2AFP
+org.apache.fop.render.pdf.pdfbox.ImageConverterPDF2G2D
\ No newline at end of file
diff --git a/repackage/org.argeo.tp.apache/xmlgraphics/services/org.apache.xmlgraphics.image.loader.spi.ImageLoaderFactory b/repackage/org.argeo.tp.apache/xmlgraphics/services/org.apache.xmlgraphics.image.loader.spi.ImageLoaderFactory
new file mode 100644 (file)
index 0000000..27dc74a
--- /dev/null
@@ -0,0 +1,4 @@
+org.apache.fop.image.loader.batik.ImageLoaderFactorySVG
+org.apache.fop.image.loader.batik.ImageLoaderFactoryWMF
+org.apache.fop.render.pdf.pdfbox.ImageLoaderFactoryPDF
+org.apache.fop.render.pdf.pdfbox.ImageLoaderFactoryImageRawData
\ No newline at end of file
diff --git a/repackage/org.argeo.tp.apache/xmlgraphics/services/org.apache.xmlgraphics.image.loader.spi.ImagePreloader b/repackage/org.argeo.tp.apache/xmlgraphics/services/org.apache.xmlgraphics.image.loader.spi.ImagePreloader
new file mode 100644 (file)
index 0000000..82f7977
--- /dev/null
@@ -0,0 +1,5 @@
+org.apache.fop.image.loader.batik.PreloaderWMF
+org.apache.fop.image.loader.batik.PreloaderSVG
+org.apache.fop.render.pdf.pdfbox.PreloaderPDF
+org.apache.fop.render.pdf.pdfbox.PreloaderImageRawData
+org.apache.fop.render.pdf.pdfbox.LastResortPreloaderPDF
\ No newline at end of file
diff --git a/repackage/org.argeo.tp.formats/com.adobe.xmp.xmpcore.bnd b/repackage/org.argeo.tp.formats/com.adobe.xmp.xmpcore.bnd
new file mode 100644 (file)
index 0000000..e706659
--- /dev/null
@@ -0,0 +1,4 @@
+Bundle-License: BSD-3-Clause
+Bundle-SymbolicName: com.adobe.xmp.xmpcore
+# No source available in Maven Central for 6.1.11
+SLC-Origin-M2: com.adobe.xmp:xmpcore:6.1.10
diff --git a/repackage/org.argeo.tp.formats/com.drew.metadata.bnd b/repackage/org.argeo.tp.formats/com.drew.metadata.bnd
new file mode 100644 (file)
index 0000000..f32421a
--- /dev/null
@@ -0,0 +1,3 @@
+Bundle-License: Apache-2.0
+Bundle-SymbolicName: com.drew.metadata
+SLC-Origin-M2: com.drewnoakes:metadata-extractor:2.16.0
diff --git a/repackage/org.argeo.tp.formats/com.github.mangstadt.biweekly.bnd b/repackage/org.argeo.tp.formats/com.github.mangstadt.biweekly.bnd
new file mode 100644 (file)
index 0000000..395c233
--- /dev/null
@@ -0,0 +1,3 @@
+Bundle-License: BSD-2-Clause
+Bundle-SymbolicName: com.github.mangstadt.beweekly
+SLC-Origin-M2: net.sf.biweekly:biweekly:0.6.6
\ No newline at end of file
diff --git a/repackage/org.argeo.tp.formats/com.github.mangstadt.ezvcard.bnd b/repackage/org.argeo.tp.formats/com.github.mangstadt.ezvcard.bnd
new file mode 100644 (file)
index 0000000..8aa1e6e
--- /dev/null
@@ -0,0 +1,8 @@
+Bundle-License: BSD-2-Clause
+Bundle-SymbolicName: com.github.mangstadt.ezvcard
+SLC-Origin-M2: com.googlecode.ez-vcard:ez-vcard:0.11.3
+Import-Package: \
+freemarker.*;resolution:="optional", \
+com.fasterxml.jackson.*;resolution:="optional", \
+org.jsoup.*;resolution:="optional", \
+*
\ No newline at end of file
diff --git a/repackage/org.argeo.tp.formats/com.github.mangstadt.vinnie.bnd b/repackage/org.argeo.tp.formats/com.github.mangstadt.vinnie.bnd
new file mode 100644 (file)
index 0000000..eded65b
--- /dev/null
@@ -0,0 +1,3 @@
+Bundle-License: MIT
+Bundle-SymbolicName: com.github.mangstadt.vinnie
+SLC-Origin-M2: com.github.mangstadt:vinnie:2.0.2
\ No newline at end of file
diff --git a/repackage/org.argeo.tp.formats/com.graphbuilder.bnd b/repackage/org.argeo.tp.formats/com.graphbuilder.bnd
new file mode 100644 (file)
index 0000000..d400fd7
--- /dev/null
@@ -0,0 +1,3 @@
+Bundle-License: BSD-3-Clause
+Bundle-SymbolicName: com.graphbuilder
+SLC-Origin-M2: com.github.virtuald:curvesapi:1.07
diff --git a/repackage/org.argeo.tp.formats/com.lowagie.bnd b/repackage/org.argeo.tp.formats/com.lowagie.bnd
new file mode 100644 (file)
index 0000000..b8bd293
--- /dev/null
@@ -0,0 +1,3 @@
+Bundle-License: LGPL-2.1
+Bundle-SymbolicName: com.lowagie
+SLC-Origin-M2: com.github.librepdf:openpdf:1.3.27
diff --git a/repackage/org.argeo.tp.formats/de.rototor.pdfbox.graphics2d.bnd b/repackage/org.argeo.tp.formats/de.rototor.pdfbox.graphics2d.bnd
new file mode 100644 (file)
index 0000000..b6f5736
--- /dev/null
@@ -0,0 +1,3 @@
+Bundle-License: Apache-2.0
+Bundle-SymbolicName: de.rototor.pdfbox.graphics2d
+SLC-Origin-M2: de.rototor.pdfbox:graphics2d:0.35
diff --git a/repackage/org.argeo.tp.formats/flying-saucer/common.bnd b/repackage/org.argeo.tp.formats/flying-saucer/common.bnd
new file mode 100644 (file)
index 0000000..8fc898c
--- /dev/null
@@ -0,0 +1,2 @@
+Bundle-License: LGPL-3
+SLC-Origin-M2: :9.1.22
\ No newline at end of file
diff --git a/repackage/org.argeo.tp.formats/flying-saucer/org.xhtmlrenderer.core.bnd b/repackage/org.argeo.tp.formats/flying-saucer/org.xhtmlrenderer.core.bnd
new file mode 100644 (file)
index 0000000..19312ee
--- /dev/null
@@ -0,0 +1 @@
+SLC-Origin-M2: org.xhtmlrenderer:flying-saucer-core
diff --git a/repackage/org.argeo.tp.formats/flying-saucer/org.xhtmlrenderer.openpdf.bnd b/repackage/org.argeo.tp.formats/flying-saucer/org.xhtmlrenderer.openpdf.bnd
new file mode 100644 (file)
index 0000000..0c241bd
--- /dev/null
@@ -0,0 +1 @@
+SLC-Origin-M2: org.xhtmlrenderer:flying-saucer-pdf-openpdf
diff --git a/repackage/org.argeo.tp.formats/flying-saucer/org.xhtmlrenderer.swt.bnd b/repackage/org.argeo.tp.formats/flying-saucer/org.xhtmlrenderer.swt.bnd
new file mode 100644 (file)
index 0000000..6b89d64
--- /dev/null
@@ -0,0 +1,4 @@
+SLC-Origin-M2: org.xhtmlrenderer:flying-saucer-swt
+Import-Package:\
+org.eclipse.swt.printing;resolution:="optional",\
+*
\ No newline at end of file
diff --git a/repackage/org.argeo.tp.formats/fop/merge.bnd b/repackage/org.argeo.tp.formats/fop/merge.bnd
new file mode 100644 (file)
index 0000000..b8f6548
--- /dev/null
@@ -0,0 +1,16 @@
+Bundle-License: Apache-2.0
+Bundle-SymbolicName: org.apache.fop
+SLC-Origin-M2: :2.7
+SLC-Origin-M2-Merge: \
+org.apache.xmlgraphics:fop-core,\
+org.apache.xmlgraphics:fop-util,\
+org.apache.xmlgraphics:fop-events,\
+org.apache.xmlgraphics:fop-pdf-images,\
+
+Export-Package: org.apache.fop.*
+
+Import-Package: \
+javax.media.jai;resolution:="optional",\
+com.thoughtworks.qdox.*;resolution:="optional",\
+org.apache.tools.ant.*;resolution:="optional",\
+*
diff --git a/repackage/org.argeo.tp.formats/io.nayuki.qrcodegen.bnd b/repackage/org.argeo.tp.formats/io.nayuki.qrcodegen.bnd
new file mode 100644 (file)
index 0000000..34445b6
--- /dev/null
@@ -0,0 +1,2 @@
+Bundle-License: MIT
+SLC-Origin-M2: io.nayuki:qrcodegen:1.8.0
diff --git a/repackage/org.argeo.tp.formats/javax.xml.bind.bnd b/repackage/org.argeo.tp.formats/javax.xml.bind.bnd
new file mode 100644 (file)
index 0000000..a827549
--- /dev/null
@@ -0,0 +1,7 @@
+Bundle-License: CDDL-1.0 OR GPL-2.0 WITH Classpath-exception-2.0
+Bundle-SymbolicName: javax.xml.bind
+Bundle-Version: 2.4.0
+SLC-Origin-M2: javax.xml.bind:jaxb-api:2.4.0-b180830.0359
+Import-Package: \
+org.glassfish.hk2.osgiresourcelocator;resolution:="optional",\
+*
diff --git a/repackage/org.argeo.tp.formats/org.apache.commons.collections4.bnd b/repackage/org.argeo.tp.formats/org.apache.commons.collections4.bnd
new file mode 100644 (file)
index 0000000..4379a19
--- /dev/null
@@ -0,0 +1,3 @@
+Bundle-License: Apache-2.0
+Bundle-SymbolicName: org.apache.commons.collections4
+SLC-Origin-M2: org.apache.commons:commons-collections4:4.4
\ No newline at end of file
diff --git a/repackage/org.argeo.tp.formats/org.apache.commons.csv.bnd b/repackage/org.argeo.tp.formats/org.apache.commons.csv.bnd
new file mode 100644 (file)
index 0000000..94f8301
--- /dev/null
@@ -0,0 +1,3 @@
+Bundle-License: Apache-2.0
+Bundle-SymbolicName: org.apache.commons.csv
+SLC-Origin-M2: org.apache.commons:commons-csv:1.9.0
diff --git a/repackage/org.argeo.tp.formats/org.apache.commons.imaging.bnd b/repackage/org.argeo.tp.formats/org.apache.commons.imaging.bnd
new file mode 100644 (file)
index 0000000..16e0882
--- /dev/null
@@ -0,0 +1,4 @@
+Bundle-License: Apache-2.0
+Bundle-SymbolicName: org.apache.commons.imaging
+Bundle-Version: 0.99.2
+SLC-Origin-M2: org.apache.commons:commons-imaging:1.0-alpha2
diff --git a/repackage/org.argeo.tp.formats/org.apache.commons.lang3.bnd b/repackage/org.argeo.tp.formats/org.apache.commons.lang3.bnd
new file mode 100644 (file)
index 0000000..373f647
--- /dev/null
@@ -0,0 +1,3 @@
+Bundle-License: Apache-2.0
+Bundle-SymbolicName: org.apache.commons.lang3
+SLC-Origin-M2: org.apache.commons:commons-lang3:3.12.0
diff --git a/repackage/org.argeo.tp.formats/org.apache.commons.math3.bnd b/repackage/org.argeo.tp.formats/org.apache.commons.math3.bnd
new file mode 100644 (file)
index 0000000..cc8d131
--- /dev/null
@@ -0,0 +1,3 @@
+Bundle-License: Apache-2.0
+Bundle-SymbolicName: org.apache.commons.math3
+SLC-Origin-M2: org.apache.commons:commons-math3:3.5
diff --git a/repackage/org.argeo.tp.formats/org.apache.commons.text.bnd b/repackage/org.argeo.tp.formats/org.apache.commons.text.bnd
new file mode 100644 (file)
index 0000000..b85c146
--- /dev/null
@@ -0,0 +1,3 @@
+Bundle-License: Apache-2.0
+Bundle-SymbolicName: org.apache.commons.text
+SLC-Origin-M2: org.apache.commons:commons-text:1.9
diff --git a/repackage/org.argeo.tp.formats/org.apache.pdfbox.jempbox.bnd b/repackage/org.argeo.tp.formats/org.apache.pdfbox.jempbox.bnd
new file mode 100644 (file)
index 0000000..0689779
--- /dev/null
@@ -0,0 +1,3 @@
+Bundle-License: Apache-2.0
+Bundle-SymbolicName: org.apache.pdfbox.jempbox
+SLC-Origin-M2: org.apache.pdfbox:jempbox:1.8.16
diff --git a/repackage/org.argeo.tp.formats/org.apache.xml.security.bnd b/repackage/org.argeo.tp.formats/org.apache.xml.security.bnd
new file mode 100644 (file)
index 0000000..8600cbb
--- /dev/null
@@ -0,0 +1,3 @@
+Bundle-License: Apache-2.0
+Bundle-SymbolicName: org.apache.xml.security
+SLC-Origin-M2: org.apache.santuario:xmlsec:2.1.2
diff --git a/repackage/org.argeo.tp.formats/org.mozilla.javascript.bnd b/repackage/org.argeo.tp.formats/org.mozilla.javascript.bnd
new file mode 100644 (file)
index 0000000..277db30
--- /dev/null
@@ -0,0 +1,4 @@
+Bundle-License: MPL-2.0
+Bundle-SymbolicName: org.mozilla.javascript
+SLC-Origin-M2: org.mozilla:rhino:1.7.14
+SLC-Origin-ManifestNotModified: true
diff --git a/repackage/org.argeo.tp.formats/pdfbox/common.bnd b/repackage/org.argeo.tp.formats/pdfbox/common.bnd
new file mode 100644 (file)
index 0000000..165d7c4
--- /dev/null
@@ -0,0 +1,2 @@
+Bundle-License: Apache-2.0
+SLC-Origin-M2: :2.0.25
\ No newline at end of file
diff --git a/repackage/org.argeo.tp.formats/pdfbox/org.apache.pdfbox.bnd b/repackage/org.argeo.tp.formats/pdfbox/org.apache.pdfbox.bnd
new file mode 100644 (file)
index 0000000..1adc204
--- /dev/null
@@ -0,0 +1,5 @@
+Bundle-SymbolicName: org.apache.pdfbox
+SLC-Origin-M2: org.apache.pdfbox:pdfbox
+Import-Package: \
+sun.java2d.cmm.kcms;resolution:="optional",\
+*
\ No newline at end of file
diff --git a/repackage/org.argeo.tp.formats/pdfbox/org.apache.pdfbox.fontbox.bnd b/repackage/org.argeo.tp.formats/pdfbox/org.apache.pdfbox.fontbox.bnd
new file mode 100644 (file)
index 0000000..519f90f
--- /dev/null
@@ -0,0 +1,2 @@
+Bundle-SymbolicName: org.apache.pdfbox.fontbox
+SLC-Origin-M2: org.apache.pdfbox:fontbox
diff --git a/repackage/org.argeo.tp.formats/pdfbox/org.apache.pdfbox.xmpbox.bnd b/repackage/org.argeo.tp.formats/pdfbox/org.apache.pdfbox.xmpbox.bnd
new file mode 100644 (file)
index 0000000..8a0c26c
--- /dev/null
@@ -0,0 +1,2 @@
+Bundle-SymbolicName: org.apache.pdfbox.xmpbox
+SLC-Origin-M2: org.apache.pdfbox:xmpbox
diff --git a/repackage/org.argeo.tp.gis/Repackage.java b/repackage/org.argeo.tp.gis/Repackage.java
new file mode 100644 (file)
index 0000000..d902efb
--- /dev/null
@@ -0,0 +1,1174 @@
+package org.argeo.build;
+
+import static java.lang.System.Logger.Level.DEBUG;
+import static org.argeo.build.Repackage.ManifestConstants.BUNDLE_SYMBOLICNAME;
+import static org.argeo.build.Repackage.ManifestConstants.BUNDLE_VERSION;
+import static org.argeo.build.Repackage.ManifestConstants.EXPORT_PACKAGE;
+import static org.argeo.build.Repackage.ManifestConstants.SLC_ORIGIN_M2;
+import static org.argeo.build.Repackage.ManifestConstants.SLC_ORIGIN_M2_REPO;
+
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+import java.lang.System.Logger;
+import java.lang.System.Logger.Level;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.nio.file.DirectoryStream;
+import java.nio.file.FileSystem;
+import java.nio.file.FileSystems;
+import java.nio.file.FileVisitResult;
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.PathMatcher;
+import java.nio.file.Paths;
+import java.nio.file.SimpleFileVisitor;
+import java.nio.file.StandardOpenOption;
+import java.nio.file.attribute.BasicFileAttributes;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Objects;
+import java.util.Properties;
+import java.util.TreeMap;
+import java.util.jar.Attributes;
+import java.util.jar.JarEntry;
+import java.util.jar.JarInputStream;
+import java.util.jar.JarOutputStream;
+import java.util.jar.Manifest;
+import java.util.zip.Deflater;
+
+import aQute.bnd.osgi.Analyzer;
+import aQute.bnd.osgi.Jar;
+
+/** The central class for A2 packaging. */
+public class Repackage {
+       private final static Logger logger = System.getLogger(Repackage.class.getName());
+
+       /** Main entry point. */
+       public static void main(String[] args) {
+               if (args.length < 2) {
+                       System.err.println("Usage: <path to a2 output dir> <category1> <category2> ...");
+                       System.exit(1);
+               }
+               Path a2Base = Paths.get(args[0]).toAbsolutePath().normalize();
+               Path descriptorsBase = Paths.get(".").toAbsolutePath().normalize();
+               Repackage factory = new Repackage(a2Base, descriptorsBase, true);
+
+               for (int i = 1; i < args.length; i++) {
+                       Path p = Paths.get(args[i]);
+                       factory.processCategory(p);
+               }
+       }
+
+       private final static String COMMON_BND = "common.bnd";
+       private final static String MERGE_BND = "merge.bnd";
+
+       private Path originBase;
+       private Path a2Base;
+       private Path a2LibBase;
+       private Path descriptorsBase;
+
+       private Properties uris = new Properties();
+
+       private boolean includeSources = true;
+
+       /** key is URI prefix, value list of base URLs */
+       private Map<String, List<String>> mirrors = new HashMap<String, List<String>>();
+
+       public Repackage(Path a2Base, Path descriptorsBase, boolean includeSources) {
+               Objects.requireNonNull(a2Base);
+               Objects.requireNonNull(descriptorsBase);
+               this.originBase = Paths.get(System.getProperty("user.home"), ".cache", "argeo/build/origin");
+               // TODO define and use a build base
+               this.a2Base = a2Base;
+               this.a2LibBase = a2Base.resolve("lib");
+               this.descriptorsBase = descriptorsBase;
+               if (!Files.exists(this.descriptorsBase))
+                       throw new IllegalArgumentException(this.descriptorsBase + " does not exist");
+               this.includeSources = includeSources;
+
+               Path urisPath = this.descriptorsBase.resolve("uris.properties");
+               if (Files.exists(urisPath)) {
+                       try (InputStream in = Files.newInputStream(urisPath)) {
+                               uris.load(in);
+                       } catch (IOException e) {
+                               throw new IllegalStateException("Cannot load " + urisPath, e);
+                       }
+               }
+
+               // TODO make it configurable
+               List<String> eclipseMirrors = new ArrayList<>();
+               eclipseMirrors.add("https://archive.eclipse.org/");
+               eclipseMirrors.add("http://ftp-stud.hs-esslingen.de/Mirrors/eclipse/");
+               eclipseMirrors.add("http://ftp.fau.de/eclipse/");
+
+               mirrors.put("http://www.eclipse.org/downloads", eclipseMirrors);
+       }
+
+       /*
+        * MAVEN ORIGIN
+        */
+
+       /** Process a whole category/group id. */
+       public void processCategory(Path categoryRelativePath) {
+               try {
+                       Path targetCategoryBase = descriptorsBase.resolve(categoryRelativePath);
+                       DirectoryStream<Path> bnds = Files.newDirectoryStream(targetCategoryBase,
+                                       (p) -> p.getFileName().toString().endsWith(".bnd") && !p.getFileName().toString().equals(COMMON_BND)
+                                                       && !p.getFileName().toString().equals(MERGE_BND));
+                       for (Path p : bnds) {
+                               processSingleM2ArtifactDistributionUnit(p);
+                       }
+
+                       DirectoryStream<Path> dus = Files.newDirectoryStream(targetCategoryBase, (p) -> Files.isDirectory(p));
+                       for (Path duDir : dus) {
+                               if (duDir.getFileName().toString().startsWith("eclipse-")) {
+                                       processEclipseArchive(duDir);
+                               } else {
+                                       processM2BasedDistributionUnit(duDir);
+                               }
+                       }
+               } catch (IOException e) {
+                       throw new RuntimeException("Cannot process category " + categoryRelativePath, e);
+               }
+       }
+
+       /** Process a standalone Maven artifact. */
+       public void processSingleM2ArtifactDistributionUnit(Path bndFile) {
+               try {
+//                     String category = bndFile.getParent().getFileName().toString();
+                       Path categoryRelativePath = descriptorsBase.relativize(bndFile.getParent());
+                       Path targetCategoryBase = a2Base.resolve(categoryRelativePath);
+
+                       Properties fileProps = new Properties();
+                       try (InputStream in = Files.newInputStream(bndFile)) {
+                               fileProps.load(in);
+                       }
+                       String repoStr = fileProps.containsKey(SLC_ORIGIN_M2_REPO.toString())
+                                       ? fileProps.getProperty(SLC_ORIGIN_M2_REPO.toString())
+                                       : null;
+
+                       if (!fileProps.containsKey(BUNDLE_SYMBOLICNAME.toString())) {
+                               // use file name as symbolic name
+                               String symbolicName = bndFile.getFileName().toString();
+                               symbolicName = symbolicName.substring(0, symbolicName.length() - ".bnd".length());
+                               fileProps.put(BUNDLE_SYMBOLICNAME.toString(), symbolicName);
+                       }
+
+                       String m2Coordinates = fileProps.getProperty(SLC_ORIGIN_M2.toString());
+                       if (m2Coordinates == null)
+                               throw new IllegalArgumentException("No M2 coordinates available for " + bndFile);
+                       M2Artifact artifact = new M2Artifact(m2Coordinates);
+                       URL url = M2ConventionsUtils.mavenRepoUrl(repoStr, artifact);
+                       Path downloaded = download(url, originBase, artifact);
+
+                       Path targetBundleDir = processBndJar(downloaded, targetCategoryBase, fileProps, artifact);
+
+                       downloadAndProcessM2Sources(repoStr, artifact, targetBundleDir);
+
+                       createJar(targetBundleDir);
+               } catch (Exception e) {
+                       throw new RuntimeException("Cannot process " + bndFile, e);
+               }
+       }
+
+       /** Process multiple Maven artifacts. */
+       public void processM2BasedDistributionUnit(Path duDir) {
+               try {
+                       // String category = duDir.getParent().getFileName().toString();
+                       Path categoryRelativePath = descriptorsBase.relativize(duDir.getParent());
+                       Path targetCategoryBase = a2Base.resolve(categoryRelativePath);
+
+                       // merge
+                       Path mergeBnd = duDir.resolve(MERGE_BND);
+                       if (Files.exists(mergeBnd)) {
+                               mergeM2Artifacts(mergeBnd);
+//                             return;
+                       }
+
+                       Path commonBnd = duDir.resolve(COMMON_BND);
+                       if (!Files.exists(commonBnd)) {
+                               return;
+                       }
+                       Properties commonProps = new Properties();
+                       try (InputStream in = Files.newInputStream(commonBnd)) {
+                               commonProps.load(in);
+                       }
+
+                       String m2Version = commonProps.getProperty(SLC_ORIGIN_M2.toString());
+                       if (m2Version == null) {
+                               logger.log(Level.WARNING, "Ignoring " + duDir + " as it is not an M2-based distribution unit");
+                               return;// ignore, this is probably an Eclipse archive
+                       }
+                       if (!m2Version.startsWith(":")) {
+                               throw new IllegalStateException("Only the M2 version can be specified: " + m2Version);
+                       }
+                       m2Version = m2Version.substring(1);
+
+                       DirectoryStream<Path> ds = Files.newDirectoryStream(duDir,
+                                       (p) -> p.getFileName().toString().endsWith(".bnd") && !p.getFileName().toString().equals(COMMON_BND)
+                                                       && !p.getFileName().toString().equals(MERGE_BND));
+                       for (Path p : ds) {
+                               Properties fileProps = new Properties();
+                               try (InputStream in = Files.newInputStream(p)) {
+                                       fileProps.load(in);
+                               }
+                               String m2Coordinates = fileProps.getProperty(SLC_ORIGIN_M2.toString());
+                               M2Artifact artifact = new M2Artifact(m2Coordinates);
+
+                               artifact.setVersion(m2Version);
+
+                               // prepare manifest entries
+                               Properties mergeProps = new Properties();
+                               mergeProps.putAll(commonProps);
+
+                               fileEntries: for (Object key : fileProps.keySet()) {
+                                       if (ManifestConstants.SLC_ORIGIN_M2.toString().equals(key))
+                                               continue fileEntries;
+                                       String value = fileProps.getProperty(key.toString());
+                                       Object previousValue = mergeProps.put(key.toString(), value);
+                                       if (previousValue != null) {
+                                               logger.log(Level.WARNING,
+                                                               commonBnd + ": " + key + " was " + previousValue + ", overridden with " + value);
+                                       }
+                               }
+                               mergeProps.put(ManifestConstants.SLC_ORIGIN_M2.toString(), artifact.toM2Coordinates());
+                               if (!mergeProps.containsKey(BUNDLE_SYMBOLICNAME.toString())) {
+                                       // use file name as symbolic name
+                                       String symbolicName = p.getFileName().toString();
+                                       symbolicName = symbolicName.substring(0, symbolicName.length() - ".bnd".length());
+                                       mergeProps.put(BUNDLE_SYMBOLICNAME.toString(), symbolicName);
+                               }
+
+                               String repoStr = mergeProps.containsKey(SLC_ORIGIN_M2_REPO.toString())
+                                               ? mergeProps.getProperty(SLC_ORIGIN_M2_REPO.toString())
+                                               : null;
+
+                               // download
+                               URL url = M2ConventionsUtils.mavenRepoUrl(repoStr, artifact);
+                               Path downloaded = download(url, originBase, artifact);
+
+                               Path targetBundleDir = processBndJar(downloaded, targetCategoryBase, mergeProps, artifact);
+//                             logger.log(Level.DEBUG, () -> "Processed " + downloaded);
+
+                               // sources
+                               downloadAndProcessM2Sources(repoStr, artifact, targetBundleDir);
+
+                               createJar(targetBundleDir);
+                       }
+               } catch (IOException e) {
+                       throw new RuntimeException("Cannot process " + duDir, e);
+               }
+
+       }
+
+       /** Merge multiple Maven artifacts. */
+       protected void mergeM2Artifacts(Path mergeBnd) throws IOException {
+               Path duDir = mergeBnd.getParent();
+               String category = duDir.getParent().getFileName().toString();
+               Path targetCategoryBase = a2Base.resolve(category);
+
+               Properties mergeProps = new Properties();
+               try (InputStream in = Files.newInputStream(mergeBnd)) {
+                       mergeProps.load(in);
+               }
+
+               // Version
+               String m2Version = mergeProps.getProperty(SLC_ORIGIN_M2.toString());
+               if (m2Version == null) {
+                       logger.log(Level.WARNING, "Ignoring " + duDir + " as it is not an M2-based distribution unit");
+                       return;// ignore, this is probably an Eclipse archive
+               }
+               if (!m2Version.startsWith(":")) {
+                       throw new IllegalStateException("Only the M2 version can be specified: " + m2Version);
+               }
+               m2Version = m2Version.substring(1);
+               mergeProps.put(ManifestConstants.BUNDLE_VERSION.toString(), m2Version);
+
+               String artifactsStr = mergeProps.getProperty(ManifestConstants.SLC_ORIGIN_M2_MERGE.toString());
+               String repoStr = mergeProps.containsKey(SLC_ORIGIN_M2_REPO.toString())
+                               ? mergeProps.getProperty(SLC_ORIGIN_M2_REPO.toString())
+                               : null;
+
+               String bundleSymbolicName = mergeProps.getProperty(ManifestConstants.BUNDLE_SYMBOLICNAME.toString());
+               if (bundleSymbolicName == null)
+                       throw new IllegalArgumentException("Bundle-SymbolicName must be set in " + mergeBnd);
+               CategoryNameVersion nameVersion = new M2Artifact(category + ":" + bundleSymbolicName + ":" + m2Version);
+               Path targetBundleDir = targetCategoryBase.resolve(bundleSymbolicName + "." + nameVersion.getBranch());
+
+               String[] artifacts = artifactsStr.split(",");
+               artifacts: for (String str : artifacts) {
+                       String m2Coordinates = str.trim();
+                       if ("".equals(m2Coordinates))
+                               continue artifacts;
+                       M2Artifact artifact = new M2Artifact(m2Coordinates.trim());
+                       if (artifact.getVersion() == null)
+                               artifact.setVersion(m2Version);
+                       URL url = M2ConventionsUtils.mavenRepoUrl(repoStr, artifact);
+                       Path downloaded = download(url, originBase, artifact);
+                       JarEntry entry;
+                       try (JarInputStream jarIn = new JarInputStream(Files.newInputStream(downloaded), false)) {
+                               entries: while ((entry = jarIn.getNextJarEntry()) != null) {
+                                       if (entry.isDirectory())
+                                               continue entries;
+                                       else if (entry.getName().endsWith(".RSA") || entry.getName().endsWith(".SF"))
+                                               continue entries;
+                                       else if (entry.getName().startsWith("META-INF/versions/"))
+                                               continue entries;
+                                       else if (entry.getName().startsWith("META-INF/maven/"))
+                                               continue entries;
+                                       else if (entry.getName().equals("module-info.class"))
+                                               continue entries;
+                                       else if (entry.getName().equals("META-INF/NOTICE"))
+                                               continue entries;
+                                       else if (entry.getName().equals("META-INF/NOTICE.txt"))
+                                               continue entries;
+                                       else if (entry.getName().equals("META-INF/LICENSE"))
+                                               continue entries;
+                                       else if (entry.getName().equals("META-INF/LICENSE.md"))
+                                               continue entries;
+                                       else if (entry.getName().equals("META-INF/LICENSE-notice.md"))
+                                               continue entries;
+                                       else if (entry.getName().equals("META-INF/DEPENDENCIES"))
+                                               continue entries;
+                                       if (entry.getName().startsWith(".cache/")) // Apache SSHD
+                                               continue entries;
+                                       Path target = targetBundleDir.resolve(entry.getName());
+                                       Files.createDirectories(target.getParent());
+                                       if (!Files.exists(target)) {
+                                               Files.copy(jarIn, target);
+                                       } else {
+                                               if (entry.getName().startsWith("META-INF/services/")) {
+                                                       try (OutputStream out = Files.newOutputStream(target, StandardOpenOption.APPEND)) {
+                                                               out.write("\n".getBytes());
+                                                               jarIn.transferTo(out);
+                                                               if (logger.isLoggable(DEBUG))
+                                                                       logger.log(DEBUG, artifact.getArtifactId() + " - Appended " + entry.getName());
+                                                       }
+                                               } else if (entry.getName().startsWith("org/apache/batik/")) {
+                                                       logger.log(Level.WARNING, "Skip " + entry.getName());
+                                                       continue entries;
+                                               } else {
+                                                       throw new IllegalStateException("File " + target + " from " + artifact + " already exists");
+                                               }
+                                       }
+                                       logger.log(Level.TRACE, () -> "Copied " + target);
+                               }
+
+                       }
+                       downloadAndProcessM2Sources(repoStr, artifact, targetBundleDir);
+               }
+
+               // additional service files
+               Path servicesDir = duDir.resolve("services");
+               if (Files.exists(servicesDir)) {
+                       for (Path p : Files.newDirectoryStream(servicesDir)) {
+                               Path target = targetBundleDir.resolve("META-INF/services/").resolve(p.getFileName());
+                               try (InputStream in = Files.newInputStream(p);
+                                               OutputStream out = Files.newOutputStream(target, StandardOpenOption.APPEND);) {
+                                       out.write("\n".getBytes());
+                                       in.transferTo(out);
+                                       if (logger.isLoggable(DEBUG))
+                                               logger.log(DEBUG, "Appended " + p);
+                               }
+                       }
+               }
+
+               Map<String, String> entries = new TreeMap<>();
+               try (Analyzer bndAnalyzer = new Analyzer()) {
+                       bndAnalyzer.setProperties(mergeProps);
+                       Jar jar = new Jar(targetBundleDir.toFile());
+                       bndAnalyzer.setJar(jar);
+                       Manifest manifest = bndAnalyzer.calcManifest();
+
+                       keys: for (Object key : manifest.getMainAttributes().keySet()) {
+                               Object value = manifest.getMainAttributes().get(key);
+
+                               switch (key.toString()) {
+                               case "Tool":
+                               case "Bnd-LastModified":
+                               case "Created-By":
+                                       continue keys;
+                               }
+                               if ("Require-Capability".equals(key.toString())
+                                               && value.toString().equals("osgi.ee;filter:=\"(&(osgi.ee=JavaSE)(version=1.1))\""))
+                                       continue keys;// hack for very old classes
+                               entries.put(key.toString(), value.toString());
+                               // logger.log(DEBUG, () -> key + "=" + value);
+
+                       }
+               } catch (Exception e) {
+                       throw new RuntimeException("Cannot process " + mergeBnd, e);
+               }
+
+               Manifest manifest = new Manifest();
+               Path manifestPath = targetBundleDir.resolve("META-INF/MANIFEST.MF");
+               Files.createDirectories(manifestPath.getParent());
+               for (String key : entries.keySet()) {
+                       String value = entries.get(key);
+                       manifest.getMainAttributes().putValue(key, value);
+               }
+
+               try (OutputStream out = Files.newOutputStream(manifestPath)) {
+                       manifest.write(out);
+               }
+               createJar(targetBundleDir);
+       }
+
+       /** Generate MANIFEST using BND. */
+       protected Path processBndJar(Path downloaded, Path targetCategoryBase, Properties fileProps, M2Artifact artifact) {
+
+               try {
+                       Map<String, String> additionalEntries = new TreeMap<>();
+                       boolean doNotModify = Boolean.parseBoolean(fileProps
+                                       .getOrDefault(ManifestConstants.SLC_ORIGIN_MANIFEST_NOT_MODIFIED.toString(), "false").toString());
+
+                       // we always force the symbolic name
+
+                       if (doNotModify) {
+                               fileEntries: for (Object key : fileProps.keySet()) {
+                                       if (ManifestConstants.SLC_ORIGIN_M2.toString().equals(key))
+                                               continue fileEntries;
+                                       String value = fileProps.getProperty(key.toString());
+                                       additionalEntries.put(key.toString(), value);
+                               }
+                       } else {
+                               if (artifact != null) {
+                                       if (!fileProps.containsKey(BUNDLE_SYMBOLICNAME.toString())) {
+                                               fileProps.put(BUNDLE_SYMBOLICNAME.toString(), artifact.getName());
+                                       }
+                                       if (!fileProps.containsKey(BUNDLE_VERSION.toString())) {
+                                               fileProps.put(BUNDLE_VERSION.toString(), artifact.getVersion());
+                                       }
+                               }
+
+                               if (!fileProps.containsKey(EXPORT_PACKAGE.toString())) {
+                                       fileProps.put(EXPORT_PACKAGE.toString(),
+                                                       "*;version=\"" + fileProps.getProperty(BUNDLE_VERSION.toString()) + "\"");
+                               }
+
+                               try (Analyzer bndAnalyzer = new Analyzer()) {
+                                       bndAnalyzer.setProperties(fileProps);
+                                       Jar jar = new Jar(downloaded.toFile());
+                                       bndAnalyzer.setJar(jar);
+                                       Manifest manifest = bndAnalyzer.calcManifest();
+
+                                       keys: for (Object key : manifest.getMainAttributes().keySet()) {
+                                               Object value = manifest.getMainAttributes().get(key);
+
+                                               switch (key.toString()) {
+                                               case "Tool":
+                                               case "Bnd-LastModified":
+                                               case "Created-By":
+                                                       continue keys;
+                                               }
+                                               if ("Require-Capability".equals(key.toString())
+                                                               && value.toString().equals("osgi.ee;filter:=\"(&(osgi.ee=JavaSE)(version=1.1))\""))
+                                                       continue keys;// hack for very old classes
+                                               additionalEntries.put(key.toString(), value.toString());
+                                               // logger.log(DEBUG, () -> key + "=" + value);
+
+                                       }
+                               }
+                       }
+                       Path targetBundleDir = processBundleJar(downloaded, targetCategoryBase, additionalEntries);
+                       logger.log(Level.DEBUG, () -> "Processed " + downloaded);
+                       return targetBundleDir;
+               } catch (Exception e) {
+                       throw new RuntimeException("Cannot BND process " + downloaded, e);
+               }
+
+       }
+
+       /** Download and integrates sources for a single Maven artifact. */
+       protected void downloadAndProcessM2Sources(String repoStr, M2Artifact artifact, Path targetBundleDir)
+                       throws IOException {
+               if (!includeSources)
+                       return;
+               M2Artifact sourcesArtifact = new M2Artifact(artifact.toM2Coordinates(), "sources");
+               URL sourcesUrl = M2ConventionsUtils.mavenRepoUrl(repoStr, sourcesArtifact);
+               Path sourcesDownloaded = download(sourcesUrl, originBase, artifact, true);
+               processM2SourceJar(sourcesDownloaded, targetBundleDir);
+               logger.log(Level.TRACE, () -> "Processed source " + sourcesDownloaded);
+
+       }
+
+       /** Integrate sources from a downloaded jar file. */
+       protected void processM2SourceJar(Path file, Path targetBundleDir) throws IOException {
+               try (JarInputStream jarIn = new JarInputStream(Files.newInputStream(file), false)) {
+                       Path targetSourceDir = targetBundleDir.resolve("OSGI-OPT/src");
+
+                       // TODO make it less dangerous?
+                       if (Files.exists(targetSourceDir)) {
+//                             deleteDirectory(targetSourceDir);
+                       } else {
+                               Files.createDirectories(targetSourceDir);
+                       }
+
+                       // copy entries
+                       JarEntry entry;
+                       entries: while ((entry = jarIn.getNextJarEntry()) != null) {
+                               if (entry.isDirectory())
+                                       continue entries;
+                               if (entry.getName().startsWith("META-INF"))// skip META-INF entries
+                                       continue entries;
+                               if (entry.getName().startsWith("module-info.java"))// skip META-INF entries
+                                       continue entries;
+                               if (entry.getName().startsWith("/")) // absolute paths
+                                       continue entries;
+                               Path target = targetSourceDir.resolve(entry.getName());
+                               Files.createDirectories(target.getParent());
+                               if (!Files.exists(target)) {
+                                       Files.copy(jarIn, target);
+                                       logger.log(Level.TRACE, () -> "Copied source " + target);
+                               } else {
+                                       logger.log(Level.WARNING, () -> target + " already exists, skipping...");
+                               }
+                       }
+               }
+
+       }
+
+       /** Download a Maven artifact. */
+       protected Path download(URL url, Path dir, M2Artifact artifact) throws IOException {
+               return download(url, dir, artifact, false);
+       }
+
+       /** Download a Maven artifact. */
+       protected Path download(URL url, Path dir, M2Artifact artifact, boolean sources) throws IOException {
+               return download(url, dir, artifact.getGroupId() + '/' + artifact.getArtifactId() + "-" + artifact.getVersion()
+                               + (sources ? "-sources" : "") + ".jar");
+       }
+
+       /*
+        * ECLIPSE ORIGIN
+        */
+
+       /** Process an archive in Eclipse format. */
+       public void processEclipseArchive(Path duDir) {
+               try {
+                       Path categoryRelativePath = descriptorsBase.relativize(duDir.getParent());
+                       // String category = categoryRelativePath.getFileName().toString();
+                       Path targetCategoryBase = a2Base.resolve(categoryRelativePath);
+                       Files.createDirectories(targetCategoryBase);
+                       // first delete all directories from previous builds
+                       for (Path dir : Files.newDirectoryStream(targetCategoryBase, (p) -> Files.isDirectory(p))) {
+                               deleteDirectory(dir);
+                       }
+
+                       Files.createDirectories(originBase);
+
+                       Path commonBnd = duDir.resolve(COMMON_BND);
+                       Properties commonProps = new Properties();
+                       try (InputStream in = Files.newInputStream(commonBnd)) {
+                               commonProps.load(in);
+                       }
+                       String url = commonProps.getProperty(ManifestConstants.SLC_ORIGIN_URI.toString());
+                       if (url == null) {
+                               url = uris.getProperty(duDir.getFileName().toString());
+                               if (url == null)
+                                       throw new IllegalStateException("No url available for " + duDir);
+                               commonProps.put(ManifestConstants.SLC_ORIGIN_URI.toString(), url);
+                       }
+                       Path downloaded = tryDownload(url, originBase);
+
+                       FileSystem zipFs = FileSystems.newFileSystem(downloaded, (ClassLoader) null);
+
+                       // filters
+                       List<PathMatcher> includeMatchers = new ArrayList<>();
+                       Properties includes = new Properties();
+                       try (InputStream in = Files.newInputStream(duDir.resolve("includes.properties"))) {
+                               includes.load(in);
+                       }
+                       for (Object pattern : includes.keySet()) {
+                               PathMatcher pathMatcher = zipFs.getPathMatcher("glob:/" + pattern);
+                               includeMatchers.add(pathMatcher);
+                       }
+
+                       List<PathMatcher> excludeMatchers = new ArrayList<>();
+                       Path excludeFile = duDir.resolve("excludes.properties");
+                       if (Files.exists(excludeFile)) {
+                               Properties excludes = new Properties();
+                               try (InputStream in = Files.newInputStream(excludeFile)) {
+                                       excludes.load(in);
+                               }
+                               for (Object pattern : excludes.keySet()) {
+                                       PathMatcher pathMatcher = zipFs.getPathMatcher("glob:/" + pattern);
+                                       excludeMatchers.add(pathMatcher);
+                               }
+                       }
+
+                       Files.walkFileTree(zipFs.getRootDirectories().iterator().next(), new SimpleFileVisitor<Path>() {
+
+                               @Override
+                               public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException {
+                                       includeMatchers: for (PathMatcher includeMatcher : includeMatchers) {
+                                               if (includeMatcher.matches(file)) {
+                                                       for (PathMatcher excludeMatcher : excludeMatchers) {
+                                                               if (excludeMatcher.matches(file)) {
+                                                                       logger.log(Level.WARNING, "Skipping excluded " + file);
+                                                                       return FileVisitResult.CONTINUE;
+                                                               }
+                                                       }
+                                                       if (includeSources && file.getFileName().toString().contains(".source_")) {
+                                                               processEclipseSourceJar(file, targetCategoryBase);
+                                                               logger.log(Level.DEBUG, () -> "Processed source " + file);
+
+                                                       } else {
+                                                               Map<String, String> map = new HashMap<>();
+                                                               for (Object key : commonProps.keySet())
+                                                                       map.put(key.toString(), commonProps.getProperty(key.toString()));
+                                                               processBundleJar(file, targetCategoryBase, map);
+                                                               logger.log(Level.DEBUG, () -> "Processed " + file);
+                                                       }
+                                                       break includeMatchers;
+                                               }
+                                       }
+                                       return FileVisitResult.CONTINUE;
+                               }
+                       });
+
+                       DirectoryStream<Path> dirs = Files.newDirectoryStream(targetCategoryBase,
+                                       (p) -> Files.isDirectory(p) && p.getFileName().toString().indexOf('.') >= 0);
+                       for (Path dir : dirs) {
+                               createJar(dir);
+                       }
+               } catch (IOException e) {
+                       throw new RuntimeException("Cannot process " + duDir, e);
+               }
+
+       }
+
+       /** Process sources in Eclipse format. */
+       protected void processEclipseSourceJar(Path file, Path targetBase) throws IOException {
+               try {
+                       Path targetBundleDir;
+                       try (JarInputStream jarIn = new JarInputStream(Files.newInputStream(file), false)) {
+                               Manifest manifest = jarIn.getManifest();
+
+                               String[] relatedBundle = manifest.getMainAttributes().getValue("Eclipse-SourceBundle").split(";");
+                               String version = relatedBundle[1].substring("version=\"".length());
+                               version = version.substring(0, version.length() - 1);
+                               NameVersion nameVersion = new NameVersion(relatedBundle[0], version);
+                               targetBundleDir = targetBase.resolve(nameVersion.getName() + "." + nameVersion.getBranch());
+
+                               Path targetSourceDir = targetBundleDir.resolve("OSGI-OPT/src");
+
+                               // TODO make it less dangerous?
+                               if (Files.exists(targetSourceDir)) {
+//                             deleteDirectory(targetSourceDir);
+                               } else {
+                                       Files.createDirectories(targetSourceDir);
+                               }
+
+                               // copy entries
+                               JarEntry entry;
+                               entries: while ((entry = jarIn.getNextJarEntry()) != null) {
+                                       if (entry.isDirectory())
+                                               continue entries;
+                                       if (entry.getName().startsWith("META-INF"))// skip META-INF entries
+                                               continue entries;
+                                       Path target = targetSourceDir.resolve(entry.getName());
+                                       Files.createDirectories(target.getParent());
+                                       Files.copy(jarIn, target);
+                                       logger.log(Level.TRACE, () -> "Copied source " + target);
+                               }
+
+                               // copy MANIFEST
+                       }
+               } catch (IOException e) {
+                       throw new IllegalStateException("Cannot process " + file, e);
+               }
+
+       }
+
+       /*
+        * COMMON PROCESSING
+        */
+       /** Normalise a bundle. */
+       protected Path processBundleJar(Path file, Path targetBase, Map<String, String> entries) throws IOException {
+               NameVersion nameVersion;
+               Path targetBundleDir;
+               try (JarInputStream jarIn = new JarInputStream(Files.newInputStream(file), false)) {
+                       Manifest sourceManifest = jarIn.getManifest();
+                       Manifest manifest = sourceManifest != null ? new Manifest(sourceManifest) : new Manifest();
+
+                       // remove problematic entries in MANIFEST
+                       manifest.getEntries().clear();
+
+                       String ourSymbolicName = entries.get(BUNDLE_SYMBOLICNAME.toString());
+                       String ourVersion = entries.get(BUNDLE_VERSION.toString());
+
+                       if (ourSymbolicName != null && ourVersion != null) {
+                               nameVersion = new NameVersion(ourSymbolicName, ourVersion);
+                       } else {
+                               nameVersion = nameVersionFromManifest(manifest);
+                               if (ourVersion != null && !nameVersion.getVersion().equals(ourVersion)) {
+                                       logger.log(Level.WARNING,
+                                                       "Original version is " + nameVersion.getVersion() + " while new version is " + ourVersion);
+                                       entries.put(BUNDLE_VERSION.toString(), ourVersion);
+                               }
+                               if (ourSymbolicName != null) {
+                                       // we always force our symbolic name
+                                       nameVersion.setName(ourSymbolicName);
+                               }
+                       }
+                       targetBundleDir = targetBase.resolve(nameVersion.getName() + "." + nameVersion.getBranch());
+
+                       // force Java 9 module name
+                       entries.put(ManifestConstants.AUTOMATIC_MODULE_NAME.toString(), nameVersion.getName());
+
+                       boolean isNative = false;
+                       String os = null;
+                       String arch = null;
+                       if (targetBundleDir.startsWith(a2LibBase)) {
+                               isNative = true;
+                               Path libRelativePath = a2LibBase.relativize(targetBundleDir);
+                               os = libRelativePath.getName(0).toString();
+                               arch = libRelativePath.getName(1).toString();
+                       }
+
+                       // copy entries
+                       JarEntry entry;
+                       entries: while ((entry = jarIn.getNextJarEntry()) != null) {
+                               if (entry.isDirectory())
+                                       continue entries;
+                               if (entry.getName().endsWith(".RSA") || entry.getName().endsWith(".SF"))
+                                       continue entries;
+                               if (entry.getName().endsWith("module-info.class")) // skip Java 9 module info
+                                       continue entries;
+                               if (entry.getName().startsWith("META-INF/versions/")) // skip multi-version
+                                       continue entries;
+                               // skip file system providers as they cause issues with native image
+                               if (entry.getName().startsWith("META-INF/services/java.nio.file.spi.FileSystemProvider"))
+                                       continue entries;
+                               if (entry.getName().startsWith("OSGI-OPT/src/")) // skip embedded sources
+                                       continue entries;
+                               Path target = targetBundleDir.resolve(entry.getName());
+                               Files.createDirectories(target.getParent());
+                               Files.copy(jarIn, target);
+
+                               // native libraries
+                               if (isNative && (entry.getName().endsWith(".so") || entry.getName().endsWith(".dll")
+                                               || entry.getName().endsWith(".jnilib"))) {
+                                       Path categoryDir = targetBundleDir.getParent();
+//                                     String[] segments = categoryDir.getFileName().toString().split("\\.");
+//                                     String arch = segments[segments.length - 1];
+//                                     String os = segments[segments.length - 2];
+                                       boolean copyDll = false;
+                                       Path targetDll = categoryDir.resolve(targetBundleDir.relativize(target));
+                                       if (nameVersion.getName().equals("com.sun.jna")) {
+                                               if (arch.equals("x86_64"))
+                                                       arch = "x86-64";
+                                               if (os.equals("macosx"))
+                                                       os = "darwin";
+                                               if (target.getParent().getFileName().toString().equals(os + "-" + arch)) {
+                                                       copyDll = true;
+                                               }
+                                               targetDll = categoryDir.resolve(target.getFileName());
+                                       } else {
+                                               copyDll = true;
+                                       }
+                                       if (copyDll) {
+                                               Files.createDirectories(targetDll.getParent());
+                                               if (Files.exists(targetDll))
+                                                       Files.delete(targetDll);
+                                               Files.copy(target, targetDll);
+                                       }
+                                       Files.delete(target);
+                               }
+                               logger.log(Level.TRACE, () -> "Copied " + target);
+                       }
+
+                       // copy MANIFEST
+                       Path manifestPath = targetBundleDir.resolve("META-INF/MANIFEST.MF");
+                       Files.createDirectories(manifestPath.getParent());
+                       for (String key : entries.keySet()) {
+                               String value = entries.get(key);
+                               Object previousValue = manifest.getMainAttributes().putValue(key, value);
+                               if (previousValue != null && !previousValue.equals(value)) {
+                                       if (ManifestConstants.IMPORT_PACKAGE.toString().equals(key)
+                                                       || ManifestConstants.EXPORT_PACKAGE.toString().equals(key))
+                                               logger.log(Level.TRACE, file.getFileName() + ": " + key + " was modified");
+                                       else
+                                               logger.log(Level.WARNING, file.getFileName() + ": " + key + " was " + previousValue
+                                                               + ", overridden with " + value);
+                               }
+
+                               // hack to remove unresolvable
+                               if (key.equals("Provide-Capability") || key.equals("Require-Capability"))
+                                       if (nameVersion.getName().equals("osgi.core") || nameVersion.getName().equals("osgi.cmpn")) {
+                                               manifest.getMainAttributes().remove(key);
+                                       }
+                       }
+                       try (OutputStream out = Files.newOutputStream(manifestPath)) {
+                               manifest.write(out);
+                       }
+               }
+               return targetBundleDir;
+       }
+
+       /*
+        * UTILITIES
+        */
+
+       /** Recursively deletes a directory. */
+       private static void deleteDirectory(Path path) throws IOException {
+               if (!Files.exists(path))
+                       return;
+               Files.walkFileTree(path, new SimpleFileVisitor<Path>() {
+                       @Override
+                       public FileVisitResult postVisitDirectory(Path directory, IOException e) throws IOException {
+                               if (e != null)
+                                       throw e;
+                               Files.delete(directory);
+                               return FileVisitResult.CONTINUE;
+                       }
+
+                       @Override
+                       public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException {
+                               Files.delete(file);
+                               return FileVisitResult.CONTINUE;
+                       }
+               });
+       }
+
+       /** Extract name/version from a MANIFEST. */
+       protected NameVersion nameVersionFromManifest(Manifest manifest) {
+               Attributes attrs = manifest.getMainAttributes();
+               // symbolic name
+               String symbolicName = attrs.getValue(ManifestConstants.BUNDLE_SYMBOLICNAME.toString());
+               if (symbolicName == null)
+                       return null;
+               // make sure there is no directive
+               symbolicName = symbolicName.split(";")[0];
+
+               String version = attrs.getValue(ManifestConstants.BUNDLE_VERSION.toString());
+               return new NameVersion(symbolicName, version);
+       }
+
+       /** Try to download from an URI. */
+       protected Path tryDownload(String uri, Path dir) throws IOException {
+               // find mirror
+               List<String> urlBases = null;
+               String uriPrefix = null;
+               uriPrefixes: for (String uriPref : mirrors.keySet()) {
+                       if (uri.startsWith(uriPref)) {
+                               if (mirrors.get(uriPref).size() > 0) {
+                                       urlBases = mirrors.get(uriPref);
+                                       uriPrefix = uriPref;
+                                       break uriPrefixes;
+                               }
+                       }
+               }
+               if (urlBases == null)
+                       try {
+                               return download(new URL(uri), dir);
+                       } catch (FileNotFoundException e) {
+                               throw new FileNotFoundException("Cannot find " + uri);
+                       }
+
+               // try to download
+               for (String urlBase : urlBases) {
+                       String relativePath = uri.substring(uriPrefix.length());
+                       URL url = new URL(urlBase + relativePath);
+                       try {
+                               return download(url, dir);
+                       } catch (FileNotFoundException e) {
+                               logger.log(Level.WARNING, "Cannot download " + url + ", trying another mirror");
+                       }
+               }
+               throw new FileNotFoundException("Cannot find " + uri);
+       }
+
+       /** Effectively download. */
+       protected Path download(URL url, Path dir) throws IOException {
+               return download(url, dir, (String) null);
+       }
+
+       /** Effectively download. */
+       protected Path download(URL url, Path dir, String name) throws IOException {
+
+               Path dest;
+               if (name == null) {
+                       name = url.getPath().substring(url.getPath().lastIndexOf('/') + 1);
+               }
+
+               dest = dir.resolve(name);
+               if (Files.exists(dest)) {
+                       logger.log(Level.TRACE, () -> "File " + dest + " already exists for " + url + ", not downloading again");
+                       return dest;
+               } else {
+                       Files.createDirectories(dest.getParent());
+               }
+
+               try (InputStream in = url.openStream()) {
+                       Files.copy(in, dest);
+                       logger.log(Level.DEBUG, () -> "Downloaded " + dest + " from " + url);
+               }
+               return dest;
+       }
+
+       /** Create a JAR file from a directory. */
+       protected Path createJar(Path bundleDir) throws IOException {
+               // Create the jar
+               Path jarPath = bundleDir.getParent().resolve(bundleDir.getFileName() + ".jar");
+               Path manifestPath = bundleDir.resolve("META-INF/MANIFEST.MF");
+               Manifest manifest;
+               try (InputStream in = Files.newInputStream(manifestPath)) {
+                       manifest = new Manifest(in);
+               }
+               try (JarOutputStream jarOut = new JarOutputStream(Files.newOutputStream(jarPath), manifest)) {
+                       jarOut.setLevel(Deflater.DEFAULT_COMPRESSION);
+                       Files.walkFileTree(bundleDir, new SimpleFileVisitor<Path>() {
+
+                               @Override
+                               public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException {
+                                       if (file.getFileName().toString().equals("MANIFEST.MF"))
+                                               return super.visitFile(file, attrs);
+                                       JarEntry entry = new JarEntry(bundleDir.relativize(file).toString());
+                                       jarOut.putNextEntry(entry);
+                                       Files.copy(file, jarOut);
+                                       return super.visitFile(file, attrs);
+                               }
+
+                       });
+               }
+               deleteDirectory(bundleDir);
+               return jarPath;
+       }
+
+       enum ManifestConstants {
+               // OSGi
+               BUNDLE_SYMBOLICNAME("Bundle-SymbolicName"), //
+               BUNDLE_VERSION("Bundle-Version"), //
+               BUNDLE_LICENSE("Bundle-License"), //
+               EXPORT_PACKAGE("Export-Package"), //
+               IMPORT_PACKAGE("Import-Package"), //
+               // JAVA
+               AUTOMATIC_MODULE_NAME("Automatic-Module-Name"), //
+               // SLC
+               SLC_CATEGORY("SLC-Category"), //
+               SLC_ORIGIN_M2("SLC-Origin-M2"), //
+               SLC_ORIGIN_M2_MERGE("SLC-Origin-M2-Merge"), //
+               SLC_ORIGIN_M2_REPO("SLC-Origin-M2-Repo"), //
+               SLC_ORIGIN_MANIFEST_NOT_MODIFIED("SLC-Origin-ManifestNotModified"), //
+               SLC_ORIGIN_URI("SLC-Origin-URI"),//
+               ;
+
+               final String value;
+
+               private ManifestConstants(String value) {
+                       this.value = value;
+               }
+
+               @Override
+               public String toString() {
+                       return value;
+               }
+
+       }
+
+}
+
+/** Simple representation of an M2 artifact. */
+class M2Artifact extends CategoryNameVersion {
+       private String classifier;
+
+       M2Artifact(String m2coordinates) {
+               this(m2coordinates, null);
+       }
+
+       M2Artifact(String m2coordinates, String classifier) {
+               String[] parts = m2coordinates.split(":");
+               setCategory(parts[0]);
+               setName(parts[1]);
+               if (parts.length > 2) {
+                       setVersion(parts[2]);
+               }
+               this.classifier = classifier;
+       }
+
+       String getGroupId() {
+               return super.getCategory();
+       }
+
+       String getArtifactId() {
+               return super.getName();
+       }
+
+       String toM2Coordinates() {
+               return getCategory() + ":" + getName() + (getVersion() != null ? ":" + getVersion() : "");
+       }
+
+       String getClassifier() {
+               return classifier != null ? classifier : "";
+       }
+
+       String getExtension() {
+               return "jar";
+       }
+}
+
+/** Utilities around Maven (conventions based). */
+class M2ConventionsUtils {
+       final static String MAVEN_CENTRAL_BASE_URL = "https://repo1.maven.org/maven2/";
+
+       /** The file name of this artifact when stored */
+       static String artifactFileName(M2Artifact artifact) {
+               return artifact.getArtifactId() + '-' + artifact.getVersion()
+                               + (artifact.getClassifier().equals("") ? "" : '-' + artifact.getClassifier()) + '.'
+                               + artifact.getExtension();
+       }
+
+       /** Absolute path to the file */
+       static String artifactPath(String artifactBasePath, M2Artifact artifact) {
+               return artifactParentPath(artifactBasePath, artifact) + '/' + artifactFileName(artifact);
+       }
+
+       /** Absolute path to the file */
+       static String artifactUrl(String repoUrl, M2Artifact artifact) {
+               if (repoUrl.endsWith("/"))
+                       return repoUrl + artifactPath("/", artifact).substring(1);
+               else
+                       return repoUrl + artifactPath("/", artifact);
+       }
+
+       /** Absolute path to the file */
+       static URL mavenRepoUrl(String repoBase, M2Artifact artifact) {
+               String url = artifactUrl(repoBase == null ? MAVEN_CENTRAL_BASE_URL : repoBase, artifact);
+               try {
+                       return new URL(url);
+               } catch (MalformedURLException e) {
+                       // it should not happen
+                       throw new IllegalStateException(e);
+               }
+       }
+
+       /** Absolute path to the directories where the files will be stored */
+       static String artifactParentPath(String artifactBasePath, M2Artifact artifact) {
+               return artifactBasePath + (artifactBasePath.endsWith("/") ? "" : "/") + artifactParentPath(artifact);
+       }
+
+       /** Relative path to the directories where the files will be stored */
+       static String artifactParentPath(M2Artifact artifact) {
+               return artifact.getGroupId().replace('.', '/') + '/' + artifact.getArtifactId() + '/' + artifact.getVersion();
+       }
+
+       /** Singleton */
+       private M2ConventionsUtils() {
+       }
+}
+
+class CategoryNameVersion extends NameVersion {
+       private String category;
+
+       CategoryNameVersion() {
+       }
+
+       CategoryNameVersion(String category, String name, String version) {
+               super(name, version);
+               this.category = category;
+       }
+
+       CategoryNameVersion(String category, NameVersion nameVersion) {
+               super(nameVersion);
+               this.category = category;
+       }
+
+       String getCategory() {
+               return category;
+       }
+
+       void setCategory(String category) {
+               this.category = category;
+       }
+
+       @Override
+       public String toString() {
+               return category + ":" + super.toString();
+       }
+
+}
+
+class NameVersion implements Comparable<NameVersion> {
+       private String name;
+       private String version;
+
+       NameVersion() {
+       }
+
+       /** Interprets string in OSGi-like format my.module.name;version=0.0.0 */
+       NameVersion(String nameVersion) {
+               int index = nameVersion.indexOf(";version=");
+               if (index < 0) {
+                       setName(nameVersion);
+                       setVersion(null);
+               } else {
+                       setName(nameVersion.substring(0, index));
+                       setVersion(nameVersion.substring(index + ";version=".length()));
+               }
+       }
+
+       NameVersion(String name, String version) {
+               this.name = name;
+               this.version = version;
+       }
+
+       NameVersion(NameVersion nameVersion) {
+               this.name = nameVersion.getName();
+               this.version = nameVersion.getVersion();
+       }
+
+       String getName() {
+               return name;
+       }
+
+       void setName(String name) {
+               this.name = name;
+       }
+
+       String getVersion() {
+               return version;
+       }
+
+       void setVersion(String version) {
+               this.version = version;
+       }
+
+       String getBranch() {
+               String[] parts = getVersion().split("\\.");
+               if (parts.length < 2)
+                       throw new IllegalStateException("Version " + getVersion() + " cannot be interpreted as branch.");
+               return parts[0] + "." + parts[1];
+       }
+
+       @Override
+       public boolean equals(Object obj) {
+               if (obj instanceof NameVersion) {
+                       NameVersion nameVersion = (NameVersion) obj;
+                       return name.equals(nameVersion.getName()) && version.equals(nameVersion.getVersion());
+               } else
+                       return false;
+       }
+
+       @Override
+       public int hashCode() {
+               return name.hashCode();
+       }
+
+       @Override
+       public String toString() {
+               return name + ":" + version;
+       }
+
+       public int compareTo(NameVersion o) {
+               if (o.getName().equals(name))
+                       return version.compareTo(o.getVersion());
+               else
+                       return name.compareTo(o.getName());
+       }
+}
diff --git a/repackage/org.argeo.tp.gis/ejml/merge.bnd b/repackage/org.argeo.tp.gis/ejml/merge.bnd
new file mode 100644 (file)
index 0000000..6aaf0ee
--- /dev/null
@@ -0,0 +1,17 @@
+Bundle-SymbolicName: org.ejml
+Bundle-License: Apache-2.0
+SLC-Origin-M2: :0.41
+Export-Package: org.ejml.*
+SLC-Origin-M2-Merge: \
+org.ejml:ejml-core, \
+org.ejml:ejml-simple, \
+org.ejml:ejml-fdense, \
+org.ejml:ejml-ddense, \
+org.ejml:ejml-cdense, \
+org.ejml:ejml-zdense, \
+org.ejml:ejml-dsparse, \
+
+Import-Package: \
+us.hebi.matlab.*;resolution:="optional", \
+javax.swing;resolution:="optional",
+*
\ No newline at end of file
diff --git a/repackage/org.argeo.tp.gis/geotools/merge.bnd b/repackage/org.argeo.tp.gis/geotools/merge.bnd
new file mode 100644 (file)
index 0000000..60ceeb0
--- /dev/null
@@ -0,0 +1,65 @@
+Bundle-License: LGPL-2.1-only
+Bundle-SymbolicName: org.geotools
+SLC-Origin-M2: :27.0
+SLC-Origin-M2-Repo: https://repo.osgeo.org/repository/release/
+Export-Package: org.geotools.*, org.opengis.*, net.opengis.*, org.w3.xlink.*
+Import-Package: \
+org.locationtech.jts.*,\
+org.geotools.gui.swing.*;resolution:="optional",\
+org.geotools.*,\
+org.opengis.*,\
+net.opengis.*,\
+javax.measure.*, \
+tech.units.indriya.*, \
+si.uom.*, \
+systems.uom.*, \
+org.ejml.*,\
+*;resolution:="optional"
+SLC-Origin-M2-Merge: \
+org.geotools:gt-metadata, \
+org.geotools:gt-property, \
+org.geotools:gt-opengis, \
+org.geotools:gt-main, \
+org.geotools:gt-cql, \
+org.geotools:gt-http, \
+org.geotools:gt-coverage, \
+org.geotools:gt-referencing, \
+org.geotools:gt-process, \
+org.geotools:gt-epsg-extension, \
+org.geotools:gt-epsg-wkt, \
+org.geotools:gt-transform, \
+org.geotools:gt-geojson, \
+org.geotools:gt-shapefile, \
+org.geotools:gt-xml, \
+org.geotools:gt-svg, \
+org.geotools:gt-brewer, \
+org.geotools:gt-css, \
+org.geotools:gt-image, \
+org.geotools:gt-geotiff, \
+org.geotools:gt-render, \
+org.geotools:gt-swing, \
+org.geotools:gt-wfs-ng, \
+org.geotools:gt-wms, \
+org.geotools:gt-wmts, \
+org.geotools:gt-jdbc, \
+org.geotools:gt-complex, \
+org.geotools:gt-app-schema, \
+org.geotools:gt-app-schema-resolver, \
+org.geotools:gt-gml-geometry-streaming, \
+org.geotools:gt-tile-client, \
+org.geotools.jdbc:gt-jdbc-postgis, \
+org.geotools.jdbc:gt-jdbc-h2, \
+org.geotools.xsd:gt-xsd-core, \
+org.geotools.xsd:gt-xsd-filter, \
+org.geotools.xsd:gt-xsd-ows, \
+org.geotools.xsd:gt-xsd-fes, \
+org.geotools.xsd:gt-xsd-gml2, \
+org.geotools.xsd:gt-xsd-gml3, \
+org.geotools.xsd:gt-xsd-wfs, \
+org.geotools.xsd:gt-xsd-wmts, \
+org.geotools.xsd:gt-xsd-sld, \
+org.geotools.ogc:net.opengis.ows, \
+org.geotools.ogc:net.opengis.wfs, \
+org.geotools.ogc:net.opengis.wmts, \
+org.geotools.ogc:net.opengis.fes, \
+org.geotools.ogc:org.w3.xlink, \
diff --git a/repackage/org.argeo.tp.gis/org.json.simple.bnd b/repackage/org.argeo.tp.gis/org.json.simple.bnd
new file mode 100644 (file)
index 0000000..71ce052
--- /dev/null
@@ -0,0 +1,2 @@
+Bundle-license: Apache-2.0
+SLC-Origin-M2: com.googlecode.json-simple:json-simple:1.1.1
\ No newline at end of file
diff --git a/repackage/org.argeo.tp.gis/org.locationtech.jts.bnd b/repackage/org.argeo.tp.gis/org.locationtech.jts.bnd
new file mode 100644 (file)
index 0000000..8e2e958
--- /dev/null
@@ -0,0 +1,2 @@
+Bundle-License: BSD-3-Clause
+SLC-Origin-M2: org.locationtech.jts:jts-core:1.18.2
\ No newline at end of file
diff --git a/repackage/org.argeo.tp.gis/units/merge.bnd b/repackage/org.argeo.tp.gis/units/merge.bnd
new file mode 100644 (file)
index 0000000..75ecae1
--- /dev/null
@@ -0,0 +1,14 @@
+Bundle-License: BSD-3-Clause
+Bundle-SymbolicName: tech.units.indriya
+SLC-Origin-M2: :2.0.4
+Export-Package: javax.measure.*, tech.units.indriya.*, si.uom.*, systems.uom.*
+Import-Package: \
+*;resolution:="optional"
+SLC-Origin-M2-Merge: \
+javax.measure:unit-api:2.0, \
+tech.units:indriya, \
+tech.uom.lib:uom-lib-common:2.0.1, \
+si.uom:si-units:2.0, \
+si.uom:si-quantity:2.0.1, \
+systems.uom:systems-common:2.0.2, \
+systems.uom:systems-quantity:2.0.2, \
diff --git a/repackage/org.argeo.tp.jcr/EDU.oswego.cs.dl.util.concurrent.bnd b/repackage/org.argeo.tp.jcr/EDU.oswego.cs.dl.util.concurrent.bnd
new file mode 100644 (file)
index 0000000..d2432b7
--- /dev/null
@@ -0,0 +1,3 @@
+Bundle-License: Public Domain
+Bundle-SymbolicName: EDU.oswego.cs.dl.util.concurrent
+SLC-Origin-M2: concurrent:concurrent:1.3.4
\ No newline at end of file
diff --git a/repackage/org.argeo.tp.jcr/com.google.guava.bnd.retired b/repackage/org.argeo.tp.jcr/com.google.guava.bnd.retired
new file mode 100644 (file)
index 0000000..a8a926f
--- /dev/null
@@ -0,0 +1,5 @@
+Bundle-License: Apache-2.0
+Bundle-SymbolicName: com.google.guava
+Bundle-Version: 27.1.0.jre
+SLC-Origin-M2: com.google.guava:guava:27.1-jre
+SLC-Origin-ManifestNotModified: true
diff --git a/repackage/org.argeo.tp.jcr/com.google.guava.failureaccess.bnd.retired b/repackage/org.argeo.tp.jcr/com.google.guava.failureaccess.bnd.retired
new file mode 100644 (file)
index 0000000..e7c19ce
--- /dev/null
@@ -0,0 +1,4 @@
+Bundle-License: Apache-2.0
+Bundle-SymbolicName: com.google.guava.failureaccess
+SLC-Origin-M2: com.google.guava:failureaccess:1.0.1
+SLC-Origin-ManifestNotModified: true
diff --git a/repackage/org.argeo.tp.jcr/jackrabbit/common.bnd b/repackage/org.argeo.tp.jcr/jackrabbit/common.bnd
new file mode 100644 (file)
index 0000000..c2bda37
--- /dev/null
@@ -0,0 +1,2 @@
+Bundle-License: Apache-2.0
+SLC-Origin-M2: :2.20.5
\ No newline at end of file
diff --git a/repackage/org.argeo.tp.jcr/jackrabbit/org.apache.jackrabbit.api.bnd.retired b/repackage/org.argeo.tp.jcr/jackrabbit/org.apache.jackrabbit.api.bnd.retired
new file mode 100644 (file)
index 0000000..6ebc779
--- /dev/null
@@ -0,0 +1,3 @@
+SLC-Origin-M2: org.apache.jackrabbit:jackrabbit-api
+Bundle-SymbolicName: org.apache.jackrabbit.api
+Export-Package: org.apache.jackrabbit.*
diff --git a/repackage/org.argeo.tp.jcr/jackrabbit/org.apache.jackrabbit.core.bnd b/repackage/org.argeo.tp.jcr/jackrabbit/org.apache.jackrabbit.core.bnd
new file mode 100644 (file)
index 0000000..a746cae
--- /dev/null
@@ -0,0 +1,13 @@
+SLC-Origin-M2: org.apache.jackrabbit:jackrabbit-core
+Bundle-SymbolicName: org.apache.jackrabbit.core
+Import-Package: org.apache.jackrabbit.test;resolution:=optional,\
+org.apache.derby.*;resolution:=optional,\
+org.h2;resolution:=optional,\
+org.postgresql;resolution:=optional,\
+oracle.jdbc;resolution:=optional,\
+org.gjt.mm.mysql;resolution:=optional,\
+com.mysql.jdbc;resolution:=optional,\
+com.microsoft.sqlserver.jdbc;resolution:=optional,\
+net.sourceforge.jtds.jdbc;resolution:=optional,\
+org.hsqldb;resolution:=optional,\
+*
diff --git a/repackage/org.argeo.tp.jcr/jackrabbit/org.apache.jackrabbit.data.bnd b/repackage/org.argeo.tp.jcr/jackrabbit/org.apache.jackrabbit.data.bnd
new file mode 100644 (file)
index 0000000..981b846
--- /dev/null
@@ -0,0 +1,14 @@
+SLC-Origin-M2: org.apache.jackrabbit:jackrabbit-data
+Bundle-SymbolicName: org.apache.jackrabbit.data
+Fragment-Host: org.apache.jackrabbit.core
+Import-Package: org.apache.jackrabbit.test;resolution:=optional,\
+org.apache.derby.*;resolution:=optional,\
+org.h2;resolution:=optional,\
+org.postgresql;resolution:=optional,\
+oracle.jdbc;resolution:=optional,\
+org.gjt.mm.mysql;resolution:=optional,\
+com.mysql.jdbc;resolution:=optional,\
+com.microsoft.sqlserver.jdbc;resolution:=optional,\
+net.sourceforge.jtds.jdbc;resolution:=optional,\
+org.hsqldb;resolution:=optional,\
+*
diff --git a/repackage/org.argeo.tp.jcr/jackrabbit/org.apache.jackrabbit.jcr.client.bnd b/repackage/org.argeo.tp.jcr/jackrabbit/org.apache.jackrabbit.jcr.client.bnd
new file mode 100644 (file)
index 0000000..9c083a3
--- /dev/null
@@ -0,0 +1,2 @@
+SLC-Origin-M2: org.apache.jackrabbit:jackrabbit-jcr-client
+Bundle-SymbolicName: org.apache.jackrabbit.jcr.client
diff --git a/repackage/org.argeo.tp.jcr/jackrabbit/org.apache.jackrabbit.jcr.commons.bnd b/repackage/org.argeo.tp.jcr/jackrabbit/org.apache.jackrabbit.jcr.commons.bnd
new file mode 100644 (file)
index 0000000..7af2a80
--- /dev/null
@@ -0,0 +1,2 @@
+SLC-Origin-M2: org.apache.jackrabbit:jackrabbit-jcr-commons
+Bundle-SymbolicName: org.apache.jackrabbit.jcr.commons
diff --git a/repackage/org.argeo.tp.jcr/jackrabbit/org.apache.jackrabbit.jcr2dav.bnd b/repackage/org.argeo.tp.jcr/jackrabbit/org.apache.jackrabbit.jcr2dav.bnd
new file mode 100644 (file)
index 0000000..6ec7dd9
--- /dev/null
@@ -0,0 +1,2 @@
+SLC-Origin-M2: org.apache.jackrabbit:jackrabbit-jcr2dav
+Bundle-SymbolicName: org.apache.jackrabbit.jcr2dav
diff --git a/repackage/org.argeo.tp.jcr/jackrabbit/org.apache.jackrabbit.jcr2spi.bnd b/repackage/org.argeo.tp.jcr/jackrabbit/org.apache.jackrabbit.jcr2spi.bnd
new file mode 100644 (file)
index 0000000..5809e9e
--- /dev/null
@@ -0,0 +1,2 @@
+SLC-Origin-M2: org.apache.jackrabbit:jackrabbit-jcr2spi
+Bundle-SymbolicName: org.apache.jackrabbit.jcr2spi
diff --git a/repackage/org.argeo.tp.jcr/jackrabbit/org.apache.jackrabbit.server.bnd b/repackage/org.argeo.tp.jcr/jackrabbit/org.apache.jackrabbit.server.bnd
new file mode 100644 (file)
index 0000000..ef7d703
--- /dev/null
@@ -0,0 +1,2 @@
+SLC-Origin-M2: org.apache.jackrabbit:jackrabbit-jcr-server
+Bundle-SymbolicName: org.apache.jackrabbit.server
diff --git a/repackage/org.argeo.tp.jcr/jackrabbit/org.apache.jackrabbit.servlet.bnd b/repackage/org.argeo.tp.jcr/jackrabbit/org.apache.jackrabbit.servlet.bnd
new file mode 100644 (file)
index 0000000..01f4326
--- /dev/null
@@ -0,0 +1,4 @@
+SLC-Origin-M2: org.apache.jackrabbit:jackrabbit-jcr-servlet
+Bundle-SymbolicName: org.apache.jackrabbit.servlet
+Fragment-Host: org.apache.jackrabbit.core
+Import-Package: org.apache.jackrabbit.rmi.*;resolution:=optional,*
diff --git a/repackage/org.argeo.tp.jcr/jackrabbit/org.apache.jackrabbit.spi.bnd b/repackage/org.argeo.tp.jcr/jackrabbit/org.apache.jackrabbit.spi.bnd
new file mode 100644 (file)
index 0000000..6d0c7e4
--- /dev/null
@@ -0,0 +1,2 @@
+SLC-Origin-M2: org.apache.jackrabbit:jackrabbit-spi
+Bundle-SymbolicName: org.apache.jackrabbit.spi
diff --git a/repackage/org.argeo.tp.jcr/jackrabbit/org.apache.jackrabbit.spi.commons.bnd b/repackage/org.argeo.tp.jcr/jackrabbit/org.apache.jackrabbit.spi.commons.bnd
new file mode 100644 (file)
index 0000000..3014a8c
--- /dev/null
@@ -0,0 +1,2 @@
+SLC-Origin-M2: org.apache.jackrabbit:jackrabbit-spi-commons
+Bundle-SymbolicName: org.apache.jackrabbit.spi.commons
diff --git a/repackage/org.argeo.tp.jcr/jackrabbit/org.apache.jackrabbit.spi2dav.bnd b/repackage/org.argeo.tp.jcr/jackrabbit/org.apache.jackrabbit.spi2dav.bnd
new file mode 100644 (file)
index 0000000..7c7de9c
--- /dev/null
@@ -0,0 +1,2 @@
+SLC-Origin-M2: org.apache.jackrabbit:jackrabbit-spi2dav
+Bundle-SymbolicName: org.apache.jackrabbit.spi2dav
diff --git a/repackage/org.argeo.tp.jcr/jackrabbit/org.apache.jackrabbit.spi2jcr.bnd b/repackage/org.argeo.tp.jcr/jackrabbit/org.apache.jackrabbit.spi2jcr.bnd
new file mode 100644 (file)
index 0000000..9474f30
--- /dev/null
@@ -0,0 +1,2 @@
+SLC-Origin-M2: org.apache.jackrabbit:jackrabbit-spi2jcr
+Bundle-SymbolicName: org.apache.jackrabbit.spi2jcr
diff --git a/repackage/org.argeo.tp.jcr/jackrabbit/org.apache.jackrabbit.webdav.bnd b/repackage/org.argeo.tp.jcr/jackrabbit/org.apache.jackrabbit.webdav.bnd
new file mode 100644 (file)
index 0000000..9a453bf
--- /dev/null
@@ -0,0 +1,2 @@
+SLC-Origin-M2: org.apache.jackrabbit:jackrabbit-webdav
+Bundle-SymbolicName: org.apache.jackrabbit.webdav
diff --git a/repackage/org.argeo.tp.jcr/javax.jcr.bnd b/repackage/org.argeo.tp.jcr/javax.jcr.bnd
new file mode 100644 (file)
index 0000000..10bd6c3
--- /dev/null
@@ -0,0 +1,5 @@
+Bundle-License: https://www.adobe.io/experience-manager/reference-materials/spec/jcr/2.0/license.html
+Bundle-SymbolicName: javax.jcr
+Bundle-Version: 2.0.0
+SLC-Origin-M2: javax.jcr:jcr:2.0
+SLC-Origin-ManifestNotModified: true
diff --git a/repackage/org.argeo.tp.jcr/oak/common.bnd b/repackage/org.argeo.tp.jcr/oak/common.bnd
new file mode 100644 (file)
index 0000000..02fa45a
--- /dev/null
@@ -0,0 +1,2 @@
+Bundle-License: Apache-2.0
+SLC-Origin-M2: :1.42.0
\ No newline at end of file
diff --git a/repackage/org.argeo.tp.jcr/oak/org.apache.jackrabbit.api.bnd b/repackage/org.argeo.tp.jcr/oak/org.apache.jackrabbit.api.bnd
new file mode 100644 (file)
index 0000000..ebd491d
--- /dev/null
@@ -0,0 +1,3 @@
+SLC-Origin-M2: org.apache.jackrabbit:oak-jackrabbit-api
+Bundle-SymbolicName: org.apache.jackrabbit.api
+Export-Package: org.apache.jackrabbit.*
diff --git a/repackage/org.argeo.tp.jcr/org.apache.commons.collections.bnd b/repackage/org.argeo.tp.jcr/org.apache.commons.collections.bnd
new file mode 100644 (file)
index 0000000..b81a7e3
--- /dev/null
@@ -0,0 +1,3 @@
+Bundle-License: Apache-2.0
+Bundle-SymbolicName: org.apache.commons.collections
+SLC-Origin-M2: commons-collections:commons-collections:3.2.2
diff --git a/repackage/org.argeo.tp.jcr/org.apache.commons.dbcp.bnd b/repackage/org.argeo.tp.jcr/org.apache.commons.dbcp.bnd
new file mode 100644 (file)
index 0000000..7d03c4d
--- /dev/null
@@ -0,0 +1,5 @@
+Bundle-License: Apache-2.0
+Bundle-SymbolicName: org.apache.commons.dbcp
+SLC-Origin-M2: commons-dbcp:commons-dbcp:1.4
+Import-Package: javax.transaction.*; resolution:="optional",\
+*
diff --git a/repackage/org.argeo.tp.jcr/org.apache.commons.pool.bnd b/repackage/org.argeo.tp.jcr/org.apache.commons.pool.bnd
new file mode 100644 (file)
index 0000000..c0ae270
--- /dev/null
@@ -0,0 +1,3 @@
+Bundle-License: Apache-2.0
+Bundle-SymbolicName: org.apache.commons.pool
+SLC-Origin-M2: commons-pool:commons-pool:1.6
diff --git a/repackage/org.argeo.tp.jcr/org.apache.lucene.bnd b/repackage/org.argeo.tp.jcr/org.apache.lucene.bnd
new file mode 100644 (file)
index 0000000..8126ffd
--- /dev/null
@@ -0,0 +1,3 @@
+Bundle-License: Apache-2.0
+Bundle-SymbolicName: org.apache.lucene
+SLC-Origin-M2: org.apache.lucene:lucene-core:3.6.2
\ No newline at end of file
diff --git a/repackage/org.argeo.tp.jetty/jetty-websocket/merge.bnd b/repackage/org.argeo.tp.jetty/jetty-websocket/merge.bnd
new file mode 100644 (file)
index 0000000..309a9e7
--- /dev/null
@@ -0,0 +1,22 @@
+Bundle-SymbolicName: org.eclipse.jetty.websocket
+Bundle-License: Apache-2.0
+SLC-Origin-M2: :10.0.9
+SLC-Origin-M2-Merge: \
+org.eclipse.jetty.websocket:websocket-core-client, \
+org.eclipse.jetty.websocket:websocket-core-common, \
+org.eclipse.jetty.websocket:websocket-core-server, \
+org.eclipse.jetty.websocket:websocket-jetty-api, \
+org.eclipse.jetty.websocket:websocket-jetty-client, \
+org.eclipse.jetty.websocket:websocket-jetty-common, \
+org.eclipse.jetty.websocket:websocket-jetty-server,\
+org.eclipse.jetty.websocket:websocket-javax-client, \
+org.eclipse.jetty.websocket:websocket-javax-common, \
+org.eclipse.jetty.websocket:websocket-javax-server,\
+org.eclipse.jetty.websocket:websocket-servlet, \
+
+Export-Package: org.eclipse.jetty.*
+
+Import-Package: \
+!java.*, \
+org.eclipse.jetty.webapp;resolution:="optional", \
+*
\ No newline at end of file
diff --git a/repackage/org.argeo.tp.jetty/jetty/common.bnd b/repackage/org.argeo.tp.jetty/jetty/common.bnd
new file mode 100644 (file)
index 0000000..25c6ff9
--- /dev/null
@@ -0,0 +1,2 @@
+Bundle-License: Apache-2.0
+SLC-Origin-M2: :10.0.9
diff --git a/repackage/org.argeo.tp.jetty/jetty/org.eclipse.jetty.alpn.client.bnd b/repackage/org.argeo.tp.jetty/jetty/org.eclipse.jetty.alpn.client.bnd
new file mode 100644 (file)
index 0000000..202f50a
--- /dev/null
@@ -0,0 +1,2 @@
+SLC-Origin-M2: org.eclipse.jetty:jetty-alpn-client
+SLC-Origin-ManifestNotModified: true
diff --git a/repackage/org.argeo.tp.jetty/jetty/org.eclipse.jetty.alpn.server.bnd b/repackage/org.argeo.tp.jetty/jetty/org.eclipse.jetty.alpn.server.bnd
new file mode 100644 (file)
index 0000000..47e4560
--- /dev/null
@@ -0,0 +1,2 @@
+SLC-Origin-M2: org.eclipse.jetty:jetty-alpn-server
+SLC-Origin-ManifestNotModified: true
diff --git a/repackage/org.argeo.tp.jetty/jetty/org.eclipse.jetty.client.bnd b/repackage/org.argeo.tp.jetty/jetty/org.eclipse.jetty.client.bnd
new file mode 100644 (file)
index 0000000..8bce1ab
--- /dev/null
@@ -0,0 +1,3 @@
+SLC-Origin-M2: org.eclipse.jetty:jetty-client
+SLC-Origin-ManifestNotModified: true
+Bundle-SymbolicName: org.eclipse.jetty.client
diff --git a/repackage/org.argeo.tp.jetty/jetty/org.eclipse.jetty.continuation.bnd.retired b/repackage/org.argeo.tp.jetty/jetty/org.eclipse.jetty.continuation.bnd.retired
new file mode 100644 (file)
index 0000000..5cf169d
--- /dev/null
@@ -0,0 +1,3 @@
+SLC-Origin-M2: org.eclipse.jetty:jetty-continuation
+SLC-Origin-ManifestNotModified: true
+Bundle-SymbolicName: org.eclipse.jetty.continuation
diff --git a/repackage/org.argeo.tp.jetty/jetty/org.eclipse.jetty.http.bnd b/repackage/org.argeo.tp.jetty/jetty/org.eclipse.jetty.http.bnd
new file mode 100644 (file)
index 0000000..4a4e18c
--- /dev/null
@@ -0,0 +1,3 @@
+SLC-Origin-M2: org.eclipse.jetty:jetty-http
+SLC-Origin-ManifestNotModified: true
+Bundle-SymbolicName: org.eclipse.jetty.http
diff --git a/repackage/org.argeo.tp.jetty/jetty/org.eclipse.jetty.http2.client.bnd b/repackage/org.argeo.tp.jetty/jetty/org.eclipse.jetty.http2.client.bnd
new file mode 100644 (file)
index 0000000..b57b83f
--- /dev/null
@@ -0,0 +1,2 @@
+SLC-Origin-M2: org.eclipse.jetty.http2:http2-client
+SLC-Origin-ManifestNotModified: true
diff --git a/repackage/org.argeo.tp.jetty/jetty/org.eclipse.jetty.http2.common.bnd b/repackage/org.argeo.tp.jetty/jetty/org.eclipse.jetty.http2.common.bnd
new file mode 100644 (file)
index 0000000..c1d7174
--- /dev/null
@@ -0,0 +1,2 @@
+SLC-Origin-M2: org.eclipse.jetty.http2:http2-common
+SLC-Origin-ManifestNotModified: true
diff --git a/repackage/org.argeo.tp.jetty/jetty/org.eclipse.jetty.http2.hpack.bnd b/repackage/org.argeo.tp.jetty/jetty/org.eclipse.jetty.http2.hpack.bnd
new file mode 100644 (file)
index 0000000..766cdd0
--- /dev/null
@@ -0,0 +1,2 @@
+SLC-Origin-M2: org.eclipse.jetty.http2:http2-hpack
+SLC-Origin-ManifestNotModified: true
diff --git a/repackage/org.argeo.tp.jetty/jetty/org.eclipse.jetty.http2.server.bnd b/repackage/org.argeo.tp.jetty/jetty/org.eclipse.jetty.http2.server.bnd
new file mode 100644 (file)
index 0000000..2f1a080
--- /dev/null
@@ -0,0 +1,2 @@
+SLC-Origin-M2: org.eclipse.jetty.http2:http2-server
+SLC-Origin-ManifestNotModified: true
diff --git a/repackage/org.argeo.tp.jetty/jetty/org.eclipse.jetty.io.bnd b/repackage/org.argeo.tp.jetty/jetty/org.eclipse.jetty.io.bnd
new file mode 100644 (file)
index 0000000..4037c70
--- /dev/null
@@ -0,0 +1,3 @@
+SLC-Origin-M2: org.eclipse.jetty:jetty-io
+SLC-Origin-ManifestNotModified: true
+Bundle-SymbolicName: org.eclipse.jetty.io
diff --git a/repackage/org.argeo.tp.jetty/jetty/org.eclipse.jetty.jmx.bnd b/repackage/org.argeo.tp.jetty/jetty/org.eclipse.jetty.jmx.bnd
new file mode 100644 (file)
index 0000000..dbdf6e1
--- /dev/null
@@ -0,0 +1,3 @@
+SLC-Origin-M2: org.eclipse.jetty:jetty-jmx
+SLC-Origin-ManifestNotModified: true
+Bundle-SymbolicName: org.eclipse.jetty.jmx
diff --git a/repackage/org.argeo.tp.jetty/jetty/org.eclipse.jetty.security.bnd b/repackage/org.argeo.tp.jetty/jetty/org.eclipse.jetty.security.bnd
new file mode 100644 (file)
index 0000000..f28b886
--- /dev/null
@@ -0,0 +1,3 @@
+SLC-Origin-M2: org.eclipse.jetty:jetty-security
+SLC-Origin-ManifestNotModified: true
+Bundle-SymbolicName: org.eclipse.jetty.security
diff --git a/repackage/org.argeo.tp.jetty/jetty/org.eclipse.jetty.server.bnd b/repackage/org.argeo.tp.jetty/jetty/org.eclipse.jetty.server.bnd
new file mode 100644 (file)
index 0000000..d66a70d
--- /dev/null
@@ -0,0 +1,3 @@
+SLC-Origin-M2: org.eclipse.jetty:jetty-server
+SLC-Origin-ManifestNotModified: true
+Bundle-SymbolicName: org.eclipse.jetty.server
diff --git a/repackage/org.argeo.tp.jetty/jetty/org.eclipse.jetty.servlet.bnd b/repackage/org.argeo.tp.jetty/jetty/org.eclipse.jetty.servlet.bnd
new file mode 100644 (file)
index 0000000..68469c1
--- /dev/null
@@ -0,0 +1,3 @@
+SLC-Origin-M2: org.eclipse.jetty:jetty-servlet
+SLC-Origin-ManifestNotModified: true
+Bundle-SymbolicName: org.eclipse.jetty.servlet
diff --git a/repackage/org.argeo.tp.jetty/jetty/org.eclipse.jetty.servlets.bnd b/repackage/org.argeo.tp.jetty/jetty/org.eclipse.jetty.servlets.bnd
new file mode 100644 (file)
index 0000000..27a8f2e
--- /dev/null
@@ -0,0 +1,3 @@
+SLC-Origin-M2: org.eclipse.jetty:jetty-servlets
+SLC-Origin-ManifestNotModified: true
+Bundle-SymbolicName: org.eclipse.jetty.servlets
diff --git a/repackage/org.argeo.tp.jetty/jetty/org.eclipse.jetty.util.ajax.bnd b/repackage/org.argeo.tp.jetty/jetty/org.eclipse.jetty.util.ajax.bnd
new file mode 100644 (file)
index 0000000..ec671fa
--- /dev/null
@@ -0,0 +1,3 @@
+SLC-Origin-M2: org.eclipse.jetty:jetty-util-ajax
+SLC-Origin-ManifestNotModified: true
+Bundle-SymbolicName: org.eclipse.jetty.util.ajax
diff --git a/repackage/org.argeo.tp.jetty/jetty/org.eclipse.jetty.util.bnd b/repackage/org.argeo.tp.jetty/jetty/org.eclipse.jetty.util.bnd
new file mode 100644 (file)
index 0000000..600cc70
--- /dev/null
@@ -0,0 +1,3 @@
+SLC-Origin-M2: org.eclipse.jetty:jetty-util
+SLC-Origin-ManifestNotModified: true
+Bundle-SymbolicName: org.eclipse.jetty.util
diff --git a/repackage/org.argeo.tp.jetty/jetty/org.eclipse.jetty.xml.bnd b/repackage/org.argeo.tp.jetty/jetty/org.eclipse.jetty.xml.bnd
new file mode 100644 (file)
index 0000000..0ccef1a
--- /dev/null
@@ -0,0 +1,3 @@
+SLC-Origin-M2: org.eclipse.jetty:jetty-xml
+SLC-Origin-ManifestNotModified: true
+Bundle-SymbolicName: org.eclipse.jetty.xml
diff --git a/repackage/org.argeo.tp.poi/org.apache.xmlbeans.bnd b/repackage/org.argeo.tp.poi/org.apache.xmlbeans.bnd
new file mode 100644 (file)
index 0000000..83d6d31
--- /dev/null
@@ -0,0 +1,8 @@
+Bundle-License: Apache-2.0
+Bundle-SymbolicName: org.apache.xmlbeans
+DynamicImport-Package: *
+Import-Package: org.apache.tools.ant.*;resolution:=optional,
+net.sf.saxon.*;resolution:=optional,
+com.sun.*;resolution:=optional,
+*
+SLC-Origin-M2: org.apache.xmlbeans:xmlbeans:3.1.0
\ No newline at end of file
diff --git a/repackage/org.argeo.tp.poi/poi/common.bnd b/repackage/org.argeo.tp.poi/poi/common.bnd
new file mode 100644 (file)
index 0000000..b3e3996
--- /dev/null
@@ -0,0 +1,2 @@
+Bundle-License: Apache-2.0
+SLC-Origin-M2: :5.2.2
\ No newline at end of file
diff --git a/repackage/org.argeo.tp.poi/poi/org.apache.poi.bnd b/repackage/org.argeo.tp.poi/poi/org.apache.poi.bnd
new file mode 100644 (file)
index 0000000..9856bd2
--- /dev/null
@@ -0,0 +1,5 @@
+Bundle-SymbolicName: org.apache.poi
+SLC-Origin-M2: org.apache.poi:poi
+Import-Package: \
+org.apache.logging.log4j.*;resolution:=optional,\
+*
diff --git a/repackage/org.argeo.tp.poi/poi/org.apache.poi.ooxml.bnd b/repackage/org.argeo.tp.poi/poi/org.apache.poi.ooxml.bnd
new file mode 100644 (file)
index 0000000..75bea7c
--- /dev/null
@@ -0,0 +1,8 @@
+Bundle-SymbolicName: org.apache.poi.ooxml
+Import-Package: \
+com.graphbuilder.*;resolution:=optional,\
+com.graphbuilder.*;resolution:=optional,\
+org.etsi.uri.*;resolution:=optional,\
+org.apache.logging.log4j.*;resolution:=optional,\
+*
+SLC-Origin-M2: org.apache.poi:poi-ooxml
diff --git a/repackage/org.argeo.tp.poi/poi/org.apache.poi.ooxml.schemas.bnd b/repackage/org.argeo.tp.poi/poi/org.apache.poi.ooxml.schemas.bnd
new file mode 100644 (file)
index 0000000..7b4fa6e
--- /dev/null
@@ -0,0 +1,7 @@
+Bundle-SymbolicName: org.apache.poi.ooxml.schemas
+Import-Package: \
+com.microsoft.schemas.*;resolution:=optional, \
+org.openxmlformats.schemas.*;resolution:=optional, \
+*
+Require-Bundle: org.apache.xmlbeans
+SLC-Origin-M2: org.apache.poi:poi-ooxml-full
diff --git a/repackage/org.argeo.tp.poi/poi/org.apache.poi.scratchpad.bnd b/repackage/org.argeo.tp.poi/poi/org.apache.poi.scratchpad.bnd
new file mode 100644 (file)
index 0000000..50b0d3f
--- /dev/null
@@ -0,0 +1,5 @@
+Bundle-SymbolicName: org.apache.poi.scratchpad
+SLC-Origin-M2: org.apache.poi:poi-scratchpad
+Import-Package: \
+org.apache.logging.log4j.*;resolution:=optional,\
+*
diff --git a/repackage/org.argeo.tp.sdk/biz.aQute.bndlib.bnd b/repackage/org.argeo.tp.sdk/biz.aQute.bndlib.bnd
new file mode 100644 (file)
index 0000000..0fa851b
--- /dev/null
@@ -0,0 +1,3 @@
+Bundle-License: Apache-2.0
+SLC-Origin-M2: biz.aQute.bnd:biz.aQute.bndlib:5.3.0
+SLC-Origin-ManifestNotModified: true
diff --git a/repackage/org.argeo.tp.sdk/junit-jupiter/merge.bnd b/repackage/org.argeo.tp.sdk/junit-jupiter/merge.bnd
new file mode 100644 (file)
index 0000000..312584e
--- /dev/null
@@ -0,0 +1,14 @@
+Bundle-License: EPL-2.0
+Bundle-SymbolicName: org.junit.jupiter
+SLC-Origin-M2: :5.8.2
+SLC-Origin-M2-Merge: \
+org.junit.jupiter:junit-jupiter-api, \
+org.junit.jupiter:junit-jupiter-engine, \
+org.junit.jupiter:junit-jupiter-params, \
+
+Export-Package: org.junit.jupiter.*
+
+Import-Package: \
+com.googlecode.openbeans.*;resolution:="optional", \
+kotlin.*;resolution:="optional", \
+*
\ No newline at end of file
diff --git a/repackage/org.argeo.tp.sdk/junit-platform/merge.bnd b/repackage/org.argeo.tp.sdk/junit-platform/merge.bnd
new file mode 100644 (file)
index 0000000..502ffa6
--- /dev/null
@@ -0,0 +1,22 @@
+Bundle-License: EPL-2.0
+Bundle-SymbolicName: org.junit.platform
+SLC-Origin-M2: :1.8.2
+SLC-Origin-M2-Merge: \
+org.junit.platform:junit-platform-commons, \
+org.junit.platform:junit-platform-console, \
+org.junit.platform:junit-platform-engine, \
+org.junit.platform:junit-platform-reporting, \
+org.junit.platform:junit-platform-suite, \
+org.junit.platform:junit-platform-suite-api, \
+org.junit.platform:junit-platform-suite-commons, \
+org.junit.platform:junit-platform-suite-engine, \
+org.junit.platform:junit-platform-testkit, \
+org.junit.platform:junit-platform-launcher, \
+
+Export-Package: org.junit.platform.*
+
+Import-Package: \
+org.assertj.*;resolution:="optional", \
+groovy.lang.*;resolution:="optional", \
+org.fusesource.*;resolution:="optional", \
+*
\ No newline at end of file
diff --git a/repackage/org.argeo.tp.sdk/org.apiguardian.bnd b/repackage/org.argeo.tp.sdk/org.apiguardian.bnd
new file mode 100644 (file)
index 0000000..039c57a
--- /dev/null
@@ -0,0 +1,2 @@
+Bundle-License: Apache-2.0
+SLC-Origin-M2: org.apiguardian:apiguardian-api:1.1.2
\ No newline at end of file
diff --git a/repackage/org.argeo.tp.sdk/org.eclipse.jdt.core.compiler.batch.bnd b/repackage/org.argeo.tp.sdk/org.eclipse.jdt.core.compiler.batch.bnd
new file mode 100644 (file)
index 0000000..27f4f43
--- /dev/null
@@ -0,0 +1,4 @@
+Bundle-License: EPL-2.0
+SLC-Origin-M2: org.eclipse.jdt:ecj:3.29.0
+SLC-Origin-ManifestNotModified: true
+Main-Class: org.eclipse.jdt.internal.compiler.batch.Main
\ No newline at end of file
diff --git a/repackage/org.argeo.tp.sdk/org.eclipse.jgit.bnd b/repackage/org.argeo.tp.sdk/org.eclipse.jgit.bnd
new file mode 100644 (file)
index 0000000..c4df6b9
--- /dev/null
@@ -0,0 +1,6 @@
+Bundle-License: BSD-3-Clause
+SLC-Origin-M2: org.eclipse.jgit:org.eclipse.jgit:5.13.0.202109080827-r
+Import-Package: \
+sun.*;resolution:=optional, \
+com.jcraft.jsch;resolution:=optional, \
+*
diff --git a/repackage/org.argeo.tp.sdk/org.graalvm.bnd.retired b/repackage/org.argeo.tp.sdk/org.graalvm.bnd.retired
new file mode 100644 (file)
index 0000000..dd55db9
--- /dev/null
@@ -0,0 +1,4 @@
+Bundle-License: UPL-1.0
+SLC-Origin-M2: org.graalvm.sdk:graal-sdk:22.1.0.1
+# Workaround for errors in Eclipse PDE when using GraalVM as JCM
+Import-Package: java.*;resolution:="optional", *
\ No newline at end of file
diff --git a/repackage/org.argeo.tp.sdk/org.hamcrest.core.bnd b/repackage/org.argeo.tp.sdk/org.hamcrest.core.bnd
new file mode 100644 (file)
index 0000000..1a47046
--- /dev/null
@@ -0,0 +1,2 @@
+Bundle-License: BSD-3-Clause
+SLC-Origin-M2: org.hamcrest:hamcrest-core:1.3
diff --git a/repackage/org.argeo.tp.sdk/org.junit.bnd b/repackage/org.argeo.tp.sdk/org.junit.bnd
new file mode 100644 (file)
index 0000000..414b102
--- /dev/null
@@ -0,0 +1,6 @@
+Bundle-License: EPL-1.0
+Bundle-SymbolicName: org.junit
+Import-Package: org.hamcrest;resolution:=optional,\
+org.hamcrest.core;resolution:=optional,\
+*
+SLC-Origin-M2: junit:junit:4.13.2
\ No newline at end of file
diff --git a/repackage/org.argeo.tp.sdk/org.junit.vintage.bnd b/repackage/org.argeo.tp.sdk/org.junit.vintage.bnd
new file mode 100644 (file)
index 0000000..c063891
--- /dev/null
@@ -0,0 +1,2 @@
+Bundle-License: EPL-2.0
+SLC-Origin-M2: org.junit.vintage:junit-vintage-engine:5.8.2
\ No newline at end of file
diff --git a/repackage/org.argeo.tp.sdk/org.opentest4j.bnd b/repackage/org.argeo.tp.sdk/org.opentest4j.bnd
new file mode 100644 (file)
index 0000000..c959b42
--- /dev/null
@@ -0,0 +1,2 @@
+Bundle-License: Apache-2.0
+SLC-Origin-M2: org.opentest4j:opentest4j:1.2.0
\ No newline at end of file
diff --git a/repackage/org.argeo.tp.sdk/org.redline-rpm.bnd b/repackage/org.argeo.tp.sdk/org.redline-rpm.bnd
new file mode 100644 (file)
index 0000000..6a32d26
--- /dev/null
@@ -0,0 +1,7 @@
+Bundle-License: MIT
+Bundle-SymbolicName: org.redline-rpm
+Import-Package: sun.security.*;resolution:=optional,
+org.apache.tools.ant.*;resolution:=optional,
+org.apache.tools.zip;resolution:=optional,
+*
+SLC-Origin-M2: org.redline-rpm:redline:1.2.10
diff --git a/repackage/org.argeo.tp/bouncycastle/bcmail.bnd b/repackage/org.argeo.tp/bouncycastle/bcmail.bnd
new file mode 100644 (file)
index 0000000..38ba77b
--- /dev/null
@@ -0,0 +1,3 @@
+Bundle-SymbolicName: bcmail
+SLC-Origin-ManifestNotModified: true
+SLC-Origin-M2: org.bouncycastle:bcmail-jdk18on
diff --git a/repackage/org.argeo.tp/bouncycastle/bcpg.bnd b/repackage/org.argeo.tp/bouncycastle/bcpg.bnd
new file mode 100644 (file)
index 0000000..6e6f8af
--- /dev/null
@@ -0,0 +1,3 @@
+Bundle-SymbolicName: bcpg
+SLC-Origin-ManifestNotModified: true
+SLC-Origin-M2: org.bouncycastle:bcpg-jdk18on
diff --git a/repackage/org.argeo.tp/bouncycastle/bcpkix.bnd b/repackage/org.argeo.tp/bouncycastle/bcpkix.bnd
new file mode 100644 (file)
index 0000000..50b64bc
--- /dev/null
@@ -0,0 +1,3 @@
+Bundle-SymbolicName: bcpkix
+SLC-Origin-ManifestNotModified: true
+SLC-Origin-M2: org.bouncycastle:bcpkix-jdk18on
diff --git a/repackage/org.argeo.tp/bouncycastle/bcprov.bnd b/repackage/org.argeo.tp/bouncycastle/bcprov.bnd
new file mode 100644 (file)
index 0000000..b507d5e
--- /dev/null
@@ -0,0 +1,3 @@
+Bundle-SymbolicName: bcprov
+SLC-Origin-ManifestNotModified: true
+SLC-Origin-M2: org.bouncycastle:bcprov-jdk18on
diff --git a/repackage/org.argeo.tp/bouncycastle/bcutil.bnd b/repackage/org.argeo.tp/bouncycastle/bcutil.bnd
new file mode 100644 (file)
index 0000000..778c309
--- /dev/null
@@ -0,0 +1,3 @@
+Bundle-SymbolicName: bcutil
+SLC-Origin-ManifestNotModified: true
+SLC-Origin-M2: org.bouncycastle:bcutil-jdk18on
diff --git a/repackage/org.argeo.tp/bouncycastle/common.bnd b/repackage/org.argeo.tp/bouncycastle/common.bnd
new file mode 100644 (file)
index 0000000..bbd389d
--- /dev/null
@@ -0,0 +1,2 @@
+Bundle-License: MIT
+SLC-Origin-M2: :1.71
diff --git a/repackage/org.argeo.tp/com.googlecode.javaewah.JavaEWAH.bnd b/repackage/org.argeo.tp/com.googlecode.javaewah.JavaEWAH.bnd
new file mode 100644 (file)
index 0000000..4355de4
--- /dev/null
@@ -0,0 +1,4 @@
+Bundle-License: Apache-2.0
+Bundle-SymbolicName: com.googlecode.javaewah.JavaEWAH
+SLC-Origin-M2: com.googlecode.javaewah:JavaEWAH:1.1.13
+SLC-Origin-ManifestNotModified: true
diff --git a/repackage/org.argeo.tp/com.zaxxer.sparsebits.bnd b/repackage/org.argeo.tp/com.zaxxer.sparsebits.bnd
new file mode 100644 (file)
index 0000000..0f72baf
--- /dev/null
@@ -0,0 +1,3 @@
+Bundle-License: Apache-2.0
+Bundle-SymbolicName: com.zaxxer.sparsebits
+SLC-Origin-M2: com.zaxxer:SparseBitSet:1.2
diff --git a/repackage/org.argeo.tp/jackson/com.fasterxml.jackson.core.jackson-annotations.bnd b/repackage/org.argeo.tp/jackson/com.fasterxml.jackson.core.jackson-annotations.bnd
new file mode 100644 (file)
index 0000000..94b69a1
--- /dev/null
@@ -0,0 +1,3 @@
+Bundle-SymbolicName: com.fasterxml.jackson.core.jackson-annotations
+SLC-Origin-M2: com.fasterxml.jackson.core:jackson-annotations
+SLC-Origin-ManifestNotModified: true
diff --git a/repackage/org.argeo.tp/jackson/com.fasterxml.jackson.core.jackson-core.bnd b/repackage/org.argeo.tp/jackson/com.fasterxml.jackson.core.jackson-core.bnd
new file mode 100644 (file)
index 0000000..a4b359f
--- /dev/null
@@ -0,0 +1,3 @@
+Bundle-SymbolicName: com.fasterxml.jackson.core.jackson-core
+SLC-Origin-M2: com.fasterxml.jackson.core:jackson-core
+SLC-Origin-ManifestNotModified: true
diff --git a/repackage/org.argeo.tp/jackson/com.fasterxml.jackson.core.jackson-databind.bnd b/repackage/org.argeo.tp/jackson/com.fasterxml.jackson.core.jackson-databind.bnd
new file mode 100644 (file)
index 0000000..32ded22
--- /dev/null
@@ -0,0 +1,3 @@
+Bundle-SymbolicName: com.fasterxml.jackson.core.jackson-databind
+SLC-Origin-M2: com.fasterxml.jackson.core:jackson-databind
+SLC-Origin-ManifestNotModified: true
diff --git a/repackage/org.argeo.tp/jackson/common.bnd b/repackage/org.argeo.tp/jackson/common.bnd
new file mode 100644 (file)
index 0000000..b9a12cc
--- /dev/null
@@ -0,0 +1,2 @@
+Bundle-License: Apache-2.0
+SLC-Origin-M2: :2.13.1
diff --git a/repackage/org.argeo.tp/jakarta.mail.bnd b/repackage/org.argeo.tp/jakarta.mail.bnd
new file mode 100644 (file)
index 0000000..15093a7
--- /dev/null
@@ -0,0 +1,4 @@
+Bundle-License: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
+Bundle-SymbolicName: jakarta.mail
+SLC-Origin-M2: com.sun.mail:jakarta.mail:1.6.7
+SLC-Origin-ManifestNotModified: true
diff --git a/repackage/org.argeo.tp/jakarta.servlet.api.bnd b/repackage/org.argeo.tp/jakarta.servlet.api.bnd
new file mode 100644 (file)
index 0000000..5664fbd
--- /dev/null
@@ -0,0 +1,3 @@
+Bundle-License: GPL-2.0-with-classpath-exception
+SLC-Origin-M2: jakarta.servlet:jakarta.servlet-api:4.0.4
+SLC-Origin-ManifestNotModified: true
diff --git a/repackage/org.argeo.tp/javax.activation.bnd b/repackage/org.argeo.tp/javax.activation.bnd
new file mode 100644 (file)
index 0000000..167bd5f
--- /dev/null
@@ -0,0 +1,3 @@
+Bundle-License: BSD-3-Clause
+SLC-Origin-M2: jakarta.activation:jakarta.activation-api:1.2.2
+SLC-Origin-ManifestNotModified: true
diff --git a/repackage/org.argeo.tp/javax.websocket.bnd b/repackage/org.argeo.tp/javax.websocket.bnd
new file mode 100644 (file)
index 0000000..cefcff8
--- /dev/null
@@ -0,0 +1,4 @@
+Bundle-SymbolicName: javax.websocket
+Bundle-License: GPL-2.0-only OR CDDL-1.1
+SLC-Origin-M2: javax.websocket:javax.websocket-api:1.1
+SLC-Origin-ManifestNotModified: true
diff --git a/repackage/org.argeo.tp/net.i2p.crypto.eddsa.bnd b/repackage/org.argeo.tp/net.i2p.crypto.eddsa.bnd
new file mode 100644 (file)
index 0000000..2eea764
--- /dev/null
@@ -0,0 +1,5 @@
+Bundle-License: CC0-1.0
+SLC-Origin-M2: net.i2p.crypto:eddsa:0.3.0
+Import-Package: \
+sun.*;resolution:="optional", \
+*
diff --git a/repackage/org.argeo.tp/org.h2.bnd b/repackage/org.argeo.tp/org.h2.bnd
new file mode 100644 (file)
index 0000000..a6090fa
--- /dev/null
@@ -0,0 +1,4 @@
+Bundle-License: MPL-2.0
+Bundle-SymbolicName: org.h2
+SLC-Origin-M2: com.h2database:h2:1.4.200
+SLC-Origin-ManifestNotModified: true
diff --git a/repackage/org.argeo.tp/org.postgresql.jdbc42.bnd b/repackage/org.argeo.tp/org.postgresql.jdbc42.bnd
new file mode 100644 (file)
index 0000000..7767b5c
--- /dev/null
@@ -0,0 +1,4 @@
+Bundle-License: BSD-2-Clause
+Bundle-SymbolicName: org.postgresql.jdbc42
+SLC-Origin-M2: org.postgresql:postgresql:42.3.5
+SLC-Origin-ManifestNotModified: true
diff --git a/repackage/org.argeo.tp/org.tukaani.xz.bnd b/repackage/org.argeo.tp/org.tukaani.xz.bnd
new file mode 100644 (file)
index 0000000..d4a6821
--- /dev/null
@@ -0,0 +1,2 @@
+Bundle-License: CC0-1.0
+SLC-Origin-M2: org.tukaani:xz:1.9
diff --git a/repackage/org.argeo.tp/org.w3c.css.sac.bnd b/repackage/org.argeo.tp/org.w3c.css.sac.bnd
new file mode 100644 (file)
index 0000000..bbb35cc
--- /dev/null
@@ -0,0 +1,3 @@
+Bundle-License: W3C
+Bundle-SymbolicName: org.w3c.css.sac
+SLC-Origin-M2: org.w3c.css:sac:1.3
diff --git a/repackage/org.argeo.tp/org.w3c.dom.smil.bnd b/repackage/org.argeo.tp/org.w3c.dom.smil.bnd
new file mode 100644 (file)
index 0000000..05b9dd6
--- /dev/null
@@ -0,0 +1,4 @@
+Bundle-License: W3C
+Bundle-SymbolicName: org.w3c.dom.smil
+Bundle-Version: 1.0
+SLC-Origin-M2: org.axsl.org.w3c.dom.smil:smil-boston-dom-java:2000-02-25
diff --git a/repackage/org.argeo.tp/org.w3c.dom.svg.bnd b/repackage/org.argeo.tp/org.w3c.dom.svg.bnd
new file mode 100644 (file)
index 0000000..44cb2b1
--- /dev/null
@@ -0,0 +1,3 @@
+Bundle-License: W3C
+Bundle-SymbolicName: org.w3c.dom.svg
+SLC-Origin-M2: org.axsl.org.w3c.dom.svg:svg-dom-java:1.1
diff --git a/repackage/org.argeo.tp/slf4j/common.bnd b/repackage/org.argeo.tp/slf4j/common.bnd
new file mode 100644 (file)
index 0000000..2c5cf1d
--- /dev/null
@@ -0,0 +1,2 @@
+Bundle-License: Apache-2.0
+SLC-Origin-M2: :1.7.36
diff --git a/repackage/org.argeo.tp/slf4j/org.slf4j.api.bnd b/repackage/org.argeo.tp/slf4j/org.slf4j.api.bnd
new file mode 100644 (file)
index 0000000..75afe68
--- /dev/null
@@ -0,0 +1,2 @@
+Bundle-SymbolicName: org.slf4j.api
+SLC-Origin-M2: org.slf4j:slf4j-api
diff --git a/repackage/org.argeo.tp/slf4j/org.slf4j.commons.logging.bnd b/repackage/org.argeo.tp/slf4j/org.slf4j.commons.logging.bnd
new file mode 100644 (file)
index 0000000..9b2ffdb
--- /dev/null
@@ -0,0 +1,3 @@
+Bundle-SymbolicName: org.slf4j.commons.logging
+SLC-Origin-M2: org.slf4j:jcl-over-slf4j
+Export-Package: org.apache.commons.logging.*;version="1.2"
\ No newline at end of file
diff --git a/repackage/org.argeo.tp/slf4j/org.slf4j.log4j.bnd.deactivated b/repackage/org.argeo.tp/slf4j/org.slf4j.log4j.bnd.deactivated
new file mode 100644 (file)
index 0000000..4275c6a
--- /dev/null
@@ -0,0 +1,3 @@
+Bundle-SymbolicName: org.slf4j.log4j
+SLC-Origin-M2: org.slf4j:log4j-over-slf4j
+Export-Package: org.apache.logging.log4j.*;version="2.17"
\ No newline at end of file
diff --git a/repackage/osgi/api/org.argeo.tp.osgi/osgi.cmpn.bnd b/repackage/osgi/api/org.argeo.tp.osgi/osgi.cmpn.bnd
new file mode 100644 (file)
index 0000000..ef1e503
--- /dev/null
@@ -0,0 +1,2 @@
+SLC-Origin-M2: org.osgi:osgi.cmpn:7.0.0
+SLC-Origin-ManifestNotModified: true
diff --git a/repackage/osgi/api/org.argeo.tp.osgi/osgi.core.bnd b/repackage/osgi/api/org.argeo.tp.osgi/osgi.core.bnd
new file mode 100644 (file)
index 0000000..16a91c4
--- /dev/null
@@ -0,0 +1,2 @@
+SLC-Origin-M2: org.osgi:osgi.core:7.0.0
+SLC-Origin-ManifestNotModified: true
diff --git a/repackage/osgi/equinox/org.argeo.tp.eclipse/eclipse-equinox/common.bnd b/repackage/osgi/equinox/org.argeo.tp.eclipse/eclipse-equinox/common.bnd
new file mode 100644 (file)
index 0000000..9a7ae1d
--- /dev/null
@@ -0,0 +1,2 @@
+Bundle-License: EPL-1.0
+SLC-Origin-ManifestNotModified: true
diff --git a/repackage/osgi/equinox/org.argeo.tp.eclipse/eclipse-equinox/includes.properties b/repackage/osgi/equinox/org.argeo.tp.eclipse/eclipse-equinox/includes.properties
new file mode 100644 (file)
index 0000000..ac8b8b7
--- /dev/null
@@ -0,0 +1,14 @@
+plugins/org.eclipse.equinox.app*.jar=
+plugins/org.eclipse.equinox.cm*.jar=
+plugins/org.eclipse.equinox.common*.jar=
+plugins/org.eclipse.equinox.ds*.jar=
+plugins/org.eclipse.equinox.metatype*.jar=
+plugins/org.eclipse.equinox.event*.jar=
+plugins/org.eclipse.equinox.http.jetty*.jar=
+plugins/org.eclipse.equinox.http.registry*.jar=
+plugins/org.eclipse.equinox.http.servlet*.jar=
+plugins/org.eclipse.equinox.http.servletbridge*.jar=
+plugins/org.eclipse.equinox.preferences*.jar=
+plugins/org.eclipse.equinox.registry*.jar=
+plugins/org.eclipse.equinox.servletbridge*.jar=
+plugins/org.eclipse.equinox.util*.jar=
diff --git a/repackage/osgi/equinox/org.argeo.tp.osgi/eclipse-equinox/common.bnd b/repackage/osgi/equinox/org.argeo.tp.osgi/eclipse-equinox/common.bnd
new file mode 100644 (file)
index 0000000..7f3378c
--- /dev/null
@@ -0,0 +1,3 @@
+Bundle-License: EPL-1.0
+SLC-Origin-ManifestNotModified: true
+SLC-Origin-URI: http://www.eclipse.org/downloads/equinox/drops/R-4.23-202203080310/equinox-SDK-4.23.zip
diff --git a/repackage/osgi/equinox/org.argeo.tp.osgi/eclipse-equinox/includes.properties b/repackage/osgi/equinox/org.argeo.tp.osgi/eclipse-equinox/includes.properties
new file mode 100644 (file)
index 0000000..2b316d3
--- /dev/null
@@ -0,0 +1,8 @@
+plugins/org.eclipse.osgi_*.jar=
+plugins/org.eclipse.osgi.source_*.jar=
+plugins/org.eclipse.osgi.util*.jar=
+plugins/org.eclipse.osgi.services*.jar=
+plugins/org.apache.felix.gogo.*.jar=
+plugins/org.apache.felix.scr*.jar=
+plugins/org.eclipse.equinox.console_*.jar=
+plugins/org.eclipse.equinox.console.source_*.jar=
diff --git a/repackage/swt/rap/org.argeo.tp.swt.workbench/eclipse-rap/common.bnd b/repackage/swt/rap/org.argeo.tp.swt.workbench/eclipse-rap/common.bnd
new file mode 100644 (file)
index 0000000..9a7ae1d
--- /dev/null
@@ -0,0 +1,2 @@
+Bundle-License: EPL-1.0
+SLC-Origin-ManifestNotModified: true
diff --git a/repackage/swt/rap/org.argeo.tp.swt.workbench/eclipse-rap/excludes.properties b/repackage/swt/rap/org.argeo.tp.swt.workbench/eclipse-rap/excludes.properties
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/repackage/swt/rap/org.argeo.tp.swt.workbench/eclipse-rap/includes.properties b/repackage/swt/rap/org.argeo.tp.swt.workbench/eclipse-rap/includes.properties
new file mode 100644 (file)
index 0000000..93e66cb
--- /dev/null
@@ -0,0 +1,15 @@
+plugins/javax.inject*.jar=
+plugins/javax.annotation*.jar=
+plugins/org.apache.commons.jxpath*.jar=
+plugins/org.eclipse.e4*.jar=
+plugins/org.eclipse.emf*.jar=
+plugins/org.eclipse.rap.e4_*.jar=
+plugins/org.eclipse.rap.e4.source_*.jar=
+plugins/org.eclipse.rap.ui.workbench*.jar=
+plugins/org.eclipse.rap.ui_*.jar=
+plugins/org.eclipse.rap.ui.source_*.jar=
+plugins/org.eclipse.rap.ui.views*.jar=
+plugins/org.eclipse.rap.ui.forms*.jar=
+plugins/org.eclipse.help*.jar=
+plugins/com.ibm.icu*.jar=
+plugins/org.eclipse.rap.jface.databinding*.jar=
diff --git a/repackage/swt/rap/org.argeo.tp.swt/eclipse-rap/common.bnd b/repackage/swt/rap/org.argeo.tp.swt/eclipse-rap/common.bnd
new file mode 100644 (file)
index 0000000..9a7ae1d
--- /dev/null
@@ -0,0 +1,2 @@
+Bundle-License: EPL-1.0
+SLC-Origin-ManifestNotModified: true
diff --git a/repackage/swt/rap/org.argeo.tp.swt/eclipse-rap/includes.properties b/repackage/swt/rap/org.argeo.tp.swt/eclipse-rap/includes.properties
new file mode 100644 (file)
index 0000000..149a56f
--- /dev/null
@@ -0,0 +1,10 @@
+plugins/org.eclipse.core*.jar=
+plugins/org.eclipse.rap.rwt_*.jar=
+plugins/org.eclipse.rap.rwt.source_*.jar=
+plugins/org.eclipse.rap.rwt.osgi_*.jar=
+plugins/org.eclipse.rap.rwt.osgi.source_*.jar=
+plugins/org.eclipse.rap.fileupload*.jar=
+plugins/org.eclipse.rap.filedialog*.jar=
+plugins/org.eclipse.rap.jface_*.jar=
+plugins/org.eclipse.rap.jface.source_*.jar=
+plugins/org.eclipse.rap.nebula.*.jar=
diff --git a/repackage/swt/rcp/org.argeo.tp.swt.workbench/eclipse-rcp/common.bnd b/repackage/swt/rcp/org.argeo.tp.swt.workbench/eclipse-rcp/common.bnd
new file mode 100644 (file)
index 0000000..9a7ae1d
--- /dev/null
@@ -0,0 +1,2 @@
+Bundle-License: EPL-1.0
+SLC-Origin-ManifestNotModified: true
diff --git a/repackage/swt/rcp/org.argeo.tp.swt.workbench/eclipse-rcp/excludes.properties b/repackage/swt/rcp/org.argeo.tp.swt.workbench/eclipse-rcp/excludes.properties
new file mode 100644 (file)
index 0000000..7c8efe3
--- /dev/null
@@ -0,0 +1,7 @@
+plugins/org.eclipse.swt*.jar=
+plugins/org.eclipse.equinox*.jar=
+plugins/org.eclipse.core.*.jar=
+plugins/org.eclipse.jface_*.jar=
+plugins/org.eclipse.jface.source_*.jar=
+plugins/*ppc64le*
+plugins/org.eclipse.e4.ui.css*.jar=
diff --git a/repackage/swt/rcp/org.argeo.tp.swt.workbench/eclipse-rcp/includes.properties b/repackage/swt/rcp/org.argeo.tp.swt.workbench/eclipse-rcp/includes.properties
new file mode 100644 (file)
index 0000000..812ea25
--- /dev/null
@@ -0,0 +1,6 @@
+plugins/javax.inject*.jar=
+plugins/javax.annotation*.jar=
+plugins/org.apache.commons.jxpath*.jar=
+plugins/org.eclipse.*.jar=
+plugins/com.ibm.icu*.jar=
+
diff --git a/repackage/swt/rcp/org.argeo.tp.swt.workbench/org.eclipse.emf.common.bnd b/repackage/swt/rcp/org.argeo.tp.swt.workbench/org.eclipse.emf.common.bnd
new file mode 100644 (file)
index 0000000..6bade45
--- /dev/null
@@ -0,0 +1,3 @@
+Bundle-License: EPEL-2.0
+SLC-Origin-M2: org.eclipse.emf:org.eclipse.emf.common:2.24.0
+SLC-Origin-ManifestNotModified: true
diff --git a/repackage/swt/rcp/org.argeo.tp.swt.workbench/org.eclipse.emf.ecore.bnd b/repackage/swt/rcp/org.argeo.tp.swt.workbench/org.eclipse.emf.ecore.bnd
new file mode 100644 (file)
index 0000000..30033bf
--- /dev/null
@@ -0,0 +1,3 @@
+Bundle-License: EPEL-2.0
+SLC-Origin-M2: org.eclipse.emf:org.eclipse.emf.ecore:2.26.0
+SLC-Origin-ManifestNotModified: true
diff --git a/repackage/swt/rcp/org.argeo.tp.swt.workbench/org.eclipse.emf.ecore.change.bnd b/repackage/swt/rcp/org.argeo.tp.swt.workbench/org.eclipse.emf.ecore.change.bnd
new file mode 100644 (file)
index 0000000..ba733ef
--- /dev/null
@@ -0,0 +1,3 @@
+Bundle-License: EPEL-2.0
+SLC-Origin-M2: org.eclipse.emf:org.eclipse.emf.ecore.change:2.14.0
+SLC-Origin-ManifestNotModified: true
diff --git a/repackage/swt/rcp/org.argeo.tp.swt.workbench/org.eclipse.emf.ecore.xmi.bnd b/repackage/swt/rcp/org.argeo.tp.swt.workbench/org.eclipse.emf.ecore.xmi.bnd
new file mode 100644 (file)
index 0000000..4a40881
--- /dev/null
@@ -0,0 +1,3 @@
+Bundle-License: EPEL-2.0
+SLC-Origin-M2: org.eclipse.emf:org.eclipse.emf.ecore.xmi:2.16.0
+SLC-Origin-ManifestNotModified: true
diff --git a/repackage/swt/rcp/org.argeo.tp.swt/eclipse-equinox/common.bnd b/repackage/swt/rcp/org.argeo.tp.swt/eclipse-equinox/common.bnd
new file mode 100644 (file)
index 0000000..9a7ae1d
--- /dev/null
@@ -0,0 +1,2 @@
+Bundle-License: EPL-1.0
+SLC-Origin-ManifestNotModified: true
diff --git a/repackage/swt/rcp/org.argeo.tp.swt/eclipse-equinox/excludes.properties b/repackage/swt/rcp/org.argeo.tp.swt/eclipse-equinox/excludes.properties
new file mode 100644 (file)
index 0000000..44f1055
--- /dev/null
@@ -0,0 +1 @@
+plugins/org.eclipse.equinox.security.ui*.jar=
diff --git a/repackage/swt/rcp/org.argeo.tp.swt/eclipse-equinox/includes.properties b/repackage/swt/rcp/org.argeo.tp.swt/eclipse-equinox/includes.properties
new file mode 100644 (file)
index 0000000..f20b07d
--- /dev/null
@@ -0,0 +1 @@
+plugins/org.eclipse.equinox.security*.jar=
diff --git a/repackage/swt/rcp/org.argeo.tp.swt/eclipse-nebula/common.bnd b/repackage/swt/rcp/org.argeo.tp.swt/eclipse-nebula/common.bnd
new file mode 100644 (file)
index 0000000..b42292d
--- /dev/null
@@ -0,0 +1,2 @@
+Bundle-License: EPL-2.0
+SLC-Origin-ManifestNotModified: true
diff --git a/repackage/swt/rcp/org.argeo.tp.swt/eclipse-nebula/excludes.properties b/repackage/swt/rcp/org.argeo.tp.swt/eclipse-nebula/excludes.properties
new file mode 100644 (file)
index 0000000..5574815
--- /dev/null
@@ -0,0 +1,2 @@
+plugins/org.eclipse.nebula.widgets.grid.example*.jar=
+plugins/org.eclipse.nebula.widgets.grid.css*.jar=
diff --git a/repackage/swt/rcp/org.argeo.tp.swt/eclipse-nebula/includes.properties b/repackage/swt/rcp/org.argeo.tp.swt/eclipse-nebula/includes.properties
new file mode 100644 (file)
index 0000000..09ea542
--- /dev/null
@@ -0,0 +1,2 @@
+plugins/org.eclipse.nebula.widgets.grid*.jar=
+plugins/org.eclipse.nebula.widgets.richtext*.jar=
diff --git a/repackage/swt/rcp/org.argeo.tp.swt/eclipse-rcp/common.bnd b/repackage/swt/rcp/org.argeo.tp.swt/eclipse-rcp/common.bnd
new file mode 100644 (file)
index 0000000..9a7ae1d
--- /dev/null
@@ -0,0 +1,2 @@
+Bundle-License: EPL-1.0
+SLC-Origin-ManifestNotModified: true
diff --git a/repackage/swt/rcp/org.argeo.tp.swt/eclipse-rcp/excludes.properties b/repackage/swt/rcp/org.argeo.tp.swt/eclipse-rcp/excludes.properties
new file mode 100644 (file)
index 0000000..9385f85
--- /dev/null
@@ -0,0 +1,3 @@
+plugins/*ppc64le*
+plugins/*x86_64*
+plugins/*aarch64*
diff --git a/repackage/swt/rcp/org.argeo.tp.swt/eclipse-rcp/includes.properties b/repackage/swt/rcp/org.argeo.tp.swt/eclipse-rcp/includes.properties
new file mode 100644 (file)
index 0000000..4724c12
--- /dev/null
@@ -0,0 +1,5 @@
+plugins/org.eclipse.swt*.jar=
+plugins/org.eclipse.core*.jar=
+plugins/org.eclipse.jface_*.jar=
+plugins/org.eclipse.jface.source_*.jar=
+plugins/org.eclipse.e4.ui.css*.jar=
diff --git a/repackage/uris.properties b/repackage/uris.properties
new file mode 100644 (file)
index 0000000..0bfd643
--- /dev/null
@@ -0,0 +1,4 @@
+eclipse-equinox=http://www.eclipse.org/downloads/equinox/drops/R-4.23-202203080310/equinox-SDK-4.23.zip
+eclipse-rcp=http://www.eclipse.org/downloads/eclipse/downloads/drops4/R-4.23-202203080310/org.eclipse.rcp.source-4.23.zip
+eclipse-rap=http://www.eclipse.org/downloads/rt/rap/3.20/e4/rap-e4-3.20.0-R-20220309-1623.zip
+eclipse-nebula=http://www.eclipse.org/downloads/nebula/releases/2.6.0/repository-nebula-2.6.0.zip
\ No newline at end of file
diff --git a/sdk.mk b/sdk.mk
new file mode 100644 (file)
index 0000000..a294221
--- /dev/null
+++ b/sdk.mk
@@ -0,0 +1,6 @@
+SDK_SRC_BASE := /home/mbaudier/dev/git/unstable/argeo-tp
+SDK_BUILD_BASE := /home/mbaudier/dev/git/unstable/output
+JAVA_HOME := /opt/graalvm-ce/
+
+include $(SDK_SRC_BASE)/branch.mk
+include $(SDK_SRC_BASE)/sdk/branches/$(BRANCH).bnd
index a261043de5f9d90373bb1e7f395e3371ba9e67ef..e7090f399609f0c1c80729e426c2463efed7e9cc 160000 (submodule)
@@ -1 +1 @@
-Subproject commit a261043de5f9d90373bb1e7f395e3371ba9e67ef
+Subproject commit e7090f399609f0c1c80729e426c2463efed7e9cc
diff --git a/sdk/branches/unstable.bnd b/sdk/branches/unstable.bnd
new file mode 100644 (file)
index 0000000..fcae8a6
--- /dev/null
@@ -0,0 +1,4 @@
+major=2
+minor=3
+micro=8
+qualifier=.next
\ No newline at end of file
diff --git a/src/org.argeo.tp/ee4j-mail b/src/org.argeo.tp/ee4j-mail
new file mode 160000 (submodule)
index 0000000..33c6745
--- /dev/null
@@ -0,0 +1 @@
+Subproject commit 33c67452393344c7e761242a26fb8f04f993d830