The ibus-cangjie suite consists of 3 source packages: libcangjie, pycangjie and ibus-cangjie, pycangjie depends on libcangjie and ibus-cangjie depends on the other two. When you use pbuilder or its wrappers (I mainly use pbuilder-dist) to build pycangjie or ibus-cangjie, you have to make sure the depended packages are in the pbuilder chroot somehow otherwise the build will fail.
I used to build the package in the lowest level first, in this case libcangjie, then login to the pbuilder chroot with the --save-after-login
argument and manually copy the built packages to where the chroot is mounted, run dpkg to install the packages, then exit the chroot. Now libcangjie is installed the chroot and so the build dependencies of pycangjie can be satisfied. This is simple, but requires quite a lot of typing.
There is a simpler way. As pbuilder puts all its built packages in a single directory, we can make the chroot use it as an apt source.
Assume packages built by your pbuilder is located in /home/ubuntu/pbuilder/sid_result
, and pbuilder hooks are stored in /var/cache/pbuilder/hook.d
. Now, update your .pbuilderrc
like this:
# cat ~/.pbuilderrc
HOOKDIR="/var/cache/pbuilder/hook.d"
BINDMOUNTS="/home/ubuntu/pbuilder/sid_result"
Then put a new hook script to generate a Packages file:
# cat /var/cache/pbuilder/hook.d/D70results
cd /home/ubuntu/pbuilder/sid_result
/usr/bin/dpkg-scanpackages . /dev/null > /home/ubuntu/pbuilder/sid_result/Packages
/usr/bin/apt-get update
To verify it is set up correctly, login to the pbuilder chroot with the --override-config
and --othermirror
arguments and check if /etc/apt/sources.list
is updated, OTHERMIRROR parameter in .pbuilderrc
does not work for me so I can only use --othermirror
, not nice as you need to supply it every time you run pbuilder:
# pbuilder-dist testing login --override-config --othermirror "deb [trusted=yes] file:///home/ubuntu/pbuilder/sid_result ./"
# grep -r home /etc/apt
/etc/apt/sources.list:deb [trusted=yes] file:///home/ubuntu/pbuilder/sid_result ./
If everything goes well, build your package with the --override-config
and --othermirror
arguments like what you just did for the login operation:
# pbuilder-dist testing build --override-config --othermirror "deb [trusted=yes] file:///home/ubuntu/pbuilder/sid_result ./" <.dsc-file>
References