Date: Wed, 17 Aug 2011 21:54:16 +0400 From: Ruslan Mahmatkhanov <cvs-src@yandex.ru> To: FreeBSD Ports Mailing List <ports@freebsd.org> Cc: Chris Rees <crees@freebsd.org>, Palle Girgensohn <girgen@FreeBSD.org> Subject: Re: Some concerns about our postgresql and plpython ports Message-ID: <4E4C0048.5090509@yandex.ru> In-Reply-To: <4E4A8AB7.5080501@yandex.ru> References: <4E4A8AB7.5080501@yandex.ru>
next in thread | previous in thread | raw e-mail | index | archive | help
So i split this up to three pr's as was suggested by Mark: 1. Python pkg-plist fix for WITHOUT_THREADS case: http://www.freebsd.org/cgi/query-pr.cgi?pr=159842 2. postgresql-plpython unbreak: http://www.freebsd.org/cgi/query-pr.cgi?pr=159843 3. postgresql9x-client unbreak: http://www.freebsd.org/cgi/query-pr.cgi?pr=159844 Palle (maintainer of postgresql ports) cc'ed. Thanks in advance for handling this. PS. I just found that the similar plist fix was submitted for python26 a year ago: http://www.freebsd.org/cgi/query-pr.cgi?pr=ports/148406 Ruslan Mahmatkhanov wrote on 16.08.2011 19:20: > Hi there. > > We have databases/postgresql-plpython, that is marked as broken with > this message: "Does not configure without threaded Python", but this is > totally wrong - it actually does. I checked the internets and found > this: [1] and [2]. People are actually had problems when building it > WITH threaded python (that is built with threads support by default). > Rebuilding python w/o threads support do the trick actually. But if you > will try to build this port with threads-aware python, you'll get this > error message: > > """ > checking whether Python is compiled with thread support... yes > configure: error: threaded Python not supported on this platform > """ > > But the funny thing that it actually builds and works fine with threaded > python too :). We just need to apply this patch to postgresqlXX-server's > configure: > > - openbsd*|freebsd*) > + openbsd*) > > And then there is no error: > > """ > checking whether Python is compiled with thread support... yes > checking for main in -lm... yes > """ > > So what i did - i have tested the build and runtime of 8.4, 9.0, 9.1b3. > both with threads-aware python and threadless python (version 2.7.2, > runtime is tested only on 9-CURRENT, but with all the three PostgreSQL > versions). > And all of this configurations works well. For testing i'm used sample > function (pymax.sql) from PosgreSQL manual and simple script > (plpython.sh), that adds/removes and runs the function: > > """ > [mrk@smeshariki2 plpython]> cat pymax.sql > CREATE FUNCTION pymax (a integer, b integer) > RETURNS integer > AS $$ > if a > b: > return a > return b > $$ LANGUAGE plpythonu; > """ > > """ > [mrk@smeshariki2 plpython]> cat plpython.sh > #!/bin/sh > > createlang -U pgsql plpythonu test > psql -U pgsql test -f pymax.sql > psql -U pgsql test -c "select pymax(1,2)" > psql -U pgsql test -c "drop function pymax(a integer, b integer)" > droplang -U pgsql plpythonu test > """ > > To build databases/postgresql-plpython with PostgreSQL 9.1b3 i've used > patch from [4] by Martin Neubauer <mn at shodan dot homeunix dot net>, > it is also included into my patch [3]. Updated regexp also working > fine with 8.4 and 9.0. > > plpython module for 9.0 and 9.1 was renamed to plpython2.so, but there > is also plpython.so symlink in 9.0 that points to plpython2.so. 9.1 also > installs some extension files, so i fixed pkg-plists accordingly. > > Since 9.0 PostgreSQL guys use docbook for building all the > documentation, including man-pages. They ever listed all the > dependencies needed on FreeBSD to make it build. See [5]. But because > our postgresql-client ports didn't include needed dependencies, their > build are broken. In particular: > > postgresql91-client is broken on FreeBSD-8.2 > postgresql90-client is broken on FreeBSD-7.4 > postgresql91-client is broken on FreeBSD-7.4 > > So i have fixed this too by adding this deps to the ports. And i'm not > see another solution. We need man-pages for postgresql9x-client, and > man-pages needs all that docbook stuff. > > To make lang/python27 build without threads under tinderbox, i was > forced to fix it's plist. Please see patch [6]. Probably similar patch > should be applied against other python versions. > > The plpython port is unmantained, so please commit this anybody. > Below are build logs of various configurations. > > Threads-aware python: > --------------------- > 8.2: http://happy-nation.by.ru/ports/tb/8.2/postgresql-plpython-8.4.8_1.log > 8.2: http://happy-nation.by.ru/ports/tb/8.2/postgresql-plpython-9.0.4_1.log > 8.2: > http://happy-nation.by.ru/ports/tb/8.2/postgresql-plpython-9.1.b3_1.log > 7.4: http://happy-nation.by.ru/ports/tb/7.4/postgresql-plpython-8.4.8_1.log > 7.4: http://happy-nation.by.ru/ports/tb/7.4/postgresql-client-9.0.4_1.log > 7.4: > http://happy-nation.by.ru/ports/tb/7.4/postgresql-plpython-9.1.b3_1.log > > Threadless python: > ------------------ > 8.2: > http://happy-nation.by.ru/ports/tb/8.2/postgresql-plpython-8.4.8_1-wo-threads.log > > 8.2: > http://happy-nation.by.ru/ports/tb/8.2/postgresql-plpython-9.0.4_1-wo-threads.log > > 8.2: > http://happy-nation.by.ru/ports/tb/8.2/postgresql-plpython-9.1.b3_1-wo-threads.log > > 7.4: > http://happy-nation.by.ru/ports/tb/7.4/postgresql-plpython-8.4.8_1-wo-threads.log > > 7.4: > http://happy-nation.by.ru/ports/tb/7.4/postgresql-plpython-9.0.4_1-wo-threads.log > > 7.4: > http://happy-nation.by.ru/ports/tb/7.4/postgresql-plpython-9.1.b3_1-wo-threads.log > > > To sum up what is included into patch [3]: > - databases/postgresql-plpython no more marked as broken, since it > builds both with threaded and threaless python on all supported > FreeBSD versions with three major PostgreSQL branches > - added configure patch for PostgreSQL 8.4, 9.0, 9.1 to make it able to > build plpython threads-aware python > - merge changed regexp to make plpython built with 9.1b3 from [4] > - fix plists for postgresql9x-server/pkg-plist-plpython (plpython2.so > and extensions) > - fix build of postgresql9x-client (docbook related deps added) > - portrevisions for -client and -plpython bumped > > I know that 8.2 and 8.3 are still supported branches, but i'm not much > interested in them, so hadn't ever tried them, but believe that the same > fixes applies. > Please let me know if anybody actually need them, so i'll take a look > at it in my spare time. > > Sorry for the long letter and my engrish :) > > [1] http://forums.freebsd.org/showthread.php?t=19472 > [2] > http://postgresql.1045698.n5.nabble.com/Threaded-python-on-FreeBSD-td1955052.html > > [3] http://happy-nation.by.ru/ports/postgresql-plpython-unbreak.diff.txt > [4] http://www.freebsd.org/cgi/query-pr.cgi?pr=ports/159319 > [5] http://www.postgresql.org/docs/9.0/static/docguide-toolsets.html > [6] > http://happy-nation.by.ru/ports/fix-python27-plist-without-threads.diff.txt > > > > > > > python -c "import sys; print(int('thread' in sys.builtin_module_names))" > postmaster -V | sed -n > 's/.*PostgreSQL[^0-9]*\([0-9][0-9]*\)\.\([0-9][0-9]*\).*/\1\2/p' > pg_config --version | sed -n > 's/PostgreSQL[^0-9]*\([0-9][0-9]*\)\.\([0-9][0-9]*\).*/\1\2/p' > -- Regards, Ruslan
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?4E4C0048.5090509>