Store source bundles separately
authorMathieu <mbaudier@argeo.org>
Fri, 10 Mar 2023 13:34:19 +0000 (14:34 +0100)
committerMathieu <mbaudier@argeo.org>
Fri, 10 Mar 2023 13:34:19 +0000 (14:34 +0100)
src/org/argeo/build/Make.java
src/org/argeo/build/Repackage.java

index 56230ea5fb9444634b5b0c9ab843b002b65983c4..97318ab610d5abc44caa4e7df77c9ad7d37d6b31 100644 (file)
@@ -77,6 +77,8 @@ public class Make {
        final Path buildBase;
        /** The base of the a2 output for all layers. */
        final Path a2Output;
+       /** The base of the a2 sources when packages separately. */
+       final Path a2srcOutput;
 
        /** Whether sources should be packaged separately */
        final boolean sourceBundles;
@@ -102,6 +104,7 @@ public class Make {
                })).toAbsolutePath();
                buildBase = sdkBuildBase.resolve(sdkSrcBase.getFileName());
                a2Output = sdkBuildBase.resolve("a2");
+               a2srcOutput = sdkBuildBase.resolve("a2.src");
        }
 
        /*
@@ -352,7 +355,11 @@ public class Make {
                        // TODO add effective BND, Eclipse project file, etc., in order to be able to
                        // repackage
                        if (sourceBundles) {
-                               Path srcJarP = a2JarDirectory.resolve(compiled.getFileName() + "." + major + "." + minor + ".src.jar");
+                               Path a2srcJarDirectory = bundleParent != null ? a2srcOutput.resolve(bundleParent).resolve(category)
+                                               : a2srcOutput.resolve(category);
+                               Files.createDirectories(a2srcJarDirectory);
+                               Path srcJarP = a2srcJarDirectory
+                                               .resolve(compiled.getFileName() + "." + major + "." + minor + ".src.jar");
                                Manifest srcManifest = new Manifest();
                                srcManifest.getMainAttributes().put(Attributes.Name.MANIFEST_VERSION, "1.0");
                                srcManifest.getMainAttributes().putValue("Bundle-SymbolicName", bundleSymbolicName + ".src");
index 35413fe336df06dee5008f9fba2b827eba98e8a0..7513dc5928f0ad946ff4f80a6f7ae08fa2ae58d5 100644 (file)
@@ -1008,12 +1008,17 @@ public class Repackage {
                deleteDirectory(bundleDir);
 
                if (sourceBundles) {
-                       Path sourceDir = bundleDir.getParent().resolve(bundleDir.toString() + ".src");
+                       Path bundleCategoryDir = bundleDir.getParent();
+                       Path sourceDir = bundleCategoryDir.resolve(bundleDir.toString() + ".src");
                        if (!Files.exists(sourceDir)) {
                                logger.log(WARNING, sourceDir + " does not exist, skipping...");
                                return jarPath;
+
                        }
-                       Path srcJarP = sourceDir.getParent().resolve(sourceDir.getFileName() + ".jar");
+                       Path guessedA2Base = bundleCategoryDir.getParent();
+                       Path srcA2Base = guessedA2Base.getParent().resolve(guessedA2Base.getFileName() + ".src");
+                       Path srcJarP = srcA2Base.resolve(bundleCategoryDir.getFileName()).resolve(sourceDir.getFileName() + ".jar");
+
                        String bundleSymbolicName = manifest.getMainAttributes().getValue("Bundle-SymbolicName").toString();
                        // in case there are additional directives
                        bundleSymbolicName = bundleSymbolicName.split(";")[0];