Re: [HACKERS] Should libedit be preferred to libreadline?

From: Bruce Momjian <pgman(at)candle(dot)pha(dot)pa(dot)us>
To: Bruce Momjian <pgman(at)candle(dot)pha(dot)pa(dot)us>
Cc: Michael Paesold <mpaesold(at)gmx(dot)at>, Peter Eisentraut <peter_e(at)gmx(dot)net>, pgsql-patches(at)postgresql(dot)org, Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>, Chris Browne <cbbrowne(at)acm(dot)org>
Subject: Re: [HACKERS] Should libedit be preferred to libreadline?
Date: 2005-12-04 03:52:22
Message-ID: 200512040352.jB43qMn02416@candle.pha.pa.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers pgsql-patches pgsql-ports


Patch applied.

---------------------------------------------------------------------------

Bruce Momjian wrote:
> Michael Paesold wrote:
> > Bruce Momjian wrote:
> >
> > > I wanted to distinguish libreadline from readline-functionality. Why is
> > > it Readline?
> >
> > "The GNU Readline Library" is usually referred to as "Readline", not
> > "libreadline". The offical name for "libedit" is really "Libedit".
> >
> > See e.g.:
> > http://sourceforge.net/projects/libedit/
> > http://cnswww.cns.cwru.edu/~chet/readline/rltop.html
> >
> > IMHO libreadline does not sound good.
>
> OK, I call it GNU Readline now:
>
> --with-bonjour build with Bonjour support
> --with-openssl build with OpenSSL support
> --with-libedit-preferred prefer BSD Libedit over GNU Readline
> --without-readline do not use GNU Readline / BSD Libedit line editing
> --without-zlib do not use Zlib
>
> --
> Bruce Momjian | http://candle.pha.pa.us
> pgman(at)candle(dot)pha(dot)pa(dot)us | (610) 359-1001
> + If your life is a hard drive, | 13 Roberts Road
> + Christ can be your backup. | Newtown Square, Pennsylvania 19073

