diff mbox

kbuild: /bin/pwd -> pwd

Message ID 20170724142047.3679-1-bjorn.forsman@gmail.com (mailing list archive)
State New, archived
Headers show

Commit Message

Bjørn Forsman July 24, 2017, 2:20 p.m. UTC
Several places already use pwd and rely on $PATH lookup. Moving the
remaining /bin/pwd users over for consistency.

Also, a reason for doing /bin/pwd -> pwd instead of the other way around
is because I believe build systems should make little assumptions on host
filesystem layout. Case in point, we do this kind of patching already in
NixOS.

Signed-off-by: Bjørn Forsman <bjorn.forsman@gmail.com>
---
 Documentation/ia64/xen.txt |  2 +-
 Makefile                   | 10 +++++-----
 scripts/gdb/linux/Makefile |  2 +-
 3 files changed, 7 insertions(+), 7 deletions(-)

Comments

Masahiro Yamada Aug. 12, 2017, 3:26 a.m. UTC | #1
Hi.


2017-07-24 23:20 GMT+09:00 Bjørn Forsman <bjorn.forsman@gmail.com>:
> Several places already use pwd and rely on $PATH lookup. Moving the
> remaining /bin/pwd users over for consistency.
>
> Also, a reason for doing /bin/pwd -> pwd instead of the other way around
> is because I believe build systems should make little assumptions on host
> filesystem layout. Case in point, we do this kind of patching already in
> NixOS.
>
> Signed-off-by: Bjørn Forsman <bjorn.forsman@gmail.com>


Kbuild conventionally used  $(shell cd foo/bar && /bin/pwd)
to get the absolute path because the minimum supported
GNU Makefile version was 3.80 and $(abspath ...) is only supported
by 3.81 or later.


Commit 37d69ee3080 bumped the min version to 3.81,
so it is legitimate to use $(abspath ).

Could you use $(abspath ...) instead of $(shell cd ... && /bin/pwd) ?






> ---
>  Documentation/ia64/xen.txt |  2 +-
>  Makefile                   | 10 +++++-----
>  scripts/gdb/linux/Makefile |  2 +-
>  3 files changed, 7 insertions(+), 7 deletions(-)
>
> diff --git a/Documentation/ia64/xen.txt b/Documentation/ia64/xen.txt
> index c61a99f7c8bb..a12c74ce2773 100644
> --- a/Documentation/ia64/xen.txt
> +++ b/Documentation/ia64/xen.txt
> @@ -41,7 +41,7 @@ Getting and Building Xen and Dom0
>
>   5. make initrd for Dom0/DomU
>      # make -C linux-2.6.18-xen.hg ARCH=ia64 modules_install \
> -      O=$(/bin/pwd)/build-linux-2.6.18-xen_ia64
> +      O=$(pwd)/build-linux-2.6.18-xen_ia64
>      # mkinitrd -f /boot/efi/efi/redhat/initrd-2.6.18.8-xen.img \
>        2.6.18.8-xen --builtin mptspi --builtin mptbase \
>        --builtin mptscsih --builtin uhci-hcd --builtin ohci-hcd \
> diff --git a/Makefile b/Makefile
> index b4fb9a1d1594..64e72eba5701 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -131,7 +131,7 @@ ifneq ($(KBUILD_OUTPUT),)
>  # check that the output directory actually exists
>  saved-output := $(KBUILD_OUTPUT)
>  KBUILD_OUTPUT := $(shell mkdir -p $(KBUILD_OUTPUT) && cd $(KBUILD_OUTPUT) \
> -                                                               && /bin/pwd)
> +                                                               && pwd)
>  $(if $(KBUILD_OUTPUT),, \
>       $(error failed to create output directory "$(saved-output)"))

This one should use $(realpath ...) instead of $(abspath ...), I think.

The difference between them is that
$(realpath ...) returns an empty string if the given path does not exist.







