[Development] Behavior change for QMake install targets since 5.9

Simon Hausmann Simon.Hausmann at qt.io
Fri Jul 21 14:17:41 CEST 2017


Hi,


Yes, it's true that "make install" used to call the GNU install for some files on Unixy platforms, sometimes cp and always copy on Windows. We've changed that in 5.9 to a new built-in command in qmake that should give consistent behavior on all platforms, including the ability to preserve the time stamps. (as you can see, with a mixture of cp, copy and install that was not a given).


You should not see any difference when using "make install", but if you do, please file bug reports.


Since Qt itself has installs libraries alongside with .so symlinks and those are installed as symlinks, I wonder what the difference is between Qt and your application. Can you compare the command lines generated in the Makefiles?


It's true that the internal install command does not support wild-cards. We decided that it is the responsibility of the caller to resolve those (qmake).


Or would you like to use this built-in internal command of qmake yourself by calling it directly?


Simon

________________________________
From: Development <development-bounces+simon.hausmann=qt.io at qt-project.org> on behalf of Roland Winklmeier <roland.m.winklmeier at gmail.com>
Sent: Friday, July 21, 2017 12:15:54 PM
To: development at qt-project.org
Subject: [Development] Behavior change for QMake install targets since 5.9

Dear Qt developers,

since 5.9 some of my projects install targets are failing. Investigation has shown that the generated Makefiles reference now a different INSTALL executable. Before it was 'install' from GNU coreutils and now it is calling 'qmake -install qinstall'.

Apart from the fact that I could not find anything in the changelog about this bigger change (only a few references that make install will no longer modify the timestamp etc), there are several behavior changes affecting existing install targets.

* Installing a symbol link was deep copying the link target under the link name. Example:
   libfoo.so -> libfoo1.0.0.so<http://libfoo1.0.0.so>
   Installing libfoo.so installed the binary libfoo.so without creating a symbol link.

* Using wildcards to copy several targets is broken. Example:
  libfoo.so -> libfoo1.0.0.so<http://libfoo1.0.0.so>
  Installing libfoo*.so fails now. Before it was copying the link and the binary.

Maybe the above use cases are not the perfect solution for a specific problem, but they were working. Also there might be other features (or even bugs), users of coreutils install were relying on and are no longer available.
Is this considered acceptable since the usage of coreutils install was a private configuration and developers should never rely on its behavior?

Cheers R.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.qt-project.org/pipermail/development/attachments/20170721/6e5afc2f/attachment.html>


More information about the Development mailing list