2019-05-19 15:07:45 +03:00
# SPDX-License-Identifier: GPL-2.0-only
2005-04-17 02:20:36 +04:00
# Makefile for the different targets used to generate full packages of a kernel
2019-08-21 10:02:04 +03:00
i n c l u d e $( srctree ) / s c r i p t s / K b u i l d . i n c l u d e
2005-04-17 02:20:36 +04:00
# 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
# Remove hyphens since they have special meaning in RPM filenames
2011-05-05 00:48:11 +04: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 16:12:50 +04: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 16:12:50 +04:00
Kbuild Kconfig COPYING $( wildcard localversion*)
2005-04-17 02:20:36 +04: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 = \
i f t e s t "$(objtree)" ! = "$(srctree)" ; t h e n \
2017-12-06 13:32:57 +03: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 12:17:07 +03: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-17 02:20:36 +04:00
# rpm-pkg
2006-03-08 20:39:05 +03:00
# ---------------------------------------------------------------------------
2019-08-21 10:02:03 +03:00
PHONY += rpm-pkg
rpm-pkg :
2005-04-17 02:20:36 +04:00
$( MAKE) clean
2013-04-13 23:21:15 +04: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 04:10:11 +03:00
+rpmbuild $( RPMOPTS) --target $( UTS_MACHINE) -ta $( KERNELPATH) .tar.gz \
--define= '_smp_mflags %{nil}'
2005-04-17 02:20:36 +04:00
# binrpm-pkg
2006-03-08 20:39:05 +03:00
# ---------------------------------------------------------------------------
2019-08-21 10:02:03 +03:00
PHONY += binrpm-pkg
binrpm-pkg :
2019-02-14 06:05:14 +03:00
$( MAKE) -f $( srctree) /Makefile
2013-04-13 23:21:15 +04:00
$( CONFIG_SHELL) $( MKSPEC) prebuilt > $( objtree) /binkernel.spec
2017-09-30 04:10:09 +03:00
+rpmbuild $( RPMOPTS) --define " _builddir $( objtree) " --target \
2013-05-15 20:06:26 +04:00
$( UTS_MACHINE) -bb $( objtree) /binkernel.spec
2017-09-30 04:10:10 +03:00
2019-08-21 10:02:03 +03:00
PHONY += deb-pkg
deb-pkg :
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
2019-02-05 15:37:52 +03:00
+dpkg-buildpackage -r$( KBUILD_PKG_ROOTCMD) -a$$ ( cat debian/arch) $( DPKG_FLAGS) -i.git -us -uc
2015-09-02 12:57:24 +03:00
2019-08-21 10:02:03 +03:00
PHONY += bindeb-pkg
bindeb-pkg :
2018-04-05 14:22:29 +03:00
$( CONFIG_SHELL) $( srctree) /scripts/package/mkdebian
2019-02-05 15:37:52 +03:00
+dpkg-buildpackage -r$( KBUILD_PKG_ROOTCMD) -a$$ ( cat debian/arch) $( DPKG_FLAGS) -b -nc -uc
2018-04-05 14:22:29 +03:00
2019-08-21 10:02:03 +03:00
PHONY += intdeb-pkg
intdeb-pkg :
2018-04-05 14:22:29 +03:00
+$( CONFIG_SHELL) $( srctree) /scripts/package/builddeb
2005-04-17 02:20:36 +04:00
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 14:07:34 +03:00
# snap-pkg
# ---------------------------------------------------------------------------
2019-08-21 10:02:03 +03:00
PHONY += snap-pkg
snap-pkg :
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 14:07:34 +03:00
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)
2005-05-24 13:27:37 +04:00
# tarball targets
# ---------------------------------------------------------------------------
2019-08-21 10:02:03 +03:00
tar-pkgs := tar-pkg targz-pkg tarbz2-pkg tarxz-pkg
PHONY += $( tar-pkgs)
$(tar-pkgs) :
2019-02-14 06:05:14 +03:00
$( MAKE) -f $( srctree) /Makefile
2019-05-28 02:54:23 +03:00
+$( CONFIG_SHELL) $( srctree) /scripts/package/buildtar $@
2005-05-24 13:27:37 +04:00
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) ; \
2015-09-01 17:14:21 +03:00
echo $$ ( cat tools/perf/MANIFEST) ) \
2011-05-14 03:41:12 +04:00
-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; \
2013-11-06 19:55:35 +04: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 19:55:35 +04: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 18:13:21 +04:00
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)
2019-08-21 10:02:03 +03:00
perf-tar-pkgs := perf-tar-src-pkg perf-targz-src-pkg perf-tarbz2-src-pkg perf-tarxz-src-pkg
PHONY += $( perf-tar-pkgs)
$(perf-tar-pkgs) :
2010-05-31 18:13:21 +04:00
$( call cmd,perf_tar)
2005-04-17 02:20:36 +04:00
# Help text displayed when executing 'make help'
# ---------------------------------------------------------------------------
2019-08-21 10:02:03 +03:00
PHONY += help
help :
2010-05-31 18:13:21 +04: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 14:07:34 +03:00
@echo ' snap-pkg - Build only the binary kernel snap package (will connect to external hosts)'
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'
2019-08-21 10:02:04 +03:00
.PHONY : $( PHONY )