Please review the attached patch which addresses the following PKI ticket:

 * PKI TRAC #2040 - Determine supported javadoc options
   <https://fedorahosted.org/pki/ticket/2040>

The patch has been tested successfully with the following four build scenarios:

   ...
   -- Java_VERSION_STRING = '1.7.0_95'
   -- Javac_VERSION_OUTPUT = 'javac 1.7.0_95'
   -- Javadoc_VERSION_MINOR = '7'
   ...
   ... /bin/javadoc ... -doctitle '<h1>PKI Javadoc</h1>' -author -use
   -version -sourcepath ...
   ...


   ...
   -- Java_VERSION_STRING = '1.7.0_95'
   -- Javac_VERSION_OUTPUT = 'javac 1.8.0_71'
   -- Javadoc_VERSION_MINOR = '8'
   ...
   ... /bin/javadoc ... -doctitle '<h1>PKI Javadoc</h1>' -author -use
   -version -Xdoclint:none -sourcepath ...
   ...


   ...
   -- Java_VERSION_STRING = '1.8.0_71'
   -- Javac_VERSION_OUTPUT = 'javac 1.7.0_95'
   -- Javadoc_VERSION_MINOR = '7'
   ...
   ... /bin/javadoc ... -doctitle '<h1>PKI Javadoc</h1>' -author -use
   -version -sourcepath ...
   ...


   ...
   -- Java_VERSION_STRING = '1.8.0_71'
   -- Javac_VERSION_OUTPUT = 'javac 1.8.0_71'
   -- Javadoc_VERSION_MINOR = '8'
   ...
   ... /bin/javadoc ... -doctitle '<h1>PKI Javadoc</h1>' -author -use
   -version -Xdoclint:none -sourcepath ...
   ...


From b6671be1d72ac60a21ce1e86d91d24c5015097dd Mon Sep 17 00:00:00 2001
From: Matthew Harmsen <mharm...@redhat.com>
Date: Thu, 18 Feb 2016 17:14:09 -0700
Subject: [PATCH] Fix to determine supported javadoc options

- PKI TRAC Ticket #2040 - Determine supported javadoc options
---
 base/javadoc/CMakeLists.txt | 57 +++++++++++++++++++++++++++++++++++++++++++--
 1 file changed, 55 insertions(+), 2 deletions(-)

diff --git a/base/javadoc/CMakeLists.txt b/base/javadoc/CMakeLists.txt
index fa524be..1d088bb 100644
--- a/base/javadoc/CMakeLists.txt
+++ b/base/javadoc/CMakeLists.txt
@@ -1,9 +1,62 @@
 project(pki-javadoc)
 
+# It is important to identify the version of 'javadoc' being utilized since
+# different versions support different options.
+#
+# While 'cmake' contains numerous built-in references to the 'java' version,
+# it contains no built-in references to either the 'javac' or 'javadoc'
+# versions, and unfortunately, the specified version of 'java' may be
+# different from the specified versions of 'javac' and 'javadoc'.
+#
+# Additionally, although 'javadoc' contains no command-line option to identify
+# its version, it is important to note that 'javadoc' is supplied by the same
+# package that supplies 'javac', and although multiple versions of these
+# executables could co-exist on the same system, it is relatively safe to
+# assert that the currently specified 'javac' and 'javadoc' will be the same
+# version.
+#
+# As an example in support of this assertion, on systems which utilize
+# '/usr/sbin/alternatives', setting the 'javac' version will also
+# automatically set the 'javadoc' version to match the 'javac' version, and
+# 'usr/sbin/alternatives' cannot be used to set a specific 'javadoc' version.
+#
+# Therefore, regardless of the 'java' version, this 'CMakeLists.txt' file will
+# programmatically utilize the invoked 'javac' version information (output is
+# to stderr) in order to correctly identify the supported 'javadoc' options:
+#
+#     # javac -version 2>&1 | awk -F \. '{printf $2}'
+#
+# NOTE:  Used 'cut' instead of 'awk' due to 'cmake' parsing limitations:
+#
+#     # javac -version 2>&1 | cut -f2 -d.
+#
+message( STATUS "Java_VERSION_STRING = '${Java_VERSION_STRING}'" )
+execute_process(
+    COMMAND
+        javac -version
+    ERROR_VARIABLE
+        Javac_VERSION_OUTPUT
+    OUTPUT_VARIABLE
+        Javac_VERSION_OUTPUT
+    ERROR_STRIP_TRAILING_WHITESPACE
+    OUTPUT_STRIP_TRAILING_WHITESPACE
+)
+message( STATUS "Javac_VERSION_OUTPUT = '${Javac_VERSION_OUTPUT}'" )
+execute_process(
+    COMMAND
+        echo ${Javac_VERSION_OUTPUT}
+    COMMAND
+        cut -f2 -d.
+    OUTPUT_VARIABLE
+        Javadoc_VERSION_MINOR
+    OUTPUT_STRIP_TRAILING_WHITESPACE
+)
+message( STATUS "Javadoc_VERSION_MINOR = '${Javadoc_VERSION_MINOR}'" )
+
 set(doclintstr "")
-if(${Java_VERSION_MINOR} VERSION_EQUAL 8 OR ${Java_VERSION_MINOR} VERSION_GREATER 8)
+if(NOT (${Javadoc_VERSION_MINOR} LESS 8))
     set(doclintstr "-Xdoclint:none")
-endif(${Java_VERSION_MINOR} VERSION_EQUAL 8 OR ${Java_VERSION_MINOR} VERSION_GREATER 8)
+endif(NOT (${Javadoc_VERSION_MINOR} LESS 8))
 
 javadoc(pki-javadoc
     SOURCEPATH
-- 
1.8.3.1

_______________________________________________
Pki-devel mailing list
Pki-devel@redhat.com
https://www.redhat.com/mailman/listinfo/pki-devel

Reply via email to