|
| 1 | +From d5b220e9b13f8f8b8e2c7780483c0e90c182c9d8 Mon Sep 17 00:00:00 2001 |
| 2 | +From: Mikolaj Izdebski <mizdebsk@redhat.com> |
| 3 | +Date: Fri, 13 Jun 2025 15:49:34 +0200 |
| 4 | +Subject: [PATCH] Use unique namespace for bootstrapping |
| 5 | + |
| 6 | +When used in bootstrap mode, update file paths, RPM macro names |
| 7 | +etc. so that they are distinct from non-bootstrap Dola packages. |
| 8 | + |
| 9 | +Forwarded: not-needed |
| 10 | +--- |
| 11 | + dola-bsx/src/main/conf/dola-bsx.conf | 2 +- |
| 12 | + dola-bsx/src/main/lua/dola-bsx.lua | 6 +++--- |
| 13 | + dola-bsx/src/main/rpm/macros.dola-bsx | 4 ++-- |
| 14 | + dola-dbs/src/main/conf/dola-dbs.conf | 6 +++--- |
| 15 | + .../io/kojan/dola/imperator/Imperator.java | 12 +++++------ |
| 16 | + dola-dbs/src/main/lua/dola-dbs.lua | 2 +- |
| 17 | + dola-dbs/src/main/rpm/macros.dola-dbs | 8 +++---- |
| 18 | + .../src/main/conf/dola-generator.conf | 21 +++++++++++-------- |
| 19 | + .../generator/stub/CompoundGenerator.java | 8 +++---- |
| 20 | + .../dola/generator/stub/CompoundHook.java | 4 ++-- |
| 21 | + .../src/main/lua/dola-generator.lua | 2 +- |
| 22 | + dola-generator/src/main/rpm/dolagen.attr | 8 +++---- |
| 23 | + .../src/main/rpm/macros.dola-generator | 8 +++---- |
| 24 | + .../src/main/rpm/macros.dola-generator-etc | 2 +- |
| 25 | + dola-rpm-api/src/main/conf/dola-rpm-api.conf | 2 +- |
| 26 | + 15 files changed, 49 insertions(+), 46 deletions(-) |
| 27 | + |
| 28 | +diff --git a/dola-bsx/src/main/conf/dola-bsx.conf b/dola-bsx/src/main/conf/dola-bsx.conf |
| 29 | +index 16ac060..f22bcaf 100644 |
| 30 | +--- a/dola-bsx/src/main/conf/dola-bsx.conf |
| 31 | ++++ b/dola-bsx/src/main/conf/dola-bsx.conf |
| 32 | +@@ -1,2 +1,2 @@ |
| 33 | + [Realm:bsx] |
| 34 | +-load /usr/share/java/dola/dola-bsx.jar |
| 35 | ++load /usr/lib/javapackages-bootstrap/dola-bsx.jar |
| 36 | +diff --git a/dola-bsx/src/main/lua/dola-bsx.lua b/dola-bsx/src/main/lua/dola-bsx.lua |
| 37 | +index e178d0b..6dbba8c 100644 |
| 38 | +--- a/dola-bsx/src/main/lua/dola-bsx.lua |
| 39 | ++++ b/dola-bsx/src/main/lua/dola-bsx.lua |
| 40 | +@@ -16,9 +16,9 @@ |
| 41 | + |
| 42 | + local lujavrite = require "lujavrite" |
| 43 | + |
| 44 | +-local libjvm = rpm.expand("%{__dola_libjvm}") |
| 45 | +-local classpath = rpm.expand("%{__dola_classpath}") |
| 46 | +-local classworlds_conf = rpm.expand("%{_javaconfdir}/dola/classworlds") |
| 47 | ++local libjvm = rpm.expand("%{__jpb_dola_libjvm}") |
| 48 | ++local classpath = rpm.expand("%{__jpb_dola_classpath}") |
| 49 | ++local classworlds_conf = rpm.expand("%{_javaconfdir}/javapackages-bootstrap/dola/classworlds") |
| 50 | + |
| 51 | + -- Initialize JVM |
| 52 | + if not lujavrite.initialized() then |
| 53 | +diff --git a/dola-bsx/src/main/rpm/macros.dola-bsx b/dola-bsx/src/main/rpm/macros.dola-bsx |
| 54 | +index 1cce21e..f0d043e 100644 |
| 55 | +--- a/dola-bsx/src/main/rpm/macros.dola-bsx |
| 56 | ++++ b/dola-bsx/src/main/rpm/macros.dola-bsx |
| 57 | +@@ -1,5 +1,5 @@ |
| 58 | + # Path to JVM library (libjvm.so). Java 21 or newer is required. |
| 59 | +-%__dola_libjvm %{_jvmdir}/jre-21-openjdk/lib/server/libjvm.so |
| 60 | ++%__jpb_dola_libjvm %{_jvmdir}/jre-21-openjdk/lib/server/libjvm.so |
| 61 | + |
| 62 | + # Class path of nested JVM. |
| 63 | +-%__dola_classpath %{_javadir}/dola/dola-bsx.jar:%{_javadir}/plexus-classworlds.jar |
| 64 | ++%__jpb_dola_classpath %{_prefix}/lib/javapackages-bootstrap/dola-bsx.jar:%{_prefix}/lib/javapackages-bootstrap/plexus-classworlds.jar |
| 65 | +diff --git a/dola-dbs/src/main/conf/dola-dbs.conf b/dola-dbs/src/main/conf/dola-dbs.conf |
| 66 | +index 6b389b3..1a91c18 100644 |
| 67 | +--- a/dola-dbs/src/main/conf/dola-dbs.conf |
| 68 | ++++ b/dola-dbs/src/main/conf/dola-dbs.conf |
| 69 | +@@ -1,5 +1,5 @@ |
| 70 | + [Realm:dbs] |
| 71 | + import io.kojan.dola.rpm from Realm:rpm-api |
| 72 | +-load /usr/share/java/dola/dola-dbs.jar |
| 73 | +-load /usr/share/java/xmvn5/xmvn-api-5.0.0.jar |
| 74 | +-load /usr/share/java/kojan-xml/kojan-xml.jar |
| 75 | ++load /usr/lib/javapackages-bootstrap/dola-dbs.jar |
| 76 | ++load /usr/lib/javapackages-bootstrap/xmvn-api.jar |
| 77 | ++load /usr/lib/javapackages-bootstrap/kojan-xml.jar |
| 78 | +diff --git a/dola-dbs/src/main/java/io/kojan/dola/imperator/Imperator.java b/dola-dbs/src/main/java/io/kojan/dola/imperator/Imperator.java |
| 79 | +index 8d8510f..51a097e 100644 |
| 80 | +--- a/dola-dbs/src/main/java/io/kojan/dola/imperator/Imperator.java |
| 81 | ++++ b/dola-dbs/src/main/java/io/kojan/dola/imperator/Imperator.java |
| 82 | +@@ -117,13 +117,13 @@ public class Imperator { |
| 83 | + } |
| 84 | + |
| 85 | + List<String> args = new ArrayList<>(); |
| 86 | +- args.add("xmvn5"); |
| 87 | ++ args.add("/usr/libexec/javapackages-bootstrap/xmvn"); |
| 88 | + args.add("--show-version"); |
| 89 | + args.add("--batch-mode"); |
| 90 | + args.add("--offline"); |
| 91 | +- String extCp = "/usr/share/java/dola-gleaner/dola-gleaner.jar"; |
| 92 | ++ String extCp = "/usr/lib/javapackages-bootstrap/dola-gleaner.jar"; |
| 93 | + if (!ctx.getTransformOptions().isEmpty()) { |
| 94 | +- extCp += ":/usr/share/java/dola-transformer/dola-transformer.jar"; |
| 95 | ++ extCp += ":/usr/lib/javapackages-bootstrap/dola-transformer.jar"; |
| 96 | + } |
| 97 | + args.add("-Dmaven.ext.class.path=" + extCp); |
| 98 | + args.add("-Ddola.gleaner.outputFile=/dev/fd/4"); |
| 99 | +@@ -163,12 +163,12 @@ public class Imperator { |
| 100 | + |
| 101 | + public List<String> build() throws Exception { |
| 102 | + List<String> args = new ArrayList<>(); |
| 103 | +- args.add("xmvn5"); |
| 104 | ++ args.add("/usr/libexec/javapackages-bootstrap/xmvn"); |
| 105 | + args.add("--show-version"); |
| 106 | + args.add("--batch-mode"); |
| 107 | + args.add("--offline"); |
| 108 | + if (!ctx.getTransformOptions().isEmpty()) { |
| 109 | +- String extCp = "/usr/share/java/dola-transformer/dola-transformer.jar"; |
| 110 | ++ String extCp = "/usr/lib/javapackages-bootstrap/dola-transformer.jar"; |
| 111 | + args.add("-Dmaven.ext.class.path=" + extCp); |
| 112 | + args.addAll(getTransformerArgs()); |
| 113 | + } |
| 114 | +@@ -192,7 +192,7 @@ public class Imperator { |
| 115 | + |
| 116 | + public List<String> install() throws Exception { |
| 117 | + List<String> args = new ArrayList<>(); |
| 118 | +- args.add("xmvn5-install"); |
| 119 | ++ args.add("/usr/libexec/javapackages-bootstrap/xmvn-install"); |
| 120 | + args.add("-R " + ".xmvn-reactor"); |
| 121 | + args.add("-n " + ctx.getBaseName()); |
| 122 | + args.add("-d $RPM_BUILD_ROOT"); |
| 123 | +diff --git a/dola-dbs/src/main/lua/dola-dbs.lua b/dola-dbs/src/main/lua/dola-dbs.lua |
| 124 | +index cf2d6aa..e7e0b57 100644 |
| 125 | +--- a/dola-dbs/src/main/lua/dola-dbs.lua |
| 126 | ++++ b/dola-dbs/src/main/lua/dola-dbs.lua |
| 127 | +@@ -14,7 +14,7 @@ |
| 128 | + -- limitations under the License. |
| 129 | + -- |
| 130 | + |
| 131 | +-local bsx = require "dola-bsx" |
| 132 | ++local bsx = require "javapackages-bootstrap-dola-bsx" |
| 133 | + |
| 134 | + local function conf() |
| 135 | + local ret = bsx.call0( |
| 136 | +diff --git a/dola-dbs/src/main/rpm/macros.dola-dbs b/dola-dbs/src/main/rpm/macros.dola-dbs |
| 137 | +index f0331de..d389903 100644 |
| 138 | +--- a/dola-dbs/src/main/rpm/macros.dola-dbs |
| 139 | ++++ b/dola-dbs/src/main/rpm/macros.dola-dbs |
| 140 | +@@ -1,4 +1,4 @@ |
| 141 | +-%buildsystem_maven_conf(-) %{lua:(require "dola-dbs").conf()} |
| 142 | +-%buildsystem_maven_generate_buildrequires(-) %{lua:(require "dola-dbs").generate_buildrequires()} |
| 143 | +-%buildsystem_maven_build(-) %{lua:(require "dola-dbs").build()} |
| 144 | +-%buildsystem_maven_install(-) %{lua:(require "dola-dbs").install()} |
| 145 | ++%buildsystem_maven_conf(-) %{lua:(require "javapackages-bootstrap-dola-dbs").conf()} |
| 146 | ++%buildsystem_maven_generate_buildrequires(-) %{lua:(require "javapackages-bootstrap-dola-dbs").generate_buildrequires()} |
| 147 | ++%buildsystem_maven_build(-) %{lua:(require "javapackages-bootstrap-dola-dbs").build()} |
| 148 | ++%buildsystem_maven_install(-) %{lua:(require "javapackages-bootstrap-dola-dbs").install()} |
| 149 | +diff --git a/dola-generator/src/main/conf/dola-generator.conf b/dola-generator/src/main/conf/dola-generator.conf |
| 150 | +index c986b8c..d93d3f7 100644 |
| 151 | +--- a/dola-generator/src/main/conf/dola-generator.conf |
| 152 | ++++ b/dola-generator/src/main/conf/dola-generator.conf |
| 153 | +@@ -1,11 +1,14 @@ |
| 154 | + [Realm:generator] |
| 155 | + import io.kojan.dola.rpm from Realm:rpm-api |
| 156 | +-load /usr/share/java/dola/dola-generator.jar |
| 157 | +-load /usr/share/java/objectweb-asm/asm.jar |
| 158 | +-load /usr/share/java/commons-compress.jar |
| 159 | +-load /usr/share/java/commons-io.jar |
| 160 | +-load /usr/share/java/xmvn5/xmvn-api-5.0.0.jar |
| 161 | +-load /usr/share/java/kojan-xml/kojan-xml.jar |
| 162 | +-load /usr/share/java/xmvn5/xmvn-core-5.0.0.jar |
| 163 | +-load /usr/share/java/maven4/maven-api-model-4.0.0-rc-3.jar |
| 164 | +-load /usr/share/java/plexus-utils4/plexus-utils-4.0.2.jar |
| 165 | ++load /usr/lib/javapackages-bootstrap/dola-generator.jar |
| 166 | ++load /usr/lib/javapackages-bootstrap/asm.jar |
| 167 | ++load /usr/lib/javapackages-bootstrap/commons-compress.jar |
| 168 | ++load /usr/lib/javapackages-bootstrap/commons-io.jar |
| 169 | ++load /usr/lib/javapackages-bootstrap/xmvn-api.jar |
| 170 | ++load /usr/lib/javapackages-bootstrap/kojan-xml.jar |
| 171 | ++load /usr/lib/javapackages-bootstrap/xmvn-core.jar |
| 172 | ++load /usr/lib/javapackages-bootstrap/maven-api-model-4.0.0-rc-3.jar |
| 173 | ++load /usr/lib/javapackages-bootstrap/maven-impl-4.0.0-rc-3.jar |
| 174 | ++load /usr/lib/javapackages-bootstrap/maven-api-xml-4.0.0-rc-3.jar |
| 175 | ++load /usr/lib/javapackages-bootstrap/maven-xml-4.0.0-rc-3.jar |
| 176 | ++load /usr/lib/javapackages-bootstrap/plexus-utils-4.0.2.jar |
| 177 | +diff --git a/dola-generator/src/main/java/io/kojan/dola/generator/stub/CompoundGenerator.java b/dola-generator/src/main/java/io/kojan/dola/generator/stub/CompoundGenerator.java |
| 178 | +index 04641da..1f47f7c 100644 |
| 179 | +--- a/dola-generator/src/main/java/io/kojan/dola/generator/stub/CompoundGenerator.java |
| 180 | ++++ b/dola-generator/src/main/java/io/kojan/dola/generator/stub/CompoundGenerator.java |
| 181 | +@@ -44,14 +44,14 @@ class CompoundGenerator { |
| 182 | + |
| 183 | + public CompoundGenerator(BuildContext buildContext) { |
| 184 | + this.buildContext = buildContext; |
| 185 | +- if (!buildContext.eval("%{?__dolagen_debug}").isEmpty()) { |
| 186 | ++ if (!buildContext.eval("%{?__jpbdolagen_debug}").isEmpty()) { |
| 187 | + Logger.enableDebug(); |
| 188 | + } |
| 189 | +- multifile = buildContext.eval("%{?__dolagen_protocol}").equals("multifile"); |
| 190 | ++ multifile = buildContext.eval("%{?__jpbdolagen_protocol}").equals("multifile"); |
| 191 | + Set<String> provCns = |
| 192 | +- Set.of(buildContext.eval("%{?__dolagen_provides_generators}").split("\\s+")); |
| 193 | ++ Set.of(buildContext.eval("%{?__jpbdolagen_provides_generators}").split("\\s+")); |
| 194 | + Set<String> reqCns = |
| 195 | +- Set.of(buildContext.eval("%{?__dolagen_requires_generators}").split("\\s+")); |
| 196 | ++ Set.of(buildContext.eval("%{?__jpbdolagen_requires_generators}").split("\\s+")); |
| 197 | + Set<String> allCns = new LinkedHashSet<>(); |
| 198 | + allCns.addAll(provCns); |
| 199 | + allCns.addAll(reqCns); |
| 200 | +diff --git a/dola-generator/src/main/java/io/kojan/dola/generator/stub/CompoundHook.java b/dola-generator/src/main/java/io/kojan/dola/generator/stub/CompoundHook.java |
| 201 | +index 3b62ef2..429cd48 100644 |
| 202 | +--- a/dola-generator/src/main/java/io/kojan/dola/generator/stub/CompoundHook.java |
| 203 | ++++ b/dola-generator/src/main/java/io/kojan/dola/generator/stub/CompoundHook.java |
| 204 | +@@ -28,12 +28,12 @@ class CompoundHook { |
| 205 | + private final List<Hook> hooks = new ArrayList<>(); |
| 206 | + |
| 207 | + public CompoundHook(BuildContext buildContext) { |
| 208 | +- if (!buildContext.eval("%{?__dolagen_debug}").isEmpty()) { |
| 209 | ++ if (!buildContext.eval("%{?__jpbdolagen_debug}").isEmpty()) { |
| 210 | + Logger.enableDebug(); |
| 211 | + } |
| 212 | + try { |
| 213 | + ClassLoader cl = Thread.currentThread().getContextClassLoader(); |
| 214 | +- for (String cn : buildContext.eval("%{?__dolagen_post_install_hooks}").split("\\s+")) { |
| 215 | ++ for (String cn : buildContext.eval("%{?__jpbdolagen_post_install_hooks}").split("\\s+")) { |
| 216 | + if (!cn.isEmpty()) { |
| 217 | + HookFactory factory = |
| 218 | + (HookFactory) cl.loadClass(cn).getDeclaredConstructor().newInstance(); |
| 219 | +diff --git a/dola-generator/src/main/lua/dola-generator.lua b/dola-generator/src/main/lua/dola-generator.lua |
| 220 | +index 531b3e9..c21b3f3 100644 |
| 221 | +--- a/dola-generator/src/main/lua/dola-generator.lua |
| 222 | ++++ b/dola-generator/src/main/lua/dola-generator.lua |
| 223 | +@@ -14,7 +14,7 @@ |
| 224 | + -- limitations under the License. |
| 225 | + -- |
| 226 | + |
| 227 | +-local bsx = require "dola-bsx" |
| 228 | ++local bsx = require "javapackages-bootstrap-dola-bsx" |
| 229 | + |
| 230 | + -- Run dola-generator |
| 231 | + local function generate(kind) |
| 232 | +diff --git a/dola-generator/src/main/rpm/dolagen.attr b/dola-generator/src/main/rpm/dolagen.attr |
| 233 | +index 9f15e77..7304982 100644 |
| 234 | +--- a/dola-generator/src/main/rpm/dolagen.attr |
| 235 | ++++ b/dola-generator/src/main/rpm/dolagen.attr |
| 236 | +@@ -1,4 +1,4 @@ |
| 237 | +-%__dolagen_provides() %{lua:(require "dola-generator").generate('provides')} |
| 238 | +-%__dolagen_requires() %{lua:(require "dola-generator").generate('requires')} |
| 239 | +-%__dolagen_path .* |
| 240 | +-%__dolagen_protocol multifile |
| 241 | ++%__jpbdolagen_provides() %{lua:(require "javapackages-bootstrap-dola-generator").generate('provides')} |
| 242 | ++%__jpbdolagen_requires() %{lua:(require "javapackages-bootstrap-dola-generator").generate('requires')} |
| 243 | ++%__jpbdolagen_path .* |
| 244 | ++%__jpbdolagen_protocol multifile |
| 245 | +diff --git a/dola-generator/src/main/rpm/macros.dola-generator b/dola-generator/src/main/rpm/macros.dola-generator |
| 246 | +index f998b8a..f672878 100644 |
| 247 | +--- a/dola-generator/src/main/rpm/macros.dola-generator |
| 248 | ++++ b/dola-generator/src/main/rpm/macros.dola-generator |
| 249 | +@@ -1,6 +1,6 @@ |
| 250 | + # Debug enable flag. |
| 251 | + # Setting this to non-empty value enables debugging output. |
| 252 | +-%__dolagen_debug 1 |
| 253 | ++%__jpbdolagen_debug 1 |
| 254 | + |
| 255 | + # Specify which dependency generators should be ran. |
| 256 | + # Values should be a space-separated list of qualified class names of |
| 257 | +@@ -10,12 +10,12 @@ |
| 258 | + # * io.kojan.dola.generator.jpscript.JPackageScriptGeneratorFactory |
| 259 | + # * io.kojan.dola.generator.jpms.JPMSGeneratorFactory |
| 260 | + # * io.kojan.dola.generator.maven.MavenGeneratorFactory |
| 261 | +-%__dolagen_provides_generators io.kojan.dola.generator.filesystem.FilesystemGeneratorFactory io.kojan.dola.generator.jpscript.JPackageScriptGeneratorFactory io.kojan.dola.generator.jpms.JPMSGeneratorFactory io.kojan.dola.generator.maven.MavenGeneratorFactory |
| 262 | +-%__dolagen_requires_generators io.kojan.dola.generator.filesystem.FilesystemGeneratorFactory io.kojan.dola.generator.jpscript.JPackageScriptGeneratorFactory io.kojan.dola.generator.maven.MavenGeneratorFactory |
| 263 | ++%__jpbdolagen_provides_generators io.kojan.dola.generator.filesystem.FilesystemGeneratorFactory io.kojan.dola.generator.jpscript.JPackageScriptGeneratorFactory io.kojan.dola.generator.jpms.JPMSGeneratorFactory io.kojan.dola.generator.maven.MavenGeneratorFactory |
| 264 | ++%__jpbdolagen_requires_generators io.kojan.dola.generator.filesystem.FilesystemGeneratorFactory io.kojan.dola.generator.jpscript.JPackageScriptGeneratorFactory io.kojan.dola.generator.maven.MavenGeneratorFactory |
| 265 | + |
| 266 | + # Specify which post-install hooks should be ran. |
| 267 | + # Value should be a space-separated list of qualified class names of |
| 268 | + # hook factories (classes implementing HookFactory interface). |
| 269 | + # Available hook factories are: |
| 270 | + # * io.kojan.dola.generator.transformer.TransformerHookFactory |
| 271 | +-%__dolagen_post_install_hooks io.kojan.dola.generator.transformer.TransformerHookFactory |
| 272 | ++%__jpbdolagen_post_install_hooks io.kojan.dola.generator.transformer.TransformerHookFactory |
| 273 | +diff --git a/dola-generator/src/main/rpm/macros.dola-generator-etc b/dola-generator/src/main/rpm/macros.dola-generator-etc |
| 274 | +index 95e9160..f56fd7b 100644 |
| 275 | +--- a/dola-generator/src/main/rpm/macros.dola-generator-etc |
| 276 | ++++ b/dola-generator/src/main/rpm/macros.dola-generator-etc |
| 277 | +@@ -1,2 +1,2 @@ |
| 278 | + # Override default __os_install_post hook. |
| 279 | +-%__os_install_post %{lua:(require "dola-generator").os_install_post()} |
| 280 | ++%__os_install_post %{lua:(require "javapackages-bootstrap-dola-generator").os_install_post()} |
| 281 | +diff --git a/dola-rpm-api/src/main/conf/dola-rpm-api.conf b/dola-rpm-api/src/main/conf/dola-rpm-api.conf |
| 282 | +index 2c0f672..848ec53 100644 |
| 283 | +--- a/dola-rpm-api/src/main/conf/dola-rpm-api.conf |
| 284 | ++++ b/dola-rpm-api/src/main/conf/dola-rpm-api.conf |
| 285 | +@@ -1,2 +1,2 @@ |
| 286 | + [Realm:rpm-api] |
| 287 | +-load /usr/lib/java/dola/dola-rpm-api.jar |
| 288 | ++load /usr/lib/javapackages-bootstrap/dola-rpm-api.jar |
| 289 | +-- |
| 290 | +2.49.0 |
| 291 | + |
0 commit comments