Builds based on Make
authorMathieu Baudier <mbaudier@argeo.org>
Sat, 12 Feb 2022 10:24:31 +0000 (11:24 +0100)
committerMathieu Baudier <mbaudier@argeo.org>
Sat, 12 Feb 2022 10:24:31 +0000 (11:24 +0100)
Makefile
configure
org.argeo.slc.factory/src/org/argeo/slc/factory/A2Factory.java
sdk/ecj.args [new file with mode: 0644]
sdk/includes.mk [deleted file]
sdk/osgi.mk [new file with mode: 0644]
sdk/output-argeo-tp-rap.target
tp/Make.java

index ffef76901c837dfa1a880c31a26a8bdaa012e915..eeda3676c51a749b595a9050dfb5dd870417ff02 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -1,9 +1,8 @@
 include sdk.mk
 .PHONY: clean all osgi
 
-all: osgi distribution
+all: osgi move-ext
 
-BUNDLE_PREFIX = org.argeo
 A2_CATEGORY = org.argeo.slc
 
 BUNDLES = \
@@ -11,116 +10,37 @@ org.argeo.slc.api \
 org.argeo.slc.factory \
 org.argeo.slc.runtime \
 ext/org.argeo.ext.slf4j \
-ext/org.argeo.ext.equinox.jetty \
 
-BUILD_CLASSPATH_FEDORA = \
-/usr/share/java/osgi-core/osgi.core.jar:$\
-/usr/share/java/osgi-compendium/osgi.cmpn.jar:$\
-/usr/share/java/ecj/ecj.jar:$\
-/usr/share/java/aqute-bnd/biz.aQute.bndlib.jar:$\
-/usr/share/java/slf4j/api.jar:$\
-/usr/share/java/commons-io.jar:$\
-/usr/share/java/commons-cli.jar:$\
-/usr/share/java/commons-exec.jar:$\
-
-BUILD_CLASSPATH = \
-/usr/share/java/osgi.core.jar:$\
-/usr/share/java/osgi.cmpn.jar:$\
-/usr/share/java/ecj.jar:$\
-/usr/share/java/bndlib.jar:$\
-/usr/share/java/slf4j-api.jar:$\
-/usr/share/java/commons-io.jar:$\
-/usr/share/java/commons-cli.jar:$\
-/usr/share/java/commons-exec.jar:$\
-
-# TODO relativize from SDK_SRC_BASE
-BUILD_BASE = $(SDK_BUILD_BASE)
-
-
-
-#
-# GENERIC
-#
-JVM := /usr/bin/java
-JAVADOC := /usr/bin/javadoc
-ECJ_JAR := $(SDK_BUILD_BASE)/a2/org.argeo.tp.sdk/org.eclipse.jdt.core.compiler.batch.3.28.jar
-BND_TOOL := /usr/bin/bnd
-
-WORKSPACE_BNDS := $(shell cd $(SDK_SRC_BASE) && find cnf -name '*.bnd') 
-BUILD_WORKSPACE_BNDS := $(WORKSPACE_BNDS:%=$(SDK_BUILD_BASE)/%) $(WORKSPACE_BNDS:%=$(SDK_BUILD_BASE)/ext/%)
-
-cnf: $(BUILD_WORKSPACE_BNDS)
-
-A2_BUNDLES = $(BUNDLES:%=$(SDK_BUILD_BASE)/a2/$(A2_CATEGORY)/%.$(MAJOR).$(MINOR).jar)
-
-A2_JARS = $(shell find $(SDK_BUILD_BASE)/a2 -name '*.jar')
-A2_CLASSPATH = $(subst $(space),$(pathsep),$(strip $(A2_JARS)))
-
-
-#JAVA_SRCS = $(shell find $(BUNDLE_PREFIX).* -name '*.java')
-JAVA_SRCS = $(foreach bundle, $(BUNDLES), $(shell find $(bundle) -name '*.java'))
-ECJ_SRCS = $(foreach bundle, $(BUNDLES), $(bundle)/src[-d $(BUILD_BASE)/$(bundle)/bin])
-
-osgi: cnf $(A2_BUNDLES)
-       mkdir -p $(SDK_BUILD_BASE)/a2/org.argeo.tp
-       mv $(SDK_BUILD_BASE)/a2/$(A2_CATEGORY)/ext/org.argeo.ext.slf4j.$(MAJOR).$(MINOR).jar $(SDK_BUILD_BASE)/a2/org.argeo.tp
-       mv $(SDK_BUILD_BASE)/a2/$(A2_CATEGORY)/ext/org.argeo.ext.equinox.jetty.$(MAJOR).$(MINOR).jar $(SDK_BUILD_BASE)/a2/org.argeo.tp.eclipse.equinox
-       rmdir $(SDK_BUILD_BASE)/a2/$(A2_CATEGORY)/ext
+BOOTSTRAP_BASE=$(SDK_BUILD_BASE)/bootstrap
 
 distribution: bootstrap
        $(JVM) -cp \
