All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jonathan Nieder <jrnieder@gmail.com>
To: linux-kbuild@vger.kernel.org
Cc: Sam Ravnborg <sam@ravnborg.org>, maximilian attems <max@stro.at>,
	Frans Pop <elendil@planet.nl>
Subject: [PATCH resend 1/2] scripts/package: add ROOTCMD variable
Date: Wed, 14 Oct 2009 01:54:25 -0500	[thread overview]
Message-ID: <20091014065425.GA8771@progeny.tock> (raw)
In-Reply-To: <20091014064622.GA8711@progeny.tock>

Allow "make foo-pkg" to acquire root or fake root privileges before
running commands that need it.  This is especially important for
tar-pkg, since otherwise if a user forgets to run make as root, the
installed kernel will have that user as owner and can easily be
overwritten by a broken program running as that user later.

The new ROOTCMD variable, if defined, is used as a command to run
other commands with possibly fake elevated privileges.  If it is not
defined, the behavior is as before, and hopefully make is running as
root already.

In other words, as a shortcut, instead of running

$ make oldconfig &&
> make &&
> fakeroot -u make rpm-pkg

now one can use a single command:

$ make oldconfig rpm-pkg ROOTCMD="fakeroot -u"

Idea from Ryan Anderson
<http://thread.gmane.org/gmane.comp.version-control.git/14770/focus=14802>.

Signed-off-by: Jonathan Nieder <jrnieder@gmail.com>
---
Changes from v1: rebased on top of current torvalds/master.

 scripts/package/Makefile |   13 +++++++------
 1 files changed, 7 insertions(+), 6 deletions(-)

diff --git a/scripts/package/Makefile b/scripts/package/Makefile
index f67cc88..14b65a8 100644
--- a/scripts/package/Makefile
+++ b/scripts/package/Makefile
@@ -53,7 +53,8 @@ rpm-pkg rpm: $(objtree)/kernel.spec FORCE
 	set -e; \
 	mv -f $(objtree)/.tmp_version $(objtree)/.version
 
-	$(RPM) $(RPMOPTS) --target $(UTS_MACHINE) -ta ../$(KERNELPATH).tar.gz
+	$(ROOTCMD) $(RPM) $(RPMOPTS) --target $(UTS_MACHINE) \
+		-ta ../$(KERNELPATH).tar.gz
 	rm ../$(KERNELPATH).tar.gz
 
 clean-files := $(objtree)/kernel.spec
@@ -70,8 +71,8 @@ binrpm-pkg: $(objtree)/binkernel.spec FORCE
 	set -e; \
 	mv -f $(objtree)/.tmp_version $(objtree)/.version
 
-	$(RPM) $(RPMOPTS) --define "_builddir $(objtree)" --target \
-		$(UTS_MACHINE) -bb $<
+	$(ROOTCMD) $(RPM) $(RPMOPTS) --define "_builddir $(objtree)" \
+		--target $(UTS_MACHINE) -bb $<
 
 clean-files += $(objtree)/binkernel.spec
 
@@ -79,7 +80,7 @@ clean-files += $(objtree)/binkernel.spec
 # ---------------------------------------------------------------------------
 deb-pkg: FORCE
 	$(MAKE) KBUILD_SRC=
-	$(CONFIG_SHELL) $(srctree)/scripts/package/builddeb
+	$(ROOTCMD) $(CONFIG_SHELL) $(srctree)/scripts/package/builddeb
 
 clean-dirs += $(objtree)/debian/
 
@@ -88,7 +89,7 @@ clean-dirs += $(objtree)/debian/
 # ---------------------------------------------------------------------------
 tar%pkg: FORCE
 	$(MAKE) KBUILD_SRC=
-	$(CONFIG_SHELL) $(srctree)/scripts/package/buildtar $@
+	$(ROOTCMD) $(CONFIG_SHELL) $(srctree)/scripts/package/buildtar $@
 
 clean-dirs += $(objtree)/tar-install/
 
@@ -96,10 +97,10 @@ clean-dirs += $(objtree)/tar-install/
 # Help text displayed when executing 'make help'
 # ---------------------------------------------------------------------------
 help: FORCE
+	@echo ' Set ROOTCMD={sudo|fakeroot -u|super|...} and make as non-root:'
 	@echo '  rpm-pkg         - Build both source and binary RPM kernel packages'
 	@echo '  binrpm-pkg      - Build only the binary kernel package'
 	@echo '  deb-pkg         - Build the kernel as an deb package'
 	@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'
-
-- 
1.6.5.rc1.199.g596ec


  reply	other threads:[~2009-10-14  6:46 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 ` Jonathan Nieder [this message]
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               ` [PATCH v3 3/3] scripts/package: deb-pkg: use fakeroot if available Jonathan Nieder
2009-11-24 19:07                 ` 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=20091014065425.GA8771@progeny.tock \
    --to=jrnieder@gmail.com \
    --cc=elendil@planet.nl \
    --cc=linux-kbuild@vger.kernel.org \
    --cc=max@stro.at \
    --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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.