Fixed message typo.
[captive.git] / captive.spec.in
index acd19f2..fb40beb 100644 (file)
@@ -1,6 +1,6 @@
 # $Id$
 # rpm package description file for building
-# Copyright (C) 2002-2003 Jan Kratochvil <project-captive@jankratochvil.net>
+# Copyright (C) 2002-2005 Jan Kratochvil <project-captive@jankratochvil.net>
 # 
 # This program is free software; you can redistribute it and/or modify
 # it under the terms of the GNU General Public License as published by
 # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 
 
+# Build fully statically.
+# /usr/local/staticbuild is required to contain static libraries.
+%define static 1
+
+
 # Temporary cludge before full 'devel' package gets deployed
 %define _unpackaged_files_terminate_build 0
 
 Summary: Microsoft Windows platform filesystem access.
+%if %{static}
+Name: @PACKAGE@-static
+%else
 Name: @PACKAGE@
+%endif
 %define release 0
 Version: @VERSION@
 Release: %{release}
 Group: System Environment/Base
-Packager: Jan Kratochvil <project-captive@jankratochvil.net>
-Source: http://www.jankratochvil.net/project/captive/@PACKAGE@-@VERSION@.tar.gz
-Copyright: GPL
+Packager: Jan Kratochvil <lace@jankratochvil.net>
+Source: http://www.jankratochvil.net/project/captive/dist/@PACKAGE@-@VERSION@.tar.gz
+License: GPL
 BuildRoot: /var/tmp/@PACKAGE@-@VERSION@-%{release}-root
 BuildRequires: ORBit2-devel
-Requires: ORBit2
+# >= 2.7.0 due to --with-orbit-line=link
+# >= 2.8.3 due to Mandrake-9.2 bugreport.
+%if ! %{static}
+Requires: ORBit2 >= 2.8.3
+%endif
 BuildRequires: openssl-devel
+%if ! %{static}
 Requires: openssl
+%endif
 BuildRequires: gnome-vfs2-devel
+%if ! %{static}
 Requires: gnome-vfs2
+%endif
 BuildRequires: libxml2-devel
+%if ! %{static}
 Requires: libxml2
+%endif
 BuildRequires: popt
+%if ! %{static}
 Requires: popt
+%endif
 BuildRequires: glib2-devel
+%if ! %{static}
 Requires: glib2
+%endif
 BuildRequires: readline-devel
+%if ! %{static}
 Requires: readline
+%endif
 BuildRequires: gcc >= 3.0
+%if %{static}
+BuildRequires: fuse-devel
+BuildRequires: ntfsprogs-devel >= 1.8.0
+BuildRequires: libgnomeui-devel
+Obsoletes: @PACKAGE@
+Obsoletes: @PACKAGE@-lufs
+Obsoletes: @PACKAGE@-install
+# FIXME: ?: ntfsprogs-gnomevfs < 1.1
+%else
+Conflicts: @PACKAGE@-static
+%endif
 
 %description
 Existing binary Microsoft Windows file system drivers were exploited
@@ -56,30 +92,37 @@ The implementation allows applications running under the GNU/Linux operating
 system to access NTFS drives. File system driver compatibility with VFAT,
 ISO9660 and EXT2 is also provided.
 
-%package lufs
-Summary: LUFS module for Microsoft Windows platform filesystem access.
+http://www.jankratochvil.net/project/captive/
+%if %{static}
+This packaging is a standalone static version, no other packages are needed.
+
+%else
+
+%package fuse
+Summary: FUSE module for Microsoft Windows platform filesystem access.
 Group: System Environment/Base
 Requires: captive = %{PACKAGE_VERSION}
-BuildRequires: lufs >= 0.9.6-1captive
-Requires: lufs >= 0.9.6-1captive
+BuildRequires: fuse-devel
+Requires: fuse fuse-libs
 
-%description lufs
-LUFS is a hybrid userspace filesystem framework.
+%description fuse
+FUSE is a userspace filesystem framework.
 
-Package provides LUFS filesystem module to access Microsoft Windows platform
+Package provides FUSE filesystem module to access Microsoft Windows platform
 filesystems such as NTFS. Use filesystem type 'captive-ntfs' for NTFS disks.
 
 %package install
 Summary: Instant installer for Microsoft Windows platform filesystem access.
 Group: System Environment/Base
-Requires: captive-lufs = %{PACKAGE_VERSION}
-BuildRequires: ntfsprogs-devel
+Requires: captive-fuse = %{PACKAGE_VERSION}
+# Versions before 1.8.0 were too buggy
+BuildRequires: ntfsprogs-devel >= 1.8.0
 # 'PreReq' needed for Mandrake-9.1 otherwise '%preun install' fails
 # during 'rpm -e ntfsprogs captive-install':