> @@ -978,7 +978,7 @@ ifdef CONFIG_HEADERS_CHECK
>         $(Q)$(MAKE) -f $(srctree)/Makefile headers_check
>  endif
>  ifdef CONFIG_GDB_SCRIPTS
> -       $(Q)ln -fsn `cd $(srctree) && /bin/pwd`/scripts/gdb/vmlinux-gdb.py
> +       $(Q)ln -fsn `cd $(srctree) && pwd`/scripts/gdb/vmlinux-gdb.py
>  endif
>  ifdef CONFIG_TRIM_UNUSED_KSYMS
>         $(Q)$(CONFIG_SHELL) $(srctree)/scripts/adjust_autoksyms.sh \
> @@ -1237,7 +1237,7 @@ _modinst_:
>         @rm -rf $(MODLIB)/kernel
>         @rm -f $(MODLIB)/source
>         @mkdir -p $(MODLIB)/kernel
> -       @ln -s `cd $(srctree) && /bin/pwd` $(MODLIB)/source
> +       @ln -s `cd $(srctree) && pwd` $(MODLIB)/source
>         @if [ ! $(objtree) -ef  $(MODLIB)/build ]; then \
>                 rm -f $(MODLIB)/build ; \
>                 ln -s $(CURDIR) $(MODLIB)/build ; \
> @@ -1629,11 +1629,11 @@ image_name:
>  # Clear a bunch of variables before executing the submake
>  tools/: FORCE
>         $(Q)mkdir -p $(objtree)/tools
> -       $(Q)$(MAKE) LDFLAGS= MAKEFLAGS="$(tools_silent) $(filter --j% -j,$(MAKEFLAGS))" O=$(shell cd $(objtree) && /bin/pwd) subdir=tools -C $(src)/tools/
> +       $(Q)$(MAKE) LDFLAGS= MAKEFLAGS="$(tools_silent) $(filter --j% -j,$(MAKEFLAGS))" O=$(shell cd $(objtree) && pwd) subdir=tools -C $(src)/tools/
>
>  tools/%: FORCE
>         $(Q)mkdir -p $(objtree)/tools
> -       $(Q)$(MAKE) LDFLAGS= MAKEFLAGS="$(tools_silent) $(filter --j% -j,$(MAKEFLAGS))" O=$(shell cd $(objtree) && /bin/pwd) subdir=tools -C $(src)/tools/ $*
> +       $(Q)$(MAKE) LDFLAGS= MAKEFLAGS="$(tools_silent) $(filter --j% -j,$(MAKEFLAGS))" O=$(shell cd $(objtree) && pwd) subdir=tools -C $(src)/tools/ $*
>
>  # Single targets
>  # ---------------------------------------------------------------------------
> diff --git a/scripts/gdb/linux/Makefile b/scripts/gdb/linux/Makefile
> index 8b00031f5349..f1ac5db46932 100644
> --- a/scripts/gdb/linux/Makefile
> +++ b/scripts/gdb/linux/Makefile
> @@ -1,6 +1,6 @@
>  always := gdb-scripts
>
> -SRCTREE := $(shell cd $(srctree) && /bin/pwd)
> +SRCTREE := $(shell cd $(srctree) && pwd)
>
>  $(obj)/gdb-scripts:
>  ifneq ($(KBUILD_SRC),)
> --
> 2.12.2
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-kbuild" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
Bjørn Forsman Aug. 12, 2017, noon UTC | #2
Hi,

On 12 August 2017 at 05:26, Masahiro Yamada
<yamada.masahiro@socionext.com> wrote:
> Hi.
>
> 2017-07-24 23:20 GMT+09:00 Bjørn Forsman <bjorn.forsman@gmail.com>:
>> Several places already use pwd and rely on $PATH lookup. Moving the
>> remaining /bin/pwd users over for consistency.
>>
>> Also, a reason for doing /bin/pwd -> pwd instead of the other way around
>> is because I believe build systems should make little assumptions on host
>> filesystem layout. Case in point, we do this kind of patching already in
>> NixOS.
> [...]
> Could you use $(abspath ...) instead of $(shell cd ... && /bin/pwd) ?
> [...]
> This one should use $(realpath ...) instead of $(abspath ...), I think.
>
> The difference between them is that
> $(realpath ...) returns an empty string if the given path does not exist.

