6.38. Readline-6.3

The Readline package is a set of libraries that offers command-line editing and history capabilities.

Approximate build time: 0.1 SBU
Required disk space: 24 MB

6.38.1. Installation of Readline

First install some patches to fix various bugs that have been addressed upstream:

patch -Np1 -i ../readline-6.3-upstream_fixes-3.patch

Reinstalling Readline will cause the old libraries to be moved to <libraryname>.old. While this is normally not a problem, in some cases it can trigger a linking bug in ldconfig. This can be avoided by issuing the following two seds:

sed -i '/MV.*old/d' Makefile.in
sed -i '/{OLDSUFF}/c:' support/shlib-install

6.38.2. 32-bit Installation

Prepare Readline for 32-bit compilation:

./configure --prefix=/usr \
    --docdir=/usr/share/doc/readline-6.3 \
    --libdir=/usr/lib32   \
    CC="gcc -m32"

Compile the package:

make SHLIB_LIBS=-lncurses

The meaning of the make option:

SHLIB_LIBS=-lncurses

This option forces Readline to link against the libncurses (really, libncursesw) library.

This package does not come with a test suite.

Install the package:

make install

Now move the dynamic libraries to a more appropriate location and fix up some symbolic links:

mv -v /usr/lib32/lib{readline,history}.so.* /lib32
ln -sfv ../../lib32/$(readlink /usr/lib32/libreadline.so) /usr/lib32/libreadline.so
ln -sfv ../../lib32/$(readlink /usr/lib32/libhistory.so ) /usr/lib32/libhistory.so

Clean up the build directory before moving on to the next platform:

make clean

6.38.3. x32 ABI Installation

Prepare Readline for x32 ABI compilation:

./configure --prefix=/usr \
    --docdir=/usr/share/doc/readline-6.3 \
    --libdir=/usr/libx32  \
    CC="gcc -mx32"

Compile the package:

make SHLIB_LIBS=-lncurses

The meaning of the make option:

SHLIB_LIBS=-lncurses

This option forces Readline to link against the libncurses (really, libncursesw) library.

This package does not come with a test suite.

Install the package:

make install

Now move the dynamic libraries to a more appropriate location and fix up some symbolic links:

mv -v /usr/libx32/lib{readline,history}.so.* /libx32
ln -sfv ../../libx32/$(readlink /usr/libx32/libreadline.so) /usr/libx32/libreadline.so
ln -sfv ../../libx32/$(readlink /usr/libx32/libhistory.so ) /usr/libx32/libhistory.so

Clean up the build directory before moving on to the next platform:

make clean

6.38.4. 64-bit Installation

Prepare Readline for 64-bit compilation:

./configure --prefix=/usr --docdir=/usr/share/doc/readline-6.3

Compile the package:

make SHLIB_LIBS=-lncurses

The meaning of the make option:

SHLIB_LIBS=-lncurses

This option forces Readline to link against the libncurses (really, libncursesw) library.

This package does not come with a test suite.

Install the package:

make SHLIB_LIBS=-lncurses install

Now move the dynamic libraries to a more appropriate location and fix up some symbolic links:

mv -v /usr/lib/lib{readline,history}.so.* /lib
ln -sfv ../../lib/$(readlink /usr/lib/libreadline.so) /usr/lib/libreadline.so
ln -sfv ../../lib/$(readlink /usr/lib/libhistory.so ) /usr/lib/libhistory.so

If desired, install the documentation:

install -v -m644 doc/*.{ps,pdf,html,dvi} /usr/share/doc/readline-6.3

6.38.5. Contents of Readline

Installed libraries: libhistory.{a,so} and libreadline.{a,so}
Installed directories: /usr/include/readline, /usr/share/readline, and /usr/share/doc/readline-6.3

Short Descriptions

libhistory

Provides a consistent user interface for recalling lines of history

libreadline

Aids in the consistency of user interface across discrete programs that need to provide a command line interface