Provide statical linking of GnomeVFS "libntfs" method for: --enable-standalone
[captive.git] / captive.spec.in
1 # $Id$
2 # rpm package description file for building
3 # Copyright (C) 2002-2005 Jan Kratochvil <project-captive@jankratochvil.net>
4
5 # This program is free software; you can redistribute it and/or modify
6 # it under the terms of the GNU General Public License as published by
7 # the Free Software Foundation; exactly version 2 of June 1991 is required
8
9 # This program is distributed in the hope that it will be useful,
10 # but WITHOUT ANY WARRANTY; without even the implied warranty of
11 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12 # GNU General Public License for more details.
13
14 # You should have received a copy of the GNU General Public License
15 # along with this program; if not, write to the Free Software
16 # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
17
18
19 # Build fully statically.
20 # /usr/local/devel-static is required to contain static libraries.
21 %define static 1
22
23
24 # Temporary cludge before full 'devel' package gets deployed
25 %define _unpackaged_files_terminate_build 0
26
27 Summary: Microsoft Windows platform filesystem access.
28 %if %{static}
29 Name: @PACKAGE@-static
30 %else
31 Name: @PACKAGE@
32 %endif
33 %define release 0
34 Version: @VERSION@
35 Release: %{release}
36 Group: System Environment/Base
37 Packager: Jan Kratochvil <project-captive@jankratochvil.net>
38 Source: http://www.jankratochvil.net/project/captive/dist/@PACKAGE@-@VERSION@.tar.gz
39 License: GPL
40 BuildRoot: /var/tmp/@PACKAGE@-@VERSION@-%{release}-root
41 BuildRequires: ORBit2-devel
42 # >= 2.7.0 due to --with-orbit-line=link
43 # >= 2.8.3 due to Mandrake-9.2 bugreport.
44 %if ! %{static}
45 Requires: ORBit2 >= 2.8.3
46 %endif
47 BuildRequires: openssl-devel
48 %if ! %{static}
49 Requires: openssl
50 %endif
51 BuildRequires: gnome-vfs2-devel
52 %if ! %{static}
53 Requires: gnome-vfs2
54 %endif
55 BuildRequires: libxml2-devel
56 %if ! %{static}
57 Requires: libxml2
58 %endif
59 BuildRequires: popt
60 %if ! %{static}
61 Requires: popt
62 %endif
63 BuildRequires: glib2-devel
64 %if ! %{static}
65 Requires: glib2
66 %endif
67 BuildRequires: readline-devel
68 %if ! %{static}
69 Requires: readline
70 %endif
71 BuildRequires: gcc >= 3.0
72 %if %{static}
73 BuildRequires: fuse-devel
74 BuildRequires: ntfsprogs-devel >= 1.8.0
75 BuildRequires: libgnomeui-devel
76 Obsoletes: @PACKAGE@
77 Obsoletes: @PACKAGE@-lufs
78 Obsoletes: @PACKAGE@-install
79 # FIXME: ?: ntfsprogs-gnomevfs < 1.1
80 %else
81 Conflicts: @PACKAGE@-static
82 %endif
83
84 %description
85 Existing binary Microsoft Windows file system drivers were exploited
86 for accessing drives with possibly proprietary file system data structures.
87 Open file system API is provided to access these file system drivers.
88 Microsoft Windows system components required by these drivers
89 were analyzed and successfuly emulated in the GNU/Linux operating system.
90
91 The implementation allows applications running under the GNU/Linux operating
92 system to access NTFS drives. File system driver compatibility with VFAT,
93 ISO9660 and EXT2 is also provided.
94 %if %{static}
95 This packaging is a standalone static version, no other packages are needed.
96
97 %else
98
99 %package fuse
100 Summary: FUSE module for Microsoft Windows platform filesystem access.
101 Group: System Environment/Base
102 Requires: captive = %{PACKAGE_VERSION}
103 BuildRequires: fuse-devel
104 Requires: fuse fuse-libs
105
106 %description fuse
107 FUSE is a userspace filesystem framework.
108
109 Package provides FUSE filesystem module to access Microsoft Windows platform
110 filesystems such as NTFS. Use filesystem type 'captive-ntfs' for NTFS disks.
111
112 %package install
113 Summary: Instant installer for Microsoft Windows platform filesystem access.
114 Group: System Environment/Base
115 Requires: captive-fuse = %{PACKAGE_VERSION}
116 # Versions before 1.8.0 were too buggy
117 BuildRequires: ntfsprogs-devel >= 1.8.0
118 # 'PreReq' needed for Mandrake-9.1 otherwise '%preun install' fails
119 # during 'rpm -e ntfsprogs captive-install':
120 PreReq: ntfsprogs >= 1.8.0
121 Requires: ntfsprogs >= 1.8.0
122 Requires: ntfsprogs-gnomevfs
123 Obsoletes: gnome-vfs-httpcaptive
124 BuildRequires: gnome-vfs2-devel
125 Requires: gnome-vfs2
126 BuildRequires: libgnomeui-devel
127 Requires: libgnomeui
128 BuildRequires: readline-devel
129 Requires: readline
130 BuildRequires: libxml2-devel >= 2.4.29
131 Requires: libxml2 >= 2.4.29
132
133 %description install
134 Package provides easy enough unattended installation of Microsoft Windows
135 platform filesystem access. Installer finds available NTFS partitions and
136 tries to acquire needed Microsoft Windows filesystem driver files.
137
138 You may need to run 'captive-install-acquire' to answer several questions.
139 NTFS disks will become mount(8)able at directories: /mnt/captive-VOLUME_NAME
140
141 %endif
142
143 #% %package devel
144 #% Summary: Microsoft Windows platform filesystem access development support.
145 #% Group: Development/System
146 #% Requires: surprise = %{PACKAGE_VERSION}
147 #% 
148 #% %description devel
149 #% Development package containing libraries for static linking together with
150 #% header files needed for any linking.
151 #% 
152 #% Microsoft Windows platform filesystem access.
153 #% TODO
154
155 %prep
156 %setup -n @PACKAGE@-%{version}
157
158 %build
159 # Never disable debug for captive, see FAQ
160 #       "How to check valid input arguments? Invalid processing state assumptions?"
161 %if 0
162 # For AutoGen:
163 %configure
164 %endif
165 # 'define' of rpm(1) does not accept line-continuation backslashes ('\').
166 %if %{static}
167 export CPPFLAGS="-I/usr/local/devel-static/include/gnome-vfs-module-2.0"
168 %configure \
169                 --disable-shared --enable-static \
170                 --enable-standalone \
171                 --enable-standalone-fonts=%{_datadir}/@PACKAGE@/fonts \
172 %else
173 %configure \
174                 --enable-shared --disable-static \
175                 --disable-standalone \
176                 --disable-standalone-fonts \
177 %endif
178                 --disable-standalone-yum \
179                 --with-readline \
180                 --disable-bug-replay \
181                 --disable-lufs \
182                 --enable-fuse \
183                 --enable-install-pkg \
184                 --enable-sandbox-setuid=@PACKAGE@ \
185                 --enable-sandbox-setgid=@PACKAGE@ \
186                 --enable-sandbox-chroot=%{_var}/lib/@PACKAGE@ \
187                 --enable-man-pages \
188                 --enable-sbin-mountdir=/sbin \
189                 --enable-sbin-mount-fs=ntfs:fastfat:cdfs:ext2fsd \
190                 --with-initddir=%{_initrddir} \
191                 --disable-gtk-doc \
192                 --with-orbit-line=link
193
194 #               --enable-standalone-yum=%{_sysconfdir}/yum.repos.d
195
196 make
197 %if %{static}
198 ./build-static link
199 %endif
200
201 %install
202 make DESTDIR=$RPM_BUILD_ROOT install-strip
203
204 %clean
205 rm -rf $RPM_BUILD_ROOT
206
207 %pre
208
209 %if ! %{static}
210 %pre fuse
211 %endif
212 %if %{static}
213 /usr/sbin/groupadd -r fuse 2>/dev/null || \
214    /usr/sbin/groupadd fuse 2>/dev/null || \
215    true
216 %endif
217
218 %post
219 /sbin/ldconfig
220 /usr/sbin/groupadd -r captive 2>/dev/null || \
221    /usr/sbin/groupadd captive 2>/dev/null || \
222    true
223 /usr/sbin/useradd -r -c "Captive Sandbox" -s /sbin/nologin -g captive -d %{_var}/lib/@PACKAGE@ captive 2>/dev/null || \
224    /usr/sbin/useradd -c "Captive Sandbox" -s /sbin/nologin -g captive -d %{_var}/lib/@PACKAGE@ captive 2>/dev/null || \
225    true
226
227 %if ! %{static}
228 %post fuse
229 %endif
230 /usr/lib/lsb/install_initd @PACKAGE@ 2>/dev/null || \
231                 /sbin/chkconfig --add @PACKAGE@
232 touch %{_var}/lock/subsys/@PACKAGE@
233
234 %if ! %{static}
235 %post install
236 %endif
237 %{_sbindir}/captive-install-fstab --add
238 %{_sbindir}/captive-install-acquire --text --scan-disks-quick
239
240 %preun
241
242 %if ! %{static}
243 %preun fuse
244 %endif
245 # Only on real erase, not on upgrade:
246 if [ $1 = 0 ];then
247         /usr/lib/lsb/remove_initd @PACKAGE@ 2>/dev/null || \
248                         /sbin/chkconfig --del @PACKAGE@
249         %{_initrddir}/@PACKAGE@ stop
250         rm -f %{_var}/lock/subsys/@PACKAGE@
251 fi
252
253 %if ! %{static}
254 %preun install
255 %endif
256 # Only on real erase, not on upgrade:
257 if [ $1 = 0 ];then
258         %{_sbindir}/captive-install-fstab --remove
259 fi
260
261 %postun
262 /sbin/ldconfig
263 # Only on real erase, not on upgrade:
264 if [ $1 = 0 ];then
265         # Remove stale sandbox chroot directories owned by 'captive.captive':
266         rm -rf %{_var}/lib/@PACKAGE@/s-*
267         rm -rf %{_var}/lib/@PACKAGE@/tmp/*
268 fi
269
270 %files
271 %defattr(-,root,root)
272 %doc README NEWS AUTHORS THANKS TODO
273 %if ! %{static}
274 %{_libdir}/lib@PACKAGE@-@VERSION@.so
275 %{_libdir}/gnome-vfs-2.0/modules/lib@PACKAGE@-gnomevfs-@VERSION@.so
276 %{_libdir}/gnome-vfs-2.0/modules/lib@PACKAGE@-gnomevfs.so
277 %endif
278 %attr(644,root,root) %{_mandir}/man?/@PACKAGE@.*
279 %{_bindir}/@PACKAGE@-cmdline
280 %attr(644,root,root) %{_mandir}/man?/@PACKAGE@-cmdline.*
281 %attr(4755,root,root) %{_libexecdir}/@PACKAGE@-sandbox-server
282 %attr(644,root,root) %{_mandir}/man?/@PACKAGE@-sandbox-server.*
283 %config %{_sysconfdir}/w32-mod-id.captivemodid.xml
284 %if ! %{static}
285 %config %{_sysconfdir}/gnome-vfs-2.0/modules/@PACKAGE@.conf
286 %endif
287 # %config %{_sysconfdir}/yum.repos.d/*
288 %{_datadir}/locale/*/LC_MESSAGES/@PACKAGE@.mo
289 %{_var}/lib/@PACKAGE@
290
291 %if ! %{static}
292 %files fuse
293 %endif
294 %defattr(-,root,root)
295 %{_initrddir}/@PACKAGE@
296 /sbin/mount.@PACKAGE@
297 /sbin/mount.@PACKAGE@-*
298 %attr(644,root,root) %{_mandir}/man?/mount.@PACKAGE@.*
299 %if %{static}
300 %attr(4754,root,fuse) %{_libexecdir}/@PACKAGE@-fusermount
301 %endif
302
303 %if ! %{static}
304 %files install
305 %endif
306 %defattr(-,root,root)
307 %{_sbindir}/captive-install-fstab
308 %attr(644,root,root) %{_mandir}/man?/captive-install-fstab.*
309 %{_sbindir}/captive-install-acquire
310 %attr(644,root,root) %{_mandir}/man?/captive-install-acquire.*
311 %if %{static}
312 %{_datadir}/@PACKAGE@
313 %endif
314
315 # %files devel
316 # %defattr(-,root,root)
317 # %doc ChangeLog
318 # /usr/include/@PACKAGE@
319 # /usr/share/aclocal/*
320 # %{_libdir}/gnome-vfs-2.0/modules/libcaptive-gnomevfs.la
321 # /usr/lib/*.a
322 # /usr/lib/*.la
323 # ###for --disable-shared/(--enable-static-link disable):
324 # /usr/lib/*[a-z].so