> Index: configure
> ===================================================================
> RCS file: /cvsroot/pgsql/configure,v
> retrieving revision 1.462
> diff -c -c -r1.462 configure
> *** configure 5 Nov 2005 16:42:00 -0000 1.462
> --- configure 3 Dec 2005 15:25:44 -0000
> ***************
> *** 890,896 ****
> --with-pam build with PAM support
> --with-bonjour build with Bonjour support
> --with-openssl build with OpenSSL support
> ! --without-readline do not use Readline
> --without-zlib do not use Zlib
> --with-gnu-ld assume the C compiler uses GNU ld [default=no]
>
> --- 890,897 ----
> --with-pam build with PAM support
> --with-bonjour build with Bonjour support
> --with-openssl build with OpenSSL support
> ! --with-libedit-preferred prefer BSD Libedit over GNU Readline
> ! --without-readline do not use GNU Readline / BSD Libedit line editing
> --without-zlib do not use Zlib
> --with-gnu-ld assume the C compiler uses GNU ld [default=no]
>
> ***************
> *** 3772,3777 ****
> --- 3773,3809 ----
>
>
> #
> + # Prefer libedit
> + #
> +
> +
> +
> + # Check whether --with-libedit-preferred or --without-libedit-preferred was given.
> + if test "${with_libedit_preferred+set}" = set; then
> + withval="$with_libedit_preferred"
> +
> + case $withval in
> + yes)
> + :
> + ;;
> + no)
> + :
> + ;;
> + *)
> + { { echo "$as_me:$LINENO: error: no argument expected for --with-libedit-preferred option" >&5
> + echo "$as_me: error: no argument expected for --with-libedit-preferred option" >&2;}
> + { (exit 1); exit 1; }; }
> + ;;
> + esac
> +
> + else
> + with_libedit_preferred=no
> +
> + fi;
> +
> +
> +
> + #
> # Readline
> #
>
> ***************
> *** 6490,6504 ****
>
> if test "$with_readline" = yes; then
>
> - echo "$as_me:$LINENO: checking for readline" >&5
> - echo $ECHO_N "checking for readline... $ECHO_C" >&6
>
> if test "${pgac_cv_check_readline+set}" = set; then
> echo $ECHO_N "(cached) $ECHO_C" >&6
> else
> pgac_cv_check_readline=no
> pgac_save_LIBS=$LIBS
> ! for pgac_rllib in -lreadline -ledit ; do
> for pgac_lib in "" " -ltermcap" " -lncurses" " -lcurses" ; do
> LIBS="${pgac_rllib}${pgac_lib} $pgac_save_LIBS"
> cat >conftest.$ac_ext <<_ACEOF
> --- 6522,6540 ----
>
> if test "$with_readline" = yes; then
>
>
> if test "${pgac_cv_check_readline+set}" = set; then
> echo $ECHO_N "(cached) $ECHO_C" >&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
> ! for pgac_rllib in $READLINE_ORDER ; do
> ! echo "$as_me:$LINENO: checking for ${pgac_rllib}" >&5
> ! echo $ECHO_N "checking for ${pgac_rllib}... $ECHO_C" >&6
> for pgac_lib in "" " -ltermcap" " -lncurses" " -lcurses" ; do
> LIBS="${pgac_rllib}${pgac_lib} $pgac_save_LIBS"
> cat >conftest.$ac_ext <<_ACEOF
> ***************
> *** 6557,6563 ****
> esac
>
> pgac_cv_check_readline="${pgac_rllib}${pgac_lib}"
> ! break 2
>
> else
> echo "$as_me: failed program was:" >&5
> --- 6593,6599 ----
> esac
>
> pgac_cv_check_readline="${pgac_rllib}${pgac_lib}"
> ! break
>
> else
> echo "$as_me: failed program was:" >&5
> ***************
> *** 6567,6590 ****
> rm -f conftest.err conftest.$ac_objext \
> conftest$ac_exeext conftest.$ac_ext
> done
> done
> LIBS=$pgac_save_LIBS
>
> fi
>
> if test "$pgac_cv_check_readline" != no ; then
>
> cat >>confdefs.h <<\_ACEOF
> #define HAVE_LIBREADLINE 1
> _ACEOF
>
> - LIBS="$pgac_cv_check_readline $LIBS"
> - echo "$as_me:$LINENO: result: yes ($pgac_cv_check_readline)" >&5
> - echo "${ECHO_T}yes ($pgac_cv_check_readline)" >&6
> - else
> - echo "$as_me:$LINENO: result: no" >&5
> - echo "${ECHO_T}no" >&6
> fi
> if test x"$pgac_cv_check_readline" = x"no"; then
> { { echo "$as_me:$LINENO: error: readline library not found
> If you have readline already installed, see config.log for details on the
> --- 6603,6631 ----
> rm -f conftest.err conftest.$ac_objext \
> conftest$ac_exeext conftest.$ac_ext
> done
> + if test "$pgac_cv_check_readline" != no ; then
> + echo "$as_me:$LINENO: result: yes ($pgac_cv_check_readline)" >&5
> + echo "${ECHO_T}yes ($pgac_cv_check_readline)" >&6
> + break
> + else
> + echo "$as_me:$LINENO: result: no" >&5
> + echo "${ECHO_T}no" >&6
> + fi
> done
> LIBS=$pgac_save_LIBS
>
> fi
>
> if test "$pgac_cv_check_readline" != no ; then
> + LIBS="$pgac_cv_check_readline $LIBS"
>
> cat >>confdefs.h <<\_ACEOF
> #define HAVE_LIBREADLINE 1
> _ACEOF
>
> fi
> +
> +
> if test x"$pgac_cv_check_readline" = x"no"; then
> { { echo "$as_me:$LINENO: error: readline library not found
> If you have readline already installed, see config.log for details on the
> Index: configure.in
> ===================================================================
> RCS file: /cvsroot/pgsql/configure.in,v
> retrieving revision 1.432
> diff -c -c -r1.432 configure.in
> *** configure.in 5 Nov 2005 16:42:01 -0000 1.432
> --- configure.in 3 Dec 2005 15:25:45 -0000
> ***************
> *** 468,477 ****
>
>
> #
> # Readline
> #
> PGAC_ARG_BOOL(with, readline, yes,
> ! [ --without-readline do not use Readline])
> # readline on MinGW has problems with backslashes in psql and other bugs.
> # This is particularly a problem with non-US code pages.
> # Therefore disable its use until we understand the cause. 2004-07-20
> --- 468,484 ----
>
>
> #
> + # Prefer libedit
> + #
> + PGAC_ARG_BOOL(with, libedit-preferred, no,
> + [ --with-libedit-preferred prefer BSD Libedit over GNU Readline])
> +
> +
> + #
> # Readline
> #
> PGAC_ARG_BOOL(with, readline, yes,
> ! [ --without-readline do not use GNU Readline / BSD Libedit line editing])
> # readline on MinGW has problems with backslashes in psql and other bugs.
> # This is particularly a problem with non-US code pages.
> # Therefore disable its use until we understand the cause. 2004-07-20
> Index: config/programs.m4
> ===================================================================
> RCS file: /cvsroot/pgsql/config/programs.m4,v
> retrieving revision 1.18
> diff -c -c -r1.18 programs.m4
> *** config/programs.m4 2 Dec 2004 20:04:19 -0000 1.18
> --- config/programs.m4 3 Dec 2005 15:25:47 -0000
> ***************
> *** 78,89 ****
>
> AC_DEFUN([PGAC_CHECK_READLINE],
> [AC_REQUIRE([AC_CANONICAL_HOST])
> - AC_MSG_CHECKING([for readline])
>
> AC_CACHE_VAL([pgac_cv_check_readline],
> [pgac_cv_check_readline=no
> pgac_save_LIBS=$LIBS
> ! for pgac_rllib in -lreadline -ledit ; do
> for pgac_lib in "" " -ltermcap" " -lncurses" " -lcurses" ; do
> LIBS="${pgac_rllib}${pgac_lib} $pgac_save_LIBS"
> AC_TRY_LINK_FUNC([readline], [[
> --- 78,93 ----
>
> AC_DEFUN([PGAC_CHECK_READLINE],
> [AC_REQUIRE([AC_CANONICAL_HOST])
>
> AC_CACHE_VAL([pgac_cv_check_readline],
> [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
> ! for pgac_rllib in $READLINE_ORDER ; do
> ! AC_MSG_CHECKING([for ${pgac_rllib}])
> for pgac_lib in "" " -ltermcap" " -lncurses" " -lcurses" ; do
> LIBS="${pgac_rllib}${pgac_lib} $pgac_save_LIBS"
> AC_TRY_LINK_FUNC([readline], [[
> ***************
> *** 98,117 ****
> esac
>
> pgac_cv_check_readline="${pgac_rllib}${pgac_lib}"
> ! break 2
> ]])
> done
> done
> LIBS=$pgac_save_LIBS
> ])[]dnl AC_CACHE_VAL
>
> if test "$pgac_cv_check_readline" != no ; then
> - AC_DEFINE(HAVE_LIBREADLINE, 1, [Define if you have a function readline library])
> LIBS="$pgac_cv_check_readline $LIBS"
> ! AC_MSG_RESULT([yes ($pgac_cv_check_readline)])
> ! else
> ! AC_MSG_RESULT(no)
> ! fi])# PGAC_CHECK_READLINE
>
>
>
> --- 102,126 ----
> esac
>
> pgac_cv_check_readline="${pgac_rllib}${pgac_lib}"
> ! break
> ]])
> done
> + if test "$pgac_cv_check_readline" != no ; then
> + AC_MSG_RESULT([yes ($pgac_cv_check_readline)])
> + break
> + else
> + AC_MSG_RESULT(no)
> + fi
> done
> LIBS=$pgac_save_LIBS
> ])[]dnl AC_CACHE_VAL
>
> if test "$pgac_cv_check_readline" != no ; then
> LIBS="$pgac_cv_check_readline $LIBS"
> ! AC_DEFINE(HAVE_LIBREADLINE, 1, [Define if you have a function readline library])
> ! fi
> !
> ! ])# PGAC_CHECK_READLINE
>
>
>
> Index: doc/src/sgml/installation.sgml
> ===================================================================
> RCS file: /cvsroot/pgsql/doc/src/sgml/installation.sgml,v
> retrieving revision 1.249
> diff -c -c -r1.249 installation.sgml
> *** doc/src/sgml/installation.sgml 5 Nov 2005 00:04:04 -0000 1.249
> --- doc/src/sgml/installation.sgml 3 Dec 2005 15:25:49 -0000
> ***************
> *** 50,56 ****
> <para>
> In general, a modern Unix-compatible platform should be able to run
> <productname>PostgreSQL</>.
> ! The platforms that had received specific testing at the
> time of release are listed in <xref linkend="supported-platforms">
> below. In the <filename>doc</> subdirectory of the distribution
> there are several platform-specific <acronym>FAQ</> documents you
> --- 50,56 ----
> <para>
> In general, a modern Unix-compatible platform should be able to run
> <productname>PostgreSQL</>.
> ! The platforms that had received specific testing at the
> time of release are listed in <xref linkend="supported-platforms">
> below. In the <filename>doc</> subdirectory of the distribution
> there are several platform-specific <acronym>FAQ</> documents you
> ***************
> *** 107,122 ****
> </indexterm>
>
> The <acronym>GNU</> <productname>Readline</> library (for
> ! comfortable line editing and command history retrieval) will be
> ! used by default. If you don't want to use it then you must
> ! specify the <option>--without-readline</option> option for
> ! <filename>configure</>. (On <productname>NetBSD</productname>,
> ! the <filename>libedit</filename> library is
> ! <productname>Readline</productname>-compatible and is used if
> ! <filename>libreadline</filename> is not found.) If you are using
> ! a package-based Linux distribution, be aware that you need both
> ! the <literal>readline</> and <literal>readline-devel</> packages,
> ! if those are separate in your distribution.
> </para>
> </listitem>
>
> --- 107,126 ----
> </indexterm>
>
> The <acronym>GNU</> <productname>Readline</> library (for
> ! simple line editing and command history retrieval) is
> ! used by default. If you don't want to use it then you must specify
> ! the <option>--without-readline</option> option for
> ! <filename>configure</>. As an alternative, you can often use the
> ! BSD-licensed <filename>libedit</filename> library, originally
> ! developed on <productname>NetBSD</productname>. The
> ! <filename>libedit</filename> library is
> ! GNU <productname>Readline</productname>-compatible and is used if
> ! <filename>libreadline</filename> is not found, or if
> ! <option>--with-libedit-preferred</option> is used as an
> ! option to <filename>configure</>. If you are using a package-based
> ! Linux distribution, be aware that you need both the
> ! <literal>readline</> and <literal>readline-devel</> packages, if
> ! those are separate in your distribution.
> </para>
> </listitem>
>
> ***************
> *** 858,863 ****
> --- 862,877 ----
> </varlistentry>
>
> <varlistentry>
> + <term><option>--with-libedit-preferred</option></term>
> + <listitem>
> + <para>
> + Favors the use of the BSD-licensed <application>libedit</> library
> + rather than GPL-licensed <application>Readline</>.
> + </para>
> + </listitem>
> + </varlistentry>
> +
> + <varlistentry>
> <term><option>--without-readline</option></term>
> <listitem>
> <para>

>
> ---------------------------(end of broadcast)---------------------------
> TIP 3: Have you checked our extensive FAQ?
>
> http://www.postgresql.org/docs/faq

--
Bruce Momjian | http://candle.pha.pa.us
pgman(at)candle(dot)pha(dot)pa(dot)us | (610) 359-1001
+ If your life is a hard drive, | 13 Roberts Road
+ Christ can be your backup. | Newtown Square, Pennsylvania 19073

In response to

Browse pgsql-hackers by date

  From Date Subject
Next Message Tom Lane 2005-12-04 04:05:23 Re: [PATCHES] snprintf() argument reordering not working under
Previous Message Tom Lane 2005-12-04 03:51:12 Re: Reducing relation locking overhead

Browse pgsql-patches by date

  From Date Subject
Next Message Tom Lane 2005-12-04 04:05:23 Re: [PATCHES] snprintf() argument reordering not working under
Previous Message Bruce Momjian 2005-12-04 03:45:52 Re: [PATCHES] snprintf() argument reordering not working under

Browse pgsql-ports by date

  From Date Subject
Next Message Mogin Mohandas 2005-12-04 10:02:05 building GIST indexes on Complex data type
Previous Message Bruce Momjian 2005-12-03 15:27:37 Re: [HACKERS] Should libedit be preferred to libreadline?