Fixed message typo.
[captive.git] / captive.spec.in
index 7ad0a92..fb40beb 100644 (file)
@@ -1,6 +1,6 @@
 # $Id$
 # rpm package description file for building
-# Copyright (C) 2002 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: Applications/System
-Source: http://www.jankratochvil.net/sw/@PACKAGE@-@VERSION@.tar.gz
-Copyright: GPL
+Group: System Environment/Base
+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
+# >= 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
@@ -35,10 +87,60 @@ for accessing drives with possibly proprietary file system data structures.
 Open file system API is provided to access these file system drivers.
 Microsoft Windows system components required by these drivers
 were analyzed and successfuly emulated in the GNU/Linux operating system.
-Currently the implementation allows applications running under the GNU/Linux
-operating system to access VFAT, ISO9660 and EXT2 drives. NTFS file system
-capability target is the final goal being currently developed on the base
-of this project assets.
+
+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.
+
+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: fuse-devel
+Requires: fuse fuse-libs
+
+%description fuse
+FUSE is a userspace filesystem framework.
+
+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-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 >= 1.8.0
+Requires: ntfsprogs >= 1.8.0
+Requires: ntfsprogs-gnomevfs
+Obsoletes: gnome-vfs-httpcaptive
+BuildRequires: gnome-vfs2-devel
+Requires: gnome-vfs2
+BuildRequires: libgnomeui-devel
+Requires: libgnomeui
+BuildRequires: readline-devel
+Requires: readline
+BuildRequires: libxml2-devel >= 2.4.29
+Requires: libxml2 >= 2.4.29
+
+%description install
+Package provides easy enough unattended installation of Microsoft Windows
+platform filesystem access. Installer finds available NTFS partitions and
+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.
@@ -53,19 +155,50 @@ of this project assets.
 #% 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?"
-# FIXME: Use our own CFLAGS to prevent '-mcpu=i686' which up to gcc-20030214 gcc
-# will ignore stack freeing of attribute((stdcall)) callees in caller functions code.
-# Check at the final call of src/libcaptive/reactos/ntoskrnl/io/irp.c/IofCallDriver().
-CFLAGS="-O2"
+%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 \
-               --with-readline
+               --disable-standalone \
+               --disable-standalone-fonts \
+%endif
+               --disable-standalone-yum \
+               --with-readline \
+               --disable-bug-replay \
+               --disable-lufs \
+               --enable-fuse \
+               --enable-install-pkg \
+               --enable-sandbox-setuid=@PACKAGE@ \
+               --enable-sandbox-setgid=@PACKAGE@ \
+               --enable-sandbox-chroot=%{_var}/lib/@PACKAGE@ \
+               --enable-man-pages \
+               --enable-sbin-mountdir=/sbin \
+               --enable-sbin-mount-fs=ntfs:fastfat:cdfs:ext2fsd \
+               --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
@@ -73,21 +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/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
+# 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
-%{_libdir}/gnome-vfs-2.0/modules/libcaptive-gnomevfs-@VERSION@.so
-%{_libdir}/gnome-vfs-2.0/modules/libcaptive-gnomevfs.so
-%{_libdir}/libcaptive-@VERSION@.so
-%{_bindir}/captive-cmdline
-%{_sysconfdir}/gnome-vfs-2.0/modules/captive.conf
+%doc README NEWS AUTHORS THANKS TODO
+%if ! %{static}
+%{_libdir}/lib@PACKAGE@-@VERSION@.so
+%{_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) %{_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
+%{_var}/lib/@PACKAGE@
+
+%if ! %{static}
+%files fuse
+%endif
+%defattr(-,root,root)
+%{_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
+
+%if ! %{static}
+%files install
+%endif
+%defattr(-,root,root)
+%{_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)