Author: dmacvicar
Date: Thu Nov 5 00:58:25 2009
New Revision: 59308
URL: http://svn.opensuse.org/viewcvs/yast?rev=59308&view=rev
Log:
backport from trunk
Modified:
branches/SuSE-Code-11-SP1-Branch/ruby-bindings/package/yast2-ruby-bindings.changes
branches/SuSE-Code-11-SP1-Branch/ruby-bindings/src/ruby/CMakeLists.txt
branches/SuSE-Code-11-SP1-Branch/ruby-bindings/src/ruby/Y2RubyTypeConv.cc
branches/SuSE-Code-11-SP1-Branch/ruby-bindings/src/ruby/YRuby.cc
branches/SuSE-Code-11-SP1-Branch/ruby-bindings/src/ruby/YRubyNamespace.cc
Modified: branches/SuSE-Code-11-SP1-Branch/ruby-bindings/package/yast2-ruby-bindings.changes
URL: http://svn.opensuse.org/viewcvs/yast/branches/SuSE-Code-11-SP1-Branch/ruby-bindings/package/yast2-ruby-bindings.changes?rev=59308&r1=59307&r2=59308&view=diff
==============================================================================
--- branches/SuSE-Code-11-SP1-Branch/ruby-bindings/package/yast2-ruby-bindings.changes (original)
+++ branches/SuSE-Code-11-SP1-Branch/ruby-bindings/package/yast2-ruby-bindings.changes Thu Nov 5 00:58:25 2009
@@ -1,4 +1,13 @@
-------------------------------------------------------------------
+Thu Nov 5 00:50:44 CET 2009 - dmacvicar@suse.de
+
+- backport from trunk
+ * pass explicit rpath to linker so plugins are found
+ * support for nested namespaces (Foo::Bar)
+ (bnc #551881
+ * fix convertion of ruby hashes to ycp maps
+
+-------------------------------------------------------------------
Tue May 6 10:00:50 CEST 2008 - aj@suse.de
- Fix spec file for last change.
Modified: branches/SuSE-Code-11-SP1-Branch/ruby-bindings/src/ruby/CMakeLists.txt
URL: http://svn.opensuse.org/viewcvs/yast/branches/SuSE-Code-11-SP1-Branch/ruby-bindings/src/ruby/CMakeLists.txt?rev=59308&r1=59307&r2=59308&view=diff
==============================================================================
--- branches/SuSE-Code-11-SP1-Branch/ruby-bindings/src/ruby/CMakeLists.txt (original)
+++ branches/SuSE-Code-11-SP1-Branch/ruby-bindings/src/ruby/CMakeLists.txt Thu Nov 5 00:58:25 2009
@@ -3,8 +3,11 @@
SET(yast_ruby_module_SRCS
YCP.cc
- Y2RubyTypeConv.cc
+ Y2RubyTypePath.cc # YCP.cc -> ryast_path_init()
+ Y2RubyTypeTerm.cc # YCP.cc -> ryast_term_init()
+ Y2RubyTypeConv.cc # YCP.cc -> ycpvalue_2_rbvalue(), rbvalue_2_ycpvalue()
RubyLogger.cc
+ Y2RubyUtils.cc
RubyLogger.h
)
@@ -17,6 +20,7 @@
Y2RubyTypeConv.cc
Y2RubyTypePath.cc
Y2RubyTypeTerm.cc
+ Y2RubyUtils.cc
)
SET(ruby_yast_plugin_HEADERS
@@ -25,35 +29,79 @@
Y2RubyComponent.h
YRuby.h
YRubyNamespace.h
+ Y2RubyUtils.h
Y2RubyTypePath.h
Y2RubyTypeTerm.h
)
-# skip the full RPATH for the build tree
-SET(CMAKE_SKIP_BUILD_RPATH TRUE)
-# when building, use the install RPATH already
-# (so it doesn't need to relink when installing)
-SET(CMAKE_BUILD_WITH_INSTALL_RPATH TRUE)
-# the RPATH to be used when installing
-SET(CMAKE_INSTALL_RPATH "${LIB_INSTALL_DIR}/YaST2/plugins")
-# add the automatically determined parts of the RPATH
-# which point to directories outside the build tree to the install RPATH
-SET(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)
-
INCLUDE_DIRECTORIES( ${RUBY_INCLUDE_PATH} )
INCLUDE_DIRECTORIES( ${YAST_INCLUDE_DIR} )
-
+
+LINK_DIRECTORIES(${YAST_PLUGIN_DIR})
+
+ADD_DEFINITIONS( ${CC_FLAGS} -Wno-deprecated)
+
+#
+# Ruby -> YCP/YaST
+# ycp.rb + ycpx.so
+#
+
+
ADD_LIBRARY( ycpx SHARED ${yast_ruby_module_SRCS})
SET_TARGET_PROPERTIES( ycpx PROPERTIES PREFIX "" )
+
+#
+# Use rpath to find YaST plugin libs (wfm has static constructors :-( )
+#
+# According to http://www.cmake.org/Wiki/CMake_RPATH_handling(Always full RPATH,
+# tight control) CMake should be able to handle this. However, it somehow does
+# not work.
+#
+#SET_TARGET_PROPERTIES( ycpx PROPERTIES SKIP_BUILD_RPATH FALSE)
+#SET_TARGET_PROPERTIES( ycpx PROPERTIES BUILD_WITH_INSTALL_RPATH FALSE)
+#SET_TARGET_PROPERTIES( ycpx PROPERTIES INSTALL_RPATH_USE_LINK_PATH FALSE)
+#SET_TARGET_PROPERTIES( ycpx PROPERTIES INSTALL_RPATH "${YAST_PLUGIN_DIR}")
+#
+# So using an explicit linker option instead:
+# (http://www.cmake.org/pipermail/cmake/2008-January/019321.html)
+#
+SET ( CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} -Wl,-rpath,'${YAST_PLUGIN_DIR}'" )
+
TARGET_LINK_LIBRARIES( ycpx ${YAST_LIBRARY} )
TARGET_LINK_LIBRARIES( ycpx ${YAST_YCP_LIBRARY} )
+#
+# The WFM and SCR component can only be initialized statically
+# (e.g. through Y2CCWFM), thus we must link against the plugin libs
+# and set the executables 'rpath' accordingly
+#
TARGET_LINK_LIBRARIES( ycpx ${YAST_PLUGIN_WFM_LIBRARY} )
TARGET_LINK_LIBRARIES( ycpx ${YAST_PLUGIN_SCR_LIBRARY} )
TARGET_LINK_LIBRARIES( ycpx ${RUBY_LIBRARY} )
+
+
INSTALL(TARGETS ycpx LIBRARY DESTINATION ${RUBY_VENDORARCH_DIR} )
INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/ycp.rb DESTINATION ${RUBY_VENDORLIB_DIR} )
+# rdoc
+SET(rdoc_dir "${CMAKE_CURRENT_BINARY_DIR}/html")
+ADD_CUSTOM_COMMAND (
+ OUTPUT ${rdoc_dir}
+ COMMAND ${CMAKE_COMMAND} -E echo_append "Creating rdoc documentation ..."
+ COMMAND rm -rf ${rdoc_dir}
+ COMMAND rdoc -o ${rdoc_dir} ycp.rb YCP.cc
+ COMMAND ${CMAKE_COMMAND} -E echo "Done."
+ WORKING_DIRECTORY ${CMAKE_SOURCE_DIR}/src/ruby
+ DEPENDS ${CMAKE_SOURCE_DIR}/src/ruby/YCP.cc ${CMAKE_SOURCE_DIR}/src/ruby/*.rb
+)
+ADD_CUSTOM_TARGET(ruby_rdoc ALL DEPENDS "${rdoc_dir}")
+ADD_DEPENDENCIES(ruby_rdoc ycpx)
+
+#
+# YCP -> Ruby
+# libpy2lang_ruby (YCP plugin library)
+#
+
ADD_LIBRARY( py2lang_ruby SHARED ${ruby_yast_plugin_SRCS})
TARGET_LINK_LIBRARIES( py2lang_ruby ${YAST_LIBRARY} )
TARGET_LINK_LIBRARIES( py2lang_ruby ${YAST_YCP_LIBRARY} )
@@ -61,4 +109,4 @@
TARGET_LINK_LIBRARIES( py2lang_ruby ${RUBY_LIBRARY} )
INSTALL(TARGETS py2lang_ruby LIBRARY DESTINATION ${YAST_PLUGIN_DIR} )
-#SET_TARGET_PROPERTIES( y2lang_ruby PROPERTIES PREFIX "" )
\ No newline at end of file
+#SET_TARGET_PROPERTIES( y2lang_ruby PROPERTIES PREFIX "" )
Modified: branches/SuSE-Code-11-SP1-Branch/ruby-bindings/src/ruby/Y2RubyTypeConv.cc
URL: http://svn.opensuse.org/viewcvs/yast/branches/SuSE-Code-11-SP1-Branch/ruby-bindings/src/ruby/Y2RubyTypeConv.cc?rev=59308&r1=59307&r2=59308&view=diff
==============================================================================
--- branches/SuSE-Code-11-SP1-Branch/ruby-bindings/src/ruby/Y2RubyTypeConv.cc (original)
+++ branches/SuSE-Code-11-SP1-Branch/ruby-bindings/src/ruby/Y2RubyTypeConv.cc Thu Nov 5 00:58:25 2009
@@ -49,7 +49,7 @@
int n = NUM2LONG(rb_funcall(keys, rb_intern("size"), 0));
for ( int i=0; i