> > Given that python2 has gone the way of the dodo perhaps petsc should be 
> > looking for python3 over python2.

I'm not sure what would be common across distros/OSes wrt /usr/bin/python - one 
shouldn't assume this is always python2 [and that it won't exist for python3 
only installs]

I have:

balay@sb /home/balay
$ /usr/bin/python --version
Python 3.7.6

Satish


On Fri, 17 Apr 2020, Jacob Faibussowitsch wrote:

> > And what if someone is running on a (perhaps old) Linux distro that does 
> > not have python3 installed by default?
> 
> The idea would be to find both but prefer python3, but that’s infeasible 
> inside configure without a separate pre-configure configure to write 
> “configure.py" or virtual-env.
> 
> > for pyimpls in python3 python2 python /usr/bin/python /usr/bin/env python ; 
> > do
> > command -v > /dev/null $pyimpls && exec $pyimpls $0 "$@“
> 
> > And there  you have, you are trying to check for '/usr/bin/env python', but 
> > the shell code you wrote will not work the way you are expecting.
> > Also, unless you are running on a funny environment that does not have 
> > /usr/bin/ in $PATH, the trial for 'python' should be enough, and the 
> > /usr/bin/python /usr/bin/env python look redundant. Am I missing something?
> 
> This line checks if pyimpls exists in order, and then runs pyimpls 
> ./configure so if any of the previous pyimpls exist then it doesn’t check the 
> rest. The last “ should be a regular quotation mark. If it finds a working 
> python it runs configure once then exits, instead of continuing through the 
> rest of the list.
> 
> > "Echo" ? Are you really running this on Ubuntu? 
> 
> Auto-correct strikes again :(. It is “echo” in my script.
> 
> > BTW, Are you aware of the behavior of `command -v` with shell aliases?
> 
> No, this is a good point you bring up. I tried using the option -p from the 
> manpage but that also doesn’t seem to skip aliases. Not sure how this can be 
> addressed, seems like escaping pyimpls using \ or ‘ or “ doesn’t fix this 
> either...
> 
> > -p    use a default value for PATH that is guaranteed to find all of
> >             the standard utilities
> 
> To be clear I’m not saying my script is a change petsc should adopt, hence no 
> MR. It is a hack and a half, and likely doesn’t work on some of the other 
> shells as well as a whole host of portability problems. It's more-so to 
> foster discussion, and see if anyone else has a cleaner automatic form.
> 
> Best regards,
> 
> Jacob Faibussowitsch
> (Jacob Fai - booss - oh - vitch)
> Cell: (312) 694-3391
> 
> > On Apr 17, 2020, at 4:21 PM, Lisandro Dalcin <[email protected]> wrote:
> > 
> > 
> > 
> > On Fri, 17 Apr 2020 at 20:41, Jacob Faibussowitsch <[email protected] 
> > <mailto:[email protected]>> wrote:
> > Hello All,
> > 
> > I use an Ubuntu docker image based on jedbrown/mpich-ccache and ran into 
> > the following error (Dockerfile attached as well).
> > 
> > If in a user only has python3 installed and not python2 then 
> > /usr/bin/python doesn’t exist.
> > 
> > And what if someone is running on a (perhaps old) Linux distro that does 
> > not have python3 installed by default?
> > 
> > Given that python2 has gone the way of the dodo perhaps petsc should be 
> > looking for python3 over python2. This is a somewhat funky but functioning 
> > implementation that replaces the shebang line in configure that I have been 
> > using to default to python3. I don’t know how portable it is however, I 
> > believe “command" is not universally available in every shell?
> > #!/bin/sh
> > # “”” is comment in python, and : is noop in shell so this configure can be 
> > run as ./configure and python2.7 ./configure
> > """:"
> > 
> > This kind of trickery may be fragile...
> >  
> > # Find the right python implementation, check by sending it on over to dave
> > for pyimpls in python3 python2 python /usr/bin/python /usr/bin/env python ; 
> > do
> > 
> > And there  you have, you are trying to check for '/usr/bin/env python', but 
> > the shell code you wrote will not work the way you are expecting.
> > Also, unless you are running on a funny environment that does not have 
> > /usr/bin/ in $PATH, the trial for 'python' should be enough, and the 
> > /usr/bin/python /usr/bin/env python look redundant. Am I missing something?
> >  
> >    command -v > /dev/null $pyimpls && exec $pyimpls $0 "$@“
> > 
> > And the last quote the line above is likely wrong, it is an unicode 
> > character.
> >  
> > done
> > # Error code in case things go awry 
> > Echo “PYTHON NOT FOUND” >2
> > 
> > "Echo" ? Are you really running this on Ubuntu? 
> > Or you just hacked in on macOS and assumed that it will work everywhere? 
> > 
> > BTW, Are you aware of the behavior of `command -v` with shell aliases?
> > 
> > $ alias python=python3
> > $ command -v python
> > alias python='python3'
> > 
> > 
> > -- 
> > Lisandro Dalcin
> > ============
> > Research Scientist
> > Extreme Computing Research Center (ECRC)
> > King Abdullah University of Science and Technology (KAUST)
> > http://ecrc.kaust.edu.sa/ <http://ecrc.kaust.edu.sa/>
> 
> 

Reply via email to