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. More below : >>> It's a reasonable proposal (IMHO), except that one wouldn't want to >>> hardcode the python path as /usr/bin/python, but autodetect it during >>> the install of EUPS and use that. >> I completely agree with you and i've implemented this minor feature in : >> https://github.com/fjammes/eups (cf. >> https://github.com/fjammes/eups/commit/ceba62ff1b94acb8a006155dff4f4b1686bca625) >> (please note that one "-S" has been accidentally removed in bin/eups, >> but it's been corrected in a later commit) >> Would you agree with this proposal ? eups relies on python. So at the first time eups is installed, it will require a non-eups-installed python (for example a system python) to be already here. Let's call this non-eups-installed python version SYSPYTHON. A simple, and robust, solution could be to force all "eups-only" commands, for all eups versions, to always rely on SYSPYTHON. Futhermore, when eups upgrade itself, it will force the newly-installed eups version to also rely on SYSPYTHON. Please note that SYSPYTHON will only be used by a very limited set of "eups-only" commands ("./bin/eups", "setup", and a few others in eups/bin directory). *All other invocations of "python", after "setup python" command is issued, will use environment python* (i.e. eups-installed python). This will also apply inside eups build scripts (and for their commands like "python setup.py ...", which use environment python) /Note that this bootstrap problem doesn't apply to rpm or dpkg, because they are compiled./ More below : > The slight issue I see is that the following could mess up EUPS: > > Say I have an existing install of EUPS, and I decide to distribute > updates to EUPS itself as an EUPS package. That is, when I want a user > to upgrade, I ask them to do the following: > > eups distrib install eups v1.2.3 > eups declare -c eups v1.2.3 > > Now, if, at the point of eups distrib install, the user has had a > version of python setup-ed that is also distributed through EUPS (say, > anaconda 1.8.0), eups would hard-code the path to that python. In the proposed solution, eups can't rely on a eups-installed anaconda, indeed it has to use SYSPYTHON. So eups command scripts would contains a hard-coded path to SYSPYTHON (for example /usr/bin/python, or /opt/bin/python, /usr/local/bin/python). This SYSPYTHON would be the same as the one that was present, and required, before the first eups installation. Note that SYSPYTHON could be upgraded (of course to a eups-compatible version), for example by system updates, but not by eups itself : Iit seems reasonable that eups can't upgrade a components it depends on (in order not to cutoff thebranch it's sittingon). > Then, > when the user upgrades to a different python, by, say: > > eups distrib install anaconda 1.9.0 > eups declare -c anaconda 1.9.0 > > and removes the old version: > > eups remove anaconda 1.8.0 > > their EUPS will stop working (and they won't be warned at all that their > EUPS implicitly depends on anaconda 1.8.0). In the proposed solution, this command would never have any effect on any eups versions as it wouldn't impact SYSPYTHON (whose path is hard-coded in eups scripts). So eups would continue working. I think this lead to more robustness for eups as it will become totally independant from the python versions it installs/manages. For example, it would allow eups to install/manage softwares relying on python3, whereas eups would still run with python2 (here you can also reverse 3 and 2, for the future) eups could also install/manage non-standard or patched python implementations. > This is not a made-up example; distributing Eups through Eups is > legal and possible. I completely agree with this, it's an interesting feature. > Thinking more about it, it's really the '-S' on python command line that > is the culprit here. Serge has reported that w/o it, Python succesfully > imports traceback even within the virtualenv. Robert, do you recall the > reason why -S needs to be there? 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. Hope i'm clear, it's difficult to well describe and discuss this solution by email. Thanks again for your help, Fabrice 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 ;-) ######################################################################## 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