[Development] Pending decisions on co-installation

Oswald Buddenhagen oswald.buddenhagen at digia.com
Thu Nov 1 10:57:59 CET 2012


On Wed, Oct 31, 2012 at 08:02:20AM -0700, Thiago Macieira wrote:
> On quarta-feira, 31 de outubro de 2012 12.23.27, Oswald Buddenhagen wrote:
> > > 3) library versioning (i.e., adding "5" to the library name)
> > 
> > -1
> > 
> > renaming is unnecessary:
> > - there is no problem at all at run-time
> > - the problem at build time is solved by -L flags. there is no need for
> >   an unversioned symlink in /usr/lib.
> > renaming is a bit disruptive:
> > - projects not done with qmake need adjustment/ifdefs
> >   - but then, they probably need adjustment anyway due to the libraries
> >     having been split, etc.
> 
> Ossi: let me ask you something then: do you want our make install to manage 
> both /usr/lib *and* /usr/lib/qt5/lib?
> 
no.

> My argument is that the split is necessary because we're being asked to manage 
> all of this. I'm also with Ján here that trying to override the default search 
> paths is troublesome. Some less sophisticated buildsystems might add
> -L/usr/lib64 due to other dependencies saying that is necessary, then all of a 
> sudden the application will start linking to Qt 4.
> 
> (on OpenSUSE) $ mysql_config --libs                                    
> -L/usr/lib64 -lmysqlclient -lpthread -lz -lm -lrt -lssl -lcrypto -ldl
> 
as pointed out in another mail, this doesn't phaze us a bit - unless
some distro thinks it's wise to override our choice and install an
unversioned symlink to /usr/lib64. for which they deserve being lynched
by their users, so it's not our problem.

> > the -archdatadir option as such does not hurt, but it introduces a
> > backwards-incompatibility (projects which don't use it on a system which
> > uses different dirs will fail to find the data). i'd prefer to postpone
> > this to The Next Real Major Version ™.
> 
> The only thing that uses DataDir is qmake, to find its mkspecs. Also, quite 
> clearly QLibraryInfo is about Qt itself.
>
yes. this includes qt translations (and qt docs, but that's relevant
only for creator, pretty much). but these live in the old data path, so
it's ok.

> Other libraries and applications have 
> no business using those paths. Therefore, I argue that:
> 
> 1) they shouldn't store their files there
> 2) if they are using to read some Qt files, the only ones affected are the 
> mkspecs, which require quite an updated parser anyway.
> 
ok, whatever.

> > > 5) executable split between end-user applications and indirect tooling
> > > [...]
> > 
> > -2
> > 
> > > This proposal has met with vehement opposition and I'd like to hear why.
> > 
> > as others pointed out, the split is arbitrary, and - given your wrapper
> > - just unnecessary.
> 
> Ok, then let's see what your proposal is:
> 
> All of our executables are installed to /usr/lib$suffix/qt5/bin. What else?
> 
> Please choose one of:
>  a) we wrap all the executables there in /usr/bin
>  b) we wrap only some of the executables there in /usr/bin (please include a 
> list of which ones)
>  c) we wrap some executables in /usr/bin and we symlink others to /usr/bin 
> (please include a list of which ones on each group)

>  d) we do nothing
> 
this

> If you choose any option of a to c, we require --prefix=/usr and
> modification to the buildsystem.

> If you choose option d, then please provide the script or at least
> very detailed instructions for distributions on how to populate
> /usr/bin.
> 
this is part of the installation (instructions) of your (to be
stand-alone ;) wrapper.

> Also, do I understand correctly that you're suggesting that multiarch 
> distributions should have *both*:
> 	/usr/lib/qt5//bin/assistant		AND		/usr/lib64/qt5/bin/assistant
> 	/usr/lib/qt5//bin/linguist		AND		/usr/lib64/qt5/bin/linguist
> 	/usr/lib/qt5//bin/designer		AND		/usr/lib64/qt5/bin/designer
> 
yes. as these applications typically live in separate packages anyway,
there needn't to be an actual duplication if the alternatives are
intelligently managed. for example, your wrapper could support a
secondary source for executables, so if no lib32 version is found, the
lib64 version is automatically used.

On Wed, Oct 31, 2012 at 12:38:06PM -0700, Thiago Macieira wrote:
> I disagree with leaving /usr/bin unmanaged at all. I want to hear the 
> arguments on why we should not manage that on "make install".
> 
because it's outside of -prefix?

On Wed, Oct 31, 2012 at 12:44:53PM -0700, Thiago Macieira wrote:
> Here's another reason why we need to manage our libraries properly:
> cmake and pkg-config files. [...]
> 
as i said probably a week ago already, the locations of the
pkg-config/cmake files can be determined by the distros freely - they
can just have rpm & co. move them out of -prefix at packaging time. the
one thing we need to do is ensuring a consistent naming of the files.
provided we want users to be able to use the files without setting up
environment variables, we'd need to make them co-installable, indeed.
but i'm not entirely conviced we need that: we could just say that
pkg-config needs to be set up with the qmake -query output. that might
be considered an undue complication, though.

regards



More information about the Development mailing list