-PreReq: ntfsprogs
-Requires: ntfsprogs
+PreReq: ntfsprogs >= 1.8.0
+Requires: ntfsprogs >= 1.8.0
 Requires: ntfsprogs-gnomevfs
-Requires: gnome-vfs-httpcaptive
+Obsoletes: gnome-vfs-httpcaptive
 BuildRequires: gnome-vfs2-devel
 Requires: gnome-vfs2
 BuildRequires: libgnomeui-devel
@@ -97,6 +140,8 @@ tries to acquire needed Microsoft Windows filesystem driver files.
 You may need to run 'captive-install-acquire' to answer several questions.
 NTFS disks will become mount(8)able at directories: /mnt/captive-VOLUME_NAME
 
+%endif
+
 #% %package devel
 #% Summary: Microsoft Windows platform filesystem access development support.
 #% Group: Development/System
@@ -110,16 +155,33 @@ NTFS disks will become mount(8)able at directories: /mnt/captive-VOLUME_NAME
 #% TODO
 
 %prep
-%setup
+%setup -n @PACKAGE@-%{version}
 
 %build
 # Never disable debug for captive, see FAQ
 #      "How to check valid input arguments? Invalid processing state assumptions?"
+%if 0
+# For AutoGen:
+%configure
+%endif
+# 'define' of rpm(1) does not accept line-continuation backslashes ('\').
+%if %{static}
+export CPPFLAGS="-I/usr/local/staticbuild/include/gnome-vfs-module-2.0"
+%configure \
+               --disable-shared --enable-static \
+               --enable-standalone \
+               --enable-standalone-fonts=%{_datadir}/@PACKAGE@/fonts \
+%else
 %configure \
                --enable-shared --disable-static \
+               --disable-standalone \
+               --disable-standalone-fonts \
+%endif
+               --disable-standalone-yum \
                --with-readline \
                --disable-bug-replay \
-               --enable-lufs \
+               --disable-lufs \
+               --enable-fuse \
                --enable-install-pkg \
                --enable-sandbox-setuid=@PACKAGE@ \
                --enable-sandbox-setgid=@PACKAGE@ \
@@ -127,8 +189,16 @@ NTFS disks will become mount(8)able at directories: /mnt/captive-VOLUME_NAME
                --enable-man-pages \
                --enable-sbin-mountdir=/sbin \
                --enable-sbin-mount-fs=ntfs:fastfat:cdfs:ext2fsd \
-               --disable-gtk-doc
+               --with-initddir=%{_initrddir} \
+               --disable-gtk-doc \
+               --with-orbit-line=link
+
+#              --enable-standalone-yum=%{_sysconfdir}/yum.repos.d
+
 make
+%if %{static}
+./build-static link
+%endif
 
 %install
 make DESTDIR=$RPM_BUILD_ROOT install-strip
@@ -136,55 +206,116 @@ make DESTDIR=$RPM_BUILD_ROOT install-strip
 %clean
 rm -rf $RPM_BUILD_ROOT
 
+%pre
+
+%if ! %{static}
+%pre fuse
+%endif
+%if %{static}
+/usr/sbin/groupadd -r                                  fuse 2>/dev/null || \
+   /usr/sbin/groupadd                                  fuse 2>/dev/null || \
+   /usr/sbin/adduser --quiet --system --no-create-home fuse 2>/dev/null || \
+   echo >&2 "WARNING: Failed to create system group: fuse"
+%endif
+
 %post
 /sbin/ldconfig
-/usr/sbin/useradd -c "Captive Sandbox" -s /sbin/nologin -r -d %{_var}/lib/@PACKAGE@ captive 2>/dev/null || true
+/usr/sbin/groupadd -r                  captive 2>/dev/null || \
+   /usr/sbin/groupadd                  captive 2>/dev/null || \
+   /usr/sbin/addgroup --system --quiet captive 2>/dev/null || \
+   echo >&2 "WARNING: Failed to create system group: captive"
+/usr/sbin/useradd -r -c "Captive Sandbox" -s /sbin/nologin -g captive -d %{_var}/lib/@PACKAGE@ captive 2>/dev/null || \
+   /usr/sbin/useradd -c "Captive Sandbox" -s /sbin/nologin -g captive -d %{_var}/lib/@PACKAGE@ captive 2>/dev/null || \
+   /usr/sbin/adduser --quiet --system --no-create-home            --home %{_var}/lib/@PACKAGE@ captive 2>/dev/null || \
+   echo >&2 "WARNING: Failed to create system user: captive"
+
+%if ! %{static}
+%post fuse
+%endif
+/usr/lib/lsb/install_initd @PACKAGE@ 2>/dev/null || \
+               /sbin/chkconfig --add @PACKAGE@
+touch %{_var}/lock/subsys/@PACKAGE@
+
+%if ! %{static}
+%post install
+%endif
+%{_sbindir}/captive-install-fstab --add
+%{_sbindir}/captive-install-acquire --text --scan-disks-quick
+
+%preun
+
+%if ! %{static}
+%preun fuse
+%endif
+# Only on real erase, not on upgrade:
+if [ $1 = 0 ];then
+       /usr/lib/lsb/remove_initd @PACKAGE@ 2>/dev/null || \
+                       /sbin/chkconfig --del @PACKAGE@
+       %{_initrddir}/@PACKAGE@ stop
+       rm -f %{_var}/lock/subsys/@PACKAGE@
+fi
+
+%if ! %{static}
+%preun install
+%endif
+# Only on real erase, not on upgrade:
+if [ $1 = 0 ];then
+       %{_sbindir}/captive-install-fstab --remove
+fi
 
 %postun
 /sbin/ldconfig
