Extend available bases
authorMathieu Baudier <mbaudier@argeo.org>
Wed, 6 Mar 2024 11:33:10 +0000 (12:33 +0100)
committerMathieu Baudier <mbaudier@argeo.org>
Wed, 6 Mar 2024 11:33:10 +0000 (12:33 +0100)
common.mk
src/org/argeo/build/Make.java

index 07f2e9da3cd6fca17d966140ce1a0cf6bac52c06..0328fd5fa56b8fdc1f1900660ca3bd5b8a040e3a 100644 (file)
--- a/common.mk
+++ b/common.mk
@@ -14,10 +14,6 @@ A2_OUTPUT = $(SDK_BUILD_BASE)/a2
 JVM ?= $(JAVA_HOME)/bin/java
 JAVADOC ?= $(JAVA_HOME)/bin/javadoc
 
-# The following variables have default values which can be overriden
-# A2_BASE           the space-separated directories where already built a2 categories can be found
-A2_BASE ?=$(A2_OUTPUT) /usr/local/share/a2 /usr/share/a2
-
 # GNU defaults
 prefix ?= /usr/local
 datarootdir ?= $(prefix)/share
@@ -27,6 +23,10 @@ libdir ?= $(exec_prefix)/lib
 A2_INSTALL_TARGET ?= $(DESTDIR)$(datarootdir)/a2
 A2_NATIVE_INSTALL_TARGET ?= $(DESTDIR)$(libdir)/a2
 
+# The following variables have default values which can be overriden
+# A2_BASE           the space-separated directories where already built a2 categories can be found
+A2_BASE ?=$(A2_OUTPUT) $(A2_INSTALL_TARGET) $(A2_NATIVE_INSTALL_TARGET) /usr/local/share/a2 /usr/local/lib/a2 /usr/share/a2 /usr/lib/a2
+
 # OS-speciific
 KNOWN_ARCHS ?= x86_64 aarch64
 TARGET_OS ?= linux
index 62ef0b61e248fc23a33997101353939daed33049..b0066ac99bdf7ca0295b1bef5aef8e04efe4e882 100644 (file)
@@ -38,6 +38,7 @@ import java.util.jar.Attributes;
 import java.util.jar.JarEntry;
 import java.util.jar.JarOutputStream;
 import java.util.jar.Manifest;
+import java.util.stream.Collectors;
 import java.util.zip.Deflater;
 
 import org.eclipse.jdt.core.compiler.CompilationProgress;
@@ -175,7 +176,8 @@ public class Make {
 
                List<String> a2Categories = options.getOrDefault("--dep-categories", new ArrayList<>());
                List<String> a2Bases = options.getOrDefault("--a2-bases", new ArrayList<>());
-               if (a2Bases.isEmpty() || !a2Bases.contains(a2Output.toString())) {
+               a2Bases = a2Bases.stream().distinct().collect(Collectors.toList());// remove duplicates
+               if (a2Bases.isEmpty() || !a2Bases.contains(a2Output.toString())) {// make sure a2 output is available
                        a2Bases.add(a2Output.toString());
                }
 
@@ -204,10 +206,9 @@ public class Make {
                                                        A2Jar current = a2Jars.get(a2Jar.name);
                                                        if (a2Jar.major > current.major)
                                                                a2Jars.put(a2Jar.name, a2Jar);
-                                                       else if (a2Jar.major == current.major //
-                                                                       // if minor equals, we take the last one
-                                                                       && a2Jar.minor >= current.minor)
+                                                       else if (a2Jar.major == current.major && a2Jar.minor > current.minor)
                                                                a2Jars.put(a2Jar.name, a2Jar);
+                                                       // keep if minor equals
                                                } else {
                                                        a2Jars.put(a2Jar.name, a2Jar);
                                                }