-        $(SDK_BUILD_BASE)/bootstrap/bndlib.jar:$(SDK_BUILD_BASE)/bootstrap/slf4j-api.jar:$(SDK_BUILD_BASE)/org.argeo.slc.api/bin:$(SDK_BUILD_BASE)/org.argeo.slc.factory/bin \
-        tp/Make.java
+        $(BOOTSTRAP_BASE)/bndlib.jar:$(BOOTSTRAP_BASE)/slf4j-api.jar:$(BOOTSTRAP_BASE)/org.argeo.slc.api/bin:$(BOOTSTRAP_BASE)/org.argeo.slc.factory/bin \
+        tp/Make.java $(A2_OUTPUT)
        
 bootstrap :
        mkdir -p $(SDK_BUILD_BASE)/bootstrap
-       wget -c -O $(SDK_BUILD_BASE)/bootstrap/ecj.jar https://repo1.maven.org/maven2/org/eclipse/jdt/ecj/3.28.0/ecj-3.28.0.jar
-       wget -c -O $(SDK_BUILD_BASE)/bootstrap/slf4j-api.jar https://repo1.maven.org/maven2/org/slf4j/slf4j-api/1.7.28/slf4j-api-1.7.28.jar
-       wget -c -O $(SDK_BUILD_BASE)/bootstrap/bndlib.jar https://repo1.maven.org/maven2/biz/aQute/bnd/biz.aQute.bndlib/5.3.0/biz.aQute.bndlib-5.3.0.jar
-       $(JVM) -cp $(SDK_BUILD_BASE)/bootstrap/ecj.jar org.eclipse.jdt.internal.compiler.batch.Main -11 -nowarn -time -cp \
-        $(SDK_BUILD_BASE)/bootstrap/bndlib.jar:$(SDK_BUILD_BASE)/bootstrap/slf4j.jar \
-        org.argeo.slc.api/src[-d $(SDK_BUILD_BASE)/org.argeo.slc.api/bin] \
-        org.argeo.slc.factory/src[-d $(SDK_BUILD_BASE)/org.argeo.slc.factory/bin] \
+       wget -c -O $(BOOTSTRAP_BASE)/ecj.jar https://repo1.maven.org/maven2/org/eclipse/jdt/ecj/3.28.0/ecj-3.28.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
+       $(JVM) -cp $(BOOTSTRAP_BASE)/ecj.jar org.eclipse.jdt.internal.compiler.batch.Main -11 -nowarn -time -cp \
+        $(BOOTSTRAP_BASE)/bndlib.jar:$(BOOTSTRAP_BASE)/slf4j.jar \
+        org.argeo.slc.api/src[-d $(BOOTSTRAP_BASE)/org.argeo.slc.api/bin] \
+        org.argeo.slc.factory/src[-d $(BOOTSTRAP_BASE)/org.argeo.slc.factory/bin] \
+
+move-ext: osgi
+       mkdir -p $(SDK_BUILD_BASE)/a2/org.argeo.tp
+       mv $(SDK_BUILD_BASE)/a2/$(A2_CATEGORY)/org.argeo.ext.slf4j.$(MAJOR).$(MINOR).jar $(SDK_BUILD_BASE)/a2/org.argeo.tp
+#      mv $(SDK_BUILD_BASE)/a2/$(A2_CATEGORY)/org.argeo.ext.equinox.jetty.$(MAJOR).$(MINOR).jar $(SDK_BUILD_BASE)/a2/org.argeo.tp.eclipse.equinox
 
 clean:
