Am 20.05.2014 um 15:55 schrieb Sylvain Joyeux <[email protected]>:

> No, I would go with linking the orocos.rb module against typelib_ruby, which 
> is perfectly legal.

This is only legal on unix based systems because they do not distinct between 
modules and shared libraries. OS X is using Mach-O as binary format and here it 
is not allowed to directly link against modules.

In the case of orocos.rb the only function in question is typelib_get which can 
easily be implemented as inline function or we could simply copy it to 
orocos.rb. 

 /* Returns the Value object wrapped into +value+ */
159 Value typelib_get(VALUE value)
160 {
161     void* object = 0;
162     Data_Get_Struct(value, void, object);
163     return *reinterpret_cast<Value*>(object);
164 }

Any objections if we copy the function to oroocs.rb and remove all includes to 
typelib_ruby?

Greets Alex

 
> 
> I do believe that there is already a pkg-config file that references 
> typelib_ruby.
> 
> 
> On Tue, May 20, 2014 at 3:52 PM, Alexander Duda <[email protected]> 
> wrote:
> 
> Am 20.05.2014 um 15:17 schrieb Sylvain Joyeux <[email protected]>:
> 
>> 
>> 
>> 
>> On Tue, May 20, 2014 at 11:49 AM, Alexander Duda <[email protected]> 
>> wrote:
>> Hi,
>> 
>> is there a particular reason why toolchain-2.7 is not merged into
>> master?
>> Because the orocos toolchain developers develop on the side because that's 
>> easier for them, and believe that it is my job to merge the stuff back into 
>> master proper. We therefore end up with a fork of typelib, which we wanted 
>> to avoid in the first place [/rant]
>>  
>> I am asking because the current master is still using dyncall
>> 
>> 0.6 which is not compatible with OS X 10.9.
>> dyncall is being unused for a pretty long time in typelib ... I think that 
>> if it is indeed problematic, we should probably just rip out the support for 
>> method calls from typelib altogether. (These days, ffi would be a much 
>> better choice) 
> 
> Ok, I wil have a look.
> 
>> 
>> Furthermore there are a number of issues with the current build on OSX
>> but I think they also apply for other Os:
>> * rpath is not turned on for all targets therefore typelib_ruby cannot
>> find some libs
>> * rpath seperator is ";" instead of the used ":"
>> * typelib_ruby is build as module. But at the same time its header are
>> used by orocos.rb. This results in undefined references which works for
>> gcc but not for clang. Therefore, either we should install a typlib_ruby
>> lib or use header only.
>> ??? Don't understand this. You are allowed to link to a module. Moreover, 
>> the whole point of having dynamically loadable modules is that undefined 
>> references should be allowed. We should definitely not install two versions 
>> of the same shared object.
> 
> According to 
> http://stackoverflow.com/questions/7619607/how-portable-is-linking-executables-against-loadable-modules
>  this is not supported on OS X. In general the question is if this is good 
> practice or not?
> 
> The error message is for tools/orocos.rb:
> Undefined symbols for architecture x86_64:
>   "typelib_get(unsigned long)", referenced from:
>       local_output_port_write(unsigned long, unsigned long, unsigned long) in 
> ruby_task_context.cc.o
>       local_input_port_read(unsigned long, unsigned long, unsigned long, 
> unsigned long) in ruby_task_context.cc.o
>       property_do_read(unsigned long, unsigned long, unsigned long, unsigned 
> long) in datahandling.cc.o
>       property_do_write(unsigned long, unsigned long, unsigned long, unsigned 
> long) in datahandling.cc.o
>       attribute_do_read(unsigned long, unsigned long, unsigned long, unsigned 
> long) in datahandling.cc.o
>       attribute_do_write(unsigned long, unsigned long, unsigned long, 
> unsigned long) in datahandling.cc.o
>       operation_call(unsigned long, unsigned long, unsigned long, unsigned 
> long, unsigned long, unsigned long) in operations.cc.o
> 
> I am not sure if we should tune clang to not complain about undefined 
> references. According to "http://www.akkadia.org/drepper/dsohowto.pdf“ 
> this is should be avoided: "It is therefore highly recommended to never 
> depend on undefined symbols.“
> 
> The options I see are:
> * tune clang
> * header only typelib_ruby interface 
> * installing typelib_ruby interface as system library 
> 
> You would go for tune clang?
> 
> Greets Alex
> 
> 
>> 
>> In other words, I think there *is* a way to setup typelib_ruby so that clang 
>> does not complain. What specific error do you get ?
>> I have a merged and fixed version on my machine. Shall I create a pull
>> request?
>> Yes, on github.
>> 
>> Sylvain
> 
> 
> 
> --
> Dipl.-Ing. Alexander Duda
> Unterwasserrobotik
> Robotics Innovation Center
> 
> Hauptgeschäftsstelle Standort Bremen:
> DFKI GmbH
> Robotics Innovation Center
> Robert-Hooke-Straße 1
> 28359 Bremen, Germany
> 
> Tel.:     +49 421 178 45-6620
> Zentrale: +49 421 178 45-0
> Fax:      +49 421 178 45-4150 (Faxe bitte namentlich kennzeichnen)
> E-Mail:   [email protected]
> 
> Weitere Informationen: http://www.dfki.de/robotik
> -----------------------------------------------------------------------
> Deutsches Forschungszentrum fuer Kuenstliche Intelligenz GmbH
> Firmensitz: Trippstadter Straße 122, D-67663 Kaiserslautern
> Geschaeftsfuehrung: Prof. Dr. Dr. h.c. mult. Wolfgang Wahlster
> (Vorsitzender) Dr. Walter Olthoff
> Vorsitzender des Aufsichtsrats: Prof. Dr. h.c. Hans A. Aukes
> Amtsgericht Kaiserslautern, HRB 2313
> Sitz der Gesellschaft: Kaiserslautern (HRB 2313)
> USt-Id.Nr.:    DE 148646973
> Steuernummer:  19/673/0060/3
> 
> 


--
Dipl.-Ing. Alexander Duda
Unterwasserrobotik
Robotics Innovation Center

Hauptgeschäftsstelle Standort Bremen:
DFKI GmbH
Robotics Innovation Center
Robert-Hooke-Straße 1
28359 Bremen, Germany

Tel.:     +49 421 178 45-6620
Zentrale: +49 421 178 45-0
Fax:      +49 421 178 45-4150 (Faxe bitte namentlich kennzeichnen)
E-Mail:   [email protected]

Weitere Informationen: http://www.dfki.de/robotik
-----------------------------------------------------------------------
Deutsches Forschungszentrum fuer Kuenstliche Intelligenz GmbH
Firmensitz: Trippstadter Straße 122, D-67663 Kaiserslautern
Geschaeftsfuehrung: Prof. Dr. Dr. h.c. mult. Wolfgang Wahlster
(Vorsitzender) Dr. Walter Olthoff
Vorsitzender des Aufsichtsrats: Prof. Dr. h.c. Hans A. Aukes
Amtsgericht Kaiserslautern, HRB 2313
Sitz der Gesellschaft: Kaiserslautern (HRB 2313)
USt-Id.Nr.:    DE 148646973
Steuernummer:  19/673/0060/3

_______________________________________________
Rock-dev mailing list
[email protected]
http://www.dfki.de/mailman/cgi-bin/listinfo/rock-dev

Reply via email to