All of lore.kernel.org
 help / color / mirror / Atom feed
* The who needs reviews anyways [PATCH]
@ 2007-02-08 21:48 Roman Zippel
  2007-02-08 22:05 ` Sam Ravnborg
                   ` (4 more replies)
  0 siblings, 5 replies; 13+ messages in thread
From: Roman Zippel @ 2007-02-08 21:48 UTC (permalink / raw)
  To: Linus Torvalds; +Cc: linux-kernel, Oleg Verych

Hi,

This adds the remaining changes which should have been part of the review 
process. Oleg could have learned something in process, but who needs that 
if wasting everyones time is so much more fun...

Sorry for the delay, but the git server were gone.

- the define command is inappropriate (it's primarily for rule 
  definitions)
- execute commands in the current dir as all other commands
- .*.tmp (but not .*.null) files are also removed up by "make clean"
- printf has other side effects, instead stop pretending we support 
  something else than bash
- proper quoting
- proper indentation

bye, Roman

Signed-off-by: Roman Zippel <zippel@linux-m68k.org>

---
 Makefile               |    9 ++++--
 scripts/Kbuild.include |   72 ++++++++++++++++++++++++-------------------------
 2 files changed, 42 insertions(+), 39 deletions(-)

Index: linux-2.6/Makefile
===================================================================
--- linux-2.6.orig/Makefile
+++ linux-2.6/Makefile
@@ -192,8 +192,11 @@ KCONFIG_CONFIG	?= .config
 
 # SHELL used by kbuild
 CONFIG_SHELL := $(shell if [ -x "$$BASH" ]; then echo $$BASH; \
-	  else if [ -x /bin/bash ]; then echo /bin/bash; \
-	  else echo sh; fi ; fi)
+	  else if [ -x /bin/bash ]; then echo /bin/bash; fi; fi)
+ifeq ($(CONFIG_SHELL),)
+$(error bash is required to build the kernel)
+endif
+SHELL := $(CONFIG_SHELL)
 
 HOSTCC       = gcc
 HOSTCXX      = g++
