[QScintilla] mk_distinfo.py: wrong logic for INSTALL_ROOT installations

Phil Thompson phil at riverbankcomputing.com
Wed Aug 29 11:10:07 BST 2018


On 28 Aug 2018, at 10:12 pm, Davide Pesavento <pesa at gentoo.org> wrote:
> 
> On Tue, Aug 28, 2018 at 4:59 PM Phil Thompson
> <phil at riverbankcomputing.com> wrote:
>> 
>> On 28 Aug 2018, at 9:55 pm, Davide Pesavento <pesa at gentoo.org> wrote:
>>> 
>>> On Tue, Aug 28, 2018 at 4:46 PM Phil Thompson
>>> <phil at riverbankcomputing.com> wrote:
>>>> 
>>>> On 28 Aug 2018, at 9:21 pm, Davide Pesavento <pesa at gentoo.org> wrote:
>>>>> 
>>>>> Hi,
>>>>> 
>>>>> I'm installing QScintilla with 'make INSTALL_ROOT=/foo/bar install'
>>>>> and the mk_distinfo.py step fails while trying to open non-existent
>>>>> files, e.g.:
>>>>> 
>>>>> Traceback (most recent call last):
>>>>> File "mk_distinfo.py", line 101, in <module>
>>>>>  fn_f = open(fn, 'rb')
>>>>> FileNotFoundError: [Errno 2] No such file or directory:
>>>>> '/usr/lib/python3.7/site-packages/PyQt5/Qsci.so'
>>>>> 
>>>>> (the file is actually at /foo/bar/usr/lib/python3.7/site-packages/PyQt5/Qsci.so)
>>>>> 
>>>>> I took a quick look at the build system and noticed that the file
>>>>> paths in installed.txt are not prefixed with INSTALL_ROOT.
>>>>> Unfortunately that file is generated at configure time, when
>>>>> INSTALL_ROOT is not yet known, so this part of the build process may
>>>>> require a redesign.
>>>> 
>>>> No, it's intentional. The location is where things will eventually be installed. INSTALL_ROOT is used by (normally Linux) distro packagers.
>>> 
>>> I'm aware, I'm one of those distro packagers.
>>> 
>>> Ok so installed.txt has the correct paths: the final install location
>>> without INSTALL_ROOT. Then it's mk_distinfo.py's responsibility to
>>> prefix each of those paths with INSTALL_ROOT before trying to open the
>>> file.
>> 
>> So who removes it when the package is installed by the user?
>> 
> 
> I'm not sure I understand the question. The package manager moves the
> files from INSTALL_ROOT to the real root (/). INSTALL_ROOT should not
> appear (e.g. as a string or link) in any installed file. So for
> instance the .dist-info/RECORD file should not contain INSTALL_ROOT.

I meant the value of INSTALL_ROOT.

Are you saying that the distro package manager strips the value of INSTALL_ROOT from the RECORD file when it installs the package into it's final location? If that's the case (and it is true of *all* distro package managers) then I'm happy to change the behaviour - afaik nobody else uses this feature.

Note that mk_distinfo.py in the current QScintilla version doesn't properly create relative filenames for files installed in the Python installation (which is most of them). However QScintilla also installs files in the Qt installation and these have to be referenced by absolute filenames so the above issue is still valid.

Phil



More information about the QScintilla mailing list