kernel-sourcecode (was: Re: kernel-2.6.7-1.441 - x86-64 ...)
Michal Jaegermann
michal at harddata.com
Wed Jun 23 16:27:27 UTC 2004
On Wed, Jun 23, 2004 at 05:56:29PM +0200, Arjan van de Ven wrote:
>
> in FC2 you ALREADY cannot use kernel-sourcecode for building modules
> against so the change is a lot smaller than you make it out to be.
Eh? The funny thing is that I did with FC2 and results even
worked. :-) It even surprised me that this went so smoothly
when I expected hiccups. It does not mean that hiccups would
not show up elsewhere but "cannot" seems to be a bit strong.
To make that concrete attached are a spec file and two, referenced
in it, pieces for a support of an AC97 "windmodem" built-in into
my wife's Acer TM230 laptop. The required rest can be had from
ftp://ftp.smlink.com/linux/unsupported/slmodem.2.9.7.tar.gz
No problems with building kernel modules for that on FC2 just
by rebuilding this rpm.
Michal
-------------- next part --------------
##############################################################################
# #
# This spec file produces kernel modules _only_ for the #
# currently running kernel. It sets _target_cpu also for #
# the program itself but this is really only a side-effect. #
# #
# To build kernel modules only use these specs as follows: #
# #
# rpmbuild -bb --without main slmodem.spec #
# #
##############################################################################
# Generate version information for kernel modules
%define kname %(echo `uname -r`)
%define kver %(echo %{kname} | sed -e 's/smp//' -e 's/bigmem//' -e 's/enterprise//')
%define ktype %(echo kernel-%{kname}|sed -e 's/%{kver}//' -e 's/-$//')
%define krel %(echo %{kname}|tr - _)
# Make an arch of packages to agree with that one of a target kernel
# but first record a default one, without triggering a recursion,
# to use as a fallback.
%{expand: %%define TTCPU %{_target_cpu}}
%define _target_cpu %(t=`[ -r /boot/kernel.h ] && sed -n '/^#define __MODULE_KERNEL_/{s///;s/ .*1$//p}' /boot/kernel.h`; [ "$t" ] && echo $t || echo %{TTCPU} )
%{?_without_main: %{expand: %%define kmods_only 1}}
###############################################################################
#
# Common Package Information
#
###############################################################################
Name: slmodem
Version: 2.9.7
Release: 1
Distribution: Unknown
License: SmartLink
URL: ftp://ftp.smlink.com/linux/unsupported/
# Alternative: URL: http://linmodems.technion.ac.il/packages/smartlink/
Vendor: Smart Link Ltd.
#
# Source files (taken from $RPM_SOURCE_DIR)
#
Source0: %{name}-%{version}.tar.gz
# Source1: slmodem.init
Source2: slmodemd.config
#
# Patches (taken from $RPM_SOURCE_DIR))
#
Patch0: slmodem-2.9.6-init.patch
#
# Build Requirements
#
#buildarch: noarch
BuildRequires: kernel-source = %{kver}
# Package preparation area
BuildRoot: %{_tmppath}/%{name}
###############################################################################
#
# Package Information (Main)
#
###############################################################################
Summary: Driver for Smart Link HAMR5600 winmodem (user space)
Group: System Environment/Driver
AutoReq: 1
#PreReq: Describe dependencies to install this package (see %pre/%post)
#Requires: Describe dependencies to use this package
AutoProv: 1
#Provides: Describe what this package provides
%description
This is the Linux driver for the Smart Link Soft Modem HAMR5600 hardware.
It provides a full-featured 56K Voice Fax Modem.
This winmodem hardware is used e.g. in the IBM ThinkPad T30.
This package includes the generic application (slmodemd) and the init script
for it.
%package modules-k.%{krel}
###############################################################################
#
# Subpackage Information (kernel module)
#
###############################################################################
Summary: Driver for Smart Link HAMR5600 winmodem (kernel space)
Group: System Environment/Kernel
Release: %{release}
AutoReq: 0
#PreReq: Describe dependencies to install this subpackage (see %pre/%post)
Requires: %{name} = %{version}
Requires: %{ktype} = %{kver}
AutoProv: 0
Obsoletes: kernel-module-%{name}
#Provides: Describe what this subpackage provides
%description modules-k.%{krel}
This is the Linux driver for the Smart Link Soft Modem HAMR5600 hardware.
It provides a full-featured 56K Voice Fax Modem.
This winmodem hardware is used e.g. in the IBM ThinkPad T30.
This package includes the hardware specific kernel-space drivers (slamr,
slusb) and the device nodes for them.
###############################################################################
#
# Build Phase Information
#
###############################################################################
# Define %_make_cmd in $HOME/.rpmmacros to override the standard make
%if !%{?_make_cmd:1}0
%define _make_cmd make
%endif
# Use '--define "_skip_build 1"' during package testing to skip build phases
%if !%{?_skip_build:1}0
%prep
#
# Preparation (-bp): Unpack the source files to $RPM_BUILD_DIR...
#
%setup -q
# ... apply patches
%patch0 -p1 -b .perm
%build
#
# Compilation (-bc): Configure and build sources in $RPM_BUILD_DIR
#
export KERNEL_VER=%{kver}
%{_make_cmd} KERNEL_DIR=/lib/modules/%{kname}/build drivers
%if %{?kmods_only:0}%{!?kmods_only:1}
%{_make_cmd} KERNEL_DIR=/lib/modules/%{kname}/build
%endif
%install
#
# Installation (-bi): Copy data from build $RPM_BUILD_DIR to
# package preparation area %{buildroot}
#
# "install" from Makefile is broken, so do everything by hand...
rm -rf %{buildroot}
%if %{?kmods_only:0}%{!?kmods_only:1}
install -D -m 755 modem/slmodemd %{buildroot}/usr/sbin/slmodemd
install -D -m 755 -d %{buildroot}/var/lib/slmodemd
# Install service file and its configuration file
install -D -p -m 755 \
scripts/slmodemd %{buildroot}%{_sysconfdir}/init.d/slmodemd
install -D -p -m 644 \
%{SOURCE2} %{buildroot}%{_sysconfdir}/sysconfig/slmodemd
%endif
install -D -m 644 drivers/slamr.o %{buildroot}/lib/modules/%{kname}/misc/slamr.o
install -D -m 644 drivers/slusb.o %{buildroot}/lib/modules/%{kname}/misc/slusb.o
# Hack device for kppp
mkdir -p %{buildroot}/dev
( cd %{buildroot}/dev && ln -sf ttySL0 modem )
%clean
#
# Installation cleanup: Delete package preparation area %{buildroot}
#
rm -rf %{buildroot}
%else # !%{_skip_build}
# Fix environment when build phases are skipped...
%define _builddir %{_topdir}/BUILD/%{name}-%{version}
%endif # !%{_skip_build}
%if %{?kmods_only:0}%{!?kmods_only:1}
%files
###############################################################################
#
# Packaging Phase Information (Main)
#
###############################################################################
#
# Package Content
#
%defattr (-,root,root)
# Documentation for this package (taken from $RPM_BUILD_DIR)
%doc README README.1st Changes
# Directories owned by this package
%dir /var/lib/slmodemd
# Files owned by this package (taken from %{buildroot}
/usr/sbin/slmodemd
%{_sysconfdir}/init.d/slmodemd
%config %{_sysconfdir}/sysconfig/slmodemd
# Devices
%defattr (600,root,root)
%dev (c, 212, 0) /dev/slamr0
%dev (c, 212, 1) /dev/slamr1
%dev (c, 212, 2) /dev/slamr2
%dev (c, 212, 3) /dev/slamr3
%dev (c, 213, 0) /dev/slusb0
%dev (c, 213, 1) /dev/slusb1
%dev (c, 213, 2) /dev/slusb2
%dev (c, 213, 3) /dev/slusb3
/dev/modem
#
# Package Installation Scripts
#
# NOTE: During "update" of a package the order of execution is
#
# %pre (NEW)
# %post (NEW)
# %preun (OLD)
# %postun (OLD)
#
#%pre
# Commands to execute before package is installed (see also Prereq:)
# Parameter $1: 1 = install, 2 = update
%post
# Commands to execute after package is installed (see also Prereq:)
# Parameter $1: 1 = install, 2 = update
if [ $1 = 1 ]; then
cat << EOF >> %{_sysconfdir}/modules.conf
# added by slmodem package
alias char-major-212 slamr
alias char-major-213 slusb
EOF
fi
%preun
# Commands to execute before package is uninstalled
# Parameter $1: 0 = remove, 1 = update
service slmodemd stop || :
modprobe -r slamr slusb || :
if [ $1 = 0 ]; then
egrep -ve 'added by slmodem package|alias char-major-212 slamr|alias char-major-213 slusb' %{_sysconfdir}/modules.conf >/tmp/modules.conf.slmodem$$
mv /tmp/modules.conf.slmodem$$ %{_sysconfdir}/modules.conf
fi
# /sbin/depmod -ae -F /boot/System.map-%{kname} %{kname}
#%postun
# Commands to execute after package is uninstalled
# Parameter $1: 0 = remove, 1 = update
%endif
%files modules-k.%{krel}
###############################################################################
#
# Packaging Phase Information (Subpackage kernel module)
#
###############################################################################
#
# Package Content
#
%defattr (-,root,root)
# Directories owned by this package
#%dir %{_datadir}/...
# Files owned by this package (taken from %{buildroot})
/lib/modules/%{kname}/misc/slamr.o
/lib/modules/%{kname}/misc/slusb.o
# Documentation for this package (taken from $RPM_BUILD_DIR)
#%doc ChangeLog
#
# Package Installation Scripts
#
# NOTE: During "update" of a package the order of execution is
#
# %pre (NEW)
# %post (NEW)
# %preun (OLD)
# %postun (OLD)
#
#%pre modules-k.%{krel}
# Commands to execute before package is installed (see also Prereq:)
# Parameter $1: 1 = install, 2 = update
%post modules-k.%{krel}
# Commands to execute after package is installed (see also Prereq:)
# Parameter $1: 1 = install, 2 = update
/sbin/depmod -ae -F /boot/System.map-%{kname} %{kname}
%preun modules-k.%{krel}
# Commands to execute before package is uninstalled
# Parameter $1: 0 = remove, 1 = update
# /sbin/depmod -ae -F /boot/System.map-%{kname} %{kname}
#%postun modules-k.%{krel}
# Commands to execute after package is uninstalled
# Parameter $1: 0 = remove, 1 = update
###############################################################################
#
# Package Change History
#
###############################################################################
%changelog
* Thu May 6 2004 Michal Jaegermann <michal at harddata.com> 2.9.7-1
- update to 2.9.7
- delete /sbin/depmod runs from %preun scripts; no really useful
function and only are causing troubles if a kernel was updated
* Mon Feb 23 2004 Michal Jaegermann <michal at harddata.com> 2.9.6-1
- update to 2.9.6
- make config file into a separate source to keep changes to original
tar files to minimum (they are not useful with 'rpmbuild -ta ...'
anyway - sigh! )
- make '%preun' script to succeed even if stopping a service or removing
old modules does not work; these actions are going to fail if
we just replaced a kernel
* Tue Jan 27 2004 Michal Jaegermann <michal at harddata.com> 2.9.5-2
- permission change option was not changing anything; make it to work
* Tue Jan 13 2004 Michal Jaegermann <michal at harddata.com> 2.9.5-1
- update to version 2.9.5-1
- fixed read permission for doc files
* Wed Dec 10 2003 Michal Jaegermann <michal at harddata.com> 2.9.3-2
- rewrote spec file to allow multiple module packages for different kernels
- added a configuration file in /etc/sysconfig
- startup script optionally modifies groups and permission on
a modem pseudo-terminal
* Fri Dec 5 2003 Michal Jaegermann <michal at harddata.com> 2.9.3-1
- updated to 2.9.3-1
- added "License" tag as required by newer rpm utility
* Tue Nov 05 2003 Stefan Becker <Stefan.Becker at nokia.com>
- The HW doesn't seem to like suspend. Added removal of the kernel modules
when slmodemd is stopped, so HW can be kicked by restarting the service.
* Mon Nov 04 2003 Stefan Becker <Stefan.Becker at nokia.com>
- Initial version based on slmodem-2.9.2
-------------- next part --------------
--- slmodem-2.9.6/scripts/slmodemd~ 2004-01-31 11:07:16.000000000 -0700
+++ slmodem-2.9.6/scripts/slmodemd 2004-02-23 13:34:51.000000000 -0700
@@ -29,7 +29,7 @@
# uncomment this if you want this feature (if necessary edit module pattern):
# do not try to start on a kernel which does not support it
-# grep -q 'slamr\..*o' /lib/modules/`uname -r`/modules.dep || exit 0
+grep -q 'slamr\..*o' /lib/modules/`uname -r`/modules.dep || exit 0
start() {
echo -n "Starting SmartLink Modem driver for $SLMODEMD_DEVICE: "
-------------- next part --------------
SLMODEMD_DEVICE=slamr0
# the following one for USB SmartLink modems
# SLMODEMD_DEVICE=slusb0
SLMODEMD_COUNTRY=USA
GROUP=uucp
# add to $GROUP (uucp) group all users allowed to access a modem port
PERMS=0660
More information about the fedora-test-list
mailing list