@@ -321,7 +324,7 @@ KERNELRELEASE = $(shell cat include/conf
 KERNELVERSION = $(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION)
 
 export VERSION PATCHLEVEL SUBLEVEL KERNELRELEASE KERNELVERSION
-export ARCH CONFIG_SHELL HOSTCC HOSTCFLAGS CROSS_COMPILE AS LD CC
+export ARCH CONFIG_SHELL SHELL HOSTCC HOSTCFLAGS CROSS_COMPILE AS LD CC
 export CPP AR NM STRIP OBJCOPY OBJDUMP MAKE AWK GENKSYMS PERL UTS_MACHINE
 export HOSTCXX HOSTCXXFLAGS LDFLAGS_MODULE CHECK CHECKFLAGS
 
Index: linux-2.6/scripts/Kbuild.include
===================================================================
--- linux-2.6.orig/scripts/Kbuild.include
+++ linux-2.6/scripts/Kbuild.include
@@ -1,7 +1,7 @@
 ####
 # kbuild: Generic definitions
 
-# Convenient constants
+# Convenient variables
 comma   := ,
 squote  := '
 empty   :=
@@ -56,44 +56,48 @@ endef
 # gcc support functions
 # See documentation in Documentation/kbuild/makefiles.txt
 
-# checker-shell
-# Usage: option = $(call checker-shell,$(CC)...-o $$OUT,option-ok,otherwise)
-# Exit code chooses option. $$OUT is safe location for needless output.
-define checker-shell
-$(shell set -e; \
-  DIR=$(KBUILD_EXTMOD); \
-  cd $${DIR:-$(objtree)}; \
-  OUT=$$PWD/.$$$$.null; \
-  if $(1) >/dev/null 2>&1; \
-    then echo "$(2)"; \
-    else echo "$(3)"; \
-  fi; \
-  rm -f $$OUT)
-endef
+# output directory for tests below
+TMPOUT := $(if $(KBUILD_EXTMOD),$(firstword $(KBUILD_EXTMOD))/)
+
+# try-run
+# Usage: option = $(call try-run, $(CC)...-o "$$TMP",option-ok,otherwise)
+# Exit code chooses option. "$$TMP" is can be used as temporary file and
+# is automatically cleaned up.
+try-run = $(shell set -e;		\
+	TMP="$(TMPOUT).$$$$.tmp";	\
+	if ($(1)) >/dev/null 2>&1;	\
+	then echo "$(2)";		\
+	else echo "$(3)";		\
+	fi;				\
+	rm -f "$$TMP")
 
 # as-option
 # Usage: cflags-y += $(call as-option,-Wa$(comma)-isa=foo,)
-as-option = $(call checker-shell,\
-   $(CC) $(CFLAGS) $(1) -c -xassembler /dev/null -o $$OUT,$(1),$(2))
+
+as-option = $(call try-run,\
+	$(CC) $(CFLAGS) $(1) -c -xassembler /dev/null -o "$$TMP",$(1),$(2))
 
 # as-instr
 # Usage: cflags-y += $(call as-instr,instr,option1,option2)
-as-instr = $(call checker-shell,\
-   printf "$(1)" | $(CC) $(AFLAGS) -c -xassembler -o $$OUT -,$(2),$(3))
+
+as-instr = $(call try-run,\
+	echo -e "$(1)" | $(CC) $(AFLAGS) -c -xassembler -o "$$TMP" -,$(2),$(3))
 
 # cc-option
 # Usage: cflags-y += $(call cc-option,-march=winchip-c6,-march=i586)
-cc-option = $(call checker-shell,\
-   $(CC) $(CFLAGS) $(if $(3),$(3),$(1)) -S -xc /dev/null -o $$OUT,$(1),$(2))
+
+cc-option = $(call try-run,\
+	$(CC) $(CFLAGS) $(1) -S -xc /dev/null -o "$$TMP",$(1),$(2))
 
 # cc-option-yn
 # Usage: flag := $(call cc-option-yn,-march=winchip-c6)
-cc-option-yn = $(call cc-option,"y","n",$(1))
+cc-option-yn = $(call try-run,\
+	$(CC) $(CFLAGS) $(1) -S -xc /dev/null -o "$$TMP",y,n)
 
 # cc-option-align
 # Prefix align with either -falign or -malign
 cc-option-align = $(subst -functions=0,,\
-   $(call cc-option,-falign-functions=0,-malign-functions=0))
+	$(call cc-option,-falign-functions=0,-malign-functions=0))
 
 # cc-version
 # Usage gcc-ver := $(call cc-version,$(CC))
