Re: Using a library package in Maemo sysroot

Re: Using a library package in Maemo sysroot

Tomi Ollila

2011-08-31 09:28 UTC
On Wed, 31 Aug 2011 10:00:48 +0200, Christian Kandeler <christian.kandeler@nokia.com> wrote:
> On Tue, 2011-08-30 at 16:07 -0400, ext David Talmage wrote:
> > I'm having trouble deploying an application to my N900. When QtCreator
> > builds the application package, dpkg-shlibdeps claims that it cannot
> > find the dependency information for one library. This is what I need
> > help fixing. The error message is
> >
> >
> > dpkg-shlibdeps: failure: no dependency information found
> > for /home/talmage/QtSDK-1.1/Maemo/4.6.2/sysroots/fremantle-arm-sysroot-20.2010.36-2-slim/opt/usr/lib/libqcontactchooserdialog.so.1 (used by debian/panicbutton/opt/usr/bin/panicbutton).
> >
> > I made the library myself. It is on the phone and in my Maemo sysroot.
> > QtCreator put it in the sysroot for me using this additional
> > deployment step:
> >
> > mad-admin xdpkg --install libqcontactchooserdialog_1_0_0_armel.deb
> >
> > I copied the libqcontactchooserdialog.shlibs file from my phone into
> > var/lib/dpkg/info in the sysroot. That changed nothing.
>
> Are you saying that mad-admin xdpkg does not install the shlibs file
> into the sysroot? That sounds like a bug to me.
> Anyway, could it be that the shlibs file is somehow not containing the
> correct information? Have you checked its contents and compared with
> what the man page for deb-shlibs says?

The reason is that that such an old MADDE does not support checking those
dependencies in xdpkg -installed packages:

$ git log patches/dpkg-1.14.25.diff | head -7
commit 7607722394ea331ed887e4b5e2e50d29271f9cd8
Author: Pasi S...
Date: Mon Apr 18 13:14:38 2011 +0300

added xdpkg extended package support for dpkg-shlibdebs.

commit 907858016b35160a395b00caee854450b1dade2c

... In addition to Pasi's above patch I made some changes to xdpkg.pl,
which is available in

https://meego.gitorious.org/meego-developer-tools/madde/blobs/master/src/madlib/xdpkg.pl

As re-creating dpkg-shlibs is somewhat less trivial I'll include newer
version as a gzipped attachment of this email.


So, in order to test whether these changed dpkg tools fix the problem you
need to 'taint' your madde installation, first do:

$ mad-admin xdpkg --list

$ for p in <xdpkg-installed-packages>; do mad-admin xdpkg --purge $p; done

$ maddir=/home/talmage/QtSDK-1.1/Maemo/4.6.2/

$ find $maddir/madlib -name '*xdpkg*'

