From af5b640e4fa16c3d5ed59a1fd3b1ffcdc37bf4fb Mon Sep 17 00:00:00 2001 From: Mathieu Date: Fri, 10 Mar 2023 14:34:19 +0100 Subject: [PATCH] Store source bundles separately --- src/org/argeo/build/Make.java | 9 ++++++++- src/org/argeo/build/Repackage.java | 9 +++++++-- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/src/org/argeo/build/Make.java b/src/org/argeo/build/Make.java index 56230ea..97318ab 100644 --- a/src/org/argeo/build/Make.java +++ b/src/org/argeo/build/Make.java @@ -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"); diff --git a/src/org/argeo/build/Repackage.java b/src/org/argeo/build/Repackage.java index 35413fe..7513dc5 100644 --- a/src/org/argeo/build/Repackage.java +++ b/src/org/argeo/build/Repackage.java @@ -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]; -- 2.39.2