Allow logging feature dependency changes 84/56184/3
authorStephen Kitt <skitt@redhat.com>
Thu, 27 Apr 2017 16:18:57 +0000 (18:18 +0200)
committerStephen Kitt <skitt@redhat.com>
Fri, 28 Apr 2017 14:30:06 +0000 (16:30 +0200)
This adds two properties controlling the Karaf feature generator’s
tracking features.

Setting checkDependencyChange to true enables checks and logs: when
features are generated, a simplified form  saved in src/main/history;
builds where this file is already present compare newly-generated
features against them, and log any failures. Any detected changes in
features are logged as a warning, with the detail of the changed
feature contents. It would be interesting to parse this in the builds
and send emails when changes are detected.

Setting failOnDependencyChange fails the build if a dependency change
is detected in the features.

This patch also enables both these flags in odlparent features where
it’s useful. This ensures that any changes to those features are
caught.

Change-Id: If9a1ebb2b218413f78a1bc28bfeb20d39b956675
Signed-off-by: Stephen Kitt <skitt@redhat.com>
22 files changed:
features4/odl-akka-all/src/main/history/dependencies.xml [new file with mode: 0644]
features4/odl-akka-clustering-2.4/pom.xml
features4/odl-akka-clustering-2.4/src/main/history/dependencies.xml [new file with mode: 0644]
features4/odl-akka-leveldb-0.7/pom.xml
features4/odl-akka-leveldb-0.7/src/main/history/dependencies.xml [new file with mode: 0644]
features4/odl-akka-persistence-2.4/pom.xml
features4/odl-akka-persistence-2.4/src/main/history/dependencies.xml [new file with mode: 0644]
features4/odl-akka-scala-2.11/pom.xml
features4/odl-akka-scala-2.11/src/main/history/dependencies.xml [new file with mode: 0644]
features4/odl-akka-system-2.4/pom.xml
features4/odl-akka-system-2.4/src/main/history/dependencies.xml [new file with mode: 0644]
features4/odl-guava-18/pom.xml
features4/odl-guava-18/src/main/history/dependencies.xml [new file with mode: 0644]
features4/odl-guava-21/pom.xml
features4/odl-guava-21/src/main/history/dependencies.xml [new file with mode: 0644]
features4/odl-lmax-3/pom.xml
features4/odl-lmax-3/src/main/history/dependencies.xml [new file with mode: 0644]
features4/odl-netty-4/pom.xml
features4/odl-netty-4/src/main/history/dependencies.xml [new file with mode: 0644]
features4/odl-triemap-0.2/pom.xml
features4/odl-triemap-0.2/src/main/history/dependencies.xml [new file with mode: 0644]
untested-single-feature-parent/pom.xml

diff --git a/features4/odl-akka-all/src/main/history/dependencies.xml b/features4/odl-akka-all/src/main/history/dependencies.xml
new file mode 100644 (file)
index 0000000..a535bf5
--- /dev/null
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<features xmlns="http://karaf.apache.org/xmlns/features/v1.4.0" name="odl4-akka-all">
+    <feature version="0.0.0">
+        <feature prerequisite="false" dependency="false">odl4-akka-clustering-2.4</feature>
+        <feature prerequisite="false" dependency="false">odl4-akka-leveldb-0.7</feature>
+        <feature prerequisite="false" dependency="false">odl4-akka-persistence-2.4</feature>
+        <feature prerequisite="false" dependency="false">odl4-akka-scala-2.11</feature>
+        <feature prerequisite="false" dependency="false">odl4-akka-system-2.4</feature>
+    </feature>
+</features>
index 3c107752dfe1090b9697166941bb4f45444e0993..5bbf3c43180d5c4a8e3cecea39c344d8ea55d83e 100644 (file)
 
     <name>Akka Clustering (for Karaf 4)</name>
 
+    <properties>
+        <checkDependencyChange>true</checkDependencyChange>
+        <failOnDependencyChange>true</failOnDependencyChange>
+    </properties>
+
     <dependencies>
         <dependency>
             <groupId>${project.groupId}</groupId>