That sounds like possibly changing semantics. I'd prefer to keep the
patch as is, since I'm not familiar with the side effects of inserting
relative vs absolute paths here. Is that OK for you?

Best regards,
Bjørn Forsman
--
To unsubscribe from this list: send the line "unsubscribe linux-kbuild" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Masahiro Yamada Aug. 16, 2017, 3:31 p.m. UTC | #3
Hi.


2017-08-12 21:00 GMT+09:00 Bjørn Forsman <bjorn.forsman@gmail.com>:
> Hi,
>
> On 12 August 2017 at 05:26, Masahiro Yamada
> <yamada.masahiro@socionext.com> wrote:
>> Hi.
>>
>> 2017-07-24 23:20 GMT+09:00 Bjørn Forsman <bjorn.forsman@gmail.com>:
>>> Several places already use pwd and rely on $PATH lookup. Moving the
>>> remaining /bin/pwd users over for consistency.
>>>
>>> Also, a reason for doing /bin/pwd -> pwd instead of the other way around
>>> is because I believe build systems should make little assumptions on host
>>> filesystem layout. Case in point, we do this kind of patching already in
>>> NixOS.
>> [...]
>> Could you use $(abspath ...) instead of $(shell cd ... && /bin/pwd) ?
>> [...]
>> This one should use $(realpath ...) instead of $(abspath ...), I think.
>>
>> The difference between them is that
>> $(realpath ...) returns an empty string if the given path does not exist.
>
> That sounds like possibly changing semantics. I'd prefer to keep the
> patch as is, since I'm not familiar with the side effects of inserting
> relative vs absolute paths here. Is that OK for you?
>

I prefer abspath/realpath.

If you are reluctant to do it, I will take a look.
Bjørn Forsman Aug. 16, 2017, 4:14 p.m. UTC | #4
On 16 August 2017 at 17:31, Masahiro Yamada
<yamada.masahiro@socionext.com> wrote:
> 2017-08-12 21:00 GMT+09:00 Bjørn Forsman <bjorn.forsman@gmail.com>:
>> On 12 August 2017 at 05:26, Masahiro Yamada <yamada.masahiro@socionext.com> wrote:
>>> [...]
>>> The difference between them is that
>>> $(realpath ...) returns an empty string if the given path does not exist.
>>
>> That sounds like possibly changing semantics. I'd prefer to keep the
>> patch as is, since I'm not familiar with the side effects of inserting
>> relative vs absolute paths here. Is that OK for you?
>
> I prefer abspath/realpath.
>
> If you are reluctant to do it, I will take a look.

Yes please. I only care about getting rid of /bin/pwd (absolute path).

Best regards,
Bjørn Forsman
--
To unsubscribe from this list: send the line "unsubscribe linux-kbuild" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
diff mbox

Patch

diff --git a/Documentation/ia64/xen.txt b/Documentation/ia64/xen.txt
index c61a99f7c8bb..a12c74ce2773 100644
--- a/Documentation/ia64/xen.txt
+++ b/Documentation/ia64/xen.txt
@@ -41,7 +41,7 @@  Getting and Building Xen and Dom0
 
  5. make initrd for Dom0/DomU
     # make -C linux-2.6.18-xen.hg ARCH=ia64 modules_install \
-      O=$(/bin/pwd)/build-linux-2.6.18-xen_ia64
+      O=$(pwd)/build-linux-2.6.18-xen_ia64
     # mkinitrd -f /boot/efi/efi/redhat/initrd-2.6.18.8-xen.img \
       2.6.18.8-xen --builtin mptspi --builtin mptbase \
       --builtin mptscsih --builtin uhci-hcd --builtin ohci-hcd \
