trinity-users@lists.pearsoncomputing.net

Message: previous - next
Month: February 2011

[SOLVED] Re: [trinity-users] arts build - uic-tqt ... not found (I've packaged and installed tqtinterface, but uic-tqt got missed?)

From: "David C. Rankin" <drankinatty@...>
Date: Wed, 02 Feb 2011 11:24:20 -0600
On 02/01/2011 01:44 AM, Jay wrote:
> When i first compiled i create a symlink called uic-tqt pointing at uic. This
> got me passed the error. Not sure if it is the right way to go about it ...
> but i am writing this from trinity running on Slack current.

SOLVED = figured out, but not fixed in the code

The problem is with the tqtinterface/qtinterface/Makefile.am itself which 
causes uic-tqt to be missed by many packaging systems. (at least Arch Linux 
[makepkg], and Slack [whatever it uses]). The reason on Arch is that 'makepkg' 
does a "semi" out of source build by creating a 'src' and 'pkg' directory in 
the current module directory. It builds everything in 'src' and then create 
packages in the fakeroot 'pkg' directory with 'make $DESTDIR=pkg/ install' The 
final Arch Linux package is created from the contents of 'pkg' and then 'src' 
and 'pkg' dirs can be removed leaving the original svn source unchanged.

The tqtinterface/qtinterface/Makefile.am specifies:

install-exec-local:
         test -z "$(bindir)" || $(MKDIR_P) "$(DESTDIR)$(bindir)"
         cp -Rp "$(srcdir)/tqt-replace" "$(DESTDIR)$(bindir)/"
         cp -Rp "$(srcdir)/tqt-replace-stream" "$(DESTDIR)$(bindir)/"
         cp -Rp "$(srcdir)/moc-tqt" "$(DESTDIR)$(bindir)/"
         cp -Rp "$(srcdir)/uic-tqt" "$(DESTDIR)$(bindir)/"
<snip>

In the list, everything except 'uic-tqt' is built in the 'src' directory and 
gets copied to the 'pkg' directory for packaging. But the correct path for 
uic-tqt is actually '../qtinterface/uic-tqt' not '$(srcdir)/uic-tqt' since it 
is provided as part of the source and not built during the compile. So it 
never gets packaged by default. I suspect something similar happens on Slackware.

I don't know if this can be fixed in the code, a check put in place, or if it 
is just something that must be dealt with manually. For Arch, you just have to 
add a manual copy to the PKGBUILD script:

package() {
   msg "Packaging - $pkgname-$pkgver"
   cd ${srcdir}
   mkdir -p ${pkgdir}/usr/bin
   cp -Rp ../qtinterface/uic-tqt ${pkgdir}/usr/bin

   make DESTDIR="$pkgdir/" install
}


-- 
David C. Rankin, J.D.,P.E.