diff --git a/features4/odl-akka-clustering-2.4/src/main/history/dependencies.xml b/features4/odl-akka-clustering-2.4/src/main/history/dependencies.xml
new file mode 100644 (file)
index 0000000..7c78c59
--- /dev/null
@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<features xmlns="http://karaf.apache.org/xmlns/features/v1.4.0" name="odl4-akka-clustering-2.4">
+    <feature version="0.0.0">
+        <feature prerequisite="false" dependency="false">odl4-akka-system-2.4</feature>
+        <feature prerequisite="false" dependency="false">wrap</feature>
+        <bundle>mvn:com.typesafe.akka/akka-cluster_2.11/2.4.17</bundle>
+        <bundle>mvn:com.typesafe.akka/akka-protobuf_2.11/2.4.17</bundle>
+        <bundle>mvn:com.typesafe.akka/akka-remote_2.11/2.4.17</bundle>
+        <bundle>mvn:com.typesafe.akka/akka-stream_2.11/2.4.17</bundle>
+        <bundle>mvn:com.typesafe/ssl-config-core_2.11/0.2.1</bundle>
+        <bundle>mvn:io.aeron/aeron-client/1.1.0</bundle>
+        <bundle>mvn:io.aeron/aeron-driver/1.1.0</bundle>
+        <bundle>mvn:io.netty/netty/3.10.6.Final</bundle>
+        <bundle>mvn:org.agrona/agrona/0.9.2</bundle>
+        <bundle>mvn:org.reactivestreams/reactive-streams/1.0.0</bundle>
+        <bundle>mvn:org.scala-lang.modules/scala-parser-combinators_2.11/1.0.4</bundle>
+        <bundle>wrap:mvn:org.uncommons.maths/uncommons-maths/1.2.2a</bundle>
+    </feature>
+</features>
index 47815baad0d4307a74ce9c0edf1ad3f6009ccc04..eaa2e7a3aacc514de54a95572d8677f2789f2ef4 100644 (file)
 
     <name>LevelDB (for Karaf 4)</name>
 
+    <properties>
+        <checkDependencyChange>true</checkDependencyChange>
+        <failOnDependencyChange>true</failOnDependencyChange>
+    </properties>
+
     <dependencies>
         <dependency>
             <groupId>org.opendaylight.odlparent</groupId>
diff --git a/features4/odl-akka-leveldb-0.7/src/main/history/dependencies.xml b/features4/odl-akka-leveldb-0.7/src/main/history/dependencies.xml
new file mode 100644 (file)
index 0000000..a083585
--- /dev/null
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<features xmlns="http://karaf.apache.org/xmlns/features/v1.4.0" name="odl4-akka-leveldb-0.7">
+    <feature version="0.0.0">
+        <feature prerequisite="false" dependency="false">odl-guava-18</feature>
+        <feature prerequisite="false" dependency="false">wrap</feature>
+        <bundle>mvn:org.fusesource.leveldbjni/leveldbjni-all/1.8-odl</bundle>
+        <bundle>wrap:mvn:org.iq80.leveldb/leveldb-api/0.7</bundle>
+        <bundle>wrap:mvn:org.iq80.leveldb/leveldb/0.7</bundle>
+    </feature>
+</features>
index fbff2dae29ad1b7439aa3a42bcaafc81812aa246..bea85601fd0daa1914ce97fea8b655f7150447ba 100644 (file)
 
     <name>Akka Persistence (for Karaf 4)</name>
 
+    <properties>
+        <checkDependencyChange>true</checkDependencyChange>
+        <failOnDependencyChange>true</failOnDependencyChange>
+    </properties>
+
     <dependencies>
         <dependency>
             <groupId>${project.groupId}</groupId>
diff --git a/features4/odl-akka-persistence-2.4/src/main/history/dependencies.xml b/features4/odl-akka-persistence-2.4/src/main/history/dependencies.xml
new file mode 100644 (file)
index 0000000..549db39
--- /dev/null
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<features xmlns="http://karaf.apache.org/xmlns/features/v1.4.0" name="odl4-akka-persistence-2.4">
+    <feature version="0.0.0">
+        <feature prerequisite="false" dependency="false">odl4-akka-leveldb-0.7</feature>
+        <feature prerequisite="false" dependency="false">odl4-akka-system-2.4</feature>
+        <bundle>mvn:com.typesafe.akka/akka-persistence_2.11/2.4.17</bundle>
+        <bundle>mvn:com.typesafe.akka/akka-protobuf_2.11/2.4.17</bundle>
+    </feature>
+</features>
index fd736a4c37e6000e8e70be4372e9bd4f2fe805c1..63ad36ab674e67f19355482ba79fb0713b69de63 100644 (file)
 
     <name>Scala Runtime for OpenDaylight (for Karaf 4)</name>
 
