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
