Add default Smack manifest for ncurses.spec
[external/ncurses.git] / packaging / ncurses.spec
1 Name:       ncurses
2 Summary:    Ncurses support utilities
3 Version:    5.7
4 Release:    4
5 Group:      System/Base
6 License:    MIT
7 URL:        http://invisible-island.net/ncurses/ncurses.html
8 Source0:    http://ftp.gnu.org/pub/gnu/ncurses/ncurses-%{version}.tar.gz
9 Source101:  ncurses-rpmlintrc
10 Source1001: packaging/ncurses.manifest 
11 Patch0:     01-use-d-reentrant.patch
12 Patch1:     02-debian-backspace.patch
13 Patch2:     03-linux-use-fsuid.patch
14 Patch3:     05-emdebian-wchar.patch
15 Patch4:     06-kfreebsd.patch
16 Patch5:     08-pkg-config-libdir.patch
17 BuildRequires:  pkgconfig
18
19 %description
20 The curses library routines are a terminal-independent method of
21 updating character screens with reasonable optimization.  The ncurses
22 (new curses) library is a freely distributable replacement for the
23 discontinued 4.4 BSD classic curses library.
24
25 This package contains support utilities, including a terminfo compiler
26 tic, a decompiler infocmp, clear, tput, tset, and a termcap conversion
27 tool captoinfo.
28
29
30
31 %package -n ncurses-libs
32 Summary:    Ncurses libraries
33 Group:      System/Libraries
34 Requires:   %{name} = %{version}-%{release}
35 Requires:   ncurses-base = %{version}-%{release}
36 Requires(post): /sbin/ldconfig
37 Requires(postun): /sbin/ldconfig
38
39 %description -n ncurses-libs
40 The curses library routines are a terminal-independent method of
41 updating character screens with reasonable optimization.  The ncurses
42 (new curses) library is a freely distributable replacement for the
43 discontinued 4.4 BSD classic curses library.
44
45 This package contains the ncurses libraries.
46
47
48 %package term
49 Summary:    Terminal descriptions
50 Group:      System/Base
51 Requires:   %{name} = %{version}-%{release}
52 Requires:   ncurses-base = %{version}-%{release}
53
54 %description term
55 This package contains additional terminal descriptions not found in
56 the ncurses-base package.
57
58
59 %package base
60 Summary:    Descriptions of common terminals
61 Group:      System/Base
62 Requires:   %{name} = %{version}-%{release}
63 Conflicts:   ncurses < 5.6-13
64
65 %description base
66 This package contains descriptions of common terminals. Other terminal
67 descriptions are included in the ncurses-term package.
68
69
70 %package -n ncurses-devel
71 Summary:    Development files for the ncurses library
72 Group:      Development/Libraries
73 Requires:   %{name} = %{version}-%{release}
74 Requires:   ncurses-libs = %{version}-%{release}
75
76 %description -n ncurses-devel
77 The header files and libraries for developing applications that use
78 the ncurses terminal handling library.
79
80 Install the ncurses-devel package if you want to develop applications
81 which will use ncurses.
82
83
84
85 %prep
86 %setup -q -n %{name}-%{version}
87
88 %patch0 -p1
89 %patch1 -p1
90 %patch2 -p1
91 %patch3 -p1
92 %patch4 -p1
93 %patch5 -p1
94
95 %build
96 cp %{SOURCE1001} .
97
98 %configure 
99
100
101 %define rootdatadir /lib
102 export PKG_CONFIG_LIBDIR=%{_libdir}/pkgconfig
103
104 %configure --prefix=/usr \
105                 --with-shared \
106                 --mandir=/usr/share/man \
107                 --without-profile --without-debug \
108                 --disable-rpath --enable-echo \
109                 --enable-const \
110                 --without-ada \
111                 --enable-symlinks \
112                 --enable-pc-files \
113                 --disable-lp64 \
114                 --with-chtype='long' \
115                 --with-mmask-t='long' \
116                 --disable-termcap \
117                 --with-default-terminfo-dir=/usr/share/terminfo \
118                 --with-terminfo-dirs="/etc/terminfo:/lib/terminfo:/usr/share/terminfo" \
119                 --with-ticlib
120
121 make %{?_smp_mflags} libs
122 make %{?_smp_mflags} -C progs
123
124 %install
125 rm -rf %{buildroot}
126
127
128 make DESTDIR=$RPM_BUILD_ROOT install.{libs,progs,data}
129
130 chmod 755 ${RPM_BUILD_ROOT}%{_libdir}/lib*.so.*.*
131
132 # move lib{ncurses{,w},tinfo}.so.* to /lib*
133 #mkdir $RPM_BUILD_ROOT/%{_lib}
134 #mv $RPM_BUILD_ROOT%{_libdir}/lib{ncurses{,w},tinfo}.so.* $RPM_BUILD_ROOT/%{_lib}
135 #for l in $RPM_BUILD_ROOT%{_libdir}/lib{ncurses{,w},tinfo}.so; do
136 #ln -sf $(echo %{_libdir} | \
137 #sed 's,\(^/\|\)[^/][^/]*,..,g')/%{_lib}/$(readlink $l) $l
138 #done
139
140 mkdir -p $RPM_BUILD_ROOT{%{rootdatadir},%{_sysconfdir}}/terminfo
141
142 # move few basic terminfo entries to /lib
143 baseterms=
144 for termname in \
145 ansi dumb linux vt100 vt100-nav vt102 vt220 vt52
146 do
147 for t in $(find $RPM_BUILD_ROOT%{_datadir}/terminfo \
148 -samefile $RPM_BUILD_ROOT%{_datadir}/terminfo/${termname::1}/$termname)
149 do
150 baseterms="$baseterms $(basename $t)"
151 done
152 done
153 for termname in $baseterms; do
154 termpath=terminfo/${termname::1}/$termname
155 mkdir $RPM_BUILD_ROOT%{rootdatadir}/terminfo/${termname::1} &> /dev/null || :
156 mv $RPM_BUILD_ROOT%{_datadir}/$termpath $RPM_BUILD_ROOT%{rootdatadir}/$termpath
157 ln -s $(dirname %{_datadir}/$termpath | \
158 sed 's,\(^/\|\)[^/][^/]*,..,g')%{rootdatadir}/$termpath \
159 $RPM_BUILD_ROOT%{_datadir}/$termpath
160 done
161
162 # prepare -base and -term file lists
163 for termname in \
164 Eterm\* aterm cons25 cygwin eterm\* gnome gnome-256color hurd jfbterm \
165 konsole konsole-256color mach\* mlterm mrxvt nsterm putty\* pcansi \
166 rxvt rxvt-\* screen screen-\* screen.\* sun teraterm teraterm2.3 \
167 wsvt25\* xfce xterm xterm-\*
168 do
169 for i in $RPM_BUILD_ROOT%{_datadir}/terminfo/?/$termname; do
170 for t in $(find $RPM_BUILD_ROOT%{_datadir}/terminfo -samefile $i); do
171 baseterms="$baseterms $(basename $t)"
172 done
173 done
174 done 2> /dev/null
175 for t in $baseterms; do
176 echo "%dir %{_datadir}/terminfo/${t::1}"
177 echo %{_datadir}/terminfo/${t::1}/$t
178 done 2> /dev/null | sort -u > terms.base
179 find $RPM_BUILD_ROOT%{_datadir}/terminfo \! -type d | \
180 sed "s|^$RPM_BUILD_ROOT||" | while read t
181 do
182 echo "%dir $(dirname $t)"
183 echo $t
184 done 2> /dev/null | sort -u | comm -2 -3 - terms.base > terms.term
185
186 # can't replace directory with symlink (rpm bug), symlink all headers
187 mkdir $RPM_BUILD_ROOT%{_includedir}/ncurses{,w}
188 for l in $RPM_BUILD_ROOT%{_includedir}/*.h; do
189 ln -s ../$(basename $l) $RPM_BUILD_ROOT%{_includedir}/ncurses
190 ln -s ../$(basename $l) $RPM_BUILD_ROOT%{_includedir}/ncursesw
191 done
192
193 rm -f $RPM_BUILD_ROOT%{_libdir}/libcurses{,w}.so
194 echo "INPUT(-lncurses)" > $RPM_BUILD_ROOT%{_libdir}/libcurses.so
195 echo "INPUT(-lncursesw)" > $RPM_BUILD_ROOT%{_libdir}/libcursesw.so
196
197 echo "INPUT(-ltinfo)" > $RPM_BUILD_ROOT%{_libdir}/libtermcap.so
198
199 rm -f $RPM_BUILD_ROOT%{_libdir}/terminfo
200 rm -f $RPM_BUILD_ROOT%{_libdir}/pkgconfig/{*_g,ncurses++*}.pc
201
202 rm -f $RPM_BUILD_ROOT%{_libdir}/*.a
203
204
205 %post -n ncurses-libs -p /sbin/ldconfig
206
207 %postun -n ncurses-libs -p /sbin/ldconfig
208
209 %files
210 %manifest ncurses.manifest
211 %{_bindir}/[cirt]*
212
213
214 %files -n  ncurses-libs
215 %manifest ncurses.manifest
216 %{_libdir}/lib*.so.*
217
218 %files term -f terms.term
219 %manifest ncurses.manifest
220
221 %files base -f terms.base
222 %manifest ncurses.manifest
223 %dir %{_sysconfdir}/terminfo
224 %{rootdatadir}/terminfo
225 %{_datadir}/tabset
226 %dir %{_datadir}/terminfo
227
228 %files -n ncurses-devel
229 %manifest ncurses.manifest
230 %{_bindir}/ncurses*-config
231 %{_libdir}/lib*.so
232 %{_libdir}/pkgconfig/*.pc
233 %dir %{_includedir}/ncurses
234 %dir %{_includedir}/ncursesw
235 %{_includedir}/ncurses/*.h
236 %{_includedir}/ncursesw/*.h
237 %{_includedir}/*.h
238