The pki CLI has been modified to use the java.ext.dirs property to load the dependencies instead of listing them one-by-one. The dependencies are stored as links in /usr/share/pki/lib folder. This allows the RPM spec to customize the links for different platforms.
https://fedorahosted.org/pki/ticket/2403 -- Endi S. Dewata
>From 7c13f90b3f6addc36a65bc3f593382f87cf95b3a Mon Sep 17 00:00:00 2001 From: "Endi S. Dewata" <[email protected]> Date: Thu, 21 Jul 2016 05:08:25 +0200 Subject: [PATCH] Removed hard-coded paths in pki CLI. The pki CLI has been modified to use the java.ext.dirs property to load the dependencies instead of listing them one-by-one. The dependencies are stored as links in /usr/share/pki/lib folder. This allows the RPM spec to customize the links for different platforms. https://fedorahosted.org/pki/ticket/2403 --- base/common/CMakeLists.txt | 45 ++++++++++++++++++++++++++++++++++++++++++ base/common/share/etc/pki.conf | 3 +++ base/java-tools/bin/pki | 43 ++++------------------------------------ 3 files changed, 52 insertions(+), 39 deletions(-) diff --git a/base/common/CMakeLists.txt b/base/common/CMakeLists.txt index 121392512de0b4695c5508fa432bca4f18d167cf..dc5cecf8590f3d5c18afdcf6f5c3b8d73495d45b 100644 --- a/base/common/CMakeLists.txt +++ b/base/common/CMakeLists.txt @@ -11,6 +11,51 @@ configure_file( ${CMAKE_CURRENT_BINARY_DIR}/etc/pki.conf ) +# Create /usr/share/pki/lib. This can be customized for different platforms in RPM spec. + +add_custom_target(pki-lib ALL) + +add_custom_command( + TARGET pki-lib + COMMAND ${CMAKE_COMMAND} -E make_directory lib + COMMAND ${CMAKE_COMMAND} -E create_symlink /usr/share/java/commons-cli.jar lib/commons-cli.jar + COMMAND ${CMAKE_COMMAND} -E create_symlink /usr/share/java/commons-codec.jar lib/commons-codec.jar + COMMAND ${CMAKE_COMMAND} -E create_symlink /usr/share/java/commons-httpclient.jar lib/commons-httpclient.jar + COMMAND ${CMAKE_COMMAND} -E create_symlink /usr/share/java/commons-io.jar lib/commons-io.jar + COMMAND ${CMAKE_COMMAND} -E create_symlink /usr/share/java/commons-lang.jar lib/commons-lang.jar + COMMAND ${CMAKE_COMMAND} -E create_symlink /usr/share/java/commons-logging.jar lib/commons-logging.jar + COMMAND ${CMAKE_COMMAND} -E create_symlink /usr/share/java/httpcomponents/httpclient.jar lib/httpclient.jar + COMMAND ${CMAKE_COMMAND} -E create_symlink /usr/share/java/httpcomponents/httpcore.jar lib/httpcore.jar + COMMAND ${CMAKE_COMMAND} -E create_symlink /usr/share/java/jackson/jackson-core-asl.jar lib/jackson-core-asl.jar + COMMAND ${CMAKE_COMMAND} -E create_symlink /usr/share/java/jackson/jackson-jaxrs.jar lib/jackson-jaxrs.jar + COMMAND ${CMAKE_COMMAND} -E create_symlink /usr/share/java/jackson/jackson-mapper-asl.jar lib/jackson-mapper-asl.jar + COMMAND ${CMAKE_COMMAND} -E create_symlink /usr/share/java/jackson/jackson-mrbean.jar lib/jackson-mrbean.jar + COMMAND ${CMAKE_COMMAND} -E create_symlink /usr/share/java/jackson/jackson-smile.jar lib/jackson-smile.jar + COMMAND ${CMAKE_COMMAND} -E create_symlink /usr/share/java/jackson/jackson-xc.jar lib/jackson-xc.jar + COMMAND ${CMAKE_COMMAND} -E create_symlink /usr/share/java/jaxb-api.jar lib/jaxb-api.jar + COMMAND ${CMAKE_COMMAND} -E create_symlink /usr/lib/java/jss4.jar lib/jss4.jar + COMMAND ${CMAKE_COMMAND} -E create_symlink /usr/share/java/ldapjdk.jar lib/ldapjdk.jar + COMMAND ${CMAKE_COMMAND} -E create_symlink /usr/share/java/pki/pki-certsrv.jar lib/pki-certsrv.jar + COMMAND ${CMAKE_COMMAND} -E create_symlink /usr/share/java/pki/pki-cmsutil.jar lib/pki-cmsutil.jar + COMMAND ${CMAKE_COMMAND} -E create_symlink /usr/share/java/pki/pki-nsutil.jar lib/pki-nsutil.jar + COMMAND ${CMAKE_COMMAND} -E create_symlink /usr/share/java/pki/pki-tools.jar lib/pki-tools.jar + COMMAND ${CMAKE_COMMAND} -E create_symlink ${RESTEASY_LIB}/resteasy-atom-provider.jar lib/resteasy-atom-provider.jar + COMMAND ${CMAKE_COMMAND} -E create_symlink ${RESTEASY_LIB}/resteasy-client.jar lib/resteasy-client.jar + COMMAND ${CMAKE_COMMAND} -E create_symlink ${RESTEASY_LIB}/resteasy-jackson-provider.jar lib/resteasy-jackson-provider.jar + COMMAND ${CMAKE_COMMAND} -E create_symlink ${RESTEASY_LIB}/resteasy-jaxb-provider.jar lib/resteasy-jaxb-provider.jar + COMMAND ${CMAKE_COMMAND} -E create_symlink ${RESTEASY_LIB}/jaxrs-api.jar lib/resteasy-jaxrs-api.jar + COMMAND ${CMAKE_COMMAND} -E create_symlink ${RESTEASY_LIB}/resteasy-jaxrs-jandex.jar lib/resteasy-jaxrs-jandex.jar + COMMAND ${CMAKE_COMMAND} -E create_symlink ${RESTEASY_LIB}/resteasy-jaxrs.jar lib/resteasy-jaxrs.jar + COMMAND ${CMAKE_COMMAND} -E create_symlink /usr/share/java/servlet.jar lib/servlet.jar +) + +install( + DIRECTORY + ${CMAKE_CURRENT_BINARY_DIR}/lib/ + DESTINATION + ${DATA_INSTALL_DIR}/lib +) + install( FILES ${CMAKE_CURRENT_SOURCE_DIR}/share/etc/logging.properties diff --git a/base/common/share/etc/pki.conf b/base/common/share/etc/pki.conf index f43d9148c614d8f5ed3b288e02942910d5104807..97f3777fed9d2b5274a4fb305c81234900857a88 100644 --- a/base/common/share/etc/pki.conf +++ b/base/common/share/etc/pki.conf @@ -4,5 +4,8 @@ JAVA_HOME=${JAVA_HOME} # JNI jar file location JNI_JAR_DIR=/usr/lib/java +# PKI library +PKI_LIB=/usr/share/pki/lib + # logging configuration location LOGGING_CONFIG=/usr/share/pki/etc/logging.properties diff --git a/base/java-tools/bin/pki b/base/java-tools/bin/pki index c1ba34ead0466e43e2376343de724a168b0c3cf1..ba321be9698b385d2c726c8930f079663089ab6d 100644 --- a/base/java-tools/bin/pki +++ b/base/java-tools/bin/pki @@ -76,11 +76,11 @@ class PKICLI(pki.cli.CLI): shell=True) java_home = value.decode(sys.getfilesystemencoding()).strip() - # read RESTEasy library path + # read PKI library value = subprocess.check_output( - '. /usr/share/pki/etc/pki.conf && . /etc/pki/pki.conf && echo $RESTEASY_LIB', + '. /usr/share/pki/etc/pki.conf && . /etc/pki/pki.conf && echo $PKI_LIB', shell=True) - resteasy_lib = value.decode(sys.getfilesystemencoding()).strip() + pki_lib = value.decode(sys.getfilesystemencoding()).strip() # read logging configuration path value = subprocess.check_output( @@ -88,44 +88,9 @@ class PKICLI(pki.cli.CLI): shell=True) logging_config = value.decode(sys.getfilesystemencoding()).strip() - # construct classpath - classpath = [ - '/usr/share/java/commons-cli.jar', - '/usr/share/java/commons-codec.jar', - '/usr/share/java/commons-httpclient.jar', - '/usr/share/java/commons-io.jar', - '/usr/share/java/commons-lang.jar', - '/usr/share/java/commons-logging.jar', - '/usr/share/java/httpcomponents/httpclient.jar', - '/usr/share/java/httpcomponents/httpcore.jar', - '/usr/share/java/jackson/jackson-core-asl.jar', - '/usr/share/java/jackson/jackson-jaxrs.jar', - '/usr/share/java/jackson/jackson-mapper-asl.jar', - '/usr/share/java/jackson/jackson-mrbean.jar', - '/usr/share/java/jackson/jackson-smile.jar', - '/usr/share/java/jackson/jackson-xc.jar', - '/usr/share/java/jaxb-api.jar', - '/usr/share/java/ldapjdk.jar', - '/usr/share/java/servlet.jar', - resteasy_lib + '/jaxrs-api.jar', - resteasy_lib + '/resteasy-atom-provider.jar', - resteasy_lib + '/resteasy-client.jar', - resteasy_lib + '/resteasy-jaxb-provider.jar', - resteasy_lib + '/resteasy-jaxrs.jar', - resteasy_lib + '/resteasy-jaxrs-jandex.jar', - resteasy_lib + '/resteasy-jackson-provider.jar', - '/usr/share/java/pki/pki-nsutil.jar', - '/usr/share/java/pki/pki-cmsutil.jar', - '/usr/share/java/pki/pki-certsrv.jar', - '/usr/share/java/pki/pki-tools.jar', - '/usr/lib64/java/jss4.jar', - '/usr/lib/java/jss4.jar' - ] - cmd = [ java_home + '/bin/java', - '-cp', - ':'.join(classpath), + '-Djava.ext.dirs=' + pki_lib, '-Djava.util.logging.config.file=' + logging_config, 'com.netscape.cmstools.cli.MainCLI' ] -- 2.5.5
>From 1425bc3b420066586e40a71c7e4cd29f14958ebf Mon Sep 17 00:00:00 2001 From: "Endi S. Dewata" <[email protected]> Date: Sat, 23 Jul 2016 01:48:27 +0200 Subject: [PATCH] RPM spec changes for removing hard-coded paths in pki CLI. https://fedorahosted.org/pki/ticket/2403 --- specs/pki-core.spec | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/specs/pki-core.spec b/specs/pki-core.spec index 9faaf14637b21877c00ec1f080468ed14717e711..cd3488143e050a353e34b887cdce9c52cfd21f3d 100644 --- a/specs/pki-core.spec +++ b/specs/pki-core.spec @@ -35,9 +35,16 @@ # RESTEasy %if 0%{?rhel} +%define jaxrs_api_jar /usr/share/java/resteasy-base/jaxrs-api.jar %define resteasy_lib /usr/share/java/resteasy-base %else +%if 0%{?fedora} >= 25 +%define jaxrs_api_jar /usr/share/java/jboss-jaxrs-2.0-api.jar %define resteasy_lib /usr/share/java/resteasy +%else +%define jaxrs_api_jar /usr/share/java/resteasy/jaxrs-api.jar +%define resteasy_lib /usr/share/java/resteasy +%endif %endif # Dogtag @@ -107,6 +114,9 @@ BuildRequires: resteasy-base-jaxrs-api >= 3.0.6-1 BuildRequires: resteasy-base-jackson-provider >= 3.0.6-1 %else %if 0%{?fedora} >= 25 +BuildRequires: jboss-annotations-1.2-api +BuildRequires: jboss-jaxrs-2.0-api +BuildRequires: jboss-logging BuildRequires: resteasy-atom-provider >= 3.0.17-1 BuildRequires: resteasy-client >= 3.0.17-1 BuildRequires: resteasy-jaxb-provider >= 3.0.17-1 @@ -799,6 +809,7 @@ cd build %if ! %{with_tomcat8} -DWITH_TOMCAT8:BOOL=OFF \ %endif + -DJAXRS_API_JAR=%{jaxrs_api_jar} \ -DRESTEASY_LIB=%{resteasy_lib} \ %if ! %{with server} -DWITH_SERVER:BOOL=OFF \ @@ -844,6 +855,33 @@ ln -s %{_datadir}/pki/java-tools/KRATool.cfg %{buildroot}%{_datadir}/pki/java-to %if %{with server} +# Customize symlinks for each platform +%if 0%{?fedora} >= 25 + # /usr/share/pki/lib + rm -f %{buildroot}%{_datadir}/pki/lib/scannotation.jar + rm -f %{buildroot}%{_datadir}/pki/lib/resteasy-jaxrs-api.jar + rm -f %{buildroot}%{_datadir}/pki/lib/resteasy-jaxrs-jandex.jar + ln -sf %{jaxrs_api_jar} %{buildroot}%{_datadir}/pki/lib/jboss-jaxrs-2.0-api.jar + ln -sf /usr/share/java/jboss-logging/jboss-logging.jar %{buildroot}%{_datadir}/pki/lib/jboss-logging.jar + ln -sf /usr/share/java/jboss-annotations-1.2-api/jboss-annotations-api_1.2_spec.jar %{buildroot}%{_datadir}/pki/lib/jboss-annotations-api_1.2_spec.jar + +%else + +if [ -f /etc/debian_version ]; then + # /usr/share/pki/lib + ln -sf /usr/share/java/httpclient.jar %{buildroot}%{_datadir}/pki/lib/httpclient.jar + ln -sf /usr/share/java/httpcore.jar %{buildroot}%{_datadir}/pki/lib/httpcore.jar + ln -sf /usr/share/java/jackson-core-asl.jar %{buildroot}%{_datadir}/pki/lib/jackson-core-asl.jar + ln -sf /usr/share/java/jackson-jaxrs.jar %{buildroot}%{_datadir}/pki/lib/jackson-jaxrs.jar + ln -sf /usr/share/java/jackson-mapper-asl.jar %{buildroot}%{_datadir}/pki/lib/jackson-mapper-asl.jar + ln -sf /usr/share/java/jackson-mrbean.jar %{buildroot}%{_datadir}/pki/lib/jackson-mrbean.jar + ln -sf /usr/share/java/jackson-smile.jar %{buildroot}%{_datadir}/pki/lib/jackson-smile.jar + ln -sf /usr/share/java/jackson-xc.jar %{buildroot}%{_datadir}/pki/lib/jackson-xc.jar + ln -sf /usr/share/java/jss4.jar %{buildroot}%{_datadir}/pki/lib/jss4.jar +fi + +%endif + %if ! 0%{?rhel} # Scanning the python code with pylint. %{__python2} ../pylint-build-scan.py rpm --prefix %{buildroot} @@ -1001,6 +1039,7 @@ systemctl daemon-reload %if 0%{?package_fedora_packages} || 0%{?package_rhel_packages} %files -n pki-base-java +%{_datadir}/pki/lib/ %dir %{_javadir}/pki %{_javadir}/pki/pki-cmsutil.jar %{_javadir}/pki/pki-nsutil.jar -- 2.5.5
_______________________________________________ Pki-devel mailing list [email protected] https://www.redhat.com/mailman/listinfo/pki-devel
