Re: edbi on 64 bit machines?
- Posted by egis May 04, 2012
- 4209 views
In order for me to complie edbi_mysql.so I needed to set any includes of edbi to something relatively explicit such as
--include edbi/defs.e include std/../../edbi/edbi/defs.e
I dont know where edbi gets set explicitly.
In example.ex I needed to explicitly set include /usr/share/euphoria/edbi/edbi/edbi.e instead of include edbi/edbi.e
I put edbi_mysql.so in all of the places that are refrenced in edbi.e
public function open(sequence connection, object routines = 0 )
sequence _ = split(connection, "://")
sequence driver = _[1], conn_str = _[2]
sequence dll_name1 = sprintf("%s/%s/edbi_%s.%s", { driver_path, driver, driver, SHARED_LIB_EXT })
sequence dll_name2 = sprintf("%s/edbi_%s.%s", { driver_path, driver, SHARED_LIB_EXT })
sequence dll_name3 = sprintf("edbi_%s.%s", { driver, SHARED_LIB_EXT })
sequence dll_name4 = sprintf("/usr/local/lib/edbi_%s.%s", { driver, SHARED_LIB_EXT } )
sequence dll_name5 = sprintf("/usr/lib/edbi_%s.%s", { driver, SHARED_LIB_EXT } )
sequence m_seq = repeat(0, T_END)
dll_name* is:
dll_name1: ../drivers/mysql/edbi_mysql.so dll_name2: ../drivers/edbi_mysql.so dll_name3: edbi_mysql.so dll_name4: /usr/local/lib/edbi_mysql.so dll_name5: /usr/lib/edbi_mysql.so
open_dll would still returns 0.
I then hard coded dll_name1 to = "/usr/share/euphoria/edbi/drivers/mysql/edbi_mysql.so" and open_dll still returns 0.
Upon running edbi/examples/example.ex using my password and user gives the following message:
eui example.ex /usr/share/euphoria/include/std/error.e:50 in procedure crash() Could not open driver as: ../drivers/mysql/edbi_mysql.so ../drivers/edbi_mysql.so edbi_mysql.so ... called from /usr/share/euphoria/edbi/edbi/edbi.e:336 in function open() ... called from /usr/share/euphoria/edbi/examples/example.ex:26 --> See ex.err
Here is a listing of some of my directories:
ls -all /usr/share/euphoria/edbi/drivers/mysql/ total 1152 drwxrwxrwx 7 root root 4096 May 4 01:11 . drwxrwxrwx 6 root root 4096 May 4 11:09 .. drwx------ 2 root root 4096 May 3 22:39 build-045172 drwx------ 2 root root 4096 May 3 22:32 build-354788 drwx------ 2 root root 4096 May 3 22:43 build-412080 drwx-w--w- 2 root root 4096 May 3 22:11 build-555478 drwx-w--w- 2 root root 4096 May 3 22:25 build-781932 -rw-r-xr-x 1 root root 834 May 3 22:39 defs.e -rwxrwxrwx 1 root root 8231 May 4 01:10 edbi_mysql.e -rwxrwxrwx 1 root root 1097862 May 4 01:11 edbi_mysql.so -rw-rw-rw- 1 root root 242 May 1 06:29 eu.cfg -rw-rw-rw- 1 root root 14738 May 4 01:13 ex.err ls -all /usr/share/euphoria/edbi/drivers/ total 1104 drwxrwxrwx 6 root root 4096 May 4 11:09 . drwxrwxrwx 6 root root 4096 May 3 21:34 .. -rw-rw-rw- 1 root root 929 May 1 06:29 edbi.h -rwxr-xr-x 1 root root 1097862 May 4 11:09 edbi_mysql.so drwxrwxrwx 2 root root 4096 May 3 21:34 eusql drwxrwxrwx 7 root root 4096 May 4 01:11 mysql drwxrwxrwx 2 root root 4096 May 3 21:34 pgsql drwxrwxrwx 2 root root 4096 May 3 21:34 sqlite3 ls -all /usr/local/lib/edbi* -rwxr-xr-x 1 root root 1097862 May 4 11:07 /usr/local/lib/edbi_mysql.so ls -all /usr/lib/edbi* -rwxrwxrwx 1 root root 1097862 May 4 11:10 /usr/lib/edbi_mysql.so
I also wanted to say that I built a new 64 bit os from scratch just for this. I did not previously have easy access to a 64 bit machine and was relying on other people to run various tests. So I can now finaly run 64 bit programs on my local machine. That is why it took me some extra time between posts.
So since it was a fresh install I used:
euphoria: http://openeuphoria.org/eubins/linux/4.1.0/64-bit/euphoria-4.1.0-Linux-ix86_64-6b3fc2c6be44.tar.gz
and
edbi: http://bitbucket.org/jcowgar/edbi/get/default.tar.gz
Is there anything else that would be useful to know?
Thanks.

