Print

Print


On 1/3/14 7:16 , Fabrice Jammes wrote:
> Hello Mario,
> 
> Thanks for your answer, it's clearer now.
> I agree with you on everything, but I've still got one point to clarify.
> 

...[snip of discussion about SYSPYTHON]...

Fabrice,
	OK, I understand now. I think it's a good solution. Here's how I'd
propose you restructure your patch to implement that idea:

* Rename your @SYSTEM_PYTHON@ macro to @EUPS_PYTHON@

* Add an option '--with-python' to configure.ac, which will set a
  variable EUPS_PYTHON and make it default to /usr/bin/python when not
  given. That way, when the user installs eups they're guaranteed
  to pick up the system python, or they're *forced* to be explicit
  about which one they want used.

* Then, use this value to expand your the @EUPS_PYTHON@ macros on
  various hash-bang (#!) lines.

* Also, have EUPS export EUPS_PYTHON environment variable whenever it
  is setup. You'll need to modify both the bin/setups.* scripts, and
  ups/eups.table.in (add an 'envSet(EUPS_PYTHON, @SYSTEM_PYTHON@)' to
  the latter), and expand it as with the makefiles. This allows one to
  query which Python is EUPS using.

The logic behind this is that EUPS will always default to system python
(/usr/bin/python). If the user wants something different, they have to
be _explicit_ about it. And if someone wants to distribute EUPS via eups
(say, using eupspkg scripts), they'd configure it as:

  CONFIGURE_OPTIONS='--prefix=$PREFIX --with-python=$EUPS_PYTHON'

which would ensure the new EUPS inherits the old EUPS' python.

What do you (and Robert!) think?

PS: An alternative to the third bullet is to add a new verb to EUPS,
say, 'eups python' (or, better, 'eups show python'), which would return
the interpreter that EUPS is using (basically, just 'print
sys.executable'). Another alternative is to a new script to bin/
directory, named (say) 'eups_python':

	cat eups_python
	#!@EUPS_PYTHON@
	import sys
	print sys.executable

I don't have a strong opinion which one of these three is best (the
middle one is probably most work). Probably the original one.

- M.

> 
> Removing "-S" is an other solution which works well in this precise case
> (i.e. virtualenv/eups), but I think the first one is more general, and
> may solve more compatibility problems.
> Furthermore, for now, I can't see any drawbacks in this solution.
> 

I agree with your solution, but I'm nevertheless uneasy about using
blunt tools (-S) unless there's no other way. As you've found out with
virtualenv, there are good reasons why site-specific imports shouldn't
be disabled.

> 
> P.S. : i've merged this minor feature with eupspkg (using last version
> of https://github.com/RobertLuptonTheGood/eups), and then try to launch
> qserv install procedure prototype. And, good news, it works successfully ;-)

Good to hear that!
-- 
Mario Juric,
Data Mgmt. Project Scientist, Large Synoptic Survey Telescope
Web : http://research.majuric.org     Phone : +1 617 744 9003

########################################################################
Use REPLY-ALL to reply to list

To unsubscribe from the QSERV-L list, click the following link:
https://listserv.slac.stanford.edu/cgi-bin/wa?SUBED1=QSERV-L&A=1