summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xPorts/ncurses/package.sh53
1 files changed, 53 insertions, 0 deletions
diff --git a/Ports/ncurses/package.sh b/Ports/ncurses/package.sh
index 2aae289d2a..396d22193b 100755
--- a/Ports/ncurses/package.sh
+++ b/Ports/ncurses/package.sh
@@ -15,10 +15,63 @@ configopts=(
files="https://invisible-mirror.net/archives/ncurses/ncurses-${version}.tar.gz ncurses-${version}.tar.gz 97fc51ac2b085d4cde31ef4d2c3122c21abc217e9090a43a30fc5ec21684e059"
auth_type="sha256"
+check_tic_version() {
+ local tic_path="$1"
+
+ # "ncurses A.B.C" -> "A.B.C" -> "A"
+ local major_version="$($tic_path -V | cut -d ' ' -f2 | cut -d '.' -f1)"
+
+ [ "$major_version" -ge 6 ]
+}
+
+get_tic_path() {
+ # Installation involves generating terminfo files using `tic`.
+ # It seems MacOS ships with an older version of ncurses which has a
+ # `tic` binary that cannot properly parse the `terminfo.src` that ships
+ # with the version we build.
+ # So ensure that at least tic 6.0 is available.
+ # See https://github.com/termux/termux-packages/issues/4487#issuecomment-626277493
+ # and https://lists.gnu.org/archive/html/bug-ncurses/2019-07/msg00020.html.
+
+ if command -v tic >/dev/null; then
+ if check_tic_version "tic"; then
+ echo "tic"
+ return 0
+ else
+ # Check for Homebrew installation.
+ if command -v brew >/dev/null; then
+ local cellar_path=$(brew --cellar ncurses)
+ local highest_version=$(ls "$cellar_path" | head -1)
+ local tic_path="$cellar_path/$highest_version/bin/tic"
+
+ if check_tic_version "$tic_path"; then
+ echo "$tic_path"
+ return 0
+ fi
+ fi
+ fi
+ fi
+
+ return 1
+}
+
pre_configure() {
export CPPFLAGS="-P"
}
+install() {
+ local tic_path=$(get_tic_path)
+ if [ ! $? ]; then
+ echo "Error: installing cross-compiled ncurses requires locally installed ncurses >= 6.0"
+ exit 1
+ fi
+
+ echo "Using $tic_path from $($tic_path -V)"
+
+ export TIC_PATH="$tic_path"
+ run make DESTDIR=$DESTDIR "${installopts[@]}" install
+}
+
post_install() {
# Compatibility symlinks for merged libraries.
for lib in tinfo tic curses; do