2005-04-17 02:20:36 +04:00
# Makefile for the different targets used to generate full packages of a kernel
# It uses the generic clean infrastructure of kbuild
# RPM target
# ---------------------------------------------------------------------------
# The rpm target generates two rpm files:
# /usr/src/packages/SRPMS/kernel-2.6.7rc2-1.src.rpm
# /usr/src/packages/RPMS/i386/kernel-2.6.7rc2-1.<arch>.rpm
# The src.rpm files includes all source for the kernel being built
# The <arch>.rpm includes kernel configuration, modules etc.
#
# Process to create the rpm files
# a) clean the kernel
# b) Generate .spec file
# c) Build a tar ball, using symlink to make kernel version
# first entry in the path
# d) and pack the result to a tar.gz file
# e) generate the rpm files, based on kernel.spec
# - Use /. to avoid tar packing just the symlink
2009-08-26 00:15:39 +04:00
# Note that the rpm-pkg target cannot be used with KBUILD_OUTPUT,
# but the binrpm-pkg target can; for some reason O= gets ignored.
2005-04-17 02:20:36 +04:00
# Do we have rpmbuild, otherwise fall back to the older rpm
RPM := $( shell if [ -x "/usr/bin/rpmbuild" ] ; then echo rpmbuild; \
else echo rpm; fi )
# Remove hyphens since they have special meaning in RPM filenames
2011-05-05 00:48:11 +04:00
KERNELPATH := kernel-$( subst -,_,$( KERNELRELEASE) )
2005-04-17 02:20:36 +04:00
MKSPEC := $( srctree) /scripts/package/mkspec
2011-05-05 02:37:13 +04:00
PREV := set -e; cd -P ..;
2005-04-17 02:20:36 +04:00
# rpm-pkg
2006-03-08 20:39:05 +03:00
# ---------------------------------------------------------------------------
2005-04-17 02:20:36 +04:00
$(objtree)/kernel.spec : $( MKSPEC ) $( srctree ) /Makefile
$( CONFIG_SHELL) $( MKSPEC) > $@
2006-03-08 20:39:05 +03:00
rpm-pkg rpm : $( objtree ) /kernel .spec FORCE
2009-08-26 00:15:39 +04:00
@if test -n " $( KBUILD_OUTPUT) " ; then \
echo "Building source + binary RPM is not possible outside the" ; \
echo "kernel source tree. Don't set KBUILD_OUTPUT, or use the" ; \
echo "binrpm-pkg target instead." ; \
false; \
fi
2005-04-17 02:20:36 +04:00
$( MAKE) clean
$( PREV) ln -sf $( srctree) $( KERNELPATH)
2010-07-15 12:36:37 +04:00
$( CONFIG_SHELL) $( srctree) /scripts/setlocalversion --save-scmversion
2005-04-17 02:20:36 +04:00
$( PREV) tar -cz $( RCS_TAR_IGNORE) -f $( KERNELPATH) .tar.gz $( KERNELPATH) /.
$( PREV) rm $( KERNELPATH)
2009-02-12 21:16:05 +03:00
rm -f $( objtree) /.scmversion
2005-04-17 02:20:36 +04:00
set -e; \
$( CONFIG_SHELL) $( srctree) /scripts/mkversion > $( objtree) /.tmp_version
set -e; \
mv -f $( objtree) /.tmp_version $( objtree) /.version
2008-12-02 01:21:03 +03:00
$( RPM) $( RPMOPTS) --target $( UTS_MACHINE) -ta ../$( KERNELPATH) .tar.gz
2005-04-17 02:20:36 +04:00
rm ../$( KERNELPATH) .tar.gz
clean-files := $( objtree) /kernel.spec
# binrpm-pkg
2006-03-08 20:39:05 +03:00
# ---------------------------------------------------------------------------
2005-04-17 02:20:36 +04:00
$(objtree)/binkernel.spec : $( MKSPEC ) $( srctree ) /Makefile
$( CONFIG_SHELL) $( MKSPEC) prebuilt > $@
2006-03-06 01:14:10 +03:00
2006-03-08 20:39:05 +03:00
binrpm-pkg : $( objtree ) /binkernel .spec FORCE
2005-07-15 00:26:09 +04:00
$( MAKE) KBUILD_SRC =
2005-04-17 02:20:36 +04:00
set -e; \
$( CONFIG_SHELL) $( srctree) /scripts/mkversion > $( objtree) /.tmp_version
set -e; \
mv -f $( objtree) /.tmp_version $( objtree) /.version
2009-08-26 00:15:39 +04:00
$( RPM) $( RPMOPTS) --define " _builddir $( objtree) " --target \
2008-12-02 01:21:03 +03:00
$( UTS_MACHINE) -bb $<
2005-04-17 02:20:36 +04:00
clean-files += $( objtree) /binkernel.spec
# Deb target
# ---------------------------------------------------------------------------
2009-11-24 18:21:56 +03:00
quiet_cmd_builddeb = BUILDDEB
cmd_builddeb = set -e; \
test ` id -u` = 0 || \
test -n " $( KBUILD_PKG_ROOTCMD) " || { \
which fakeroot >/dev/null 2>& 1 && \
KBUILD_PKG_ROOTCMD = "fakeroot -u" ; \
} || { \
echo; \
echo "builddeb must be run as root (or using fakeroot)." ; \
echo "KBUILD_PKG_ROOTCMD is unset and fakeroot not found." ; \
echo "Try setting KBUILD_PKG_ROOTCMD to a command to acquire" ; \
echo "root privileges (e.g., 'fakeroot -u' or 'sudo')." ; \
false; \
} && \
\
$$ KBUILD_PKG_ROOTCMD $( CONFIG_SHELL) \
$( srctree) /scripts/package/builddeb
2006-03-08 20:39:05 +03:00
deb-pkg : FORCE
2005-07-15 00:26:09 +04:00
$( MAKE) KBUILD_SRC =
2009-11-24 18:21:56 +03:00
$( call cmd,builddeb)
2005-04-17 02:20:36 +04:00
clean-dirs += $( objtree) /debian/
2005-05-24 13:27:37 +04:00
# tarball targets
# ---------------------------------------------------------------------------
2006-03-08 20:39:05 +03:00
tar%pkg : FORCE
2006-01-01 16:23:47 +03:00
$( MAKE) KBUILD_SRC =
2005-05-24 13:27:37 +04:00
$( CONFIG_SHELL) $( srctree) /scripts/package/buildtar $@
clean-dirs += $( objtree) /tar-install/
2010-05-31 18:13:21 +04:00
# perf-pkg - generate a source tarball with perf source
# ---------------------------------------------------------------------------
perf-tar = perf-$( KERNELVERSION)
quiet_cmd_perf_tar = TAR
cmd_perf_tar = \
2011-05-14 03:41:12 +04:00
g i t --git-dir = $( srctree) /.git archive --prefix= $( perf-tar) / \
HEAD^{ tree} $$ ( cd $( srctree) ; \
echo $$ ( cat $( srctree) /tools/perf/MANIFEST) ) \
-o $( perf-tar) .tar; \
2010-05-31 18:13:21 +04:00
m k d i r - p $( perf -tar ) ; \
2011-05-14 03:41:12 +04:00
g i t --git-dir = $( srctree) /.git rev-parse HEAD > $( perf-tar) /HEAD; \
2010-05-31 18:13:21 +04:00
t a r r f $( perf -tar ) . t a r $( perf -tar ) / H E A D ; \
r m - r $( perf -tar ) ; \
$( if $ ( findstring tar -src ,$ @) ,, \
$( if $ ( findstring bz 2,$ @) ,bzip 2, \
$( if $ ( findstring gz ,$ @) ,gzip , \
2011-01-30 14:18:51 +03:00
$( if $ ( findstring xz ,$ @) ,xz , \
$( error unknown target $ @) ) ) ) \
2010-05-31 18:13:21 +04:00
-f -9 $( perf-tar) .tar)
perf-%pkg : FORCE
$( call cmd,perf_tar)
2005-04-17 02:20:36 +04:00
# Help text displayed when executing 'make help'
# ---------------------------------------------------------------------------
2006-03-08 20:39:05 +03:00
help : FORCE
2010-05-31 18:13:21 +04:00
@echo ' rpm-pkg - Build both source and binary RPM kernel packages'
@echo ' binrpm-pkg - Build only the binary kernel package'
2011-10-29 23:15:07 +04:00
@echo ' deb-pkg - Build the kernel as a deb package'
2010-05-31 18:13:21 +04:00
@echo ' tar-pkg - Build the kernel as an uncompressed tarball'
@echo ' targz-pkg - Build the kernel as a gzip compressed tarball'
@echo ' tarbz2-pkg - Build the kernel as a bzip2 compressed tarball'
2011-01-30 14:18:51 +03:00
@echo ' tarxz-pkg - Build the kernel as a xz compressed tarball'
2010-05-31 18:13:21 +04:00
@echo ' perf-tar-src-pkg - Build $(perf-tar).tar source tarball'
@echo ' perf-targz-src-pkg - Build $(perf-tar).tar.gz source tarball'
@echo ' perf-tarbz2-src-pkg - Build $(perf-tar).tar.bz2 source tarball'
2011-01-30 14:18:51 +03:00
@echo ' perf-tarxz-src-pkg - Build $(perf-tar).tar.xz source tarball'
2005-04-17 02:20:36 +04:00