autopkgtest should not depend on pbuilder

Bug #1205110 reported by Steve Langasek
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
autopkgtest (Ubuntu)
Fix Released
Wishlist
Unassigned

Bug Description

The autopkgtest package depends on pbuilder, but it shouldn't. There are several backend options for autopkgtest that don't require pbuilder; we shouldn't have to install pbuilder just for /usr/lib/pbuilder/pbuilder-satisfydepends-classic.

A possible substitute for this would be mk-build-deps from devscripts.

ProblemType: Bug
DistroRelease: Ubuntu 13.10
Package: autopkgtest 2.3
ProcVersionSignature: Ubuntu 3.10.0-2.11-generic 3.10.0
Uname: Linux 3.10.0-2-generic x86_64
ApportVersion: 2.11-0ubuntu1
Architecture: amd64
Date: Thu Jul 25 11:43:49 2013
InstallationDate: Installed on 2010-09-24 (1035 days ago)
InstallationMedia: Ubuntu 10.04.1 LTS "Lucid Lynx" - Release amd64 (20100816.1)
MarkForUpload: True
PackageArchitecture: all
SourcePackage: autopkgtest
UpgradeStatus: Upgraded to saucy on 2013-05-06 (79 days ago)

Related branches

Revision history for this message
Steve Langasek (vorlon) wrote :
Changed in autopkgtest (Ubuntu):
importance: Undecided → Wishlist
Martin Pitt (pitti)
Changed in autopkgtest (Ubuntu):
status: New → Triaged
Revision history for this message
Martin Pitt (pitti) wrote :

I think that moving to mk-build-deps would be a step into the wrong direction. Right now we pull in

# apt-get install --no-install-recommends pbuilder
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following extra packages will be installed:
  debootstrap libidn11 libssl1.0.0 wget
Suggested packages:
  pbuilder-uml gdebi-core cowdancer
Recommended packages:
  sudo devscripts
The following NEW packages will be installed:
  debootstrap libidn11 libssl1.0.0 pbuilder wget
0 upgraded, 5 newly installed, 0 to remove and 0 not upgraded.
Need to get 1861 kB of archives.
After this operation, 5257 kB of additional disk space will be used.

But with devscripts it's much worse:

# apt-get install --no-install-recommends devscripts
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following extra packages will be installed:
  libexpat1 libpython3-stdlib libpython3.3-minimal libpython3.3-stdlib libsqlite3-0 libssl1.0.0 mime-support
  python3 python3-minimal python3.3 python3.3-minimal
Suggested packages:
  bsd-mailx mailx cvs-buildpackage devscripts-el gnuplot libauthen-sasl-perl libfile-desktopentry-perl
  libnet-smtp-ssl-perl libterm-size-perl libyaml-syck-perl mutt ssh-client svn-buildpackage w3m
  debian-keyring equivs libcrypt-ssleay-perl libsoap-lite-perl python3-doc python3-tk python3.3-doc
  binfmt-support
Recommended packages:
  at dctrl-tools dput dupload libdistro-info-perl libjson-perl libparse-debcontrol-perl liburi-perl
  libwww-perl lintian man-db patchutils python3-debian python3-magic strace unzip wdiff wget curl file
The following NEW packages will be installed:
  devscripts libexpat1 libpython3-stdlib libpython3.3-minimal libpython3.3-stdlib libsqlite3-0 libssl1.0.0
  mime-support python3 python3-minimal python3.3 python3.3-minimal
0 upgraded, 12 newly installed, 0 to remove and 0 not upgraded.
Need to get 7335 kB of archives.
After this operation, 22.6 MB of additional disk space will be used.

Revision history for this message
Martin Pitt (pitti) wrote :

Hm, I was going to use equivs, but even that pulls in over twice the size of dependencies (4 MB for pbuilder, 9.2 MB for equivs, both with --no-install-recommends) on a minimal debootstrapped container. I also experimented with directly writing a DEBIAN/control file and calling dpkg-deb -b on it. I think that's the minimal solution, but it requires manual resolution and filtering of arch specific dependencies. E. g. right now your test can do "Depends: foo [armhf ppc64el]" or even [linux-any], and dpkg-deb does not understand this. That's probably the reason why equivs builds a source package instead of just building the binary directly.

It may be possible to use dpkg-gencontrol or the Dpkg::Control perl modules to do that arch-specific dependency filtering; pulling in just dpkg-dev pulls in 3.3 MB instead of 4, which is the only case of actually reducing dependencies.

Revision history for this message
Martin Pitt (pitti) wrote :

Just using libdpkg-perl would be nice, it's just 216 kB.

Revision history for this message
Martin Pitt (pitti) wrote :

This works nicely:

use Dpkg::Deps;
$spec = 'nopkg | pmount (>= 0.9 ), pep8 [linux-any], coreutils (>= 1) [armhf],';
$dep = deps_parse($spec, reduce_arch => 1, host_arch => 'armhf');
print $dep->output(), "\n";

results in "nopkg | pmount (>= 0.9), pep8, coreutils (>= 1)", and if I set host_arch to "amd64" it results in "nopkg | pmount (>= 0.9), pep8" as expected. autopkgtest can get the target arch from the testbed with "dpkg --print-architecture", which does not require any non-essential dependencies.

Revision history for this message
Martin Pitt (pitti) wrote :
Changed in autopkgtest (Ubuntu):
status: Triaged → Fix Committed
Revision history for this message
Launchpad Janitor (janitor) wrote :

This bug was fixed in the package autopkgtest - 2.15

---------------
autopkgtest (2.15) unstable; urgency=medium

  * Fix --apt-source mode to download the source with apt-get's
    "--only-source" option, to actually get what we asked for.
  * Add missing python3 build dependency for tests/adt-run. Fixes FTBFS of
    backports.
  * adt-buildvm-ubuntu-cloud: Add options to pass custom metadata/userdata.
    Thanks Diogo Matsubara.
  * Replace pbuilder-satisfydepends-classic with parsing and satisfying build
    and test dependencies with libdpkg-perl and "apt-get -f install". This
    gets rid of the pbuilder dependency and some nasty hacks like the
    --internal-chrootexec script, and allows us to be more flexible such as
    also supporting Recommends: installation. (LP: #1205110)
  * Fix "specifiy" typo in error message. Thanks Jelmer Vernooij.
    (Closes: #745413)
  * adt-build-lxc: Stop using the -F template option to flush the cache as it
    is not available in the debian template. Remove caches manually instead.
    (Closes: #745415)
  * adt-buildvm-ubuntu-cloud: Fall back to latest stable if there is no
    development series.
  * Add "needs-recommends" restriction for installation of recommended
    packages for the test dependencies. This does not affect build
    dependencies. (Closes: #708963)

 -- Martin Pitt <email address hidden> Tue, 22 Apr 2014 09:10:40 +0200

Changed in autopkgtest (Ubuntu):
status: Fix Committed → Fix Released
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.