[Firewire-users] Firewire Module: How To Recompile?

Danilo Gimenez dgimenez at uol.com.br
Tue Sep 5 04:36:11 PDT 2006


Hi, folks.

I've found the solution at OTN's Linux Discussion Forum, under this
thread:

http://forums.oracle.com/forums/thread.jspa?messageID=1267104#1267104

I've tryed to use wolfpeter's instructions, but I got an error,
regarding to my kernel version. So, I decided to make some adjustments,
in order to get an "adaptative" environment.

I kept 'oracle-firewire-modules-2.6.9-EL.spec-generic', and instead of
renameing it, I replaced its first 11 lines for the code below. Notice
that I've changed version to 1287.

******************** START HERE ********************
#
# Spec file for RHEL4 firewire modules
#

%define karch    #kernelArch#
%define base    #kernelVersion#
%define sver    #kernelRelease#
%define kver    %{base}-%{sver}

Summary: Oracle Firewire Clustering Modules.
Name: oracle-firewire-modules-%{kver}
Version: 1287
******************** END HERE ********************

Then, instead of adding comments to file ./ieee1394/highlevel.c, I've
just replaced the text from line 33 - "/* XXX: compat hack */" - up to
line 53 - "static DEFINE_RWLOCK(addr_space_lock);" - for the code below:

******************** BEGIN REPLACEMENT CODE FOR LINES 33-53
********************
struct hl_host_info {
        struct list_head list;
        struct hpsb_host *host;
        size_t size;
        unsigned long key;
        void *data;
};


static LIST_HEAD(hl_drivers);
static DECLARE_RWSEM(hl_drivers_sem);

static LIST_HEAD(hl_irqs);
static rwlock_t hl_irqs_lock = RW_LOCK_UNLOCKED;

static rwlock_t addr_space_lock = RW_LOCK_UNLOCKED;
******************** END REPLACEMENT CODE FOR LINES 33-53
********************

Finally, I've created a simple shell script called genrpm-1287.sh:

******************** BEGIN genrpm-1287.sh SHELL SCRIPT
********************

# Try to discover if it is an 'smp' kernel
unameRelease=`uname -r`
echo $unameRelease | grep smp 1>/dev/null
[ $? -eq 0 ] && kernelPackage=kernel-smp || kernelPackage=kernel

# Some variables to define kernel version
kernelArch=`rpm -q $kernelPackage --qf %{ARCH}`
kernelVersion=`rpm -q $kernelPackage --qf %{VERSION}`
kernelRelease=`rpm -q $kernelPackage --qf %{RELEASE}`
kernelType=${unameRelease/$kernelVersion-$kernelRelease}

# Generate a spec file with the correct kernel version
sed -e "s,#kernelArch#,$kernelArch,g" \
-e "s,#kernelVersion#,$kernelVersion,g" \
-e "s,#kernelRelease#,$kernelRelease,g" \
oracle-firewire-modules-2.6.9-EL.spec-generic > \
oracle-firewire-modules-2.6.9-${kernelRelease}${kernelType}.spec

# create new .tar.gz file
cd ..
tar czf oracle-firewire-modules-1287.tar.gz ./oracle-firewire-modules

# create the rpm
rpmbuild -ta oracle-firewire-modules-1287.tar.gz

******************** END genrpm-1287.sh SHELL SCRIPT
********************

To install this brand new RPM file, you must have both kernel-devel and
kernel-smp-devel packages installed on your system. Just do the
following:

cd /usr/src/redhat/RPMS/i386
rpm -ivh oracle-firewire-modules-`uname -r`-1287*.rpm

Hope this helps!
Danilo Gimenez 
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://oss.oracle.com/pipermail/firewire-users/attachments/20060905/132d9a94/attachment.html


More information about the Firewire-users mailing list