Endi, Comments in-line. On 10/27/12 07:33, Endi Sukma Dewata wrote:
On 10/26/2012 7:06 PM, Matthew Harmsen wrote:
* The JNI 'symkey.jar' is a file and contains no embedded version in its name
Please take a look at the following code in base/symkey/src/CMakeLists.txt:
install( FILES ${CMAKE_BINARY_DIR}/dist/symkey.jar DESTINATION ${LIB_INSTALL_DIR}/symkey -- (A) )
'${LIB_INSTALL_DIR}' is defined in 'pki/cmake/Modules/DefineInstallationPaths.cmake' as '${EXEC_INSTALL_PREFIX}/lib${LIB_SUFFIX}' which basically places 'symkey.jar' into 'usr/lib/symkey' (32-bit) or 'usr/lib64/symkey' (64-bit) unless this is being somehow overridden by a newer version of cmake?
install( FILES ${CMAKE_BINARY_DIR}/dist/symkey.jar DESTINATION ${JAVA_LIB_INSTALL_DIR} -- (B) )
'${JAVA_LIB_INSTALL_DIR}' is defined in 'pki/cmake/Modules/DefineInstallationPaths.cmake' as '${CMAKE_INSTALL_PREFIX}/lib/java' which basically places 'symkey.jar' into 'usr/lib/java' (32-bit & 64-bit) unless this is being somehow overridden by a newer version of cmake?
and in pki-core.spec:
cd %{buildroot}%{_libdir}/symkey %if 0%{?fedora} >= 16 %{__rm} %{buildroot}%{_jnidir}/symkey.jar -- (C) %{__mv} symkey.jar %{buildroot}%{_jnidir}/symkey.jar -- (D) %else %{__rm} symkey.jar -- (E) %{__ln_s} symkey-%{version}.jar symkey.jar -- (F) %endif
For Fedora 16 and greater, this removes 'symkey.jar' on 32-bit and removes nothing on 64-bit systems, and moves symkey.jar under the appropriate 'usr/lib/java' (32-bit) and 'usr/lib64/java' (64-bit). This code block may not be necessary if we make the change I suggest below. As RHEL 5, RHEL 6, and Fedora 17 or less are not supported, and we are not yet certain of the RHEL 7 changes for JNI, I agree that the %else code block could be removed.
%if 0%{?rhel} || 0%{?fedora} < 16 cd %{buildroot}%{_jnidir} %{__rm} symkey.jar -- (G) %{__ln_s} %{_libdir}/symkey/symkey.jar symkey.jar -- (H) %endif
Since this code exists on the 'master', and RHEL 5, RHEL 6, and Fedora 15 or less are not supported, and we are not yet certain of the RHEL 7 changes for JNI, I agree that this code block could be removed.
Some observations:
1. In A and B the code installs symkey.jar in /usr/lib64/symkey and /usr/lib64/java, respectively. In C the symkey.jar is removed from /usr/lib64/java. In D the symkey.jar is moved from /usr/lib64/symkey to /usr/lib64/java. It seems that the code in A, C, and D is not needed since we have B.
2. The code in E & F doesn't seem to be needed anymore since we don't support anything before F16.
3. The code in G & H removes the symkey.jar in /usr/lib64/java and replaces it with a link to symkey.jar in /usr/lib64/symkey. This is not necessary since we have B.
If these are correct we probably can remove everything above except B.
Per my comments above, I think that we could remove everything above except B by making the following changes (I need to do test builds on 32-bit and 64-bit systems to prove this theory) from: install( FILES ${CMAKE_BINARY_DIR}/dist/symkey.jar DESTINATION *${JAVA_LIB_INSTALL_DIR}* -- (B) ) to: install( FILES ${CMAKE_BINARY_DIR}/dist/symkey.jar DESTINATION *${LIB_INSTALL_DIR}/java* -- (B) ) Do you agree with this approach?
Other than that the patch looks good, ACK.