-       rm -rf $(BUILD_BASE)/*-compiled
-       rm -rf $(BUILD_BASE)/cnf
-       rm -rf $(BUILD_BASE)/a2
-       rm -rf $(BUILD_BASE)/$(BUNDLE_PREFIX).* 
-       rm -rf $(BUILD_BASE)/ext
-       rm -rf $(BUILD_BASE)/build
-       rm -rf $(BUILD_BASE)/deb
+       rm -rf $(BUILD_BASE)
+       rm -rf $(BOOTSTRAP_BASE)
 
-# SDK level
-$(SDK_BUILD_BASE)/cnf/%.bnd: cnf/%.bnd
-       mkdir -p $(dir $@)
-       cp $< $@
-       
-$(SDK_BUILD_BASE)/ext/cnf/%.bnd: cnf/%.bnd
-       mkdir -p $(dir $@)
-       cp $< $@
+A2_OUTPUT = $(SDK_BUILD_BASE)/a2
+A2_BASE = $(A2_OUTPUT)
 
-$(SDK_BUILD_BASE)/a2/$(A2_CATEGORY)/%.$(MAJOR).$(MINOR).jar : $(BUILD_BASE)/%/bundle.jar
-       mkdir -p $(dir $@)
-       cp $< $@
+VPATH = .:ext
+DEP_CATEGORIES = org.argeo.tp org.argeo.tp.apache org.argeo.tp.sdk org.argeo.tp.jcr
 
-# Build level
-$(BUILD_BASE)/%/bundle.jar : %/bnd.bnd $(BUILD_BASE)/java-compiled 
-       mkdir -p $(dir $@)
-       rsync -r --exclude "*.java" $(dir  $<)src/ $(dir $@)bin
-       rsync -r $(dir  $<)src/ $(dir $@)src
-       if [ -d "$(dir  $<)OSGI-INF" ]; then rsync -r $(dir  $<)OSGI-INF/ $(dir $@)/OSGI-INF; fi
-       cp $< $(dir $@)
-       cd $(dir $@) && $(BND_TOOL) build
-       mv $(dir $@)generated/*.jar $(dir $@)bundle.jar
-
-$(BUILD_BASE)/java-compiled : $(JAVA_SRCS)
-       $(JVM) -jar $(ECJ_JAR) -11 -nowarn -time -cp $(A2_CLASSPATH) \
-       $(ECJ_SRCS)
-       touch $@
-       
-null  :=
-space := $(null) #
-pathsep := :
-
-       
+include  $(SDK_SRC_BASE)/sdk/osgi.mk
\ No newline at end of file
index 4587bf45ef4680ae1e675dbc2ae6e37e086e2814..da5dffbd145f01926ae75f61d4ec5b10c0a83dce 100644 (file)
--- a/configure
+++ b/configure
@@ -21,6 +21,12 @@ exit 1
 
 else
 
+if [ -z "$JAVA_HOME" ]
+then
+echo "Environment variable JAVA_HOME must be set"
+exit 1
+fi
+
 # Create build directory, so that it can be used right away
 # and we check whether we have the rights
 mkdir -p $SDK_BUILD_BASE
@@ -34,13 +40,14 @@ fi
 cat > "$SDK_MK" <<EOF
 SDK_SRC_BASE := $SDK_SRC_BASE
 SDK_BUILD_BASE := $SDK_BUILD_BASE
+JAVA_HOME := $JAVA_HOME
 
 include \$(SDK_SRC_BASE)/branch.properties
-include \$(SDK_SRC_BASE)/sdk/includes.mk
 EOF
 
 
 echo SDK was configured.
+echo "JAVA_HOME        : $JAVA_HOME"
 echo "Base for sources : $SDK_SRC_BASE"
 echo "Base for builds  : $SDK_BUILD_BASE"
 exit 0
index 7a6e6a21547ebfd6dca71df4fbc0b1f898acaa00..5e1e85bcca01245d6de5c8eb5af82d58aafa093d 100644 (file)
@@ -53,15 +53,14 @@ public class A2Factory {
        private final static String COMMON_BND = "common.bnd";
 
        private Path originBase;
-       private Path factoryBase;
+       private Path a2Base;
 
        /** key is URI prefix, value list of base URLs */
        private Map<String, List<String>> mirrors = new HashMap<String, List<String>>();
 
