public inbox for devel@edk2.groups.io
 help / color / mirror / Atom feed
From: tlaronde@polynum.com
To: Rebecca Cran <quic_rcran@quicinc.com>
Cc: devel@edk2.groups.io, pedro.falcato@gmail.com
Subject: Re: [edk2-devel] edksetup.sh: fix for non POSIX whereis(1)
Date: Tue, 22 Nov 2022 17:26:16 +0100	[thread overview]
Message-ID: <Y3z4KBz4T2k/U3gX@polynum.com> (raw)
In-Reply-To: <0bb285e2-ca66-f78a-7da9-ffd13473b61a@quicinc.com>

Le Tue, Nov 22, 2022 at 08:40:30AM -0700, Rebecca Cran a écrit :
> On 11/21/22 15:22, Pedro Falcato wrote:
> 
> > I kind of dislike your solution. Does NetBSD ship /bin/which by default?
> > I think replacing whereis with "which -a" would be a lot better.
> > I don't think there's a 100% standard way to do this in POSIX, as which
> > isn't POSIX either, and your solution seems... hacky?
> 
> 
> "command" seems to be the POSIX way to do this?
> https://pubs.opengroup.org/onlinepubs/9699919799/
> 
> Though "whereis python3" shows the following on my system:
> 
> python3: /usr/bin/python3.9-config /usr/bin/python3.9 /usr/bin/python3
> /usr/lib/python3.9 /usr/lib/python3 /etc/python3.9 /etc/python3
> /usr/local/lib/python3.9 /usr/include/python3.9 /usr/share/python3
> /usr/share/man/man1/python3.1.gz
> 
> "which -a python3" returns:
> 
> /usr/bin/python3
> /bin/python3
> 
> And "command -p -v" returns:
> 
> /bin/python3
> 
> I don't know if we need all the results from "whereis"?

The problem is when one does not know which exact version of python
is here and how, exactly, the command is named.

whereis(1) returns whatever command with python3 as prefix, while
command or "which -a" will return only exactly python3. If, on the
system, python is fully version qualified (as is the case with
pkgsrc, the opt packages framework, used on NetBSD):

which -a python3

will return nothing, since, it is python3.9 for example on the OS.


There is a way to manipulate the namespace, since edk2setup.sh sets
environment and looks, by default, in some directories, but I have
respected the logics here: since whereis(1) is used to find a python3
related command in the PATH, even if it is named python3.x, the simplest
is to provide a basic whereis implementation in the script itself. Or,
changing the behavior, will perhaps break existing installation handling
the builds.
-- 
        Thierry Laronde <tlaronde +AT+ polynum +dot+ com>
                     http://www.kergis.com/
                    http://kertex.kergis.com/
Key fingerprint = 0FF7 E906 FBAF FE95 FD89  250D 52B1 AE95 6006 F40C

  parent reply	other threads:[~2022-11-22 16:26 UTC|newest]

Thread overview: 8+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-11-21 13:09 edksetup.sh: fix for non POSIX whereis(1) tlaronde
2022-11-21 22:22 ` [edk2-devel] " Pedro Falcato
2022-11-22  8:14   ` tlaronde
2022-11-22 15:40   ` Rebecca Cran
2022-11-22 16:22     ` Pedro Falcato
2022-11-22 16:26     ` tlaronde [this message]
2022-11-22 16:31       ` Pedro Falcato
2022-11-22 17:07         ` tlaronde

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-list 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=Y3z4KBz4T2k/U3gX@polynum.com \
    --to=devel@edk2.groups.io \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox