+#
+# Conditional build:
+%bcond_without initrd # don't build initrd version
+%bcond_without dietlibc # link initrd version with static glibc instead of dietlibc
+#
Summary: Tools for the XFS filesystem
Summary(pl.UTF-8): Narzędzia do systemu plików XFS
Name: xfsprogs
-Version: 2.9.5
-Release: 2
+Version: 3.0.0
+Release: 4
License: LGPL v2.1 (libhandle), GPL v2 (the rest)
Group: Applications/System
-Source0: ftp://linux-xfs.sgi.com/projects/xfs/download/cmd_tars/%{name}_%{version}-1.tar.gz
-# Source0-md5: d9079d9a8dbc7cc983ed518842ca909f
+Source0: ftp://linux-xfs.sgi.com/projects/xfs/cmd_tars/%{name}-%{version}.tar.gz
+# Source0-md5: ec734f935ec87ebb8be890d29380a3e6
Patch0: %{name}-miscfix-v2.patch
Patch1: %{name}-install-sh.patch
Patch2: %{name}-sharedlibs.patch
Patch3: %{name}-pl.po-update.patch
Patch4: %{name}-dynamic_exe.patch
Patch5: %{name}-LDFLAGS.patch
-Patch6: %{name}-libtool.patch
-Patch7: %{name}-gettext.patch
+Patch6: %{name}-diet.patch
+Patch7: %{name}-static-librt.patch
URL: http://oss.sgi.com/projects/xfs/
BuildRequires: autoconf
BuildRequires: automake
BuildRequires: bash
+%if %{with initrd}
+ %if %{with dietlibc}
+BuildRequires: dietlibc-static >= 2:0.31-6
+BuildRequires: libuuid-dietlibc
+ %else
+BuildRequires: glibc-static
+BuildRequires: libuuid-static
+ %endif
+%endif
BuildRequires: gettext-devel
BuildRequires: libtool
BuildRequires: libuuid-devel
BuildRequires: rpmbuild(macros) >= 1.402
-Obsoletes: libxfs1
BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
%define _sbindir /sbin
Group: Development/Libraries
Requires: %{name} = %{version}-%{release}
Requires: libuuid-devel
-Obsoletes: libxfs1-devel
%description devel
Header files and libraries to develop software which operates on XFS
%description static -l pl.UTF-8
Biblioteki statyczne do XFS.
+%package initrd
+Summary: Tools for the XFS filesystem - initrd version
+Summary(pl.UTF-8): Narzędzia do systemu plików XFS - wersja dla initrd
+Group: Base
+
+%description initrd
+A set of commands to use the XFS filesystem, including mkfs.xfs
+ - initrd version.
+
+%description initrd -l pl.UTF-8
+Zbiór komend do użytku z systemem plików XFS, włączając w to mkfs.xfs
+ - wersja dla initrd.
+
%prep
%setup -q
%patch0 -p1
%patch1 -p1
%patch2 -p1
-%patch3 -p1
+# currently obsolete until needed again
+# %patch3 -p1
%patch4 -p1
%patch5 -p1
%patch6 -p1
%patch7 -p1
+rm -f include/{builddefs,platform_defs}.h
+
%build
%{__aclocal} -I m4
+
+%if %{with initrd}
+%if %{with dietlibc}
+# dietlibc doesn't have aio.h (and xfsprogs does not need it really)
+# dietlibc has needed librt stuff in libc/libpthread
+sed -i -e 's|^AC_PACKAGE_NEED_AIO_H|dnl AC_PACKAGE_NEED_AIO_H|' \
+ -e 's|^AC_PACKAGE_NEED_LIO_LISTIO|dnl AC_PACKAGE_NEED_LIO_LISTIO|' \
+ configure.in
+sed -i -e 's|\(^LIBRT.*=.*\)|# \1|' include/builddefs.in
+sed -i -e 's|\(^LLDLIBS.*=.*\)|\1 -lcompat|' db/Makefile mkfs/Makefile
+%endif
+
%{__autoconf}
%configure \
- --enable-gettext=yes \
- --enable-shared=yes
-%{__make}
+ %{?with_dietlibc:CC="diet %{__cc} -static"} \
+ --disable-gettext \
+ --disable-readline \
+ DEBUG="%{?debug:-DDEBUG}%{!?debug:-DNDEBUG}" \
+ OPTIMIZER="-Wno-deprecated-declarations -Os -D_BSD_SOURCE -D__USE_XOPEN_EXTENDED"
+
+%{__make} -j1 include libxfs libxlog libxcmd libhandle libdisk
+%{__make} -j1 db growfs logprint mkfs mdrestore repair \
+ LDFLAGS="%{rpmldflags} -all-static"
+
+mv -f db/xfs_db initrd-xfs_db
+mv -f growfs/xfs_growfs initrd-xfs_growfs
+mv -f logprint/xfs_logprint initrd-xfs_logprint
+mv -f mkfs/mkfs.xfs initrd-mkfs.xfs
+mv -f mdrestore/xfs_mdrestore initrd-xfs_mdrestore
+mv -f repair/xfs_repair initrd-xfs_repair
+
+%if %{with dietlibc}
+sed -i -e 's|^dnl AC_PACKAGE_NEED_AIO_H|AC_PACKAGE_NEED_AIO_H|' \
+ -e 's|^dnl AC_PACKAGE_NEED_LIO_LISTIO|AC_PACKAGE_NEED_LIO_LISTIO|' \
+ configure.in
+sed -i -e 's|^# \(LIBRT.*=.*\)|\1|' include/builddefs.in
+sed -i -e 's|\(^LLDLIBS.*=.*\) -lcompat|\1|' db/Makefile mkfs/Makefile
+%endif
+
+%{__make} clean
+%endif
+
+%{__autoconf}
+%configure \
+ --enable-gettext \
+ --enable-readline \
+ DEBUG="%{?debug:-DDEBUG}%{!?debug:-DNDEBUG}" \
+ OPTIMIZER="%{rpmcflags}"
+
+%{__make} -j1
%install
rm -rf $RPM_BUILD_ROOT
$RPM_BUILD_ROOT%{_libexecdir}/libhandle.so
ln -sf %{_libdir}/$(basename $RPM_BUILD_ROOT%{_libdir}/libdisk.so.*.*.*) \
$RPM_BUILD_ROOT%{_libexecdir}/libdisk.so
+ln -sf %{_libdir}/$(basename $RPM_BUILD_ROOT%{_libdir}/libxcmd.so.*.*.*) \
+ $RPM_BUILD_ROOT%{_libexecdir}/libxcmd.so
ln -sf %{_libdir}/$(basename $RPM_BUILD_ROOT%{_libdir}/libxfs.so.*.*.*) \
$RPM_BUILD_ROOT%{_libexecdir}/libxfs.so
ln -sf %{_libdir}/$(basename $RPM_BUILD_ROOT%{_libdir}/libxlog.so.*.*.*) \
$RPM_BUILD_ROOT%{_libexecdir}/libxlog.so
-%{__sed} -e "s|libdir='%{_libdir}'|libdir='%{_libexecdir}'|" \
- $RPM_BUILD_ROOT%{_libexecdir}/lib{disk,handle,xfs,xlog}.la
+%{__sed} -i -e "s|libdir='%{_libdir}'|libdir='%{_libexecdir}'|" \
+ $RPM_BUILD_ROOT%{_libexecdir}/lib{disk,handle,xcmd,xfs,xlog}.la
+%{__sed} -i -e "s| %{_libdir}/libxfs.la | %{_libexecdir}/libxfs.la |" \
+ $RPM_BUILD_ROOT%{_libexecdir}/libxlog.la
+
+%if %{with initrd}
+install initrd-xfs_db $RPM_BUILD_ROOT%{_sbindir}
+install initrd-xfs_growfs $RPM_BUILD_ROOT%{_sbindir}
+install initrd-xfs_logprint $RPM_BUILD_ROOT%{_sbindir}
+install initrd-mkfs.xfs $RPM_BUILD_ROOT%{_sbindir}
+install initrd-xfs_mdrestore $RPM_BUILD_ROOT%{_sbindir}
+install initrd-xfs_repair $RPM_BUILD_ROOT%{_sbindir}
+%endif
%find_lang %{name}
# already in /usr
rm -f $RPM_BUILD_ROOT%{_libdir}/libdisk.{a,la,so}
rm -f $RPM_BUILD_ROOT%{_libdir}/libhandle.{a,la,so}
+rm -f $RPM_BUILD_ROOT%{_libdir}/libxcmd.{a,la,so}
rm -f $RPM_BUILD_ROOT%{_libdir}/libxfs.{a,la,so}
-rm -f $RPM_BUILD_ROOT%{_libdir}/libxfslog.{a,la,so}
rm -f $RPM_BUILD_ROOT%{_libdir}/libxlog.{a,la,so}
%clean
%files -f %{name}.lang
%defattr(644,root,root,755)
%doc README doc/{CHANGES,CREDITS}
-%attr(755,root,root) %{_sbindir}/*
-%attr(755,root,root) %{_bindir}/*
+%attr(755,root,root) %{_sbindir}/fsck.xfs
+%attr(755,root,root) %{_sbindir}/mkfs.xfs
+%attr(755,root,root) %{_sbindir}/xfs_repair
+%attr(755,root,root) %{_bindir}/xfs_*
%attr(755,root,root) %{_libdir}/libdisk.so.*.*
%attr(755,root,root) %{_libdir}/libhandle.so.*.*
%attr(755,root,root) %{_libdir}/libxcmd.so.*.*
%attr(755,root,root) %ghost %{_libdir}/libxcmd.so.0
%attr(755,root,root) %ghost %{_libdir}/libxfs.so.0
%attr(755,root,root) %ghost %{_libdir}/libxlog.so.0
-%{_mandir}/man[185]/*
+%{_mandir}/man5/xfs.5*
+%{_mandir}/man8/fsck.xfs.8*
+%{_mandir}/man8/mkfs.xfs.8*
+%{_mandir}/man8/xfs_*.8*
%files devel
%defattr(644,root,root,755)
-%attr(755,root,root) %{_libexecdir}/lib*.so
-%{_libexecdir}/lib*.la
-%{_includedir}/disk
+%attr(755,root,root) %{_libexecdir}/libdisk.so
+%attr(755,root,root) %{_libexecdir}/libhandle.so
+%attr(755,root,root) %{_libexecdir}/libxcmd.so
+%attr(755,root,root) %{_libexecdir}/libxfs.so
+%attr(755,root,root) %{_libexecdir}/libxlog.so
+%{_libexecdir}/libdisk.la
+%{_libexecdir}/libhandle.la
+%{_libexecdir}/libxcmd.la
+%{_libexecdir}/libxfs.la
+%{_libexecdir}/libxlog.la
%{_includedir}/xfs
-%{_mandir}/man3/*
+%{_mandir}/man3/*handle.3*
+%{_mandir}/man3/xfsctl.3*
%files static
%defattr(644,root,root,755)
-%{_libexecdir}/lib*.a
+%{_libexecdir}/libdisk.a
+%{_libexecdir}/libhandle.a
+%{_libexecdir}/libxcmd.a
+%{_libexecdir}/libxfs.a
+%{_libexecdir}/libxlog.a
+
+%if %{with initrd}
+%files initrd
+%defattr(644,root,root,755)
+%attr(755,root,root) %{_sbindir}/initrd-*
+%endif