# $Id$ # rpm package description file for building # Copyright (C) 2002-2005 Jan Kratochvil # # 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 # the Free Software Foundation; exactly version 2 of June 1991 is required # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # 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 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 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. 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. #% Group: Development/System #% Requires: surprise = %{PACKAGE_VERSION} #% #% %description devel #% Development package containing libraries for static linking together with #% header files needed for any linking. #% #% Microsoft Windows platform filesystem access. #% TODO %prep %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 \ --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 %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 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) # %doc ChangeLog # /usr/include/@PACKAGE@ # /usr/share/aclocal/* # %{_libdir}/gnome-vfs-2.0/modules/libcaptive-gnomevfs.la # /usr/lib/*.a # /usr/lib/*.la # ###for --disable-shared/(--enable-static-link disable): # /usr/lib/*[a-z].so