2005-04-16 15:20:36 -07: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-25 22:15:39 +02: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-16 15:20:36 -07:00
# Remove hyphens since they have special meaning in RPM filenames
2011-05-04 13:48:11 -07:00
KERNELPATH := kernel-$( subst -,_,$( KERNELRELEASE) )
2015-09-02 12:57:24 +03:00
KDEB_SOURCENAME ?= linux-$( KERNELRELEASE)
2018-04-05 14:22:29 +03:00
KBUILD_PKG_ROOTCMD ?= "fakeroot -u"
2015-09-02 12:57:24 +03:00
export KDEB_SOURCENAME
2013-04-12 14:12:50 +02:00
# Include only those top-level files that are needed by make, plus the GPL copy
2015-09-02 12:57:08 +03:00
TAR_CONTENT := $( KBUILD_ALLDIRS) .config .scmversion Makefile \
2013-04-12 14:12:50 +02:00
Kbuild Kconfig COPYING $( wildcard localversion*)
2005-04-16 15:20:36 -07:00
MKSPEC := $( srctree) /scripts/package/mkspec
2015-09-02 12:57:08 +03:00
quiet_cmd_src_tar = TAR $( 2) .tar.gz
cmd_src_tar = \
2017-12-06 19:32:57 +09:00
s e t - e ; \
2015-09-02 12:57:08 +03:00
i f t e s t "$(objtree)" ! = "$(srctree)" ; t h e n \
2017-12-06 19:32:57 +09:00
echo >& 2; \
echo >& 2 " ERROR:" ; \
echo >& 2 " Building source tarball is not possible outside the" ; \
echo >& 2 " kernel source tree. Don't set KBUILD_OUTPUT, or use the" ; \
echo >& 2 " binrpm-pkg or bindeb-pkg target instead." ; \
echo >& 2; \
2015-09-02 12:57:08 +03:00
false; \
f i ; \
$( srctree ) / s c r i p t s / s e t l o c a l v e r s i o n - - s a v e - s c m v e r s i o n ; \
t a r - c z $( RCS_TAR_IGNORE ) - f $( 2) . t a r . g z \
2017-11-15 18:17:07 +09:00
--transform 's:^:$(2)/:S' $( TAR_CONTENT) $( 3) ; \
r m - f $( objtree ) / . s c m v e r s i o n
2015-09-02 12:57:08 +03:00
2005-04-16 15:20:36 -07:00
# rpm-pkg
2006-03-08 18:39:05 +01:00
# ---------------------------------------------------------------------------
2017-11-15 18:19:20 +09:00
rpm-pkg : FORCE
2005-04-16 15:20:36 -07:00
$( MAKE) clean
2013-04-13 21:21:15 +02:00
$( CONFIG_SHELL) $( MKSPEC) >$( objtree) /kernel.spec
2015-09-02 12:57:08 +03:00
$( call cmd,src_tar,$( KERNELPATH) ,kernel.spec)
2017-09-30 10:10:11 +09:00
+rpmbuild $( RPMOPTS) --target $( UTS_MACHINE) -ta $( KERNELPATH) .tar.gz \
--define= '_smp_mflags %{nil}'
2005-04-16 15:20:36 -07:00
# binrpm-pkg
2006-03-08 18:39:05 +01:00
# ---------------------------------------------------------------------------
2013-04-13 21:21:15 +02:00
binrpm-pkg : FORCE
2005-07-14 20:26:09 +00:00
$( MAKE) KBUILD_SRC =
2013-04-13 21:21:15 +02:00
$( CONFIG_SHELL) $( MKSPEC) prebuilt > $( objtree) /binkernel.spec
2017-09-30 10:10:09 +09:00
+rpmbuild $( RPMOPTS) --define " _builddir $( objtree) " --target \
2013-05-15 12:06:26 -04:00
$( UTS_MACHINE) -bb $( objtree) /binkernel.spec
2017-09-30 10:10:10 +09:00
clean-files += $( objtree) /*.spec
2005-04-16 15:20:36 -07:00
2006-03-08 18:39:05 +01:00
deb-pkg : FORCE
2015-09-02 12:57:24 +03:00
$( MAKE) clean
2018-04-05 14:22:29 +03:00
$( CONFIG_SHELL) $( srctree) /scripts/package/mkdebian
2015-09-02 12:57:24 +03:00
$( call cmd,src_tar,$( KDEB_SOURCENAME) )
2018-04-05 14:22:29 +03:00
origversion = $$ ( dpkg-parsechangelog -SVersion | sed 's/-[^-]*$$//' ) ; \
mv $( KDEB_SOURCENAME) .tar.gz ../$( KDEB_SOURCENAME) _$$ { origversion} .orig.tar.gz
+dpkg-buildpackage -r$( KBUILD_PKG_ROOTCMD) -a$$ ( cat debian/arch) -i.git -us -uc
2015-09-02 12:57:24 +03:00
bindeb-pkg : FORCE
2018-04-05 14:22:29 +03:00
$( CONFIG_SHELL) $( srctree) /scripts/package/mkdebian
+dpkg-buildpackage -r$( KBUILD_PKG_ROOTCMD) -a$$ ( cat debian/arch) -b -nc -uc
intdeb-pkg : FORCE
+$( CONFIG_SHELL) $( srctree) /scripts/package/builddeb
2005-04-16 15:20:36 -07:00
clean-dirs += $( objtree) /debian/
scripts/package: snap-pkg target
Following in footsteps of other targets like 'deb-pkg, 'rpm-pkg' and 'tar-pkg',
this patch adds a 'snap-pkg' target for the creation of a Linux kernel snap
package using the kbuild infrastructure.
A snap, in its general form, is a self contained, sandboxed, universal package
and it is intended to work across multiple distributions and/or devices. A snap
package is distributed as a single compressed squashfs filesystem.
A kernel snap is a snap package carrying the Linux kernel, kernel modules,
accessory files (DTBs, System.map, etc) and a manifesto file. The purpose of a
kernel snap is to carry the Linux kernel during the creation of a system image,
eg. Ubuntu Core, and its subsequent upgrades.
For more information on snap packages: https://snapcraft.io/docs/
Signed-off-by: Paolo Pisati <paolo.pisati@canonical.com>
Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
2017-11-27 12:07:34 +01:00
# snap-pkg
# ---------------------------------------------------------------------------
snap-pkg : FORCE
rm -rf $( objtree) /snap
mkdir $( objtree) /snap
$( MAKE) clean
$( call cmd,src_tar,$( KERNELPATH) )
sed " s@KERNELRELEASE@ $( KERNELRELEASE) @; \
s@SRCTREE@$( shell realpath $( KERNELPATH) .tar.gz) @" \
$( srctree) /scripts/package/snapcraft.template > \
$( objtree) /snap/snapcraft.yaml
cd $( objtree) /snap && \
snapcraft --target-arch= $( UTS_MACHINE)
clean-dirs += $( objtree) /snap/
2005-04-16 15:20:36 -07:00
2005-05-24 11:27:37 +02:00
# tarball targets
# ---------------------------------------------------------------------------
2006-03-08 18:39:05 +01:00
tar%pkg : FORCE
2006-01-01 14:23:47 +01:00
$( MAKE) KBUILD_SRC =
2005-05-24 11:27:37 +02:00
$( CONFIG_SHELL) $( srctree) /scripts/package/buildtar $@
clean-dirs += $( objtree) /tar-install/
2010-05-31 11:13:21 -03:00
# perf-pkg - generate a source tarball with perf source
# ---------------------------------------------------------------------------
perf-tar = perf-$( KERNELVERSION)
quiet_cmd_perf_tar = TAR
cmd_perf_tar = \
2011-05-13 16:41:12 -07:00
g i t --git-dir = $( srctree) /.git archive --prefix= $( perf-tar) / \
HEAD^{ tree} $$ ( cd $( srctree) ; \
2015-09-01 17:14:21 +03:00
echo $$ ( cat tools/perf/MANIFEST) ) \
2011-05-13 16:41:12 -07:00
-o $( perf-tar) .tar; \
2010-05-31 11:13:21 -03:00
m k d i r - p $( perf -tar ) ; \
2011-05-13 16:41:12 -07:00
g i t --git-dir = $( srctree) /.git rev-parse HEAD > $( perf-tar) /HEAD; \
2013-11-06 08:55:35 -07:00
( c d $( srctree ) / t o o l s / p e r f ; \
2015-09-01 17:14:21 +03:00
u t i l / P E R F - V E R S I O N - G E N $( CURDIR ) / $( perf -tar ) / ) ; \
2013-11-06 08:55:35 -07:00
t a r r f $( perf -tar ) . t a r $( perf -tar ) / H E A D $( perf -tar ) / P E R F - V E R S I O N - F I L E ; \
2010-05-31 11:13:21 -03:00
r m - r $( perf -tar ) ; \
$( if $ ( findstring tar -src ,$ @) ,, \
$( if $ ( findstring bz 2,$ @) ,bzip 2, \
$( if $ ( findstring gz ,$ @) ,gzip , \
2011-01-30 12:18:51 +01:00
$( if $ ( findstring xz ,$ @) ,xz , \
$( error unknown target $ @) ) ) ) \
2010-05-31 11:13:21 -03:00
-f -9 $( perf-tar) .tar)
perf-%pkg : FORCE
$( call cmd,perf_tar)
2005-04-16 15:20:36 -07:00
# Help text displayed when executing 'make help'
# ---------------------------------------------------------------------------
2006-03-08 18:39:05 +01:00
help : FORCE
2010-05-31 11:13:21 -03:00
@echo ' rpm-pkg - Build both source and binary RPM kernel packages'
2015-09-02 12:57:24 +03:00
@echo ' binrpm-pkg - Build only the binary kernel RPM package'
@echo ' deb-pkg - Build both source and binary deb kernel packages'
@echo ' bindeb-pkg - Build only the binary kernel deb package'
scripts/package: snap-pkg target
Following in footsteps of other targets like 'deb-pkg, 'rpm-pkg' and 'tar-pkg',
this patch adds a 'snap-pkg' target for the creation of a Linux kernel snap
package using the kbuild infrastructure.
A snap, in its general form, is a self contained, sandboxed, universal package
and it is intended to work across multiple distributions and/or devices. A snap
package is distributed as a single compressed squashfs filesystem.
A kernel snap is a snap package carrying the Linux kernel, kernel modules,
accessory files (DTBs, System.map, etc) and a manifesto file. The purpose of a
kernel snap is to carry the Linux kernel during the creation of a system image,
eg. Ubuntu Core, and its subsequent upgrades.
For more information on snap packages: https://snapcraft.io/docs/
Signed-off-by: Paolo Pisati <paolo.pisati@canonical.com>
Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
2017-11-27 12:07:34 +01:00
@echo ' snap-pkg - Build only the binary kernel snap package (will connect to external hosts)'
2010-05-31 11:13:21 -03: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 12:18:51 +01:00
@echo ' tarxz-pkg - Build the kernel as a xz compressed tarball'
2010-05-31 11:13:21 -03: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 12:18:51 +01:00
@echo ' perf-tarxz-src-pkg - Build $(perf-tar).tar.xz source tarball'