summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xjvpp/common.sh24
-rwxr-xr-xjvpp/install_from_package.sh25
-rwxr-xr-xjvpp/install_from_vpp_build_dir.sh26
-rw-r--r--release-notes/src/main/asciidoc/install_guide/install_manual_build.adoc37
4 files changed, 101 insertions, 11 deletions
diff --git a/jvpp/common.sh b/jvpp/common.sh
new file mode 100755
index 000000000..456270635
--- /dev/null
+++ b/jvpp/common.sh
@@ -0,0 +1,24 @@
+#!/bin/bash
+
+# Installs jvpp jar to local maven repository.
+#
+# $1 - jvpp jar file path
+# $1 - target artifact version
+#
+function install_jvpp_jar {
+ jarfile=$1
+ version=$2
+
+ # Filename (includes version suffix), e.g. jvpp-core-18.01
+ basefile=$(basename -s .jar "$jarfile")
+
+ # Remove version suffix
+ artifactId=$(echo "$basefile" | rev | cut -d '-' -f 2- | rev)
+
+ mvn install:install-file \
+ -Dfile=$jarfile \
+ -DgroupId=io.fd.vpp \
+ -DartifactId=$artifactId \
+ -Dversion=$version \
+ -Dpackaging=jar
+}
diff --git a/jvpp/install_from_package.sh b/jvpp/install_from_package.sh
new file mode 100755
index 000000000..f196f3ab0
--- /dev/null
+++ b/jvpp/install_from_package.sh
@@ -0,0 +1,25 @@
+#!/bin/bash
+
+# Installs jvpp jars from vpp-api-java package to local maven repository.
+# Use before building hc2vpp to make sure it matches installed vpp.
+# Not needed when using honeycomb package from nexus.fd.io
+# (compatible vpp version is given as package dependency).
+
+DIR_NAME=$(dirname $0)
+source ${DIR_NAME}/common.sh
+
+# Directory used by vpp-api-java package
+JAR_DIR="/usr/share/java/"
+echo "Installing vpp-api-java package jars from $JAR_DIR"
+
+JARS=$(find "$JAR_DIR" -type f -iname 'jvpp-*.jar')
+echo "Found:"
+echo "$JARS"
+
+JVPP_VERSION=`$DIR_NAME/../jvpp-version`
+echo "Target jvpp version: $JVPP_VERSION"
+
+for i in ${JARS}
+do
+ install_jvpp_jar "$i" "JVPP_VERSION"
+done \ No newline at end of file
diff --git a/jvpp/install_from_vpp_build_dir.sh b/jvpp/install_from_vpp_build_dir.sh
new file mode 100755
index 000000000..06c1b1bff
--- /dev/null
+++ b/jvpp/install_from_vpp_build_dir.sh
@@ -0,0 +1,26 @@
+#!/bin/bash
+
+# Installs jvpp jars from vpp build dir to local maven repository.
+# Use before building hc2vpp to make sure it matches your locally-built vpp.
+# Not needed when using honeycomb package from nexus.fd.io
+# (compatible vpp version is given as package dependency).
+
+DIR_NAME=$(dirname $0)
+source ${DIR_NAME}/common.sh
+
+# Set VPP_DIR if not defined
+DEFAULT_VPP_DIR="$HOME/vpp"
+VPP_DIR=${VPP_DIR:-"$DEFAULT_VPP_DIR"}
+echo "Installing jvpp jars from VPP_DIR=$VPP_DIR"
+
+JARS="$(find "$VPP_DIR/build-root/install-vpp-native/vpp/share/java/" -type f -iname 'jvpp-*.jar')"
+echo "Found:"
+echo "$JARS"
+
+JVPP_VERSION=`$DIR_NAME/../jvpp-version`
+echo "Target jvpp version: $JVPP_VERSION"
+
+for i in ${JARS}
+do
+ install_jvpp_jar "$i" "JVPP_VERSION"
+done \ No newline at end of file
diff --git a/release-notes/src/main/asciidoc/install_guide/install_manual_build.adoc b/release-notes/src/main/asciidoc/install_guide/install_manual_build.adoc
index d4449c9d3..012a8f6e9 100644
--- a/release-notes/src/main/asciidoc/install_guide/install_manual_build.adoc
+++ b/release-notes/src/main/asciidoc/install_guide/install_manual_build.adoc
@@ -20,7 +20,10 @@ TIP: Make sure you have https://wiki.fd.io/view/DEV/Setting_up_Gerrit[registered
== Building the code
Make sure all the prerequisites are installed.
-NOTE: To make sure fresh hc2vpp build is compatible with VPP, building VPP is also required to make sure the same JVpp version is used preventing out-of-sync exceptions. In case only hc2vpp needs to be built, skip Building VPP section.
+NOTE: To make sure fresh hc2vpp build is compatible with VPP, it is required
+to make sure the same JVpp version is used preventing out-of-sync exceptions.
+Compatible JVPP artifacts can be obtained by installing vpp-api-java package or building VPP.
+In case only hc2vpp needs to be built, skip Building VPP section.
=== Building VPP
Clone VPP according to: https://gerrit.fd.io/r/#/admin/projects/vpp and checkout {project-branch} branch
@@ -41,19 +44,9 @@ Start VPP:
sudo start vpp
-Install JVpp into local maven repository to make hc2vpp pick up the same JVpp version
-
-[subs="+attributes"]
- cd build-vpp-native/vpp-api/java/
- mvn install:install-file -Dfile=jvpp-registry-{project-vpp-version}.jar -DgroupId=io.fd.vpp -DartifactId=jvpp-registry -Dversion={project-vpp-snapshot-version} -Dpackaging=jar
- mvn install:install-file -Dfile=jvpp-core-{project-vpp-version}.jar -DgroupId=io.fd.vpp -DartifactId=jvpp-core -Dversion={project-vpp-snapshot-version}-Dpackaging=jar
- cd ../../plugins/nat-plugin/
- mvn install:install-file -Dfile=jvpp-nat-{project-nat-version}.jar -DgroupId=io.fd.vpp -DartifactId=jvpp-nat -Dversion={project-nat-snapshot-version} -Dpackaging=jar
-
Now current Vpp is up and running and prepared for integration with HC.
=== Building hc2vpp
-Now hc2vpp can be built and it will use latest JVpp produced during VPP build.
==== Setup settings.xml
Put the following in your ~/.m2/settings.xml:
@@ -167,6 +160,28 @@ Put the following in your ~/.m2/settings.xml:
</settings>
----
+
+==== Installing JVpp jars
+
+By default hc2vpp build downloads latest JVpp jars from nexus.fd.io.
+They might not be compatible with installed VPP (e.g. in case of non-backward compatible VPP API changes).
+
+In order to prevent API mismatch it is required to use JVpp version corresponding to the VPP installed.
+
+Use
+
+[subs="+attributes"]
+ ./hc2vpp/jvpp/install_from_vpp_build_dir.sh
+
+to install JVpp jars produced during VPP build.
+
+If vpp-api-java package is installed, use:
+
+[subs="+attributes"]
+ ./hc2vpp/jvpp/install_from_package.sh
+
+Now hc2vpp can be built and it will use compatible JVpp artifacts.
+
==== Building hc2vpp
cd hc2vpp/