Linux Today: Linux News On Internet Time.
Search Linux Today
Linux News Sections:  Developer -  High Performance -  Infrastructure -  IT Management -  Security -  Storage -
Linux Today Navigation
LT Home
Contribute
Contribute
Link to Us
Linux Jobs


More on LinuxToday


Alan Cox: make rpm

Jul 29, 2001, 00:47 (28 Talkback[s])
Subject:  make rpm   
From:  Alan Cox <alan@lxorguk.ukuu.org.uk>
Date:  Sat, July 28, 2001 5:20 pm   

I've been meaning to do this one for a while and I now have it working so
that with my current -ac kernel working tree I can type

        make rpm

and out puts kernel-2.4.7ac3-1.i386.rpm

All this took was the pieces below.

Anyone care to knock up a "make dpkg" to go with it ?

Alan

---

#
# RPM target
#
#        If you do a make spec before packing the tarball you can rpm -ta it
#
spec:
         . scripts/mkspec >kernel.spec

#
#         Build a tar ball , generate an rpm from it and pack the result
#         There arw two bits of magic here
#          1) The use of /. to avoid tar packing just the symlink
#         2) Removing the .dep files as they have source paths in them that
#                 will become invalid
#
rpm:    clean newversion spec
        find . \( -size 0 -o -name .depend \) -type f -print | xargs rm -f
        cd $(TOPDIR)/.. ; \
        ln -s $(TOPDIR) $(KERNELPATH) ; \
        tar cvfz $(KERNELPATH).tar.gz $(KERNELPATH)/. ; \
        rpm -ta $(TOPDIR)/../$(KERNELPATH).tar.gz


--

scripts/mkspec


#!/bin/sh
#
#        Output a simple RPM spec file that uses no fancy features requring
#        RPM v4. This is intended to work with any RPM distro.
#
#        The only gothic bit here is redefining install_post to avoid 
#        stripping the symbols from files in the kernel which we want
#
echo "Name: kernel"
echo "Summary: The Linux Kernel"
echo "Version: "$VERSION.$PATCHLEVEL.$SUBLEVEL$EXTRAVERSION | sed -e "s/-//"
echo -n "Release: "
cat .version
echo "Copyright: GPL"
echo "Group: System Environment/Kernel"
echo "Vendor: The Linux Community"
echo "URL: http://www.kernel.org"
echo -n "Source: kernel-$VERSION.$PATCHLEVEL.$SUBLEVEL"
echo "$EXTRAVERSION.tar.gz" | sed -e "s/-//"
echo "BuildRoot: /var/tmp/%{name}-%{PACKAGE_VERSION}-root"
echo "%define __spec_install_post /usr/lib/rpm/brp-compress || :"
echo ""
echo "%description"
echo "The Linux Kernel, the operating system core itself"
echo ""
echo "%prep"
echo "%setup -q"
echo ""
echo "%build"
echo "make oldconfig dep clean bzImage modules"
echo ""
echo "%install"
echo 'mkdir -p $RPM_BUILD_ROOT/boot $RPM_BUILD_ROOT/lib
$RPM_BUILD_ROOT/lib/modules'
echo 'INSTALL_MOD_PATH=$RPM_BUILD_ROOT make modules_install'
echo 'cp arch/i386/boot/bzImage
$RPM_BUILD_ROOT'"/boot/vmlinuz-$VERSION.$PATCHLEVEL.$SUBLEVEL$EXTRAVERSION"
echo ""
echo "%clean"
echo '#echo -rf $RPM_BUILD_ROOT'
echo ""
echo "%files"
echo '%defattr (-, root, root)'
echo "%dir /lib/modules"
echo "/lib/modules/$VERSION.$PATCHLEVEL.$SUBLEVEL$EXTRAVERSION"
echo ""
-