From a249b3e6fd798935a02b769149c9791a6fa6ef16 Mon Sep 17 00:00:00 2001 From: David Kalnischkies Date: Thu, 21 Jan 2016 23:22:00 +0100 Subject: reimplement build-dep via apts normal resolver MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit build-dep was implemented by parsing the build-dependencies of a package and figuring out which packages to install/remove based on this. That means that for the first level of dependencies build-dep was implementing its very own resolver with all the benefits (aka: bugs) this gives us for not using the existing resolver for all levels. Making this work involves generating a dummy binary package with fitting Depends and Conflicts and as we can't create them out of thin air the cache generation needs to be involved so we end up writing a Packages file which we want to parse – after we have parsed the other Packages files already. With .dsc/.deb files we could add them before we started parsing anything. With a bit of care we can avoid generating too much data we have to throw away again (as many parts assume that e.g. the count of packages doesn't change midair), so that on a speed front there shouldn't be much of a difference, but output can be slightly confusing as if we have a completely valid cache on disk the "Reading package lists... Done" is printed two times – but apt is pretty quick about it in that case. Closes: #137560, #444930, #489911, #583914, #728317, #812173 --- .../test-bug-683786-build-dep-on-virtual-packages | 41 ++++++++++++++++++---- 1 file changed, 34 insertions(+), 7 deletions(-) (limited to 'test/integration/test-bug-683786-build-dep-on-virtual-packages') diff --git a/test/integration/test-bug-683786-build-dep-on-virtual-packages b/test/integration/test-bug-683786-build-dep-on-virtual-packages index dd599a0d0..831e1f831 100755 --- a/test/integration/test-bug-683786-build-dep-on-virtual-packages +++ b/test/integration/test-bug-683786-build-dep-on-virtual-packages @@ -33,6 +33,7 @@ Reverse Provides: ' aptcache showpkg po-debconf:armel testsuccessequal 'N: Unable to locate package texi2html:armel' aptcache showpkg texi2html:armel testsuccessequal 'Reading package lists... +Reading package lists... Building dependency tree... The following NEW packages will be installed: po-debconf @@ -41,16 +42,33 @@ Inst po-debconf (1 unstable [all]) Conf po-debconf (1 unstable [all])' aptget build-dep dash -s testfailureequal 'Reading package lists... +Reading package lists... Building dependency tree... -E: Build-Depends dependency for dash cannot be satisfied because the package po-debconf cannot be found' aptget build-dep -aarmel dash -s - +Some packages could not be installed. This may mean that you have +requested an impossible situation or if you are using the unstable +distribution that some required packages have not yet been created +or been moved out of Incoming. +The following information may help to resolve the situation: + +The following packages have unmet dependencies: + builddeps:dash:armel : Depends: po-debconf:armel but it is not installable +E: Unable to correct problems, you have held broken packages.' aptget build-dep -aarmel dash -s testfailureequal 'Reading package lists... +Reading package lists... Building dependency tree... -E: Build-Depends dependency for diffutils cannot be satisfied because the package texi2html cannot be found' aptget build-dep -aarmel diffutils -s +Some packages could not be installed. This may mean that you have +requested an impossible situation or if you are using the unstable +distribution that some required packages have not yet been created +or been moved out of Incoming. +The following information may help to resolve the situation: + +The following packages have unmet dependencies: + builddeps:diffutils:armel : Depends: texi2html:armel but it is not installable +E: Unable to correct problems, you have held broken packages.' aptget build-dep -aarmel diffutils -s testsuccessequal "Reading package lists... +Reading package lists... Building dependency tree... -Note, selecting 'libselinux1-dev' instead of 'libselinux-dev' The following NEW packages will be installed: libselinux1-dev 0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded. @@ -58,12 +76,21 @@ Inst libselinux1-dev (1 unstable [amd64]) Conf libselinux1-dev (1 unstable [amd64])" aptget build-dep sed -s testfailureequal 'Reading package lists... +Reading package lists... Building dependency tree... -E: Build-Depends dependency for sed cannot be satisfied because the package libselinux-dev cannot be found' aptget build-dep -aarmel sed -s +Some packages could not be installed. This may mean that you have +requested an impossible situation or if you are using the unstable +distribution that some required packages have not yet been created +or been moved out of Incoming. +The following information may help to resolve the situation: + +The following packages have unmet dependencies: + builddeps:sed:armel : Depends: libselinux-dev:armel but it is not installable +E: Unable to correct problems, you have held broken packages.' aptget build-dep -aarmel sed -s testsuccessequal "Reading package lists... +Reading package lists... Building dependency tree... -Note, selecting 'libsehurd1-dev' instead of 'libsehurd-dev' The following NEW packages will be installed: libsehurd1-dev 0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded. @@ -71,8 +98,8 @@ Inst libsehurd1-dev (1 unstable [amd64]) Conf libsehurd1-dev (1 unstable [amd64])" aptget build-dep sed2 -s testsuccessequal "Reading package lists... +Reading package lists... Building dependency tree... -Note, selecting 'libsehurd1-dev:armel' instead of 'libsehurd-dev:armel' The following NEW packages will be installed: libsehurd1-dev:armel 0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded. -- cgit v1.2.3