Closed GoogleCodeExporter closed 9 years ago
This, I'm sure, has to do with how I am compiling the FreeTDS binaries.
Unfortunately, C is really not my area of expertise and certainly not
cross-platform C. If you know how to fix this, please share.
Thanks.
Original comment by rsyr...@gmail.com
on 26 Jul 2012 at 6:59
I googled that "Undefined symbol "stdout"" message usually mean that some of
binary was compiled for Linux, not for FreeBSD. For example, here:
http://lists.freebsd.org/pipermail/freebsd-hackers/2005-December/014806.html
Unfortunately it's the only hint I have.
If I discover more I'll let you know.
Original comment by eugene.r...@gmail.com
on 26 Jul 2012 at 7:40
Looks like there is precompiled static libsybdb.a in pymssql package. How and
where it was built?
Original comment by eugene.r...@gmail.com
on 26 Jul 2012 at 7:48
You can build it for yourself on FreeBSD, see the docs for FreeTDS:
http://www.freetds.org/userguide/
Original comment by rsyr...@gmail.com
on 26 Jul 2012 at 8:52
I've managed to make it work. Manually build FreeTDS in FreeBSD environment and
replaced library and headers in package. Then 'python setup.py install' and it
works.
FYI FreeTDS version that work is 0.91, not 0.82. pymssql won't compile with
0.82 cause of some difference in sybdb.h
As suggestion, source pymssql package should probably include FreeTDS sources
instead of pre-built binaries. Also there another possibility: not to include
FreeTDS in source package at all but require path to installed FreeTDS on
pymssql setup. That's what Perl DBD::Sybase module does.
Original comment by eugene.r...@gmail.com
on 27 Jul 2012 at 7:45
I meet this problem, too.
As what Eugene mentioned, I remove the "libsybdb.a" file in prebuild folder
"freetds/nix_64/lib" and add "/usr/local/lib" into the "library_dirs" in
setup.py. Then, it works.
Original comment by lemonla...@gmail.com
on 24 Aug 2012 at 1:31
I'm pretty sure that the fix for bug #106
(http://code.google.com/p/pymssql/source/detail?r=88d15d12558625a4d7b8e2d518e24f
53c20223c9) will fix this issue too. Mac OS X is a FreeBSD-derivative and the
problem in both bugs is the same -- that we were erroneously trying to link
with a Linux binary on a non-Linux platform.
If you guys, could try again with FreeBSD on the hg tip and report back, that
would be great. If there are still problems on FreeBSD, reopen this (if that's
possible) or open a new issue.
Original comment by msabr...@gmail.com
on 7 Jan 2013 at 3:42
http://code.google.com/p/pymssql/source/detail?r=88d15d12558625a4d7b8e2d518e24f5
3c20223c9 won't fix, because on FreeBSD9, sys.platform == "freebsd9".
Original comment by yin...@gmail.com
on 28 May 2013 at 1:03
Original comment by msabr...@gmail.com
on 16 Jul 2013 at 5:39
yingbo, good point! I wasn't thinking straight.
OK, I think this commit should fix it:
https://code.google.com/p/pymssql/source/detail?r=0a34be16c31c52de15f0a59c3210f9
4cf110d533
The above commit should make it only use the bundled freetds in
freetds/nix_{32,64} when platform.system() == 'Linux'
Can someone with FreeBSD please verify?
Original comment by msabr...@gmail.com
on 16 Jul 2013 at 5:41
Original comment by msabr...@gmail.com
on 7 Aug 2013 at 2:58
I just tested this on FreeBSD 8.2. With no FreeTDS installed, `python setup.py
build_ext -i` did not try to use the bundled FreeTDS. It errors out saying that
it cannot find sqlfront.h. With the FreeTDS port installed, `python setup.py
build_ext -i` build pymssql successfully.
As an additional aid for FreeBSD users, I made the following commit:
https://code.google.com/p/pymssql/source/detail?r=b259f548e37442a4ca88711e9b6493
449bd12a3f
which will output some useful info about installing FreeTDS for FreeBSD users.
For example, here's the output when trying to install pymssql when there is no
FreeTDS installed:
[marca@ ~/dev/pymssql]$ python setup.py build_ext -i setup.py: platform.system() => 'FreeBSD' setup.py: Detected FreeBSD. For FreeBSD, you can install FreeTDS with FreeBSD Ports or by downloading and compiling it yourself.
If you use the Port, make sure to specify the option MSDBLIB.
If you build FreeTDS yourself, make sure to call ./configure with
--enable-msdblib.
setup.py: Not using bundled FreeTDS setup.py: include_dirs = ['/usr/local/include'] setup.py: library_dirs = ['/usr/local/lib'] running build_ext cythoning _mssql.pyx to _mssql.c building '_mssql' extension creating build creating build/temp.freebsd-8.2-RELEASE-amd64-2.7 cc -fno-strict-aliasing -O2 -pipe -Dwchar_t=wchar_t -DTHREAD_STACK_SIZE=0x20000 -fno-strict-aliasing -DNDEBUG -O2 -pipe -Dwchar_t=wchar_t -DTHREAD_STACK_SIZE=0x20000 -fno-strict-aliasing -fPIC -I/usr/local/include -I/usr/local/include/python2.7 -c _mssql.c -o build/temp.freebsd-8.2-RELEASE-amd64-2.7/_mssql.o -DMSDBLIB In file included from _mssql.c:314: freetds.h:1:22: error: sqlfront.h: No such file or directory ...
Marking this verified.
Original comment by msabr...@gmail.com
on 30 Aug 2013 at 5:27
Original issue reported on code.google.com by
eugene.r...@gmail.com
on 26 Jul 2012 at 3:31