+    <properties>
+        <checkDependencyChange>true</checkDependencyChange>
+        <failOnDependencyChange>true</failOnDependencyChange>
+    </properties>
+
     <dependencies>
         <dependency>
             <groupId>org.scala-lang</groupId>
diff --git a/features4/odl-akka-scala-2.11/src/main/history/dependencies.xml b/features4/odl-akka-scala-2.11/src/main/history/dependencies.xml
new file mode 100644 (file)
index 0000000..c1f6b8a
--- /dev/null
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<features xmlns="http://karaf.apache.org/xmlns/features/v1.4.0" name="odl4-akka-scala-2.11">
+    <feature version="0.0.0">
+        <bundle>mvn:org.scala-lang.modules/scala-java8-compat_2.11/0.8.0</bundle>
+        <bundle>mvn:org.scala-lang/scala-library/2.11.8</bundle>
+        <bundle>mvn:org.scala-lang/scala-reflect/2.11.8</bundle>
+    </feature>
+</features>
index 8dfe21b7c0c76058c42469bd35d09a4fc211077a..a769d162110a78edf4fc5be8ce8ef550e20c5305 100644 (file)
 
     <name>Akka Actor Framework System Bundles (for Karaf 4)</name>
 
+    <properties>
+        <checkDependencyChange>true</checkDependencyChange>
+        <failOnDependencyChange>true</failOnDependencyChange>
+    </properties>
+
     <dependencies>
         <dependency>
             <groupId>${project.groupId}</groupId>
diff --git a/features4/odl-akka-system-2.4/src/main/history/dependencies.xml b/features4/odl-akka-system-2.4/src/main/history/dependencies.xml
new file mode 100644 (file)
index 0000000..3bb7b87
--- /dev/null
@@ -0,0 +1,10 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<features xmlns="http://karaf.apache.org/xmlns/features/v1.4.0" name="odl4-akka-system-2.4">
+    <feature version="0.0.0">
+        <feature prerequisite="false" dependency="false">odl4-akka-scala-2.11</feature>
+        <bundle>mvn:com.typesafe.akka/akka-actor_2.11/2.4.17</bundle>
+        <bundle>mvn:com.typesafe.akka/akka-osgi_2.11/2.4.17</bundle>
+        <bundle>mvn:com.typesafe.akka/akka-slf4j_2.11/2.4.17</bundle>
+        <bundle>mvn:com.typesafe/config/1.3.0</bundle>
+    </feature>
+</features>
index e891bcdab2f113bff10aafa2c4bcb50fd348916e..02a3175f7ddc291e6dde42a4f7fa4ccd37bc7cea 100644 (file)
 
     <name>OpenDaylight :: Guava 18 (for Karaf 4)</name>
 
+    <properties>
+        <checkDependencyChange>true</checkDependencyChange>
+        <failOnDependencyChange>true</failOnDependencyChange>
+    </properties>
+
     <dependencies>
         <dependency>
             <groupId>com.google.guava</groupId>
diff --git a/features4/odl-guava-18/src/main/history/dependencies.xml b/features4/odl-guava-18/src/main/history/dependencies.xml
new file mode 100644 (file)
index 0000000..9d775de
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<features xmlns="http://karaf.apache.org/xmlns/features/v1.4.0" name="odl4-guava-18">
+    <feature version="0.0.0">
+        <bundle>mvn:com.google.guava/guava/18.0</bundle>
+    </feature>
+</features>
index 286facb5683b254369419b6bba101704c590cbb6..66be54ddb9a4ce44cec3b161c0a3939b84ba1ace 100644 (file)
 
     <name>OpenDaylight :: Guava 21 (for Karaf 4)</name>
 
+    <properties>
+        <checkDependencyChange>true</checkDependencyChange>
+        <failOnDependencyChange>true</failOnDependencyChange>
+    </properties>
+
     <dependencies>
         <dependency>
             <groupId>com.google.guava</groupId>
diff --git a/features4/odl-guava-21/src/main/history/dependencies.xml b/features4/odl-guava-21/src/main/history/dependencies.xml
new file mode 100644 (file)
index 0000000..8f9584d
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<features xmlns="http://karaf.apache.org/xmlns/features/v1.4.0" name="odl4-guava-21">
+    <feature version="0.0.0">
+        <bundle>mvn:com.google.guava/guava/21.0</bundle>
+    </feature>
+</features>
index b76bf5bc0cffec16862cfd0e269db40dfe7f2722..5d11fb18655ca094bf3512064eb56bdfc45cef5c 100644 (file)
 
     <name>OpenDaylight :: LMAX Disruptor (for Karaf 4)</name>
 
