# shells/bash fails with readline port (undefined tputs)



## gedge (Jan 11, 2021)

running portmaster(8) with the latest devel/readline port and upgrading to the latest bash:


```
--- bash ---
rm -f bash
cc -L./builtins -L/usr/local/lib -L/usr/local/lib -L./lib/glob  -L./lib/tilde  -L./lib/sh  -L/usr/local/lib -fstack-protector-strong -fuse-ld=bfd  -static  -O2 -pipe  -DLIBICONV_PLUG -fstack-protector-strong -isystem /usr/local/include -fno-strict-aliasing  -static -o bash shell.o eval.o y.tab.o general.o make_cmd.o print_cmd.o   dispose_cmd.o execute_cmd.o variables.o copy_cmd.o error.o  expr.o flags.o jobs.o subst.o hashcmd.o hashlib.o mailcheck.o  trap.o input.o unwind_prot.o pathexp.o sig.o test.o version.o  alias.o array.o arrayfunc.o assoc.o braces.o bracecomp.o bashhist.o  bashline.o  list.o stringlib.o locale.o findcmd.o redir.o  pcomplete.o pcomplib.o syntax.o xmalloc.o  -lbuiltins -lglob -lsh -lreadline -lhistory -lncursesw  -ltilde  lib/intl/libintl.a   -L/usr/local/lib
/usr/local/bin/ld.bfd: ./lib/sh/libsh.a(tmpfile.o): in function `sh_mktmpname':
tmpfile.c:(.text+0x85): warning: warning: mktemp() possibly used unsafely; consider using mkstemp()
/usr/local/bin/ld.bfd: /usr/local/lib/libreadline.a(display.o): in function `rl_redisplay':
display.c:(.text+0x1e5): undefined reference to `tputs'
/usr/local/bin/ld.bfd: display.c:(.text+0x175d): undefined reference to `tputs'
/usr/local/bin/ld.bfd: /usr/local/lib/libreadline.a(display.o): in function `update_line':
display.c:(.text+0x3783): undefined reference to `tputs'
/usr/local/bin/ld.bfd: display.c:(.text+0x3c67): undefined reference to `tgoto'
/usr/local/bin/ld.bfd: display.c:(.text+0x3c77): undefined reference to `tputs'
/usr/local/bin/ld.bfd: display.c:(.text+0x3e84): undefined reference to `tputs'
/usr/local/bin/ld.bfd: display.c:(.text+0x3ea2): undefined reference to `tputs'
/usr/local/bin/ld.bfd: display.c:(.text+0x4028): undefined reference to `tgoto'
```

Seems to be failing to use a mixture of the bundled readline (inside bash source) and the readline port

(re-running with the `make config` option off for the readline port ends up with the same error)

Anyone else seeing the same?


----------



## SirDice (Jan 11, 2021)

It appears to have built fine here. Looking for the build logs now to see if I can spot anything.

Edit: I have the option turned on:

```
OPTIONS_FILE_SET+=PORTS_READLINE
```


```
---Begin OPTIONS List---
===> The following configuration options are available for bash-5.1.4_1:
     DOCS=on: Build and/or install documentation
     FDESCFS=off: Enable use of /dev/fd
     HELP=on: Enable builtin help
     NLS=on: Native Language Support
     PORTS_READLINE=on: libreadline from ports instead of bundled one
     STATIC=off: Build static executables and/or libraries
     SYSBASHRC=off: Enable system-wide rc files
     SYSLOG=off: Syslog logging support
===> Use 'make config' to modify these settings
```


```
=======================<phase: package        >============================
===>  Building package for bash-5.1.4_1
===========================================================================
=>> Cleaning up wrkdir
===>  Cleaning for bash-5.1.4_1
build of shells/bash | bash-5.1.4_1 ended at Fri Jan  8 17:58:47 CET 2021
build time: 00:01:12
```


----------



## gedge (Jan 11, 2021)

Thanks for checking.

I can build it successfully with static off, but - for some reason - static has been enabled for this port.


----------



## SirDice (Jan 11, 2021)

I normally have that off (it's off by default too). But the option should work, I have used it in the past. If the STATIC consistently produces build errors then there's something wrong in the port. You should create a PR for that.


----------



## gedge (Jan 12, 2021)

Agreed (I'd spoken to the port maintainer before starting this thread).


----------

