Change SOURCE_BUNDLE environment property
authorMathieu Baudier <mbaudier@argeo.org>
Fri, 17 Mar 2023 04:25:35 +0000 (05:25 +0100)
committerMathieu Baudier <mbaudier@argeo.org>
Fri, 17 Mar 2023 04:25:35 +0000 (05:25 +0100)
osgi.mk
src/org/argeo/build/Make.java
src/org/argeo/build/Repackage.java

diff --git a/osgi.mk b/osgi.mk
index 12e34aa6d0d3a30f52b3dfe8635bfbd789ed064c..44338e817c8172a15b04708f7710ab6edb49e1b6 100644 (file)
--- a/osgi.mk
+++ b/osgi.mk
@@ -15,6 +15,10 @@ JAVADOC ?= $(JAVA_HOME)/bin/javadoc
 # BUNDLES                      the space-separated list of bundles to build
 # A2_CATEGORY          the (single) a2 category the bundles will belong to
 
+# The following environment variables can change the behaviour of the build
+# SOURCE_BUNDLES       sources will be packaged separately in Eclipse-compatible source bundles
+# NO_MANIFEST_COPY     generated MANIFESTs won't be copied to the source tree
+
 # The following variables have default values which can be overriden
 # DEP_CATEGORIES       the a2 categories the compilation depends on
 # JAVADOC_PACKAGES     the space-separated list of packages for which javadoc will be generated
@@ -41,9 +45,6 @@ TODOS = $(foreach bundle, $(BUNDLES),$(BUILD_BASE)/$(bundle)/to-build)
 .PHONY: osgi manifests javadoc
 
 osgi: $(BUILD_BASE)/built $(MANIFESTS)
-# copy MANIFESTs to sources
-#      @mkdir -p $(foreach bundle, $(BUNDLES), $(bundle)/META-INF/);
-#      @$(foreach bundle, $(BUNDLES), cp -v $(BUILD_BASE)/$(bundle)/META-INF/MANIFEST.MF  $(bundle)/META-INF/MANIFEST.MF;)
 
 # Actual build (compilation + bundle packaging)
 $(BUILD_BASE)/built : BUNDLES_TO_BUILD = $(subst $(abspath $(BUILD_BASE))/,, $(subst to-build,, $?))
@@ -65,8 +66,10 @@ $(BUILD_BASE)/%/to-build : $$(shell find % -type f -not -path 'bin/*' -not -path
 
 # Local manifests
 %/META-INF/MANIFEST.MF : $(BUILD_BASE)/%/META-INF/MANIFEST.MF
-       @mkdir -p $*
+ifneq($(NO_MANIFEST_COPY),"true")
+       @mkdir -p $*/META-INF
        @cp $< $@
+endif
 
 clean-manifests :
        @rm -rf $(foreach bundle, $(BUNDLES), $(bundle)/META-INF/MANIFEST.MF);
index 7ad6e31ce21b751382da14f4904f6ecfee3e705c..fa903c3d026c27bffdc9a85601748ec8c07f3da1 100644 (file)
@@ -55,7 +55,7 @@ public class Make {
         * Environment properties on whether sources should be packaged separately or
         * integrated in the bundles.
         */
-       private final static String ENV_BUILD_SOURCE_BUNDLES = "BUILD_SOURCE_BUNDLES";
+       private final static String ENV_SOURCE_BUNDLES = "SOURCE_BUNDLES";
 
        /** Name of the local-specific Makefile (sdk.mk). */
        final static String SDK_MK = "sdk.mk";
@@ -85,7 +85,7 @@ public class Make {
 
        /** Constructor initialises the base directories. */
        public Make() throws IOException {
-               sourceBundles = Boolean.parseBoolean(System.getenv(ENV_BUILD_SOURCE_BUNDLES));
+               sourceBundles = Boolean.parseBoolean(System.getenv(ENV_SOURCE_BUNDLES));
                if (sourceBundles)
                        logger.log(Level.INFO, "Sources will be packaged separately");
 
index 54863afa942e8f4e69a554767f36e0d7408b8a08..1d280e6984e032a008b5e263f39e1306e22075bc 100644 (file)
@@ -51,12 +51,20 @@ import java.util.zip.Deflater;
 import aQute.bnd.osgi.Analyzer;
 import aQute.bnd.osgi.Jar;
 
-/** The central class for A2 packaging. */
+/**
+ * Simple tool repackaging existing jar files into OSGi bundles in an A2
+ * repository.
+ */
 public class Repackage {
        private final static Logger logger = System.getLogger(Repackage.class.getName());
 
-       private final static String ENV_BUILD_SOURCE_BUNDLES = "BUILD_SOURCE_BUNDLES";
+       /**
+        * Environment properties on whether sources should be packaged separately or
+        * integrated in the bundles.
+        */
+       private final static String ENV_SOURCE_BUNDLES = "SOURCE_BUNDLES";
 
+       /** Whethere repackaging should run in parallel or sequentially. */
        private final static boolean parallel = true;
 
        /** Main entry point. */
@@ -83,23 +91,30 @@ public class Repackage {
        private final static String COMMON_BND = "common.bnd";
        private final static String MERGE_BND = "merge.bnd";
 
+       /** Directory where to download archives */
        private Path originBase;
+       /** Directory where to download Maven artifacts */
        private Path mavenBase;
 
+       /** A2 repository base for binary bundles */
        private Path a2Base;
+       /** A2 repository base for source bundles */
        private Path a2SrcBase;
+       /** A2 base for native components */
        private Path a2LibBase;
+       /** Location of the descriptors driving the packaging */
        private Path descriptorsBase;
-
+       /** URIs of archives to download */
        private Properties uris = new Properties();
-
-       /** key is URI prefix, value list of base URLs */
+       /** Mirrors for archive download. Key is URI prefix, value list of base URLs */
        private Map<String, List<String>> mirrors = new HashMap<String, List<String>>();
 
+       /** Whether sources should be packaged separately */
        private final boolean sourceBundles;
 
+       /** Constructor initialises the various variables */
        public Repackage(Path a2Base, Path descriptorsBase) {
-               sourceBundles = Boolean.parseBoolean(System.getenv(ENV_BUILD_SOURCE_BUNDLES));
+               sourceBundles = Boolean.parseBoolean(System.getenv(ENV_SOURCE_BUNDLES));
                if (sourceBundles)
                        logger.log(INFO, "Sources will be packaged separately");