[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: empty-binary-package



T o n g <mlist4suntong@yahoo.com> writes:

> I am doing test build of my binary package, and I get the following 
> warnings. 

> W: zh-autoconvert: empty-binary-package

> I checked and it *is* empty, only containing copyright and changelog, 
> nothing else. I don't know why because it looks like the installation was 
> fine. 

> I've post the build log at
> http://paste.debian.net/73847/

> Please see if you can spot anything unusual, and tell me if you need 
> anything else.

You're building multiple binary packages from the same source package.
This means that the Debian package build infrastructure has no inherent
way of determining which files go into which package.  You have to tell it
explicitly.

When there are multiple binary packages built from the same source
package, dh_auto_install runs upstream's make install so as to put all the
files in debian/tmp.  This is outside of the package staging areas for
each of the packages, which are named debian/<package>.  It's up to you
to move the files into the appropriate package staging area after
dh_auto_install runs.

The normal way to do this is to use the facilities provided by dh_install
(which will be run automatically by dh binary).  There are various ways to
do this (see the man page), but here's the one I recommend: create files
for each package, named debian/<package>.install, and in each one, list
the files from debian/tmp that belong in that package.

Here's an example from one of my source packages, shibboleth-sp2, which
splits the upstream installation into multiple binary packages:

    ==> libapache2-mod-shib2.install <==
    usr/bin
    usr/sbin
    etc/shibboleth
    usr/lib/*/shibboleth
    usr/share/shibboleth

    ==> libshibsp-dev.install <==
    usr/include/*
    usr/lib/*/lib*.so

    ==> libshibsp-doc.install <==
    doc/api/* usr/share/doc/libshibsp-doc

    ==> libshibsp6.install <==
    usr/lib/*/lib*.so.*

    ==> shibboleth-sp2-schemas.install <==
    usr/share/xml/shibboleth

As you can see, you can use wildcards, and you can name whole directories
or individual files.  If you want the files in debian/tmp to be moved into
the package in exactly the same relative paths as they occupy in
debian/tmp, you can just name them, as in most of the examples above.  If
you want to move them to a different location, see libshibsp-doc.install,
which specifies a destination directory.

Be aware of one gotcha: the destination column in *.install files
specifies the destination *directory*, not file name.  You cannot use
dh_install to rename files; you will end up with the file installed with
its current name in a directory named after the thing you were trying to
rename it to, which is obviously broken.  If you want to rename things,
you'll need to do that separately, usually with an override and some code
that runs before dh_install.

-- 
Russ Allbery (rra@debian.org)               <http://www.eyrie.org/~eagle/>


Reply to: