aboutsummaryrefslogtreecommitdiffstats
path: root/main/ncurses/APKBUILD
blob: e11f094a9ef3f723f1c4c39c2fa8ec4d9e00d7eb (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
# Maintainer: Natanael Copa <ncopa@alpinelinux.org>
pkgname=ncurses
pkgver=6.1_p20190518
_ver=${pkgver/_p/-}
pkgrel=2
pkgdesc="Console display library"
url="https://www.gnu.org/software/ncurses/"
arch="all"
options="!check" # "tests" are actual demo programs, not a test suite.
license="MIT"
makedepends_build="ncurses"
subpackages="$pkgname-static $pkgname-dev $pkgname-doc $pkgname-libs
	$pkgname-terminfo-base:base:noarch $pkgname-terminfo:terminfo:noarch"
source="https://dev.alpinelinux.org/archive/ncurses/ncurses-$_ver.tgz"
builddir="$srcdir"/ncurses-$_ver

# secfixes:
#   6.1_p20180414-r0:
#     - CVE-2018-10754
#   6.0_p20171125-r0:
#     - CVE-2017-16879
#   6.0_p20170701-r0:
#     - CVE-2017-10684

build() {
	./configure \
		--build=$CBUILD \
		--host=$CHOST \
		--mandir=/usr/share/man \
		--without-ada \
		--without-tests \
		--disable-termcap \
		--disable-rpath-hack \
		--disable-stripping \
		--with-pkg-config-libdir=/usr/lib/pkgconfig \
		--without-cxx-binding \
		--with-terminfo-dirs="/etc/terminfo:/usr/share/terminfo:/lib/terminfo:/usr/lib/terminfo" \
		--enable-pc-files \
		--with-shared \
		--enable-widec
	make
}

package() {
	make -j1 DESTDIR="$pkgdir" install

	# Install basic terms in /etc/terminfo
	for i in ansi console dumb linux rxvt screen sun vt52 vt100 vt102 \
			vt200 vt220 xterm xterm-color xterm-xfree86; do
		local termfile=$(find "$pkgdir"/usr/share/terminfo/ -name "$i" 2>/dev/null) || true
		local basedir=$(basename $(dirname "$termfile"))

		[ -z "$termfile" ] && continue

		install -d "$pkgdir"/etc/terminfo/$basedir
		mv ${termfile} "$pkgdir"/etc/terminfo/$basedir/
		ln -s ../../../../etc/terminfo/$basedir/$i \
			"$pkgdir"/usr/share/terminfo/$basedir/$i
	done
}

dev() {
	default_dev
	# force link against *w.so
	for lib in ncurses ncurses++ form panel menu; do
		echo "INPUT(-l${lib}w)" > "$subpkgdir"/usr/lib/lib${lib}.so
		ln -s ${lib}w.pc "$subpkgdir"/usr/lib/pkgconfig/${lib}.pc
	done
	# link curses -> ncurses
	echo "INPUT(-lncursesw)" > "$subpkgdir"/usr/lib/libcursesw.so
	ln -s libncurses.so "$subpkgdir"/usr/lib/libcurses.so
}

terminfo() {
	depends=""
	pkgdesc="$pkgdesc (other terminfo files)"
	depends="$pkgname-terminfo-base=$pkgver-r$pkgrel"

	_mv etc/terminfo
	_mv usr/share/terminfo
	_mv usr/lib/terminfo
}

libs() {
	pkgdesc="Ncurses libraries"
	depends="$pkgname-terminfo-base=$pkgver-r$pkgrel"
	provides="ncurses-widec-libs=$pkgver-r$pkgrel"

	mkdir -p "$subpkgdir"/usr/lib
	mv "$pkgdir"/usr/lib/*.so.* "$subpkgdir"/usr/lib
}

_mv() {
	[ -n "$subpkgdir" ] || return 1

	# store directory
	d="$(pwd -L)"

	cd "$pkgdir"
	local pattern f
	for pattern; do
		for f in ${pattern#/}; do # let shell expand the pattern
			# only create dir if needed
			if [ "${f%/*}" != "$f" ]; then
				mkdir -p "$subpkgdir/${f%/*}"
			fi
			mv -v "$pkgdir"/$f "$subpkgdir/${f%/*}"
			# cleanup
			rmdir -p "$f" || rmdir -p "${f%/*}" || true
		done
	done
}

base() {
	depends=""
	pkgdesc="Descriptions of common terminals"

	_mv usr/share/terminfo/x/xterm-256color
	_mv usr/share/terminfo/a/alacritty
	_mv usr/share/terminfo/t/tmux
	_mv usr/share/terminfo/t/tmux-256color
	_mv usr/share/terminfo/t/terminator
	_mv usr/share/terminfo/t/terminology*
	_mv usr/share/terminfo/v/vte
	_mv usr/share/terminfo/v/vte-256color
	_mv usr/share/terminfo/g/gnome
	_mv usr/share/terminfo/g/gnome-256color
	_mv usr/share/terminfo/k/kitty
	_mv usr/share/terminfo/k/konsole
	_mv usr/share/terminfo/k/konsole-256color
	_mv usr/share/terminfo/k/konsole-linux
	_mv usr/share/terminfo/p/putty
	_mv usr/share/terminfo/p/putty-256color
	_mv usr/share/terminfo/r/rxvt
	_mv usr/share/terminfo/r/rxvt-256color
	_mv usr/share/terminfo/s/st-0*
	_mv usr/share/terminfo/s/st-256color
	_mv usr/share/terminfo/s/screen-256color
	_mv etc/terminfo

	mkdir -p "$pkgdir"/etc/terminfo/s
	mv "$subpkgdir"/etc/terminfo/s/sun "$pkgdir"/etc/terminfo/s
	mv "$subpkgdir"/etc/terminfo/v "$pkgdir"/etc/terminfo
}

static() {
	pkgdesc="Static libraries for the ncurses library"
	mkdir -p "$subpkgdir"/usr/lib
	mv "$pkgdir"/usr/lib/*.a "$subpkgdir"/usr/lib/
}

sha512sums="4db445548a8b9a4160af8dace302390522fb2281032c4eb49aa1ea19f78adfd49233e3fe4a2594efb3c27ff35e6aad8c076bdfb518900445cdf02265a3d5da19  ncurses-6.1-20190518.tgz"