Skip to contentSkip to conversation

libss: add newer libreadline.so.8 to dlopen path

PATCH Applied Jan Kara 2 participants 3 messages Aug 20, 2021 – Aug 23, 2021

lore
Share & tools
lore

Jan Kara

author
#0 lore raw

PATCH 1/1 libss: add newer libreadline.so.8 to dlopen path

OpenSUSE Tumbleweed now has libreadline.so.8. Add it to the list of libs to look for.

---
 lib/ss/get_readline.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Hum, why don't we look for libreadline.so BTW? That way we could save adding now so version whenever one appears?

lib/ss/get_readline.c +1 -1
index 11c72b3387d1..aa1615747934 100644
@@ -37,7 +37,7 @@ static void ss_release_readline(ss_data *info)
 #endif
 
 /* Libraries we will try to use for readline/editline functionality */
-#define DEFAULT_LIBPATH "libreadline.so.7:libreadline.so.6:libreadline.so.5:libreadline.so.4:libreadline.so:libedit.so.2:libedit.so:libeditline.so.0:libeditline.so"
+#define DEFAULT_LIBPATH "libreadline.so.8:libreadline.so.7:libreadline.so.6:libreadline.so.5:libreadline.so.4:libreadline.so:libedit.so.2:libedit.so:libeditline.so.0:libeditline.so"
 
 #ifdef HAVE_DLOPEN
 void ss_get_readline(int sci_idx)
Signature · 1 line
2.26.2
#1 lore raw
Quoted 10 lines · Jan Kara

OpenSUSE Tumbleweed now has libreadline.so.8. Add it to the list of libs to look for.

---
 lib/ss/get_readline.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Hum, why don't we look for libreadline.so BTW? That way we could save adding now so version whenever one appears?

We do actually look for libreadline.so; it's right after libreadline.so.4:

Quoted 1 line

-#define DEFAULT_LIBPATH "libreadline.so.7:libreadline.so.6:libreadline.so.5:libreadline.so.4:libreadline.so:libedit.so.2:libedit.so:libeditline.so.0:libeditline.so"

However, we still need the libreadline.so.N in the path because at least for some distributions, they only install libreadline.so if you install the -dev package. For example, in Debian, libreadline.so.8 is installed from the libreadline8 package, while libreadline.so is installed from the libreadline-dev package (and it's not guaranteed to be installed).

Fortunately for Debian users, openssh-client depends on libedit2, which means that even if they don't have libreadline-dev installed, we fall back to using libedit.so.2, which does work. So apparently no one noticed that a problem with debugfs on Debian Bullseye (which ships libreadline.so.8).

But I agree that we should add libreadline.so.8 to the search path.

Thanks, applied.

- Ted

author
#2 lore raw
Quoted 15 lines · Theodore Ts'o
Quoted 10 lines · Jan Kara

OpenSUSE Tumbleweed now has libreadline.so.8. Add it to the list of libs to look for.

---
 lib/ss/get_readline.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Hum, why don't we look for libreadline.so BTW? That way we could save adding now so version whenever one appears?

We do actually look for libreadline.so; it's right after libreadline.so.4:

Quoted 8 lines
Quoted 1 line

-#define DEFAULT_LIBPATH "libreadline.so.7:libreadline.so.6:libreadline.so.5:libreadline.so.4:libreadline.so:libedit.so.2:libedit.so:libeditline.so.0:libeditline.so"

However, we still need the libreadline.so.N in the path because at least for some distributions, they only install libreadline.so if you install the -dev package. For example, in Debian, libreadline.so.8 is installed from the libreadline8 package, while libreadline.so is installed from the libreadline-dev package (and it's not guaranteed to be installed).

Oh, right. I've just checked and on my openSUSE machine libreadline.so is also only provided by readline-devel package (which I have installed so I didn't originally noticed). Thanks for explanation. I'm just wondering if there isn't a better way to search for a suitable library...

Honza

Signature · 2 lines
Jan Kara <[email protected]>
SUSE Labs, CR