Commit db1d18657c96cc675596077cb60ef50fbe1947f8

Authored by Jonathan Nieder
Committed by Michal Marek
1 parent 05ba4488a5

scripts/package: deb-pkg: use fakeroot if available

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 deb-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>
Signed-off-by: Michal Marek <mmarek@suse.cz>

Showing 1 changed file with 19 additions and 2 deletions Side-by-side Diff

scripts/package/Makefile
... ... @@ -77,10 +77,27 @@
77 77  
78 78 # Deb target
79 79 # ---------------------------------------------------------------------------
  80 +quiet_cmd_builddeb = BUILDDEB
  81 + cmd_builddeb = set -e; \
  82 + test `id -u` = 0 || \
  83 + test -n "$(KBUILD_PKG_ROOTCMD)" || { \
  84 + which fakeroot >/dev/null 2>&1 && \
  85 + KBUILD_PKG_ROOTCMD="fakeroot -u"; \
  86 + } || { \
  87 + echo; \
  88 + echo "builddeb must be run as root (or using fakeroot)."; \
  89 + echo "KBUILD_PKG_ROOTCMD is unset and fakeroot not found."; \
  90 + echo "Try setting KBUILD_PKG_ROOTCMD to a command to acquire"; \
  91 + echo "root privileges (e.g., 'fakeroot -u' or 'sudo')."; \
  92 + false; \
  93 + } && \
  94 + \
  95 + $$KBUILD_PKG_ROOTCMD $(CONFIG_SHELL) \
  96 + $(srctree)/scripts/package/builddeb
  97 +
80 98 deb-pkg: FORCE
81 99 $(MAKE) KBUILD_SRC=
82   - $(KBUILD_PKG_ROOTCMD) $(CONFIG_SHELL) \
83   - $(srctree)/scripts/package/builddeb
  100 + $(call cmd,builddeb)
84 101  
85 102 clean-dirs += $(objtree)/debian/
86 103