+    <properties>
+        <checkDependencyChange>true</checkDependencyChange>
+        <failOnDependencyChange>true</failOnDependencyChange>
+    </properties>
+
     <dependencies>
         <dependency>
             <groupId>com.lmax</groupId>
diff --git a/features4/odl-lmax-3/src/main/history/dependencies.xml b/features4/odl-lmax-3/src/main/history/dependencies.xml
new file mode 100644 (file)
index 0000000..9c1bd5a
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<features xmlns="http://karaf.apache.org/xmlns/features/v1.4.0" name="odl4-lmax-3">
+    <feature version="0.0.0">
+        <bundle>mvn:com.lmax/disruptor/3.3.6</bundle>
+    </feature>
+</features>
index b7c7cee4746ac12d3d56e87cb2767205b635c426..4175f1da57f16d5ee5383440d8e18b40cf15ff7e 100644 (file)
 
     <name>OpenDaylight :: Netty (for Karaf 4)</name>
 
+    <properties>
+        <checkDependencyChange>true</checkDependencyChange>
+        <failOnDependencyChange>true</failOnDependencyChange>
+    </properties>
+
     <dependencies>
         <dependency>
             <groupId>io.netty</groupId>
diff --git a/features4/odl-netty-4/src/main/history/dependencies.xml b/features4/odl-netty-4/src/main/history/dependencies.xml
new file mode 100644 (file)
index 0000000..4ce53d1
--- /dev/null
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<features xmlns="http://karaf.apache.org/xmlns/features/v1.4.0" name="odl4-netty-4">
+    <feature version="0.0.0">
+        <bundle>mvn:io.netty/netty-buffer/4.1.8.Final</bundle>
+        <bundle>mvn:io.netty/netty-codec-http/4.1.8.Final</bundle>
+        <bundle>mvn:io.netty/netty-codec/4.1.8.Final</bundle>
+        <bundle>mvn:io.netty/netty-common/4.1.8.Final</bundle>
+        <bundle>mvn:io.netty/netty-handler/4.1.8.Final</bundle>
+        <bundle>mvn:io.netty/netty-resolver/4.1.8.Final</bundle>
+        <bundle>mvn:io.netty/netty-transport-native-epoll/4.1.8.Final/jar/linux-x86_64</bundle>
+        <bundle>mvn:io.netty/netty-transport/4.1.8.Final</bundle>
+    </feature>
+</features>
index eb70783c22e970de2a816fa125311108f47556a3..517b9737c14bb3197f57694cf9f2c24da4b42d89 100644 (file)
 
     <name>OpenDaylight :: Concurrent Trie HashMap (for Karaf 4)</name>
 
+    <properties>
+        <checkDependencyChange>true</checkDependencyChange>
+        <failOnDependencyChange>true</failOnDependencyChange>
+    </properties>
+
     <dependencies>
         <dependency>
             <groupId>com.github.romix</groupId>
diff --git a/features4/odl-triemap-0.2/src/main/history/dependencies.xml b/features4/odl-triemap-0.2/src/main/history/dependencies.xml
new file mode 100644 (file)
index 0000000..b9b9783
--- /dev/null
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<features xmlns="http://karaf.apache.org/xmlns/features/v1.4.0" name="odl4-triemap-0.2">
+    <feature version="0.0.0">
+        <bundle>mvn:com.github.romix/java-concurrent-hash-trie-map/0.2.23-ODL</bundle>
+    </feature>
+</features>
index 37386359b9c87046ae33eb1606e95e13e58da435..6a294e48705a6c0ac9513cc4b56773a3b3f79934 100644 (file)
@@ -34,6 +34,8 @@
 
     <properties>
         <karaf.version>${karaf4.version}</karaf.version>
+        <checkDependencyChange>false</checkDependencyChange>
+        <failOnDependencyChange>false</failOnDependencyChange>
     </properties>
 
     <build>
@@ -51,6 +53,9 @@
                 <extensions>true</extensions>
                 <configuration combine.children="append">
                     <simplifyBundleDependencies>true</simplifyBundleDependencies>
+                    <checkDependencyChange>${checkDependencyChange}</checkDependencyChange>
+                    <logDependencyChanges>true</logDependencyChanges>
+                    <failOnDependencyChange>${failOnDependencyChange}</failOnDependencyChange>
                     <excludedArtifactIds>
                         <!-- These artifacts are provided by our Karaf distribution -->
                         <!-- Aries Blueprint -->