tags 614298 patch thanks Hi David, Please find attached a tentative patch for this issue. It's not exactly the most elegant, but it seemed to be the best we can do without changing the libapt ABI. If you prefer a different solution, please let me know and I can give it a try. -- Steve Langasek Give me a lever long enough and a Free OS Debian Developer to set it on, and I can move the world. Ubuntu Developer http://www.debian.org/ slangasek@ubuntu.com vorlon@debian.org
# Bazaar merge directive format 2 (Bazaar 0.90)
# revision_id: steve.langasek@linaro.org-20110306043047-\
# t5brj8ug8jjf8r0j
# target_branch: bzr+ssh://bzr.debian.org/bzr/apt/debian-sid/
# testament_sha1: 7dfd5db21b8c7d51ddd58754958de24db9ff06b0
# timestamp: 2011-03-05 20:33:38 -0800
# base_revision_id: bubulle@debian.org-20110224183912-4l7923vitatsftfg
#
# Begin patch
=== modified file 'apt-pkg/deb/dpkgpm.cc'
--- apt-pkg/deb/dpkgpm.cc 2011-02-03 13:22:32 +0000
+++ apt-pkg/deb/dpkgpm.cc 2011-03-06 04:30:47 +0000
@@ -881,7 +881,10 @@
// Generate the argument list
const char *Args[MaxArgs + 50];
-
+ // keep track of allocated strings for multiarch package names
+ char *Packages[MaxArgs + 50];
+ unsigned int pkgcount = 0;
+
// Now check if we are within the MaxArgs limit
//
// this code below is problematic, because it may happen that
@@ -989,13 +992,22 @@
}
else
{
+ string const nativeArch = _config->Find("APT::Architecture");
for (;I != J && Size < MaxArgBytes; I++)
{
if((*I).Pkg.end() == true)
continue;
if (I->Op == Item::Configure && disappearedPkgs.find(I->Pkg.Name()) != disappearedPkgs.end())
continue;
- Args[n++] = I->Pkg.Name();
+ if (I->Pkg.Arch() == nativeArch || !strcmp(I->Pkg.Arch(), "all"))
+ Args[n++] = I->Pkg.Name();
+ else
+ {
+ string const PkgDesc = I->Pkg.Name() + string(":") + string(I->Pkg.Arch());
+ Packages[pkgcount] = new char[PkgDesc.size()+1];
+ strncpy(Packages[pkgcount++],PkgDesc.c_str(),PkgDesc.size()+1);
+ Args[n++] = Packages[pkgcount-1];
+ }
Size += strlen(Args[n-1]);
}
}
@@ -1145,6 +1157,11 @@
sigemptyset(&sigmask);
sigprocmask(SIG_BLOCK,&sigmask,&original_sigmask);
+ /* clean up the temporary allocation for multiarch package names in
+ the parent, so we don't leak memory when we return. */
+ for (unsigned int i = 0; i < pkgcount; i++)
+ delete [] Packages[i];
+
// the result of the waitpid call
int res;
int select_ret;
=== modified file 'debian/changelog'
--- debian/changelog 2011-02-24 18:39:12 +0000
+++ debian/changelog 2011-03-06 04:30:47 +0000
@@ -1,10 +1,16 @@
apt (0.8.11.6) UNRELEASED; urgency=low
+ [ Christian Perrier ]
* Fix error in French translation of manpages (apt_preferences(5)).
Merci, Rémi Vanicat. Closes: #613689
* Complete French manpage translation
* Italian translation update (Milo Casagrande). Closes: #614395
+ [ Steve Langasek ]
+ * apt-pkg/deb/dpkgpm.cc: make sure that for multiarch packages, we're
+ passing the full qualified package name to dpkg for removals.
+ Closes: #614298
+
-- Christian Perrier <bubulle@debian.org> Fri, 18 Feb 2011 05:53:49 +0100
apt (0.8.11.5) unstable; urgency=low
# Begin bundle
IyBCYXphYXIgcmV2aXNpb24gYnVuZGxlIHY0CiMKQlpoOTFBWSZTWbDU4WsAAwPfgFpwef///38n
TAq////+YAbLtvugBoN1W6OgcqUKhoUaaamg0CeKeU9Tyjaj1A0HqPUBoAyaBmoJSQ0yp+hR40Ig
epoGamgAGgAAAA4yZNGIaaGAmhiaNMmIGRhNGmmEGTCRQKapvSemin6o8BT1Mmymh6gB6gMjQB6g
yDjJk0YhpoYCaGJo0yYgZGE0aaYQZMJIiMgjEYgmTUzIVPyKfimk9TPUjEaAHqaeUWQAWQE22+g1
GkSTGcmQO9KIFWfHoJiyTZqKNND2dxL2BqkkxVPmpAIqroGzrZekpMpeY2+iAkNooRSChP67GdF7
fVihluNZ0GMabTazeM+qP1O/dkzxhIiMJZnnqJzlONZLUjDTQ8l2UaDwet8ShtMLFQhyC2uLXVqP
SNxlIMz7Z5xhNIwwrUz2S6LVG0g01BQt4tbS+EbBmT3GFFC78eZXQqAY1HzcbHNqjK7f2HYe6x18
BjZr07A9qXwREM/YbwoW13RwDHjhVO7FE5MerBkbYuzONNLRLuvOMiKZ+R3Q8Y54Aqog/9UV05Ma
veBaUP6s3lr5VUWI91y5JWb0FodoDNSeG35HOzeRc+ZVjYdD0Ms60s2AiD/HfFhWHZRBCah5/tIo
gQHAdogeoHUJgIOfMqkfYwwUKweoXAty0FErG8APzrRDB01Z3aJ99Ns0JzkeNXdRNCpR5UytC4rk
Qbc9RVTn+hWT2BDaFdVXv0bY+vMwFgqDhmEN06TWOXm3dfrImJs2bNOQ9gQ0CsQn4FkRb5k4hrrC
lOG7QWlJpIOZYl1pcE8cVCCNxNh7uDk2pAsQPc1R3aP+xK1kWA/GJUFtmiVDUJwk4PkMF8gM74kA
J4ziQbDaqRRMQ0rRq4BCyweKMyik1aZGmm6cct79oGOfIQ4wJyOHNdRY0qA7cOlBW6krfAOLFgua
3SSvpNNOu9gJjbTVVCEecyk6m13BcA2gI51FC5kSeBWSjjpgPMZsLGcGxlRSnpot1KcW02TKu8Cu
4DACvTEt0zqCMNaKGKMNLsX0QZVsxcZGByNZw6ZVamT6BrhN+vXRrjSwSv04NTErgFLg0mioTRKb
ea9CTuPyQY9D2TpfFo8jSMe82ooz5ncL0O31F1g07UFUTWsItHLzlxRNt/i34SsCfPuVArF72FcG
etTh3DdIH2hjAT7f6YxVIgIxWJXUlrnSYCloEZyi2igpGgWoXNcxuQrHZmbFbeiHi8JEUCw9DbQT
LlsrxHhhMFEQZeqQUgX1kEIuBwwoFrEfDAF2CE6hhlvVtIv9J6kGewV/uR7DqRpD5GMCsViB7UiB
lMa1mpLw+n4ajuO3ibtfD3SykzooyF2gOH2taG8iGB6kcS5JdcgIzf5ikxRE4n0J3jEsTqorwIGg
yFVu/TpHOnEkyRRRalt+yJzRO1Jt9mZ6Gw6uJe1+2NYZlgR3RiTRxN4Y36reHRQW6ZVw3Zt5HP+3
ieBwBofAeR+waI/mNUgmTOjGzwMpkyQTM87mHiVoXUHeHjIGuSMYw1zz0z2ztQMhIh5vsPd6EDtr
u2JA/jQDYmCf1FjXunf+7naaSJN0fQHidWipIZGTojR2dZxOs3AYbfA5ULsK1aDGj4nieCh5uB57
AceJ2jGtjIFXFDsegDuEUhkZBczDIaDpfCRQqaJDn6hqAWgTLAWjygfSGpBgu2R7WP9qHE6PuFcK
Dfy+SGzI65eXWu0pxNe6ApGBSg+taNdpWMqT8uvOmuSNXvRUwfDvpLpBd6JcqgH7wPUDiZ5sOgaR
hiXeA2oYwYGHQixUCxnAGBEtwRDcgoEgZXwzqNiB7B5YBAbqJ8hEhsCU0d1GCY87TaqhOxlcdUrV
fTSoSB5EaWofwGqih0wmleFRAyNc5CrKUcUqAnAWuyQrCQ5jrbYZDsDLhxNlqCoax7wJdGD2E3rH
tExMsSsRq3iUE8M2LTCaImGDlLivAzYYPDfSqtZmSyDcVkXHetsv5S3irOGVsAgzDMCSlGSO8k/j
IGDJMlH6liqKAGs1upiU1XSLt3WI56AJq2MkDSvqKaGB9Yy2jjoYZS5OHW1EkjCZIH3MWHErK0cS
JJb2x0WlQ/3nsmLfG10WfX+dgNFyyy5x+qDoyNQD5BkEoL8AlpDVB6LNf3kkEAq6A4dTvZaURpxE
1QmixVwi0o0mEAv6eK3eag08YEDUMDc0evyxRhgtRAtSLi9Oj94NJH4/dj0DoVSRjWplJIl/umuH
/F3JFOFCQsNThaw=
Attachment:
signature.asc
Description: Digital signature