std::make_pair("install", N_("Installing %s")),
std::make_pair("configure", N_("Configuring %s")),
std::make_pair("remove", N_("Removing %s")),
+ std::make_pair("purge", N_("Completely removing %s")),
std::make_pair("trigproc", N_("Running post-installation trigger %s"))
};
{
if (Pkg.end() == true)
return false;
-
- List.push_back(Item(Item::Configure,Pkg));
+
+ List.push_back(Item(Item::Configure, Pkg));
+
+ // Use triggers for config calls if we configure "smart"
+ // as otherwise Pre-Depends will not be satisfied, see #526774
+ if (_config->FindB("DPkg::TriggersPending", false) == true)
+ List.push_back(Item(Item::TriggersPending, PkgIterator()));
+
return true;
}
/*}}}*/
// Write out the package actions in order.
for (vector<Item>::iterator I = List.begin(); I != List.end(); I++)
{
+ if(I->Pkg.end() == true)
+ continue;
+
pkgDepCache::StateCache &S = Cache[I->Pkg];
fprintf(F,"%s ",I->Pkg.Name());
*/
void pkgDPkgPM::ProcessDpkgStatusLine(int OutStatusFd, char *line)
{
+ bool const Debug = _config->FindB("Debug::pkgDPkgProgressReporting",false);
// the status we output
ostringstream status;
- if (_config->FindB("Debug::pkgDPkgProgressReporting",false) == true)
+ if (Debug == true)
std::clog << "got from dpkg '" << line << "'" << std::endl;
'processing: install: pkg'
'processing: configure: pkg'
'processing: remove: pkg'
+ 'processing: purge: pkg' - but for apt is it a ignored "unknown" action
'processing: trigproc: trigger'
*/
TokSplitString(':', line, list, sizeof(list)/sizeof(list[0]));
if( list[0] == NULL || list[1] == NULL || list[2] == NULL)
{
- if (_config->FindB("Debug::pkgDPkgProgressReporting",false) == true)
+ if (Debug == true)
std::clog << "ignoring line: not enough ':'" << std::endl;
return;
}
- char *pkg = list[1];
- char *action = _strstrip(list[2]);
+ const char* const pkg = list[1];
+ const char* action = _strstrip(list[2]);
// 'processing' from dpkg looks like
// 'processing: action: pkg'
if(strncmp(list[0], "processing", strlen("processing")) == 0)
{
char s[200];
- char *pkg_or_trigger = _strstrip(list[2]);
- action =_strstrip( list[1]);
+ const char* const pkg_or_trigger = _strstrip(list[2]);
+ action = _strstrip( list[1]);
const std::pair<const char *, const char *> * const iter =
std::find_if(PackageProcessingOpsBegin,
PackageProcessingOpsEnd,
MatchProcessingOp(action));
if(iter == PackageProcessingOpsEnd)
{
- if (_config->FindB("Debug::pkgDPkgProgressReporting",false) == true)
- std::clog << "ignoring unknwon action: " << action << std::endl;
+ if (Debug == true)
+ std::clog << "ignoring unknown action: " << action << std::endl;
return;
}
snprintf(s, sizeof(s), _(iter->second), pkg_or_trigger);
<< endl;
if(OutStatusFd > 0)
write(OutStatusFd, status.str().c_str(), status.str().size());
- if (_config->FindB("Debug::pkgDPkgProgressReporting",false) == true)
+ if (Debug == true)
std::clog << "send: '" << status.str() << "'" << endl;
return;
}
<< endl;
if(OutStatusFd > 0)
write(OutStatusFd, status.str().c_str(), status.str().size());
- if (_config->FindB("Debug::pkgDPkgProgressReporting",false) == true)
+ if (Debug == true)
std::clog << "send: '" << status.str() << "'" << endl;
return;
}
- if(strncmp(action,"conffile",strlen("conffile")) == 0)
+ else if(strncmp(action,"conffile",strlen("conffile")) == 0)
{
status << "pmconffile:" << list[1]
<< ":" << (PackagesDone/float(PackagesTotal)*100.0)
<< endl;
if(OutStatusFd > 0)
write(OutStatusFd, status.str().c_str(), status.str().size());
- if (_config->FindB("Debug::pkgDPkgProgressReporting",false) == true)
+ if (Debug == true)
std::clog << "send: '" << status.str() << "'" << endl;
return;
}
- vector<struct DpkgState> &states = PackageOps[pkg];
+ vector<struct DpkgState> const &states = PackageOps[pkg];
const char *next_action = NULL;
if(PackageOpsDone[pkg] < states.size())
next_action = states[PackageOpsDone[pkg]].state;
<< endl;
if(OutStatusFd > 0)
write(OutStatusFd, status.str().c_str(), status.str().size());
- if (_config->FindB("Debug::pkgDPkgProgressReporting",false) == true)
+ if (Debug == true)
std::clog << "send: '" << status.str() << "'" << endl;
}
- if (_config->FindB("Debug::pkgDPkgProgressReporting",false) == true)
+ if (Debug == true)
std::clog << "(parsed from dpkg) pkg: " << pkg
<< " action: " << action << endl;
}
-
-// DPkgPM::DoDpkgStatusFd /*{{{*/
+ /*}}}*/
+// DPkgPM::DoDpkgStatusFd /*{{{*/
// ---------------------------------------------------------------------
/*
*/
dpkgbuf_pos = dpkgbuf+dpkgbuf_pos-p;
}
/*}}}*/
-
+// DPkgPM::OpenLog /*{{{*/
bool pkgDPkgPM::OpenLog()
{
string logdir = _config->FindDir("Dir::Log");
}
return true;
}
-
+ /*}}}*/
+// DPkg::CloseLog /*{{{*/
bool pkgDPkgPM::CloseLog()
{
if(term_out)
term_out = NULL;
return true;
}
-
+ /*}}}*/
/*{{{*/
// This implements a racy version of pselect for those architectures
// that don't have a working implementation.
return retval;
}
/*}}}*/
-
// DPkgPM::Go - Run the sequence /*{{{*/
// ---------------------------------------------------------------------
/* This globs the operations and calls dpkg
sigset_t sigmask;
sigset_t original_sigmask;
- unsigned int MaxArgs = _config->FindI("Dpkg::MaxArgs",8*1024);
- unsigned int MaxArgBytes = _config->FindI("Dpkg::MaxArgBytes",32*1024);
- bool NoTriggers = _config->FindB("DPkg::NoTriggers",false);
+ unsigned int const MaxArgs = _config->FindI("Dpkg::MaxArgs",8*1024);
+ unsigned int const MaxArgBytes = _config->FindI("Dpkg::MaxArgBytes",32*1024);
+ bool const NoTriggers = _config->FindB("DPkg::NoTriggers", false);
if (RunScripts("DPkg::Pre-Invoke") == false)
return false;
if (RunScriptsWithPkgs("DPkg::Pre-Install-Pkgs") == false)
return false;
+ // support subpressing of triggers processing for special
+ // cases like d-i that runs the triggers handling manually
+ bool const SmartConf = (_config->Find("PackageManager::Configure", "all") != "all");
+ bool const TriggersPending = _config->FindB("DPkg::TriggersPending", false);
+ if (_config->FindB("DPkg::ConfigurePending", SmartConf) == true)
+ List.push_back(Item(Item::ConfigurePending, PkgIterator()));
+
// map the dpkg states to the operations that are performed
// (this is sorted in the same way as Item::Ops)
static const struct DpkgState DpkgStatesOpMap[][7] = {
// that will be [installed|configured|removed|purged] and add
// them to the PackageOps map (the dpkg states it goes through)
// and the PackageOpsTranslations (human readable strings)
- for (vector<Item>::iterator I = List.begin(); I != List.end();I++)
+ for (vector<Item>::const_iterator I = List.begin(); I != List.end();I++)
{
- string name = (*I).Pkg.Name();
+ if((*I).Pkg.end() == true)
+ continue;
+
+ string const name = (*I).Pkg.Name();
PackageOpsDone[name] = 0;
for(int i=0; (DpkgStatesOpMap[(*I).Op][i]).state != NULL; i++)
{
PackageOps[name].push_back(DpkgStatesOpMap[(*I).Op][i]);
PackagesTotal++;
}
- }
+ }
stdin_is_dev_null = false;
OpenLog();
// this loop is runs once per operation
- for (vector<Item>::iterator I = List.begin(); I != List.end();)
+ for (vector<Item>::const_iterator I = List.begin(); I != List.end();)
{
- vector<Item>::iterator J = I;
- for (; J != List.end() && J->Op == I->Op; J++)
- /* nothing */;
+ // Do all actions with the same Op in one run
+ vector<Item>::const_iterator J = I;
+ if (TriggersPending == true)
+ for (; J != List.end(); J++)
+ {
+ if (J->Op == I->Op)
+ continue;
+ if (J->Op != Item::TriggersPending)
+ break;
+ vector<Item>::const_iterator T = J + 1;
+ if (T != List.end() && T->Op == I->Op)
+ continue;
+ break;
+ }
+ else
+ for (; J != List.end() && J->Op == I->Op; J++)
+ /* nothing */;
// Generate the argument list
const char *Args[MaxArgs + 50];
unsigned int n = 0;
unsigned long Size = 0;
- string Tmp = _config->Find("Dir::Bin::dpkg","dpkg");
+ string const Tmp = _config->Find("Dir::Bin::dpkg","dpkg");
Args[n++] = Tmp.c_str();
Size += strlen(Args[n-1]);
case Item::Configure:
Args[n++] = "--configure";
- if (NoTriggers)
- Args[n++] = "--no-triggers";
Size += strlen(Args[n-1]);
break;
-
+
+ case Item::ConfigurePending:
+ Args[n++] = "--configure";
+ Size += strlen(Args[n-1]);
+ Args[n++] = "--pending";
+ Size += strlen(Args[n-1]);
+ break;
+
+ case Item::TriggersPending:
+ Args[n++] = "--triggers-only";
+ Size += strlen(Args[n-1]);
+ Args[n++] = "--pending";
+ Size += strlen(Args[n-1]);
+ break;
+
case Item::Install:
Args[n++] = "--unpack";
Size += strlen(Args[n-1]);
Size += strlen(Args[n-1]);
break;
}
-
+
+ if (NoTriggers == true && I->Op != Item::TriggersPending &&
+ I->Op != Item::ConfigurePending)
+ {
+ Args[n++] = "--no-triggers";
+ Size += strlen(Args[n-1]);
+ }
+
// Write in the file or package names
if (I->Op == Item::Install)
{
{
for (;I != J && Size < MaxArgBytes; I++)
{
+ if((*I).Pkg.end() == true)
+ continue;
Args[n++] = I->Pkg.Name();
Size += strlen(Args[n-1]);
}
int Status = 0;
// we read from dpkg here
- int _dpkgin = fd[0];
+ int const _dpkgin = fd[0];
close(fd[1]); // close the write end of the pipe
- // the result of the waitpid call
- int res;
if(slave > 0)
close(slave);
sigemptyset(&sigmask);
sigprocmask(SIG_BLOCK,&sigmask,&original_sigmask);
+ // the result of the waitpid call
+ int res;
int select_ret;
while ((res=waitpid(Child,&Status, WNOHANG)) != Child) {
if(res < 0) {
// if it was set to "keep-dpkg-runing" then we won't return
// here but keep the loop going and just report it as a error
// for later
- bool stopOnError = _config->FindB("Dpkg::StopOnError",true);
+ bool const stopOnError = _config->FindB("Dpkg::StopOnError",true);
if(stopOnError)
RunScripts("DPkg::Post-Invoke");
Cnf.Set("Dir::Etc::vendorlist","vendors.list");
Cnf.Set("Dir::Etc::vendorparts","vendors.list.d");
Cnf.Set("Dir::Etc::main","apt.conf");
+ Cnf.Set("Dir::ETc::netrc", "auth.conf");
Cnf.Set("Dir::Etc::parts","apt.conf.d");
Cnf.Set("Dir::Etc::preferences","preferences");
Cnf.Set("Dir::Etc::preferencesparts","preferences.d");
if (Res == false)
return false;
-
+
if (Cnf.FindB("Debug::pkgInitConfig",false) == true)
Cnf.Dump();
LIBRARY=apt-pkg
LIBEXT=$(GLIBC_VER)$(LIBSTDCPP_VER)
MAJOR=4.8
-MINOR=0
+MINOR=1
SLIBS=$(PTHREADLIB) $(INTLLIBS) -lutil -ldl
APT_DOMAIN:=libapt-pkg$(MAJOR)
SOURCE = contrib/mmap.cc contrib/error.cc contrib/strutl.cc \
contrib/configuration.cc contrib/progress.cc contrib/cmndline.cc \
contrib/md5.cc contrib/sha1.cc contrib/sha256.cc contrib/hashes.cc \
- contrib/cdromutl.cc contrib/crc-16.cc \
+ contrib/cdromutl.cc contrib/crc-16.cc contrib/netrc.cc \
contrib/fileutl.cc
- HEADERS = mmap.h error.h configuration.h fileutl.h cmndline.h \
- md5.h crc-16.h cdromutl.h strutl.h sptr.h sha1.h sha256.h hashes.h
+ HEADERS = mmap.h error.h configuration.h fileutl.h cmndline.h netrc.h\
+ md5.h crc-16.h cdromutl.h strutl.h sptr.h sha1.h sha256.h hashes.h
# Source code for the core main library
SOURCE+= pkgcache.cc version.cc depcache.cc \
acquire-worker.cc acquire-method.cc init.cc clean.cc \
srcrecords.cc cachefile.cc versionmatch.cc policy.cc \
pkgsystem.cc indexfile.cc pkgcachegen.cc acquire-item.cc \
- indexrecords.cc vendor.cc vendorlist.cc cdrom.cc indexcopy.cc
+ indexrecords.cc vendor.cc vendorlist.cc cdrom.cc indexcopy.cc \
+ aptconfiguration.cc
HEADERS+= algorithms.h depcache.h pkgcachegen.h cacheiterators.h \
orderlist.h sourcelist.h packagemanager.h tagfile.h \
init.h pkgcache.h version.h progress.h pkgrecords.h \
acquire.h acquire-worker.h acquire-item.h acquire-method.h \
clean.h srcrecords.h cachefile.h versionmatch.h policy.h \
pkgsystem.h indexfile.h metaindex.h indexrecords.h vendor.h \
- vendorlist.h cdrom.h indexcopy.h
+ vendorlist.h cdrom.h indexcopy.h aptconfiguration.h
# Source code for the debian specific components
# In theory the deb headers do not need to be exported..
-apt (0.7.22.4) unstable; urgency=low
+apt (0.7.25) UNRELEASED; urgency=low
+ [ Christian Perrier ]
+ * Fix apt-ftparchive(1) wrt description of the "-o" option.
+ Thanks to Dann Frazier for the patch. Closes: #273100
+ * po/LINGUAS. Re-disable Hebrew. Closes: #534992
+ * po/LINGUAS. Enable Asturian and Lithuanian
+ * Fix typo in apt-cache.8.xml: nessasarily
+ * Fix "with with" in apt-get.8.xml
+ * Fix some of the typos mentioned by the german team
+ Closes: #479997
+ * Polish translation update by Wiktor Wandachowicz
+ Closes: #548571
+ * German translation update by Holger Wansing
+ Closes: #551534
+ * German translation of manpages by Chris Leick
+ Closes: #552606
+ * Italian translation update by Milo Casagrande
+ Closes: #555797
+ * Simplified Chinese translation update by Aron Xu
+ Closes: #558737
+
[ Michael Vogt ]
- * apt-pkg/deb/dpkgpm.cc:
- - when tcgetattr() returns non-zero skip all pty magic
- (thanks to Simon Richter, closes: #509866)
- * apt-inst/contrib/arfile.cc:
- - show propper error message for Invalid archive members
+ * apt-pkg/packagemanager.cc:
+ - fix overly aggressive immediate config propergation
+ (thanks to David Kalnischkies)
* apt-pkg/packagemanager.cc:
- add output about pre-depends configuring when debug::pkgPackageManager
is used
* methods/https.cc:
- fix incorrect use of CURLOPT_TIMEOUT, closes: #497983, LP: #354972
thanks to Brian Thomason for the patch
+ * merge lp:~mvo/apt/netrc branch, this adds support for a
+ /etc/apt/auth.conf that can be used to store username/passwords
+ in a "netrc" style file (with the extension that it supports "/"
+ in a machine definition). Based on the maemo git branch.
+ * apt-pkg/deb/dpkgpm.cc:
+ - add "purge" to list of known actions
[ Brian Murray ]
* apt-pkg/depcache.cc, apt-pkg/indexcopy.cc:
- Emit a warning if removed keys keyring is missing and skip associated
checks (LP: #218971)
- -- Michael Vogt <michael.vogt@ubuntu.com> Mon, 31 Aug 2009 11:08:03 +0200
+ [ Julian Andres Klode ]
+ * doc/apt.conf.5.xml:
+ - Deprecate unquoted values, string concatenation and explain what should
+ not be written inside a value (quotes,backslash).
+ - Restrict option names to alphanumerical characters and "/-:._+".
+ - Deprecate #include, we have apt.conf.d nowadays which should be
+ sufficient.
+ * methods/https.cc:
+ - Add support for authentication using netrc (Closes: #518473), patch
+ by Jussi Hakala <jussi.hakala@hut.fi>.
+ * ftparchive/apt-ftparchive.cc:
+ - Call setlocale() so translations are actually used.
+ * debian/apt.conf.autoremove:
+ - Add kfreebsd-image-* to the list (Closes: #558803)
+
+ -- Michael Vogt <michael.vogt@ubuntu.com> Tue, 29 Sep 2009 15:51:34 +0200
+
+apt (0.7.24) unstable; urgency=low
-apt (0.7.22.3) UNRELEASED; urgency=low
+ [ Nicolas François ]
+ * Cleaned up the first patch draft from KURASAWA Nozomu to finally
+ get po4a support for translating the man pages.
+ Many thanks to both for this excellent work! (Closes: #441608)
+ * doc/ja/*, doc/po/ja.po:
+ - remove the old ja man page translation and replace it with
+ the new po4a-powered translation by KURASAWA Nozomu.
+ * doc/*.?.xml (manpages):
+ - add contrib to author tags and also add refmiscinfo to fix warnings
+ * doc/style.txt, buildlib/defaults.mak, buildlib/manpage.mak:
+ - fix a few typos in the comments of this files
+
+ [ Michael Vogt ]
+ * apt-pkg/deb/dpkgpm.cc:
+ - when tcgetattr() returns non-zero skip all pty magic
+ (thanks to Simon Richter, closes: #509866)
+ * apt-inst/contrib/arfile.cc:
+ - show propper error message for Invalid archive members
+
+ [ David Kalnischkies ]
+ * doc/Doxyfile.in:
+ - update file with doxygen 1.6.1 (current unstable)
+ - activate DOT_MULTI_TARGETS, it is default on since doxygen 1.5.9
+ * buildlib/po4a_manpage.mak, doc/makefile, configure:
+ - simplify the makefiles needed for po4a manpages
+ * apt-pkg/contrib/configuration.cc:
+ - add a helper to easily get a vector of strings from the config
+ * apt-pkg/contrib/strutl.cc:
+ - replace unknown multibytes with ? in UTF8ToCharset (Closes: #545208)
+ * doc/apt-get.8.xml:
+ - fix two little typos in the --simulate description. (Closes: #545059)
+ * apt-pkg/aptconfiguration.cc, doc/apt.conf.5.xml:
+ - add an order subgroup to the compression types to simplify reordering
+ a bit and improve the documentation for this option group.
+ * doc/apt.conf.5.xml:
+ - document the Acquire::http::Dl-Limit option
+ - try to be crystal clear about the usage of :: and {} (Closes: #503481)
+ * doc/apt-cache.8.xml:
+ - clarify the note for the pkgnames command (Closes: #547599)
+ * doc/apt.ent, all man pages:
+ - move the description of files to globally usable entities
+ * doc/apt_preferences.5.xml:
+ - document the new preferences.d folder (Closes: #544017)
+ * methods/rred.cc:
+ - add at the top without failing (by Bernhard R. Link, Closes: #545694)
+ * buildlib/sizetable:
+ - add amd64 for cross building (by Mikhail Gusarov, Closes: #513058)
+ * debian/prerm:
+ - remove file as nobody will upgrade from 0.4.10 anymore
+ * debian/control:
+ - remove gnome-apt suggestion as it was removed from debian
+ * apt-pkg/deb/dpkgpm.cc, apt-pkg/packagemanager.cc, apt-pkg/orderlist.cc:
+ - add and document _experimental_ options to make (aggressive)
+ use of dpkg's trigger and configuration handling (Closes: #473461)
+ * cmdline/apt-get.cc:
+ - ignore versions that are not candidates when selecting a package
+ instead of a virtual one (by Marius Vollmer, Closes: #547788)
+
+ [ Christian Perrier ]
+ * doc/fr/*, doc/po/fr.po:
+ - remove the old fr man page translation and replace it with
+ the new po4a-powered translation
+ * doc/de: dropped (translation is too incomplete to be useful in
+ the transition to the po4a-powered translations)
+
+ -- Michael Vogt <mvo@debian.org> Fri, 25 Sep 2009 19:57:25 +0200
+
+apt (0.7.23.1) unstable; urgency=low
+
+ [ Michael Vogt ]
+ * apt-pkg/pkgcache.cc:
+ - do not set internel "needs-configure" state for packages in
+ triggers-pending state. dpkg will deal with the trigger and
+ it if does it before we trigger it, dpkg will error out
+ (LP: #414631)
+ * apt-pkg/acquire-item.cc:
+ - do not segfault on invalid items (closes: #544080)
+
+ -- Michael Vogt <mvo@debian.org> Fri, 28 Aug 2009 21:53:20 +0200
+
+apt (0.7.23) unstable; urgency=low
[ Eugene V. Lyubimkin ]
* methods/{http,https,ftp}, doc/apt.conf.5.xml:
mentioned above are not specified.
(Closes: #445985, #157759, #320184, #365880, #479617)
- [ Michael Vogt ]
- * apt-pkg/pkgcache.cc:
- - do not set internel "needs-configure" state for packages in
- triggers-pending state. dpkg will deal with the trigger and
- it if does it before we trigger it, dpkg will error out
- (LP: #414631)
+ [ David Kalnischkies ]
+ * cmdline/apt-get.cc:
+ - add APT::Get::HideAutoRemove=small to display only a short line
+ instead of the full package list. (Closes: #537450)
+ - ShowBroken() in build-dep (by Mike O'Connor, Closes: #145916)
+ - check for statfs.f_type (by Robert Millan, Closes: #509313)
+ - correct the order of picked package binary vs source in source
+ - use SourceVersion instead of the BinaryVersion to get the source
+ Patch by Matt Kraai, thanks! (Closes: #382826)
+ - add pkg/archive and codename in source (Closes: #414105, #441178)
+ * apt-pkg/contrib/strutl.cc:
+ - enable thousand separator according to the current locale
+ (by Luca Bruno, Closes: #223712)
+ * doc/apt.conf.5.xml:
+ - mention the apt.conf.d dir (by Vincent McIntyre, Closes: #520831)
+ * apt-inst/contrib/arfile.cc:
+ - use sizeof instead strlen (by Marius Vollmer, Closes: #504325)
+ * doc/apt-mark.8.xml:
+ - improve manpage based on patch by Carl Chenet (Closes: #510286)
+ * apt-pkg/acquire-item.cc:
+ - use configsettings for dynamic compression type use and order.
+ Based on a patch by Jyrki Muukkonen, thanks! (LP: #71746)
+ * apt-pkg/aptconfiguration.cc:
+ - add default configuration for compression types and add lzma
+ support. Order is now bzip2, lzma, gzip, none (Closes: #510526)
+ * ftparchive/writer.cc:
+ - add lzma support also here, patch for this (and inspiration for
+ the one above) by Robert Millan, thanks!
+ * apt-pkg/depcache.cc:
+ - restore the --ignore-hold effect in the Is{Delete,Install}Ok hooks
+ * doc/apt-get.8.xml:
+ - update the source description to reflect what it actually does
+ and how it can be used. (Closes: #413021)
+ * methods/http.cc:
+ - allow empty Reason-Phase in Status-Line to please squid,
+ thanks Modestas Vainius for noticing! (Closes: #531157, LP: #411435)
+
+ [ George Danchev ]
+ * cmdline/apt-cache.cc:
+ - fix a memory leak in the xvcg method (Closes: #511557)
+ * apt-pkg/indexcopy.cc:
+ - fix a memory leak then the Release file not exists (Closes: #511556)
- -- Michael Vogt <mvo@debian.org> Wed, 19 Aug 2009 11:14:15 +0200
+ -- Michael Vogt <mvo@debian.org> Thu, 27 Aug 2009 14:44:39 +0200
apt (0.7.22.2) unstable; urgency=low
(off by default)
- send "dpkg-exec" message on the status fd when dpkg is run
- provide DPkg::Chroot-Directory config option (useful for testing)
- - fix potential hang when in a backgroud process group
+ - fix potential hang when in a background process group
* apt-pkg/algorithms.cc:
- consider recommends when making the scores for the problem
resolver
* apt-pkg/deb/debsystem.cc:
- make strings i18n able
* fix problematic use of tolower() when calculating the version
- hash by using locale independant tolower_ascii() function.
+ hash by using locale independent tolower_ascii() function.
Thanks to M. Vefa Bicakci (LP: #80248)
* build fixes for g++-4.4
* cmdline/apt-mark:
{
Options {"--ignore-time-conflict";} // not very useful on a normal system
};
+
+ CompressionTypes
+ {
+ bz2 "bzip2";
+ lzma "lzma";
+ gz "gzip";
+
+ Order { "gz"; "lzma"; "bz2"; };
+ };
};
// Directory layout
// Config files
Etc "etc/apt/" {
Main "apt.conf";
+ Netrc "auth.conf";
Parts "apt.conf.d/";
Preferences "preferences";
PreferencesParts "preferences.d";
CheckDir "no";
}
-DPkg
+DPkg
{
+ // let apt aggressivly use dpkg triggers
+ NoTriggers "true";
+ NoConfigure "true";
+ ConfigurePending "true";
+
// Probably don't want to use force-downgrade..
Options {"--force-overwrite";"--force-downgrade";}
-
+
// Auto re-mounting of a readonly /usr
Pre-Invoke {"mount -o remount,rw /usr";};
Post-Invoke {"mount -o remount,ro /usr";};
-
+
+ Chroot-Directory "/";
+
// Prevents daemons from getting cwd as something mountable (default)
Run-Directory "/";
-
+
// Build options for apt-get source --compile
Build-Options "-b -uc";
Acquire::gpgv "false"; // Show the gpgv traffic
aptcdrom "false"; // Show found package files
IdentCdrom "false";
+ acquire::netrc "false"; // netrc parser
}
#include <apt-pkg/acquire-method.h>
#include <apt-pkg/error.h>
#include <apt-pkg/hashes.h>
+ #include <apt-pkg/netrc.h>
#include <sys/stat.h>
#include <sys/time.h>
#include <map>
#include <apti18n.h>
+
// Internet stuff
#include <netdb.h>
#include "connect.h"
#include "rfc2553emu.h"
#include "http.h"
-
/*}}}*/
using namespace std;
// Evil servers return no version
if (Line[4] == '/')
{
- if (sscanf(Line.c_str(),"HTTP/%u.%u %u %[^\n]",&Major,&Minor,
+ if (sscanf(Line.c_str(),"HTTP/%u.%u %u%[^\n]",&Major,&Minor,
&Result,Code) != 4)
return _error->Error(_("The HTTP server sent an invalid reply header"));
}
{
Major = 0;
Minor = 9;
- if (sscanf(Line.c_str(),"HTTP %u %[^\n]",&Result,Code) != 2)
+ if (sscanf(Line.c_str(),"HTTP %u%[^\n]",&Result,Code) != 2)
return _error->Error(_("The HTTP server sent an invalid reply header"));
}
Req += string("Proxy-Authorization: Basic ") +
Base64Encode(Proxy.User + ":" + Proxy.Password) + "\r\n";
+ maybe_add_auth (Uri, _config->FindFile("Dir::Etc::netrc"));
if (Uri.User.empty() == false || Uri.Password.empty() == false)
+ {
Req += string("Authorization: Basic ") +
Base64Encode(Uri.User + ":" + Uri.Password) + "\r\n";
-
+ }
Req += "User-Agent: Debian APT-HTTP/1.3 ("VERSION")\r\n\r\n";
if (Debug == true)
#include <apt-pkg/acquire-method.h>
#include <apt-pkg/error.h>
#include <apt-pkg/hashes.h>
+ #include <apt-pkg/netrc.h>
#include <sys/stat.h>
#include <sys/time.h>
curl_easy_reset(curl);
SetupProxy();
+ maybe_add_auth (Uri, _config->FindFile("Dir::Etc::netrc"));
+
// callbacks
- curl_easy_setopt(curl, CURLOPT_URL, Itm->Uri.c_str());
+ curl_easy_setopt(curl, CURLOPT_URL, static_cast<string>(Uri).c_str());
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_data);
curl_easy_setopt(curl, CURLOPT_WRITEDATA, this);
curl_easy_setopt(curl, CURLOPT_PROGRESSFUNCTION, progress_callback);
curl_easy_setopt(curl, CURLOPT_NOPROGRESS, false);
curl_easy_setopt(curl, CURLOPT_FAILONERROR, true);
curl_easy_setopt(curl, CURLOPT_FILETIME, true);
+ curl_easy_setopt(curl, CURLOPT_NETRC, CURL_NETRC_OPTIONAL);
// SSL parameters are set by default to the common (non mirror-specific) value
// if available (or a default one) and gets overload by mirror-specific ones.