Thread: libreadline only used with psql?

libreadline only used with psql?

From
Chris Campbell
Date:
I've grepped through the source code, and the only thing I can find  
that uses readline (or libedit) is psql.

Is that correct?

If that's the case, how hard would it be to link only psql with  
readline (or libedit)?

Currently, if you ./configure with readline support, -lreadine (or - 
ledit) is added to the used-by-everything LIBS variable. Can we  
create a PSQL_LIBS variable and have ./configure populate that with  
libraries that will only be needed by psql? That way, ./configure can  
put -lreadline there and keep it out of LIBS so all the other  
binaries (postmaster, pg_ctl, pg_dump, pg_restore, etc) won't require  
it.

This request would be accompanied by a patch, but I wanted to ask  
about the feasibility of a PSQL_LIBS variable before going down that  
road.

Thanks!

- Chris



Re: libreadline only used with psql?

From
Peter Eisentraut
Date:
Chris Campbell wrote:
> If that's the case, how hard would it be to link only psql with
> readline (or libedit)?

This is already addressed, more or less, in 8.2.

-- 
Peter Eisentraut
http://developer.postgresql.org/~petere/


Re: libreadline only used with psql?

From
Tom Lane
Date:
Peter Eisentraut <peter_e@gmx.net> writes:
> Chris Campbell wrote:
>> If that's the case, how hard would it be to link only psql with
>> readline (or libedit)?

> This is already addressed, more or less, in 8.2.

We've suppressed libreadline in the backend, but not in any of the other
client programs (eg, pg_dump still has it).  Not sure whether Chris
really cares about those.  In any case, I think it's inappropriate
for configure to know exactly which programs need which libraries.
It'd probably be more maintainable in the long run to propagate
src/backend/Makefile's technique into the other Makefiles:

# The backend doesn't need everything that's in LIBS, however
LIBS := $(filter-out -lz -lreadline -ledit -ltermcap -lncurses -lcurses, $(LIBS))

with suitable adjustment of the filter list for each program.
(But possibly "-lreadline -ledit -ltermcap -lncurses -lcurses"
should be factored out as a READLINE_LIBS variable or some such.)
        regards, tom lane