From: Jonathan Nieder <jrnieder@gmail.com>
To: Michal Marek <mmarek@suse.cz>
Cc: linux-kbuild@vger.kernel.org, maximilian attems <max@stro.at>,
Sam Ravnborg <sam@ravnborg.org>, Frans Pop <elendil@planet.nl>
Subject: [PATCH v3 3/3] scripts/package: deb-pkg: use fakeroot if available
Date: Tue, 24 Nov 2009 09:21:56 -0600 [thread overview]
Message-ID: <20091124152156.GD14731@progeny.tock> (raw)
In-Reply-To: <20091124150904.GA14731@progeny.tock>
Running "make deb-pkg" requires setting KBUILD_PKG_ROOTCMD or
becoming root oneself or it errors out. Unless already running
as root or KBUILD_PKG_ROOTCMD is already set, use fakeroot as a
good default.
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 too zealous by default in treating files as owned by
root. Its wrapped stat() sets st_uid and st_gid to 0 for all
files, which causes Git to go on a wild goose chase if
CONFIG_LOCALVERSION_AUTO is set, checking if any file's content
has changed along with its stat information. 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@gmail.com>
---
The appropriate value for KBUILD_PKG_ROOTCMD is determined in the
rules for deb-pkg instead of the outer Makefile to avoid having to
fork for 'which' and 'id' for unrelated targets.
Before this change, the command for the deb-pkg target was not
abbreviated, so that normal output included something like "bash
/tmp/buildd/scripts/package/builddeb". It is a shame to get rid of
this kind of transparency, but when I tried lying by setting
quiet_cmd_builddeb to that string, it was confusing to see 'make'
claiming to run that command through bash and not through fakeroot.
So I punted by abbreviating to BUILDDEB. The curious can always use
"V=1".
scripts/package/Makefile | 21 +++++++++++++++++++--
1 files changed, 19 insertions(+), 2 deletions(-)
diff --git a/scripts/package/Makefile b/scripts/package/Makefile
index 5c0b43a..62fcc3a 100644
--- a/scripts/package/Makefile
+++ b/scripts/package/Makefile
@@ -77,10 +77,27 @@ clean-files += $(objtree)/binkernel.spec
# Deb target
# ---------------------------------------------------------------------------
+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
+
deb-pkg: FORCE
$(MAKE) KBUILD_SRC=
- $(KBUILD_PKG_ROOTCMD) $(CONFIG_SHELL) \
- $(srctree)/scripts/package/builddeb
+ $(call cmd,builddeb)
clean-dirs += $(objtree)/debian/
--
1.6.5.3
next prev parent reply other threads:[~2009-11-24 15:10 UTC|newest]
Thread overview: 18+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-10-14 6:46 [PATCH resend 0/2] fakeroot dwimery for scripts/package/* Jonathan Nieder
2009-10-14 6:54 ` [PATCH resend 1/2] scripts/package: add ROOTCMD variable Jonathan Nieder
2009-10-14 6:55 ` [PATCH resend 2/2] scripts/package: use fakeroot if available Jonathan Nieder
2009-10-14 7:16 ` [PATCH resend 0/2] fakeroot dwimery for scripts/package/* Sam Ravnborg
2009-10-14 9:59 ` Frans Pop
2009-10-14 11:03 ` maximilian attems
2009-10-15 13:31 ` [PATCH v2 " Jonathan Nieder
2009-10-15 13:35 ` [PATCH v2 1/2] scripts/package: add KBUILD_PKG_ROOTCMD variable Jonathan Nieder
2009-11-24 11:27 ` Michal Marek
2009-11-24 12:03 ` Jonathan Nieder
2009-11-24 13:13 ` Michal Marek
2009-11-24 15:09 ` [PATCH v3 0/3] fakeroot dwimery for deb-pkg target Jonathan Nieder
2009-11-24 15:11 ` [PATCH 1/3] scripts/package: tar-pkg: use tar --owner=root Jonathan Nieder
2009-11-24 15:14 ` [PATCH v3 2/3] scripts/package: add KBUILD_PKG_ROOTCMD variable Jonathan Nieder
2009-11-24 15:21 ` Jonathan Nieder [this message]
2009-11-24 19:07 ` [PATCH v3 3/3] scripts/package: deb-pkg: use fakeroot if available Michal Marek
2009-10-15 13:39 ` [PATCH v2 2/2] scripts/package: " Jonathan Nieder
2009-11-04 21:22 ` [PATCH v2 0/2] fakeroot dwimery for scripts/package/* maximilian attems
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20091124152156.GD14731@progeny.tock \
--to=jrnieder@gmail.com \
--cc=elendil@planet.nl \
--cc=linux-kbuild@vger.kernel.org \
--cc=max@stro.at \
--cc=mmarek@suse.cz \
--cc=sam@ravnborg.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).