On Wed, Aug 29, 2018 at 6:10 AM Phil Thompson
<[email protected]> wrote:
>
> On 28 Aug 2018, at 10:12 pm, Davide Pesavento <[email protected]> wrote:
> >
> > On Tue, Aug 28, 2018 at 4:59 PM Phil Thompson
> > <[email protected]> wrote:
> >>
> >> On 28 Aug 2018, at 9:55 pm, Davide Pesavento <[email protected]> wrote:
> >>>
> >>> On Tue, Aug 28, 2018 at 4:46 PM Phil Thompson
> >>> <[email protected]> wrote:
> >>>>
> >>>> On 28 Aug 2018, at 9:21 pm, Davide Pesavento <[email protected]> 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.

No, that's not what happens. The package manager simply moves the
files but doesn't touch them. QScintilla's build system should not
prefix the paths in RECORD with INSTALL_ROOT in the first place. We
can add workarounds to the distro build scripts but I'd rather have
this properly fixed in QScintilla.

When I said "it's mk_distinfo.py's responsibility to prefix each of
those paths with INSTALL_ROOT before trying to open the file" I meant
*temporarily* prefix them, just for the purpose of reading the file to
calculate its checksum. The prefixed paths should not be recorded
anywhere.

>
> 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.

So the .sip files should have an absolute path in RECORD? They don't
as far as I can see, e.g. I have lines like
../../../../../../../../../usr/share/sip/PyQt5/Qsci/qscistyle.sip,sha256=vcDOCT7DyYUrvdUgGlkmD6ly3SMVZ5jo3ZJHzthh-bs,1909

Thanks,
Davide
_______________________________________________
QScintilla mailing list
[email protected]
https://www.riverbankcomputing.com/mailman/listinfo/qscintilla

Reply via email to