From c7496eccfc6a4bc804bd999343a2d289d5e9eeaf Mon Sep 17 00:00:00 2001 From: brian Date: Wed, 22 Apr 2009 17:55:29 +0000 Subject: [PATCH] b=13908 i=yibin.wang i=sheng.yang Allow the name, version, kernel release and release of the lustre packages to be defined on the command line. With such a feature, actually properly name the patchless client packages in our own build. Tighten up some dependencies. --- build/lbuild | 1 + build/lmake | 1 + lustre.spec.in | 45 +++++++++++++++++++++++++++++++++------------ 3 files changed, 35 insertions(+), 12 deletions(-) diff --git a/build/lbuild b/build/lbuild index ddc26df..51c204c 100755 --- a/build/lbuild +++ b/build/lbuild @@ -838,6 +838,7 @@ build_lustre() fi $RPMBUILD $targets $rpmbuildopt ../lustre.spec \ + ${PATCHLESS:+--define "lustre_name lustre-client"} \ --define "_tmppath $TMPDIR" \ --define "_topdir $TOPDIR" || \ fatal 1 "Error building rpms for $BUILD_ARCHS." diff --git a/build/lmake b/build/lmake index a018011..787e279 100755 --- a/build/lmake +++ b/build/lmake @@ -585,6 +585,7 @@ build_lustre() < lustre.spec.in \ > lustre.spec $RPMBUILD --target ${TARGET_ARCH} -bb lustre.spec \ + ${PATCHLESS:+--define "lustre_name lustre-client"} \ --define "_tmppath $TMPDIR" \ --define "_topdir $(lbuild_topdir)" || \ fatal 1 "Error building Lustre rpms." diff --git a/lustre.spec.in b/lustre.spec.in index 1cd2ddd..50fa9f7 100644 --- a/lustre.spec.in +++ b/lustre.spec.in @@ -1,11 +1,15 @@ # lustre.spec -%define version @VERSION@ -%define kversion @LINUXRELEASE@ +%{!?version: %define version @VERSION@} +%{!?kversion: %define kversion @LINUXRELEASE@} +%{!?release: %define release @RELEASE@} +%{!?lustre_name: %define lustre_name lustre} + +%define is_client %(bash -c "if [[ %{lustre_name} = *-client ]]; then echo -n '1'; else echo -n '0'; fi") Summary: Lustre File System -Name: lustre +Name: %{lustre_name} Version: %{version} -Release: @RELEASE@ +Release: %{release} License: GPL Group: Utilities/System Source: lustre-%{version}.tar.gz @@ -13,6 +17,7 @@ URL: http://www.sun.com/software/products/lustre/index.xml BuildRoot: %{_tmppath}/lustre-%{version}-root Obsoletes: lustre-lite, lustre-lite-utils, lustre-ldap nfs-utils-lustre Provides: lustre-lite = %{version}, lustre-lite-utils = %{version} +Requires: %{name}-modules = %{version} # GSS requires this: BuildRequires: pkgconfig, libgssapi-devel >= 0.10 %description @@ -20,18 +25,20 @@ Userspace tools and files for the Lustre file system. %package modules Summary: Kernel Lustre modules for Linux %{kversion} -Requires: modutils >= 2.4.10 +Requires: modutils >= 2.4.10, kernel = %{kversion} Group: Development/Kernel %description modules Lustre file system, server and network drivers for Linux %{kversion}. +%if ! %{is_client} %package source Summary: Object-Based Disk storage driver source Group: Development/Kernel %description source Lustre sources for further development +%endif # Since the RPMs we ship are to be used on both SLES and RHEL, we # can't include any dependency information (since the package names @@ -51,8 +58,8 @@ Lustre sources for further development Summary: Lustre dependencies meta-package for SLES Group: Utilities/System Provides: lustre-deps = %{version} -Requires: lustre = %{version}, sles-release -Conflicts: lustre-deps-rhel +Requires: %{name} = %{version}, sles-release +Conflicts: %{name}-deps-rhel %description deps-sles This package has RPM dependencies appropriate for SLES systems. @@ -61,22 +68,24 @@ This package has RPM dependencies appropriate for SLES systems. Summary: Lustre dependencies meta-package for RHEL Group: Utilities/System Provides: lustre-deps = %{version} -Requires: lustre = %{version}, redhat-release -Conflicts: lustre-deps-sles +Requires: %{name} = %{version}, redhat-release +Conflicts: %{name}-deps-sles %description deps-rhel This package has RPM dependencies appropriate for RHEL, RHL, and FC systems. +%if ! %{is_client} %package tests Summary: Lustre testing framework Group: Development/Kernel -Provides: lustre-tests = %{version} -Requires: lustre = %{version}, lustre-modules = %{version} +Provides: %{name}-tests = %{version} +Requires: %{name} = %{version}, %{name}-modules = %{version} %description tests This package contains a set of test binaries and scripts that are intended to be used by the Lustre testing framework. +%endif %prep %setup -qn lustre-%{version} @@ -110,6 +119,11 @@ 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}/kernel/fs/lustre-ldiskfs +%if %{is_client} +# remove the tests that were installed +rm -rf $RPM_BUILD_ROOT%{_libdir}/lustre/tests \ + $RPM_BUILD_ROOT%{_libdir}/lustre/liblustre/tests +%else # 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 @@ -125,13 +139,14 @@ rm -f lustre-source ln -s $RPM_BUILD_ROOT/usr/src lustre-source make distdir distdir=lustre-source/lustre-%{version} chmod -R go-w lustre-source/lustre-%{version} +%endif cat >lustre.files </dev/null %files modules -f lustre-modules.files %attr(-, root, root) %doc COPYING +%if ! %{is_client} %files source %attr(-, root, root) /usr/src/lustre-%{version} +%endif # uncomment these lines to enable deps packages # %files deps-sles # %files deps-rhel +%if ! %{is_client} %files tests -f lustre-tests.files +%endif %post modules if [ -f /boot/System.map-%{kversion} ]; then @@ -239,6 +258,7 @@ else depmod -ae %{kversion} || exit 0 fi +%if ! %{is_client} %post tests if [ -f /boot/System.map-%{kversion} ]; then depmod -ae -F /boot/System.map-%{kversion} %{kversion} || exit 0 @@ -252,6 +272,7 @@ if [ -f /boot/System.map-%{kversion} ]; then else depmod -ae %{kversion} || exit 0 fi +%endif %clean rm -rf $RPM_BUILD_ROOT -- 1.8.3.1