Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 15 Jan 2015 07:37:47 -0800
From:      Waitman Gobble <gobble.wa@gmail.com>
To:        Dewayne Geraghty <dewayne.geraghty@heuristicsystems.com.au>
Cc:        freebsd-ports@freebsd.org
Subject:   Re: postgresql93 port and libedit
Message-ID:  <CAFuo_fyNX22TP=TQDo%2BLjvmL7FPK8yCEz7Q2aV%2BCTU08GCc77w@mail.gmail.com>
In-Reply-To: <54B779BC.1040501@heuristicsystems.com.au>
References:  <CAFuo_fzX5i357NofZ2DFkz_=qDZzdNdGKdT8RfhoTN-wo=YDSA@mail.gmail.com> <54B779BC.1040501@heuristicsystems.com.au>

next in thread | previous in thread | raw e-mail | index | archive | help
On Thu, Jan 15, 2015 at 12:26 AM, Dewayne Geraghty
<dewayne.geraghty@heuristicsystems.com.au> wrote:
>
> On 15/01/2015 5:27 PM, Waitman Gobble wrote:
>> Hi,
>>
>> I noticed that postgresql93-client port pulls in readline, which is GPLv3.
>> When I get rid of readline in Makefile 'USES' and also change the
>> bottom of the Makefile in postgresql93-server,
>>
>> ...
>> .include "${.CURDIR}/../postgresql92-server/Makefile"
>>
>> CONFIGURE_ARGS+=--with-libedit-preferred
>>
>>
>> It builds without readline and links against libedit in base:
>>
>>
>> # ldd /usr/local/bin/psql
>> /usr/local/bin/psql:
>>         libpq.so.5 => /usr/local/lib/libpq.so.5 (0x800885000)
>>         libintl.so.8 => /usr/local/lib/libintl.so.8 (0x800ab3000)
>>         libssl.so.7 => /usr/lib/libssl.so.7 (0x800cbe000)
>>         libedit.so.7 => /lib/libedit.so.7 (0x800f2a000)
>>         libthr.so.3 => /lib/libthr.so.3 (0x801161000)
>>         libc.so.7 => /lib/libc.so.7 (0x801385000)
>>         libcrypto.so.7 => /lib/libcrypto.so.7 (0x80171e000)
>>         libncursesw.so.8 => /lib/libncursesw.so.8 (0x801b16000)
>>
>>
>>
>> .. there's a link to gettext libintl but that's LGPL (2.1)
>>
>> Anyhow I haven't done testing with psql linked to libedit instead of
>> readline.. There's some noise about this a few years back but I don't
>> see anything recent. Anyone have any 'bad' recent experience with
>> libedit? pitfalls? It might be good to have libedit added as an
>> option. I'm working on an appliance and the readline dependency kinda
>> messes things up a bit for me. Obviously other remedies beyond ports
>> but I think it could be a nice option. Comments appreciated.
>>
>> Thanks,
>>
>
> Good catch Waitman.  And thanks for sharing an approach to avoid GPLv3
> inclusion.
>
> Though you've raised an interesting question as to whether the licencing
> information displayed by "pkg info" is accurate where a port pulls in
> mandatory dependencies that use a more restrictive open source licence.
>
> Of the subset of ports that I use (servers only), the ports [licences]
> that may be of concern are:  python27 [PSFL], mediawiki [GPLv2],
> mysql56-server [from mysql web GPL], pcre [BSD3CLAUSE] also use readline
> and aren't tagged as GPLv3 which they probably should as FreeBSD
> metaports requires readline?
>
>
> _______________________________________________
> freebsd-ports@freebsd.org mailing list
> http://lists.freebsd.org/mailman/listinfo/freebsd-ports
> To unsubscribe, send any mail to "freebsd-ports-unsubscribe@freebsd.org"



There seems to be an issue that makes this problem more complicated,
could be worked out. I tried building in poudiere without any
readline, configure fails. Adding readline back to USES in client
Makefile gets a build, but --with-libedit-preferred links to base
libedit.

In postgresql configure script, still looks for readline even if it
uses libedit. So the package built by poudiere still pulls in
readline.

ie,

if test "$with_readline" = yes; then

{ $as_echo "$as_me:$LINENO: checking for library containing readline" >&5
$as_echo_n "checking for library containing readline... " >&6; }
if test "${pgac_cv_check_readline+set}" = set; then
  $as_echo_n "(cached) " >&6
else
  pgac_cv_check_readline=no
pgac_save_LIBS=$LIBS
if test x"$with_libedit_preferred" != x"yes"
then    READLINE_ORDER="-lreadline -ledit"
else    READLINE_ORDER="-ledit -lreadline"
fi


so basically it's setting the READLINE_ORDER with both libedit and
libreadline but in alternate order depending on 'preferred'

after a build using 'preferred' the client is linked to libedit, but
pkg still pulls in readline as dependency.

# pkg install postgresql93-server
...
New packages to be INSTALLED:
        postgresql93-server: 9.3.5
        postgresql93-client: 9.3.5
        readline: 6.3.8
...


# ldd /usr/local/bin/psql
/usr/local/bin/psql:
        libpq.so.5 => /usr/local/lib/libpq.so.5 (0x2009a000)
        libintl.so.8 => /usr/local/lib/libintl.so.8 (0x200c9000)
        libssl.so.7 => /usr/lib/libssl.so.7 (0x200db000)
        libedit.so.7 => /lib/libedit.so.7 (0x2013e000)
        libthr.so.3 => /lib/libthr.so.3 (0x20173000)
        libc.so.7 => /lib/libc.so.7 (0x20200000)
        libcrypto.so.7 => /lib/libcrypto.so.7 (0x20400000)
        libncursesw.so.8 => /lib/libncursesw.so.8 (0x2019e000)
        libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x20384000)


Apparently this behavior is because libedit doesn't work properly on
some (non BSD) platforms. (?)  ...reference: the notes in the
configure script.
So some work would need to be done to alter the configure script and
pull out the readline stuff, (but should probably be an option). This
makes for a more complicated port, but it's doable. For my own project
I can make a custom port with readline stripped out, but for everyone
with an 'optionally really remove readline' option that would be a
bigger challenge I think.


-- 
Waitman Gobble
Los Altos California USA
510-830-7975



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAFuo_fyNX22TP=TQDo%2BLjvmL7FPK8yCEz7Q2aV%2BCTU08GCc77w>