Merge lp:~davidagraf/zorba/data-formatting-module-bug-989490 into lp:zorba/data-formatting-module

Proposed by David Graf
Status: Merged
Approved by: David Graf
Approved revision: 39
Merged at revision: 37
Proposed branch: lp:~davidagraf/zorba/data-formatting-module-bug-989490
Merge into: lp:zorba/data-formatting-module
Diff against target: 303 lines (+1/-287)
2 files modified
CMakeLists.txt (+1/-1)
cmake_modules/FindJNI.cmake (+0/-286)
To merge this branch: bzr merge lp:~davidagraf/zorba/data-formatting-module-bug-989490
Reviewer Review Type Date Requested Status
Chris Hillery Approve
David Graf (community) Approve
Review via email: mp+110273@code.launchpad.net

Commit message

Finding JNI properly on ubuntu 12.04 (bug #989490).

Description of the change

To post a comment you must log in.
Revision history for this message
Chris Hillery (ceejatec) wrote :

Have you tested this on Windows? I'm actually not sure that you can delete the Windows/FindJNI.cmake file; it does something different.

review: Needs Information
Revision history for this message
David Graf (davidagraf) wrote :

Hello Chris. Unfortunately now :-(. Sorry. But before testing, I need to fix something else. I just saw this:
bzr diff -c 31
=== modified file 'CMakeLists.txt'
--- CMakeLists.txt 2012-05-23 09:12:37 +0000
+++ CMakeLists.txt 2012-06-04 11:42:06 +0000
@@ -16,12 +16,14 @@

 PROJECT (zorba_schema-tools_module)

-# The util-jvm tool finds Java and JNI, so all standard cached JAVA_
-# variables will be set. util-jvm also caches Java_FOUND and JNI_FOUND
-# for us.
 FIND_PACKAGE (zorba_util-jvm_module QUIET)

 IF (zorba_util-jvm_module_FOUND)
+ FIND_PACKAGE(JNI)
+ FIND_PACKAGE(Java)
+ FIND_PACKAGE (Zorba REQUIRED HINTS "${ZORBA_BUILD_DIR}")
+ INCLUDE ("${Zorba_USE_FILE}")
+
   IF (JNI_FOUND)
     INCLUDE_DIRECTORIES (${zorba_util-jvm_module_INCLUDE_DIRS})

This is not merged into the sausalito code yet. Therefore, I didn't recognize it. Why is this necessary? Can we somehow avoid this? If not, we need to do the tricks we are now doing in the util-jvm module here too :-(.

review: Needs Information
Revision history for this message
Chris Hillery (ceejatec) wrote :

It is necessary for now, primarily to support building the data-formatting-module against an *installed* Zorba with the util-jvm module. In that case, util-jvm's CMakeLists.txt won't be run, so FIND_PACKAGE(Java) and (JNI) won't be run either.

A better solution would probably be to add those two FIND_PACKAGE() calls, with the associated JAVA_HOME trickery, to util-jvm's use file (util-jvm-module/config/UtilJavaUse.cmake), and then have data-formatting and schema-tools include the use file in the same way that the EXI module does. (Ideally util-jvm's own CMakeLists.txt would also include its own use file so that the code would exist in exactly one place, but I'm not totally sure how to accomplish that.)

Revision history for this message
David Graf (davidagraf) :
review: Approve
Revision history for this message
Zorba Build Bot (zorba-buildbot) wrote :
Revision history for this message
Zorba Build Bot (zorba-buildbot) wrote :

The attempt to merge lp:~davidagraf/zorba/data-formatting-module-bug-989490 into lp:zorba/data-formatting-module failed. Below is the output from the failed tests.

CMake Error at /home/ceej/zo/testing/zorbatest/tester/TarmacLander.cmake:274 (message):
  Validation queue job
  data-formatting-module-bug-989490-2012-07-02T10-53-41.424Z is finished.
  The final status was:

  No tests were run - build or configure step must have failed.

  Not commiting changes.

Error in read script: /home/ceej/zo/testing/zorbatest/tester/TarmacLander.cmake

Revision history for this message
David Graf (davidagraf) wrote :

Hey Chris
This merge proposal got lost. Do you know the status of this? I lost the overview.

But I guess that FIND_PACKAGE(JNI) in all the java modules should be replaced with ZORBA_FIND_JNI(). Do you agree?

Revision history for this message
Chris Hillery (ceejatec) wrote :

I think you're correct, although at this point I'm not really sure either. For what it's worth, ZORBA_FIND_JNI() doesn't actually do the finding of JNI; it sets up JAVA_HOME in some magic way, and then just calls FIND_PACKAGE(JNI) anyway. So it depends on FindJNI.cmake existing somewhere. But FindJNI.cmake comes with CMake (at least recent versions), so I don't think we need to package it anywhere ourselves anymore. (Unless we have local hacks to it, which we may...)

It would probably make sense for ZORBA_FIND_JNI() to also find Java, but one thing at a time. Let's see if this change goes in as it stands...

review: Approve
Revision history for this message
Zorba Build Bot (zorba-buildbot) wrote :

Attempt to merge into lp:zorba/data-formatting-module failed due to conflicts:

contents conflict in cmake_modules/FindJNI.cmake

39. By David Graf

merged lp:zorba/data-formatting-module

Revision history for this message
Zorba Build Bot (zorba-buildbot) wrote :
Revision history for this message
Zorba Build Bot (zorba-buildbot) wrote :

Validation queue job data-formatting-module-bug-989490-2012-11-07T11-12-30.016Z is finished. The final status was:

All tests succeeded!

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
1=== modified file 'CMakeLists.txt'
2--- CMakeLists.txt 2012-06-04 11:43:07 +0000
3+++ CMakeLists.txt 2012-11-07 11:12:22 +0000
4@@ -23,7 +23,7 @@
5 IF (zorba_util-jvm_module_FOUND)
6 INCLUDE ("${zorba_util-jvm_module_USE_FILE}")
7
8- FIND_PACKAGE(JNI)
9+ ZORBA_FIND_JNI()
10 FIND_PACKAGE(Java)
11 FIND_PACKAGE (Zorba REQUIRED HINTS "${ZORBA_BUILD_DIR}")
12 INCLUDE ("${Zorba_USE_FILE}")
13
14=== removed file 'cmake_modules/FindJNI.cmake'
15--- cmake_modules/FindJNI.cmake 2012-07-26 20:11:11 +0000
16+++ cmake_modules/FindJNI.cmake 1970-01-01 00:00:00 +0000
17@@ -1,286 +0,0 @@
18-# - Find JNI java libraries.
19-# This module finds if Java is installed and determines where the
20-# include files and libraries are. It also determines what the name of
21-# the library is. This code sets the following variables:
22-#
23-# JNI_INCLUDE_DIRS = the include dirs to use
24-# JNI_LIBRARIES = the libraries to use
25-# JNI_FOUND = TRUE if JNI headers and libraries were found.
26-# JAVA_AWT_LIBRARY = the path to the jawt library
27-# JAVA_JVM_LIBRARY = the path to the jvm library
28-# JAVA_INCLUDE_PATH = the include path to jni.h
29-# JAVA_INCLUDE_PATH2 = the include path to jni_md.h
30-# JAVA_AWT_INCLUDE_PATH = the include path to jawt.h
31-#
32-
33-#=============================================================================
34-# Copyright 2001-2009 Kitware, Inc.
35-#
36-# Distributed under the OSI-approved BSD License (the "License");
37-# see accompanying file Copyright.txt for details.
38-#
39-# This software is distributed WITHOUT ANY WARRANTY; without even the
40-# implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
41-# See the License for more information.
42-#=============================================================================
43-# (To distribute this file outside of CMake, substitute the full
44-# License text for the above reference.)
45-
46-# Expand {libarch} occurences to java_libarch subdirectory(-ies) and set ${_var}
47-MACRO(java_append_library_directories _var)
48- # Determine java arch-specific library subdir
49- # Mostly based on openjdk/jdk/make/common/shared/Platform.gmk as of openjdk
50- # 1.6.0_18 + icedtea patches. However, it would be much better to base the
51- # guess on the first part of the GNU config.guess platform triplet.
52- IF(CMAKE_SYSTEM_PROCESSOR STREQUAL "x86_64")
53- SET(_java_libarch "amd64")
54- ELSEIF(CMAKE_SYSTEM_PROCESSOR MATCHES "^i.86$")
55- SET(_java_libarch "i386")
56- ELSEIF(CMAKE_SYSTEM_PROCESSOR MATCHES "^alpha")
57- SET(_java_libarch "alpha")
58- ELSEIF(CMAKE_SYSTEM_PROCESSOR MATCHES "^arm")
59- # Subdir is "arm" for both big-endian (arm) and little-endian (armel).
60- SET(_java_libarch "arm")
61- ELSEIF(CMAKE_SYSTEM_PROCESSOR MATCHES "^mips")
62- # mips* machines are bi-endian mostly so processor does not tell
63- # endianess of the underlying system.
64- SET(_java_libarch "${CMAKE_SYSTEM_PROCESSOR}" "mips" "mipsel" "mipseb")
65- ELSEIF(CMAKE_SYSTEM_PROCESSOR MATCHES "^(powerpc|ppc)64")
66- SET(_java_libarch "ppc64")
67- ELSEIF(CMAKE_SYSTEM_PROCESSOR MATCHES "^(powerpc|ppc)")
68- SET(_java_libarch "ppc")
69- ELSEIF(CMAKE_SYSTEM_PROCESSOR MATCHES "^sparc")
70- # Both flavours can run on the same processor
71- SET(_java_libarch "${CMAKE_SYSTEM_PROCESSOR}" "sparc" "sparcv9")
72- ELSEIF(CMAKE_SYSTEM_PROCESSOR MATCHES "^(parisc|hppa)")
73- SET(_java_libarch "parisc" "parisc64")
74- ELSEIF(CMAKE_SYSTEM_PROCESSOR MATCHES "^s390")
75- # s390 binaries can run on s390x machines
76- SET(_java_libarch "${CMAKE_SYSTEM_PROCESSOR}" "s390" "s390x")
77- ELSEIF(CMAKE_SYSTEM_PROCESSOR MATCHES "^sh")
78- SET(_java_libarch "sh")
79- ELSE(CMAKE_SYSTEM_PROCESSOR STREQUAL "x86_64")
80- SET(_java_libarch "${CMAKE_SYSTEM_PROCESSOR}")
81- ENDIF(CMAKE_SYSTEM_PROCESSOR STREQUAL "x86_64")
82-
83- # Append default list architectures if CMAKE_SYSTEM_PROCESSOR was empty or
84- # system is non-Linux (where the code above has not been well tested)
85- IF(NOT _java_libarch OR NOT CMAKE_SYSTEM_NAME MATCHES "Linux")
86- LIST(APPEND _java_libarch "i386" "amd64" "ppc")
87- ENDIF(NOT _java_libarch OR NOT CMAKE_SYSTEM_NAME MATCHES "Linux")
88-
89- # Sometimes ${CMAKE_SYSTEM_PROCESSOR} is added to the list to prefer
90- # current value to a hardcoded list. Remove possible duplicates.
91- LIST(REMOVE_DUPLICATES _java_libarch)
92-
93- FOREACH(_path ${ARGN})
94- IF(_path MATCHES "{libarch}")
95- FOREACH(_libarch ${_java_libarch})
96- STRING(REPLACE "{libarch}" "${_libarch}" _newpath "${_path}")
97- LIST(APPEND ${_var} "${_newpath}")
98- ENDFOREACH(_libarch)
99- ELSE(_path MATCHES "{libarch}")
100- LIST(APPEND ${_var} "${_path}")
101- ENDIF(_path MATCHES "{libarch}")
102- ENDFOREACH(_path)
103-ENDMACRO(java_append_library_directories)
104-
105-GET_FILENAME_COMPONENT(java_install_version
106- "[HKEY_LOCAL_MACHINE\\SOFTWARE\\JavaSoft\\Java Development Kit;CurrentVersion]" NAME)
107-
108-SET(JAVA_AWT_LIBRARY_DIRECTORIES
109- "[HKEY_LOCAL_MACHINE\\SOFTWARE\\JavaSoft\\Java Development Kit\\1.4;JavaHome]/lib"
110- "[HKEY_LOCAL_MACHINE\\SOFTWARE\\JavaSoft\\Java Development Kit\\1.3;JavaHome]/lib"
111- "[HKEY_LOCAL_MACHINE\\SOFTWARE\\JavaSoft\\Java Development Kit\\${java_install_version};JavaHome]/lib"
112- )
113-
114-FILE(TO_CMAKE_PATH "$ENV{JAVA_HOME}" _JAVA_HOME)
115-
116-JAVA_APPEND_LIBRARY_DIRECTORIES(JAVA_AWT_LIBRARY_DIRECTORIES
117- ${_JAVA_HOME}/jre/lib/{libarch}
118- ${_JAVA_HOME}/jre/lib
119- ${_JAVA_HOME}/lib
120- ${_JAVA_HOME}
121- /usr/lib/jvm/java-6-openjdk/jre/lib
122- /usr/lib/jvm/java-6-openjdk-i386/jre/lib
123- /usr/lib/jvm/java-6-openjdk-amd64/jre/lib
124- /usr/lib/jvm/java-6-openjdk/jre/lib/{libarch}
125- /usr/lib/jvm/java-6-openjdk-i386/jre/lib/{libarch}
126- /usr/lib/jvm/java-6-openjdk-amd64/jre/lib/{libarch}
127- /usr/lib
128- /usr/local/lib
129- /usr/lib/jvm/java/lib
130- /usr/lib/java/jre/lib/{libarch}
131- /usr/local/lib/java/jre/lib/{libarch}
132- /usr/local/share/java/jre/lib/{libarch}
133- /usr/lib/j2sdk1.4-sun/jre/lib/{libarch}
134- /usr/lib/j2sdk1.5-sun/jre/lib/{libarch}
135- /opt/sun-jdk-1.5.0.04/jre/lib/{libarch}
136- /usr/lib/jvm/java-6-sun/jre/lib/{libarch}
137- /usr/lib/jvm/java-1.5.0-sun/jre/lib/{libarch}
138- /usr/lib/jvm/java-6-sun-1.6.0.00/jre/lib/{libarch} # can this one be removed according to #8821 ? Alex
139- /usr/lib/jvm/java-openjdk/jre/lib/{libarch}
140- # Debian specific paths for default JVM
141- /usr/lib/jvm/default-java/jre/lib/{libarch}
142- /usr/lib/jvm/default-java/jre/lib
143- /usr/lib/jvm/default-java/lib
144- )
145-
146-SET(JAVA_JVM_LIBRARY_DIRECTORIES)
147-FOREACH(dir ${JAVA_AWT_LIBRARY_DIRECTORIES})
148- SET(JAVA_JVM_LIBRARY_DIRECTORIES
149- ${JAVA_JVM_LIBRARY_DIRECTORIES}
150- "${dir}"
151- "${dir}/client"
152- "${dir}/server"
153- )
154-ENDFOREACH(dir)
155-
156-
157-SET(JAVA_AWT_INCLUDE_DIRECTORIES
158- "[HKEY_LOCAL_MACHINE\\SOFTWARE\\JavaSoft\\Java Development Kit\\1.4;JavaHome]/include"
159- "[HKEY_LOCAL_MACHINE\\SOFTWARE\\JavaSoft\\Java Development Kit\\1.3;JavaHome]/include"
160- "[HKEY_LOCAL_MACHINE\\SOFTWARE\\JavaSoft\\Java Development Kit\\${java_install_version};JavaHome]/include"
161- ${_JAVA_HOME}/include
162- /usr/lib/jvm/java-6-openjdk/include
163- /usr/lib/jvm/java-6-openjdk-amd64/include
164- /usr/lib/jvm/java-6-openjdk-i386/include
165- /usr/include
166- /usr/local/include
167- /usr/lib/java/include
168- /usr/local/lib/java/include
169- /usr/lib/jvm/java/include
170- /usr/lib/jvm/java-6-sun/include
171- /usr/lib/jvm/java-1.5.0-sun/include
172- /usr/lib/jvm/java-6-sun-1.6.0.00/include # can this one be removed according to #8821 ? Alex
173- /usr/lib/jvm/java-6-openjdk/include
174- /usr/local/share/java/include
175- /usr/lib/j2sdk1.4-sun/include
176- /usr/lib/j2sdk1.5-sun/include
177- /opt/sun-jdk-1.5.0.04/include
178- # Debian specific path for default JVM
179- /usr/lib/jvm/default-java/include
180- )
181-
182-FOREACH(JAVA_PROG "${JAVA_RUNTIME}" "${JAVA_COMPILE}" "${JAVA_ARCHIVE}")
183- GET_FILENAME_COMPONENT(jpath "${JAVA_PROG}" PATH)
184- FOREACH(JAVA_INC_PATH ../include ../java/include ../share/java/include)
185- IF(EXISTS ${jpath}/${JAVA_INC_PATH})
186- SET(JAVA_AWT_INCLUDE_DIRECTORIES ${JAVA_AWT_INCLUDE_DIRECTORIES} "${jpath}/${JAVA_INC_PATH}")
187- ENDIF(EXISTS ${jpath}/${JAVA_INC_PATH})
188- ENDFOREACH(JAVA_INC_PATH)
189- FOREACH(JAVA_LIB_PATH
190- ../lib ../jre/lib ../jre/lib/i386
191- ../java/lib ../java/jre/lib ../java/jre/lib/i386
192- ../share/java/lib ../share/java/jre/lib ../share/java/jre/lib/i386)
193- IF(EXISTS ${jpath}/${JAVA_LIB_PATH})
194- SET(JAVA_AWT_LIBRARY_DIRECTORIES ${JAVA_AWT_LIBRARY_DIRECTORIES} "${jpath}/${JAVA_LIB_PATH}")
195- ENDIF(EXISTS ${jpath}/${JAVA_LIB_PATH})
196- ENDFOREACH(JAVA_LIB_PATH)
197-ENDFOREACH(JAVA_PROG)
198-
199-IF(APPLE)
200- IF(EXISTS ~/Library/Frameworks/JavaVM.framework)
201- SET(JAVA_HAVE_FRAMEWORK 1)
202- ENDIF(EXISTS ~/Library/Frameworks/JavaVM.framework)
203- IF(EXISTS /Library/Frameworks/JavaVM.framework)
204- SET(JAVA_HAVE_FRAMEWORK 1)
205- ENDIF(EXISTS /Library/Frameworks/JavaVM.framework)
206- IF(EXISTS /System/Library/Frameworks/JavaVM.framework)
207- SET(JAVA_HAVE_FRAMEWORK 1)
208- ENDIF(EXISTS /System/Library/Frameworks/JavaVM.framework)
209-
210- IF(JAVA_HAVE_FRAMEWORK)
211- IF(NOT JAVA_AWT_LIBRARY)
212- SET (JAVA_AWT_LIBRARY "-framework JavaVM" CACHE FILEPATH "Java Frameworks" FORCE)
213- ENDIF(NOT JAVA_AWT_LIBRARY)
214-
215- IF(NOT JAVA_JVM_LIBRARY)
216- SET (JAVA_JVM_LIBRARY "-framework JavaVM" CACHE FILEPATH "Java Frameworks" FORCE)
217- ENDIF(NOT JAVA_JVM_LIBRARY)
218-
219- IF(NOT JAVA_AWT_INCLUDE_PATH)
220- IF(EXISTS /System/Library/Frameworks/JavaVM.framework/Headers/jawt.h)
221- SET (JAVA_AWT_INCLUDE_PATH "/System/Library/Frameworks/JavaVM.framework/Headers" CACHE FILEPATH "jawt.h location" FORCE)
222- ENDIF(EXISTS /System/Library/Frameworks/JavaVM.framework/Headers/jawt.h)
223- ENDIF(NOT JAVA_AWT_INCLUDE_PATH)
224-
225- # If using "-framework JavaVM", prefer its headers *before* the others in
226- # JAVA_AWT_INCLUDE_DIRECTORIES... (*prepend* to the list here)
227- #
228- SET(JAVA_AWT_INCLUDE_DIRECTORIES
229- ~/Library/Frameworks/JavaVM.framework/Headers
230- /Library/Frameworks/JavaVM.framework/Headers
231- /System/Library/Frameworks/JavaVM.framework/Headers
232- ${JAVA_AWT_INCLUDE_DIRECTORIES}
233- )
234- ENDIF(JAVA_HAVE_FRAMEWORK)
235-ELSE(APPLE)
236- FIND_LIBRARY(JAVA_AWT_LIBRARY jawt
237- PATHS ${JAVA_AWT_LIBRARY_DIRECTORIES}
238- )
239- FIND_LIBRARY(JAVA_JVM_LIBRARY NAMES jvm JavaVM java
240- PATHS ${JAVA_JVM_LIBRARY_DIRECTORIES}
241- )
242-ENDIF(APPLE)
243-
244-# add in the include path
245-FIND_PATH(JAVA_INCLUDE_PATH jni.h
246- ${JAVA_AWT_INCLUDE_DIRECTORIES}
247-)
248-
249-FIND_PATH(JAVA_INCLUDE_PATH2 jni_md.h
250- ${JAVA_INCLUDE_PATH}
251- ${JAVA_INCLUDE_PATH}/win32
252- ${JAVA_INCLUDE_PATH}/linux
253- ${JAVA_INCLUDE_PATH}/freebsd
254- ${JAVA_INCLUDE_PATH}/solaris
255-)
256-
257-FIND_PATH(JAVA_AWT_INCLUDE_PATH jawt.h
258- ${JAVA_INCLUDE_PATH}
259-)
260-
261-
262-IF (APPLE)
263- # On Mac, the java headers files are broken symlinks if the Apple Developer Tools for Java are not installed
264- EXECUTE_PROCESS(COMMAND cat ${JAVA_INCLUDE_PATH}/jni.h
265- OUTPUT_QUIET
266- ERROR_QUIET
267- RESULT_VARIABLE SYMLINK_CHECK_RESULT_VARIABLE)
268- IF (SYMLINK_CHECK_RESULT_VARIABLE GREATER 0)
269- SET (JAVA_INCLUDE_PATH "JAVA_INCLUDE_PATH-NOTFOUND")
270- SET (JAVA_INCLUDE_PATH2 "JAVA_INCLUDE_PATH2-NOTFOUND")
271- SET (JAVA_AWT_INCLUDE_PATH "JAVA_AWT_INCLUDE_PATH-NOTFOUND")
272- ENDIF()
273-ENDIF (APPLE)
274-
275-
276-#INCLUDE("${CMAKE_CURRENT_LIST_DIR}/FindPackageHandleStandardArgs.cmake")
277-#FIND_PACKAGE_HANDLE_STANDARD_ARGS(JNI DEFAULT_MSG JAVA_AWT_LIBRARY JAVA_JVM_LIBRARY
278-# JAVA_INCLUDE_PATH JAVA_INCLUDE_PATH2 JAVA_AWT_INCLUDE_PATH)
279-
280-MARK_AS_ADVANCED(
281- JAVA_AWT_LIBRARY
282- JAVA_JVM_LIBRARY
283- JAVA_AWT_INCLUDE_PATH
284- JAVA_INCLUDE_PATH
285- JAVA_INCLUDE_PATH2
286-)
287-
288-IF (JAVA_AWT_LIBRARY AND JAVA_JVM_LIBRARY AND JAVA_INCLUDE_PATH AND JAVA_INCLUDE_PATH2 AND JAVA_AWT_INCLUDE_PATH)
289- SET(JNI_FOUND 1)
290- SET(JNI_LIBRARIES
291- ${JAVA_AWT_LIBRARY}
292- ${JAVA_JVM_LIBRARY}
293- )
294- SET(JNI_INCLUDE_DIRS
295- ${JAVA_INCLUDE_PATH}
296- ${JAVA_INCLUDE_PATH2}
297- ${JAVA_AWT_INCLUDE_PATH}
298- )
299-ELSE (JAVA_AWT_LIBRARY AND JAVA_JVM_LIBRARY AND JAVA_INCLUDE_PATH AND JAVA_INCLUDE_PATH2 AND JAVA_AWT_INCLUDE_PATH)
300- SET(JNI_FOUND 0)
301- SET(JNI_LIBRARIES "")
302- SET(JNI_INCLUDE_DIRS "")
303-ENDIF (JAVA_AWT_LIBRARY AND JAVA_JVM_LIBRARY AND JAVA_INCLUDE_PATH AND JAVA_INCLUDE_PATH2 AND JAVA_AWT_INCLUDE_PATH)

Subscribers

People subscribed via source and target branches

to all changes: