Whamcloud - gitweb
LU-2784 build: Provide RPMs build for Xeon Phi(TM) card
[fs/lustre-release.git] / lustre.spec.in
index 98086b8..89d556b 100644 (file)
@@ -43,7 +43,7 @@
 # response from them
 #%%global _use_internal_dependency_generator 0
 
-%define is_client %(bash -c "if [[ %{lustre_name} = *-client ]]; then echo -n '1'; else echo -n '0'; fi")
+%define is_client %(bash -c "if [[ %{lustre_name} = *-client* ]]; then echo -n '1'; else echo -n '0'; fi")
 # for those uses that don't want the -smp/-bigsmp (or the .arch) on the end
 # of %kversion
 %define krequires %(bash -c "echo %{kversion} | sed -e 's/\.x86_64$//' -e 's/\.i[3456]86$//' -e 's/-smp$//' -e 's/-bigsmp$//' -e 's/-ppc64$//' -e 's/-default$//'")
 %define build_lustre_osd_zfs 0
 %endif
 
+%if %{defined cross_path} && %{defined post_script}
+%define rpm_post_base %(echo $(dirname %{cross_path})/%{lustre_name})
+%endif
+
 Summary: Lustre File System
 Name: %{lustre_name}
 Version: %{version}
@@ -81,6 +85,9 @@ Userspace tools and files for the Lustre file system.
 
 %package modules
 Summary: Kernel Lustre modules for Linux %{kversion}
+%if %{defined cross_requires}
+Requires: %{cross_requires}
+%else
 # for SLES11, we need nothing here
 # for SLES10, we need (where %{flavor} is, i.e. smp):
 %if %sles10
@@ -92,6 +99,7 @@ Requires: kernel-%{flavor}
 Requires: kernel = %{krequires}
 %endif
 %endif
+%endif
 Group: Development/Kernel
 
 %description modules
@@ -224,62 +232,58 @@ fi
 
 # we need to eval "configure" because $CONFIGURE_ARGS could have a quoted
 # string in it which we don't want word splitted by the shell
-%define eval_configure %(echo '%configure' | sed -e 's#\./configure#eval ./configure#')
+# also remove (build|host|target) options because they will be specified
+# inside $CONFIGURE_ARGS
+%define eval_configure %(echo '%configure' | sed -e 's#\./configure#eval ./configure#' -e 's/--\\(build\\|host\\|target\\)=[^ ][^ ]* //g')
 
 %eval_configure \
        %{?kdir: --with-linux=%kdir} %{?kobjdir: --with-linux-obj=%kobjdir} \
        $CONFIGURE_ARGS
-make -j $RPM_BUILD_NCPUS -s
+make -j $RPM_BUILD_NCPUS -s %{?make_args}
 
 %install
 make install DESTDIR=$RPM_BUILD_ROOT
 # hack to avoid changing the libsysio code for "make install"
 rm -f $RPM_BUILD_ROOT%{_libdir}/libsysio.a
 # Remove ldiskfs module(s) - they are packaged by the ldiskfs .spec.
-rm -rf $RPM_BUILD_ROOT/lib/modules/%{kversion}/updates/kernel/fs/lustre-ldiskfs
+rm -rf $RPM_BUILD_ROOT%{?rootdir}/lib/modules/%{kversion}/updates/kernel/fs/lustre-ldiskfs
 
 # hack to include the llog_test module in lustre-tests
 llog_base=$RPM_BUILD_DIR/lustre-%{version}/lustre/obdclass/llog_test
 if [ -e ${llog_base}.ko ]; then
-  cp ${llog_base}.ko $RPM_BUILD_ROOT/lib/modules/%{kversion}/updates/kernel/fs/lustre
+  cp ${llog_base}.ko $RPM_BUILD_ROOT%{?rootdir}/lib/modules/%{kversion}/updates/kernel/fs/lustre
 elif [ -e ${llog_base}.o ]; then
-  cp ${llog_base}.o $RPM_BUILD_ROOT/lib/modules/%{kversion}/updates/kernel/fs/lustre
+  cp ${llog_base}.o $RPM_BUILD_ROOT%{?rootdir}/lib/modules/%{kversion}/updates/kernel/fs/lustre
 fi
 
 # The .ha_v2 extension identifies the heartbeat resource agent as using
 # legacy syntax. Install a compatibility symlink to avoid conflicts when
 # newer-style agents are added.
-ln -s Lustre.ha_v2 $RPM_BUILD_ROOT/etc/ha.d/resource.d/Lustre
+ln -s Lustre.ha_v2 $RPM_BUILD_ROOT%{_sysconfdir}/ha.d/resource.d/Lustre
 
 # Create the pristine source directory.
 cd $RPM_BUILD_DIR/lustre-%{version}
-mkdir -p $RPM_BUILD_ROOT/usr/src
+mkdir -p $RPM_BUILD_ROOT%{_prefix}/src
 rm -f lustre-source
-ln -s $RPM_BUILD_ROOT/usr/src lustre-source
+ln -s $RPM_BUILD_ROOT%{_prefix}/src lustre-source
 make distdir distdir=lustre-source/lustre-%{version}
 chmod -R go-w lustre-source/lustre-%{version}
 # fc18 needs 'x' permission for library files
 find $RPM_BUILD_ROOT -name '*.so' | xargs chmod +x
 
 cat >lustre.files <<EOF
-%attr(-, root, root) /sbin/mount.lustre
-%attr(-, root, root) /usr/sbin/*
-%attr(-, root, root) /usr/bin/*
-
-%attr(-, root, root) /usr/share/lustre
-
+%attr(-, root, root) %{?rootdir}/sbin/mount.lustre
+%attr(-, root, root) %{_sbindir}/*
+%attr(-, root, root) %{_bindir}/*
 %attr(-, root, root) %{_libdir}/libptlctl.a
 %attr(-, root, root) %{_libdir}/liblustreapi.a
 %attr(-, root, root) %{_libdir}/liblustreapi.so
-%attr(-, root, root) /usr/include/lustre
-%attr(-, root, root) /usr/include/libcfs
-
 %attr(-, root, root) %{_mandir}/man?/*
-
+%attr(-, root, root) %{_datadir}/lustre
+%attr(-, root, root) %{_includedir}/lustre
+%attr(-, root, root) %{_includedir}/libcfs
 %attr(-, root, root) %{_libexecdir}/lustre/lc_common
-
 %attr(-, root, root) %{_sysconfdir}/udev/rules.d/99-lustre.rules
-
 %attr(-, root, root) %{_sysconfdir}/init.d/lnet
 %attr(-, root, root) %{_sysconfdir}/init.d/lustre
 %attr(-, root, root) %config(noreplace) %{_sysconfdir}/ldev.conf
@@ -309,39 +313,63 @@ fi
 
 # Have universal lustre headers
 if [ -f $RPM_BUILD_DIR/lustre-%{version}/lustre/include/lustre/lustre_idl.h ] ; then
-  echo '%attr(-, root, root) /usr/include/linux/lustre_user.h' >>lustre.files
+  echo '%attr(-, root, root) %{_includedir}/linux/lustre_user.h' >>lustre.files
 else
-  echo '%attr(-, root, root) /usr/include/linux/lustre_idl.h' >>lustre.files
+  echo '%attr(-, root, root) %{_includedir}/linux/lustre_idl.h' >>lustre.files
 fi
 
 if [ -f $RPM_BUILD_DIR/lustre-%{version}/lustre/include/linux/lustre_types.h ] ; then
-  echo '%attr(-, root, root) /usr/include/linux/lustre_types.h' >>lustre.files
+  echo '%attr(-, root, root) %{_includedir}/linux/lustre_types.h' >>lustre.files
 fi
 
 %if %{build_lustre_tests}
 echo '%attr(-, root, root) %{_libdir}/lustre/tests/*' >lustre-tests.files
-echo '%attr(-, root, root) /lib/modules/%{kversion}/updates/kernel/fs/lustre/llog_test.*' >>lustre-tests.files
+echo '%attr(-, root, root) %{?rootdir}/lib/modules/%{kversion}/updates/kernel/fs/lustre/llog_test.*' >>lustre-tests.files
 if [ -d $RPM_BUILD_ROOT%{_libdir}/lustre/liblustre/tests ] ; then
   echo '%attr(-, root, root) %{_libdir}/lustre/liblustre/tests/*' >>lustre-tests.files
 fi
 %endif
 
+%if %{defined cross_path}
+%if %{defined rpm_post_base}
+POST_SCRIPT=$RPM_BUILD_DIR/lustre-%{version}/%{post_script}
+if [ -f $POST_SCRIPT ]; then
+       cp -f $POST_SCRIPT $RPM_BUILD_ROOT/%{rpm_post_base}.sh
+       echo '%attr(0555, root, root) %{rpm_post_base}.sh' >>lustre.files
+       cp -f $POST_SCRIPT $RPM_BUILD_ROOT/%{rpm_post_base}-modules.sh
+%if %{build_lustre_osd_ldiskfs}
+       cp -f $POST_SCRIPT $RPM_BUILD_ROOT/%{rpm_post_base}-osd-ldiskfs.sh
+%endif
+%if %{build_lustre_osd_zfs}
+       cp -f $POST_SCRIPT $RPM_BUILD_ROOT/%{rpm_post_base}-osd-zfs.sh
+%endif
+%if %{build_lustre_tests}
+       cp -f $POST_SCRIPT $RPM_BUILD_ROOT/%{rpm_post_base}-tests.sh
+       echo '%attr(0555, root, root) %{rpm_post_base}-tests.sh' >>lustre-tests.files
+%endif
+fi
+%endif
+%else
 # mark modules executable for find-debuginfo.sh
-find $RPM_BUILD_ROOT/lib/modules/%{kversion}/updates -name "*.ko" -type f | \
+find $RPM_BUILD_ROOT%{?rootdir}/lib/modules/%{kversion}/updates -name "*.ko" -type f | \
        xargs --no-run-if-empty chmod u+x
+%endif
 
 %files -f lustre.files
 
 %files modules
-%attr(-, root, root) /lib/modules/%{kversion}/updates/*
+%attr(-, root, root) %{?rootdir}/lib/modules/%{kversion}/updates/*
 %if %{build_lustre_tests}
-%exclude /lib/modules/%{kversion}/updates/kernel/fs/lustre/llog_test.ko
+%exclude %{?rootdir}/lib/modules/%{kversion}/updates/kernel/fs/lustre/llog_test.ko
 %endif
 %if %{build_lustre_osd_ldiskfs}
-%exclude /lib/modules/%{kversion}/updates/kernel/fs/lustre/osd_ldiskfs.ko
+%exclude %{?rootdir}/lib/modules/%{kversion}/updates/kernel/fs/lustre/osd_ldiskfs.ko
 %endif
 %if %{build_lustre_osd_zfs}
-%exclude /lib/modules/%{kversion}/updates/kernel/fs/lustre/osd_zfs.ko
+%exclude %{?rootdir}/lib/modules/%{kversion}/updates/kernel/fs/lustre/osd_zfs.ko
+%endif
+%if %{defined rpm_post_base}
+%attr(0555, root, root) %{rpm_post_base}-modules.sh
 %endif
 %attr(-, root, root) %doc COPYING
 %attr(-, root, root) %doc ChangeLog-lustre
@@ -349,16 +377,22 @@ find $RPM_BUILD_ROOT/lib/modules/%{kversion}/updates -name "*.ko" -type f | \
 
 %if %{build_lustre_osd_ldiskfs}
 %files osd-ldiskfs
-%attr(-, root, root) /lib/modules/%{kversion}/updates/kernel/fs/lustre/osd_ldiskfs.ko
+%attr(-, root, root) %{?rootdir}/lib/modules/%{kversion}/updates/kernel/fs/lustre/osd_ldiskfs.ko
+%if %{defined rpm_post_base}
+%attr(0555, root, root) %{rpm_post_base}-osd-ldiskfs.sh
+%endif
 %endif
 
 %if %{build_lustre_osd_zfs}
 %files osd-zfs
-%attr(-, root, root) /lib/modules/%{kversion}/updates/kernel/fs/lustre/osd_zfs.ko
+%attr(-, root, root) %{?rootdir}/lib/modules/%{kversion}/updates/kernel/fs/lustre/osd_zfs.ko
+%if %{defined rpm_post_base}
+%attr(0555, root, root) %{rpm_post_base}-osd-zfs.sh
+%endif
 %endif
 
 %files source
-%attr(-, root, root) /usr/src/lustre-%{version}
+%attr(-, root, root) %{_prefix}/src/lustre-%{version}
 
 # uncomment these lines to enable deps packages
 # %files deps-sles
@@ -368,7 +402,24 @@ find $RPM_BUILD_ROOT/lib/modules/%{kversion}/updates -name "*.ko" -type f | \
 %files tests -f lustre-tests.files
 %endif
 
+%if %{defined rpm_post_base}
+%post
+if [ -x %{rpm_post_base}.sh ]; then
+       %{rpm_post_base}.sh %{cross_path} create
+fi
+
+%preun
+if [ -x %{rpm_post_base}.sh ]; then
+       %{rpm_post_base}.sh %{cross_path} remove
+fi
+%endif
+
 %post modules
+%if %{defined rpm_post_base}
+if [ -x %{rpm_post_base}-modules.sh ]; then
+       %{rpm_post_base}-modules.sh %{cross_path} create
+fi
+%else
 if [ -f /boot/System.map-%{kversion} ]; then
        depmod -ae -F /boot/System.map-%{kversion} %{kversion} || exit 0
 else
@@ -402,9 +453,15 @@ if sysctl kernel.unsupported >/dev/null 2>&1 &&
 
      into /etc/modprobe.d/unsupported_modules"
 fi
+%endif
 
 %if %{build_lustre_osd_ldiskfs}
 %post osd-ldiskfs
+%if %{defined rpm_post_base}
+if [ -x %{rpm_post_base}-osd-ldiskfs.sh ]; then
+       %{rpm_post_base}-osd-ldiskfs.sh %{cross_path} create
+fi
+%else
 if [ -f /boot/System.map-%{kversion} ]; then
        depmod -ae -F /boot/System.map-%{kversion} %{kversion} || exit 0
 else
@@ -439,9 +496,15 @@ if sysctl kernel.unsupported >/dev/null 2>&1 &&
      into /etc/modprobe.d/unsupported_modules"
 fi
 %endif
+%endif
 
 %if %{build_lustre_osd_zfs}
 %post osd-zfs
+%if %{defined rpm_post_base}
+if [ -x %{rpm_post_base}-osd-zfs.sh ]; then
+       %{rpm_post_base}-osd-zfs.sh %{cross_path} create
+fi
+%else
 if [ -f /boot/System.map-%{kversion} ]; then
        depmod -ae -F /boot/System.map-%{kversion} %{kversion} || exit 0
 else
@@ -476,23 +539,43 @@ if sysctl kernel.unsupported >/dev/null 2>&1 &&
      into /etc/modprobe.d/unsupported_modules"
 fi
 %endif
+%endif
 
 %preun modules
+%if %{defined rpm_post_base}
+if [ -x %{rpm_post_base}-modules.sh ]; then
+       %{rpm_post_base}-modules.sh %{cross_path} remove
+fi
+%else
 MODULES_RPM_NAME=$(rpm -q %{name}-modules | grep "%{version}-%{release}")
 rpm -ql $MODULES_RPM_NAME | grep '\.ko$' > /var/run/%{name}-modules || true
+%endif
 
 %if %{build_lustre_osd_ldiskfs}
 %preun osd-ldiskfs
+%if %{defined rpm_post_base}
+if [ -x %{rpm_post_base}-osd-ldiskfs.sh ]; then
+       %{rpm_post_base}-osd-ldiskfs.sh %{cross_path} remove
+fi
+%else
 OSD_LDISKFS_RPM_NAME=$(rpm -q %{name}-osd-ldiskfs | grep "%{version}-%{release}")
 rpm -ql $OSD_LDISKFS_RPM_NAME | grep '\.ko$' > /var/run/%{name}-osd-ldiskfs || true
 %endif
+%endif
 
 %if %{build_lustre_osd_zfs}
 %preun osd-zfs
+%if %{defined rpm_post_base}
+if [ -x %{rpm_post_base}-osd-zfs.sh ]; then
+       %{rpm_post_base}-osd-zfs.sh %{cross_path} remove
+fi
+%else
 OSD_ZFS_RPM_NAME=$(rpm -q %{name}-osd-zfs | grep "%{version}-%{release}")
 rpm -ql $OSD_ZFS_RPM_NAME | grep '\.ko$' > /var/run/%{name}-osd-zfs || true
 %endif
+%endif
 
+%if %{undefined cross_path}
 %postun modules
 if [ -f /boot/System.map-%{kversion} ]; then
        depmod -ae -F /boot/System.map-%{kversion} %{kversion} || exit 0
@@ -556,9 +639,20 @@ if [ -x /sbin/weak-modules ]; then
 fi
 rm /var/run/%{name}-osd-zfs
 %endif
+%endif
 
 %if %{build_lustre_tests}
 %post tests
+%if %{defined rpm_post_base}
+if [ -x %{rpm_post_base}-tests.sh ]; then
+       %{rpm_post_base}-tests.sh %{cross_path} create
+fi
+
+%preun tests
+if [ -x %{rpm_post_base}-tests.sh ]; then
+       %{rpm_post_base}-tests.sh %{cross_path} remove
+fi
+%else
 if [ -f /boot/System.map-%{kversion} ]; then
        depmod -ae -F /boot/System.map-%{kversion} %{kversion} || exit 0
 else
@@ -572,6 +666,7 @@ else
        depmod -ae %{kversion} || exit 0
 fi
 %endif
+%endif
 
 %clean
 rm -rf $RPM_BUILD_ROOT