[prev in list] [next in list] [prev in thread] [next in thread]
List: mapguide-commits
Subject: [mapguide-commits] r9965 - in sandbox/jng/vanilla_swig/Bindings: . src src/Bindings src/Bindings/Jav
From: svn_mapguide () osgeo ! org
Date: 2022-09-02 13:26:12
Message-ID: 20220902132612.DF5261BD444 () trac ! osgeo ! org
[Download RAW message or body]
Author: jng
Date: 2022-09-02 06:26:11 -0700 (Fri, 02 Sep 2022)
New Revision: 9965
Added:
sandbox/jng/vanilla_swig/Bindings/src/Managed/CMakeLists.txt
sandbox/jng/vanilla_swig/Bindings/src/Managed/Java/CMakeLists.txt
Modified:
sandbox/jng/vanilla_swig/Bindings/TODO.txt
sandbox/jng/vanilla_swig/Bindings/src/Bindings/CMakeLists.txt
sandbox/jng/vanilla_swig/Bindings/src/Bindings/Java/CMakeLists.txt
sandbox/jng/vanilla_swig/Bindings/src/Bindings/Php/CMakeLists.txt
sandbox/jng/vanilla_swig/Bindings/src/CMakeLists.txt
sandbox/jng/vanilla_swig/Bindings/src/SwigCommon/Java/monkey_patch.i
Log:
More binding fixes on Linux:
- Only build the .net SWIG glub libraries if building for the common libs subset. \
Don't do this for the regular end-to-end full build.
- Copy missing .java files to the expected build location for the Java binding
- Add missing .jar file creation commands
- Add missing install targets for PHP and Java bindings
- Remove existing Java cleanup typemaps and replace it with the existing delete \
method rename for certain classes from the legacy Java binding
- Update TODO list
Modified: sandbox/jng/vanilla_swig/Bindings/TODO.txt
===================================================================
--- sandbox/jng/vanilla_swig/Bindings/TODO.txt 2022-08-31 16:19:44 UTC (rev 9964)
+++ sandbox/jng/vanilla_swig/Bindings/TODO.txt 2022-09-02 13:26:11 UTC (rev 9965)
@@ -8,7 +8,7 @@
- [x] Consolidate Tools.sln into Bindings.sln
- [ ] Relocate/remove existing test code
- [x] Move packages dir up to to top-level MgDev subdirectory and make sure \
nuget.config sources from this dir
- - [ ] Update build batch files to build bindings/portable
+ - [x] Update build batch files to build bindings/portable
- [ ] Fix binding pre-build events to copy ACE/GEOS/lib_json dlls from their \
respective Oem directories
- Split .net binding into the Foundation/Geometry/PlatformBase/MapGuideCommon/Web \
layout \
(https://github.com/jumpinjackie/mapguide-api-bindings/issues/18)
- [x] Add .targets files to each C# project so that native dlls are copied \
properly when consumed by legacy .net framework applications/libraries @@ -22,7 +22,6 \
@@
- Generate and build the .net/Java SWIG glue libraries
- Copy the compiled libs out of the docker container and into the same \
native library staging area for Java/.net
- (x) OR: Update our common libs dockerfile in \
(https://github.com/jumpinjackie/mapguide-fdo-docker-build) to perform the above \
tasks
- - [ ] Remove --common-subset-only flag from cmake_bootstrap.sh. Instead do the \
full build, but package up a common libs tarball of the needed .so \
files
- [x] Refactor current .net test suite to reference these nuget packages
- [x] Verify test suite still passes (Windows)
- [x] Verify test suite still passes (Windows, legacy .net Framework)
@@ -65,12 +64,17 @@
- [x] Review the usage of our monkey-patched PHP traits and see whether they're \
still necessary
- [x] Especially the custom dtor for MgException-derived classes since there \
is now only one MgException class with no subclasses
- [~] SKIP: Put all the generated code under a OSGeo\MapGuide namespace
- - [ ] Get it building (Linux)
+ - [x] Get it building (Linux)
- [~] Verify test suite still passes (Windows)
- There is 1 failing test that sounds inconsequential, but should still be \
fixed
- [ ] Verify test suite still passes (Linux)
- It should be possible to now get rid of constants.php and define our various \
constants in the PHP extension itself!
- [x] Pivot IMake to instead generate a SWIG interface file of constant class \
defns to be included in the main SWIG interface file + - [ ] (Linux) update \
php.ini.in cmake template to be based on a production PHP 8.1 config (it is still \
based on a PHP 5.6 one) + - (Linux) Build and include mod_fcgid
+ - [ ] Add mod_fcgid sources to Oem/LinuxApt
+ - [ ] Ensure LinuxApt build script also builds mod_fcgid
+ - [ ] Ensure the generated httpd.conf uses the same FastCGI setup for PHP
- Fix up existing web apps
- [x] mapviewerjava
- [x] mapviewerphp
@@ -101,6 +105,21 @@
- [x] viewer samples (Java)
- [ ] viewer samples (.net)
- Give the .net viewer samples the same migration plan as mapviewernet
+ - [ ] Include a web.config for all .net directories with the required settings to \
avoid needing to set this information with installer or MgInstantSetup: + - Add \
assembly reference to netstandard + - Enable legacy request validation mode
+ - Target .net Framework 4.8
+ - [ ] Rename various public C++ APIs to avoid language-specific renaming \
workarounds + - MgCoordinateSystemMeasure
+ - GetDistance -> GetDistanceSimple
+ - GetAzimuth -> GetAzimuthSimple
+ - GetCoordinate -> GetCoordinateSimple
+ - MgMap
+ - Create -> CreateStateless
+ - MgPropertyDefinition/MgClassDefinition/MgFeatureSchema
+ - Delete -> MarkAsDeleted
+ - Mg*Collection
+ - Add -> AddItem
- Revise API documentation strategy
- [ ] Don't use doxygen. Instead use the appropriate docgen tool for the \
languages we support:
- PHP: phpDocumentor (https://phpdoc.org/)
Modified: sandbox/jng/vanilla_swig/Bindings/src/Bindings/CMakeLists.txt
===================================================================
--- sandbox/jng/vanilla_swig/Bindings/src/Bindings/CMakeLists.txt 2022-08-31 16:19:44 \
UTC (rev 9964)
+++ sandbox/jng/vanilla_swig/Bindings/src/Bindings/CMakeLists.txt 2022-09-02 13:26:11 \
UTC (rev 9965) @@ -12,7 +12,11 @@
${XERCESC_INCLUDE_DIR}
)
-add_subdirectory(DotNet)
+# We only need to build the .net SWIG glue libs if building for the common subset
+# We don't build this in a regular full end-to-end MG build
+if (MG_COMMON_SUBSET_ONLY)
+ add_subdirectory(DotNet)
+endif (MG_COMMON_SUBSET_ONLY)
if (WITH_JAVA)
add_subdirectory(Java)
endif (WITH_JAVA)
Modified: sandbox/jng/vanilla_swig/Bindings/src/Bindings/Java/CMakeLists.txt
===================================================================
--- sandbox/jng/vanilla_swig/Bindings/src/Bindings/Java/CMakeLists.txt 2022-08-31 \
16:19:44 UTC (rev 9964)
+++ sandbox/jng/vanilla_swig/Bindings/src/Bindings/Java/CMakeLists.txt 2022-09-02 \
13:26:11 UTC (rev 9965) @@ -47,6 +47,13 @@
COMMAND ${MOVE_COMMAND} ${MOVE_ARGS}
${CMAKE_CURRENT_BINARY_DIR}/*.java
${CMAKE_CURRENT_BINARY_DIR}/org/osgeo/mapguide
+ COMMAND ${Java_JAVAC_EXECUTABLE} -classpath ${CMAKE_CURRENT_BINARY_DIR} \
${CMAKE_CURRENT_BINARY_DIR}/org/osgeo/mapguide/*.java + COMMAND \
${Java_JAR_EXECUTABLE} -cf + ${CMAKE_CURRENT_BINARY_DIR}/MapGuideApi.jar
+ ${CMAKE_CURRENT_BINARY_DIR}/org/osgeo/mapguide/*.class
+ COMMAND ${Java_JAR_EXECUTABLE} -cf
+ ${CMAKE_CURRENT_BINARY_DIR}/MapGuideApi-sources.jar
+ ${CMAKE_CURRENT_BINARY_DIR}/org/osgeo/mapguide/*.java
# These commands need to be run in the context of the source directory so that \
the relative header references
# in the Constants and ApiGen xml files will resolve propertly (because these \
headers won't exist in the cmake # binary dir)
@@ -66,15 +73,15 @@
endif (MSVC)
add_dependencies(MapGuideJavaApi${MG_VERSION_SUFFIX} IMake)
-# if (UNIX)
-# install(TARGETS MapGuideJavaApi${MG_VERSION_SUFFIX} DESTINATION \
${LIB_INSTALL_DIR} COMPONENT ${MG_COMPONENT})
-# install_symlink(${CMAKE_INSTALL_PREFIX}/${LIB_INSTALL_DIR}/libMapGuideJavaApi${MG_VERSION_SUFFIX}.so \
libMapGuideJavaApi.so ${MG_COMPONENT})
-# set(MG_JARS
-# "${MG_JAVA_OUTPUT_DIR}/MapGuideApi.jar"
-# "${MG_JAVA_OUTPUT_DIR}/MapGuideApi-sources.jar"
-# )
-# install(FILES ${MG_JARS} DESTINATION ${MG_WWWROOT}/WEB-INF/lib)
-# endif (UNIX)
+if (UNIX)
+ install(TARGETS MapGuideJavaApi${MG_VERSION_SUFFIX} DESTINATION \
${LIB_INSTALL_DIR} COMPONENT ${MG_COMPONENT}) + \
install_symlink(libMapGuideJavaApi${MG_VERSION_SUFFIX}.so libMapGuideJavaApi.so \
${MG_COMPONENT}) + set(MG_JARS
+ "${CMAKE_CURRENT_BINARY_DIR}/MapGuideApi.jar"
+ "${CMAKE_CURRENT_BINARY_DIR}/MapGuideApi-sources.jar"
+ )
+ install(FILES ${MG_JARS} DESTINATION ${MG_WWWROOT}/WEB-INF/lib)
+endif (UNIX)
target_link_libraries(MapGuideJavaApi${MG_VERSION_SUFFIX}
${ACE_LIBRARY}
#${JNI_LIBRARIES}
@@ -96,4 +103,11 @@
install( TARGETS MapGuideJavaApi${MG_VERSION_SUFFIX} DESTINATION \
"${MG_JAVA_OUTPUT_DIR}/${MG_DISTRO}" ) endif (UNIX)
-file(COPY "java.i" DESTINATION ${CMAKE_CURRENT_BINARY_DIR})
\ No newline at end of file
+file(COPY "java.i" DESTINATION ${CMAKE_CURRENT_BINARY_DIR})
+
+# Set RPATH to avoid needing to use LD_LIBRARY_PATH in various configs
+if(MG_CPU EQUAL 64)
+ set_target_properties(MapGuideJavaApi${MG_VERSION_SUFFIX} PROPERTIES \
INSTALL_RPATH "$ORIGIN:$ORIGIN/../../lib64") +else(MG_CPU EQUAL 64)
+ set_target_properties(MapGuideJavaApi${MG_VERSION_SUFFIX} PROPERTIES \
INSTALL_RPATH "$ORIGIN:$ORIGIN/../../lib") +endif(MG_CPU EQUAL 64)
\ No newline at end of file
Modified: sandbox/jng/vanilla_swig/Bindings/src/Bindings/Php/CMakeLists.txt
===================================================================
--- sandbox/jng/vanilla_swig/Bindings/src/Bindings/Php/CMakeLists.txt 2022-08-31 \
16:19:44 UTC (rev 9964)
+++ sandbox/jng/vanilla_swig/Bindings/src/Bindings/Php/CMakeLists.txt 2022-09-02 \
13:26:11 UTC (rev 9965) @@ -15,6 +15,10 @@
set(SWIG_PHP_DEFS "-DWIN32")
endif (WIN32)
+# Only needed for Linux
+if (UNIX)
+ file(COPY "InitializeWebTier.cpp" DESTINATION ${CMAKE_CURRENT_BINARY_DIR})
+endif (UNIX)
# These 2 files will be #included in the MgApi_wrap translation unit so they need
# to be present on the current binary dir where MgApi_wrap.cpp will be generated in
file(COPY "PhpClassMap.cpp" DESTINATION ${CMAKE_CURRENT_BINARY_DIR})
@@ -72,12 +76,10 @@
WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR}
)
-# if (UNIX)
-# install(TARGETS php_MapGuideApi${MG_VERSION_SUFFIX} DESTINATION \
${LIB_INSTALL_DIR} COMPONENT ${MG_COMPONENT})
-# install_symlink(${CMAKE_INSTALL_PREFIX}/${LIB_INSTALL_DIR}/libphp_MapGuideApi${MG_VERSION_SUFFIX}.so \
libphp_MapGuideApi.so ${MG_COMPONENT})
-# install(FILES ${CMAKE_CURRENT_BINARY_DIR}/constants.php DESTINATION \
${MG_WWWROOT}/mapadmin COMPONENT ${MG_COMPONENT})
-# install(FILES ${CMAKE_CURRENT_BINARY_DIR}/constants.php DESTINATION \
${MG_WWWROOT}/mapviewerphp COMPONENT ${MG_COMPONENT})
-# endif (UNIX)
+if (UNIX)
+ install(TARGETS php_MapGuideApi${MG_VERSION_SUFFIX} DESTINATION \
${LIB_INSTALL_DIR} COMPONENT ${MG_COMPONENT}) + \
install_symlink(${CMAKE_INSTALL_PREFIX}/${LIB_INSTALL_DIR}/libphp_MapGuideApi${MG_VERSION_SUFFIX}.so \
libphp_MapGuideApi.so ${MG_COMPONENT}) +endif (UNIX)
target_link_libraries(php_MapGuideApi${MG_VERSION_SUFFIX}
${ACE_LIBRARY}
${PHP_LIBRARY}
@@ -93,9 +95,11 @@
${XERCESC_LIBRARIES}
)
-# Only needed for Linux
-if (UNIX)
- file(COPY "InitializeWebTier.cpp" DESTINATION ${CMAKE_CURRENT_BINARY_DIR})
-endif (UNIX)
+file(COPY "php.i" DESTINATION ${CMAKE_CURRENT_BINARY_DIR})
-file(COPY "php.i" DESTINATION ${CMAKE_CURRENT_BINARY_DIR})
\ No newline at end of file
+# Set RPATH to avoid needing to use LD_LIBRARY_PATH in various configs
+if(MG_CPU EQUAL 64)
+ set_target_properties(php_MapGuideApi${MG_VERSION_SUFFIX} PROPERTIES \
INSTALL_RPATH "$ORIGIN:$ORIGIN/../../lib64") +else(MG_CPU EQUAL 64)
+ set_target_properties(php_MapGuideApi${MG_VERSION_SUFFIX} PROPERTIES \
INSTALL_RPATH "$ORIGIN:$ORIGIN/../../lib") +endif(MG_CPU EQUAL 64)
\ No newline at end of file
Modified: sandbox/jng/vanilla_swig/Bindings/src/CMakeLists.txt
===================================================================
--- sandbox/jng/vanilla_swig/Bindings/src/CMakeLists.txt 2022-08-31 16:19:44 UTC (rev \
9964)
+++ sandbox/jng/vanilla_swig/Bindings/src/CMakeLists.txt 2022-09-02 13:26:11 UTC (rev \
9965) @@ -16,4 +16,5 @@
file(COPY "SwigCommon" DESTINATION ${CMAKE_CURRENT_BINARY_DIR})
add_subdirectory(IMake)
+add_subdirectory(Managed)
add_subdirectory(Bindings)
\ No newline at end of file
Added: sandbox/jng/vanilla_swig/Bindings/src/Managed/CMakeLists.txt
===================================================================
--- sandbox/jng/vanilla_swig/Bindings/src/Managed/CMakeLists.txt \
(rev 0)
+++ sandbox/jng/vanilla_swig/Bindings/src/Managed/CMakeLists.txt 2022-09-02 13:26:11 \
UTC (rev 9965) @@ -0,0 +1,3 @@
+if (WITH_JAVA)
+ add_subdirectory(Java)
+endif (WITH_JAVA)
\ No newline at end of file
Added: sandbox/jng/vanilla_swig/Bindings/src/Managed/Java/CMakeLists.txt
===================================================================
--- sandbox/jng/vanilla_swig/Bindings/src/Managed/Java/CMakeLists.txt \
(rev 0)
+++ sandbox/jng/vanilla_swig/Bindings/src/Managed/Java/CMakeLists.txt 2022-09-02 \
13:26:11 UTC (rev 9965) @@ -0,0 +1,4 @@
+file(GLOB MG_JAVA_SOURCES
+ "org/osgeo/mapguide/*.java"
+)
+file(COPY ${MG_JAVA_SOURCES} DESTINATION \
${CMAKE_CURRENT_BINARY_DIR}/../../Bindings/Java/org/osgeo/mapguide) \ No newline at \
end of file
Modified: sandbox/jng/vanilla_swig/Bindings/src/SwigCommon/Java/monkey_patch.i
===================================================================
--- sandbox/jng/vanilla_swig/Bindings/src/SwigCommon/Java/monkey_patch.i 2022-08-31 \
16:19:44 UTC (rev 9964)
+++ sandbox/jng/vanilla_swig/Bindings/src/SwigCommon/Java/monkey_patch.i 2022-09-02 \
13:26:11 UTC (rev 9965) @@ -5,40 +5,19 @@
//---------------------- Renames to avoid Java/C++ API clashes \
---------------------------//
-/**
- * Rename SWIG's "delete" to "destroy". However the typemaps to do this cannot just \
rename the thing
- * we have to repeat the expected implementation verbatim with the new name
- */
-%typemap(javafinalize) SWIGTYPE %{
- protected void finalize() {
- destroy(); // renamed to prevent conflict with existing delete method
- }
-%}
-%typemap(javadestruct, methodname="destroy", methodmodifiers="public synchronized") \
SWIGTYPE
-{
- if (swigCPtr != 0) {
- if (swigCMemOwn) {
- swigCMemOwn = false;
- $jnicall;
- }
- swigCPtr = 0;
- }
-}
-%typemap(javadestruct_derived, methodname="destroy", methodmodifiers="public \
synchronized") SWIGTYPE
-{
- if (swigCPtr != 0) {
- if (swigCMemOwn) {
- swigCMemOwn = false;
- $jnicall;
- }
- swigCPtr = 0;
- }
- super.destroy();
-}
-
//Already defined in Java Exception so rename our proxy method
%rename(getExceptionStackTrace) MgException::GetStackTrace;
+//delete() is the name of the standard SWIG release method called on finalize(). \
Unfortunately this conflicts with +//MgPropertyDefinition::Delete, \
MgClassDefinition::Delete and MgFeatureSchema::Delete when java proxy clases for \
these +//classes are generated
+//
+//So rename the java proxies to these methods. This is the most minimally \
destructive change of all the available options +//available to us
+%rename(markAsDeleted) MgPropertyDefinition::Delete;
+%rename(markAsDeleted) MgClassDefinition::Delete;
+%rename(markAsDeleted) MgFeatureSchema::Delete;
+
//If we want to implement java.util.Collection, we need to rename this incompatible \
API (as add() is expected to //return boolean in the java.util.Collection API)
%rename(addItem) MgBatchPropertyCollection::Add;
_______________________________________________
mapguide-commits mailing list
mapguide-commits@lists.osgeo.org
https://lists.osgeo.org/mailman/listinfo/mapguide-commits
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic