make install target breaks on Linux because --prefix is ignored

Hi all,

I built LLDB on Linux recently, and I noticed that "make install" doesn't complete successfully as of the latest trunk revision.

After some makefile digging, I found the cause is that make and tries to copy the python modules to "/usr/lib/pythonX.Y/site-packages" or in "/lldb" if the site-packages directory does not exist...thereby disregarding the "--prefix" flag specified at configure-time. This may cause some headaches for users without root access.

I'm wondering if this is intended (and if someone depends on this behaviour) or if it would be acceptable for me to submit a patch that fixes the problem by putting the python modules in the directory specified by the --prefix option?

Naturally, if users want a global install of the lldb modules, they can always configure "--prefix=/usr"

Thanks,
Dan

Hi all,

I am encountering this problem on Linux as of revision 164291. Was a patch ever proposed, or accepted, for this issue?

Cheers,
George

Hi George,

No patch was proposed. I am patching the Makefiles to make them do what they should do (The swig stuff was completely out of sync with the Xcode projects, for example).
But I still haven't touched the install phase. The regular, in-place, stuff is now better (at least it should be. I've been testing on FreeBSD), and I'm planning on cleaning up the Makefiles during next week, tops.
If you ant, you can try to fix that install phase problem and I can commit the patch for you.

Regards,

  Filipe

Hi George,

No patch was proposed. I am patching the Makefiles to make them do what they should do (The swig stuff was completely out of sync with the Xcode projects, for example).
But I still haven't touched the install phase. The regular, in-place, stuff is now better (at least it should be. I've been testing on FreeBSD), and I'm planning on cleaning up the Makefiles during next week, tops.
If you ant, you can try to fix that install phase problem and I can commit the patch for you.

I don't know about this. Many Python installs aren't configured to look outside their installation prefixes for Python modules. I know the default Python on Mac OS X isn't, and I imagine that most default Python installs on other systems aren't, either.

The problem is that, if --prefix isn't specified, configure provides a default. What we want is to use the prefix specified with --prefix *if* it is specified, but install to the default Python site-specific packages directory otherwise. This is really important on Mac OS with the system Python, because there the right directory is not /usr/lib/pythonX.Y/site-packages, or even ${prefix}/lib/pythonX.Y/site-packages, but /Library/Python/X.Y/site-packages.

Personally, I think the right solution is to add a '--with-python-prefix=<prefix>' option to configure, and default to the site-specific Python directory if it isn't specified. That way, we avoid all the headaches associated with --prefix. The downside, of course, is that now you have to specify another option to configure, but I think that's acceptable.

If you want, I'll make a patch against LLVM to add this option, and patches against Clang and LLDB to use it. OK?

Chip

Yes, you can't use the in-place stuff without messing with the PYTHONPATH variable. But that's expected. I just find it much better to test in-place, changing anything that's needed.
You can send the patch, I will review it and commit it.

Thanks,

  Filipe