Linux Today: Linux News On Internet Time.

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 ?



# RPM target
#        If you do a make spec before packing the tarball you can rpm -ta it
         . 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



#        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
echo 'INSTALL_MOD_PATH=$RPM_BUILD_ROOT make modules_install'
echo 'cp arch/i386/boot/bzImage
echo ""
echo "%clean"
echo '#echo -rf $RPM_BUILD_ROOT'
echo ""
echo "%files"
echo '%defattr (-, root, root)'
echo "%dir /lib/modules"
echo ""