From e7a42cda7c827e016619e8cab15e2faf5d4181ae Mon Sep 17 00:00:00 2001 From: Lasse Collin Date: Mon, 3 Jun 2024 16:55:03 +0300 Subject: [PATCH] Fix version.sh compatiblity with Solaris The ancient /bin/tr on Solaris doesn't support '\n'. With /usr/xpg4/bin/tr it works but it might not be in PATH. Another problem was that sed was given input that didn't have a newline at the end. Text files must end with a newline to be portable. Fix both problems: - Handle multiline input within sed itself to avoid one tr invocation. The default sed even on Solaris does understand \n. - Use octals in tr -d. \012 works for ASCII "line feed", it's even used as an example in the Solaris man page. But we must strip also ASCII "carriage return" \015 and EBCDIC "next line" \025. The EBCDIC case got handled with \n previously. Stripping \012 and \015 on EBCDIC system won't matter as those control chars won't be present in the string in the first place. An awk-based solution could be an alternative but it might need special casing on Solaris to used nawk instead of awk. The changes in this commit are smaller and should have a smaller risk for regressions. It's also possible that version.sh will be dropped entirely at some point. --- build-aux/version.sh | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/build-aux/version.sh b/build-aux/version.sh index bef1b33d..d1a12a94 100644 --- a/build-aux/version.sh +++ b/build-aux/version.sh @@ -17,6 +17,5 @@ sed -n 's/LZMA_VERSION_STABILITY_ALPHA/alpha/ s/LZMA_VERSION_STABILITY_STABLE// s/^#define LZMA_VERSION_[MPS][AIT][AJNT][A-Z]* //p' \ src/liblzma/api/lzma/version.h \ - | tr '\n' '|' \ - | sed 's/|/./; s/|/./; s/|//g' \ - | tr -d '\r\n' + | sed 'N; N; N; s/\n/./g; s/\.$//' \ + | tr -d '\012\015\025'