--- Begin Message ---
- To: Debian Bug Tracking System <submit@bugs.debian.org>
- Subject: qt3-dev-tools: qmake dereferences symlinks in generated install rules
- From: Marco van Zwetselaar <zwets@zwets.com>
- Date: Tue, 13 Jul 2004 01:08:58 +0200
- Message-id: <E1Bk9us-0001fj-CF@steribel.zwets.home>
Package: qt3-dev-tools
Version: 3:3.2.3
Severity: normal
In the install rules in the generated Makefile, qmake replaces any
part of a target.path which is a symlink on the local filesystem, by
its real path.
For instance, if on my system /usr/local/bin would be a symlink to
/usr/bin, and my .pro file contains
target.path = /usr/local/bin
INSTALLS += target
Then the generated Makefile contains
install_target:
@$(CHK_DIR_EXISTS) "$(INSTALL_ROOT)/usr/bin" ...
-$(COPY) "$(QMAKE_TARGET)" "$(INSTALL_ROOT)/usr/bin/$(QMAKE_TARGET)"
And so, 'make install INSTALL_ROOT=./tmp' will put the target
in ./tmp/usr/bin, while I really wanted it to be in ./tmp/usr/local/bin.
Obviously, on my own system when using INSTALL_ROOT=/ this won't be a
problem because the target will end up in the right place either way.
But if I intend to package up the ./tmp directory for distribution,
my files don't end up where I want them.
More specifically, this will lead to problems like spurious FTBFSs and
broken binary packages in Debian. Any Debian package built from source
on a system having symlinks anywhere on any of the install paths for the
package will either FTBFS or be different from the original intended
binary. (I suspect bug #181555 to have been caused by exactly this.)
The solution is straightforward: qmake should not 'realpath' the
target.paths when generating the Makefile.
Best regards,
Marco
-- System Information:
Debian Release: testing/unstable
APT prefers testing
APT policy: (990, 'testing')
Architecture: i386 (i686)
Kernel: Linux 2.6.6-2z1
Locale: LANG=C, LC_CTYPE=C
--- End Message ---