Skip site navigation (1)Skip section navigation (2)
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>