$ mkdir $maddir/backup
$ mv /path/to/found/*xdpkg* $maddir/backup
$ mv $maddir/madbin/dpkg-shlibdeps $maddir/backup
$ cp /path/to/xdpkg.pl /path/to/found/*xdpkg*
$ cp /path/to/dpkg-shlibdeps $maddir/madbin

And check if things work; if not, just rename files from
$maddir/backup back to their original locations.

> Christian

Tomi


  •  Reply

Re: Using a library package in Maemo sysroot

David Talmage
Karma: 100
2011-08-31 18:35 UTC
[Replying to both Christian Kandeler and Tomi Ollila in this message.]

On Wednesday, August 31, 2011 05:28:56 AM Tomi Ollila wrote:
> On Wed, 31 Aug 2011 10:00:48 +0200, Christian Kandeler
<christian.kandeler@nokia.com> wrote:
> > On Tue, 2011-08-30 at 16:07 -0400, ext David Talmage wrote:
> > > I'm having trouble deploying an application to my N900. When QtCreator
> > > builds the application package, dpkg-shlibdeps claims that it cannot
> > > find the dependency information for one library. This is what I need
> > > help fixing. The error message is
> > >
> > >
> > > dpkg-shlibdeps: failure: no dependency information found
> > > for
> > > /home/talmage/QtSDK-1.1/Maemo/4.6.2/sysroots/fremantle-arm-sysroot-20.
> > > 2010.36-2-slim/opt/usr/lib/libqcontactchooserdialog.so.1 (used by
> > > debian/panicbutton/opt/usr/bin/panicbutton).
> > >
> > > I made the library myself. It is on the phone and in my Maemo sysroot.
> > > QtCreator put it in the sysroot for me using this additional
> > > deployment step:
> > >
> > > mad-admin xdpkg --install libqcontactchooserdialog_1_0_0_armel.deb
> > >
> > > I copied the libqcontactchooserdialog.shlibs file from my phone into
> > > var/lib/dpkg/info in the sysroot. That changed nothing.
> >
> > Are you saying that mad-admin xdpkg does not install the shlibs file
> > into the sysroot? That sounds like a bug to me.
> > Anyway, could it be that the shlibs file is somehow not containing the
> > correct information? Have you checked its contents and compared with
> > what the man page for deb-shlibs says?

Yes, the version of mad-admin I had did not install the shlibs file into the
sysroot.

According to the deb-shlibs man page, libqcontactchooserdialog.shlibs should
look like this:

libqcontactchooserdialog 1 libqcontactchooserdialog (>= 1.0-0)


Instead, mine looks like this:

libqcontactchooserdialog 1 libqcontactchooserdialog


In other words, it's missing the version number in the dependencies field.

After I followed Tomi's directions, I have
$SYSROOT/madde_xpkgs/libqcontactchooserdialog.shlibs. This is new, I think.

There isn't one in $SYSROOT/var/lib/dpkg/info.


> The reason is that that such an old MADDE does not support checking those
> dependencies in xdpkg -installed packages:
> ...

Tomi, the new dpkg-shlibdeps and xdpkg files didn't fix the problem. I get the
same output as before when deploying my application.

Could this be related to the location of my library? It's in
$SYSROOT/opt/usr/lib instead of $SYSROOT/usr/lib.




  •  Reply

Re: Using a library package in Maemo sysroot

David Talmage
Karma: 100
2011-08-31 21:27 UTC
On Wednesday, August 31, 2011 02:35:27 PM David Talmage wrote:
> [Replying to both Christian Kandeler and Tomi Ollila in this message.]
>
> On Wednesday, August 31, 2011 05:28:56 AM Tomi Ollila wrote:
> > On Wed, 31 Aug 2011 10:00:48 +0200, Christian Kandeler
>
> <christian.kandeler@nokia.com> wrote:
> > > On Tue, 2011-08-30 at 16:07 -0400, ext David Talmage wrote:
> > > > I'm having trouble deploying an application to my N900. When
> > > > QtCreator builds the application package, dpkg-shlibdeps claims that
> > > > it cannot find the dependency information for one library. This is
> > > > what I need help fixing. The error message is
> > > >
> > > >
> > > > dpkg-shlibdeps: failure: no dependency information found
> > > > for
> > > > /home/talmage/QtSDK-1.1/Maemo/4.6.2/sysroots/fremantle-arm-sysroot-20
> > > > . 2010.36-2-slim/opt/usr/lib/libqcontactchooserdialog.so.1 (used by
> > > > debian/panicbutton/opt/usr/bin/panicbutton).
> > > >
> > > > I made the library myself. It is on the phone and in my Maemo
> > > > sysroot. QtCreator put it in the sysroot for me using this
> > > > additional deployment step:
> > > >
> > > > mad-admin xdpkg --install libqcontactchooserdialog_1_0_0_armel.deb
> > > >
> > > > I copied the libqcontactchooserdialog.shlibs file from my phone into
> > > > var/lib/dpkg/info in the sysroot. That changed nothing.
> > >
> > > Are you saying that mad-admin xdpkg does not install the shlibs file
> > > into the sysroot? That sounds like a bug to me.
> > > Anyway, could it be that the shlibs file is somehow not containing the
> > > correct information? Have you checked its contents and compared with
> > > what the man page for deb-shlibs says?
>
> Yes, the version of mad-admin I had did not install the shlibs file into
> the sysroot.
>
> According to the deb-shlibs man page, libqcontactchooserdialog.shlibs
> should look like this:
>
> libqcontactchooserdialog 1 libqcontactchooserdialog (>= 1.0-0)
>
>
> Instead, mine looks like this:
>
> libqcontactchooserdialog 1 libqcontactchooserdialog
>
>
> In other words, it's missing the version number in the dependencies field.
>

I corrected that in $SYSROOT/madde_xpkgs/libqcontactchooserdialog.shlibs. It
didn't make a difference.

I've discovered that dpkg-shlibdeps forks

/home/talmage/QtSDK-1.1/Maemo/4.6.2/bin/mad dpkg --search
/home/talmage/QtSDK-1.1/Maemo/4.6.2/sysroots/fremantle-arm-
sysroot-20.2010.36-2-slim/opt/usr/lib/libqcontactchooserdialog.so.1


and the search fails. Madde's dpkg is looking only in
$SYSROOT/var/lib/dpkg/info for the .shlibs files.


I discovered two more things.

1. the version of dpkg at meego.gitorious.org *does* look in
$SYSROOT/madde_xpkgs.
2. So does the version of dpkg in QtSDK-1.1/Madde/madbin.


This is very interesting. I reverted libqcontactchooserdialog.shlibs to its
original form and replaced /home/talmage/QtSDK-1.1/Maemo/4.6.2/bin/madbin/dpkg
with the one from QtSDK-1.1/Madde/madbin. I can build the application package
now!

Thanks to Tomi and Christian for their advice. It made me look in the right
places. I am very happy to be able to resume development!

Dave


  •  Reply

Re: Using a library package in Maemo sysroot

Tomi Ollila

2011-09-01 06:09 UTC
On Wed, 31 Aug 2011 17:27:26 -0400, David Talmage <talmage@acm.org> wrote:

> ...
> ...
> ...

>
> I discovered two more things.
>
> 1. the version of dpkg at meego.gitorious.org *does* look in
> $SYSROOT/madde_xpkgs.
> 2. So does the version of dpkg in QtSDK-1.1/Madde/madbin.
>
>
> This is very interesting. I reverted libqcontactchooserdialog.shlibs to its
> original form and replaced /home/talmage/QtSDK-1.1/Maemo/4.6.2/bin/madbin/dpkg
> with the one from QtSDK-1.1/Madde/madbin. I can build the application package
> now!
>
> Thanks to Tomi and Christian for their advice. It made me look in the right
> places. I am very happy to be able to resume development!

Thanks for digging a bit deeper. I missed that 'dpkg' had related
changes and therefore an updated version of dpkg was needed as well.
Your approach to "fix" this problem was the right one!

>
> Dave

Tomi
  •  Reply