diff --git a/doc/wikitex/MAPPING_TRICKS.tex b/doc/wikitex/MAPPING_TRICKS.tex index c00227f..404e192 100644 --- a/doc/wikitex/MAPPING_TRICKS.tex +++ b/doc/wikitex/MAPPING_TRICKS.tex @@ -21,6 +21,18 @@ rm CMakeCache.txt ; cmake . +=== Naming modules === + +The way BioLib uses CMake and SWIG depends on a strict naming +convention of modules. There is no freedom. The location of C sources +for a C library with name 'module' and version 1.0 is in: + + ./src/clibs/module-1.0 + +The Ruby mapping module is in: + + ./src/bindings/swig/ruby/module + === Debugging CMake === CMake can be run at any level in the tree. Start from the @@ -60,6 +72,17 @@ cmake . make +It may also be necessary to remove the shared libraries installed in +your Ruby/Perl/Python etc. tree. Unfortunately, because of naming +conventions, it is hard to version those, so make sure they don't link +in by accident. Typically: + + rm /usr/lib/ruby/1.8/i486-linux/biolib/example.so + +or + + rm /usr/lib/ruby/1.8/i486-linux/biolib/* + As a convention the shared libraries are built in ./src/clibs/module-1.0/build, so the mapper can find them easily. E.g. @@ -100,3 +123,16 @@ there will be a mismatch between the names in ./src/clibs/module-version and the build/libmodule-version.so names. +=== undefined symbol Init_module === + +A message like: + + ../stadenio/staden_io_lib.so: ../stadenio/staden_io_lib.so: undefined symbol: Init_staden_io_lib - ../stadenio/staden_io_lib.so (LoadError) + +indicates another naming problem. A grep in the module gives: + + ruby_staden_io_libRUBY_wrap.cxx:#define SWIG_init Init_stadenio + +which shows the Init function naming does not match the module +(stadenio rather than staden_io_lib). + diff --git a/src/bindings/swig/ruby/CMakeLists.txt b/src/bindings/swig/ruby/CMakeLists.txt index 36451b5..731b424 100644 --- a/src/bindings/swig/ruby/CMakeLists.txt +++ b/src/bindings/swig/ruby/CMakeLists.txt @@ -1,3 +1,3 @@ add_subdirectory (example) add_subdirectory (affyio) -add_subdirectory (stadenio) +add_subdirectory (staden_io_lib) diff --git a/src/bindings/swig/ruby/stadenio/CMakeLists.txt b/src/bindings/swig/ruby/staden_io_lib/CMakeLists.txt similarity index 76% rename from src/bindings/swig/ruby/stadenio/CMakeLists.txt rename to src/bindings/swig/ruby/staden_io_lib/CMakeLists.txt index 6200df6..1c2bcbb 100644 --- a/src/bindings/swig/ruby/stadenio/CMakeLists.txt +++ b/src/bindings/swig/ruby/staden_io_lib/CMakeLists.txt @@ -1,4 +1,4 @@ -# Make biolib_ruby_staden-io_lib module +# Make biolib_ruby_staden_io_lib module cmake_minimum_required(VERSION 2.6) ENABLE_TESTING() @@ -18,7 +18,7 @@ INCLUDE(CMakeBackwardCompatibilityC) FIND_PACKAGE(BioLibRuby) -# ADD_TEST(TestRubyAffyio ${RUBY_EXECUTABLE} -I../${M_NAME} ./../test/test_${M_NAME}.rb) +ADD_TEST(TestRubyAffyio ${RUBY_EXECUTABLE} -I../${M_NAME} ./../test/test_${M_NAME}.rb) INSTALL(TARGETS ${M_MODULE} LIBRARY DESTINATION ${RUBY_LIB_PATH}/biolib diff --git a/src/bindings/swig/ruby/staden_io_lib/ruby_staden_io_lib.i b/src/bindings/swig/ruby/staden_io_lib/ruby_staden_io_lib.i new file mode 100644 index 0000000..6b00cf5 --- /dev/null +++ b/src/bindings/swig/ruby/staden_io_lib/ruby_staden_io_lib.i @@ -0,0 +1,3 @@ +%module staden_io_lib + +%include ../../staden_io_lib.i diff --git a/src/bindings/swig/ruby/stadenio/ruby_staden_io_lib.i b/src/bindings/swig/ruby/stadenio/ruby_staden_io_lib.i deleted file mode 100644 index 8d04ae3..0000000 --- a/src/bindings/swig/ruby/stadenio/ruby_staden_io_lib.i +++ /dev/null @@ -1,3 +0,0 @@ -%module stadenio - -%include ../../stadenio.i diff --git a/src/bindings/swig/ruby/test/test_staden_io_lib.rb b/src/bindings/swig/ruby/test/test_staden_io_lib.rb new file mode 100644 index 0000000..823ff1f --- /dev/null +++ b/src/bindings/swig/ruby/test/test_staden_io_lib.rb @@ -0,0 +1,6 @@ + +require 'staden_io_lib' + +# result = Biolib::Example.my_mod(7,3) +# print "Biolib::Example.my_mod(7,3) renders #{result}\n" +exit 0 diff --git a/src/bindings/swig/stadenio.i b/src/bindings/swig/staden_io_lib.i similarity index 100% rename from src/bindings/swig/stadenio.i rename to src/bindings/swig/staden_io_lib.i