diff --git a/Makefile b/Makefile
index b4fb9a1d1594..64e72eba5701 100644
--- a/Makefile
+++ b/Makefile
@@ -131,7 +131,7 @@  ifneq ($(KBUILD_OUTPUT),)
 # check that the output directory actually exists
 saved-output := $(KBUILD_OUTPUT)
 KBUILD_OUTPUT := $(shell mkdir -p $(KBUILD_OUTPUT) && cd $(KBUILD_OUTPUT) \
-								&& /bin/pwd)
+								&& pwd)
 $(if $(KBUILD_OUTPUT),, \
      $(error failed to create output directory "$(saved-output)"))
 
@@ -978,7 +978,7 @@  ifdef CONFIG_HEADERS_CHECK
 	$(Q)$(MAKE) -f $(srctree)/Makefile headers_check
 endif
 ifdef CONFIG_GDB_SCRIPTS
-	$(Q)ln -fsn `cd $(srctree) && /bin/pwd`/scripts/gdb/vmlinux-gdb.py
+	$(Q)ln -fsn `cd $(srctree) && pwd`/scripts/gdb/vmlinux-gdb.py
 endif
 ifdef CONFIG_TRIM_UNUSED_KSYMS
 	$(Q)$(CONFIG_SHELL) $(srctree)/scripts/adjust_autoksyms.sh \
@@ -1237,7 +1237,7 @@  _modinst_:
 	@rm -rf $(MODLIB)/kernel
 	@rm -f $(MODLIB)/source
 	@mkdir -p $(MODLIB)/kernel
-	@ln -s `cd $(srctree) && /bin/pwd` $(MODLIB)/source
+	@ln -s `cd $(srctree) && pwd` $(MODLIB)/source
 	@if [ ! $(objtree) -ef  $(MODLIB)/build ]; then \
 		rm -f $(MODLIB)/build ; \
 		ln -s $(CURDIR) $(MODLIB)/build ; \
@@ -1629,11 +1629,11 @@  image_name:
 # Clear a bunch of variables before executing the submake
 tools/: FORCE
 	$(Q)mkdir -p $(objtree)/tools
-	$(Q)$(MAKE) LDFLAGS= MAKEFLAGS="$(tools_silent) $(filter --j% -j,$(MAKEFLAGS))" O=$(shell cd $(objtree) && /bin/pwd) subdir=tools -C $(src)/tools/
+	$(Q)$(MAKE) LDFLAGS= MAKEFLAGS="$(tools_silent) $(filter --j% -j,$(MAKEFLAGS))" O=$(shell cd $(objtree) && pwd) subdir=tools -C $(src)/tools/
 
 tools/%: FORCE
 	$(Q)mkdir -p $(objtree)/tools
-	$(Q)$(MAKE) LDFLAGS= MAKEFLAGS="$(tools_silent) $(filter --j% -j,$(MAKEFLAGS))" O=$(shell cd $(objtree) && /bin/pwd) subdir=tools -C $(src)/tools/ $*
+	$(Q)$(MAKE) LDFLAGS= MAKEFLAGS="$(tools_silent) $(filter --j% -j,$(MAKEFLAGS))" O=$(shell cd $(objtree) && pwd) subdir=tools -C $(src)/tools/ $*
 
 # Single targets
 # ---------------------------------------------------------------------------
diff --git a/scripts/gdb/linux/Makefile b/scripts/gdb/linux/Makefile
index 8b00031f5349..f1ac5db46932 100644
--- a/scripts/gdb/linux/Makefile
+++ b/scripts/gdb/linux/Makefile
@@ -1,6 +1,6 @@ 
 always := gdb-scripts
 
-SRCTREE := $(shell cd $(srctree) && /bin/pwd)
+SRCTREE := $(shell cd $(srctree) && pwd)
 
 $(obj)/gdb-scripts:
 ifneq ($(KBUILD_SRC),)