[Buildroot] [RFC PATCH 2/3] make: Drop `type -p ...' fallback

Cyril Bur cyrilbur at gmail.com
Thu Nov 11 11:20:50 UTC 2021


On Thu, 11 Nov 2021 09:13:39 +0100
"Yann E. MORIN" <yann.morin.1998 at free.fr> wrote:

> Cyril, All,
> 
> On 2021-10-28 14:52 +0100, Cyril Bur spake thusly:
> > On Tue, 12 Oct 2021 00:00:24 +0200
> > Petr Vorel <petr.vorel at gmail.com> wrote:
> >   
> > > `command -v' is good enough as it's POSIX.
> > > For easier debugging previous problems removed separately.
> > >   
> > 
> > On doing some reading[1] I've discovered that this is a minefield.  
> 
> Hmm.. A very long history lesson. Thanks! :-)
> 
> > Having said that, I'm pretty sure what currently happens isn't
> > good either.
> > 
> > My only concern might be that theres old RHEL (its always RHEL ;))  
> 
> **jiggles**


I'll add that I have tried to test on the old RHEL VM that colleagues
insist on still using and the build doesn't work, no fault of BR though.
I suspect that all working directories are actualy mounted on top of a
FAT or some funky windows share (I can't see the underlying store) so
`cp -p ...` fails because the unlieing store (whatever it is) can't do
the correct permissions (educated guess). I can't remember which
package (I think perhaps libc) uses these copies so they fail.

Yes I did try to run out of a tmpfs but didn't have access to one big
enough.

I don't expect a fix, just thought I'd make you aware. Also, just to be
clear those problems are obviously nothing to do with this patch or
series!

> 
> > systems out there which could break. Some of my coleagues use old
> > RHEL VMs for their build machines. I'm going to try and see if I
> > can get access but I wouldn't hold up the patch waiting.
> > 
> > I've given this patch applied with the previous one a test and is
> > working fine on my system. I'm wondering if my tested by tag is
> > appropriate for the previous patch since I haven't tested it in
> > isolation.  
> 
> A tested-by tag is always welcome: it means some people were
> interested enough that they went off their daily lives and took time
> to test the patch.
> 

Glad to be of assistance.

Cyril

> Thaks!
> 
> Regards,
> Yann E. MORIN.
> 
> > uname -a
> > Linux 5.14.12-arch1-1 #1 SMP PREEMPT Wed, 13 Oct 2021 16:58:16
> > +0000 x86_64 GNU/Linux
> > 
> > make --version
> > GNU Make 4.3
> > Built for x86_64-pc-linux-gnu
> > 
> > /bin/sh --version
> > GNU bash, version 5.1.8(1)-release (x86_64-pc-linux-gnu)
> > 
> > [1]
> > https://unix.stackexchange.com/questions/85249/why-not-use-which-what-to-use-then
> > 
> > Tested-by: Cyril Bur <cyrilbur at gmail.com>
> > Reviewed-by: Cyril Bur <cyrilbur at gmail.com>  
> > > Signed-off-by: Petr Vorel <petr.vorel at gmail.com>  
> > 
> > 
> >   
> > > ---
> > >  Makefile            | 22 +++++++++++-----------
> > >  package/Makefile.in |  6 +++---
> > >  2 files changed, 14 insertions(+), 14 deletions(-)
> > > 
> > > diff --git a/Makefile b/Makefile
> > > index 2317655272..81b7173974 100644
> > > --- a/Makefile
> > > +++ b/Makefile
> > > @@ -284,12 +284,12 @@ HOSTAS := as
> > >  endif
> > >  ifndef HOSTCC
> > >  HOSTCC := gcc
> > > -HOSTCC := $(shell $(SHELL) -c "command -v '$(HOSTCC)' || type -p
> > > '$(HOSTCC)' || echo gcc") +HOSTCC := $(shell $(SHELL) -c "command
> > > -v '$(HOSTCC)' || echo gcc") endif
> > >  HOSTCC_NOCCACHE := $(HOSTCC)
> > >  ifndef HOSTCXX
> > >  HOSTCXX := g++
> > > -HOSTCXX := $(shell $(SHELL) -c "command -v '$(HOSTCXX)' || type
> > > -p '$(HOSTCXX)' || echo g++") +HOSTCXX := $(shell $(SHELL) -c
> > > "command -v '$(HOSTCXX)' || echo g++") endif
> > >  HOSTCXX_NOCCACHE := $(HOSTCXX)
> > >  ifndef HOSTCPP
> > > @@ -310,15 +310,15 @@ endif
> > >  ifndef HOSTRANLIB
> > >  HOSTRANLIB := ranlib
> > >  endif
> > > -HOSTAR := $(shell '$(SHELL)' -c "command -v '$(HOSTAR)' || type
> > > -p '$(HOSTAR)' || echo ar") -HOSTAS := $(shell '$(SHELL)' -c
> > > "command -v '$(HOSTAS)' || type -p '$(HOSTAS)' || echo as")
> > > -HOSTCPP := $(shell '$(SHELL)' -c "command -v '$(HOSTCPP)' ||
> > > type -p '$(HOSTCPP)' || echo cpp") -HOSTLD := $(shell '$(SHELL)'
> > > -c "command -v '$(HOSTLD)' || type -p '$(HOSTLD)' || echo ld")
> > > -HOSTLN := $(shell '$(SHELL)' -c "command -v '$(HOSTLN)' || type
> > > -p '$(HOSTLN)' || echo ln") -HOSTNM := $(shell '$(SHELL)' -c
> > > "command -v '$(HOSTNM)' || type -p '$(HOSTNM)' || echo nm")
> > > -HOSTOBJCOPY := $(shell '$(SHELL)' -c "command -v
> > > '$(HOSTOBJCOPY)' || type -p '$(HOSTOBJCOPY)' || echo objcopy")
> > > -HOSTRANLIB := $(shell '$(SHELL)' -c "command -v '$(HOSTRANLIB)'
> > > || type -p '$(HOSTRANLIB)' || echo ranlib") -SED := $(shell
> > > $(SHELL) -c "command -v sed || type -p sed") -i -e +HOSTAR :=
> > > $(shell '$(SHELL)' -c "command -v '$(HOSTAR)' || echo ar")
> > > +HOSTAS := $(shell '$(SHELL)' -c "command -v '$(HOSTAS)' || echo
> > > as") +HOSTCPP := $(shell '$(SHELL)' -c "command -v '$(HOSTCPP)'
> > > || echo cpp") +HOSTLD := $(shell '$(SHELL)' -c "command -v
> > > '$(HOSTLD)' || echo ld") +HOSTLN := $(shell '$(SHELL)' -c
> > > "command -v '$(HOSTLN)' || echo ln") +HOSTNM := $(shell
> > > '$(SHELL)' -c "command -v '$(HOSTNM)' || echo nm") +HOSTOBJCOPY
> > > := $(shell '$(SHELL)' -c "command -v '$(HOSTOBJCOPY)' || echo
> > > objcopy") +HOSTRANLIB := $(shell '$(SHELL)' -c "command -v
> > > '$(HOSTRANLIB)' || echo ranlib") +SED := $(shell $(SHELL) -c
> > > "command -v sed") -i -e export HOSTAR HOSTAS HOSTCC HOSTCXX
> > > HOSTLD export HOSTCC_NOCCACHE HOSTCXX_NOCCACHE diff --git
> > > a/package/Makefile.in b/package/Makefile.in index
> > > 2ba4d8b381..4e993ecd5f 100644 --- a/package/Makefile.in +++
> > > b/package/Makefile.in @@ -4,7 +4,7 @@ endif ifndef HOSTMAKE
> > > HOSTMAKE = $(MAKE) endif -HOSTMAKE := $(shell $(SHELL) -c
> > > "command -v '$(HOSTMAKE)' || type -p '$(HOSTMAKE)' || echo make")
> > > +HOSTMAKE := $(shell $(SHELL) -c "command -v '$(HOSTMAKE)' ||
> > > echo make") # If BR2_JLEVEL is 0, scale the maximum concurrency
> > > with the number of # CPUs. An additional job is used in order to
> > > keep processors busy @@ -222,8 +222,8 @@ else
> > >  TARGET_STRIP = /bin/true
> > >  STRIPCMD = $(TARGET_STRIP)
> > >  endif
> > > -INSTALL := $(shell $(SHELL) -c "command -v install || type -p
> > > install") -UNZIP := $(shell $(SHELL) -c "command -v unzip || type
> > > -p unzip") -q +INSTALL := $(shell $(SHELL) -c "command -v
> > > install") +UNZIP := $(shell $(SHELL) -c "command -v unzip") -q
> > >  
> > >  APPLY_PATCHES = PATH=$(HOST_DIR)/bin:$$PATH
> > > support/scripts/apply-patches.sh $(if $(QUIET),-s)   
> > 
> > _______________________________________________
> > buildroot mailing list
> > buildroot at buildroot.org
> > https://lists.buildroot.org/mailman/listinfo/buildroot  
> 



More information about the buildroot mailing list