[PATCH v2 2/2] scripts/package: use fakeroot if available

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Unless already running as root, use fakeroot to ensure the files in
the generated binary packages are owned by root.  Without this change,
you have to set KBUILD_PKG_ROOTCMD or become root yourself to run
"make foo-pkg".

With this patch applied, you can run "make oldconfig rpm-pkg" as an
ordinary user to build a binary package for an updated kernel tree and
it should just work.

fakeroot is a bit too zealous by default in pretending files are owned
by root.  Unless directed otherwise, its wrapped stat() and lstat()
set st_uid and st_gid to 0 for all files.  This slows down the Linux
build with CONFIG_LOCALVERSION_AUTO a lot, since git notices that the
owners have changed and has to reread the entire kernel tree to learn
that the content has not changed.  Since "make modules_install" and
"scripts/package/foo" run within the same fakeroot session, we are
free to avoid this by telling fakeroot to use the actual owner and
group for preexisting files, by passing it the -u option.

Signed-off-by: Jonathan Nieder <jrnieder@xxxxxxxxx>
---
Changes from v1:
 - rename ROOTCMD variable to KBUILD_PKG_ROOTCMD

 scripts/package/Makefile |    9 +++++++++
 1 files changed, 9 insertions(+), 0 deletions(-)

diff --git a/scripts/package/Makefile b/scripts/package/Makefile
index 6997f38..2aa7e8c 100644
--- a/scripts/package/Makefile
+++ b/scripts/package/Makefile
@@ -1,6 +1,15 @@
 # Makefile for the different targets used to generate full packages of a kernel
 # It uses the generic clean infrastructure of kbuild
 
+# How to acquire (fake) root privileges
+ifndef KBUILD_PKG_ROOTCMD
+ifneq ($(shell id -u),0)
+ifeq ($(shell which fakeroot >/dev/null 2>&1 && echo found),found)
+KBUILD_PKG_ROOTCMD := fakeroot -u
+endif
+endif
+endif
+
 # RPM target
 # ---------------------------------------------------------------------------
 # The rpm target generates two rpm files:
-- 
1.6.5.rc1.199.g596ec

--
To unsubscribe from this list: send the line "unsubscribe linux-kbuild" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux&nblp;USB Development]     [Linux Media]     [Video for Linux]     [Linux Audio Users]     [Yosemite Secrets]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux