ports/147747: bash-4.1 stealthily depends on libiconv

Alex Goncharov alex-goncharov at comcast.net
Thu Jun 10 03:40:04 UTC 2010


>Number:         147747
>Category:       ports
>Synopsis:       bash-4.1 stealthily depends on libiconv
>Confidential:   yes
>Severity:       non-critical
>Priority:       low
>Responsible:    freebsd-ports-bugs
>State:          open
>Quarter:        
>Keywords:       
>Date-Required:
>Class:          sw-bug
>Submitter-Id:   current-users
>Arrival-Date:   Thu Jun 10 03:40:03 UTC 2010
>Closed-Date:
>Last-Modified:
>Originator:     Alex Goncharov
>Release:        
>Organization:
>Environment:
>Description:
For as much as I can remember, building `shells/bash' with WITHOUT_NLS=1 resulted in
/usr/local/bin/bash not being dependent on libiconv.so -- which is what I
want.

Let's look at the situation with `bash' built in 2010-01:

----------------------------------------
grep NLS /etc/make.conf
=>
WITHOUT_NLS=       1

--------------------
pkg_which /usr/local/bin/bash
=>
bash-4.0.35

--------------------
pkg_info -r bash-\*
=>
Information for bash-4.0.35:

Depends on:


--------------------
ls -l /usr/local/bin/bash
=>
-rwxr-xr-x  1 root  wheel  729376 Jan  4 21:10 /usr/local/bin/bash*

--------------------
ldd /usr/local/bin/bash
=>
/usr/local/bin/bash:
        libncurses.so.8 => /lib/libncurses.so.8 (0x8006df000)
        libc.so.7 => /lib/libc.so.7 (0x80082b000)

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

Can't argue with this -- the desired and logically consistent result.

Let's now look at the `bash' just built, on a different machine:

----------------------------------------
grep NLS /etc/make.conf
=>
WITHOUT_NLS=       1

--------------------
pkg_which /usr/local/bin/bash
=>
bash-4.1.5_2

--------------------
pkg_info -r bash-\*
=>
Information for bash-4.1.5_2:

Depends on:

ls -l /usr/local/bin/bash
=>
-rwxr-xr-x  1 root  wheel  632140 Jun  9 20:24 /usr/local/bin/bash*

--------------------
ldd /usr/local/bin/bash
=>
/usr/local/bin/bash:
        libncurses.so.8 => /lib/libncurses.so.8 (0x28120000)
        libiconv.so.3 => /usr/local/lib/libiconv.so.3 (0x28160000)
        libc.so.7 => /lib/libc.so.7 (0x28256000)

        ^^^^^ libiconv is both undesirable and "unregistered" -- see the next example.
	
----------------------------------------

make -C /usr/ports/shells/bash run-depends-list| grep libiconv
=>

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

It would be ideal to be able to exclude libiconv from the build and
dependency, subject to a certain make variable setting, but this seems
to be difficult to do without the port surgery available only to the
port maintainer, so at least let's register the libiconv dependency
correctly, so that the installation from a package results in a
workable `bash'.

Applying a trivial patch (enclosed) I get now:

----------------------------------------
make -C /usr/ports/shells/bash run-depends-list| grep libiconv
=>
/usr/ports/converters/libiconv

--------------------
ldd /usr/local/bin/bash
=>
/usr/local/bin/bash:
        libncurses.so.8 => /lib/libncurses.so.8 (0x28120000)
        libiconv.so.3 => /usr/local/lib/libiconv.so.3 (0x28160000)
        libc.so.7 => /lib/libc.so.7 (0x28256000)
----------------------------------------

>How-To-Repeat:
>Fix:
>Release-Note:
>Audit-Trail:
>Unformatted:
 < Release:	>



More information about the freebsd-ports-bugs mailing list