@@ -105,24 +109,22 @@ cc-ifversion = $(shell [ $(call cc-versi
 
 # ld-option
 # Usage: ldflags += $(call ld-option, -Wl$(comma)--hash-style=both)
-ld-option = $(call checker-shell,\
-   $(CC) $(1) -nostdlib -xc /dev/null -o $$OUT,$(1),$(2))
+ld-option = $(call try-run,\
+	$(CC) $(1) -nostdlib -xc /dev/null -o "$$TMP",$(1),$(2))
 
 ######
 
+###
 # Shorthand for $(Q)$(MAKE) -f scripts/Makefile.build obj=
 # Usage:
 # $(Q)$(MAKE) $(build)=dir
 build := -f $(if $(KBUILD_SRC),$(srctree)/)scripts/Makefile.build obj
 
-# Prefix -I with $(srctree) if it is not an absolute path,
-# add original to the end
-addtree = $(if \
-	$(filter-out -I/%,$(1)),$(patsubst -I%,-I$(srctree)/%,$(1))) $(1)
+# Prefix -I with $(srctree) if it is not an absolute path.
+addtree = $(if $(filter-out -I/%,$(1)),$(patsubst -I%,-I$(srctree)/%,$(1))) $(1)
 
 # Find all -I options and call addtree
-flags = $(foreach o,$($(1)),\
-	$(if $(filter -I%,$(o)),$(call addtree,$(o)),$(o)))
+flags = $(foreach o,$($(1)),$(if $(filter -I%,$(o)),$(call addtree,$(o)),$(o)))
 
 # echo command.
 # Short version is used, if $(quiet) equals `quiet_', otherwise full one.
@@ -144,7 +146,7 @@ objectify = $(foreach o,$(1),$(if $(filt
 # See Documentation/kbuild/makefiles.txt for more info
 
 ifneq ($(KBUILD_NOCMDDEP),1)
-# Check if both arguments has same arguments. Result is empty string, if equal.
+# Check if both arguments has same arguments. Result is empty string if equal.
 # User may override this check using make KBUILD_NOCMDDEP=1
 arg-check = $(strip $(filter-out $(cmd_$(1)), $(cmd_$@)) \
                     $(filter-out $(cmd_$@),   $(cmd_$(1))) )
@@ -168,7 +170,6 @@ if_changed = $(if $(strip $(any-prereq) 
 	echo 'cmd_$@ := $(make-cmd)' > $(dot-target).cmd)
 
 # Execute the command and also postprocess generated .d dependencies file.
-#
 if_changed_dep = $(if $(strip $(any-prereq) $(arg-check) ),                  \
 	@set -e;                                                             \
 	$(echo-cmd) $(cmd_$(1));                                             \
@@ -176,10 +177,9 @@ if_changed_dep = $(if $(strip $(any-prer
 	rm -f $(depfile);                                                    \
 	mv -f $(dot-target).tmp $(dot-target).cmd)
 
-# Will check if $(cmd_foo) changed, or any of the prerequisites changed,
-# and if so will execute $(rule_foo).
 # Usage: $(call if_changed_rule,foo)
-#
+# Will check if $(cmd_foo) or any of the prerequisites changed,
+# and if so will execute $(rule_foo).
 if_changed_rule = $(if $(strip $(any-prereq) $(arg-check) ),                 \
 	@set -e;                                                             \
 	$(rule_$(1)))

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: The who needs reviews anyways [PATCH]
  2007-02-08 21:48 The who needs reviews anyways [PATCH] Roman Zippel
@ 2007-02-08 22:05 ` Sam Ravnborg
  2007-02-08 22:22 ` Linus Torvalds
                   ` (3 subsequent siblings)
  4 siblings, 0 replies; 13+ messages in thread
From: Sam Ravnborg @ 2007-02-08 22:05 UTC (permalink / raw)
  To: Roman Zippel; +Cc: Linus Torvalds, linux-kernel, Oleg Verych

On Thu, Feb 08, 2007 at 10:48:51PM +0100, Roman Zippel wrote:
> Hi,
> 
> This adds the remaining changes which should have been part of the review 
> process. Oleg could have learned something in process, but who needs that 
> if wasting everyones time is so much more fun...
> 
> Sorry for the delay, but the git server were gone.
> 
> - the define command is inappropriate (it's primarily for rule 
>   definitions)
> - execute commands in the current dir as all other commands
> - .*.tmp (but not .*.null) files are also removed up by "make clean"
> - printf has other side effects, instead stop pretending we support 
>   something else than bash
> - proper quoting
> - proper indentation
> 
> bye, Roman
> 
> Signed-off-by: Roman Zippel <zippel@linux-m68k.org>
Acked-by: Sam Ravnborg <sam@ravnborg.org>

Acked as "patch reviewed and looks good".

PS. Will be unresponsive for next 12 days due to vacation.

	Sam

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: The who needs reviews anyways [PATCH]
  2007-02-08 21:48 The who needs reviews anyways [PATCH] Roman Zippel
  2007-02-08 22:05 ` Sam Ravnborg
@ 2007-02-08 22:22 ` Linus Torvalds
  2007-02-08 22:53   ` Roman Zippel
  2007-02-08 23:03 ` Kbuild refactoring (Re: The who needs reviews anyways [PATCH]) Oleg Verych
                   ` (2 subsequent siblings)
  4 siblings, 1 reply; 13+ messages in thread
From: Linus Torvalds @ 2007-02-08 22:22 UTC (permalink / raw)
  To: Roman Zippel; +Cc: linux-kernel, Oleg Verych



On Thu, 8 Feb 2007, Roman Zippel wrote:
> 
> Sorry for the delay, but the git server were gone.
> 
> - the define command is inappropriate (it's primarily for rule 
>   definitions)

Looks fine. Especially considering the strange whitespace issues.

> - execute commands in the current dir as all other commands
> - .*.tmp (but not .*.null) files are also removed up by "make clean"
> - printf has other side effects, instead stop pretending we support 
>   something else than bash

However, this one I have problems with .The problem is, many people 
probably _do_ have bash, but it's in /bin/sh. That used to be a fairly 
common setup a long time ago. Maybe it's not any more, but the whole "fall 
back to sh" actually came from that.

The $BASH variable is only defined if you use bash as your *interactive* 
shell, ie if you started "make" from a bash shell.

Historically, people used to do:
 - /bin/sh was the "standard shell" (bash)
 - /bin/[t]csh is what clueless weenies use for interactive work.

(Yeah, I'm not a [t]csh fan ;)

And you did break that.

It's quite possible that all modern distributions will install /bin/bash 
as a link to /bin/sh, but I don't see the point of that particular change. 
We aren't even all that bash-centric any more. If you have a 
POSIX-compatible shell in /bin/sh, it really _should_ work. It just can't 
be something really broken.

> - proper quoting
> - proper indentation

One thing I'm wondering about is whether we could have a "does this warn" 
test. I guess you can do it with -Werror, but it might be nice to have 
some tests for "does the -Wxyzzy flag warn also for proper code"

		Linus

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: The who needs reviews anyways [PATCH]
  2007-02-08 22:22 ` Linus Torvalds
@ 2007-02-08 22:53   ` Roman Zippel
  2007-02-08 23:02     ` Linus Torvalds
  0 siblings, 1 reply; 13+ messages in thread
From: Roman Zippel @ 2007-02-08 22:53 UTC (permalink / raw)
  To: Linus Torvalds; +Cc: linux-kernel, Oleg Verych

Hi,

On Thu, 8 Feb 2007, Linus Torvalds wrote:

> Historically, people used to do:
>  - /bin/sh was the "standard shell" (bash)
>  - /bin/[t]csh is what clueless weenies use for interactive work.
> 
> (Yeah, I'm not a [t]csh fan ;)
> 
> And you did break that.
> 
> It's quite possible that all modern distributions will install /bin/bash 
> as a link to /bin/sh, but I don't see the point of that particular change. 
> We aren't even all that bash-centric any more. If you have a 
> POSIX-compatible shell in /bin/sh, it really _should_ work. It just can't 
> be something really broken.

I don't quite understand, the Makefile doesn't care anymore about /bin/sh 
with this patch, the Makefile checks only for $BASH and /bin/bash 
(equivalent to adding "#! /bin/bash" to scripts) and if the latter fails 
it's possible some of our scripts will fail. We could make sure that all 
our scripts are POSIX clean, but is it really worth the effort? It would 
make casual kbuild hacking only even more difficult, as one has to check 
it works with the various shells.

> > - proper quoting
> > - proper indentation
> 
> One thing I'm wondering about is whether we could have a "does this warn" 
> test. I guess you can do it with -Werror, but it might be nice to have 
> some tests for "does the -Wxyzzy flag warn also for proper code"

Adding something like try-compile should be possible, but we should be 
careful with this, the more checks we add the more work is done at every 
make invocation.

bye, Roman

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: The who needs reviews anyways [PATCH]
  2007-02-08 22:53   ` Roman Zippel
@ 2007-02-08 23:02     ` Linus Torvalds
  2007-02-08 23:20       ` Roman Zippel
  0 siblings, 1 reply; 13+ messages in thread
From: Linus Torvalds @ 2007-02-08 23:02 UTC (permalink / raw)
  To: Roman Zippel; +Cc: linux-kernel, Oleg Verych



On Thu, 8 Feb 2007, Roman Zippel wrote:

> I don't quite understand, the Makefile doesn't care anymore about /bin/sh 
> with this patch, the Makefile checks only for $BASH and /bin/bash 

Exactly. 

The point is, neither $BASH nor /bin/bash may be set.

If you run make while running tcsh, "BASH" won't be set. We've always just 
defaulted to doing /bin/sh. Doesn't really seem to be a problem.

		Linus

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Kbuild refactoring (Re: The who needs reviews anyways [PATCH])
  2007-02-08 21:48 The who needs reviews anyways [PATCH] Roman Zippel
  2007-02-08 22:05 ` Sam Ravnborg
  2007-02-08 22:22 ` Linus Torvalds
@ 2007-02-08 23:03 ` Oleg Verych
  2007-02-09  0:06 ` The who needs reviews anyways [PATCH] Andreas Schwab
  2007-02-09  5:22 ` Oleg Verych
  4 siblings, 0 replies; 13+ messages in thread
From: Oleg Verych @ 2007-02-08 23:03 UTC (permalink / raw)
  To: Roman Zippel; +Cc: Linus Torvalds, linux-kernel

On Thu, Feb 08, 2007 at 10:48:51PM +0100, Roman Zippel wrote:
[]
> - printf has other side effects, instead stop pretending we support 
>   something else than bash

Yes. With `%' in option strings there will be side effects.
I would suggest to use

    printf %s "$(1)"

with "paranoia mode on", and hope to do not forcing `bash'.

> - proper quoting
> - proper indentation
> 
> bye, Roman

Thanks.

____

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: The who needs reviews anyways [PATCH]
  2007-02-08 23:02     ` Linus Torvalds
@ 2007-02-08 23:20       ` Roman Zippel
  2007-02-09  2:29         ` Valdis.Kletnieks
  0 siblings, 1 reply; 13+ messages in thread
From: Roman Zippel @ 2007-02-08 23:20 UTC (permalink / raw)
  To: Linus Torvalds; +Cc: linux-kernel, Oleg Verych

Hi,

On Thu, 8 Feb 2007, Linus Torvalds wrote:

> On Thu, 8 Feb 2007, Roman Zippel wrote:
> 
> > I don't quite understand, the Makefile doesn't care anymore about /bin/sh 
> > with this patch, the Makefile checks only for $BASH and /bin/bash 
> 
> Exactly. 
> 
> The point is, neither $BASH nor /bin/bash may be set.

Is that really a problem? I think any system that has bash without 
/bin/bash is simply broken.

> If you run make while running tcsh, "BASH" won't be set. We've always just 
> defaulted to doing /bin/sh. Doesn't really seem to be a problem.

There are chances this is already broken anyway. We call external scripts 
using $(shell $(CONFIG_SHELL) ...), which ignores the "#! ..." setting.

bye, Roman

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: The who needs reviews anyways [PATCH]
  2007-02-08 21:48 The who needs reviews anyways [PATCH] Roman Zippel
                   ` (2 preceding siblings ...)
  2007-02-08 23:03 ` Kbuild refactoring (Re: The who needs reviews anyways [PATCH]) Oleg Verych
@ 2007-02-09  0:06 ` Andreas Schwab
  2007-02-09  1:21   ` Roman Zippel
  2007-02-09  5:22 ` Oleg Verych
  4 siblings, 1 reply; 13+ messages in thread
From: Andreas Schwab @ 2007-02-09  0:06 UTC (permalink / raw)
  To: Roman Zippel; +Cc: Linus Torvalds, linux-kernel, Oleg Verych

Roman Zippel <zippel@linux-m68k.org> writes:

> - printf has other side effects, instead stop pretending we support 
>   something else than bash

printf is a much better echo, but you need to use it properly as well.
Either use %s to print a literal string or %b to let it interpret escape
sequences.

Andreas.

-- 
Andreas Schwab, SuSE Labs, schwab@suse.de
SuSE Linux Products GmbH, Maxfeldstraße 5, 90409 Nürnberg, Germany
PGP key fingerprint = 58CA 54C7 6D53 942B 1756  01D3 44D5 214B 8276 4ED5
"And now for something completely different."

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: The who needs reviews anyways [PATCH]
  2007-02-09  0:06 ` The who needs reviews anyways [PATCH] Andreas Schwab
@ 2007-02-09  1:21   ` Roman Zippel
  0 siblings, 0 replies; 13+ messages in thread
From: Roman Zippel @ 2007-02-09  1:21 UTC (permalink / raw)
  To: Andreas Schwab; +Cc: Linus Torvalds, linux-kernel, Oleg Verych

Hi,

On Fri, 9 Feb 2007, Andreas Schwab wrote:

> Roman Zippel <zippel@linux-m68k.org> writes:
> 
> > - printf has other side effects, instead stop pretending we support 
> >   something else than bash
> 
> printf is a much better echo, but you need to use it properly as well.
> Either use %s to print a literal string or %b to let it interpret escape
> sequences.

Hmm, I didn't know about %b, which would indeed be another possibility 
here, although I think it would only make a real difference if we decided 
to make (and more importantly keep) all our scripts POSIX clean.

bye, Roman

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: The who needs reviews anyways [PATCH]
  2007-02-08 23:20       ` Roman Zippel
@ 2007-02-09  2:29         ` Valdis.Kletnieks
  0 siblings, 0 replies; 13+ messages in thread
From: Valdis.Kletnieks @ 2007-02-09  2:29 UTC (permalink / raw)
  To: Roman Zippel; +Cc: Linus Torvalds, linux-kernel, Oleg Verych

[-- Attachment #1: Type: text/plain, Size: 474 bytes --]

On Fri, 09 Feb 2007 00:20:49 +0100, Roman Zippel said:
> > The point is, neither $BASH nor /bin/bash may be set.
> 
> Is that really a problem? I think any system that has bash without 
> /bin/bash is simply broken.

If you're trying to bootstrap a Linux box onto a new platform from some
non-Linux Unixoid, it's possible that bash lives in $TOOLCHAIN/bin/bash.

But I see that even Solaris 9 has a bash 2.05 in /bin/bash, so I might be
talking out some odd orifice here.



[-- Attachment #2: Type: application/pgp-signature, Size: 226 bytes --]

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: The who needs reviews anyways [PATCH]
  2007-02-08 21:48 The who needs reviews anyways [PATCH] Roman Zippel
                   ` (3 preceding siblings ...)
  2007-02-09  0:06 ` The who needs reviews anyways [PATCH] Andreas Schwab
@ 2007-02-09  5:22 ` Oleg Verych
  2007-02-09 11:35   ` Roman Zippel
  4 siblings, 1 reply; 13+ messages in thread
From: Oleg Verych @ 2007-02-09  5:22 UTC (permalink / raw)
  To: Roman Zippel; +Cc: Linus Torvalds, linux-kernel

On Thu, Feb 08, 2007 at 10:48:51PM +0100, Roman Zippel wrote:
[]
> - printf has other side effects, instead stop pretending we support 
>   something else than bash

More on printf, `sh', tmpfiles.

As we know original problem is: something from binutils is removing
output files on failure. 

> -	  else if [ -x /bin/bash ]; then echo /bin/bash; \
> -	  else echo sh; fi ; fi)
> +	  else if [ -x /bin/bash ]; then echo /bin/bash; fi; fi)
> +ifeq ($(CONFIG_SHELL),)
> +$(error bash is required to build the kernel)
> +endif
> +SHELL := $(CONFIG_SHELL)

here is policy to have `bash' introduced, so due to original
issue, where `root' users ended with removed /dev/null, may policy to have
`non root' user to build kernel be added? Thus

this:
> +# output directory for tests below
> +TMPOUT := $(if $(KBUILD_EXTMOD),$(firstword $(KBUILD_EXTMOD))/)
[]
> +# try-run
> +# Usage: option = $(call try-run, $(CC)...-o "$$TMP",option-ok,otherwise)
> +# Exit code chooses option. "$$TMP" is can be used as temporary file and
> +# is automatically cleaned up.
> +try-run = $(shell set -e;		\
this:
> +	TMP="$(TMPOUT).$$$$.tmp";	\
[]
> +	if ($(1)) >/dev/null 2>&1;	\
> +	then echo "$(2)";		\
> +	else echo "$(3)";		\
> +	fi;				\
this:
> +	rm -f "$$TMP")

may be removed, and to make TMP=/dev/null? And to forget currently about
my silly symlinks, and this crappy sets of output files?

As for `printf', as i've wrote, only in case of % and quotes in
arguments, something else must be added to handle that. But i think, it's
paranoia.

> -as-instr = $(call checker-shell,\
> -   printf "$(1)" | $(CC) $(AFLAGS) -c -xassembler -o $$OUT -,$(2),$(3))

`printf $(1)' is pretty enough.

____

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: The who needs reviews anyways [PATCH]
  2007-02-09  5:22 ` Oleg Verych
@ 2007-02-09 11:35   ` Roman Zippel
  2007-02-09 21:42     ` Oleg Verych
  0 siblings, 1 reply; 13+ messages in thread
From: Roman Zippel @ 2007-02-09 11:35 UTC (permalink / raw)
  To: Oleg Verych; +Cc: Linus Torvalds, linux-kernel

Hi,

On Fri, 9 Feb 2007, Oleg Verych wrote:

> > -	  else if [ -x /bin/bash ]; then echo /bin/bash; \
> > -	  else echo sh; fi ; fi)
> > +	  else if [ -x /bin/bash ]; then echo /bin/bash; fi; fi)
> > +ifeq ($(CONFIG_SHELL),)
> > +$(error bash is required to build the kernel)
> > +endif
> > +SHELL := $(CONFIG_SHELL)
> 
> here is policy to have `bash' introduced, so due to original
> issue, where `root' users ended with removed /dev/null, may policy to have
> `non root' user to build kernel be added? Thus

I doubt gentoo user will like you for that and above is more a de facto 
requirement that bash is needed for kbuild. The alternative is to 
introduce a new policy that everything is POSIX clean.

> this:
> > +	rm -f "$$TMP")
> 
> may be removed, and to make TMP=/dev/null? And to forget currently about
> my silly symlinks, and this crappy sets of output files?

This still wouldn't work, as these tests are also done when running 'make 
install'.

> > -as-instr = $(call checker-shell,\
> > -   printf "$(1)" | $(CC) $(AFLAGS) -c -xassembler -o $$OUT -,$(2),$(3))
> 
> `printf $(1)' is pretty enough.

As Andreas suggested 'printf "%b" "$(1)"' would be the other alternative.

bye, Roman

^ permalink raw reply	[flat|nested] 13+ messages in thread

* Re: The who needs reviews anyways [PATCH]
  2007-02-09 11:35   ` Roman Zippel
@ 2007-02-09 21:42     ` Oleg Verych
  0 siblings, 0 replies; 13+ messages in thread
From: Oleg Verych @ 2007-02-09 21:42 UTC (permalink / raw)
  To: Roman Zippel; +Cc: Linus Torvalds, linux-kernel

On Fri, Feb 09, 2007 at 12:35:04PM +0100, Roman Zippel wrote:
[]
> > > +$(error bash is required to build the kernel)
> > > +endif
> > > +SHELL := $(CONFIG_SHELL)
> > 
> > here is policy to have `bash' introduced, so due to original
> > issue, where `root' users ended with removed /dev/null, may policy to have
> > `non root' user to build kernel be added? Thus
> 
> I doubt gentoo user will like you for that and above is more a de facto 
> requirement that bash is needed for kbuild. The alternative is to 
> introduce a new policy that everything is POSIX clean.

Bad thing is, that `man bash' has no clean line between `sh' and
bash-specific features. POSIX it or `common practice' doesn't matter,
one just must try to test shell scripts with `busybox' or any other `sh'
compatible shell.

> > this:
> > > +	rm -f "$$TMP")
> > 
> > may be removed, and to make TMP=/dev/null? And to forget currently about
> > my silly symlinks, and this crappy sets of output files?
> 
> This still wouldn't work, as these tests are also done when running 'make 
> install'.

and/or "make modules_install", and this must be fixed: to have only one
configuration-run. And then to use its results.

> > > -as-instr = $(call checker-shell,\
> > > -   printf "$(1)" | $(CC) $(AFLAGS) -c -xassembler -o $$OUT -,$(2),$(3))
> > 
> > `printf $(1)' is pretty enough.
> 
> As Andreas suggested 'printf "%b" "$(1)"' would be the other alternative.

It will not help against single double quote in $(1)

____

^ permalink raw reply	[flat|nested] 13+ messages in thread

end of thread, other threads:[~2007-02-09 21:33 UTC | newest]

Thread overview: 13+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2007-02-08 21:48 The who needs reviews anyways [PATCH] Roman Zippel
2007-02-08 22:05 ` Sam Ravnborg
2007-02-08 22:22 ` Linus Torvalds
2007-02-08 22:53   ` Roman Zippel
2007-02-08 23:02     ` Linus Torvalds
2007-02-08 23:20       ` Roman Zippel
2007-02-09  2:29         ` Valdis.Kletnieks
2007-02-08 23:03 ` Kbuild refactoring (Re: The who needs reviews anyways [PATCH]) Oleg Verych
2007-02-09  0:06 ` The who needs reviews anyways [PATCH] Andreas Schwab
2007-02-09  1:21   ` Roman Zippel
2007-02-09  5:22 ` Oleg Verych
2007-02-09 11:35   ` Roman Zippel
2007-02-09 21:42     ` Oleg Verych

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.