From f6ffe501d432d1299808ae307936877cf2c5f8ce Mon Sep 17 00:00:00 2001 From: Julian Andres Klode Date: Sat, 15 Mar 2014 17:59:47 +0100 Subject: Fix handling of autoclosing for compressed files (Closes: #741685) AutoClose is both an argument in OpenDescriptor() and an enum. In commit 84baaae93badc2da7c1f4f356456762895cef278 code using the AutoClose parameter was moved to OpenDescriptorInternal(). In that function, AutoClose meant the enum value, so the check was always false. --- apt-pkg/contrib/fileutl.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apt-pkg/contrib/fileutl.cc b/apt-pkg/contrib/fileutl.cc index 1eabf37f4..ba79720d8 100644 --- a/apt-pkg/contrib/fileutl.cc +++ b/apt-pkg/contrib/fileutl.cc @@ -1191,7 +1191,7 @@ bool FileFd::OpenInternDescriptor(unsigned int const Mode, APT::Configuration::C d->openmode = Mode; d->compressor = compressor; #if defined HAVE_ZLIB || defined HAVE_BZ2 || defined HAVE_LZMA - if (AutoClose == false && compress_open != NULL) + if ((Flags & AutoClose) != AutoClose && compress_open != NULL) { // Need to duplicate fd here or gz/bz2 close for cleanup will close the fd as well int const internFd = dup(iFd); -- cgit v1.2.3 From 384c9b0d4f69aac57da8298c4252499d1f7a83ca Mon Sep 17 00:00:00 2001 From: Julian Andres Klode Date: Sat, 15 Mar 2014 18:12:54 +0100 Subject: Release 0.9.16.1 --- configure.ac | 2 +- debian/changelog | 10 ++++++++++ doc/apt-verbatim.ent | 2 +- doc/po/apt-doc.pot | 4 ++-- po/ar.po | 2 +- po/ast.po | 2 +- po/bg.po | 2 +- po/bs.po | 2 +- po/ca.po | 2 +- po/cs.po | 2 +- po/cy.po | 2 +- po/da.po | 2 +- po/de.po | 2 +- po/dz.po | 2 +- po/el.po | 2 +- po/es.po | 2 +- po/eu.po | 2 +- po/fi.po | 2 +- po/fr.po | 2 +- po/gl.po | 2 +- po/hu.po | 2 +- po/it.po | 2 +- po/ja.po | 2 +- po/km.po | 2 +- po/ko.po | 2 +- po/ku.po | 2 +- po/lt.po | 2 +- po/mr.po | 2 +- po/nb.po | 2 +- po/ne.po | 2 +- po/nl.po | 2 +- po/nn.po | 2 +- po/pl.po | 2 +- po/pt.po | 2 +- po/pt_BR.po | 2 +- po/ro.po | 2 +- po/ru.po | 2 +- po/sk.po | 2 +- po/sl.po | 2 +- po/sv.po | 2 +- po/th.po | 2 +- po/tl.po | 2 +- po/tr.po | 2 +- po/uk.po | 2 +- po/vi.po | 2 +- po/zh_CN.po | 2 +- po/zh_TW.po | 2 +- 47 files changed, 57 insertions(+), 47 deletions(-) diff --git a/configure.ac b/configure.ac index b161d31be..890dadf77 100644 --- a/configure.ac +++ b/configure.ac @@ -18,7 +18,7 @@ AC_CONFIG_AUX_DIR(buildlib) AC_CONFIG_HEADER(include/config.h:buildlib/config.h.in include/apti18n.h:buildlib/apti18n.h.in) PACKAGE="apt" -PACKAGE_VERSION="0.9.16~20140314" +PACKAGE_VERSION="0.9.16.1" PACKAGE_MAIL="APT Development Team " AC_DEFINE_UNQUOTED(PACKAGE,"$PACKAGE") AC_DEFINE_UNQUOTED(PACKAGE_VERSION,"$PACKAGE_VERSION") diff --git a/debian/changelog b/debian/changelog index 03a99f38d..41cca4e59 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,13 @@ +apt (0.9.16.1) unstable; urgency=medium + + [ Chris Leick ] + * Updated German doc translation + + [ Julian Andres Klode ] + * Fix handling of autoclosing for compressed files (Closes: #741685) + + -- Julian Andres Klode Sat, 15 Mar 2014 18:05:25 +0100 + apt (0.9.16) unstable; urgency=medium [ Michael Vogt ] diff --git a/doc/apt-verbatim.ent b/doc/apt-verbatim.ent index fdc63ab1a..1d98362c1 100644 --- a/doc/apt-verbatim.ent +++ b/doc/apt-verbatim.ent @@ -219,7 +219,7 @@ "> - + diff --git a/doc/po/apt-doc.pot b/doc/po/apt-doc.pot index 2067216e9..63d29221c 100644 --- a/doc/po/apt-doc.pot +++ b/doc/po/apt-doc.pot @@ -6,9 +6,9 @@ #, fuzzy msgid "" msgstr "" -"Project-Id-Version: apt-doc 0.9.15.5\n" +"Project-Id-Version: apt-doc 0.9.16.1\n" "Report-Msgid-Bugs-To: APT Development Team \n" -"POT-Creation-Date: 2014-03-14 09:13+0100\n" +"POT-Creation-Date: 2014-03-15 18:13+0100\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME \n" "Language-Team: LANGUAGE \n" diff --git a/po/ar.po b/po/ar.po index 1f8759b0d..45eebe389 100644 --- a/po/ar.po +++ b/po/ar.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: apt_po\n" "Report-Msgid-Bugs-To: APT Development Team \n" -"POT-Creation-Date: 2014-03-14 09:13+0100\n" +"POT-Creation-Date: 2014-03-15 18:13+0100\n" "PO-Revision-Date: 2006-10-20 21:28+0300\n" "Last-Translator: Ossama M. Khayat \n" "Language-Team: Arabic \n" diff --git a/po/ast.po b/po/ast.po index 977985205..c9261a20c 100644 --- a/po/ast.po +++ b/po/ast.po @@ -4,7 +4,7 @@ msgid "" msgstr "" "Project-Id-Version: apt 0.7.18\n" "Report-Msgid-Bugs-To: APT Development Team \n" -"POT-Creation-Date: 2014-03-14 09:13+0100\n" +"POT-Creation-Date: 2014-03-15 18:13+0100\n" "PO-Revision-Date: 2010-10-02 23:35+0100\n" "Last-Translator: Iñigo Varela \n" "Language-Team: Asturian (ast)\n" diff --git a/po/bg.po b/po/bg.po index 2f1318a55..0194550f7 100644 --- a/po/bg.po +++ b/po/bg.po @@ -10,7 +10,7 @@ msgid "" msgstr "" "Project-Id-Version: apt 0.7.21\n" "Report-Msgid-Bugs-To: APT Development Team \n" -"POT-Creation-Date: 2014-03-14 09:13+0100\n" +"POT-Creation-Date: 2014-03-15 18:13+0100\n" "PO-Revision-Date: 2012-06-25 17:23+0300\n" "Last-Translator: Damyan Ivanov \n" "Language-Team: Bulgarian \n" diff --git a/po/bs.po b/po/bs.po index c45c578dd..d612a7fcd 100644 --- a/po/bs.po +++ b/po/bs.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: apt 0.5.26\n" "Report-Msgid-Bugs-To: APT Development Team \n" -"POT-Creation-Date: 2014-03-14 09:13+0100\n" +"POT-Creation-Date: 2014-03-15 18:13+0100\n" "PO-Revision-Date: 2004-05-06 15:25+0100\n" "Last-Translator: Safir Šećerović \n" "Language-Team: Bosnian \n" diff --git a/po/ca.po b/po/ca.po index c9c50ff60..9fe4524f0 100644 --- a/po/ca.po +++ b/po/ca.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: apt 0.9.7.6\n" "Report-Msgid-Bugs-To: APT Development Team \n" -"POT-Creation-Date: 2014-03-14 09:13+0100\n" +"POT-Creation-Date: 2014-03-15 18:13+0100\n" "PO-Revision-Date: 2012-10-19 13:30+0200\n" "Last-Translator: Jordi Mallach \n" "Language-Team: Catalan \n" diff --git a/po/cs.po b/po/cs.po index 9e49d1058..92c325e46 100644 --- a/po/cs.po +++ b/po/cs.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: apt\n" "Report-Msgid-Bugs-To: APT Development Team \n" -"POT-Creation-Date: 2014-03-14 09:13+0100\n" +"POT-Creation-Date: 2014-03-15 18:13+0100\n" "PO-Revision-Date: 2012-07-08 13:46+0200\n" "Last-Translator: Miroslav Kure \n" "Language-Team: Czech \n" diff --git a/po/cy.po b/po/cy.po index ae663b74c..fe1458709 100644 --- a/po/cy.po +++ b/po/cy.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: APT\n" "Report-Msgid-Bugs-To: APT Development Team \n" -"POT-Creation-Date: 2014-03-14 09:13+0100\n" +"POT-Creation-Date: 2014-03-15 18:13+0100\n" "PO-Revision-Date: 2005-06-06 13:46+0100\n" "Last-Translator: Dafydd Harries \n" "Language-Team: Welsh \n" diff --git a/po/da.po b/po/da.po index a450013dc..5cd8f6c2f 100644 --- a/po/da.po +++ b/po/da.po @@ -10,7 +10,7 @@ msgid "" msgstr "" "Project-Id-Version: apt\n" "Report-Msgid-Bugs-To: APT Development Team \n" -"POT-Creation-Date: 2014-03-14 09:13+0100\n" +"POT-Creation-Date: 2014-03-15 18:13+0100\n" "PO-Revision-Date: 2013-12-14 23:51+0200\n" "Last-Translator: Joe Hansen \n" "Language-Team: Danish \n" diff --git a/po/de.po b/po/de.po index 5173b68cf..686f80cdc 100644 --- a/po/de.po +++ b/po/de.po @@ -10,7 +10,7 @@ msgid "" msgstr "" "Project-Id-Version: apt 0.9.2\n" "Report-Msgid-Bugs-To: APT Development Team \n" -"POT-Creation-Date: 2014-03-14 09:13+0100\n" +"POT-Creation-Date: 2014-03-15 18:13+0100\n" "PO-Revision-Date: 2012-06-27 10:55+0200\n" "Last-Translator: Holger Wansing \n" "Language-Team: Debian German \n" diff --git a/po/dz.po b/po/dz.po index d17a8764f..146732d6c 100644 --- a/po/dz.po +++ b/po/dz.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: apt_po.pot\n" "Report-Msgid-Bugs-To: APT Development Team \n" -"POT-Creation-Date: 2014-03-14 09:13+0100\n" +"POT-Creation-Date: 2014-03-15 18:13+0100\n" "PO-Revision-Date: 2006-09-19 09:49+0530\n" "Last-Translator: Kinley Tshering \n" "Language-Team: Dzongkha \n" diff --git a/po/el.po b/po/el.po index 2124388bc..115c55c81 100644 --- a/po/el.po +++ b/po/el.po @@ -16,7 +16,7 @@ msgid "" msgstr "" "Project-Id-Version: apt_po_el\n" "Report-Msgid-Bugs-To: APT Development Team \n" -"POT-Creation-Date: 2014-03-14 09:13+0100\n" +"POT-Creation-Date: 2014-03-15 18:13+0100\n" "PO-Revision-Date: 2008-08-26 18:25+0300\n" "Last-Translator: Θανάσης Νάτσης \n" "Language-Team: Greek \n" diff --git a/po/es.po b/po/es.po index 848301ee8..bab423cd6 100644 --- a/po/es.po +++ b/po/es.po @@ -33,7 +33,7 @@ msgid "" msgstr "" "Project-Id-Version: apt 0.8.10\n" "Report-Msgid-Bugs-To: APT Development Team \n" -"POT-Creation-Date: 2014-03-14 09:13+0100\n" +"POT-Creation-Date: 2014-03-15 18:13+0100\n" "PO-Revision-Date: 2011-01-24 11:47+0100\n" "Last-Translator: Javier Fernández-Sanguino Peña \n" "Language-Team: Debian Spanish \n" diff --git a/po/eu.po b/po/eu.po index 5a812f8b2..603341e31 100644 --- a/po/eu.po +++ b/po/eu.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: apt_po_eu\n" "Report-Msgid-Bugs-To: APT Development Team \n" -"POT-Creation-Date: 2014-03-14 09:13+0100\n" +"POT-Creation-Date: 2014-03-15 18:13+0100\n" "PO-Revision-Date: 2009-05-17 00:41+0200\n" "Last-Translator: Piarres Beobide \n" "Language-Team: Euskara \n" diff --git a/po/fi.po b/po/fi.po index b0315c754..05cbce44e 100644 --- a/po/fi.po +++ b/po/fi.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: apt 0.5.26\n" "Report-Msgid-Bugs-To: APT Development Team \n" -"POT-Creation-Date: 2014-03-14 09:13+0100\n" +"POT-Creation-Date: 2014-03-15 18:13+0100\n" "PO-Revision-Date: 2008-12-11 14:52+0200\n" "Last-Translator: Tapio Lehtonen \n" "Language-Team: Finnish \n" diff --git a/po/fr.po b/po/fr.po index 6ce872047..0b2034d38 100644 --- a/po/fr.po +++ b/po/fr.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: fr\n" "Report-Msgid-Bugs-To: APT Development Team \n" -"POT-Creation-Date: 2014-03-14 09:13+0100\n" +"POT-Creation-Date: 2014-03-15 18:13+0100\n" "PO-Revision-Date: 2013-08-17 07:57+0200\n" "Last-Translator: Christian Perrier \n" "Language-Team: French \n" diff --git a/po/gl.po b/po/gl.po index 4a18059f1..829174a1f 100644 --- a/po/gl.po +++ b/po/gl.po @@ -10,7 +10,7 @@ msgid "" msgstr "" "Project-Id-Version: apt_po_gl\n" "Report-Msgid-Bugs-To: APT Development Team \n" -"POT-Creation-Date: 2014-03-14 09:13+0100\n" +"POT-Creation-Date: 2014-03-15 18:13+0100\n" "PO-Revision-Date: 2011-05-12 15:28+0100\n" "Last-Translator: Miguel Anxo Bouzada \n" "Language-Team: galician \n" diff --git a/po/hu.po b/po/hu.po index 42fa2c9e3..0096dc6a1 100644 --- a/po/hu.po +++ b/po/hu.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: apt trunk\n" "Report-Msgid-Bugs-To: APT Development Team \n" -"POT-Creation-Date: 2014-03-14 09:13+0100\n" +"POT-Creation-Date: 2014-03-15 18:13+0100\n" "PO-Revision-Date: 2012-06-25 17:09+0200\n" "Last-Translator: Gabor Kelemen \n" "Language-Team: Hungarian \n" diff --git a/po/it.po b/po/it.po index 565350928..889898760 100644 --- a/po/it.po +++ b/po/it.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: apt\n" "Report-Msgid-Bugs-To: APT Development Team \n" -"POT-Creation-Date: 2014-03-14 09:13+0100\n" +"POT-Creation-Date: 2014-03-15 18:13+0100\n" "PO-Revision-Date: 2013-08-27 22:06+0200\n" "Last-Translator: Milo Casagrande \n" "Language-Team: Italian \n" diff --git a/po/ja.po b/po/ja.po index 5f8baad64..eda615688 100644 --- a/po/ja.po +++ b/po/ja.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: apt 0.9.9.4\n" "Report-Msgid-Bugs-To: APT Development Team \n" -"POT-Creation-Date: 2014-03-14 09:13+0100\n" +"POT-Creation-Date: 2014-03-15 18:13+0100\n" "PO-Revision-Date: 2013-08-11 19:39+0900\n" "Last-Translator: Kenshi Muto \n" "Language-Team: Debian Japanese List \n" diff --git a/po/km.po b/po/km.po index bd43f3971..b3f3482f3 100644 --- a/po/km.po +++ b/po/km.po @@ -10,7 +10,7 @@ msgid "" msgstr "" "Project-Id-Version: apt_po_km\n" "Report-Msgid-Bugs-To: APT Development Team \n" -"POT-Creation-Date: 2014-03-14 09:13+0100\n" +"POT-Creation-Date: 2014-03-15 18:13+0100\n" "PO-Revision-Date: 2006-10-10 09:48+0700\n" "Last-Translator: Khoem Sokhem \n" "Language-Team: Khmer \n" diff --git a/po/ko.po b/po/ko.po index be87181c2..a3ee6f7a7 100644 --- a/po/ko.po +++ b/po/ko.po @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: apt\n" "Report-Msgid-Bugs-To: APT Development Team \n" -"POT-Creation-Date: 2014-03-14 09:13+0100\n" +"POT-Creation-Date: 2014-03-15 18:13+0100\n" "PO-Revision-Date: 2010-08-30 02:31+0900\n" "Last-Translator: Changwoo Ryu \n" "Language-Team: Korean \n" diff --git a/po/ku.po b/po/ku.po index c39eea170..310c40088 100644 --- a/po/ku.po +++ b/po/ku.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: apt-ku\n" "Report-Msgid-Bugs-To: APT Development Team \n" -"POT-Creation-Date: 2014-03-14 09:13+0100\n" +"POT-Creation-Date: 2014-03-15 18:13+0100\n" "PO-Revision-Date: 2008-05-08 12:48+0200\n" "Last-Translator: Erdal Ronahi \n" "Language-Team: ku \n" diff --git a/po/lt.po b/po/lt.po index b1bf64a8f..a62dbdf92 100644 --- a/po/lt.po +++ b/po/lt.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: apt\n" "Report-Msgid-Bugs-To: APT Development Team \n" -"POT-Creation-Date: 2014-03-14 09:13+0100\n" +"POT-Creation-Date: 2014-03-15 18:13+0100\n" "PO-Revision-Date: 2008-08-02 01:47-0400\n" "Last-Translator: Gintautas Miliauskas \n" "Language-Team: Lithuanian \n" diff --git a/po/mr.po b/po/mr.po index 640dbdd15..1212fcfd5 100644 --- a/po/mr.po +++ b/po/mr.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: apt\n" "Report-Msgid-Bugs-To: APT Development Team \n" -"POT-Creation-Date: 2014-03-14 09:13+0100\n" +"POT-Creation-Date: 2014-03-15 18:13+0100\n" "PO-Revision-Date: 2008-11-20 23:27+0530\n" "Last-Translator: Sampada \n" "Language-Team: Marathi, janabhaaratii, C-DAC, Mumbai, India " diff --git a/po/nb.po b/po/nb.po index 118f57dd3..0397133db 100644 --- a/po/nb.po +++ b/po/nb.po @@ -11,7 +11,7 @@ msgid "" msgstr "" "Project-Id-Version: apt\n" "Report-Msgid-Bugs-To: APT Development Team \n" -"POT-Creation-Date: 2014-03-14 09:13+0100\n" +"POT-Creation-Date: 2014-03-15 18:13+0100\n" "PO-Revision-Date: 2010-09-01 21:10+0200\n" "Last-Translator: Hans Fredrik Nordhaug \n" "Language-Team: Norwegian Bokmål \n" diff --git a/po/ne.po b/po/ne.po index ac7107726..e109dac77 100644 --- a/po/ne.po +++ b/po/ne.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: apt_po\n" "Report-Msgid-Bugs-To: APT Development Team \n" -"POT-Creation-Date: 2014-03-14 09:13+0100\n" +"POT-Creation-Date: 2014-03-15 18:13+0100\n" "PO-Revision-Date: 2006-06-12 14:35+0545\n" "Last-Translator: Shiva Pokharel \n" "Language-Team: Nepali \n" diff --git a/po/nl.po b/po/nl.po index 613a6ac6c..2c14bec87 100644 --- a/po/nl.po +++ b/po/nl.po @@ -11,7 +11,7 @@ msgid "" msgstr "" "Project-Id-Version: apt 0.8.15.9\n" "Report-Msgid-Bugs-To: APT Development Team \n" -"POT-Creation-Date: 2014-03-14 09:13+0100\n" +"POT-Creation-Date: 2014-03-15 18:13+0100\n" "PO-Revision-Date: 2011-12-05 17:10+0100\n" "Last-Translator: Jeroen Schot \n" "Language-Team: Debian l10n Dutch \n" diff --git a/po/nn.po b/po/nn.po index d66a4e1a2..270bc570c 100644 --- a/po/nn.po +++ b/po/nn.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: apt_nn\n" "Report-Msgid-Bugs-To: APT Development Team \n" -"POT-Creation-Date: 2014-03-14 09:13+0100\n" +"POT-Creation-Date: 2014-03-15 18:13+0100\n" "PO-Revision-Date: 2005-02-14 23:30+0100\n" "Last-Translator: Havard Korsvoll \n" "Language-Team: Norwegian nynorsk \n" diff --git a/po/pl.po b/po/pl.po index b9c22bad7..ec5beefd1 100644 --- a/po/pl.po +++ b/po/pl.po @@ -11,7 +11,7 @@ msgid "" msgstr "" "Project-Id-Version: apt 0.9.7.3\n" "Report-Msgid-Bugs-To: APT Development Team \n" -"POT-Creation-Date: 2014-03-14 09:13+0100\n" +"POT-Creation-Date: 2014-03-15 18:13+0100\n" "PO-Revision-Date: 2012-07-28 21:53+0200\n" "Last-Translator: Michał Kułach \n" "Language-Team: Polish \n" diff --git a/po/pt.po b/po/pt.po index 2771d44ea..5a1d446a0 100644 --- a/po/pt.po +++ b/po/pt.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: apt\n" "Report-Msgid-Bugs-To: APT Development Team \n" -"POT-Creation-Date: 2014-03-14 09:13+0100\n" +"POT-Creation-Date: 2014-03-15 18:13+0100\n" "PO-Revision-Date: 2012-06-29 15:45+0100\n" "Last-Translator: Miguel Figueiredo \n" "Language-Team: Portuguese \n" diff --git a/po/pt_BR.po b/po/pt_BR.po index a16be868a..f3abbf512 100644 --- a/po/pt_BR.po +++ b/po/pt_BR.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: apt\n" "Report-Msgid-Bugs-To: APT Development Team \n" -"POT-Creation-Date: 2014-03-14 09:13+0100\n" +"POT-Creation-Date: 2014-03-15 18:13+0100\n" "PO-Revision-Date: 2008-11-17 02:33-0200\n" "Last-Translator: Felipe Augusto van de Wiel (faw) \n" "Language-Team: Brazilian Portuguese \n" -"POT-Creation-Date: 2014-03-14 09:13+0100\n" +"POT-Creation-Date: 2014-03-15 18:13+0100\n" "PO-Revision-Date: 2008-11-15 02:21+0200\n" "Last-Translator: Eddy Petrișor \n" "Language-Team: Romanian \n" diff --git a/po/ru.po b/po/ru.po index 930eb03fe..387b2a926 100644 --- a/po/ru.po +++ b/po/ru.po @@ -13,7 +13,7 @@ msgid "" msgstr "" "Project-Id-Version: apt rev2227.1.3\n" "Report-Msgid-Bugs-To: APT Development Team \n" -"POT-Creation-Date: 2014-03-14 09:13+0100\n" +"POT-Creation-Date: 2014-03-15 18:13+0100\n" "PO-Revision-Date: 2012-06-30 08:47+0400\n" "Last-Translator: Yuri Kozlov \n" "Language-Team: Russian \n" diff --git a/po/sk.po b/po/sk.po index 9dd96041c..f91460d72 100644 --- a/po/sk.po +++ b/po/sk.po @@ -10,7 +10,7 @@ msgid "" msgstr "" "Project-Id-Version: apt\n" "Report-Msgid-Bugs-To: APT Development Team \n" -"POT-Creation-Date: 2014-03-14 09:13+0100\n" +"POT-Creation-Date: 2014-03-15 18:13+0100\n" "PO-Revision-Date: 2012-06-28 20:49+0100\n" "Last-Translator: Ivan Masár \n" "Language-Team: Slovak \n" diff --git a/po/sl.po b/po/sl.po index 14b7c53c9..a67107a34 100644 --- a/po/sl.po +++ b/po/sl.po @@ -4,7 +4,7 @@ msgid "" msgstr "" "Project-Id-Version: apt 0.5.5\n" "Report-Msgid-Bugs-To: APT Development Team \n" -"POT-Creation-Date: 2014-03-14 09:13+0100\n" +"POT-Creation-Date: 2014-03-15 18:13+0100\n" "PO-Revision-Date: 2012-06-27 21:29+0000\n" "Last-Translator: Andrej Znidarsic \n" "Language-Team: Slovenian \n" diff --git a/po/sv.po b/po/sv.po index 3cb891ddd..45fe626f2 100644 --- a/po/sv.po +++ b/po/sv.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: apt\n" "Report-Msgid-Bugs-To: APT Development Team \n" -"POT-Creation-Date: 2014-03-14 09:13+0100\n" +"POT-Creation-Date: 2014-03-15 18:13+0100\n" "PO-Revision-Date: 2010-08-24 21:18+0100\n" "Last-Translator: Daniel Nylander \n" "Language-Team: Swedish \n" diff --git a/po/th.po b/po/th.po index b6415125a..d928fd2a1 100644 --- a/po/th.po +++ b/po/th.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: apt\n" "Report-Msgid-Bugs-To: APT Development Team \n" -"POT-Creation-Date: 2014-03-14 09:13+0100\n" +"POT-Creation-Date: 2014-03-15 18:13+0100\n" "PO-Revision-Date: 2012-10-27 22:44+0700\n" "Last-Translator: Theppitak Karoonboonyanan \n" "Language-Team: Thai \n" diff --git a/po/tl.po b/po/tl.po index dbd69f19f..cc8bd7bd2 100644 --- a/po/tl.po +++ b/po/tl.po @@ -10,7 +10,7 @@ msgid "" msgstr "" "Project-Id-Version: apt\n" "Report-Msgid-Bugs-To: APT Development Team \n" -"POT-Creation-Date: 2014-03-14 09:13+0100\n" +"POT-Creation-Date: 2014-03-15 18:13+0100\n" "PO-Revision-Date: 2007-03-29 21:36+0800\n" "Last-Translator: Eric Pareja \n" "Language-Team: Tagalog \n" diff --git a/po/tr.po b/po/tr.po index 22837bac3..e9cc1fcd9 100644 --- a/po/tr.po +++ b/po/tr.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: apt\n" "Report-Msgid-Bugs-To: APT Development Team \n" -"POT-Creation-Date: 2014-03-14 09:13+0100\n" +"POT-Creation-Date: 2014-03-15 18:13+0100\n" "PO-Revision-Date: 2013-02-18 03:41+0200\n" "Last-Translator: Mert Dirik \n" "Language-Team: Debian l10n Turkish\n" diff --git a/po/uk.po b/po/uk.po index 0d9c44873..b72a1fd26 100644 --- a/po/uk.po +++ b/po/uk.po @@ -12,7 +12,7 @@ msgid "" msgstr "" "Project-Id-Version: apt-all\n" "Report-Msgid-Bugs-To: APT Development Team \n" -"POT-Creation-Date: 2014-03-14 09:13+0100\n" +"POT-Creation-Date: 2014-03-15 18:13+0100\n" "PO-Revision-Date: 2012-09-25 20:19+0300\n" "Last-Translator: A. Bondarenko \n" "Language-Team: Українська \n" diff --git a/po/vi.po b/po/vi.po index 42fe3efe6..464d237a4 100644 --- a/po/vi.po +++ b/po/vi.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: apt 0.9.15.5\n" "Report-Msgid-Bugs-To: APT Development Team \n" -"POT-Creation-Date: 2014-03-14 09:13+0100\n" +"POT-Creation-Date: 2014-03-15 18:13+0100\n" "PO-Revision-Date: 2014-03-03 15:40+0700\n" "Last-Translator: Trần Ngọc Quân \n" "Language-Team: Vietnamese \n" diff --git a/po/zh_CN.po b/po/zh_CN.po index 4ee8099bb..671f4453f 100644 --- a/po/zh_CN.po +++ b/po/zh_CN.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: apt 0.8.0~pre1\n" "Report-Msgid-Bugs-To: APT Development Team \n" -"POT-Creation-Date: 2014-03-14 09:13+0100\n" +"POT-Creation-Date: 2014-03-15 18:13+0100\n" "PO-Revision-Date: 2010-08-26 14:42+0800\n" "Last-Translator: Aron Xu \n" "Language-Team: Chinese (simplified) \n" diff --git a/po/zh_TW.po b/po/zh_TW.po index 5199b3f99..53ea6b521 100644 --- a/po/zh_TW.po +++ b/po/zh_TW.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: 0.5.4\n" "Report-Msgid-Bugs-To: APT Development Team \n" -"POT-Creation-Date: 2014-03-14 09:13+0100\n" +"POT-Creation-Date: 2014-03-15 18:13+0100\n" "PO-Revision-Date: 2009-01-28 10:41+0800\n" "Last-Translator: Tetralet \n" "Language-Team: Debian-user in Chinese [Big5] Date: Mon, 17 Mar 2014 13:43:12 +0100 Subject: apt-inst: Do not try to create a substring of an empty string in error reporting One of our compressors (the empty one) has an empty extension. Calling substr on it fails. --- apt-inst/deb/debfile.cc | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/apt-inst/deb/debfile.cc b/apt-inst/deb/debfile.cc index 3803329fa..a63cb6716 100644 --- a/apt-inst/deb/debfile.cc +++ b/apt-inst/deb/debfile.cc @@ -124,8 +124,10 @@ bool debDebFile::ExtractTarMember(pkgDirStream &Stream,const char *Name) { std::string ext = std::string(Name) + ".{"; for (std::vector::const_iterator c = compressor.begin(); - c != compressor.end(); ++c) - ext.append(c->Extension.substr(1)); + c != compressor.end(); ++c) { + if (!c->Extension.empty()) + ext.append(c->Extension.substr(1)); + } ext.append("}"); return _error->Error(_("Internal error, could not locate member %s"), ext.c_str()); } -- cgit v1.2.3 From c4b113e650dbdbb4c5c9c6f36437c94db6b214d9 Mon Sep 17 00:00:00 2001 From: David Kalnischkies Date: Fri, 21 Mar 2014 11:04:26 +0100 Subject: continue reading in xz even if it outputs nothing It can happen that content in our buffer is not enough to produce a meaningful output in which case no output is created by liblzma, but still reports that everything is okay and we should go on. The code assumes it has reached the end through if it encounters a null read, so this commit makes it so that it looks like this read was interrupted just like the lowlevel read() on uncompressed files could. It subsequently fixes the issue with that as well as until now our loop would still break even if we wanted it to continue on. (This bug triggers our usual "Hash sum mismatch" error) Reported-By: Stefan Lippers-Hollmann --- apt-pkg/contrib/fileutl.cc | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/apt-pkg/contrib/fileutl.cc b/apt-pkg/contrib/fileutl.cc index ba79720d8..69406a9bf 100644 --- a/apt-pkg/contrib/fileutl.cc +++ b/apt-pkg/contrib/fileutl.cc @@ -1430,7 +1430,15 @@ bool FileFd::Read(void *To,unsigned long long Size,unsigned long long *Actual) errno = 0; } else + { Res = Size - d->lzma->stream.avail_out; + if (Res == 0) + { + // lzma run was okay, but produced no output… + Res = -1; + errno = EINTR; + } + } } #endif else @@ -1439,7 +1447,12 @@ bool FileFd::Read(void *To,unsigned long long Size,unsigned long long *Actual) if (Res < 0) { if (errno == EINTR) + { + // trick the while-loop into running again + Res = 1; + errno = 0; continue; + } if (false) /* dummy so that the rest can be 'else if's */; #ifdef HAVE_ZLIB -- cgit v1.2.3 From a17482f89b636a52aacc57776bfc8041cf4da508 Mon Sep 17 00:00:00 2001 From: David Kalnischkies Date: Fri, 21 Mar 2014 11:47:56 +0100 Subject: only consider versioned kernel packages in autoremove Metapackages like "linux-image-amd64" are otherwise matched by our extraction as well, which later on can't be successfully compared via dpkg --compare-versions as the 'amd64' bit isn't a version number. (Luckily none of our architectures starts with a digit.) This was broken by me in 0.9.16 as I moved a shell-glob matcher to a regex-based one which has slightly different semantics regarding '*'. Closes: 741962 --- debian/apt.auto-removal.sh | 2 +- test/integration/test-kernel-helper-autoremove | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/debian/apt.auto-removal.sh b/debian/apt.auto-removal.sh index 0c5158658..c00416127 100644 --- a/debian/apt.auto-removal.sh +++ b/debian/apt.auto-removal.sh @@ -41,7 +41,7 @@ version_test_gt () return "$?" } -list="$(${DPKG} -l | awk '/^ii[ ]+(linux|kfreebsd|gnumach)-image-[0-9]*/ && $2 !~ /-dbg$/ { print $2 }' | sed -e 's#\(linux\|kfreebsd\|gnumach\)-image-##')" +list="$(${DPKG} -l | awk '/^ii[ ]+(linux|kfreebsd|gnumach)-image-[0-9]/ && $2 !~ /-dbg$/ { print $2 }' | sed -e 's#\(linux\|kfreebsd\|gnumach\)-image-##')" latest_version="" previous_version="" diff --git a/test/integration/test-kernel-helper-autoremove b/test/integration/test-kernel-helper-autoremove index 7713c0875..c51caa758 100755 --- a/test/integration/test-kernel-helper-autoremove +++ b/test/integration/test-kernel-helper-autoremove @@ -20,6 +20,7 @@ CURRENTKERNEL="linux-image-$(uname -r)" insertinstalledpackage "$CURRENTKERNEL" 'amd64' '1' insertinstalledpackage 'linux-image-1.0.0-2-generic' 'amd64' '1.0.0-2' insertinstalledpackage 'linux-image-100.0.0-1-generic' 'amd64' '100.0.0-1' +insertinstalledpackage 'linux-image-amd64' 'amd64' '100.0.0-1' # ensure that the '.' is really a dot and not a wildcard insertinstalledpackage 'linux-headers-1000000-1-generic' 'amd64' '100.0.0-1' -- cgit v1.2.3 From e1ed0993c712183df4ffc6272947f5aac58eb59b Mon Sep 17 00:00:00 2001 From: Beatrice Torracca Date: Fri, 21 Mar 2014 12:03:34 +0100 Subject: Italian manpages translation update Closes: 741867 --- doc/po/it.po | 223 +++++++++++++++++++++++++++++++++++------------------------ 1 file changed, 131 insertions(+), 92 deletions(-) diff --git a/doc/po/it.po b/doc/po/it.po index dc74eb25e..3a54e10c9 100644 --- a/doc/po/it.po +++ b/doc/po/it.po @@ -5,14 +5,13 @@ # Eugenia Franzoni, 2000 # Hugh Hartmann, 2000-2012 # Gabriele Stilli, 2012 -# Beatrice Torracca, 2012 -# Beatrice Torracca , 2012. +# Beatrice Torracca , 2012, 2014. msgid "" msgstr "" "Project-Id-Version: \n" "Report-Msgid-Bugs-To: APT Development Team \n" -"POT-Creation-Date: 2014-03-14 09:13+0100\n" -"PO-Revision-Date: 2012-12-23 18:04+0200\n" +"POT-Creation-Date: 2014-03-14 09:57+0100\n" +"PO-Revision-Date: 2014-03-15 23:29+0200\n" "Last-Translator: Beatrice Torracca \n" "Language-Team: Italian \n" "Language: it\n" @@ -692,7 +691,6 @@ msgstr "Descrizione" #. type: Content of: #: apt-get.8.xml:41 -#, fuzzy #| msgid "" #| "apt-get is the command-line tool for handling " #| "packages, and may be considered the user's \"back-end\" to other tools " @@ -707,7 +705,7 @@ msgstr "" "apt-get è lo strumento a riga di comando per gestire " "pacchetti e può essere considerato il «backend» dell'utente per altri " "strumenti che usano la libreria APT. Esistono diversi «frontend» per " -"interfaccia, come &dselect;, &aptitude;, &synaptic; e &wajig;." +"interfaccia, come &aptitude;, &synaptic; e &wajig;." #. type: Content of: #: apt-get.8.xml:46 apt-cache.8.xml:46 apt-cdrom.8.xml:53 apt-config.8.xml:46 @@ -1056,7 +1054,6 @@ msgstr "" #. type: Content of: #: apt-get.8.xml:217 -#, fuzzy #| msgid "" #| "clean clears out the local repository of retrieved " #| "package files. It removes everything but the lock file from " @@ -1072,12 +1069,9 @@ msgid "" "partial/." msgstr "" "clean ripulisce il repository locale dei file di " -"pacchetto recuperati. Rimuove tutto da &cachedir;/archives/ e &cachedir;/archives/partial/, tranne il " -"file di lock. Quando APT viene usato come metodo per &dselect;, " -"clean viene eseguito automaticamente. Chi non usa dselect " -"probabilmente è bene che usi apt-get clean di quando in " -"quando per liberare spazio su disco." +"pacchetto recuperati. Rimuove tutto da " +"&cachedir;/archives/ e " +"&cachedir;/archives/partial/, tranne il file di lock." #. type: Content of: #: apt-get.8.xml:224 @@ -1170,7 +1164,6 @@ msgstr "" #. type: Content of: #: apt-get.8.xml:277 -#, fuzzy #| msgid "" #| "Fix; attempt to correct a system with broken dependencies in place. This " #| "option, when used with install/remove, can omit any packages to permit " @@ -1204,10 +1197,10 @@ msgstr "" "volta; APT stesso non permette l'esistenza di pacchetti con dipendenze non " "soddisfatte in un sistema. È possibile che la struttura di dipendenze di un " "sistema sia corrotta a tal punto da richiedere un intervento manuale (il che " -"di solito significa usare &dselect; o dpkg --remove per " -"eliminare alcuni dei pacchetti che creano problemi). L'uso di questa opzione " -"insieme a può in alcune situazioni produrre un errore. " -"Voce di configurazione: APT::Get::Fix-Broken." +"di solito significa usare dpkg --remove per eliminare " +"alcuni dei pacchetti che creano problemi). L'uso di questa opzione insieme a " +" può in alcune situazioni produrre un errore. Voce di " +"configurazione: APT::Get::Fix-Broken." #. type: Content of: #: apt-get.8.xml:292 @@ -1353,7 +1346,6 @@ msgstr "" #. type: Content of: #: apt-get.8.xml:370 -#, fuzzy #| msgid "" #| "This option controls the architecture packages are built for by " #| "apt-get source --compile and how cross-" @@ -1378,7 +1370,6 @@ msgstr "" #. type: Content of: #: apt-get.8.xml:380 -#, fuzzy #| msgid "" #| "This option controls the architecture packages are built for by " #| "apt-get source --compile and how cross-" @@ -1393,12 +1384,12 @@ msgid "" "than one build profile can be activated at a time by concatenating them with " "a comma. Configuration Item: APT::Build-Profiles." msgstr "" -"Questa opzione controlla l'architettura per la quale apt-get source " -"--compile compila i pacchetti e come le dipendenze di compilazione " -"incrociata sono soddisfatte. In modo predefinito non è impostata, il che " -"significa che l'architettura ospite è la stessa dell'architettura di " -"compilazione (che è definita da APT::Architecture). Voce " -"di configurazione: APT::Get::Host-Architecture." +"Questa opzione controlla i profili di compilazione attivi per i quali " +"apt-get source --compile compila un pacchetto sorgente e " +"come le dipendenze di compilazione sono soddisfatte. In modo predefinito non " +"è attivo alcun profilo di compilazione. Più profili di compilazione possono " +"essere attivati contemporaneamente concatenandoli con una virgola. Voce di " +"configurazione: APT::Build-Profiles." #. type: Content of: #: apt-get.8.xml:391 @@ -1433,6 +1424,13 @@ msgid "" "will never remove packages, only allow adding new ones. Configuration Item: " "APT::Get::Upgrade-Allow-New." msgstr "" +"Permette l'installazione di nuovi pacchetti quando usato insieme a " +"upgrade. Ciò è utile se l'aggiornamento di un pacchetto " +"installato richiede l'installazione di nuove dipendenze. Invece di bloccare " +"il pacchetto upgrade aggiornerà il pacchetto e installerà " +"le nuove dipendenze. Notare che upgrade con questa " +"opzione non rimuoverà mai pacchetti, permetterà solo l'aggiunta di nuovi. " +"Voce di configurazione: APT::Get::Upgrade-Allow-New." #. type: Content of: #: apt-get.8.xml:415 @@ -1658,6 +1656,12 @@ msgid "" "Item: DpkgPM::Progress and Dpkg::Progress-Fancy." msgstr "" +"Mostra informazioni sul progresso facili da leggere nella finestra del " +"terminale quando i pacchetti sono installati, aggiornati o rimossi. Per una " +"versione analizzabile da macchina di questi dati, vedere README.progress-" +"reporting nella directory della documentazione di apt. Voce di " +"configurazione: DpkgPM::Progress e Dpkg" +"::Progress-Fancy." #. type: Content of: #: apt-get.8.xml:548 apt-cache.8.xml:345 apt-key.8.xml:176 apt-mark.8.xml:127 @@ -1676,7 +1680,6 @@ msgstr "Vedere anche" #. type: Content of: <refentry><refsect1><para> #: apt-get.8.xml:559 -#, fuzzy #| msgid "" #| "&apt-cache;, &apt-cdrom;, &dpkg;, &dselect;, &sources-list;, &apt-conf;, " #| "&apt-config;, &apt-secure;, The APT User's guide in &guidesdir;, &apt-" @@ -1686,9 +1689,9 @@ msgid "" "&apt-secure;, The APT User's guide in &guidesdir;, &apt-preferences;, the " "APT Howto." msgstr "" -"&apt-cache;, &apt-cdrom;, &dpkg;, &dselect;, &sources-list;, &apt-conf;, " -"&apt-config;, &apt-secure;, la Guida dell'utente di APT in &guidesdir;, &apt-" -"preferences;, l'APT Howto." +"&apt-cache;, &apt-cdrom;, &dpkg;, &sources-list;, &apt-conf;, &apt-config;, " +"&apt-secure;, la guida dell'utente di APT in &guidesdir;, &apt-preferences;, " +"l'APT Howto." #. type: Content of: <refentry><refsect1><title> #: apt-get.8.xml:564 apt-cache.8.xml:357 apt-mark.8.xml:137 @@ -2993,7 +2996,6 @@ msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt-cdrom.8.xml:87 -#, fuzzy #| msgid "" #| "Mount point; specify the location to mount the CD-ROM. This mount point " #| "must be listed in <filename>/etc/fstab</filename> and properly " @@ -3003,10 +3005,9 @@ msgid "" "<option>--cdrom</option> option. Configuration Item: <literal>Acquire::" "cdrom::AutoDetect</literal>." msgstr "" -"Punto di mount; specifica la posizione in cui montare il CD-ROM. Questo " -"punto di mount deve essere elencato nel file <filename>/etc/fstab</filename> " -"e configurato correttamente. Voce di configurazione: <literal>Acquire::" -"cdrom::mount</literal>." +"Non cercare di rilevare automaticamente il percorso del CD-ROM. Solitamente " +"usato insieme all'opzione <option>--cdrom</option>. Voce di configurazione: " +"<literal>Acquire::cdrom::AutoDetect</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt-cdrom.8.xml:95 @@ -3558,6 +3559,11 @@ msgid "" "is empty. The <envar>DEB_BUILD_PROFILES</envar> as used by &dpkg-" "buildpackage; overrides the list notation." msgstr "" +"Elenco dei profili di compilazione abilitati per la risoluzione delle " +"dipendenze di compilazione, senza il prefisso dello spazio dei nomi " +"«<literal>profile.</literal>». In modo predefinito questa lista è vuota. " +"<envar>DEB_BUILD_PROFILES</envar>, come usata da &dpkg-buildpackage; ha la " +"precedenza sulla notazione della lista." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt.conf.5.xml:190 @@ -3987,7 +3993,6 @@ msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt.conf.5.xml:400 -#, fuzzy #| msgid "" #| "The used bandwidth can be limited with <literal>Acquire::http::Dl-Limit</" #| "literal> which accepts integer values in kilobytes. The default value is " @@ -4001,11 +4006,11 @@ msgid "" "bandwidth. Note that this option implicitly disables downloading from " "multiple servers at the same time." msgstr "" -"La quantità di banda utilizzata può essere limitata con <literal>Acquire::" -"http::Dl-Limit</literal> che accetta valori interi in kilobyte. Il valore " -"predefinito è 0 che disattiva il limite e cerca di usare tutta la banda " -"disponibile (notare che questa opzione implicitamente disabilita lo " -"scaricamento da più server contemporaneamente)." +"La quantità di banda utilizzata può essere limitata con " +"<literal>Acquire::http::Dl-Limit</literal> che accetta valori interi in " +"kilobyte al secondo. Il valore predefinito è 0 che disattiva il limite e " +"cerca di usare tutta la banda disponibile. Notare che questa opzione " +"implicitamente disabilita lo scaricamento da più server contemporaneamente." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt.conf.5.xml:407 @@ -4032,6 +4037,16 @@ msgid "" "takes precedence over the legacy option name <literal>ProxyAutoDetect</" "literal>." msgstr "" +"<literal>Acquire::http::Proxy-Auto-Detect</literal> può essere usato per " +"specificare un comando esterno per rilevare il proxy http da usare. Apt si " +"aspetta che il comando produca in output il proxy sullo stdout nello stile " +"<literal>http://proxy:porta/</literal>. Questo avrà la precedenza sul " +"generico <literal>Acquire::http::Proxy</literal>, ma non su qualsiasi " +"configurazione specifica di host proxy impostata con " +"<literal>Acquire::http::Proxy::$HOST</literal>. Vedere il pacchetto &squid-" +"deb-proxy-client; per un esempio di implementazione che usa avahi. Questa " +"opzione ha la precedenza sull'opzione col nome obsoleto " +"<literal>ProxyAutoDetect</literal>." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt.conf.5.xml:429 @@ -4415,12 +4430,12 @@ msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt.conf.5.xml:585 msgid "When downloading, force to use only the IPv4 protocol." -msgstr "" +msgstr "Durante gli scaricamenti, forza l'uso del solo protocollo IPv4." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt.conf.5.xml:591 msgid "When downloading, force to use only the IPv6 protocol." -msgstr "" +msgstr "Durante gli scaricamenti, forza l'uso del solo protocollo IPv6." #. type: Content of: <refentry><refsect1><title> #: apt.conf.5.xml:598 @@ -4659,7 +4674,6 @@ msgstr "" #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt.conf.5.xml:712 -#, fuzzy #| msgid "" #| "This is a list of shell commands to run before invoking &dpkg;. Like " #| "<literal>options</literal> this must be specified in list notation. The " @@ -4676,14 +4690,14 @@ msgid "" msgstr "" "Questa è una lista di comandi di shell da eseguire prima di invocare &dpkg;. " "Come <literal>options</literal> deve essere specificata con la notazione per " -"le liste. I comandi sono invocati in ordine usando <filename>/bin/sh</" -"filename>; se qualcuno dei comandi fallisce APT terminerà annullando. APT " -"passa i nomi di file di tutti i file .deb che sta per installare ai comandi, " -"uno per riga, sullo standard input." +"le liste. I comandi sono invocati in ordine usando " +"<filename>/bin/sh</filename>; se qualcuno dei comandi fallisce APT terminerà " +"annullando. APT passa i nomi di file di tutti i file .deb che sta per " +"installare ai comandi, uno per riga sul descrittore di file richiesto, " +"usando in modo predefinito lo standard input." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt.conf.5.xml:719 -#, fuzzy #| msgid "" #| "Version 2 of this protocol dumps more information, including the protocol " #| "version, the APT configuration space and the packages, files and versions " @@ -4698,10 +4712,9 @@ msgid "" msgstr "" "La versione 2 di questo protocollo fa il dump di più informazioni, inclusi " "la versione del protocollo, lo spazio di configurazione di APT, e i " -"pacchetti, file e versioni che vengono modificati. La versione 2 viene " -"abilitata impostando <literal>DPkg::Tools::options::cmd::Version</literal> a " -"2. <literal>cmd</literal> è un comando passato a <literal>Pre-Install-Pkgs</" -"literal>." +"pacchetti, file e versioni che vengono modificati. La versione 3 aggiunge " +"l'architettura e il contrassegno <literal>MultiArch</literal> per ciascuna " +"versione di cui viene fatto il dump." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt.conf.5.xml:724 @@ -4713,6 +4726,12 @@ msgid "" "the requested version it will send the information in the highest version it " "has support for instead." msgstr "" +"La versione del protocollo da usare per il comando " +"<literal><replaceable>cmd</replaceable></literal> può essere scelta " +"impostando in modo appropriato <literal>DPkg::Tools::options::<replaceable>cm" +"d</replaceable>::Version</literal>, il cui valore predefinito è la versione " +"1. Se APT non supporta la versione richiesta invierà invece l'informazione " +"nella versione più alta per cui ha il supporto." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt.conf.5.xml:731 @@ -4724,6 +4743,13 @@ msgid "" "looking for the environment variable <envar>APT_HOOK_INFO_FD</envar> which " "contains the number of the used file descriptor as a confirmation." msgstr "" +"Il descrittore di file da usare per inviare le informazioni può essere " +"richiesto con <literal>DPkg::Tools::options::<replaceable>cmd</replaceable>::" +"InfoFD</literal> che è in modo predefinito <literal>0</literal> per lo " +"standard input ed è disponibile a partire dalla versione 0.9.11. Il supporto " +"per l'opzione può essere controllato guardando la variabile d'ambiente " +"<envar>APT_HOOK_INFO_FD</envar> che contiene il numero del descrittore di " +"file usato per conferma." #. type: Content of: <refentry><refsect1><variablelist><varlistentry><listitem><para> #: apt.conf.5.xml:741 @@ -6784,10 +6810,10 @@ msgstr "" #. type: Content of: <refentry><refsect1><literallayout> #: sources.list.5.xml:82 -#, fuzzy, no-wrap +#, no-wrap #| msgid "deb [ options ] uri distribution [component1] [component2] [...]" msgid "deb [ options ] uri suite [component1] [component2] [...]" -msgstr "deb [ opzioni ] uri distribuzione [componente1] [componente2] [...]" +msgstr "deb [ opzioni ] uri suite [componente1] [componente2] [...]" #. type: Content of: <refentry><refsect1><para><literallayout> #: sources.list.5.xml:86 @@ -6811,6 +6837,23 @@ msgid "" " [option1]: [option1-value]\n" " " msgstr "" +" Types: deb deb-src\n" +" URIs: http://example.com\n" +" Suites: stable testing\n" +" Sections: componente1 componente2\n" +" Description: breve\n" +" lunga lunga lunga\n" +" [opzione1]: [valore-opzione1]\n" +"\n" +" Types: deb\n" +" URIs: http://another.example.com\n" +" Suites: experimental\n" +" Sections: componente1 componente2\n" +" Enabled: no\n" +" Description:breve\n" +" lunga lunga lunga\n" +" [opzione1]: [valore-opzione1]\n" +" " #. type: Content of: <refentry><refsect1><para> #: sources.list.5.xml:84 @@ -6818,10 +6861,11 @@ msgid "" "Alternatively a rfc822 style format is also supported: <placeholder type=" "\"literallayout\" id=\"0\"/>" msgstr "" +"In alternativa è gestito anche un formato in stile rfc822: <placeholder type=" +"\"literallayout\" id=\"0\"/>" #. type: Content of: <refentry><refsect1><para> #: sources.list.5.xml:105 -#, fuzzy #| msgid "" #| "The URI for the <literal>deb</literal> type must specify the base of the " #| "Debian distribution, from which APT will find the information it needs. " @@ -6842,18 +6886,16 @@ msgid "" "<literal>component</literal> must be present." msgstr "" "L'URI per il tipo <literal>deb</literal> deve specificare la base della " -"distribuzione Debian, dalla quale APT troverà le informazioni necessarie. " -"<literal>distribuzione</literal> può specificare un percorso esatto, nel " -"qual caso le componenti devono essere omesse e <literal>distribuzione</" -"literal> deve terminare con una sbarra (<literal>/</literal>). Questo è " -"utile nel caso in cui si è interessati solo a una particolare sottosezione " -"dell'archivio indicata dall'URI. Se <literal>distribuzione</literal> non " -"specifica un percorso esatto, deve essere presente almeno una " -"<literal>componente</literal>." +"distribuzione Debian, dalla quale APT troverà le informazioni di cui ha " +"bisogno. <literal>suite</literal> può specificare un percorso esatto, nel " +"qual caso le componenti devono essere omesse e <literal>suite</literal> deve " +"terminare con una sbarra (<literal>/</literal>). Questo è utile nel caso in " +"cui si è interessati solo a una particolare sottosezione dell'archivio " +"indicata dall'URI. Se <literal>suite</literal> non specifica un percorso " +"esatto, deve essere presente almeno una <literal>componente</literal>." #. type: Content of: <refentry><refsect1><para> #: sources.list.5.xml:114 -#, fuzzy #| msgid "" #| "<literal>distribution</literal> may also contain a variable, <literal>" #| "$(ARCH)</literal> which expands to the Debian architecture (such as " @@ -6871,8 +6913,8 @@ msgid "" "<literal>APT</literal> will automatically generate a URI with the current " "architecture otherwise." msgstr "" -"<literal>distribuzione</literal> può anche contenere una variabile <literal>" -"$(ARCH)</literal> che viene espansa nell'architettura Debian (come " +"<literal>suite</literal> può anche contenere una variabile " +"<literal>$(ARCH)</literal> che viene espansa nell'architettura Debian (come " "<literal>amd64</literal> o <literal>armel</literal>) usata nel sistema. Ciò " "consente di utilizzare file <filename>sources.list</filename> indipendenti " "dall'architettura. In generale questo è interessante solo quando viene " @@ -6881,7 +6923,6 @@ msgstr "" #. type: Content of: <refentry><refsect1><para> #: sources.list.5.xml:122 -#, fuzzy #| msgid "" #| "Since only one distribution can be specified per line it may be necessary " #| "to have multiple lines for the same URI, if a subset of all available " @@ -6907,17 +6948,18 @@ msgid "" "users. APT also parallelizes connections to different hosts to more " "effectively deal with sites with low bandwidth." msgstr "" -"Dato che può essere specificata solo una distribuzione per riga, può essere " -"necessario avere più righe per lo stesso URI, se si desidera un sottoinsieme " -"di tutte le distribuzioni o componenti disponibili in quella posizione. APT " -"ordinerà la lista degli URI dopo aver generato internamente un insieme " -"completo, e riunirà i riferimenti multipli, per esempio al medesimo host " -"Internet in una singola connessione; in questo modo non stabilisce in modo " -"inefficiente una connessione FTP per poi chiuderla, fare qualcos'altro e " -"quindi ristabilire una connessione con il medesimo host. Questa funzionalità " -"è utile per accedere a siti FTP molto impegnati con un limite al numero di " -"accessi anonimi contemporanei. APT inoltre parallelizza le connessioni a " -"host differenti, per gestire in maniera più efficiente i siti con scarsa " +"Dato che, nel formato di sources.list in stile tradizionale, può essere " +"specificata solo una distribuzione per riga, può essere necessario avere più " +"righe per lo stesso URI, se si desidera un sottoinsieme di tutte le " +"distribuzioni o componenti disponibili in quella posizione. APT ordinerà la " +"lista degli URI dopo aver generato internamente un insieme completo, e " +"riunirà i riferimenti multipli, per esempio al medesimo host Internet in una " +"singola connessione; in questo modo non stabilisce in modo inefficiente una " +"connessione FTP per poi chiuderla, fare qualcos'altro e quindi ristabilire " +"una connessione con il medesimo host. Questa funzionalità è utile per " +"accedere a siti FTP molto impegnati con un limite al numero di accessi " +"anonimi contemporanei. APT inoltre parallelizza le connessioni a host " +"differenti, per gestire in maniera più efficiente i siti con scarsa " "larghezza di banda." #. type: Content of: <refentry><refsect1><para> @@ -6954,7 +6996,6 @@ msgstr "" #. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para> #: sources.list.5.xml:146 -#, fuzzy #| msgid "" #| "<literal>arch=<replaceable>arch1</replaceable>,<replaceable>arch2</" #| "replaceable>,…</literal> can be used to specify for which architectures " @@ -6967,11 +7008,10 @@ msgid "" "<replaceable>arch2</replaceable>,…</literal> which can be used to add/remove " "architectures from the set which will be downloaded." msgstr "" -"<literal>arch=<replaceable>arch1</replaceable>,<replaceable>arch2</" -"replaceable>,…</literal> può essere usato per specificare le architetture " -"per le quali scaricare le informazioni. Se questa opzione non è impostata " -"verranno scaricate tutte le architetture definite dall'opzione <literal>APT::" -"Architectures</literal>." +"<literal>arch+=<replaceable>arch1</replaceable>,<replaceable>arch2</replaceab" +"le>,…</literal> e <literal>arch-=<replaceable>arch1</replaceable>,<replaceabl" +"e>arch2</replaceable>,…</literal> possono essere usati per aggiungere e " +"rimuovere architetture dall'insieme di quelle che verranno scaricate." #. type: Content of: <refentry><refsect1><para><itemizedlist><listitem><para> #: sources.list.5.xml:149 @@ -8796,7 +8836,6 @@ msgstr "" #. type: <p></p> #: guide.sgml:163 -#, fuzzy #| msgid "" #| "<prgn>apt-get</prgn> has several command line options that are detailed " #| "in its man page, <manref section=\"8\" name=\"apt-get\">. The most useful " @@ -8807,7 +8846,7 @@ msgstr "" #| "command that caused them to be downloaded again without <tt>-d</tt>." msgid "" "<prgn>apt-get</prgn> has several command line options that are detailed in " -"its man page, <manref name=\"apt-get\" section=\"8\">. The most useful " +"its man page, <manref section=\"8\" name=\"apt-get\">. The most useful " "option is <tt>-d</tt> which does not install the fetched files. If the " "system has to download a large number of package it would be undesired to " "start installing them in case something goes wrong. When <tt>-d</tt> is used " @@ -8815,13 +8854,13 @@ msgid "" "caused them to be downloaded again without <tt>-d</tt>." msgstr "" "<prgn>apt-get</prgn> ha diverse opzioni per la riga di comando, che sono " -"documentate dettagliatamente nella sua pagina di manuale, <manref section=" -"\"8\" name=\"apt-get\">. L'opzione più utile è <tt>-d</tt>, che non installa " -"i file scaricati; se il sistema deve scaricare un gran numero di pacchetti, " +"documentate dettagliatamente nella sua pagina di manuale, <manref section=\"" +"8\" name=\"apt-get\">. L'opzione più utile è <tt>-d</tt>, che non installa i " +"file scaricati; se il sistema deve scaricare un gran numero di pacchetti, " "non è bene iniziare ad installarli nel caso qualcosa dovesse andare storto. " "Quando si usa <tt>-d</tt>, gli archivi scaricati possono essere installati " -"semplicemente eseguendo di nuovo lo stesso comando senza l'opzione <tt>-d</" -"tt>." +"semplicemente eseguendo di nuovo lo stesso comando senza l'opzione " +"<tt>-d</tt>." #. type: <heading></heading> #: guide.sgml:168 -- cgit v1.2.3 From e9db7e74c445d5b62023e0972ab3007485ca9a6f Mon Sep 17 00:00:00 2001 From: David Kalnischkies <david@kalnischkies.de> Date: Fri, 21 Mar 2014 12:11:27 +0100 Subject: correct some reported typos in /etc/cron.daily/apt Closes: 702016 Reported-By: Mason Loring Bliss <mason@blisses.org>, Jakub Wilk <jwilk@debian.org> --- debian/apt.cron.daily | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/debian/apt.cron.daily b/debian/apt.cron.daily index 71ac76555..aafd9e0ad 100644 --- a/debian/apt.cron.daily +++ b/debian/apt.cron.daily @@ -91,7 +91,7 @@ check_stamp() stamp=$(date --date=$(date -r $stamp_file --iso-8601) +%s 2>/dev/null) if [ "$?" != "0" ]; then # Due to some timezones returning 'invalid date' for midnight on - # certain dates (eg America/Sao_Paulo), if date returns with error + # certain dates (e.g. America/Sao_Paulo), if date returns with error # remove the stamp file and return 0. See coreutils bug: # http://lists.gnu.org/archive/html/bug-coreutils/2007-09/msg00176.html rm -f "$stamp_file" @@ -101,14 +101,14 @@ check_stamp() now=$(date --date=$(date --iso-8601) +%s 2>/dev/null) if [ "$?" != "0" ]; then # As above, due to some timezones returning 'invalid date' for midnight - # on certain dates (eg America/Sao_Paulo), if date returns with error + # on certain dates (e.g. America/Sao_Paulo), if date returns with error # return 0. return 0 fi delta=$(($now-$stamp)) - # intervall is in days, convert to sec. + # interval is in days, convert to sec. interval=$(($interval*60*60*24)) debug_echo "check_stamp: interval=$interval, now=$now, stamp=$stamp, delta=$delta (sec)" @@ -338,7 +338,7 @@ if test -r /var/lib/apt/extended_states; then fi fi -# check apt-config exstance +# check apt-config existence if ! which apt-config >/dev/null ; then exit 0 fi -- cgit v1.2.3 From 33ad1650c3192aba5ba43128190730c88ad9d011 Mon Sep 17 00:00:00 2001 From: Kenshi Muto <kmuto@debian.org> Date: Fri, 21 Mar 2014 12:50:29 +0100 Subject: Japanese programs translation update Closes: 742255 --- po/ja.po | 270 ++++++++++++++++++++------------------------------------------- 1 file changed, 85 insertions(+), 185 deletions(-) diff --git a/po/ja.po b/po/ja.po index eda615688..fe0a94fe4 100644 --- a/po/ja.po +++ b/po/ja.po @@ -6,10 +6,10 @@ # Debian Project, Kenshi Muto <kmuto@debian.org>, 2004-2012 msgid "" msgstr "" -"Project-Id-Version: apt 0.9.9.4\n" +"Project-Id-Version: apt 0.9.16.1\n" "Report-Msgid-Bugs-To: APT Development Team <deity@lists.debian.org>\n" "POT-Creation-Date: 2014-03-15 18:13+0100\n" -"PO-Revision-Date: 2013-08-11 19:39+0900\n" +"PO-Revision-Date: 2014-03-21 19:53+0900\n" "Last-Translator: Kenshi Muto <kmuto@debian.org>\n" "Language-Team: Debian Japanese List <debian-japanese@lists.debian.org>\n" "Language: ja\n" @@ -249,17 +249,15 @@ msgid "Failed to mount '%s' to '%s'" msgstr "'%s' を '%s' にマウントできませんでした" #: cmdline/apt-cdrom.cc:178 -#, fuzzy msgid "" "No CD-ROM could be auto-detected or found using the default mount point.\n" "You may try the --cdrom option to set the CD-ROM mount point.\n" "See 'man apt-cdrom' for more information about the CD-ROM auto-detection and " "mount point." msgstr "" -"CD-ROM が自動検出されなかったか、デフォルトで利用するマウントポイントに見当た" -"りませんでした。CD-ROM のマウントポイントを設定するために --cdrom オプション" -"を試すことができます。CD-ROM の自動検出およびマウントポイントの詳細について" -"は、'man apt-cdrom' を参照してください。" +"CD-ROM が自動検出されなかったか、デフォルトで利用するマウントポイントに見当たりませんでした。\n" +"CD-ROM のマウントポイントを設定するために --cdrom オプションを試すことができます。\n" +"CD-ROM の自動検出およびマウントポイントの詳細については、'man apt-cdrom' を参照してください。" #: cmdline/apt-cdrom.cc:182 msgid "Repeat this process for the rest of the CDs in your set." @@ -299,19 +297,19 @@ msgstr "" " -o=? 指定した設定オプションを適用する (例: -o dir::cache=/tmp)\n" #: cmdline/apt-get.cc:245 -#, fuzzy, c-format +#, c-format msgid "Can not find a package for architecture '%s'" -msgstr "正規表現 '%s' ではパッケージは見つかりませんでした" +msgstr "アーキテクチャ '%s' 用のパッケージは見つかりませんでした" #: cmdline/apt-get.cc:327 -#, fuzzy, c-format +#, c-format msgid "Can not find a package '%s' with version '%s'" -msgstr "正規表現 '%s' ではパッケージは見つかりませんでした" +msgstr "パッケージ '%s' のバージョン '%s' は見つかりませんでした" #: cmdline/apt-get.cc:330 -#, fuzzy, c-format +#, c-format msgid "Can not find a package '%s' with release '%s'" -msgstr "正規表現 '%s' ではパッケージは見つかりませんでした" +msgstr "リリース '%2$s' にはパッケージ '%1$s' は見つかりませんでした" #: cmdline/apt-get.cc:367 #, c-format @@ -319,9 +317,9 @@ msgid "Picking '%s' as source package instead of '%s'\n" msgstr "'%2$s' の代わりに '%1$s' をソースパッケージとして選出しています\n" #: cmdline/apt-get.cc:423 -#, fuzzy, c-format +#, c-format msgid "Can not find version '%s' of package '%s'" -msgstr "パッケージ '%2$s' の利用できないバージョン '%1$s' を無視" +msgstr "パッケージ '%2$s' のバージョン '%1$s' は見つかりませんでした" #: cmdline/apt-get.cc:454 #, c-format @@ -637,14 +635,12 @@ msgstr "" " この APT は Super Cow Powers 化されています。\n" #: cmdline/apt-helper.cc:35 -#, fuzzy msgid "Must specify at least one pair url/filename" -msgstr "" -"ソースを取得するには少なくとも 1 つのパッケージ名を指定する必要があります" +msgstr "少なくとも URL / ファイル名を 1 組指定する必要があります" #: cmdline/apt-helper.cc:52 msgid "Download Failed" -msgstr "" +msgstr "ダウンロード失敗" #: cmdline/apt-helper.cc:65 msgid "" @@ -658,6 +654,15 @@ msgid "" "\n" " This APT helper has Super Meep Powers.\n" msgstr "" +"使用法: apt-helper [オプション] コマンド\n" +" apt-helper [オプション] download-file uri 目標パス\n" +"\n" +"apt-helper は apt の内部ヘルパーです\n" +"\n" +"コマンド:\n" +" download-file - 指定した uri を目標パスにダウンロードする\n" +"\n" +" この APT helper は Super Meep Powers 化されています。\n" #: cmdline/apt-mark.cc:68 #, c-format @@ -706,7 +711,6 @@ msgid "Executing dpkg failed. Are you root?" msgstr "dpkg の実行に失敗しました。root 権限で実行していますか?" #: cmdline/apt-mark.cc:392 -#, fuzzy msgid "" "Usage: apt-mark [options] {auto|manual} pkg1 [pkg2 ...]\n" "\n" @@ -738,8 +742,13 @@ msgstr "" "する簡単なコマンドラインインターフェイスです。マークの一覧表示もできます。\n" "\n" "コマンド:\n" -" auto - 指定のパッケージを自動でインストールされたものとしてマークする\n" -" manual - 指定のパッケージを手動でインストールしたものとしてマークする\n" +" auto - 指定のパッケージを自動でインストールされたものとしてマークする\n" +" manual - 指定のパッケージを手動でインストールしたものとしてマークする\n" +" hold - パッケージを保留としてマークする\n" +" unhold - パッケージの保留を解除する\n" +" showauto - 自動的にインストールされたパッケージの一覧を表示する\n" +" showmanual - 手作業でインストールしたパッケージの一覧を表示する\n" +" showhold - 保留されているパッケージの一覧を表示する\n" "\n" "オプション:\n" " -h このヘルプを表示する\n" @@ -749,8 +758,7 @@ msgstr "" " -f 指定のファイルを使って自動/手動のマーキングを読み書きする\n" " -c=? 指定した設定ファイルを読み込む\n" " -o=? 任意の設定オプションを指定する (例 -o dir::cache=/tmp)\n" -"さらなる情報については、マニュアルページ apt-mark(8) および apt.conf(5) を参" -"照してください。" +"さらなる情報については、マニュアルページ apt-mark(8) および apt.conf(5) を参照してください。" #: cmdline/apt.cc:47 msgid "" @@ -773,6 +781,23 @@ msgid "" "\n" " edit-sources - edit the source information file\n" msgstr "" +"使用法: apt [オプション] コマンド\n" +"\n" +"apt 用コマンドラインインターフェイス\n" +"基本コマンド: \n" +" list - パッケージ名を基にパッケージの一覧を表示\n" +" search - パッケージの説明を検索\n" +" show - パッケージの詳細を表示\n" +"\n" +" update - 利用可能パッケージの一覧を更新\n" +"\n" +" install - パッケージをインストール\n" +" remove - パッケージを削除\n" +"\n" +" upgrade - パッケージをインストール/更新してシステムをアップグレード\n" +" full-upgrade - パッケージを削除/インストール/更新してシステムをアップグレード\n" +"\n" +" edit-sources - ソース情報ファイルを編集\n" #: methods/cdrom.cc:203 #, c-format @@ -1148,7 +1173,7 @@ msgstr "内部エラー" #: apt-private/private-list.cc:132 msgid "Listing" -msgstr "" +msgstr "一覧表示" #: apt-private/private-install.cc:81 msgid "Internal error, InstallPackages was called with broken packages!" @@ -1392,40 +1417,37 @@ msgstr "%s の取得に失敗しました %s\n" #: apt-private/private-output.cc:81 apt-private/private-show.cc:84 #: apt-private/private-show.cc:89 msgid "unknown" -msgstr "" +msgstr "不明" #: apt-private/private-output.cc:207 -#, fuzzy, c-format +#, c-format msgid "[installed,upgradable to: %s]" -msgstr " [インストール済み]" +msgstr "[インストール済み、%s にアップグレード可]" #: apt-private/private-output.cc:211 -#, fuzzy msgid "[installed,local]" -msgstr " [インストール済み]" +msgstr "[インストール済み、ローカル]" #: apt-private/private-output.cc:214 msgid "[installed,auto-removable]" -msgstr "" +msgstr "[インストール済み、自動削除可]" #: apt-private/private-output.cc:216 -#, fuzzy msgid "[installed,automatic]" -msgstr " [インストール済み]" +msgstr "[インストール済み、自動]" #: apt-private/private-output.cc:218 -#, fuzzy msgid "[installed]" -msgstr " [インストール済み]" +msgstr "[インストール済み]" #: apt-private/private-output.cc:222 #, c-format msgid "[upgradable from: %s]" -msgstr "" +msgstr "[%s からアップグレード可]" #: apt-private/private-output.cc:226 msgid "[residual-config]" -msgstr "" +msgstr "[設定未完了]" #: apt-private/private-output.cc:326 msgid "The following packages have unmet dependencies:" @@ -1586,7 +1608,7 @@ msgstr "未解決の依存関係があります。-f オプションを試して #: apt-private/private-cacheset.cc:35 apt-private/private-search.cc:47 msgid "Sorting" -msgstr "" +msgstr "ソート中" #: apt-private/private-update.cc:31 msgid "The update command takes no arguments" @@ -1597,9 +1619,8 @@ msgid "Calculating upgrade... " msgstr "アップグレードパッケージを検出しています ... " #: apt-private/private-upgrade.cc:30 -#, fuzzy msgid "Internal error, Upgrade broke stuff" -msgstr "内部エラー、AllUpgrade が何かを破壊しました" +msgstr "内部エラー、アップグレードで何か壊れました" #: apt-private/private-upgrade.cc:32 msgid "Done" @@ -1607,18 +1628,18 @@ msgstr "完了" #: apt-private/private-search.cc:51 msgid "Full Text Search" -msgstr "" +msgstr "全文検索" #: apt-private/private-show.cc:156 #, c-format msgid "There is %i additional record. Please use the '-a' switch to see it" msgid_plural "" "There are %i additional records. Please use the '-a' switch to see them." -msgstr[0] "" +msgstr[0] "追加レコードが %i 件あります。表示するには '-a' スイッチを付けてください。" #: apt-private/private-show.cc:163 msgid "not a real package (virtual)" -msgstr "" +msgstr "実際のパッケージではありません (仮想)" #: apt-private/private-main.cc:23 msgid "" @@ -1633,14 +1654,14 @@ msgstr "" " あるとは言い切れないことに注意してください!" #: apt-private/private-sources.cc:58 -#, fuzzy, c-format +#, c-format msgid "Failed to parse %s. Edit again? " -msgstr "%s を %s に名前変更できませんでした" +msgstr "%s の解析に失敗しました。再編集しますか? " #: apt-private/private-sources.cc:70 #, c-format msgid "Your '%s' file changed, please run 'apt-get update'." -msgstr "" +msgstr "'%s' ファイルが変更されています。「apt-get update」を実行してください。" #: apt-private/acqprogress.cc:66 msgid "Hit " @@ -2046,9 +2067,9 @@ msgstr "'%s' をオープンできません" #. skip spaces #. find end of word #: ftparchive/override.cc:68 -#, fuzzy, c-format +#, c-format msgid "Malformed override %s line %llu (%s)" -msgstr "不正な override %s %llu 行目 #1" +msgstr "不正な override %s %llu 行目 (%s)" #: ftparchive/override.cc:127 ftparchive/override.cc:201 #, c-format @@ -2781,9 +2802,9 @@ msgid "Unable to parse package file %s (2)" msgstr "パッケージファイル %s を解釈することができません (2)" #: apt-pkg/sourcelist.cc:127 -#, fuzzy, c-format +#, c-format msgid "Malformed stanza %u in source list %s (URI parse)" -msgstr "ソースリスト %2$s の %1$lu 行目が不正です (URI parse)" +msgstr "ソースリスト %2$s の %1$u 個目の区切りが不正です (URI parse)" #: apt-pkg/sourcelist.cc:170 #, c-format @@ -2860,9 +2881,9 @@ msgid "Type '%s' is not known on line %u in source list %s" msgstr "ソースリスト %3$s の %2$u 行にあるタイプ '%1$s' は不明です" #: apt-pkg/sourcelist.cc:416 -#, fuzzy, c-format +#, c-format msgid "Type '%s' is not known on stanza %u in source list %s" -msgstr "ソースリスト %3$s の %2$u 行にあるタイプ '%1$s' は不明です" +msgstr "ソースリスト %3$s の %2$u 個目の節 '%1$s' は不明です" #: apt-pkg/packagemanager.cc:303 apt-pkg/packagemanager.cc:932 #, c-format @@ -2947,10 +2968,9 @@ msgid "The method driver %s could not be found." msgstr "メソッドドライバ %s が見つかりません。" #: apt-pkg/acquire-worker.cc:118 -#, fuzzy, c-format +#, c-format msgid "Is the package %s installed?" -msgstr "" -"'dpkg-dev' パッケージがインストールされていることを確認してください。\n" +msgstr "パッケージ %s はインストールされていますか?" #: apt-pkg/acquire-worker.cc:169 #, c-format @@ -3090,9 +3110,8 @@ msgid "Size mismatch" msgstr "サイズが適合しません" #: apt-pkg/acquire-item.cc:173 -#, fuzzy msgid "Invalid file format" -msgstr "不正な操作 %s" +msgstr "不正なファイル形式" #: apt-pkg/acquire-item.cc:1579 #, c-format @@ -3325,9 +3344,9 @@ msgid "Couldn't find any package by regex '%s'" msgstr "正規表現 '%s' ではパッケージは見つかりませんでした" #: apt-pkg/cacheset.cc:613 -#, fuzzy, c-format +#, c-format msgid "Couldn't find any package by glob '%s'" -msgstr "正規表現 '%s' ではパッケージは見つかりませんでした" +msgstr "'%s' に一致するパッケージは見つかりませんでした" #: apt-pkg/cacheset.cc:624 #, c-format @@ -3384,7 +3403,7 @@ msgstr "外部ソルバを実行" #: apt-pkg/install-progress.cc:57 #, c-format msgid "Progress: [%3i%%]" -msgstr "" +msgstr "進捗: [%3i%%]" #: apt-pkg/install-progress.cc:91 apt-pkg/install-progress.cc:174 msgid "Running dpkg" @@ -3481,20 +3500,20 @@ msgstr "%s を完全に削除しました" #: apt-pkg/deb/dpkgpm.cc:1050 msgid "ioctl(TIOCGWINSZ) failed" -msgstr "" +msgstr "ioctl(TIOCGWINSZ) に失敗しました" #: apt-pkg/deb/dpkgpm.cc:1053 apt-pkg/deb/dpkgpm.cc:1074 -#, fuzzy, c-format +#, c-format msgid "Can not write log (%s)" -msgstr "%s に書き込めません" +msgstr "ログを書き込めません (%s)" #: apt-pkg/deb/dpkgpm.cc:1053 msgid "Is /dev/pts mounted?" -msgstr "" +msgstr "/dev/pts はマウントされていますか?" #: apt-pkg/deb/dpkgpm.cc:1074 msgid "Is stdout a terminal?" -msgstr "" +msgstr "標準出力はターミナルですか?" #: apt-pkg/deb/dpkgpm.cc:1562 msgid "Operation was interrupted before it could finish" @@ -3534,13 +3553,10 @@ msgstr "" "込まれません。" #: apt-pkg/deb/dpkgpm.cc:1651 apt-pkg/deb/dpkgpm.cc:1657 -#, fuzzy msgid "" "No apport report written because the error message indicates an issue on the " "local system" -msgstr "" -"エラーメッセージはディスクフルエラーであることを示しているので、レポートは書" -"き込まれません。" +msgstr "エラーメッセージはローカルシステムの問題であることを示しているので、レポートは書き込まれません。" #: apt-pkg/deb/dpkgpm.cc:1678 msgid "" @@ -3577,119 +3593,3 @@ msgstr "" #: apt-pkg/deb/debsystem.cc:128 msgid "Not locked" msgstr "ロックされていません" - -#~ msgid "%s not a valid DEB package." -#~ msgstr "%s は正しい DEB パッケージではありません。" - -#~ msgid "" -#~ "Using CD-ROM mount point %s\n" -#~ "Mounting CD-ROM\n" -#~ msgstr "" -#~ "CD-ROM マウントポイント %s を使用します\n" -#~ "CD-ROM をマウントしています\n" - -#~ msgid "" -#~ "Could not patch %s with mmap and with file operation usage - the patch " -#~ "seems to be corrupt." -#~ msgstr "" -#~ "mmap およびファイル操作用法へのパッチ %s を適用できません - パッチが壊れて" -#~ "いるようです。" - -#~ msgid "" -#~ "Could not patch %s with mmap (but no mmap specific fail) - the patch " -#~ "seems to be corrupt." -#~ msgstr "" -#~ "mmap へのパッチ %s を適用できません (しかし mmap 固有の失敗ではありませ" -#~ "ん) - パッチが壊れているようです。" - -#~ msgid "Note, selecting '%s' for task '%s'\n" -#~ msgstr "注意: タスク '%2$s' に対して '%1$s' を選択しています\n" - -#~ msgid "Note, selecting '%s' for regex '%s'\n" -#~ msgstr "注意: 正規表現 '%2$s' に対して '%1$s' を選択しています\n" - -#~ msgid "Package %s is a virtual package provided by:\n" -#~ msgstr "%s は以下のパッケージで提供されている仮想パッケージです:\n" - -#~ msgid " [Not candidate version]" -#~ msgstr "[候補バージョンなし]" - -#~ msgid "You should explicitly select one to install." -#~ msgstr "インストールするパッケージを明示的に選択する必要があります。" - -#~ msgid "" -#~ "Package %s is not available, but is referred to by another package.\n" -#~ "This may mean that the package is missing, has been obsoleted, or\n" -#~ "is only available from another source\n" -#~ msgstr "" -#~ "パッケージ %s はデータベースには存在しますが、利用できません。\n" -#~ "おそらく、そのパッケージが見つからないか、もう古くなっているか、\n" -#~ "あるいは別のソースからのみしか利用できないという状況が考えられます\n" - -#~ msgid "However the following packages replace it:" -#~ msgstr "しかし、以下のパッケージで置き換えられています:" - -#~ msgid "Package '%s' has no installation candidate" -#~ msgstr "パッケージ '%s' にはインストール候補がありません" - -#~ msgid "Virtual packages like '%s' can't be removed\n" -#~ msgstr "'%s' のような仮想パッケージは削除できません\n" - -#~ msgid "Package '%s' is not installed, so not removed. Did you mean '%s'?\n" -#~ msgstr "" -#~ "パッケージ %s はインストールされていないため、削除はできません。'%s' のこ" -#~ "とでしょうか?\n" - -#~ msgid "Package '%s' is not installed, so not removed\n" -#~ msgstr "パッケージ '%s' はインストールされていないため、削除はできません\n" - -#~ msgid "Note, selecting '%s' instead of '%s'\n" -#~ msgstr "注意、'%2$s' の代わりに '%1$s' を選択しています\n" - -#~ msgid "Skipping %s, it is already installed and upgrade is not set.\n" -#~ msgstr "" -#~ "すでにインストールされておりアップグレードも設定されていないため、%s をス" -#~ "キップします。\n" - -#~ msgid "Skipping %s, it is not installed and only upgrades are requested.\n" -#~ msgstr "" -#~ "%s はインストールされていないのにアップグレードだけが要求されているので、" -#~ "スキップします。\n" - -#~ msgid "Reinstallation of %s is not possible, it cannot be downloaded.\n" -#~ msgstr "ダウンロードできないため、%s の再インストールは不可能です。\n" - -#~ msgid "%s is already the newest version.\n" -#~ msgstr "%s はすでに最新バージョンです。\n" - -#~ msgid "Selected version '%s' (%s) for '%s'\n" -#~ msgstr "'%3$s' にはバージョン '%1$s' (%2$s) を選択しました\n" - -#~ msgid "Selected version '%s' (%s) for '%s' because of '%s'\n" -#~ msgstr "'%4$s' のため、'%3$s' にはバージョン '%1$s' (%2$s) を選択しました\n" - -#~ msgid "Ignore unavailable target release '%s' of package '%s'" -#~ msgstr "パッケージ '%2$s' の利用できないターゲットリリース '%1$s' を無視" - -#~ msgid "Downloading %s %s" -#~ msgstr "%s %s をダウンロードしています" - -#~ msgid "This is not a valid DEB archive, it has no '%s', '%s' or '%s' member" -#~ msgstr "" -#~ "これは正しい DEB アーカイブではありません。'%s'、'%s'、'%s' のいずれのメン" -#~ "バーもありません" - -#~ msgid "MD5Sum mismatch" -#~ msgstr "MD5Sum が適合しません" - -#~ msgid "" -#~ "I wasn't able to locate a file for the %s package. This might mean you " -#~ "need to manually fix this package." -#~ msgstr "" -#~ "パッケージ %s のファイルの位置を特定できません。おそらくこのパッケージを手" -#~ "動で修正する必要があります。" - -#~ msgid "Can not write log, openpty() failed (/dev/pts not mounted?)\n" -#~ msgstr "" -#~ "ログに書き込めません。openpty() に失敗しました (/dev/pts がマウントされて" -#~ "いない?)\n" -- cgit v1.2.3 From a1b6a4e7c5f5a859d27e00c2753b7f7b7e9ae14d Mon Sep 17 00:00:00 2001 From: David Kalnischkies <david@kalnischkies.de> Date: Fri, 21 Mar 2014 13:31:34 +0100 Subject: add testcase for APT::Architectures "arch1,arch2" Git-Dch: Ignore --- test/integration/test-bug-612958-use-dpkg-multiarch-config | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/test/integration/test-bug-612958-use-dpkg-multiarch-config b/test/integration/test-bug-612958-use-dpkg-multiarch-config index 4d1f00ca0..7bf5781e8 100755 --- a/test/integration/test-bug-612958-use-dpkg-multiarch-config +++ b/test/integration/test-bug-612958-use-dpkg-multiarch-config @@ -42,6 +42,15 @@ testpass 'apt config' 'armel' rm $CONFFILE +echo '#clear APT::Architectures;' >> $CONFFILE +echo 'APT::Architectures "i386,amd64";' >> $CONFFILE + +testpass 'apt config' 'i386' +testpass 'apt config' 'amd64' +testfail 'apt config' 'armel' + +rm $CONFFILE + echo '#clear APT::Architectures;' >> $CONFFILE echo 'Dir::Bin::dpkg "./dpkg-printer";' >> $CONFFILE -- cgit v1.2.3 From 63ff42089863cda53aee240ea0124106e8b4d983 Mon Sep 17 00:00:00 2001 From: David Kalnischkies <david@kalnischkies.de> Date: Fri, 21 Mar 2014 15:54:15 +0100 Subject: enable fvisibility=hidden for our private library While it is a huge undertaking to enable it for our public libraries as basically everything we exported so far could be seen as public interface our private library is new and under our full control, so we can do whatever we like with it. The benefits are not that big in return of course, but it reduces the size a bit, so thats great nontheless. Git-Dch: ignore --- apt-pkg/contrib/macros.h | 4 ++++ apt-private/acqprogress.h | 9 +++++---- apt-private/makefile | 1 + apt-private/private-cachefile.h | 7 ++++--- apt-private/private-cmndline.h | 3 ++- apt-private/private-download.h | 6 ++++-- apt-private/private-install.h | 8 +++++--- apt-private/private-list.h | 4 +++- apt-private/private-main.h | 4 +++- apt-private/private-moo.h | 2 +- apt-private/private-output.h | 21 ++++++++++++--------- apt-private/private-search.h | 4 +++- apt-private/private-show.h | 4 +++- apt-private/private-sources.h | 4 +++- apt-private/private-update.h | 4 +++- apt-private/private-upgrade.h | 6 ++++-- apt-private/private-utils.h | 8 +++++--- 17 files changed, 65 insertions(+), 34 deletions(-) diff --git a/apt-pkg/contrib/macros.h b/apt-pkg/contrib/macros.h index d97053553..2d6448e5e 100644 --- a/apt-pkg/contrib/macros.h +++ b/apt-pkg/contrib/macros.h @@ -94,8 +94,12 @@ #if APT_GCC_VERSION >= 0x0400 #define APT_SENTINEL __attribute__((sentinel)) + #define APT_PUBLIC __attribute__ ((visibility ("default"))) + #define APT_HIDDEN __attribute__ ((visibility ("hidden"))) #else #define APT_SENTINEL + #define APT_PUBLIC + #define APT_HIDDEN #endif // cold functions are unlikely() to be called diff --git a/apt-private/acqprogress.h b/apt-private/acqprogress.h index e12dafe50..71a10d78a 100644 --- a/apt-private/acqprogress.h +++ b/apt-private/acqprogress.h @@ -10,18 +10,19 @@ #define ACQPROGRESS_H #include <apt-pkg/acquire.h> +#include <apt-pkg/macros.h> #include <string> -class AcqTextStatus : public pkgAcquireStatus +class APT_PUBLIC AcqTextStatus : public pkgAcquireStatus { unsigned int &ScreenWidth; char BlankLine[1024]; unsigned long ID; unsigned long Quiet; - + public: - + virtual bool MediaChange(std::string Media,std::string Drive); virtual void IMSHit(pkgAcquire::ItemDesc &Itm); virtual void Fetch(pkgAcquire::ItemDesc &Itm); @@ -29,7 +30,7 @@ class AcqTextStatus : public pkgAcquireStatus virtual void Fail(pkgAcquire::ItemDesc &Itm); virtual void Start(); virtual void Stop(); - + bool Pulse(pkgAcquire *Owner); AcqTextStatus(unsigned int &ScreenWidth,unsigned int const Quiet); diff --git a/apt-private/makefile b/apt-private/makefile index 728890b9b..09736c6d3 100644 --- a/apt-private/makefile +++ b/apt-private/makefile @@ -16,6 +16,7 @@ LIBRARY=apt-private MAJOR=0.0 MINOR=0 SLIBS=$(PTHREADLIB) -lapt-pkg +CXXFLAGS += -fvisibility=hidden -fvisibility-inlines-hidden PRIVATES=list install download output cachefile cacheset update upgrade cmndline moo search show main utils sources SOURCE += $(foreach private, $(PRIVATES), private-$(private).cc) diff --git a/apt-private/private-cachefile.h b/apt-private/private-cachefile.h index 67c5e8cdc..dce7e0a3a 100644 --- a/apt-private/private-cachefile.h +++ b/apt-private/private-cachefile.h @@ -5,16 +5,17 @@ #include <apt-pkg/progress.h> #include <apt-pkg/configuration.h> #include <apt-pkg/pkgcache.h> +#include <apt-pkg/macros.h> // class CacheFile - Cover class for some dependency cache functions /*{{{*/ // --------------------------------------------------------------------- /* */ -class CacheFile : public pkgCacheFile +class APT_PUBLIC CacheFile : public pkgCacheFile { static pkgCache *SortCache; - static int NameComp(const void *a,const void *b) APT_PURE; - + APT_HIDDEN static int NameComp(const void *a,const void *b) APT_PURE; + public: pkgCache::Package **List; diff --git a/apt-private/private-cmndline.h b/apt-private/private-cmndline.h index 76045ffe7..d0af16782 100644 --- a/apt-private/private-cmndline.h +++ b/apt-private/private-cmndline.h @@ -2,9 +2,10 @@ #define APT_PRIVATE_CMNDLINE_H #include <apt-pkg/cmndline.h> +#include <apt-pkg/macros.h> #include <vector> -std::vector<CommandLine::Args> getCommandArgs(char const * const Program, char const * const Cmd); +APT_PUBLIC std::vector<CommandLine::Args> getCommandArgs(char const * const Program, char const * const Cmd); #endif diff --git a/apt-private/private-download.h b/apt-private/private-download.h index 1447845ed..a108aa531 100644 --- a/apt-private/private-download.h +++ b/apt-private/private-download.h @@ -1,9 +1,11 @@ #ifndef APT_PRIVATE_DOWNLOAD_H #define APT_PRIVATE_DOWNLOAD_H +#include <apt-pkg/macros.h> + class pkgAcquire; -bool CheckAuth(pkgAcquire& Fetcher, bool const PromptUser); -bool AcquireRun(pkgAcquire &Fetcher, int const PulseInterval, bool * const Failure, bool * const TransientNetworkFailure); +APT_PUBLIC bool CheckAuth(pkgAcquire& Fetcher, bool const PromptUser); +APT_PUBLIC bool AcquireRun(pkgAcquire &Fetcher, int const PulseInterval, bool * const Failure, bool * const TransientNetworkFailure); #endif diff --git a/apt-private/private-install.h b/apt-private/private-install.h index 79769d470..5e18560c5 100644 --- a/apt-private/private-install.h +++ b/apt-private/private-install.h @@ -9,6 +9,9 @@ #include <apt-pkg/cacheset.h> #include <apt-pkg/strutl.h> #include <apt-pkg/algorithms.h> +#include <apt-pkg/macros.h> + +#include <apt-private/private-output.h> #include <stddef.h> #include <iosfwd> @@ -17,7 +20,6 @@ #include <string> #include <utility> -#include "private-output.h" #include <apti18n.h> @@ -26,13 +28,13 @@ class CommandLine; #define RAMFS_MAGIC 0x858458f6 -bool DoInstall(CommandLine &Cmd); +APT_PUBLIC bool DoInstall(CommandLine &Cmd); bool DoCacheManipulationFromCommandLine(CommandLine &CmdL, CacheFile &Cache, std::map<unsigned short, APT::VersionSet> &verset); bool DoCacheManipulationFromCommandLine(CommandLine &CmdL, CacheFile &Cache); -bool InstallPackages(CacheFile &Cache,bool ShwKept,bool Ask = true, +APT_PUBLIC bool InstallPackages(CacheFile &Cache,bool ShwKept,bool Ask = true, bool Safety = true); diff --git a/apt-private/private-list.h b/apt-private/private-list.h index 749744dd1..461f527cb 100644 --- a/apt-private/private-list.h +++ b/apt-private/private-list.h @@ -1,9 +1,11 @@ #ifndef APT_PRIVATE_LIST_H #define APT_PRIVATE_LIST_H +#include <apt-pkg/macros.h> + class CommandLine; -bool List(CommandLine &Cmd); +APT_PUBLIC bool List(CommandLine &Cmd); #endif diff --git a/apt-private/private-main.h b/apt-private/private-main.h index 257c51a0b..23d4aca68 100644 --- a/apt-private/private-main.h +++ b/apt-private/private-main.h @@ -1,8 +1,10 @@ #ifndef APT_PRIVATE_MAIN_H #define APT_PRIVATE_MAIN_H +#include <apt-pkg/macros.h> + class CommandLine; -void CheckSimulateMode(CommandLine &CmdL); +APT_PUBLIC void CheckSimulateMode(CommandLine &CmdL); #endif diff --git a/apt-private/private-moo.h b/apt-private/private-moo.h index 7bfc5c1fc..b8e1cfed6 100644 --- a/apt-private/private-moo.h +++ b/apt-private/private-moo.h @@ -3,7 +3,7 @@ class CommandLine; -bool DoMoo(CommandLine &CmdL); +APT_PUBLIC bool DoMoo(CommandLine &CmdL); bool DoMoo1(CommandLine &CmdL); bool DoMoo2(CommandLine &CmdL); bool DoMoo3(CommandLine &CmdL); diff --git a/apt-private/private-output.h b/apt-private/private-output.h index 81643f90a..9633d0c37 100644 --- a/apt-private/private-output.h +++ b/apt-private/private-output.h @@ -2,6 +2,7 @@ #define APT_PRIVATE_OUTPUT_H #include <apt-pkg/pkgcache.h> +#include <apt-pkg/macros.h> #include <fstream> #include <string> @@ -13,22 +14,24 @@ class pkgDepCache; class pkgRecords; -extern std::ostream c0out; -extern std::ostream c1out; -extern std::ostream c2out; -extern std::ofstream devnull; -extern unsigned int ScreenWidth; +APT_PUBLIC extern std::ostream c0out; +APT_PUBLIC extern std::ostream c1out; +APT_PUBLIC extern std::ostream c2out; +APT_PUBLIC extern std::ofstream devnull; +APT_PUBLIC extern unsigned int ScreenWidth; -bool InitOutput(); -void ListSingleVersion(pkgCacheFile &CacheFile, pkgRecords &records, +APT_PUBLIC bool InitOutput(); + +void ListSingleVersion(pkgCacheFile &CacheFile, pkgRecords &records, pkgCache::VerIterator V, std::ostream &out, bool include_summary=true); // helper to describe global state -bool ShowList(std::ostream &out, std::string Title, std::string List, +APT_PUBLIC void ShowBroken(std::ostream &out,CacheFile &Cache,bool Now); + +APT_PUBLIC bool ShowList(std::ostream &out, std::string Title, std::string List, std::string VersionsList); -void ShowBroken(std::ostream &out,CacheFile &Cache,bool Now); void ShowNew(std::ostream &out,CacheFile &Cache); void ShowDel(std::ostream &out,CacheFile &Cache); void ShowKept(std::ostream &out,CacheFile &Cache); diff --git a/apt-private/private-search.h b/apt-private/private-search.h index 539915f1f..d4786233a 100644 --- a/apt-private/private-search.h +++ b/apt-private/private-search.h @@ -1,9 +1,11 @@ #ifndef APT_PRIVATE_SEARCH_H #define APT_PRIVATE_SEARCH_H +#include <apt-pkg/macros.h> + class CommandLine; -bool FullTextSearch(CommandLine &CmdL); +APT_PUBLIC bool FullTextSearch(CommandLine &CmdL); #endif diff --git a/apt-private/private-show.h b/apt-private/private-show.h index a15367e28..359aeeb28 100644 --- a/apt-private/private-show.h +++ b/apt-private/private-show.h @@ -1,12 +1,14 @@ #ifndef APT_PRIVATE_SHOW_H #define APT_PRIVATE_SHOW_H +#include <apt-pkg/macros.h> + class CommandLine; namespace APT { namespace Cmd { - bool ShowPackage(CommandLine &CmdL); + APT_PUBLIC bool ShowPackage(CommandLine &CmdL); } } #endif diff --git a/apt-private/private-sources.h b/apt-private/private-sources.h index 4c58af180..0c421902e 100644 --- a/apt-private/private-sources.h +++ b/apt-private/private-sources.h @@ -1,8 +1,10 @@ #ifndef APT_PRIVATE_SOURCES_H #define APT_PRIVATE_SOURCES_H +#include <apt-pkg/macros.h> + class CommandLine; -bool EditSources(CommandLine &CmdL); +APT_PUBLIC bool EditSources(CommandLine &CmdL); #endif diff --git a/apt-private/private-update.h b/apt-private/private-update.h index d3d0b7af9..e584f70cf 100644 --- a/apt-private/private-update.h +++ b/apt-private/private-update.h @@ -1,8 +1,10 @@ #ifndef APT_PRIVATE_UPDATE_H #define APT_PRIVATE_UPDATE_H +#include <apt-pkg/macros.h> + class CommandLine; -bool DoUpdate(CommandLine &CmdL); +APT_PUBLIC bool DoUpdate(CommandLine &CmdL); #endif diff --git a/apt-private/private-upgrade.h b/apt-private/private-upgrade.h index 64c4c0874..16bb93c9b 100644 --- a/apt-private/private-upgrade.h +++ b/apt-private/private-upgrade.h @@ -1,10 +1,12 @@ #ifndef APTPRIVATE_PRIVATE_UPGRADE_H #define APTPRIVATE_PRIVATE_UPGRADE_H +#include <apt-pkg/macros.h> + class CommandLine; -bool DoDistUpgrade(CommandLine &CmdL); -bool DoUpgrade(CommandLine &CmdL); +APT_PUBLIC bool DoDistUpgrade(CommandLine &CmdL); +APT_PUBLIC bool DoUpgrade(CommandLine &CmdL); bool DoUpgradeNoNewPackages(CommandLine &CmdL); bool DoUpgradeWithAllowNewPackages(CommandLine &CmdL); diff --git a/apt-private/private-utils.h b/apt-private/private-utils.h index 4bb535e86..432699787 100644 --- a/apt-private/private-utils.h +++ b/apt-private/private-utils.h @@ -1,9 +1,11 @@ #ifndef APT_PRIVATE_UTILS_H #define APT_PRIVATE_UTILS_H -#include<string> +#include <apt-pkg/macros.h> -void DisplayFileInPager(std::string filename); -void EditFileInSensibleEditor(std::string filename); +#include <string> + +APT_PUBLIC void DisplayFileInPager(std::string filename); +APT_PUBLIC void EditFileInSensibleEditor(std::string filename); #endif -- cgit v1.2.3 From ce62f1def6565375ce9c56eb1237ccdc0ca138ba Mon Sep 17 00:00:00 2001 From: David Kalnischkies <david@kalnischkies.de> Date: Fri, 21 Mar 2014 16:26:01 +0100 Subject: mark optional (private) symbols as hidden This methods should not be used by anyone expect the library itself as they are helpers for the specific class and therefore perfect candidates for hidding. Git-Dch: Ignore --- apt-pkg/acquire-method.h | 4 ++- apt-pkg/cdrom.h | 4 ++- apt-pkg/contrib/fileutl.h | 6 ++--- apt-pkg/deb/deblistparser.h | 3 ++- apt-pkg/edsp.h | 11 ++++---- apt-pkg/pkgcachegen.h | 18 ++++++------- apt-pkg/tagfile.h | 8 +++--- debian/libapt-pkg4.12.symbols | 59 ++++++++++++++----------------------------- 8 files changed, 50 insertions(+), 63 deletions(-) diff --git a/apt-pkg/acquire-method.h b/apt-pkg/acquire-method.h index f0f2a537a..221ccf273 100644 --- a/apt-pkg/acquire-method.h +++ b/apt-pkg/acquire-method.h @@ -20,6 +20,8 @@ #ifndef PKGLIB_ACQUIRE_METHOD_H #define PKGLIB_ACQUIRE_METHOD_H +#include <apt-pkg/macros.h> + #include <stdarg.h> #include <time.h> @@ -107,7 +109,7 @@ class pkgAcqMethod virtual ~pkgAcqMethod() {}; private: - void Dequeue(); + APT_HIDDEN void Dequeue(); }; /** @} */ diff --git a/apt-pkg/cdrom.h b/apt-pkg/cdrom.h index 0ed4a6a73..0f2c2cd02 100644 --- a/apt-pkg/cdrom.h +++ b/apt-pkg/cdrom.h @@ -1,6 +1,8 @@ #ifndef PKGLIB_CDROM_H #define PKGLIB_CDROM_H +#include <apt-pkg/macros.h> + #include<string> #include<vector> @@ -73,7 +75,7 @@ class pkgCdrom /*{{{*/ bool Add(pkgCdromStatus *log); private: - bool MountAndIdentCDROM(Configuration &Database, std::string &CDROM, + APT_HIDDEN bool MountAndIdentCDROM(Configuration &Database, std::string &CDROM, std::string &ident, pkgCdromStatus * const log, bool const interactive); }; /*}}}*/ diff --git a/apt-pkg/contrib/fileutl.h b/apt-pkg/contrib/fileutl.h index 278a25742..f25ed3622 100644 --- a/apt-pkg/contrib/fileutl.h +++ b/apt-pkg/contrib/fileutl.h @@ -150,11 +150,11 @@ class FileFd private: FileFdPrivate* d; - bool OpenInternDescriptor(unsigned int const Mode, APT::Configuration::Compressor const &compressor); + APT_HIDDEN bool OpenInternDescriptor(unsigned int const Mode, APT::Configuration::Compressor const &compressor); // private helpers to set Fail flag and call _error->Error - bool FileFdErrno(const char* Function, const char* Description,...) APT_PRINTF(3) APT_COLD; - bool FileFdError(const char* Description,...) APT_PRINTF(2) APT_COLD; + APT_HIDDEN bool FileFdErrno(const char* Function, const char* Description,...) APT_PRINTF(3) APT_COLD; + APT_HIDDEN bool FileFdError(const char* Description,...) APT_PRINTF(2) APT_COLD; }; bool RunScripts(const char *Cnf); diff --git a/apt-pkg/deb/deblistparser.h b/apt-pkg/deb/deblistparser.h index 286244cc9..baace79fe 100644 --- a/apt-pkg/deb/deblistparser.h +++ b/apt-pkg/deb/deblistparser.h @@ -15,6 +15,7 @@ #include <apt-pkg/tagfile.h> #include <apt-pkg/md5.h> #include <apt-pkg/pkgcache.h> +#include <apt-pkg/macros.h> #include <string> #include <vector> @@ -102,7 +103,7 @@ class debListParser : public pkgCacheGenerator::ListParser virtual ~debListParser() {}; private: - unsigned char ParseMultiArch(bool const showErrors); + APT_HIDDEN unsigned char ParseMultiArch(bool const showErrors); }; #endif diff --git a/apt-pkg/edsp.h b/apt-pkg/edsp.h index ae20ed7db..f3092d3c6 100644 --- a/apt-pkg/edsp.h +++ b/apt-pkg/edsp.h @@ -12,6 +12,7 @@ #include <apt-pkg/cacheset.h> #include <apt-pkg/pkgcache.h> #include <apt-pkg/cacheiterators.h> +#include <apt-pkg/macros.h> #include <stdio.h> @@ -32,15 +33,15 @@ class EDSP /*{{{*/ static const char * const PrioMap[]; static const char * const DepMap[]; - bool static ReadLine(int const input, std::string &line); - bool static StringToBool(char const *answer, bool const defValue); + APT_HIDDEN bool static ReadLine(int const input, std::string &line); + APT_HIDDEN bool static StringToBool(char const *answer, bool const defValue); - void static WriteScenarioVersion(pkgDepCache &Cache, FILE* output, + APT_HIDDEN void static WriteScenarioVersion(pkgDepCache &Cache, FILE* output, pkgCache::PkgIterator const &Pkg, pkgCache::VerIterator const &Ver); - void static WriteScenarioDependency(FILE* output, + APT_HIDDEN void static WriteScenarioDependency(FILE* output, pkgCache::VerIterator const &Ver); - void static WriteScenarioLimitedDependency(FILE* output, + APT_HIDDEN void static WriteScenarioLimitedDependency(FILE* output, pkgCache::VerIterator const &Ver, APT::PackageSet const &pkgset); public: diff --git a/apt-pkg/pkgcachegen.h b/apt-pkg/pkgcachegen.h index 5994dab9f..1e1a71026 100644 --- a/apt-pkg/pkgcachegen.h +++ b/apt-pkg/pkgcachegen.h @@ -38,10 +38,10 @@ class pkgCacheGenerator /*{{{*/ private: pkgCache::StringItem *UniqHash[26]; - map_ptrloc WriteStringInMap(std::string const &String) { return WriteStringInMap(String.c_str()); }; - map_ptrloc WriteStringInMap(const char *String); - map_ptrloc WriteStringInMap(const char *String, const unsigned long &Len); - map_ptrloc AllocateInMap(const unsigned long &size); + APT_HIDDEN map_ptrloc WriteStringInMap(std::string const &String) { return WriteStringInMap(String.c_str()); }; + APT_HIDDEN map_ptrloc WriteStringInMap(const char *String); + APT_HIDDEN map_ptrloc WriteStringInMap(const char *String, const unsigned long &Len); + APT_HIDDEN map_ptrloc AllocateInMap(const unsigned long &size); public: @@ -117,14 +117,14 @@ class pkgCacheGenerator /*{{{*/ ~pkgCacheGenerator(); private: - bool MergeListGroup(ListParser &List, std::string const &GrpName); - bool MergeListPackage(ListParser &List, pkgCache::PkgIterator &Pkg); - bool MergeListVersion(ListParser &List, pkgCache::PkgIterator &Pkg, + APT_HIDDEN bool MergeListGroup(ListParser &List, std::string const &GrpName); + APT_HIDDEN bool MergeListPackage(ListParser &List, pkgCache::PkgIterator &Pkg); + APT_HIDDEN bool MergeListVersion(ListParser &List, pkgCache::PkgIterator &Pkg, std::string const &Version, pkgCache::VerIterator* &OutVer); - bool AddImplicitDepends(pkgCache::GrpIterator &G, pkgCache::PkgIterator &P, + APT_HIDDEN bool AddImplicitDepends(pkgCache::GrpIterator &G, pkgCache::PkgIterator &P, pkgCache::VerIterator &V); - bool AddImplicitDepends(pkgCache::VerIterator &V, pkgCache::PkgIterator &D); + APT_HIDDEN bool AddImplicitDepends(pkgCache::VerIterator &V, pkgCache::PkgIterator &D); }; /*}}}*/ // This is the abstract package list parser class. /*{{{*/ diff --git a/apt-pkg/tagfile.h b/apt-pkg/tagfile.h index 2f600d397..d5b62e76d 100644 --- a/apt-pkg/tagfile.h +++ b/apt-pkg/tagfile.h @@ -20,6 +20,8 @@ #ifndef PKGLIB_TAGFILE_H #define PKGLIB_TAGFILE_H +#include <apt-pkg/macros.h> + #include <stdio.h> #include <string> @@ -93,9 +95,9 @@ class pkgTagFile { pkgTagFilePrivate *d; - bool Fill(); - bool Resize(); - bool Resize(unsigned long long const newSize); + APT_HIDDEN bool Fill(); + APT_HIDDEN bool Resize(); + APT_HIDDEN bool Resize(unsigned long long const newSize); public: diff --git a/debian/libapt-pkg4.12.symbols b/debian/libapt-pkg4.12.symbols index c1747bc9e..b6c2f75b0 100644 --- a/debian/libapt-pkg4.12.symbols +++ b/debian/libapt-pkg4.12.symbols @@ -184,9 +184,7 @@ libapt-pkg.so.4.12 libapt-pkg4.12 #MINVER# (c++)"pkgRecords::Parser::~Parser()@Base" 0.8.0 (c++)"pkgRecords::pkgRecords(pkgCache&)@Base" 0.8.0 (c++)"pkgRecords::~pkgRecords()@Base" 0.8.0 - (c++)"pkgTagFile::Fill()@Base" 0.8.0 (c++)"pkgTagFile::Step(pkgTagSection&)@Base" 0.8.0 - (c++)"pkgTagFile::Resize()@Base" 0.8.0 (c++)"pkgTagFile::~pkgTagFile()@Base" 0.8.0 (c++)"CdromDevice::~CdromDevice()@Base" 0.8.0 (c++)"CommandLine::DispatchArg(CommandLine::Dispatch*, bool)@Base" 0.8.0 @@ -517,11 +515,8 @@ libapt-pkg.so.4.12 libapt-pkg4.12 #MINVER# (c++)"pkgCacheGenerator::SelectFile(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, pkgIndexFile const&, unsigned long)@Base" 0.8.0 (c++)"pkgCacheGenerator::FinishCache(OpProgress*)@Base" 0.8.0 (c++)"pkgCacheGenerator::NewFileDesc(pkgCache::DescIterator&, pkgCacheGenerator::ListParser&)@Base" 0.8.0 - (c++)"pkgCacheGenerator::AllocateInMap(unsigned long const&)@Base" 0.8.0 (c++)"pkgCacheGenerator::MakeStatusCache(pkgSourceList&, OpProgress*, MMap**, bool)@Base" 0.8.0 (c++)"pkgCacheGenerator::WriteUniqString(char const*, unsigned int)@Base" 0.8.0 - (c++)"pkgCacheGenerator::WriteStringInMap(char const*)@Base" 0.8.0 - (c++)"pkgCacheGenerator::WriteStringInMap(char const*, unsigned long const&)@Base" 0.8.0 (c++)"pkgCacheGenerator::CreateDynamicMMap(FileFd*, unsigned long)@Base" 0.8.0 (c++)"pkgCacheGenerator::MergeFileProvides(pkgCacheGenerator::ListParser&)@Base" 0.8.0 (c++)"pkgCacheGenerator::MakeOnlyStatusCache(OpProgress*, DynamicMMap**)@Base" 0.8.0 @@ -1126,24 +1121,24 @@ libapt-pkg.so.4.12 libapt-pkg4.12 #MINVER# (arch=sh4|c++)"pkgAcqMethod::PrintStatus(char const*, char const*, __builtin_va_list&) const@Base" 0.8.15~exp1 (arch=alpha|c++)"pkgAcqMethod::PrintStatus(char const*, char const*, __va_list_tag&) const@Base" 0.8.15~exp1 ### architecture specific: va_list & size_t - (arch=i386 hurd-i386 kfreebsd-i386|c++|optional=private)"GlobalError::Insert(GlobalError::MsgType, char const*, char*&, unsigned int&)@Base" 0.8.11.4 - (arch=armel armhf|c++|optional=private)"GlobalError::Insert(GlobalError::MsgType, char const*, std::__va_list&, unsigned int&)@Base" 0.8.11.4 - (arch=alpha|c++|optional=private)"GlobalError::Insert(GlobalError::MsgType, char const*, __va_list_tag&, unsigned long&)@Base" 0.8.11.4 - (arch=powerpc powerpcspe x32|c++|optional=private)"GlobalError::Insert(GlobalError::MsgType, char const*, __va_list_tag (&) [1], unsigned int&)@Base" 0.8.11.4 - (arch=amd64 kfreebsd-amd64 s390 s390x|c++|optional=private)"GlobalError::Insert(GlobalError::MsgType, char const*, __va_list_tag (&) [1], unsigned long&)@Base" 0.8.11.4 - (arch=hppa mips mipsel sparc|c++|optional=private)"GlobalError::Insert(GlobalError::MsgType, char const*, void*&, unsigned int&)@Base" 0.8.11.4 - (arch=ia64 sparc64|c++|optional=private)"GlobalError::Insert(GlobalError::MsgType, char const*, void*&, unsigned long&)@Base" 0.8.11.4 - (arch=sh4|c++|optional=private)"GlobalError::Insert(GlobalError::MsgType, char const*, __builtin_va_list&, unsigned int&)@Base" 0.8.11.4 - (arch=ppc64|c++|optional=private)"GlobalError::Insert(GlobalError::MsgType, char const*, char*&, unsigned long&)@Base" 0.8.11.4 - (arch=i386 hurd-i386 kfreebsd-i386|c++|optional=private)"GlobalError::InsertErrno(GlobalError::MsgType, char const*, char const*, char*&, int, unsigned int&)@Base" 0.8.11.4 - (arch=armel armhf|c++|optional=private)"GlobalError::InsertErrno(GlobalError::MsgType, char const*, char const*, std::__va_list&, int, unsigned int&)@Base" 0.8.11.4 - (arch=alpha|c++|optional=private)"GlobalError::InsertErrno(GlobalError::MsgType, char const*, char const*, __va_list_tag&, int, unsigned long&)@Base" 0.8.11.4 - (arch=powerpc powerpcspe x32|c++|optional=private)"GlobalError::InsertErrno(GlobalError::MsgType, char const*, char const*, __va_list_tag (&) [1], int, unsigned int&)@Base" 0.8.11.4 - (arch=amd64 kfreebsd-amd64 s390 s390x|c++|optional=private)"GlobalError::InsertErrno(GlobalError::MsgType, char const*, char const*, __va_list_tag (&) [1], int, unsigned long&)@Base" 0.8.11.4 - (arch=hppa mips mipsel sparc|c++|optional=private)"GlobalError::InsertErrno(GlobalError::MsgType, char const*, char const*, void*&, int, unsigned int&)@Base" 0.8.11.4 - (arch=ia64 sparc64|c++|optional=private)"GlobalError::InsertErrno(GlobalError::MsgType, char const*, char const*, void*&, int, unsigned long&)@Base" 0.8.11.4 1 - (arch=sh4|c++|optional=private)"GlobalError::InsertErrno(GlobalError::MsgType, char const*, char const*, __builtin_va_list&, int, unsigned int&)@Base" 0.8.11.4 - (arch=ppc64|c++|optional=private)"GlobalError::InsertErrno(GlobalError::MsgType, char const*, char const*, char*&, int, unsigned long&)@Base" 0.8.11.4 + (arch=i386 hurd-i386 kfreebsd-i386|c++)"GlobalError::Insert(GlobalError::MsgType, char const*, char*&, unsigned int&)@Base" 0.8.11.4 + (arch=armel armhf|c++)"GlobalError::Insert(GlobalError::MsgType, char const*, std::__va_list&, unsigned int&)@Base" 0.8.11.4 + (arch=alpha|c++)"GlobalError::Insert(GlobalError::MsgType, char const*, __va_list_tag&, unsigned long&)@Base" 0.8.11.4 + (arch=powerpc powerpcspe x32|c++)"GlobalError::Insert(GlobalError::MsgType, char const*, __va_list_tag (&) [1], unsigned int&)@Base" 0.8.11.4 + (arch=amd64 kfreebsd-amd64 s390 s390x|c++)"GlobalError::Insert(GlobalError::MsgType, char const*, __va_list_tag (&) [1], unsigned long&)@Base" 0.8.11.4 + (arch=hppa mips mipsel sparc|c++)"GlobalError::Insert(GlobalError::MsgType, char const*, void*&, unsigned int&)@Base" 0.8.11.4 + (arch=ia64 sparc64|c++)"GlobalError::Insert(GlobalError::MsgType, char const*, void*&, unsigned long&)@Base" 0.8.11.4 + (arch=sh4|c++)"GlobalError::Insert(GlobalError::MsgType, char const*, __builtin_va_list&, unsigned int&)@Base" 0.8.11.4 + (arch=ppc64|c++)"GlobalError::Insert(GlobalError::MsgType, char const*, char*&, unsigned long&)@Base" 0.8.11.4 + (arch=i386 hurd-i386 kfreebsd-i386|c++)"GlobalError::InsertErrno(GlobalError::MsgType, char const*, char const*, char*&, int, unsigned int&)@Base" 0.8.11.4 + (arch=armel armhf|c++)"GlobalError::InsertErrno(GlobalError::MsgType, char const*, char const*, std::__va_list&, int, unsigned int&)@Base" 0.8.11.4 + (arch=alpha|c++)"GlobalError::InsertErrno(GlobalError::MsgType, char const*, char const*, __va_list_tag&, int, unsigned long&)@Base" 0.8.11.4 + (arch=powerpc powerpcspe x32|c++)"GlobalError::InsertErrno(GlobalError::MsgType, char const*, char const*, __va_list_tag (&) [1], int, unsigned int&)@Base" 0.8.11.4 + (arch=amd64 kfreebsd-amd64 s390 s390x|c++)"GlobalError::InsertErrno(GlobalError::MsgType, char const*, char const*, __va_list_tag (&) [1], int, unsigned long&)@Base" 0.8.11.4 + (arch=hppa mips mipsel sparc|c++)"GlobalError::InsertErrno(GlobalError::MsgType, char const*, char const*, void*&, int, unsigned int&)@Base" 0.8.11.4 + (arch=ia64 sparc64|c++)"GlobalError::InsertErrno(GlobalError::MsgType, char const*, char const*, void*&, int, unsigned long&)@Base" 0.8.11.4 1 + (arch=sh4|c++)"GlobalError::InsertErrno(GlobalError::MsgType, char const*, char const*, __builtin_va_list&, int, unsigned int&)@Base" 0.8.11.4 + (arch=ppc64|c++)"GlobalError::InsertErrno(GlobalError::MsgType, char const*, char const*, char*&, int, unsigned long&)@Base" 0.8.11.4 ### architecture specific: size_t (arch=i386 armel armhf hppa hurd-i386 kfreebsd-i386 mips mipsel powerpc powerpcspe sh4 sparc x32|c++)"_strtabexpand(char*, unsigned int)@Base" 0.8.0 (arch=alpha amd64 ia64 kfreebsd-amd64 s390 s390x sparc64 ppc64|c++)"_strtabexpand(char*, unsigned long)@Base" 0.8.0 @@ -1196,7 +1191,7 @@ libapt-pkg.so.4.12 libapt-pkg4.12 #MINVER# (c++)"APT::Configuration::getCompressorExtensions()@Base" 0.8.12 (c++)"APT::Configuration::setDefaultConfigurationForCompressors()@Base" 0.8.12 (c++)"pkgAcqMetaClearSig::Custom600Headers()@Base" 0.8.13 - (c++|optional=private)"debListParser::NewProvidesAllArch(pkgCache::VerIterator&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@Base" 0.8.13.2 + (c++)"debListParser::NewProvidesAllArch(pkgCache::VerIterator&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@Base" 0.8.13.2 (c++)"pkgDepCache::IsModeChangeOk(pkgDepCache::ModeList, pkgCache::PkgIterator const&, unsigned long, bool)@Base" 0.8.13.2 (c++)"pkgCache::DepIterator::IsNegative() const@Base" 0.8.15~exp1 (c++)"Configuration::CndSet(char const*, int)@Base" 0.8.15.3 @@ -1237,18 +1232,14 @@ libapt-pkg.so.4.12 libapt-pkg4.12 #MINVER# (c++)"EDSP::ReadRequest(int, std::list<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&, std::list<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >&, bool&, bool&, bool&)@Base" 0.8.16~exp2 (c++)"EDSP::ApplyRequest(std::list<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, std::list<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > > const&, pkgDepCache&)@Base" 0.8.16~exp2 (c++)"EDSP::ReadResponse(int, pkgDepCache&, OpProgress*)@Base" 0.8.16~exp2 - (c++)"EDSP::StringToBool(char const*, bool)@Base" 0.8.16~exp2 (c++)"EDSP::WriteRequest(pkgDepCache&, _IO_FILE*, bool, bool, bool, OpProgress*)@Base" 0.8.16~exp2 (c++)"EDSP::ExecuteSolver(char const*, int*, int*)@Base" 0.8.16~exp2 (c++)"EDSP::WriteProgress(unsigned short, char const*, _IO_FILE*)@Base" 0.8.16~exp2 (c++)"EDSP::WriteScenario(pkgDepCache&, _IO_FILE*, OpProgress*)@Base" 0.8.16~exp2 (c++)"EDSP::WriteSolution(pkgDepCache&, _IO_FILE*)@Base" 0.8.16~exp2 (c++)"EDSP::ResolveExternal(char const*, pkgDepCache&, bool, bool, bool, OpProgress*)@Base" 0.8.16~exp2 - (c++)"EDSP::WriteScenarioVersion(pkgDepCache&, _IO_FILE*, pkgCache::PkgIterator const&, pkgCache::VerIterator const&)@Base" 0.8.16~exp2 - (c++)"EDSP::WriteScenarioDependency(pkgDepCache&, _IO_FILE*, pkgCache::PkgIterator const&, pkgCache::VerIterator const&)@Base" 0.8.16~exp2 (c++)"EDSP::DepMap@Base" 0.8.16~exp2 (c++)"EDSP::PrioMap@Base" 0.8.16~exp2 - (c++)"EDSP::ReadLine(int, std::basic_string<char, std::char_traits<char>, std::allocator<char> >&)@Base" 0.8.16~exp2 (c++)"pkgDepCache::Policy::GetPriority(pkgCache::PkgIterator const&)@Base" 0.8.16~exp6 (c++)"pkgDepCache::Policy::GetPriority(pkgCache::PkgFileIterator const&)@Base" 0.8.16~exp6 (c++)"typeinfo for edspIFType@Base" 0.8.16~exp2 @@ -1385,7 +1376,6 @@ libapt-pkg.so.4.12 libapt-pkg4.12 #MINVER# (c++)"SummationImplementation::AddFD(FileFd&, unsigned long long)@Base" 0.8.16~exp9 (c++)"Hashes::AddFD(FileFd&, unsigned long long, bool, bool, bool, bool)@Base" 0.8.16~exp9 (c++|optional=deprecated,previous-inline)"FileFd::gzFd()@Base" 0.8.0 - (c++|optional=private)"FileFd::OpenInternDescriptor(unsigned int, APT::Configuration::Compressor const&)@Base" 0.8.16~exp9 ### CacheSet rework: making them real containers breaks bigtime the API (for the CacheSetHelper) (c++)"APT::PackageContainer<std::set<pkgCache::PkgIterator, std::less<pkgCache::PkgIterator>, std::allocator<pkgCache::PkgIterator> > >::const_iterator::getPkg() const@Base" 0.8.16~exp9 (c++)"APT::PackageContainer<std::set<pkgCache::PkgIterator, std::less<pkgCache::PkgIterator>, std::allocator<pkgCache::PkgIterator> > >::getConstructor() const@Base" 0.8.16~exp9 @@ -1425,7 +1415,6 @@ libapt-pkg.so.4.12 libapt-pkg4.12 #MINVER# (c++)"APT::VersionContainerInterface::getInstalledVer(pkgCacheFile&, pkgCache::PkgIterator const&, APT::CacheSetHelper&)@Base" 0.8.16~exp9 (c++)"APT::VersionContainerInterface::FromModifierCommandLine(unsigned short&, APT::VersionContainerInterface*, pkgCacheFile&, char const*, std::list<APT::VersionContainerInterface::Modifier, std::allocator<APT::VersionContainerInterface::Modifier> > const&, APT::CacheSetHelper&)@Base" 0.8.16~exp9 (c++)"EDSP::WriteLimitedScenario(pkgDepCache&, _IO_FILE*, APT::PackageContainer<std::set<pkgCache::PkgIterator, std::less<pkgCache::PkgIterator>, std::allocator<pkgCache::PkgIterator> > > const&, OpProgress*)@Base" 0.8.16~exp9 - (c++)"EDSP::WriteScenarioLimitedDependency(pkgDepCache&, _IO_FILE*, pkgCache::PkgIterator const&, pkgCache::VerIterator const&, APT::PackageContainer<std::set<pkgCache::PkgIterator, std::less<pkgCache::PkgIterator>, std::allocator<pkgCache::PkgIterator> > > const&)@Base" 0.8.16~exp9 (c++)"typeinfo for APT::PackageContainer<std::set<pkgCache::PkgIterator, std::less<pkgCache::PkgIterator>, std::allocator<pkgCache::PkgIterator> > >::const_iterator@Base" 0.8.16~exp9 (c++)"typeinfo for APT::PackageContainer<std::set<pkgCache::PkgIterator, std::less<pkgCache::PkgIterator>, std::allocator<pkgCache::PkgIterator> > >@Base" 0.8.16~exp9 (c++)"typeinfo for APT::PackageContainer<std::list<pkgCache::PkgIterator, std::allocator<pkgCache::PkgIterator> > >::const_iterator@Base" 0.8.16~exp9 @@ -1537,11 +1526,6 @@ libapt-pkg.so.4.12 libapt-pkg4.12 #MINVER# (c++)"pkgCache::DepIterator::IsIgnorable(pkgCache::PkgIterator const&) const@Base" 0.8.16~exp10 (c++)"pkgCache::DepIterator::IsIgnorable(pkgCache::PrvIterator const&) const@Base" 0.8.16~exp10 (c++)"FileFd::Write(int, void const*, unsigned long long)@Base" 0.8.16~exp14 - (c++|optional=private)"pkgCacheGenerator::MergeListGroup(pkgCacheGenerator::ListParser&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)@Base" 0.8.16~exp7 - (c++|optional=private)"pkgCacheGenerator::MergeListPackage(pkgCacheGenerator::ListParser&, pkgCache::PkgIterator&)@Base" 0.8.16~exp7 - (c++|optional=private)"pkgCacheGenerator::MergeListVersion(pkgCacheGenerator::ListParser&, pkgCache::PkgIterator&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, pkgCache::VerIterator*&)@Base" 0.8.16~exp7 - (c++|optional=private)"pkgCacheGenerator::AddImplicitDepends(pkgCache::GrpIterator&, pkgCache::PkgIterator&, pkgCache::VerIterator&)@Base" 0.8.16~exp7 - (c++|optional=private)"pkgCacheGenerator::AddImplicitDepends(pkgCache::VerIterator&, pkgCache::PkgIterator&)@Base" 0.8.16~exp7 (c++)"pkgTagSection::Exists(char const*)@Base" 0.9.7.9~exp1 (c++)"_strrstrip(char*)@Base" 0.9.7.9~exp2 (c++)"SplitClearSignedFile(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, FileFd*, std::vector<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::allocator<std::basic_string<char, std::char_traits<char>, std::allocator<char> > > >*, FileFd*)@Base" 0.9.7.9~exp2 @@ -1550,7 +1534,6 @@ libapt-pkg.so.4.12 libapt-pkg4.12 #MINVER# (c++)"SigVerify::RunGPGV(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, int const&)@Base" 0.9.7.9~exp2 (c++)"Configuration::Dump(std::basic_ostream<char, std::char_traits<char> >&, char const*, char const*, bool)@Base" 0.9.3 (c++)"AcquireUpdate(pkgAcquire&, int, bool, bool)@Base" 0.9.3 - (c++|optional=private)"pkgAcqMethod::Dequeue()@Base" 0.9.4 (c++)"pkgCache::DepIterator::IsMultiArchImplicit() const@Base" 0.9.6 (c++)"pkgCache::PrvIterator::IsMultiArchImplicit() const@Base" 0.9.6 (c++)"APT::PackageContainerInterface::FromGroup(APT::PackageContainerInterface*, pkgCacheFile&, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, APT::CacheSetHelper&)@Base" 0.9.7 @@ -1565,8 +1548,6 @@ libapt-pkg.so.4.12 libapt-pkg4.12 #MINVER# (c++)"pkgCache::DepIterator::IsSatisfied(pkgCache::VerIterator const&) const@Base" 0.9.8 (c++)"pkgCacheGenerator::NewDepends(pkgCache::PkgIterator&, pkgCache::VerIterator&, unsigned int, unsigned int const&, unsigned int const&, unsigned int*&)@Base" 0.9.8 (c++)"pkgCacheGenerator::NewVersion(pkgCache::VerIterator&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, unsigned int, unsigned long, unsigned long)@Base" 0.9.8 - (c++)"FileFd::FileFdErrno(char const*, char const*, ...)@Base" 0.9.9 - (c++)"FileFd::FileFdError(char const*, ...)@Base" 0.9.9 (c++)"operator<<(std::basic_ostream<char, std::char_traits<char> >&, GlobalError::Item)@Base" 0.9.9 (c++)"pkgDepCache::IsDeleteOkProtectInstallRequests(pkgCache::PkgIterator const&, bool, unsigned long, bool)@Base" 0.9.9.1 (c++)"pkgDepCache::IsInstallOkMultiArchSameVersionSynced(pkgCache::PkgIterator const&, bool, unsigned long, bool)@Base" 0.9.9.1 @@ -1579,7 +1560,6 @@ libapt-pkg.so.4.12 libapt-pkg4.12 #MINVER# (c++)"APT::CacheFilter::PackageNameMatchesFnmatch::operator()(pkgCache::GrpIterator const&)@Base" 0.9.11 (c++)"APT::CacheFilter::PackageNameMatchesFnmatch::operator()(pkgCache::PkgIterator const&)@Base" 0.9.11 (c++)"APT::PackageContainerInterface::FromFnmatch(APT::PackageContainerInterface*, pkgCacheFile&, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, APT::CacheSetHelper&)@Base" 0.9.11 - (c++|optional=private)"pkgTagFile::Resize(unsigned long long)@Base" 0.9.11 (c++)"pkgTagSection::pkgTagSection()@Base" 0.9.11 (c++)"strv_length(char const**)@Base" 0.9.11 (c++)"StringSplit(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, unsigned int)@Base" 0.9.11.3 @@ -1591,7 +1571,6 @@ libapt-pkg.so.4.12 libapt-pkg4.12 #MINVER# (c++)"HashString::GetHashForFile(std::basic_string<char, std::char_traits<char>, std::allocator<char> >) const@Base" 0.9.13.1 (c++)"indexRecords::GetSuite() const@Base" 0.9.13.2 (c++)"GetTempDir()@Base" 0.9.14.2 - (c++|optional=private)"pkgCdrom::MountAndIdentCDROM(Configuration&, std::basic_string<char, std::char_traits<char>, std::allocator<char> >&, std::basic_string<char, std::char_traits<char>, std::allocator<char> >&, pkgCdromStatus*)@Base" 0.9.15.2 ### demangle strangeness - buildd report it as MISSING and as new… (c++)"pkgAcqMetaSig::pkgAcqMetaSig(pkgAcquire*, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::vector<IndexTarget*, std::allocator<IndexTarget*> > const*, indexRecords*)@Base" 0.8.0 ### gcc-4.6 artefacts -- cgit v1.2.3 From d151adbf2cc4d23c240c6c4fcfbfda439a98c36f Mon Sep 17 00:00:00 2001 From: David Kalnischkies <david@kalnischkies.de> Date: Sat, 22 Mar 2014 21:35:57 +0100 Subject: ensure proper teardown in dpkg error cases We have to properly close our pseudo terminals even in error cases before we call post-invoke scripts. This is done now by breaking from the dpkg calling loop instead of copying the handling, which did it in the wrong order before. This also ensures that our state file is written in error cases to record autobit and co as this was forgotten before. Closes: 738969 --- apt-pkg/deb/dpkgpm.cc | 24 ++-- .../test-apt-progress-fd-error-postinst | 22 ---- test/integration/test-failing-maintainer-scripts | 132 +++++++++++++++++++++ 3 files changed, 139 insertions(+), 39 deletions(-) delete mode 100755 test/integration/test-apt-progress-fd-error-postinst create mode 100755 test/integration/test-failing-maintainer-scripts diff --git a/apt-pkg/deb/dpkgpm.cc b/apt-pkg/deb/dpkgpm.cc index 9fee7c923..5a5fff13b 100644 --- a/apt-pkg/deb/dpkgpm.cc +++ b/apt-pkg/deb/dpkgpm.cc @@ -1530,28 +1530,18 @@ bool pkgDPkgPM::GoNoABIBreak(APT::Progress::PackageManager *progress) // here but keep the loop going and just report it as a error // for later bool const stopOnError = _config->FindB("Dpkg::StopOnError",true); - - if(stopOnError) - RunScripts("DPkg::Post-Invoke"); - if (WIFSIGNALED(Status) != 0 && WTERMSIG(Status) == SIGSEGV) + if (WIFSIGNALED(Status) != 0 && WTERMSIG(Status) == SIGSEGV) strprintf(d->dpkg_error, "Sub-process %s received a segmentation fault.",Args[0]); else if (WIFEXITED(Status) != 0) strprintf(d->dpkg_error, "Sub-process %s returned an error code (%u)",Args[0],WEXITSTATUS(Status)); - else + else strprintf(d->dpkg_error, "Sub-process %s exited unexpectedly",Args[0]); + _error->Error("%s", d->dpkg_error.c_str()); - if(d->dpkg_error.size() > 0) - _error->Error("%s", d->dpkg_error.c_str()); - - if(stopOnError) - { - CloseLog(); - StopPtyMagic(); - d->progress->Stop(); - return false; - } - } + if(stopOnError) + break; + } } // dpkg is done at this point d->progress->Stop(); @@ -1582,7 +1572,7 @@ bool pkgDPkgPM::GoNoABIBreak(APT::Progress::PackageManager *progress) } Cache.writeStateFile(NULL); - return true; + return d->dpkg_error.empty(); } void SigINT(int /*sig*/) { diff --git a/test/integration/test-apt-progress-fd-error-postinst b/test/integration/test-apt-progress-fd-error-postinst deleted file mode 100755 index 0b6e70212..000000000 --- a/test/integration/test-apt-progress-fd-error-postinst +++ /dev/null @@ -1,22 +0,0 @@ -#!/bin/sh -set -e - -TESTDIR=$(readlink -f $(dirname $0)) -. $TESTDIR/framework - -setupenvironment -configarchitecture 'amd64' 'i386' - -mkdir -p DEBIAN/ -echo "#!/bin/sh\nexit 1" > DEBIAN/postinst -chmod 755 DEBIAN/postinst - -buildsimplenativepackage 'postinst-error' 'amd64,i386' '0.8.15' 'stable' '' 'pkg with posinst error' '' '' './DEBIAN' - -setupaptarchive - -exec 3> apt-progress.log -testfailure aptget install postinst-error -y -o APT::Status-Fd=3 -msgtest "Ensure correct error message for postinst error" -grep -q "pmerror:postinst-error :80:subprocess installed post-installation script returned error exit status 2" apt-progress.log && msgpass || msgfail - diff --git a/test/integration/test-failing-maintainer-scripts b/test/integration/test-failing-maintainer-scripts new file mode 100755 index 000000000..cb82ebc7a --- /dev/null +++ b/test/integration/test-failing-maintainer-scripts @@ -0,0 +1,132 @@ +#!/bin/sh +set -e + +TESTDIR=$(readlink -f $(dirname $0)) +. $TESTDIR/framework + +setupenvironment +configarchitecture 'native' + +# create a bunch of failures +createfailure() { + setupsimplenativepackage "failure-$1" 'native' '1.0' 'unstable' 'Depends: dependee' + BUILDDIR="incoming/failure-$1-1.0" + echo '#!/bin/sh +exit 29' > ${BUILDDIR}/debian/$1 + buildpackage "$BUILDDIR" 'unstable' 'main' 'native' + rm -rf "$BUILDDIR" +} + +buildsimplenativepackage 'dependee' 'native' '1.0' 'unstable' +createfailure 'preinst' +createfailure 'postinst' +createfailure 'prerm' +createfailure 'postrm' + +setupaptarchive + +# create a library to noop chroot() and rewrite maintainer script executions +# via execvp() as used by dpkg as we don't want our rootdir to be a fullblown +# chroot directory dpkg could chroot into to execute the maintainer scripts +cat << EOF > noopchroot.c +#define _GNU_SOURCE +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <dlfcn.h> + +static char * chrootdir = NULL; + +int chroot(const char *path) { + printf("WARNING: CHROOTing to %s was ignored!\n", path); + free(chrootdir); + chrootdir = strdup(path); + return 0; +} +int execvp(const char *file, char *const argv[]) { + static int (*func_execvp) (const char *, char * const []) = NULL; + if (func_execvp == NULL) + func_execvp = (int (*) (const char *, char * const [])) dlsym(RTLD_NEXT, "execvp"); + if (chrootdir == NULL || strncmp(file, "/var/lib/dpkg/", strlen("/var/lib/dpkg/")) != 0) + return func_execvp(file, argv); + printf("REWRITE execvp call %s into %s\n", file, chrootdir); + char newfile[strlen(chrootdir) + strlen(file)]; + strcpy(newfile, chrootdir); + strcat(newfile, file); + return func_execvp(newfile, argv); +} +EOF +testsuccess gcc -fPIC -shared -o noopchroot.so noopchroot.c -ldl + +mkdir -p "${TMPWORKINGDIRECTORY}/rootdir/usr/bin/" +DPKG="${TMPWORKINGDIRECTORY}/rootdir/usr/bin/dpkg" +echo "#!/bin/sh +if [ -n \"\$LD_PRELOAD\" ]; then + export LD_PRELOAD=\"${TMPWORKINGDIRECTORY}/noopchroot.so \${LD_PRELOAD}\" +else + export LD_PRELOAD=\"${TMPWORKINGDIRECTORY}/noopchroot.so\" +fi +dpkg \"\$@\"" > $DPKG +chmod +x $DPKG +sed -ie "s|^DPKG::options:: \"dpkg\";\$|DPKG::options:: \"$DPKG\";|" aptconfig.conf + +# setup some pre- and post- invokes to check the output isn't garbled later +APTHOOK="${TMPWORKINGDIRECTORY}/rootdir/usr/bin/apthook" +echo '#!/bin/sh +echo "$1: START" +echo "$1: MaiN" +echo "$1: ENd"' > $APTHOOK +chmod +x $APTHOOK +echo "DPKG::Pre-Invoke:: \"${APTHOOK} PRE\"; +DPKG::Post-Invoke:: \"${APTHOOK} POST\";" > rootdir/etc/apt/apt.conf.d/99apthooks + +testmyfailure() { + local PROGRESS='rootdir/tmp/progress.log' + exec 3> $PROGRESS + testfailure "$@" -o APT::Status-Fd=3 + msgtest 'Test for failure message of maintainerscript in' 'console log' + local TEST='rootdir/tmp/testfailure.output' + if grep -q 'exit status 29$' "$TEST"; then + msgpass + else + cat $TEST + msgfail + fi + msgtest 'Test for proper execution of invoke scripts in' 'console log' + if grep -q '^PRE: START$' $TEST && + grep -q '^PRE: MaiN$' $TEST && + grep -q '^PRE: ENd$' $TEST && + grep -q '^POST: START$' $TEST && + grep -q '^POST: MaiN$' $TEST && + grep -q '^POST: ENd$' $TEST; then + msgpass + else + cat $TEST + msgfail + fi + msgtest 'Test for failure message of maintainerscript in' 'progress log' + if grep -q '^pmerror:.\+exit status 29$' "$PROGRESS"; then + msgpass + else + cat $PROGRESS + msgfail + fi + testmarkedauto 'dependee' +} + +cp -a rootdir/var/lib/dpkg/status rootdir/var/lib/dpkg/status.backup +testmyfailure aptget install failure-preinst -y +cp -a rootdir/var/lib/dpkg/status.backup rootdir/var/lib/dpkg/status +testmyfailure aptget install failure-postinst -y +cp -a rootdir/var/lib/dpkg/status.backup rootdir/var/lib/dpkg/status +testsuccess aptget install failure-prerm -y +testdpkginstalled failure-prerm +testmyfailure aptget purge failure-prerm -y +cp -a rootdir/var/lib/dpkg/status.backup rootdir/var/lib/dpkg/status +testsuccess aptget install failure-postrm -y +testdpkginstalled failure-postrm +testmyfailure aptget purge failure-postrm -y + +# FIXME: test with output going to a PTY as it usually does +#cp -a rootdir/var/lib/dpkg/status.backup rootdir/var/lib/dpkg/status +#aptget install failure-preinst -y -- cgit v1.2.3 From d3d9e102c0eb169cb9ab3ad18b07f5a03bf0598d Mon Sep 17 00:00:00 2001 From: David Kalnischkies <david@kalnischkies.de> Date: Sun, 23 Mar 2014 00:50:05 +0100 Subject: update symbols file to include new symbols from 0.9.16 --- debian/libapt-pkg4.12.symbols | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/debian/libapt-pkg4.12.symbols b/debian/libapt-pkg4.12.symbols index b6c2f75b0..5d7b21f10 100644 --- a/debian/libapt-pkg4.12.symbols +++ b/debian/libapt-pkg4.12.symbols @@ -1571,6 +1571,14 @@ libapt-pkg.so.4.12 libapt-pkg4.12 #MINVER# (c++)"HashString::GetHashForFile(std::basic_string<char, std::char_traits<char>, std::allocator<char> >) const@Base" 0.9.13.1 (c++)"indexRecords::GetSuite() const@Base" 0.9.13.2 (c++)"GetTempDir()@Base" 0.9.14.2 + (c++)"APT::Configuration::getBuildProfiles()@Base" 0.9.16 + (c++)"APT::Configuration::getBuildProfilesString()@Base" 0.9.16 + (c++)"Configuration::FindVector(char const*, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) const@Base" 0.9.16 + (c++)"debListParser::ParseDepends(char const*, char const*, std::basic_string<char, std::char_traits<char>, std::allocator<char> >&, std::basic_string<char, std::char_traits<char>, std::allocator<char> >&, unsigned int&)@Base" 0.9.16 + (c++)"debListParser::ParseDepends(char const*, char const*, std::basic_string<char, std::char_traits<char>, std::allocator<char> >&, std::basic_string<char, std::char_traits<char>, std::allocator<char> >&, unsigned int&, bool const&)@Base" 0.9.16 + (c++)"debListParser::ParseDepends(char const*, char const*, std::basic_string<char, std::char_traits<char>, std::allocator<char> >&, std::basic_string<char, std::char_traits<char>, std::allocator<char> >&, unsigned int&, bool const&, bool const&, bool const&)@Base" 0.9.16 + (c++)"pkgCacheGenerator::ListParser::SameVersion(unsigned short, pkgCache::VerIterator const&)@Base" 0.9.16 + (c++)"Rename(std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> >)@Base" 0.9.16 ### demangle strangeness - buildd report it as MISSING and as new… (c++)"pkgAcqMetaSig::pkgAcqMetaSig(pkgAcquire*, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::vector<IndexTarget*, std::allocator<IndexTarget*> > const*, indexRecords*)@Base" 0.8.0 ### gcc-4.6 artefacts -- cgit v1.2.3 From be7ce6f1d067fa62b01685e48094f3f73c95189f Mon Sep 17 00:00:00 2001 From: David Kalnischkies <david@kalnischkies.de> Date: Tue, 11 Mar 2014 15:32:40 +0100 Subject: do IsInstallOk call in MarkInstall unconditionally Hooked checks could be influenced by AutoInst as a lot can happen between a call without and one with this bit set. The real cache-hit check is above this call already. Individual hooked checks can then inspect the state if they want to cache. Calling them multiple times shouldn't be a problem either way. --- apt-pkg/depcache.cc | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/apt-pkg/depcache.cc b/apt-pkg/depcache.cc index e2c412757..5fa88a5d2 100644 --- a/apt-pkg/depcache.cc +++ b/apt-pkg/depcache.cc @@ -1059,10 +1059,9 @@ bool pkgDepCache::MarkInstall(PkgIterator const &Pkg,bool AutoInst, return true; } - // check if we are allowed to install the package (if we haven't already) - if (P.Mode != ModeInstall || P.InstallVer != P.CandidateVer) - if (IsInstallOk(Pkg,AutoInst,Depth,FromUser) == false) - return false; + // check if we are allowed to install the package + if (IsInstallOk(Pkg,AutoInst,Depth,FromUser) == false) + return false; ActionGroup group(*this); P.iFlags &= ~AutoKept; @@ -1308,6 +1307,11 @@ bool pkgDepCache::IsInstallOkMultiArchSameVersionSynced(PkgIterator const &Pkg, if (FromUser == true) // as always: user is always right return true; + // if we have checked before and it was okay, it will still be okay + if (PkgState[Pkg->ID].Mode == ModeInstall && + PkgState[Pkg->ID].InstallVer == PkgState[Pkg->ID].CandidateVer) + return true; + // ignore packages with none-M-A:same candidates VerIterator const CandVer = PkgState[Pkg->ID].CandidateVerIter(*this); if (unlikely(CandVer.end() == true) || CandVer == Pkg.CurrentVer() || -- cgit v1.2.3 From 21b3eac8f9ab8e12b43fa8998a5aa5465f29adc5 Mon Sep 17 00:00:00 2001 From: David Kalnischkies <david@kalnischkies.de> Date: Tue, 11 Mar 2014 10:31:44 +0100 Subject: discard candidates via IsInstallOk to allow override In commit 446551c8 I changed MarkInstall to discard the candidate if the candidate can't satisfy the dependency. This breaks interactive solvers like aptitude which can change the candidate on-the-fly later. In commit df77d8a5 I introduced this 'early' loop-breaking to begin with which can't be that helpful for interactive solvers as well, but makes perfect sense for non-interactives to stop them from exploring trees which can't be satisfied, but it isn't perfect as ideally we would check this before auto-installing the first dependency. This commit therefore moves the loop into its own IsInstallOk hook so that frontends can override this check if they want to and in exchange removes the loop-breaking from MarkInstall itself and does it before any dependency is installed. Closes: 740750 --- apt-pkg/depcache.cc | 78 ++++++++++++++++------ apt-pkg/depcache.h | 2 + .../test-bug-735967-lib32-to-i386-unavailable | 3 + 3 files changed, 63 insertions(+), 20 deletions(-) diff --git a/apt-pkg/depcache.cc b/apt-pkg/depcache.cc index 5fa88a5d2..19a6e0d7e 100644 --- a/apt-pkg/depcache.cc +++ b/apt-pkg/depcache.cc @@ -1122,32 +1122,22 @@ bool pkgDepCache::MarkInstall(PkgIterator const &Pkg,bool AutoInst, continue; /* Check if this dep should be consider for install. If it is a user - defined important dep and we are installed a new package then + defined important dep and we are installed a new package then it will be installed. Otherwise we only check for important - deps that have changed from the installed version - */ + deps that have changed from the installed version */ if (IsImportantDep(Start) == false) continue; - /* If we are in an or group locate the first or that can - succeed. We have already cached this.. */ + /* If we are in an or group locate the first or that can + succeed. We have already cached this… */ for (; Ors > 1 && (DepState[Start->ID] & DepCVer) != DepCVer; --Ors) ++Start; + + /* unsatisfiable dependency: IsInstallOkDependenciesSatisfiableByCandidates + would have prevented us to get here if not overridden, so just skip + over the problem here as the frontend will know what it is doing */ if (Ors == 1 && (DepState[Start->ID] &DepCVer) != DepCVer && Start.IsNegative() == false) - { - if(DebugAutoInstall == true) - std::clog << OutputInDepth(Depth) << Start << " can't be satisfied!" << std::endl; - if (Start.IsCritical() == false) - continue; - // if the dependency was critical, we have absolutely no chance to install it, - // so if it wasn't installed remove it again. If it was, discard the candidate - // as the problemresolver will trip over it otherwise trying to install it (#735967) - if (Pkg->CurrentVer == 0) - MarkDelete(Pkg,false,Depth + 1, false); - else - SetCandidateVersion(Pkg.CurrentVer()); - return false; - } + continue; /* Check if any ImportantDep() (but not Critical) were added * since we installed the package. Also check for deps that @@ -1299,7 +1289,8 @@ bool pkgDepCache::MarkInstall(PkgIterator const &Pkg,bool AutoInst, bool pkgDepCache::IsInstallOk(PkgIterator const &Pkg,bool AutoInst, unsigned long Depth, bool FromUser) { - return IsInstallOkMultiArchSameVersionSynced(Pkg,AutoInst, Depth, FromUser); + return IsInstallOkMultiArchSameVersionSynced(Pkg,AutoInst, Depth, FromUser) && + IsInstallOkDependenciesSatisfiableByCandidates(Pkg,AutoInst, Depth, FromUser); } bool pkgDepCache::IsInstallOkMultiArchSameVersionSynced(PkgIterator const &Pkg, bool const /*AutoInst*/, unsigned long const Depth, bool const FromUser) @@ -1342,6 +1333,53 @@ bool pkgDepCache::IsInstallOkMultiArchSameVersionSynced(PkgIterator const &Pkg, return false; } + return true; +} +bool pkgDepCache::IsInstallOkDependenciesSatisfiableByCandidates(PkgIterator const &Pkg, + bool const AutoInst, unsigned long const Depth, bool const /*FromUser*/) +{ + if (AutoInst == false) + return true; + + VerIterator const CandVer = PkgState[Pkg->ID].CandidateVerIter(*this); + if (unlikely(CandVer.end() == true) || CandVer == Pkg.CurrentVer()) + return true; + + for (DepIterator Dep = CandVer.DependsList(); Dep.end() != true;) + { + // Grok or groups + DepIterator Start = Dep; + bool Result = true; + unsigned Ors = 0; + for (bool LastOR = true; Dep.end() == false && LastOR == true; ++Dep, ++Ors) + { + LastOR = (Dep->CompareOp & Dep::Or) == Dep::Or; + + if ((DepState[Dep->ID] & DepInstall) == DepInstall) + Result = false; + } + + if (Start.IsCritical() == false || Start.IsNegative() == true || Result == false) + continue; + + /* If we are in an or group locate the first or that can succeed. + We have already cached this… */ + for (; Ors > 1 && (DepState[Start->ID] & DepCVer) != DepCVer; --Ors) + ++Start; + + if (Ors == 1 && (DepState[Start->ID] &DepCVer) != DepCVer) + { + if (DebugAutoInstall == true) + std::clog << OutputInDepth(Depth) << Start << " can't be satisfied!" << std::endl; + + // the dependency is critical, but can't be installed, so discard the candidate + // as the problemresolver will trip over it otherwise trying to install it (#735967) + if (Pkg->CurrentVer != 0) + SetCandidateVersion(Pkg.CurrentVer()); + return false; + } + } + return true; } /*}}}*/ diff --git a/apt-pkg/depcache.h b/apt-pkg/depcache.h index bde648c65..bec651279 100644 --- a/apt-pkg/depcache.h +++ b/apt-pkg/depcache.h @@ -506,6 +506,8 @@ class pkgDepCache : protected pkgCache::Namespace // methods call by IsInstallOk bool IsInstallOkMultiArchSameVersionSynced(PkgIterator const &Pkg, bool const AutoInst, unsigned long const Depth, bool const FromUser); + bool IsInstallOkDependenciesSatisfiableByCandidates(PkgIterator const &Pkg, + bool const AutoInst, unsigned long const Depth, bool const FromUser); // methods call by IsDeleteOk bool IsDeleteOkProtectInstallRequests(PkgIterator const &Pkg, diff --git a/test/integration/test-bug-735967-lib32-to-i386-unavailable b/test/integration/test-bug-735967-lib32-to-i386-unavailable index 4dbe1d25d..e9f3bf96d 100755 --- a/test/integration/test-bug-735967-lib32-to-i386-unavailable +++ b/test/integration/test-bug-735967-lib32-to-i386-unavailable @@ -12,6 +12,9 @@ insertpackage 'unstable' 'libnss-mdns' 'amd64,i386' '0.10-6' 'Multi-Arch: same Breaks: lib32nss-mdns (<< 0.10-6)' insertpackage 'unstable' 'libnss-mdns-i386' 'i386' '0.10-6' 'Multi-Arch: foreign Depends: libnss-mdns' +# introduce some dummies so that there are versions, but none works +insertpackage 'unstable' 'libnss-mdns-i386' 'amd64' '0.1-6' +insertpackage 'experimental' 'libnss-mdns-amd64' 'i386,amd64' '0.10-6' 'Provides: libnss-mdns-i386' insertpackage 'unstable' 'foo' 'amd64' '1' 'Depends: libfoo' insertpackage 'unstable' 'libfoo' 'amd64' '1' 'Depends: libfoo-bin' -- cgit v1.2.3 From 12c4e7c92a8909130ce9af17ef68d7383b57b1f6 Mon Sep 17 00:00:00 2001 From: Michael Vogt <mvo@debian.org> Date: Thu, 27 Mar 2014 08:42:25 +0100 Subject: fix documentation for APT::Periodic::MaxSize "0" (closes: #740551) --- debian/apt.cron.daily | 2 +- doc/examples/configure-index | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/debian/apt.cron.daily b/debian/apt.cron.daily index 71ac76555..d949e303a 100644 --- a/debian/apt.cron.daily +++ b/debian/apt.cron.daily @@ -41,7 +41,7 @@ # APT::Periodic::MaxSize "0"; (new) # - Set maximum size of the cache in MB (0=disable). If the cache # is bigger, cached package files are deleted until the size -# requirement is met (the biggest packages will be deleted +# requirement is met (the oldest packages will be deleted # first). # # APT::Periodic::Update-Package-Lists "0"; diff --git a/doc/examples/configure-index b/doc/examples/configure-index index 93e96cf16..020f0d2ce 100644 --- a/doc/examples/configure-index +++ b/doc/examples/configure-index @@ -149,7 +149,7 @@ APT MaxSize "0"; // (new) // - Set maximum size of the cache in MB (0=disable). If the cache // is bigger, cached package files are deleted until the size - // requirement is met (the biggest packages will be deleted + // requirement is met (the oldest packages will be deleted // first). Update-Package-Lists "0"; -- cgit v1.2.3 From 8d50b63f28f0d68ca72b6dc6e50e09cfec9842be Mon Sep 17 00:00:00 2001 From: Michael Vogt <mvo@debian.org> Date: Thu, 27 Mar 2014 10:14:30 +0100 Subject: Use mkstemp() in apt-extracttemplaes (closes: #741627) Use mkstemp() in apt-extractemplates and add a integrationtest for apt-extracttemplates too. Thanks to Steve Kemp for the report. --- cmdline/apt-extracttemplates.cc | 15 ++++++---- doc/apt-extracttemplates.1.xml | 4 +-- test/integration/framework | 1 + test/integration/test-apt-extracttemplates | 45 ++++++++++++++++++++++++++++++ 4 files changed, 57 insertions(+), 8 deletions(-) create mode 100755 test/integration/test-apt-extracttemplates diff --git a/cmdline/apt-extracttemplates.cc b/cmdline/apt-extracttemplates.cc index a82623444..e4428e051 100644 --- a/cmdline/apt-extracttemplates.cc +++ b/cmdline/apt-extracttemplates.cc @@ -37,6 +37,7 @@ #include <stdio.h> #include <string.h> #include <unistd.h> +#include <stdlib.h> #include "apt-extracttemplates.h" @@ -239,23 +240,25 @@ static int ShowHelp(void) static string WriteFile(const char *package, const char *prefix, const char *data) { char fn[512]; - static int i; std::string tempdir = GetTempDir(); - snprintf(fn, sizeof(fn), "%s/%s.%s.%u%d", + snprintf(fn, sizeof(fn), "%s/%s.%s.XXXXXX", _config->Find("APT::ExtractTemplates::TempDir", tempdir.c_str()).c_str(), - package, prefix, getpid(), i++); + package, prefix); FileFd f; if (data == NULL) data = ""; - - if (!f.Open(fn, FileFd::WriteTemp, 0600)) + int fd = mkstemp(fn); + if (fd < 0) { + _error->Errno("ofstream::ofstream",_("Unable to mkstemp %s"),fn); + return string(); + } + if (!f.OpenDescriptor(fd, FileFd::WriteOnly, FileFd::None, true)) { _error->Errno("ofstream::ofstream",_("Unable to write to %s"),fn); return string(); } - f.Write(data, strlen(data)); f.Close(); return fn; diff --git a/doc/apt-extracttemplates.1.xml b/doc/apt-extracttemplates.1.xml index d27e05075..9f9888069 100644 --- a/doc/apt-extracttemplates.1.xml +++ b/doc/apt-extracttemplates.1.xml @@ -47,8 +47,8 @@ <para>template-file and config-script are written to the temporary directory specified by the <option>-t</option> or <option>--tempdir</option> (<literal>APT::ExtractTemplates::TempDir</literal>) directory, - with filenames of the form <filename>package.template.XXXX</filename> and - <filename>package.config.XXXX</filename></para> + with filenames of the form <filename>package.template.XXXXXX</filename> and + <filename>package.config.XXXXXX</filename></para> </refsect1> <refsect1><title>options diff --git a/test/integration/framework b/test/integration/framework index 8e401cb5f..1c6f041b0 100644 --- a/test/integration/framework +++ b/test/integration/framework @@ -118,6 +118,7 @@ apt() { runapt apt "$@"; } apthelper() { runapt "${APTHELPERBINDIR}/apt-helper" "$@"; } aptwebserver() { runapt "${APTWEBSERVERBINDIR}/aptwebserver" "$@"; } aptitude() { runapt aptitude "$@"; } +aptextracttemplates() { runapt apt-extracttemplates "$@"; } dpkg() { command dpkg --root=${TMPWORKINGDIRECTORY}/rootdir --force-not-root --force-bad-path --log=${TMPWORKINGDIRECTORY}/rootdir/var/log/dpkg.log "$@" diff --git a/test/integration/test-apt-extracttemplates b/test/integration/test-apt-extracttemplates new file mode 100755 index 000000000..ae2cc8bc2 --- /dev/null +++ b/test/integration/test-apt-extracttemplates @@ -0,0 +1,45 @@ +#!/bin/sh +set -e + +TESTDIR=$(readlink -f $(dirname $0)) +. $TESTDIR/framework + +setupenvironment +configarchitecture 'amd64' + +# apt-extracttemplates needs this +insertinstalledpackage 'debconf' 'amd64' '1.5' +insertinstalledpackage 'pkg-with-template' 'amd64' '1.0' + +# build a simple package that contains a config and a tempalte +mkdir -p DEBIAN +TEMPLATE_STR="Template: foo/bar +Type: string +Description: Some bar var +" +echo "$TEMPLATE_STR" > DEBIAN/templates + +CONFIG_STR="#!/bin/sh +random shell stuff +" +echo "$CONFIG_STR" > DEBIAN/config + +buildsimplenativepackage 'pkg-with-template' 'amd64' '0.8.15' 'stable' '' 'pkg with template' '' '' './DEBIAN' + +# ensure we get the right stuff out of the file +mkdir extracttemplates-out +OUT="$(aptextracttemplates -t ./extracttemplates-out incoming/pkg-with-template*.deb)" + +PKG=$(printf "$OUT" | cut -f1 -d' ') +INSTALLED_VER=$(printf "$OUT" | cut -f2 -d' ') +TEMPLATE=$(printf "$OUT" | cut -f3 -d' ') +CONFIG=$(printf "$OUT" | cut -f4 -d' ') + +testequal "$CONFIG_STR" cat $CONFIG +testequal "$TEMPLATE_STR" cat $TEMPLATE + +# ensure that the format of the output string has the right number of dots +for s in "$CONFIG" "$TEMPLATE"; do + NR_DOTS=$(basename "$s" | tr -c -d .) + testequal ".." echo $NR_DOTS +done -- cgit v1.2.3