From b3e5b57857481c5c14edd7da77a4032fa755be13 Mon Sep 17 00:00:00 2001 From: "Endi S. Dewata" Date: Mon, 1 Jul 2024 18:40:14 -0500 Subject: [PATCH] Add support for bundling Jackson The RPM spec has been updated such that by default it will bundle Jackson library. --- Dockerfile | 2 +- base/CMakeLists.txt | 117 ++++++++++++++++++++++++------------- base/common/CMakeLists.txt | 12 ++-- pki.spec | 57 +++++++++++++++++- 4 files changed, 141 insertions(+), 47 deletions(-) diff --git a/Dockerfile b/Dockerfile index cc87b832991..10b58555844 100644 --- a/Dockerfile +++ b/Dockerfile @@ -34,7 +34,7 @@ RUN if [ -n "$COPR_REPO" ]; then dnf copr enable -y $COPR_REPO; fi # Install PKI runtime dependencies RUN dnf install -y dogtag-pki \ - && rpm -e --nodeps $(rpm -qa | grep -E "^java-|^dogtag-|^python3-dogtag-|^pki-resteasy-|^jboss-logging-|^jboss-jaxrs-2.0-api-") \ + && rpm -e --nodeps $(rpm -qa | grep -E "^java-|^dogtag-|^python3-dogtag-|^pki-resteasy-|^jboss-logging-|^jboss-jaxrs-2.0-api-|^jackson-") \ && dnf clean all \ && rm -rf /var/cache/dnf diff --git a/base/CMakeLists.txt b/base/CMakeLists.txt index 62fea75e0b2..4c650b2441b 100644 --- a/base/CMakeLists.txt +++ b/base/CMakeLists.txt @@ -126,50 +126,89 @@ find_file(HTTPCORE_JAR /usr/share/java ) -find_file(JACKSON_CORE_JAR - NAMES - jackson-core.jar - PATHS - /usr/share/java -) +if (EXISTS "${CMAKE_SOURCE_DIR}/lib") + # use imported JARs -find_file(JACKSON_DATABIND_JAR - NAMES - jackson-databind.jar - PATHS - /usr/share/java -) + execute_process( + COMMAND ls ${CMAKE_SOURCE_DIR}/lib + COMMAND sed -n "s/^jackson-annotations-\\(.*\\)\\.jar\$/\\1/p" + OUTPUT_STRIP_TRAILING_WHITESPACE + OUTPUT_VARIABLE JACKSON_VERSION + ) + message("JACKSON_VERSION: ${JACKSON_VERSION}") -find_file(JACKSON_ANNOTATIONS_JAR - NAMES - jackson-annotations.jar - PATHS - /usr/share/java -) + set(JACKSON_ANNOTATIONS_JAR "${CMAKE_SOURCE_DIR}/lib/jackson-annotations-${JACKSON_VERSION}.jar") + set(JACKSON_ANNOTATIONS_LINK "jackson-annotations-${JACKSON_VERSION}.jar") -find_file(JACKSON_JAXRS_BASE_JAR - NAMES - jackson-jaxrs-base.jar - PATHS - /usr/share/java/jackson-jaxrs-providers - /usr/share/java -) + set(JACKSON_CORE_JAR "${CMAKE_SOURCE_DIR}/lib/jackson-core-${JACKSON_VERSION}.jar") + set(JACKSON_CORE_LINK "jackson-core-${JACKSON_VERSION}.jar") -find_file(JACKSON_JAXRS_JSON_PROVIDER_JAR - NAMES - jackson-jaxrs-json-provider.jar - PATHS - /usr/share/java/jackson-jaxrs-providers - /usr/share/java -) + set(JACKSON_DATABIND_JAR "${CMAKE_SOURCE_DIR}/lib/jackson-databind-${JACKSON_VERSION}.jar") + set(JACKSON_DATABIND_LINK "jackson-databind-${JACKSON_VERSION}.jar") -find_file(JACKSON_MODULE_JAXB_ANNOTATIONS_JAR - NAMES - jackson-module-jaxb-annotations.jar - PATHS - /usr/share/java/jackson-modules - /usr/share/java -) + set(JACKSON_JAXRS_BASE_JAR "${CMAKE_SOURCE_DIR}/lib/jackson-jaxrs-base-${JACKSON_VERSION}.jar") + set(JACKSON_JAXRS_BASE_LINK "jackson-jaxrs-base-${JACKSON_VERSION}.jar") + + set(JACKSON_JAXRS_JSON_PROVIDER_JAR "${CMAKE_SOURCE_DIR}/lib/jackson-jaxrs-json-provider-${JACKSON_VERSION}.jar") + set(JACKSON_JAXRS_JSON_PROVIDER_LINK "jackson-jaxrs-json-provider-${JACKSON_VERSION}.jar") + + set(JACKSON_MODULE_JAXB_ANNOTATIONS_JAR "${CMAKE_SOURCE_DIR}/lib/jackson-module-jaxb-annotations-${JACKSON_VERSION}.jar") + set(JACKSON_MODULE_JAXB_ANNOTATIONS_LINK "jackson-module-jaxb-annotations-${JACKSON_VERSION}.jar") + +else() + # use system JARs + + find_file(JACKSON_ANNOTATIONS_JAR + NAMES + jackson-annotations.jar + PATHS + /usr/share/java + ) + set(JACKSON_ANNOTATIONS_LINK "../../../..${JACKSON_ANNOTATIONS_JAR}") + + find_file(JACKSON_CORE_JAR + NAMES + jackson-core.jar + PATHS + /usr/share/java + ) + set(JACKSON_CORE_LINK "../../../..${JACKSON_CORE_JAR}") + + find_file(JACKSON_DATABIND_JAR + NAMES + jackson-databind.jar + PATHS + /usr/share/java + ) + set(JACKSON_DATABIND_LINK "../../../..${JACKSON_DATABIND_JAR}") + + find_file(JACKSON_JAXRS_BASE_JAR + NAMES + jackson-jaxrs-base.jar + PATHS + /usr/share/java/jackson-jaxrs-providers + /usr/share/java + ) + set(JACKSON_JAXRS_BASE_LINK "../../../..${JACKSON_JAXRS_BASE_JAR}") + + find_file(JACKSON_JAXRS_JSON_PROVIDER_JAR + NAMES + jackson-jaxrs-json-provider.jar + PATHS + /usr/share/java/jackson-jaxrs-providers + /usr/share/java + ) + set(JACKSON_JAXRS_JSON_PROVIDER_LINK "../../../..${JACKSON_JAXRS_JSON_PROVIDER_JAR}") + + find_file(JACKSON_MODULE_JAXB_ANNOTATIONS_JAR + NAMES + jackson-module-jaxb-annotations.jar + PATHS + /usr/share/java/jackson-modules + /usr/share/java + ) + set(JACKSON_MODULE_JAXB_ANNOTATIONS_LINK "../../../..${JACKSON_MODULE_JAXB_ANNOTATIONS_JAR}") +endif (EXISTS "${CMAKE_SOURCE_DIR}/lib") execute_process( COMMAND awk -F= "$1==\"ID\" { print $2 ;}" /etc/os-release diff --git a/base/common/CMakeLists.txt b/base/common/CMakeLists.txt index e9a6ac2e1ad..08b5dcd5f4e 100644 --- a/base/common/CMakeLists.txt +++ b/base/common/CMakeLists.txt @@ -124,12 +124,12 @@ add_custom_command( COMMAND ln -sf ../../../..${COMMONS_NET_JAR} lib/commons-net.jar COMMAND ln -sf ../../../..${HTTPCLIENT_JAR} lib/httpclient.jar COMMAND ln -sf ../../../..${HTTPCORE_JAR} lib/httpcore.jar - COMMAND ln -sf ../../../..${JACKSON_ANNOTATIONS_JAR} lib/jackson-annotations.jar - COMMAND ln -sf ../../../..${JACKSON_CORE_JAR} lib/jackson-core.jar - COMMAND ln -sf ../../../..${JACKSON_DATABIND_JAR} lib/jackson-databind.jar - COMMAND ln -sf ../../../..${JACKSON_JAXRS_BASE_JAR} lib/jackson-jaxrs-base.jar - COMMAND ln -sf ../../../..${JACKSON_JAXRS_JSON_PROVIDER_JAR} lib/jackson-jaxrs-json-provider.jar - COMMAND ln -sf ../../../..${JACKSON_MODULE_JAXB_ANNOTATIONS_JAR} lib/jackson-module-jaxb-annotations.jar + COMMAND ln -sf ${JACKSON_ANNOTATIONS_LINK} lib/jackson-annotations.jar + COMMAND ln -sf ${JACKSON_CORE_LINK} lib/jackson-core.jar + COMMAND ln -sf ${JACKSON_DATABIND_LINK} lib/jackson-databind.jar + COMMAND ln -sf ${JACKSON_JAXRS_BASE_LINK} lib/jackson-jaxrs-base.jar + COMMAND ln -sf ${JACKSON_JAXRS_JSON_PROVIDER_LINK} lib/jackson-jaxrs-json-provider.jar + COMMAND ln -sf ${JACKSON_MODULE_JAXB_ANNOTATIONS_LINK} lib/jackson-module-jaxb-annotations.jar COMMAND ln -sf ../../../..${JAVAX_ACTIVATION_JAR} lib/javax.activation.jar COMMAND ln -sf ../../../..${JAVAX_ANNOTATIONS_API_JAR} lib/javax.annotations-api.jar COMMAND ln -sf ../../../..${JAXB_API_JAR} lib/jaxb-api.jar diff --git a/pki.spec b/pki.spec index 6725f80fb7d..026d388b14b 100644 --- a/pki.spec +++ b/pki.spec @@ -456,12 +456,12 @@ Requires: mvn(org.slf4j:slf4j-api) Requires: mvn(org.slf4j:slf4j-jdk14) Requires: mvn(jakarta.annotation:jakarta.annotation-api) +%if %{without deps} Requires: mvn(com.fasterxml.jackson.core:jackson-annotations) Requires: mvn(com.fasterxml.jackson.core:jackson-core) Requires: mvn(com.fasterxml.jackson.core:jackson-databind) Requires: mvn(com.fasterxml.jackson.jaxrs:jackson-jaxrs-json-provider) -%if %{without deps} Requires: mvn(org.jboss.resteasy:resteasy-client) Requires: mvn(org.jboss.resteasy:resteasy-jackson2-provider) Requires: mvn(org.jboss.resteasy:resteasy-jaxrs) @@ -917,6 +917,22 @@ if [ ! -d lib ] then mkdir lib + JACKSON_VERSION=$(rpm -q jackson-annotations | sed -n 's/^jackson-annotations-\([^-]*\)-.*$/\1/p') + echo "Importing Jackson $JACKSON_VERSION from RPM" + + cp /usr/share/java/jackson-annotations.jar \ + lib/jackson-annotations-$JACKSON_VERSION.jar + cp /usr/share/java/jackson-core.jar \ + lib/jackson-core-$JACKSON_VERSION.jar + cp /usr/share/java/jackson-databind.jar \ + lib/jackson-databind-$JACKSON_VERSION.jar + cp /usr/share/java/jackson-jaxrs-providers/jackson-jaxrs-base.jar \ + lib/jackson-jaxrs-base-$JACKSON_VERSION.jar + cp /usr/share/java/jackson-jaxrs-providers/jackson-jaxrs-json-provider.jar \ + lib/jackson-jaxrs-json-provider-$JACKSON_VERSION.jar + cp /usr/share/java/jackson-modules/jackson-module-jaxb-annotations.jar \ + lib/jackson-module-jaxb-annotations-$JACKSON_VERSION.jar + JAXRS_VERSION=$(rpm -q jboss-jaxrs-2.0-api | sed -n 's/^jboss-jaxrs-2.0-api-\([^-]*\)-.*$/\1.Final/p') echo "Importing JAX-RS 2.0 API $JAXRS_VERSION from RPM" @@ -1187,6 +1203,9 @@ pkgs=base\ %if %{with meta} echo "Removing RPM deps from %{buildroot}%{_datadir}/maven-metadata/pki.xml" xmlstarlet edit --inplace \ + -d "//_:dependency[_:groupId='com.fasterxml.jackson.core']" \ + -d "//_:dependency[_:groupId='com.fasterxml.jackson.module']" \ + -d "//_:dependency[_:groupId='com.fasterxml.jackson.jaxrs']" \ -d "//_:dependency[_:groupId='org.jboss.spec.javax.ws.rs']" \ -d "//_:dependency[_:groupId='org.jboss.logging']" \ -d "//_:dependency[_:groupId='org.jboss.resteasy']" \ @@ -1195,6 +1214,12 @@ xmlstarlet edit --inplace \ %if %{with base} echo "Installing JAR deps into %{buildroot}%{_datadir}/pki/lib" +cp lib/jackson-annotations-*.jar %{buildroot}%{_datadir}/pki/lib +cp lib/jackson-core-*.jar %{buildroot}%{_datadir}/pki/lib +cp lib/jackson-databind-*.jar %{buildroot}%{_datadir}/pki/lib +cp lib/jackson-jaxrs-base-*.jar %{buildroot}%{_datadir}/pki/lib +cp lib/jackson-jaxrs-json-provider-*.jar %{buildroot}%{_datadir}/pki/lib +cp lib/jackson-module-jaxb-annotations-*.jar %{buildroot}%{_datadir}/pki/lib cp lib/jboss-jaxrs-2.0-api-*.jar %{buildroot}%{_datadir}/pki/lib cp lib/jboss-logging-*.jar %{buildroot}%{_datadir}/pki/lib cp lib/resteasy-jaxrs-*.jar %{buildroot}%{_datadir}/pki/lib @@ -1204,6 +1229,9 @@ ls -l %{buildroot}%{_datadir}/pki/lib echo "Removing RPM deps from %{buildroot}%{_datadir}/maven-metadata/pki-pki-java.xml" xmlstarlet edit --inplace \ + -d "//_:dependency[_:groupId='com.fasterxml.jackson.core']" \ + -d "//_:dependency[_:groupId='com.fasterxml.jackson.module']" \ + -d "//_:dependency[_:groupId='com.fasterxml.jackson.jaxrs']" \ -d "//_:dependency[_:groupId='org.jboss.spec.javax.ws.rs']" \ -d "//_:dependency[_:groupId='org.jboss.logging']" \ -d "//_:dependency[_:groupId='org.jboss.resteasy']" \ @@ -1211,6 +1239,9 @@ xmlstarlet edit --inplace \ echo "Removing RPM deps from %{buildroot}%{_datadir}/maven-metadata/pki-pki-tools.xml" xmlstarlet edit --inplace \ + -d "//_:dependency[_:groupId='com.fasterxml.jackson.core']" \ + -d "//_:dependency[_:groupId='com.fasterxml.jackson.module']" \ + -d "//_:dependency[_:groupId='com.fasterxml.jackson.jaxrs']" \ -d "//_:dependency[_:groupId='org.jboss.spec.javax.ws.rs']" \ -d "//_:dependency[_:groupId='org.jboss.logging']" \ -d "//_:dependency[_:groupId='org.jboss.resteasy']" \ @@ -1224,6 +1255,9 @@ ls -l %{buildroot}%{_datadir}/pki/server/common/lib echo "Removing RPM deps from %{buildroot}%{_datadir}/maven-metadata/pki-pki-server.xml" xmlstarlet edit --inplace \ + -d "//_:dependency[_:groupId='com.fasterxml.jackson.core']" \ + -d "//_:dependency[_:groupId='com.fasterxml.jackson.module']" \ + -d "//_:dependency[_:groupId='com.fasterxml.jackson.jaxrs']" \ -d "//_:dependency[_:groupId='org.jboss.spec.javax.ws.rs']" \ -d "//_:dependency[_:groupId='org.jboss.logging']" \ -d "//_:dependency[_:groupId='org.jboss.resteasy']" \ @@ -1233,6 +1267,9 @@ xmlstarlet edit --inplace \ %if %{with ca} echo "Removing RPM deps from %{buildroot}%{_datadir}/maven-metadata/pki-pki-ca.xml" xmlstarlet edit --inplace \ + -d "//_:dependency[_:groupId='com.fasterxml.jackson.core']" \ + -d "//_:dependency[_:groupId='com.fasterxml.jackson.module']" \ + -d "//_:dependency[_:groupId='com.fasterxml.jackson.jaxrs']" \ -d "//_:dependency[_:groupId='org.jboss.spec.javax.ws.rs']" \ -d "//_:dependency[_:groupId='org.jboss.logging']" \ -d "//_:dependency[_:groupId='org.jboss.resteasy']" \ @@ -1242,6 +1279,9 @@ xmlstarlet edit --inplace \ %if %{with kra} echo "Removing RPM deps from %{buildroot}%{_datadir}/maven-metadata/pki-pki-kra.xml" xmlstarlet edit --inplace \ + -d "//_:dependency[_:groupId='com.fasterxml.jackson.core']" \ + -d "//_:dependency[_:groupId='com.fasterxml.jackson.module']" \ + -d "//_:dependency[_:groupId='com.fasterxml.jackson.jaxrs']" \ -d "//_:dependency[_:groupId='org.jboss.spec.javax.ws.rs']" \ -d "//_:dependency[_:groupId='org.jboss.logging']" \ -d "//_:dependency[_:groupId='org.jboss.resteasy']" \ @@ -1251,6 +1291,9 @@ xmlstarlet edit --inplace \ %if %{with ocsp} echo "Removing RPM deps from %{buildroot}%{_datadir}/maven-metadata/pki-pki-ocsp.xml" xmlstarlet edit --inplace \ + -d "//_:dependency[_:groupId='com.fasterxml.jackson.core']" \ + -d "//_:dependency[_:groupId='com.fasterxml.jackson.module']" \ + -d "//_:dependency[_:groupId='com.fasterxml.jackson.jaxrs']" \ -d "//_:dependency[_:groupId='org.jboss.spec.javax.ws.rs']" \ -d "//_:dependency[_:groupId='org.jboss.logging']" \ -d "//_:dependency[_:groupId='org.jboss.resteasy']" \ @@ -1260,6 +1303,9 @@ xmlstarlet edit --inplace \ %if %{with tks} echo "Removing RPM deps from %{buildroot}%{_datadir}/maven-metadata/pki-pki-tks.xml" xmlstarlet edit --inplace \ + -d "//_:dependency[_:groupId='com.fasterxml.jackson.core']" \ + -d "//_:dependency[_:groupId='com.fasterxml.jackson.module']" \ + -d "//_:dependency[_:groupId='com.fasterxml.jackson.jaxrs']" \ -d "//_:dependency[_:groupId='org.jboss.spec.javax.ws.rs']" \ -d "//_:dependency[_:groupId='org.jboss.logging']" \ -d "//_:dependency[_:groupId='org.jboss.resteasy']" \ @@ -1269,6 +1315,9 @@ xmlstarlet edit --inplace \ %if %{with tps} echo "Removing RPM deps from %{buildroot}%{_datadir}/maven-metadata/pki-pki-tps.xml" xmlstarlet edit --inplace \ + -d "//_:dependency[_:groupId='com.fasterxml.jackson.core']" \ + -d "//_:dependency[_:groupId='com.fasterxml.jackson.module']" \ + -d "//_:dependency[_:groupId='com.fasterxml.jackson.jaxrs']" \ -d "//_:dependency[_:groupId='org.jboss.spec.javax.ws.rs']" \ -d "//_:dependency[_:groupId='org.jboss.logging']" \ -d "//_:dependency[_:groupId='org.jboss.resteasy']" \ @@ -1278,6 +1327,9 @@ xmlstarlet edit --inplace \ %if %{with acme} echo "Removing RPM deps from %{buildroot}%{_datadir}/maven-metadata/pki-pki-acme.xml" xmlstarlet edit --inplace \ + -d "//_:dependency[_:groupId='com.fasterxml.jackson.core']" \ + -d "//_:dependency[_:groupId='com.fasterxml.jackson.module']" \ + -d "//_:dependency[_:groupId='com.fasterxml.jackson.jaxrs']" \ -d "//_:dependency[_:groupId='org.jboss.spec.javax.ws.rs']" \ -d "//_:dependency[_:groupId='org.jboss.logging']" \ -d "//_:dependency[_:groupId='org.jboss.resteasy']" \ @@ -1287,6 +1339,9 @@ xmlstarlet edit --inplace \ %if %{with est} echo "Removing RPM deps from %{buildroot}%{_datadir}/maven-metadata/pki-pki-est.xml" xmlstarlet edit --inplace \ + -d "//_:dependency[_:groupId='com.fasterxml.jackson.core']" \ + -d "//_:dependency[_:groupId='com.fasterxml.jackson.module']" \ + -d "//_:dependency[_:groupId='com.fasterxml.jackson.jaxrs']" \ -d "//_:dependency[_:groupId='org.jboss.spec.javax.ws.rs']" \ -d "//_:dependency[_:groupId='org.jboss.logging']" \ -d "//_:dependency[_:groupId='org.jboss.resteasy']" \