Opened 12 years ago
Closed 12 years ago
#3482 closed defect (fixed)
util-linux ignores prefix to install bash completions
| Reported by: | Tiago Koji Castro Shibata | Owned by: | |
|---|---|---|---|
| Priority: | high | Milestone: | 7.5 |
| Component: | Book | Version: | SVN |
| Severity: | normal | Keywords: | |
| Cc: |
Description
When installing util-linux in step 5.33, the prefix is ignored for bash completion files. Configure outputs the following:
util-linux 2.24.1
prefix: /tools
exec prefix: ${prefix}
localstatedir: ${prefix}/var
bindir: ${exec_prefix}/bin
sbindir: ${exec_prefix}/sbin
libdir: ${exec_prefix}/lib
includedir: ${prefix}/include
usrbin_execdir: ${exec_prefix}/bin
usrsbin_execdir: ${exec_prefix}/sbin
usrlib_execdir: ${exec_prefix}/lib
compiler: gcc -std=gnu99
cflags: -g -O2
suid cflags:
ldflags:
suid ldflags:
Python:
Python version:
Python libs:
Bash completions: /usr/share/bash-completion/completions
warnings:
-fno-common -Wall -Werror=sequence-point -Wextra -Wmissing-declarations -Wmissing-parameter-type -Wmissing-prototypes -Wno-missing-field-initializers -Wredundant-decls -Wsign-compare -Wtype-limits -Wuninitialized -Wunused-but-set-parameter -Wunused-but-set-variable -Wunused-parameter -Wunused-result -Wunused-variable -Wnested-externs -Wpointer-arith -Wstrict-prototypes
Notice that the completion files are installed to /usr/share/bash-completion/completions instead of /tools. "make install" will fail if the user is lfs. A workaround can be done with a substitution after configuration:
cp Makefile{,.orig}
sed 's|bashcompletiondir = /usr|bashcompletiondir = /tools|' -i Makefile
PS: I'm not sure if SVN bugs should be posted here, please let me know if I should post in the mailing lists/somewhere else instead.
Change History (8)
comment:1 by , 12 years ago
comment:2 by , 12 years ago
Strange... I used the build flags and the packages indicated in the book, using SVN 20140125. Is your build from SVN, too?
comment:3 by , 12 years ago
LOL. I use jhalfs to automate the extraction of the commands from the book. The build is automated.
comment:4 by , 12 years ago
From ./configure, line 22803:
# Check whether --with-bashcompletiondir was given.
if test "${with_bashcompletiondir+set}" = set; then :
withval=$with_bashcompletiondir;
else
if `$PKG_CONFIG --exists bash-completion`; then :
with_bashcompletiondir=`$PKG_CONFIG --variable=completionsdir bash-completion`
else
with_bashcompletiondir=${datadir}/bash-completion/completions
fi
fi
bashcompletiondir=$with_bashcompletiondir
My pkg-config has bash-completion, so the path is taken from host's pkg-config. Using --with-bashcompletiondir=DIR explicitly sets the path.
comment:5 by , 12 years ago
Lovely. What distro?
What we need in Chapter 5 is --with-bashcompletiondir=/dev/null
comment:6 by , 12 years ago
Sorry, sent inadvertently to the mail list LFS-book instead of replying here. Just giving the short story: You need to add "PKG_CONFIG=", to configure's invocation. Otherwise, it uses host's pkg-config, and finds host's libraries instead of those in /tools, resulting in false positive (for example, it finds TINFO on my distro, which is debian sid with libtinfo-dev installed, while of course libtinfo is not in /tools/lib).
Another possibility is to use PKG_CONFIG_LIBDIR=/tools/lib. Dunno what the best solution is. Adding those also solves the bashcompletiondir problem.
comment:8 by , 12 years ago
| Resolution: | → fixed |
|---|---|
| Status: | new → closed |

My reference build shows:
Bash completions: ${datarootdir}/bash-completion/completions
It doesn't say what ${datarootdir} is, but I do have /tools/share/bash-completion/completions/.
Creating a ticket is OK, but discussing in lfs-dev is appropriate too.