-# Remove stale sandbox chroot directories owned by 'captive.captive':
-rm -rf %{_var}/lib/@PACKAGE@/sandbox-server-*
+# Only on real erase, not on upgrade:
+if [ $1 = 0 ];then
+       # Remove stale sandbox chroot directories owned by 'captive.captive':
+       rm -rf %{_var}/lib/@PACKAGE@/s-*
+       rm -rf %{_var}/lib/@PACKAGE@/tmp/*
+fi
 
 %files
 %defattr(-,root,root)
-%doc README NEWS AUTHORS TODO
+%doc README NEWS AUTHORS THANKS TODO
+%if ! %{static}
 %{_libdir}/lib@PACKAGE@-@VERSION@.so
-%attr(644,root,root) %{_mandir}/man?/@PACKAGE@.*
 %{_libdir}/gnome-vfs-2.0/modules/lib@PACKAGE@-gnomevfs-@VERSION@.so
 %{_libdir}/gnome-vfs-2.0/modules/lib@PACKAGE@-gnomevfs.so
+%endif
+%attr(644,root,root) %{_mandir}/man?/@PACKAGE@.*
 %{_bindir}/@PACKAGE@-cmdline
 %attr(644,root,root) %{_mandir}/man?/@PACKAGE@-cmdline.*
-%attr(4755,root,root) %{_sbindir}/@PACKAGE@-sandbox-server
+%attr(4755,root,root) %{_libexecdir}/@PACKAGE@-sandbox-server
 %attr(644,root,root) %{_mandir}/man?/@PACKAGE@-sandbox-server.*
+%config %{_sysconfdir}/w32-mod-id.captivemodid.xml
+%if ! %{static}
 %config %{_sysconfdir}/gnome-vfs-2.0/modules/@PACKAGE@.conf
+%endif
+# %config %{_sysconfdir}/yum.repos.d/*
 %{_datadir}/locale/*/LC_MESSAGES/@PACKAGE@.mo
-%attr(755,root,root) %{_var}/lib/@PACKAGE@
-%attr(1777,root,root) %{_var}/lib/@PACKAGE@/tmp
-%attr(644,root,root) %{_var}/lib/@PACKAGE@/*.sys
+%{_var}/lib/@PACKAGE@
 
-%files lufs
+%if ! %{static}
+%files fuse
+%endif
 %defattr(-,root,root)
-%{_libdir}/liblufs-@PACKAGE@fs-@VERSION@.so
-%{_libdir}/liblufs-@PACKAGE@fs.so
-%attr(644,root,root) %{_mandir}/man?/lufs-@PACKAGE@fs.*
+%{_initrddir}/@PACKAGE@
 /sbin/mount.@PACKAGE@
 /sbin/mount.@PACKAGE@-*
 %attr(644,root,root) %{_mandir}/man?/mount.@PACKAGE@.*
+%if %{static}
+%attr(4754,root,fuse) %{_libexecdir}/@PACKAGE@-fusermount
+%endif
 
-%post install
-%{_sbindir}/captive-install-fstab --add
-%{_sbindir}/captive-install-acquire --text --scan-disks-quick
-
-%preun install
-%{_sbindir}/captive-install-fstab --remove
-
+%if ! %{static}
 %files install
+%endif
 %defattr(-,root,root)
-%config %{_sysconfdir}/w32-mod-id.captivemodid.xml
 %{_sbindir}/captive-install-fstab
 %attr(644,root,root) %{_mandir}/man?/captive-install-fstab.*
 %{_sbindir}/captive-install-acquire
 %attr(644,root,root) %{_mandir}/man?/captive-install-acquire.*
+%if %{static}
+%{_datadir}/@PACKAGE@
+%endif
 
 # %files devel
 # %defattr(-,root,root)