I'm making Ubuntu packages from the source code of a geology program. I can make deb packages on my PC, and also Launchpad is able to make binary packages for 32-bit OS.
I noticed a strange behavior of Launchpad. It makes both development (libfoo-dev) and shared library (libfoo) from the uploaded source code for i386 although it makes only binary package for amd64 from same code. Looking at i386 and amd64 build logs, I found that for amd64 debian/rules binary-arch
is called instead of debian/rules binary
. This causes my source not to generate a development package for amd64.
How can I solve this issue? Build logs and package sources are available in ppa:soroush-r/geopsy-deb
in case you want to take a look.
Architecture independent packages (where
Architecture: all
is set indebian/control
) are only build on one architecture, which is i386 for Ubuntu. Only the architecture depending packages are build on all other architectures. That's whydebian/rules binary
is called on i386, butdebian/rules binary-arch
on amd64, armhf, and powerpc.You set
Architecture: all
for your -dev packages. This is correct if the -dev package is identical on every architecture. You will see that the .deb package will end with _all.deb instead of _amd64.deb or _i386.deb. The _all.deb will be build on i386, but also used on amd64.You should change the architecture of the -dev package to
Architecture: any
indebian/control
if you need different content for the amd64 -dev package. If the -dev package should have the identical content on amd64 than on i386, everything is working correctly and you shouldn't encounter a problem.