All of lore.kernel.org
 help / color / mirror / Atom feed
From: Mirjam van den Hout - van Vroonhoven <m.vandenhout@erasmusmc.nl>
To: xfs@oss.sgi.com
Subject: Adapted specfile to make kernel-module-xfs rpm build for a RHEL4 largesmp kernel
Date: Tue, 20 May 2008 14:53:49 +0200	[thread overview]
Message-ID: <4832C9DD.6090700@erasmusmc.nl> (raw)

[-- Attachment #1: Type: text/plain, Size: 1336 bytes --]

Hello XFS team,

In order to make XFS work on Redhat Enterprise Linux 4, using the stock 
RH largesmp kernel (our server has 16 CPU's) I had to adapt the spec 
file for the kernel-module-xfs source rpm you offer for download at
ftp://oss.sgi.com/projects/xfs/download/testing/RHEL4/kernel-module-xfs-2.6.9-22.EL-0.1-1.src.rpm

The issue is that largesmp was not recognized as a kernel type, and with 
the original specfile an RPM was build with a dependency
"requires kernel-smp = 2.6.9-67.0.1.ELlarge" where the dependency should 
have been "requires kernel-largesmp = 2.6.9-67.0.1".

The fix was to add "largesmp" to the list of defined kernel_type at the 
top of the .spec file. I also fixed a typo in this list (default instead 
of deault). The new fixed spec file (kernel-module-xfs.spec), the 
original spec file (kernel-module-xfs.spec.orig) and a diff between the 
two (kernel-module-xfs.spec.patch are attached to this email.

For other users, it might be useful to include this in the next release.


				Kind regards,

					Mirjam van den Hout
-- 
Dr. Mirjam van den Hout - van Vroonhoven
	system administrator/programmer, dept. of Bioinformatics
	Erasmus Medical Center, Rotterdam, The Netherlands
	Room Number Ee 15.32, phone +31-10-703 81 11
Web: 	http://www.erasmusmc.nl/bioinformatics/
E-mail: m.vandenhout@erasmusmc.nl

[-- Attachment #2: kernel-module-xfs.spec --]
[-- Type: text/plain, Size: 5813 bytes --]

# Spec file for xfs linux-2.6 kernel modules

%define module_name xfs

# Make a kernel-modules-xfs-source package to go with kernel-source?
# XXX ERS maybe a -devel package makes more sense for RH
%define build_source_pkg 0

# Work out kernel uname, version, release, type, etc for provides/requires

%define kernel_uname %(grep -s UTS_RELEASE %{kernel_topdir}/include/linux/version.h | awk '{print $3}' | sed s/\\"//g)

# kernel_type is everything else at the end of the uname
%define kernel_type %(echo %{kernel_uname} | grep -o "default$\\|smp$\\|bigsmp$\\|bigmem$\\|debug$\\|hugemem$\\|largesmp$\\|sn2$")
# kernel_type, IF it exists, has leading "-" in the kernel rpm name
%define rpm_kernel_type %(test ! -z "%{kernel_type}" && echo -%{kernel_type})

%define kernel_ver %(echo %{kernel_uname} | awk -F - '{print $1}')
%define kernel_rel %(echo %{kernel_uname} | awk -F - '{print $2}' | sed -e "s/%{kernel_type}$//")

Summary		: XFS filesystem kernel modules
Name		: kernel-module-%{module_name}-%{kernel_uname}
Version		: 0.1
Release		: 1
Vendor		: Silicon Graphics, Inc.
Packager	: Silicon Graphics, Inc.
License		: GPL
Group		: System Environment/Kernel
URL		: http://oss.sgi.com/projects/xfs
BuildRoot	: %{_tmppath}/%{name}-%{version}-%{release}-buildroot
Provides	: kernel-module
Provides	: kernel-module-%{module_name} = %{version}-%{release}
Requires	: kernel%{rpm_kernel_type} = %{kernel_ver}-%{kernel_rel}
Requires	: /sbin/depmod

# different name here
Source0		: %{module_name}-kern.tar.gz
Source1		: config.xfs

# Allow the code to build as an out-of-tree module
Patch0		: %{module_name}_ootbuild.patch
# This patchset is for making the xfs codebase in sles9 work
# with an RHEL4 kernel.
Patch1		: xfs_qsort.patch
Patch2		: xfs_proc_args.patch
Patch3		: xfs_export_ops.patch
Patch4		: xfs_write_inode_return.patch
Patch5		: xfs_dmapi_address_space.patch
Patch6		: xfs_direct_io_locking.patch

# suppress debuginfo packages for now
%define debug_package %{nil}

%description
The XFS(tm) Filesystem from Silicon Graphics, Inc.
XFS is a highly scalable, high-performance journaling filesystem that provides 
rapid recovery from system crashes.

%if %{build_source_pkg}
%package -n kernel-module-%{module_name}-%{kernel_ver}-%{kernel_rel}-source
Summary		: The source code for the XFS filesystem kernel module.
Group		: Development/System
Requires	: kernel-source = %{kernel_ver}-%{kernel_rel}

%description -n kernel-module-%{module_name}-%{kernel_ver}-%{kernel_rel}-source
The %{module_name}-modules-source package contains the source code files for the XFS
filesystem.  When installed, this will populate the fs/%{module_name} subdirectory
of the matching kernel-source RPM.
%endif

%prep

%setup -n %{module_name}
%patch0 -p1
%patch1 -p1
%patch2 -p1
%patch3 -p1
%patch4 -p1
%patch5 -p1
%patch6 -p1
cp %{SOURCE1} .

%build
make TOPDIR=%{kernel_topdir} modules

%install
make TOPDIR=%{kernel_topdir} DMAPI_TOPDIR=%{dmapi_topdir} INSTALL_MOD_PATH=$RPM_BUILD_ROOT modules_install

# Make clean & copy files over for source package
%if %{build_source_pkg}
make TOPDIR=%{kernel_topdir} clean
mkdir -p $RPM_BUILD_ROOT/usr/src/linux-%{kernel_ver}-%{kernel_rel}/fs/%{module_name}
cp -aR * $RPM_BUILD_ROOT/usr/src/linux-%{kernel_ver}-%{kernel_rel}/fs/%{module_name}
%endif

%clean
[ "$RPM_BUILD_ROOT" != "/" ] && rm -rf $RPM_BUILD_ROOT ]

%files
%defattr(644,root,root,755)
/lib/modules/%{kernel_uname}/extra

%if %{build_source_pkg}
%ifarch i386 ia64 x86_64
%files -n kernel-module-%{module_name}-%{kernel_ver}-%{kernel_rel}-source
%defattr(644,root,root,755)
/usr/src/linux-%{kernel_ver}-%{kernel_rel}/fs/%{module_name}
%endif
%endif

# Note, this mkinitrd command is unique to RH I believe

%post
if [ -e /boot/System.map-%{kernel_uname} ]; then
	/sbin/depmod -ae -F /boot/System.map-%{kernel_uname} %{kernel_uname}
fi

if (stat -f / | grep -q 0x58465342) || (stat -f / | grep -q XFS); then
  echo "It appears that your root filesytem is on XFS."
  echo "Creating a new initrd /boot/initrd-%{kernel_uname}.img"
  echo "for kernel %{kernel_uname} with command:"
  echo "  /sbin/mkinitrd -f /boot/initrd-%{kernel_uname}.img %{kernel_uname}"
  echo "If you use lilo, you should re-run the lilo command."

  /sbin/mkinitrd -f /boot/initrd-%{kernel_uname}.img %{kernel_uname}
fi

echo "#################################################################"
echo "#                                                               #"
echo "#                        NOTICE                                 #"
echo "# This xfs module rpm has been provided for testing purposes    #"
echo "# only.  It is believed to be functional, but it has not been   #"
echo "# heavily tested.  In particular, you may have issues with the  #"
echo "# 4KSTACKS option on RHEL4 ia32 kernels, depending on your IO   #"
echo "# hardware, layering, nfs usage, etc.                           #"
echo "#                                                               #"
echo "# Please do NOT report any problems with this module, or with   #"
echo "# the kernel when this module is loaded, to Red Hat.            #"
echo "# You may report issues to the linux-xfs@oss.sgi.com list.      #"
echo "# (Please also report successes!)                               #"
echo "#                                                               #"
echo "#################################################################"


# Could do an "are you sure? y/n" thing but that might get annoying.
%preun
if (stat -f / | grep -q 0x58465342) || (stat -f / | grep -q XFS); then
  echo "It appears that your root filesystem is on XFS."
  echo "Note that kernel %{kernel_uname} might not"
  echo "boot without this package."
fi

%postun
if [ -e /boot/System.map-%{kernel_uname} ]; then
       /sbin/depmod -ae -F /boot/System.map-%{kernel_uname} %{kernel_uname}
fi


[-- Attachment #3: kernel-module-xfs.spec.orig --]
[-- Type: text/plain, Size: 5800 bytes --]

# Spec file for xfs linux-2.6 kernel modules

%define module_name xfs

# Make a kernel-modules-xfs-source package to go with kernel-source?
# XXX ERS maybe a -devel package makes more sense for RH
%define build_source_pkg 0

# Work out kernel uname, version, release, type, etc for provides/requires

%define kernel_uname %(grep -s UTS_RELEASE %{kernel_topdir}/include/linux/version.h | awk '{print $3}' | sed s/\\"//g)

# kernel_type is everything else at the end of the uname
%define kernel_type %(echo %{kernel_uname} | grep -o "deault$\\|smp$\\|bigsmp$\\|bigmem$\\|debug$\\|hugemem$\\|sn2$")
# kernel_type, IF it exists, has leading "-" in the kernel rpm name
%define rpm_kernel_type %(test ! -z "%{kernel_type}" && echo -%{kernel_type})

%define kernel_ver %(echo %{kernel_uname} | awk -F - '{print $1}')
%define kernel_rel %(echo %{kernel_uname} | awk -F - '{print $2}' | sed -e "s/%{kernel_type}$//")

Summary		: XFS filesystem kernel modules
Name		: kernel-module-%{module_name}-%{kernel_uname}
Version		: 0.1
Release		: 1
Vendor		: Silicon Graphics, Inc.
Packager	: Silicon Graphics, Inc.
License		: GPL
Group		: System Environment/Kernel
URL		: http://oss.sgi.com/projects/xfs
BuildRoot	: %{_tmppath}/%{name}-%{version}-%{release}-buildroot
Provides	: kernel-module
Provides	: kernel-module-%{module_name} = %{version}-%{release}
Requires	: kernel%{rpm_kernel_type} = %{kernel_ver}-%{kernel_rel}
Requires	: /sbin/depmod

# different name here
Source0		: %{module_name}-kern.tar.gz
Source1		: config.xfs

# Allow the code to build as an out-of-tree module
Patch0		: %{module_name}_ootbuild.patch
# This patchset is for making the xfs codebase in sles9 work
# with an RHEL4 kernel.
Patch1		: xfs_qsort.patch
Patch2		: xfs_proc_args.patch
Patch3		: xfs_export_ops.patch
Patch4		: xfs_write_inode_return.patch
Patch5		: xfs_dmapi_address_space.patch
Patch6		: xfs_direct_io_locking.patch

# suppress debuginfo packages for now
%define debug_package %{nil}

%description
The XFS(tm) Filesystem from Silicon Graphics, Inc.
XFS is a highly scalable, high-performance journaling filesystem that provides 
rapid recovery from system crashes.

%if %{build_source_pkg}
%package -n kernel-module-%{module_name}-%{kernel_ver}-%{kernel_rel}-source
Summary		: The source code for the XFS filesystem kernel module.
Group		: Development/System
Requires	: kernel-source = %{kernel_ver}-%{kernel_rel}

%description -n kernel-module-%{module_name}-%{kernel_ver}-%{kernel_rel}-source
The %{module_name}-modules-source package contains the source code files for the XFS
filesystem.  When installed, this will populate the fs/%{module_name} subdirectory
of the matching kernel-source RPM.
%endif

%prep

%setup -n %{module_name}
%patch0 -p1
%patch1 -p1
%patch2 -p1
%patch3 -p1
%patch4 -p1
%patch5 -p1
%patch6 -p1
cp %{SOURCE1} .

%build
make TOPDIR=%{kernel_topdir} modules

%install
make TOPDIR=%{kernel_topdir} DMAPI_TOPDIR=%{dmapi_topdir} INSTALL_MOD_PATH=$RPM_BUILD_ROOT modules_install

# Make clean & copy files over for source package
%if %{build_source_pkg}
make TOPDIR=%{kernel_topdir} clean
mkdir -p $RPM_BUILD_ROOT/usr/src/linux-%{kernel_ver}-%{kernel_rel}/fs/%{module_name}
cp -aR * $RPM_BUILD_ROOT/usr/src/linux-%{kernel_ver}-%{kernel_rel}/fs/%{module_name}
%endif

%clean
[ "$RPM_BUILD_ROOT" != "/" ] && rm -rf $RPM_BUILD_ROOT ]

%files
%defattr(644,root,root,755)
/lib/modules/%{kernel_uname}/extra

%if %{build_source_pkg}
%ifarch i386 ia64 x86_64
%files -n kernel-module-%{module_name}-%{kernel_ver}-%{kernel_rel}-source
%defattr(644,root,root,755)
/usr/src/linux-%{kernel_ver}-%{kernel_rel}/fs/%{module_name}
%endif
%endif

# Note, this mkinitrd command is unique to RH I believe

%post
if [ -e /boot/System.map-%{kernel_uname} ]; then
	/sbin/depmod -ae -F /boot/System.map-%{kernel_uname} %{kernel_uname}
fi

if (stat -f / | grep -q 0x58465342) || (stat -f / | grep -q XFS); then
  echo "It appears that your root filesytem is on XFS."
  echo "Creating a new initrd /boot/initrd-%{kernel_uname}.img"
  echo "for kernel %{kernel_uname} with command:"
  echo "  /sbin/mkinitrd -f /boot/initrd-%{kernel_uname}.img %{kernel_uname}"
  echo "If you use lilo, you should re-run the lilo command."

  /sbin/mkinitrd -f /boot/initrd-%{kernel_uname}.img %{kernel_uname}
fi

echo "#################################################################"
echo "#                                                               #"
echo "#                        NOTICE                                 #"
echo "# This xfs module rpm has been provided for testing purposes    #"
echo "# only.  It is believed to be functional, but it has not been   #"
echo "# heavily tested.  In particular, you may have issues with the  #"
echo "# 4KSTACKS option on RHEL4 ia32 kernels, depending on your IO   #"
echo "# hardware, layering, nfs usage, etc.                           #"
echo "#                                                               #"
echo "# Please do NOT report any problems with this module, or with   #"
echo "# the kernel when this module is loaded, to Red Hat.            #"
echo "# You may report issues to the linux-xfs@oss.sgi.com list.      #"
echo "# (Please also report successes!)                               #"
echo "#                                                               #"
echo "#################################################################"


# Could do an "are you sure? y/n" thing but that might get annoying.
%preun
if (stat -f / | grep -q 0x58465342) || (stat -f / | grep -q XFS); then
  echo "It appears that your root filesystem is on XFS."
  echo "Note that kernel %{kernel_uname} might not"
  echo "boot without this package."
fi

%postun
if [ -e /boot/System.map-%{kernel_uname} ]; then
       /sbin/depmod -ae -F /boot/System.map-%{kernel_uname} %{kernel_uname}
fi


[-- Attachment #4: kernel-module-xfs.spec.patch --]
[-- Type: text/x-patch, Size: 263 bytes --]

14c14
< %define kernel_type %(echo %{kernel_uname} | grep -o "deault$\\|smp$\\|bigsmp$\\|bigmem$\\|debug$\\|hugemem$\\|sn2$")
---
> %define kernel_type %(echo %{kernel_uname} | grep -o "default$\\|smp$\\|bigsmp$\\|bigmem$\\|debug$\\|hugemem$\\|largesmp$\\|sn2$")

             reply	other threads:[~2008-05-20 12:53 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-05-20 12:53 Mirjam van den Hout - van Vroonhoven [this message]
2008-05-20 13:45 ` Adapted specfile to make kernel-module-xfs rpm build for a RHEL4 largesmp kernel Eric Sandeen

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4832C9DD.6090700@erasmusmc.nl \
    --to=m.vandenhout@erasmusmc.nl \
    --cc=xfs@oss.sgi.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.