mirror of
https://gitlab.isc.org/isc-projects/bind9
synced 2025-08-22 10:10:06 +00:00
Drop readline alternatives in favor of libedit
The libedit is now ubiquitous and has a licences compatible with MPL 2.0. Drop readline (GPL 3.0) and editline (obsolete) support in favor of libedit.
This commit is contained in:
parent
b6e6430b54
commit
c27fce26e6
@ -36,11 +36,8 @@ variables:
|
|||||||
|
|
||||||
AM_COLOR_TESTS: always
|
AM_COLOR_TESTS: always
|
||||||
|
|
||||||
WITHOUT_READLINE: "--without-readline"
|
WITHOUT_LIBEDIT: "--without-libedit"
|
||||||
WITH_READLINE: "--with-readline"
|
WITH_LIBEDIT: "--with-libedit"
|
||||||
WITH_READLINE_EDITLINE: "--with-readline=editline"
|
|
||||||
WITH_READLINE_LIBEDIT: "--with-readline=libedit"
|
|
||||||
WITH_READLINE_READLINE: "--with-readline=readline"
|
|
||||||
|
|
||||||
INSTALL_PATH: "${CI_PROJECT_DIR}/.local"
|
INSTALL_PATH: "${CI_PROJECT_DIR}/.local"
|
||||||
|
|
||||||
@ -153,7 +150,7 @@ stages:
|
|||||||
GIT_CLONE_PATH: "/home/ec2-user/builds/${CI_PROJECT_PATH}/"
|
GIT_CLONE_PATH: "/home/ec2-user/builds/${CI_PROJECT_PATH}/"
|
||||||
# Use MIT Kerberos5 for BIND 9 GSS-API support because of FreeBSD Heimdal
|
# Use MIT Kerberos5 for BIND 9 GSS-API support because of FreeBSD Heimdal
|
||||||
# incompatibility; see https://bugs.freebsd.org/275241.
|
# incompatibility; see https://bugs.freebsd.org/275241.
|
||||||
EXTRA_CONFIGURE: "${WITH_READLINE_EDITLINE} --with-gssapi=/usr/local/bin/krb5-config"
|
EXTRA_CONFIGURE: "${WITH_LIBEDIT} --with-gssapi=/usr/local/bin/krb5-config"
|
||||||
|
|
||||||
# Autoscaling GitLab Runner on AWS EC2 (FreeBSD 13)
|
# Autoscaling GitLab Runner on AWS EC2 (FreeBSD 13)
|
||||||
|
|
||||||
@ -313,18 +310,10 @@ stages:
|
|||||||
- find -name 'tsan.*' -exec "$PYTHON" util/parse_tsan.py {} \;
|
- find -name 'tsan.*' -exec "$PYTHON" util/parse_tsan.py {} \;
|
||||||
|
|
||||||
.check_readline_setup: &check_readline_setup
|
.check_readline_setup: &check_readline_setup
|
||||||
- if [[ -n "${WITHOUT_READLINE}" ]]; then
|
- if [[ -n "${WITHOUT_LIBEDIT}" ]]; then
|
||||||
! grep "^#define HAVE_READLINE" config.h;
|
! grep "^#define HAVE_LIBEDIT" config.h;
|
||||||
elif [[ -n "${WITH_READLINE}" ]]; then
|
elif [[ -n "${WITH_LIBEDIT}" ]]; then
|
||||||
grep -e "^#define HAVE_READLINE_READLINE"
|
grep -e "^#define HAVE_LIBEDIT" config.h;
|
||||||
-e "^#define HAVE_READLINE_LIBEDIT"
|
|
||||||
-e "^#define HAVE_READLINE_EDITLINE" config.h;
|
|
||||||
elif [[ -n "${WITH_READLINE_EDITLINE}" ]]; then
|
|
||||||
grep "^#define HAVE_READLINE_EDITLINE" config.h;
|
|
||||||
elif [[ -n "${WITH_READLINE_LIBEDIT}" ]]; then
|
|
||||||
grep "^#define HAVE_READLINE_LIBEDIT" config.h;
|
|
||||||
elif [[ -n "${WITH_READLINE_READLINE}" ]]; then
|
|
||||||
grep "^#define HAVE_READLINE_READLINE" config.h;
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Unpack release tarball and continue work in the extracted directory.
|
# Unpack release tarball and continue work in the extracted directory.
|
||||||
@ -831,7 +820,7 @@ gcc:alpine3.21:amd64:
|
|||||||
variables:
|
variables:
|
||||||
CC: gcc
|
CC: gcc
|
||||||
CFLAGS: "${CFLAGS_COMMON}"
|
CFLAGS: "${CFLAGS_COMMON}"
|
||||||
EXTRA_CONFIGURE: "${WITHOUT_READLINE}"
|
EXTRA_CONFIGURE: "${WITHOUT_LIBEDIT}"
|
||||||
<<: *alpine_3_21_amd64_image
|
<<: *alpine_3_21_amd64_image
|
||||||
<<: *build_job
|
<<: *build_job
|
||||||
|
|
||||||
@ -971,7 +960,7 @@ gcc:bookworm:amd64:
|
|||||||
CC: gcc
|
CC: gcc
|
||||||
CFLAGS: "${CFLAGS_COMMON} --coverage -O0"
|
CFLAGS: "${CFLAGS_COMMON} --coverage -O0"
|
||||||
# Tracing needs to be disabled otherwise gcovr fails
|
# Tracing needs to be disabled otherwise gcovr fails
|
||||||
EXTRA_CONFIGURE: "--with-libidn2 ${WITH_READLINE_LIBEDIT} --disable-tracing"
|
EXTRA_CONFIGURE: "--with-libidn2 ${WITH_LIBEDIT} --disable-tracing"
|
||||||
RUN_MAKE_INSTALL: 1
|
RUN_MAKE_INSTALL: 1
|
||||||
<<: *debian_bookworm_amd64_image
|
<<: *debian_bookworm_amd64_image
|
||||||
<<: *build_job
|
<<: *build_job
|
||||||
@ -1028,7 +1017,7 @@ gcc:bookworm:amd64cross32:
|
|||||||
variables:
|
variables:
|
||||||
CFLAGS: "${CFLAGS_COMMON}"
|
CFLAGS: "${CFLAGS_COMMON}"
|
||||||
CROSS_COMPILATION: 1
|
CROSS_COMPILATION: 1
|
||||||
EXTRA_CONFIGURE: "--build=x86_64-linux-gnu --host=i686-linux-gnu --with-libidn2 ${WITH_READLINE_LIBEDIT}"
|
EXTRA_CONFIGURE: "--build=x86_64-linux-gnu --host=i686-linux-gnu --with-libidn2 ${WITH_LIBEDIT}"
|
||||||
<<: *debian_bookworm_amd64cross32_image
|
<<: *debian_bookworm_amd64cross32_image
|
||||||
<<: *build_job
|
<<: *build_job
|
||||||
|
|
||||||
@ -1099,7 +1088,7 @@ gcc:sid:amd64:
|
|||||||
variables:
|
variables:
|
||||||
CC: gcc
|
CC: gcc
|
||||||
CFLAGS: "${CFLAGS_COMMON} -O3"
|
CFLAGS: "${CFLAGS_COMMON} -O3"
|
||||||
EXTRA_CONFIGURE: "--with-libidn2 --without-lmdb ${WITH_READLINE}"
|
EXTRA_CONFIGURE: "--with-libidn2 --without-lmdb ${WITH_LIBEDIT}"
|
||||||
RUN_MAKE_INSTALL: 1
|
RUN_MAKE_INSTALL: 1
|
||||||
<<: *debian_sid_amd64_image
|
<<: *debian_sid_amd64_image
|
||||||
<<: *build_job
|
<<: *build_job
|
||||||
@ -1198,7 +1187,7 @@ gcc:tumbleweed:amd64:
|
|||||||
variables:
|
variables:
|
||||||
CC: gcc
|
CC: gcc
|
||||||
CFLAGS: "${CFLAGS_COMMON} -DDEBUG"
|
CFLAGS: "${CFLAGS_COMMON} -DDEBUG"
|
||||||
EXTRA_CONFIGURE: "--with-libidn2 ${WITH_READLINE_READLINE}"
|
EXTRA_CONFIGURE: "--with-libidn2 ${WITH_LIBEDIT}"
|
||||||
<<: *tumbleweed_latest_amd64_image
|
<<: *tumbleweed_latest_amd64_image
|
||||||
<<: *build_job
|
<<: *build_job
|
||||||
|
|
||||||
|
@ -6,6 +6,7 @@ AM_CPPFLAGS += \
|
|||||||
$(LIBISCCFG_CFLAGS) \
|
$(LIBISCCFG_CFLAGS) \
|
||||||
$(LIBIDN2_CFLAGS) \
|
$(LIBIDN2_CFLAGS) \
|
||||||
$(OPENSSL_CFLAGS) \
|
$(OPENSSL_CFLAGS) \
|
||||||
|
$(LIBEDIT_CFLAGS) \
|
||||||
$(LIBUV_CFLAGS) \
|
$(LIBUV_CFLAGS) \
|
||||||
$(OPENSSL_CFLAGS)
|
$(OPENSSL_CFLAGS)
|
||||||
|
|
||||||
@ -15,6 +16,7 @@ LDADD += \
|
|||||||
$(LIBDNS_LIBS) \
|
$(LIBDNS_LIBS) \
|
||||||
$(LIBISCCFG_LIBS) \
|
$(LIBISCCFG_LIBS) \
|
||||||
$(OPENSSL_LIBS) \
|
$(OPENSSL_LIBS) \
|
||||||
|
$(LIBEDIT_LIBS) \
|
||||||
$(LIBIDN2_LIBS)
|
$(LIBIDN2_LIBS)
|
||||||
|
|
||||||
noinst_LTLIBRARIES = libdighost.la
|
noinst_LTLIBRARIES = libdighost.la
|
||||||
@ -24,16 +26,3 @@ libdighost_la_SOURCES = \
|
|||||||
dighost.c
|
dighost.c
|
||||||
|
|
||||||
bin_PROGRAMS = dig host nslookup
|
bin_PROGRAMS = dig host nslookup
|
||||||
|
|
||||||
nslookup_CPPFLAGS = \
|
|
||||||
$(AM_CPPFLAGS)
|
|
||||||
|
|
||||||
nslookup_LDADD = \
|
|
||||||
$(LDADD)
|
|
||||||
|
|
||||||
if HAVE_READLINE
|
|
||||||
nslookup_CPPFLAGS += \
|
|
||||||
$(READLINE_CFLAGS)
|
|
||||||
nslookup_LDADD += \
|
|
||||||
$(READLINE_LIBS)
|
|
||||||
endif HAVE_READLINE
|
|
||||||
|
@ -24,6 +24,7 @@
|
|||||||
#include <isc/loop.h>
|
#include <isc/loop.h>
|
||||||
#include <isc/netaddr.h>
|
#include <isc/netaddr.h>
|
||||||
#include <isc/parseint.h>
|
#include <isc/parseint.h>
|
||||||
|
#include <isc/readline.h>
|
||||||
#include <isc/string.h>
|
#include <isc/string.h>
|
||||||
#include <isc/util.h>
|
#include <isc/util.h>
|
||||||
#include <isc/work.h>
|
#include <isc/work.h>
|
||||||
@ -40,7 +41,6 @@
|
|||||||
#include <dns/rdatatype.h>
|
#include <dns/rdatatype.h>
|
||||||
|
|
||||||
#include "dighost.h"
|
#include "dighost.h"
|
||||||
#include "readline.h"
|
|
||||||
|
|
||||||
static char cmdlinebuf[COMMSIZE];
|
static char cmdlinebuf[COMMSIZE];
|
||||||
static char *cmdline = NULL;
|
static char *cmdline = NULL;
|
||||||
|
@ -6,7 +6,7 @@ AM_CPPFLAGS += \
|
|||||||
$(LIBISCCFG_CFLAGS) \
|
$(LIBISCCFG_CFLAGS) \
|
||||||
$(GSSAPI_CFLAGS) \
|
$(GSSAPI_CFLAGS) \
|
||||||
$(KRB5_CFLAGS) \
|
$(KRB5_CFLAGS) \
|
||||||
$(READLINE_CFLAGS)
|
$(LIBEDIT_CFLAGS)
|
||||||
|
|
||||||
AM_CPPFLAGS += \
|
AM_CPPFLAGS += \
|
||||||
-DSESSION_KEYFILE=\"${localstatedir}/run/named/session.key\"
|
-DSESSION_KEYFILE=\"${localstatedir}/run/named/session.key\"
|
||||||
@ -16,15 +16,7 @@ LDADD += \
|
|||||||
$(LIBDNS_LIBS) \
|
$(LIBDNS_LIBS) \
|
||||||
$(LIBISCCFG_LIBS) \
|
$(LIBISCCFG_LIBS) \
|
||||||
$(GSSAPI_LIBS) \
|
$(GSSAPI_LIBS) \
|
||||||
$(KRB5_LIBS)
|
$(KRB5_LIBS) \
|
||||||
|
$(LIBEDIT_LIBS)
|
||||||
if HAVE_READLINE
|
|
||||||
LDADD += \
|
|
||||||
$(READLINE_LIBS)
|
|
||||||
endif
|
|
||||||
|
|
||||||
bin_PROGRAMS = nsupdate
|
bin_PROGRAMS = nsupdate
|
||||||
|
|
||||||
nsupdate_SOURCES = \
|
|
||||||
nsupdate.c \
|
|
||||||
../dig/readline.h
|
|
||||||
|
@ -40,6 +40,7 @@
|
|||||||
#include <isc/parseint.h>
|
#include <isc/parseint.h>
|
||||||
#include <isc/portset.h>
|
#include <isc/portset.h>
|
||||||
#include <isc/random.h>
|
#include <isc/random.h>
|
||||||
|
#include <isc/readline.h>
|
||||||
#include <isc/region.h>
|
#include <isc/region.h>
|
||||||
#include <isc/result.h>
|
#include <isc/result.h>
|
||||||
#include <isc/sockaddr.h>
|
#include <isc/sockaddr.h>
|
||||||
@ -93,8 +94,6 @@
|
|||||||
|
|
||||||
#endif /* HAVE_GSSAPI */
|
#endif /* HAVE_GSSAPI */
|
||||||
|
|
||||||
#include "../dig/readline.h"
|
|
||||||
|
|
||||||
#define MAXCMD (128 * 1024)
|
#define MAXCMD (128 * 1024)
|
||||||
#define MAXWIRE (64 * 1024)
|
#define MAXWIRE (64 * 1024)
|
||||||
#define INITTEXT (2 * 1024)
|
#define INITTEXT (2 * 1024)
|
||||||
|
53
configure.ac
53
configure.ac
@ -886,45 +886,26 @@ AS_IF([test "$enable_tcp_fastopen" = "yes"],
|
|||||||
AC_CHECK_FUNCS([strlcpy strlcat strnstr])
|
AC_CHECK_FUNCS([strlcpy strlcat strnstr])
|
||||||
|
|
||||||
#
|
#
|
||||||
# Check for readline support
|
# Check for libedit support
|
||||||
#
|
#
|
||||||
|
# [pairwise: --with-libedit=auto, --with-libedit=yes, --without-libedit]
|
||||||
|
AC_ARG_WITH([libedit],
|
||||||
|
[AS_HELP_STRING([--with-libedit=auto|yes|no],
|
||||||
|
[specify libedit library [default auto]])],
|
||||||
|
[], [with_libedit="auto"])
|
||||||
|
|
||||||
# editline is not included in pairwise testing as the library
|
AS_CASE([$with_libedit],
|
||||||
# is not present in the relevant Docker image.
|
[no], [],
|
||||||
#
|
[auto], [PKG_CHECK_MODULES([LIBEDIT], [libedit],
|
||||||
# GNU Readline is not included in pairwise testing as the library
|
[AC_DEFINE([HAVE_LIBEDIT], [1], [Build with libedit support])],
|
||||||
# in the relevant Docker image does not support pkg-config.
|
[:])],
|
||||||
#
|
|
||||||
# [pairwise: --with-readline=auto, --with-readline=yes, --with-readline=libedit, --without-readline]
|
|
||||||
AC_ARG_WITH([readline],
|
|
||||||
[AS_HELP_STRING([--with-readline=yes|no|libedit|readline],
|
|
||||||
[specify readline library [default auto]])],
|
|
||||||
[], [with_readline="auto"])
|
|
||||||
|
|
||||||
AS_CASE([$with_readline],
|
[yes], [PKG_CHECK_MODULES([LIBEDIT], [libedit],
|
||||||
[no],[],
|
[AC_DEFINE([HAVE_LIBEDIT], [1], [Build with libedit support])])],
|
||||||
[auto|yes],
|
[AC_MSG_ERROR([Specifying libedit installation path is not supported, adjust PKG_CONFIG_PATH instead])])
|
||||||
[PKG_CHECK_MODULES([READLINE], [libedit],
|
AM_CONDITIONAL([HAVE_LIBEDIT], [test -n "$LIBEDIT_LIBS"])
|
||||||
[AC_DEFINE([HAVE_READLINE_LIBEDIT], [1], [Build with libedit support])],
|
AC_SUBST([LIBEDIT_CFLAGS])
|
||||||
[PKG_CHECK_MODULES([READLINE], [libeditline],
|
AC_SUBST([LIBEDIT_LIBS])
|
||||||
[AC_DEFINE([HAVE_READLINE_EDITLINE], [1], [Build with editline support.])],
|
|
||||||
[PKG_CHECK_MODULES([READLINE], [readline],
|
|
||||||
[AC_DEFINE([HAVE_READLINE_READLINE], [1], [Build with readline support.])],
|
|
||||||
[AS_IF([test "$with_readline" = "yes"],
|
|
||||||
[AC_MSG_ERROR([readline support requested, but none of the libraries have been found.])])])])])],
|
|
||||||
[libedit],
|
|
||||||
[PKG_CHECK_MODULES([READLINE], [libedit],
|
|
||||||
[AC_DEFINE([HAVE_READLINE_LIBEDIT], [1], [Build with libedit support])])],
|
|
||||||
[editline],
|
|
||||||
[PKG_CHECK_MODULES([READLINE], [libeditline],
|
|
||||||
[AC_DEFINE([HAVE_READLINE_EDITLINE], [1], [Build with editline support])])],
|
|
||||||
[readline],
|
|
||||||
[PKG_CHECK_MODULES([READLINE], [readline],
|
|
||||||
[AC_DEFINE([HAVE_READLINE_READLINE], [1], [Build with readline support])])],
|
|
||||||
[AC_MSG_ERROR([Unknown readline '$with_readline' library requested.])])
|
|
||||||
AM_CONDITIONAL([HAVE_READLINE], [test -n "$READLINE_LIBS"])
|
|
||||||
AC_SUBST([READLINE_CFLAGS])
|
|
||||||
AC_SUBST([READLINE_LIBS])
|
|
||||||
|
|
||||||
#
|
#
|
||||||
# Security Stuff
|
# Security Stuff
|
||||||
|
@ -139,12 +139,10 @@ To support internationalized domain names in :iscman:`dig`, ``libidn2``
|
|||||||
library is installed in a nonstandard location, specify the prefix using
|
library is installed in a nonstandard location, specify the prefix using
|
||||||
``--with-libidn2=/prefix`` or adjust ``PKG_CONFIG_PATH``.
|
``--with-libidn2=/prefix`` or adjust ``PKG_CONFIG_PATH``.
|
||||||
|
|
||||||
For line editing in :iscman:`nsupdate` and :iscman:`nslookup`, either the
|
For line editing in :iscman:`nsupdate` and :iscman:`nslookup`,
|
||||||
``readline`` (https://tiswww.case.edu/php/chet/readline/rltop.html) or
|
|
||||||
the ``libedit`` library (https://www.thrysoee.dk/editline/) must be
|
the ``libedit`` library (https://www.thrysoee.dk/editline/) must be
|
||||||
installed. If these are installed at a nonstandard location, adjust
|
installed. If these are installed at a nonstandard location, adjust
|
||||||
``PKG_CONFIG_PATH``. ``readline`` is used by default, and ``libedit``
|
``PKG_CONFIG_PATH``.
|
||||||
can be explicitly requested using ``--with-readline=libedit``.
|
|
||||||
|
|
||||||
On some platforms it is necessary to explicitly request large file
|
On some platforms it is necessary to explicitly request large file
|
||||||
support to handle files bigger than 2GB. This can be done by using
|
support to handle files bigger than 2GB. This can be done by using
|
||||||
|
@ -68,6 +68,7 @@ libisc_la_HEADERS = \
|
|||||||
include/isc/radix.h \
|
include/isc/radix.h \
|
||||||
include/isc/random.h \
|
include/isc/random.h \
|
||||||
include/isc/ratelimiter.h \
|
include/isc/ratelimiter.h \
|
||||||
|
include/isc/readline.h \
|
||||||
include/isc/refcount.h \
|
include/isc/refcount.h \
|
||||||
include/isc/regex.h \
|
include/isc/regex.h \
|
||||||
include/isc/region.h \
|
include/isc/region.h \
|
||||||
|
@ -14,26 +14,15 @@
|
|||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* A little wrapper around readline(), add_history() and free() to make using
|
* A little wrapper around readline(), and add_history() to make using
|
||||||
* the readline code simpler.
|
* the readline code simpler.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#if defined(HAVE_READLINE_LIBEDIT)
|
#ifdef HAVE_LIBEDIT
|
||||||
#include <editline/readline.h>
|
|
||||||
#elif defined(HAVE_READLINE_EDITLINE)
|
|
||||||
#include <editline.h>
|
|
||||||
#elif defined(HAVE_READLINE_READLINE)
|
|
||||||
/* Prevent deprecated functions being declared. */
|
|
||||||
#define _FUNCTION_DEF 1
|
|
||||||
/* Ensure rl_message() gets prototype. */
|
|
||||||
#define USE_VARARGS 1
|
|
||||||
#define PREFER_STDARG 1
|
|
||||||
#include <readline/history.h>
|
|
||||||
#include <readline/readline.h>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if !defined(HAVE_READLINE_LIBEDIT) && !defined(HAVE_READLINE_EDITLINE) && \
|
#include <editline/readline.h>
|
||||||
!defined(HAVE_READLINE_READLINE)
|
|
||||||
|
#else /* HAVE_LIBEDIT */
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
@ -55,4 +44,4 @@ readline(const char *prompt) {
|
|||||||
|
|
||||||
#define add_history(line)
|
#define add_history(line)
|
||||||
|
|
||||||
#endif
|
#endif /* HAVE_LIBEDIT */
|
Loading…
x
Reference in New Issue
Block a user