RedBeardLab / rediSQL

Redis module that provides a completely functional SQL database
https://redisql.com
Other
1.55k stars 150 forks source link

"libredis_sql.so failed to load: dlopen(libredis_sql.so, 6): no suitable image found" on MAC OS #27

Closed mountenmama closed 6 years ago

mountenmama commented 6 years ago

I am running redis "Redis 4.0.8 (00000000/0) 64 bit" on MAC OS 10.12.6. Loading libredis_sql.so (v0.3.1) gives the following error message:

32342:M 15 Mar 13:06:36.198 # Server initialized 32342:M 15 Mar 13:06:36.199 # Module libredis_sql.so failed to load: dlopen(libredis_sql.so, 6): no suitable image found. Did find: libredis_sql.so: unknown file type, first eight bytes: 0x7F 0x45 0x4C 0x46 0x02 0x01 0x01 0x00 /Volumes/eswitch/tools/redis-stable/src/libredis_sql.so: unknown file type, first eight bytes: 0x7F 0x45 0x4C 0x46 0x02 0x01 0x01 0x00 32342:M 15 Mar 13:06:36.199 # Can't load module from libredis_sql.so: server aborting

Should libredis_sql.so (v0.3.1) be working on MAC OS or has it to be recompiled for Mac?

siscia commented 6 years ago

Hi,

actually I have no idea how shared modules work on Mac, nor I do have a Mac machine, so this might be a little slow to figure out.

Anyway, I believe that Mac use a different type of files called "bundles", at least judging from this answer in StackOverflow https://stackoverflow.com/questions/2339679/what-are-the-differences-between-so-and-dylib-on-osx

I guess it will be quite simple to generate those bundles, but I may be completely wrong.

To wrap it up: 1) I guess it should be recompiled for mac 2) I could expect it to be quite simple to cross-compile from my unix machine into mac bundles, but I may be completely wrong.

I will take a fast look this evening, but if you need it now the best thing you can do is to recompile it yourself.

If you are developing in your mac (so you have a reasonably new clang and a compiler) it should be quite easy to compile everything, offset the need to download the rust ecosystem, which I understand may be a an hurdle for some.

Thanks so much for your report :)

mountenmama commented 6 years ago

Thank you for your quick feedback.

There is still some time. Hence, I don't need it right now. It would be great if you can come up with a solution or at least a hint by mid of next week.

siscia commented 6 years ago

I believe that another solution could be to use the docker images.

You can just run docker run siscia/redisql:latest (open the necessary ports)

For testing purposes it should be enough...

mountenmama commented 6 years ago

You're absolutely right. Let me give it a try...

mountenmama commented 6 years ago

I am getting

docker run siscia/redisql:latest Unable to find image 'siscia/redisql:latest' locally docker: Error response from daemon: manifest for siscia/redisql:latest not found.

for docker run siscia/redisql:latest

siscia commented 6 years ago

Humm, that is quite weird, but I can confirm the issue.

Try with:

docker run siscia/redisql:v0.3.0

siscia commented 6 years ago

The difference between 0.3.0 and 0.3.1 are minor.

Be aware that in 3.0 you need to manually activate support for foreign keys (otherwise SQLite will not check if the key actually exists in the foreign table).

To activate it, if you need it just run PRAGMA foreign_keys = ON;.

First create a DB: REDISQL.CREATE_DB DB The run the pragma to add the foreign key support REDISQL.EXEC DB "PRAGMA foreign_keys = ON;"

siscia commented 6 years ago

Also, please let me know how your test go.

Any feedback are very welcome. :)

siscia commented 6 years ago

I re-upload the version 0.3.1 to the docker register.

Also, I tried very naively to cross compile for mac but without much success... I will explore the issue further. Thanks for your patience.

siscia commented 6 years ago

@mountenmama

Did docker solved your issues? You still need the mac build?

mountenmama commented 6 years ago

Excuse my delay. I had to pause the redisql evaluation. I'll come back to you as soon as I find more time again to dive in...

siscia commented 6 years ago

Do we have any news on this?

Providing the mac build is quite complex, and I don't think it will be so useful in production.

If docker is enough I would suggest to go ahead with it.

mountenmama commented 6 years ago

Docker is enough. This topic can be closed. Thank you.

siscia commented 6 years ago

Great!

If you have any feedback please let me know!

Also, I am looking for beta tester for the PRO version, if you are interested please just send me an email ;)