Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
From: Joel Brobecker <brobecker@adacore.com>
To: Jan Kratochvil <jan.kratochvil@redhat.com>
Cc: Doug Evans <dje@google.com>,
	gdb-patches@sourceware.org,	David Malcolm <dmalcolm@redhat.com>,
	Tom Tromey <tromey@redhat.com>
Subject: Re: [RFA] ignore PYTHONHOME environment variable.
Date: Tue, 14 Dec 2010 10:33:00 -0000	[thread overview]
Message-ID: <20101214103305.GU2596@adacore.com> (raw)
In-Reply-To: <20101214092645.GA20415@host0.dyn.jankratochvil.net>

> On Tue, 23 Nov 2010 18:30:54 +0100, Joel Brobecker wrote:
> # GDB_PYTHONHOME is something that got suggested by at least 2 people
> # (someone at AdaCore also suggested it a while back).
> 
> How many OS distributors have suggested it?  It is against the fundamental
> distro policies.  Many reasons why bundling is broken are at:
> 	http://fedoraproject.org/wiki/Packaging:No_Bundled_Libraries

I would rather not go there, for 2 reasons:

  1. Either the change is useful, or it is not; If not, then it does not
     go in;

  2. OS distros have very different operational needs compared to tool
     providers such as ourselves.

> This is a classical example of a vendor distribution patch which is
> not expected to be present upstream.  Still I can override these
> downstream; just I believe upstream should not contain any sych
> directory hacks.

I think that this is too general a criticism. I care more about
the FSF tree than I care about the AdaCore one, and I would not have
proposed this change if I thought that it would not be useful to other
people.

I understand that you don't like the patch, and I get the fact that
I don't seem to have changed my opinion much.  I assure you that
I will not press much further if the change of behavior does not
get either your approval or more general support from the other
maintainers.

> Still $PYTHONHOME should apply for GDB, the same way as it applies for
> any other package.  It is also the reason it exists.  One may want to override
> system Python installation in $HOME, with proper $LD_LIBRARY_PATH and
> $PYTHONHOME I hope it should work well, as it works for other software.
> Your proposed way the user would have to troubleshoot (s)he needs to set also
> $GDB_PYTHONHOME, besides $PYTHONHOME.

Please consider also the situation where the user sets PYTHONHOME to
a version of Python that is incompatible with the one we used to build
GDB, and then miserably crashes with no hint as to what the problem
might be.  This is what happened in my case, and the users had no clue
why GDB just crashed.

This may never happen in your context, because you control the entire
distro.  But some users install third-party code which they sometimes
compiled themselves, and then install it on the side.  Even outside
of AdaCore, I do it all the time (Eg: tools of specific versions that
I need for GDB development, or externally-provided binaries). I don't
install them in /usr or /usr/local because I want to be able to wipe
them anytime I want by a simple "rm -rf".

I tried to find other ways to find a compromise, and always end up
going back to the same principle: We simply cannot trust PYTHONHOME
to point to a version of Python that's compatible with the version
we used at build time. PYTHONHOME is for the Python executable. We
must try to use the Python library that we used to build GDB. And on
the rare cases that someone has its own Python library, and actually
wants GDB to use it, and knows that it's compatible, I can add
a GDB_PYTHON_PATH environment variable.

That way, GDB always behaves the same, regardless of how it's been
built. I think that this is a lot less confusing than having
configure-time switches that dramatically modify the behavior
in a way that is not necessarily obvious. KISS.

What we can also do is warn users when we see that PYTHONHOME is
defined and not GDB_PYTHON_HOME.  That way, they are not surprised
when that happens, and they get a helpful indication of how to
remedy the problem.  Maybe we can also introduce a command-line
switch that triggers one type of behavior or the other, but I think
we're getting in the overkill range.

> #define GDB_DATADIR_RELOCATABLE 1
> #define PYTHONDIR "/usr/share/gdb/python"
> #define PYTHON_PATH_RELOCATABLE 1
> #define WITH_PYTHON_PATH "/usr"
> 
> Which also seems broken, though - why should system GDB use Python
> directories depending on where the gdb binary is located?  I
> apparently missed the patch.

I don't know if the rest of the GNU tools make an exception for /usr
and /usr/local, or not.  But having your dependencies be relocatable
is a widespread practice that is extremely convenient (think of prefix.o
in the compiler, for instance, which allows me to copy a compiler
install at a different location). I think that the same convenience
is equally useful for tools installed in system locations such as /usr.

-- 
Joel


  reply	other threads:[~2010-12-14 10:33 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-11-23  1:03 Joel Brobecker
2010-11-23  3:01 ` Jan Kratochvil
2010-11-23  9:29   ` Doug Evans
2010-11-23 16:31     ` Jan Kratochvil
2010-11-23 16:57       ` Doug Evans
2010-11-23 17:31         ` Joel Brobecker
2010-12-14  7:12           ` Joel Brobecker
2010-12-14  9:27             ` Jan Kratochvil
2010-12-14 10:33               ` Joel Brobecker [this message]
2011-01-13 22:57                 ` Joel Brobecker
2011-01-15  9:17                   ` Doug Evans
2011-01-15 11:26                     ` Jan Kratochvil
2011-01-17 10:36                       ` Joel Brobecker
2012-05-18 19:34                 ` Jan Kratochvil
2012-05-28 14:41                   ` Joel Brobecker
2012-05-28 17:30                     ` Jan Kratochvil
2012-05-29 14:54                       ` Joel Brobecker
2012-05-29 15:57                         ` Jan Kratochvil
2012-05-30 14:37                         ` Jan Kratochvil

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-all 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=20101214103305.GU2596@adacore.com \
    --to=brobecker@adacore.com \
    --cc=dje@google.com \
    --cc=dmalcolm@redhat.com \
    --cc=gdb-patches@sourceware.org \
    --cc=jan.kratochvil@redhat.com \
    --cc=tromey@redhat.com \
    /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