-       public A2Factory(Path originBase, Path factoryBase) {
-               super();
-               this.originBase = originBase;
-               this.factoryBase = factoryBase;
+       public A2Factory(Path a2Base) {
+               this.originBase = Paths.get(System.getProperty("user.home"), ".cache", "argeo/slc/origin");
+               this.a2Base = a2Base;
 
                // TODO make it configurable
                List<String> eclipseMirrors = new ArrayList<>();
@@ -93,7 +92,7 @@ public class A2Factory {
        public void processSingleM2ArtifactDistributionUnit(Path bndFile) {
                try {
                        String category = bndFile.getParent().getFileName().toString();
-                       Path targetCategoryBase = factoryBase.resolve(category);
+                       Path targetCategoryBase = a2Base.resolve(category);
                        Properties fileProps = new Properties();
                        try (InputStream in = Files.newInputStream(bndFile)) {
                                fileProps.load(in);
@@ -119,7 +118,7 @@ public class A2Factory {
        public void processM2BasedDistributionUnit(Path duDir) {
                try {
                        String category = duDir.getParent().getFileName().toString();
-                       Path targetCategoryBase = factoryBase.resolve(category);
+                       Path targetCategoryBase = a2Base.resolve(category);
                        Path commonBnd = duDir.resolve(COMMON_BND);
                        Properties commonProps = new Properties();
                        try (InputStream in = Files.newInputStream(commonBnd)) {
@@ -214,15 +213,7 @@ public class A2Factory {
                                        .getOrDefault(ManifestConstants.SLC_ORIGIN_MANIFEST_NOT_MODIFIED.toString(), "false").toString());
 
                        // we always force the symbolic name
-                       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 (doNotModify) {
                                fileEntries: for (Object key : fileProps.keySet()) {
                                        if (ManifestConstants.SLC_ORIGIN_M2.toString().equals(key))
@@ -231,6 +222,14 @@ public class A2Factory {
                                        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(),
@@ -313,7 +312,7 @@ public class A2Factory {
        public void processEclipseArchive(Path duDir) {
                try {
                        String category = duDir.getParent().getFileName().toString();
-                       Path targetCategoryBase = factoryBase.resolve(category);
+                       Path targetCategoryBase = a2Base.resolve(category);
                        Files.createDirectories(targetCategoryBase);
                        Files.createDirectories(originBase);
 
@@ -377,7 +376,7 @@ public class A2Factory {
        }
 
        protected Path processBundleJar(Path file, Path targetBase, Map<String, String> entries) throws IOException {
-               NameVersion nameVersion;
+               DefaultNameVersion nameVersion;
                Path targetBundleDir;
                try (JarInputStream jarIn = new JarInputStream(Files.newInputStream(file), false)) {
                        Manifest manifest = new Manifest(jarIn.getManifest());
@@ -412,6 +411,10 @@ public class A2Factory {
                                        logger.log(Level.WARNING, "Original version is " + nameVersion.getVersion()
                                                        + " while new version is " + versionFromEntries);
                                }
+                               if (symbolicNameFromEntries != null) {
+                                       // we always force our symbolic name
+                                       nameVersion.setName(symbolicNameFromEntries);
+                               }
                        }
                        targetBundleDir = targetBase.resolve(nameVersion.getName() + "." + nameVersion.getBranch());
 
@@ -440,8 +443,13 @@ public class A2Factory {
                                String value = entries.get(key);
                                Object previousValue = manifest.getMainAttributes().putValue(key, value);
                                if (previousValue != null && !previousValue.equals(value)) {
-                                       logger.log(Level.WARNING,
-                                                       file.getFileName() + ": " + key + " was " + previousValue + ", overridden with " + value);
+                                       if (ManifestConstants.IMPORT_PACKAGE.toString().equals(key)
+                                                       || ManifestConstants.EXPORT_PACKAGE.toString().equals(key))
+                                               logger.log(Level.WARNING, file.getFileName() + ": " + key + " was modified");
+
+                                       else
+                                               logger.log(Level.WARNING, file.getFileName() + ": " + key + " was " + previousValue
+                                                               + ", overridden with " + value);
                                }
                        }
                        try (OutputStream out = Files.newOutputStream(manifestPath)) {
@@ -516,7 +524,7 @@ public class A2Factory {
                });
        }
 
-       protected NameVersion nameVersionFromManifest(Manifest manifest) {
+       protected DefaultNameVersion nameVersionFromManifest(Manifest manifest) {
                Attributes attrs = manifest.getMainAttributes();
                // symbolic name
                String symbolicName = attrs.getValue(ManifestConstants.BUNDLE_SYMBOLICNAME.toString());
@@ -614,9 +622,8 @@ public class A2Factory {
        }
 
        public static void main(String[] args) {
-               Path originBase = Paths.get("../output/origin").toAbsolutePath().normalize();
                Path factoryBase = Paths.get("../output/a2").toAbsolutePath().normalize();
-               A2Factory factory = new A2Factory(originBase, factoryBase);
+               A2Factory factory = new A2Factory(factoryBase);
 
                Path descriptorsBase = Paths.get("../tp").toAbsolutePath().normalize();
 
diff --git a/sdk/ecj.args b/sdk/ecj.args
new file mode 100644 (file)
index 0000000..852a33d
--- /dev/null
@@ -0,0 +1,4 @@
+-source 17
+-target 11
+-nowarn
+-time 
\ No newline at end of file
diff --git a/sdk/includes.mk b/sdk/includes.mk
deleted file mode 100644 (file)
index 31efbf5..0000000
+++ /dev/null
@@ -1 +0,0 @@
-##include $(SDK_SRC_BASE)/sdk/deb.mk
diff --git a/sdk/osgi.mk b/sdk/osgi.mk
new file mode 100644 (file)
index 0000000..a97a937
--- /dev/null
@@ -0,0 +1,67 @@
+
+
+#
+# GENERIC
+#
+JVM := $(JAVA_HOME)/bin/java
+JAVADOC := $(JAVA_HOME)/bin/javadoc
+ECJ_JAR := $(SDK_BUILD_BASE)/a2/org.argeo.tp.sdk/org.eclipse.jdt.core.compiler.batch.3.28.jar
+BND_TOOL := /usr/bin/bnd
+
+BUILD_BASE = $(SDK_BUILD_BASE)/$(A2_CATEGORY)
+
+WORKSPACE_BNDS := $(shell cd $(SDK_SRC_BASE) && find cnf -name '*.bnd')
+BUILD_WORKSPACE_BNDS := $(WORKSPACE_BNDS:%=$(BUILD_BASE)/%)
+
+A2_JARS = $(foreach category, $(DEP_CATEGORIES), $(shell find $(A2_BASE)/$(category) -name '*.jar'))
+A2_CLASSPATH = $(subst $(space),$(pathsep),$(strip $(A2_JARS)))
+
+A2_BUNDLES = $(foreach bundle, $(BUNDLES),$(A2_OUTPUT)/$(A2_CATEGORY)/$(shell basename $(bundle)).$(MAJOR).$(MINOR).jar)
+
+JAVA_SRCS = $(foreach bundle, $(BUNDLES), $(shell find $(bundle) -name '*.java'))
+BNDS = $(foreach bundle, $(BUNDLES), $(BUILD_BASE)/$(shell basename $(bundle))/bnd.bnd)
+ECJ_SRCS = $(foreach bundle, $(BUNDLES), $(bundle)/src[-d $(BUILD_BASE)/$(shell basename $(bundle))/bin])
+
+JAVADOC_SRCS = $(foreach bundle, $(JAVADOC_BUNDLES),$(bundle)/src)
+
+osgi: $(BUILD_WORKSPACE_BNDS) $(A2_BUNDLES)
+
+javadoc: $(BUILD_BASE)/java-compiled
+       $(JAVADOC) -d $(BUILD_BASE)/api --source-path $(subst $(space),$(pathsep),$(strip $(JAVADOC_SRCS))) -subpackages $(JAVADOC_PACKAGES)
+
+
+# SDK level
+$(BUILD_BASE)/cnf/%.bnd: cnf/%.bnd
+       mkdir -p $(dir $@)
+       cp $< $@
+       
+$(SDK_BUILD_BASE)/a2/$(A2_CATEGORY)/%.$(MAJOR).$(MINOR).jar : $(BUILD_BASE)/%.jar
+       mkdir -p $(dir $@)
+       cp $< $@
+
+$(BUILD_BASE)/%.jar: $(BUILD_BASE)/jars-built
+       mv $(basename $@)/generated/*.jar $(basename $@).jar
+
+# Build level
+$(BUILD_BASE)/jars-built: $(BNDS)
+       cd $(BUILD_BASE) && $(BND_TOOL) build
+       touch $@
+
+$(BUILD_BASE)/%/bnd.bnd : %/bnd.bnd $(BUILD_BASE)/java-compiled 
+       mkdir -p $(dir $@)bin
+       rsync -r --exclude "*.java" $(dir  $<)src/ $(dir $@)bin
+       if [ -d "$(dir  $<)OSGI-INF" ]; then rsync -r $(dir  $<)OSGI-INF/ $(dir $@)/OSGI-INF; fi
+       cp $< $@
+       echo "\n-sourcepath:$(SDK_SRC_BASE)/$(dir  $<)src\n" >> $@
+
+$(BUILD_BASE)/java-compiled : $(JAVA_SRCS)
+       $(JVM) -jar $(ECJ_JAR) @$(SDK_SRC_BASE)/sdk/ecj.args -cp $(A2_CLASSPATH) $(ECJ_SRCS)
+       touch $@
+
+# Local manifests
+manifests : osgi
+       $(foreach bundle, $(BUNDLES), cp -v $(BUILD_BASE)/$(shell basename $(bundle))/META-INF/MANIFEST.MF  $(bundle)/META-INF/MANIFEST.MF;)
+
+null  :=
+space := $(null) #
+pathsep := :
index c7ec4c9195fd8e527ba70abb9a691a1c17e3bd9d..d5f313450f5a5e2b0e1c24c1d5613dabcb764c08 100644 (file)
@@ -2,12 +2,12 @@
 <?pde version="3.8"?>
 <target name="(output) argeo-tp-rap">
        <locations>
-               <location path="${project_loc:argeo-slc-unstable}/output/a2/org.argeo.tp" type="Directory"/>
-               <location path="${project_loc:argeo-slc-unstable}/output/a2/org.argeo.tp.apache" type="Directory"/>
-               <location path="${project_loc:argeo-slc-unstable}/output/a2/org.argeo.tp.eclipse.equinox" type="Directory"/>
-               <location path="${project_loc:argeo-slc-unstable}/output/a2/org.argeo.tp.eclipse.rap" type="Directory"/>
-               <location path="${project_loc:argeo-slc-unstable}/output/a2/org.argeo.tp.jetty" type="Directory"/>
-               <location path="${project_loc:argeo-slc-unstable}/output/a2/org.argeo.tp.sdk" type="Directory"/>
-               <location path="${project_loc:argeo-slc-unstable}/output/a2/org.argeo.tp.jcr" type="Directory"/>
+               <location path="${project_loc:argeo-slc-unstable}/../output/a2/org.argeo.tp.apache" type="Directory"/>
+               <location path="${project_loc:argeo-slc-unstable}/../output/a2/org.argeo.tp.eclipse.equinox" type="Directory"/>
+               <location path="${project_loc:argeo-slc-unstable}/../output/a2/org.argeo.tp.eclipse.rap" type="Directory"/>
+               <location path="${project_loc:argeo-slc-unstable}/../output/a2/org.argeo.tp.jetty" type="Directory"/>
+               <location path="${project_loc:argeo-slc-unstable}/../output/a2/org.argeo.tp.sdk" type="Directory"/>
+               <location path="${project_loc:argeo-slc-unstable}/../output/a2/org.argeo.tp.jcr" type="Directory"/>
+               <location path="${project_loc:argeo-slc-unstable}/../output/a2/org.argeo.tp" type="Directory"/>
        </locations>
 </target>
\ No newline at end of file
index 8f1b6af21282b0dbc6e2403bcd74bba7f77f2097..6ea7f875c249baedad83b111f5ab3fc052f889d7 100644 (file)
@@ -5,9 +5,12 @@ import org.argeo.slc.factory.A2Factory;
 
 class Make {
        public static void main(String[] args) {
-               Path originBase = Paths.get("./output/origin").toAbsolutePath().normalize();
-               Path factoryBase = Paths.get("./output/a2").toAbsolutePath().normalize();
-               A2Factory factory = new A2Factory(originBase, factoryBase);
+               if(args.length < 1) {
+                       System.err.println("Usage: <path to a2 output dir>");
+                       System.exit(1);
+               }
+               Path a2Base = Paths.get(args[0]).toAbsolutePath().normalize();
+               A2Factory factory = new A2Factory(a2Base);
 
                Path descriptorsBase = Paths.get("./tp").toAbsolutePath().normalize();