diff options
-rw-r--r-- | apt-pkg/acquire-item.cc | 12 | ||||
-rw-r--r-- | apt-pkg/acquire.cc | 6 | ||||
-rw-r--r-- | apt-pkg/acquire.h | 3 | ||||
-rw-r--r-- | apt-pkg/cdrom.cc | 17 | ||||
-rw-r--r-- | configure.in | 2 | ||||
-rw-r--r-- | debian/changelog | 27 | ||||
-rw-r--r-- | debian/control | 2 | ||||
-rw-r--r-- | doc/apt.conf.5.xml | 11 | ||||
-rw-r--r-- | doc/examples/configure-index | 15 | ||||
-rw-r--r-- | methods/cdrom.cc | 2 | ||||
-rw-r--r-- | methods/gpgv.cc | 41 | ||||
-rw-r--r-- | po/apt-all.pot | 40 |
12 files changed, 132 insertions, 46 deletions
diff --git a/apt-pkg/acquire-item.cc b/apt-pkg/acquire-item.cc index de8cfe8f2..714edd8d8 100644 --- a/apt-pkg/acquire-item.cc +++ b/apt-pkg/acquire-item.cc @@ -350,18 +350,8 @@ pkgAcqMetaSig::pkgAcqMetaSig(pkgAcquire *Owner, /* The only header we use is the last-modified header. */ string pkgAcqMetaSig::Custom600Headers() { - // mvo: we don't really need the last-modified header here - // 1) it points to "Final" and that was renamed to "DestFile" - // so it's never send anyway - // 2) because DestFIle is in partial/ we will send a partial request - // with if-range in the http method (or the equivalent for ftp). - // that should give the same result - - string Final = _config->FindDir("Dir::State::lists"); - Final += URItoFileName(RealURI); - struct stat Buf; - if (stat(Final.c_str(),&Buf) != 0) + if (stat(DestFile.c_str(),&Buf) != 0) return "\nIndex-File: true"; return "\nIndex-File: true\nLast-Modified: " + TimeRFC1123(Buf.st_mtime); diff --git a/apt-pkg/acquire.cc b/apt-pkg/acquire.cc index 3c207fd27..70dce4f54 100644 --- a/apt-pkg/acquire.cc +++ b/apt-pkg/acquire.cc @@ -312,7 +312,7 @@ void pkgAcquire::RunFds(fd_set *RSet,fd_set *WSet) /* This runs the queues. It manages a select loop for all of the Worker tasks. The workers interact with the queues and items to manage the actual fetch. */ -pkgAcquire::RunResult pkgAcquire::Run() +pkgAcquire::RunResult pkgAcquire::Run(int PulseIntervall) { Running = true; @@ -327,7 +327,7 @@ pkgAcquire::RunResult pkgAcquire::Run() // Run till all things have been acquired struct timeval tv; tv.tv_sec = 0; - tv.tv_usec = 500000; + tv.tv_usec = PulseIntervall; while (ToFetch > 0) { fd_set RFds; @@ -357,7 +357,7 @@ pkgAcquire::RunResult pkgAcquire::Run() // Timeout, notify the log class if (Res == 0 || (Log != 0 && Log->Update == true)) { - tv.tv_usec = 500000; + tv.tv_usec = PulseIntervall; for (Worker *I = Workers; I != 0; I = I->NextAcquire) I->Pulse(); if (Log != 0 && Log->Pulse(this) == false) diff --git a/apt-pkg/acquire.h b/apt-pkg/acquire.h index 65c53a953..3e338b220 100644 --- a/apt-pkg/acquire.h +++ b/apt-pkg/acquire.h @@ -100,7 +100,8 @@ class pkgAcquire enum RunResult {Continue,Failed,Cancelled}; - RunResult Run(); + RunResult Run() { return Run(500000); }; // Binary compatibility + RunResult Run(int PulseIntervall); void Shutdown(); // Simple iteration mechanism diff --git a/apt-pkg/cdrom.cc b/apt-pkg/cdrom.cc index a91fc7181..1b9e98519 100644 --- a/apt-pkg/cdrom.cc +++ b/apt-pkg/cdrom.cc @@ -169,6 +169,23 @@ int pkgCdrom::Score(string Path) Res += 10; if (Path.find("/debian/") != string::npos) Res -= 10; + + // check for symlinks in the patch leading to the actual file + // a symlink gets a big penalty + struct stat Buf; + string statPath = flNotFile(Path); + string cdromPath = _config->FindDir("Acquire::cdrom::mount","/cdrom/"); + while(statPath != cdromPath && statPath != "./") { + statPath.resize(statPath.size()-1); // remove the trailing '/' + if (lstat(statPath.c_str(),&Buf) == 0) { + if(S_ISLNK(Buf.st_mode)) { + Res -= 60; + break; + } + } + statPath = flNotFile(statPath); // descent + } + return Res; } diff --git a/configure.in b/configure.in index 6b57dec27..8c2fcbae6 100644 --- a/configure.in +++ b/configure.in @@ -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) dnl -- SET THIS TO THE RELEASE VERSION -- -AC_DEFINE_UNQUOTED(VERSION,"0.6.31") +AC_DEFINE_UNQUOTED(VERSION,"0.6.32") PACKAGE="apt" AC_DEFINE_UNQUOTED(PACKAGE,"$PACKAGE") AC_SUBST(PACKAGE) diff --git a/debian/changelog b/debian/changelog index c384c399d..70aa27365 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,3 +1,30 @@ +apt (0.6.34) UNRELEASED; urgency=low + + * Add missing semicolon to configure-index (Closes: #295773) + * Update build-depends on gettext to 0.12 (Closes: #295077) + + -- Matt Zimmerman <mdz@ubuntu.com> Fri, 4 Mar 2005 16:13:15 -0800 + +apt (0.6.33) hoary; urgency=low + + * Merge michael.vogt@ubuntu.com--2005/apt--mvo--0 (through patch-6) + - patch-1: cosmetic changes (whitespace, "Apt::GPGV->APT::GPGV") + - patch-2: (doc) documentation for gpgv + - patch-3: (doc) new config variables added configure-index + - patch-4: pkgAcquire::Run() pulse intervall can be configured + - patch-5: fix for apt-get update removing Release.gpg files (#6865) + - patch-6: change the path scoring in apt-cdrom, prefer pathes without + symlinks + + -- Matt Zimmerman <mdz@ubuntu.com> Sat, 26 Feb 2005 15:21:17 -0800 + +apt (0.6.32) hoary; urgency=low + + * Merge michael.vogt@ubuntu.com--2005/apt--mvo--0 (patch-1) + - Implement Acquire::gpgv::options (Ubuntu bug#6283) + + -- Matt Zimmerman <mdz@ubuntu.com> Tue, 8 Feb 2005 19:31:15 -0800 + apt (0.6.31) hoary; urgency=low * Matt Zimmerman diff --git a/debian/control b/debian/control index 54d4e4caa..b7c430997 100644 --- a/debian/control +++ b/debian/control @@ -4,7 +4,7 @@ Priority: important Maintainer: APT Development Team <deity@lists.debian.org> Uploaders: Jason Gunthorpe <jgg@debian.org>, Adam Heath <doogie@debian.org>, Matt Zimmerman <mdz@debian.org> Standards-Version: 3.6.1 -Build-Depends: debhelper (>= 4.1.62), libdb4.2-dev, gettext (>= 0.11.5) +Build-Depends: debhelper (>= 4.1.62), libdb4.2-dev, gettext (>= 0.12) Build-Depends-Indep: debiandoc-sgml, docbook-utils (>= 0.6.12-1) Package: apt diff --git a/doc/apt.conf.5.xml b/doc/apt.conf.5.xml index b5d223372..69e212243 100644 --- a/doc/apt.conf.5.xml +++ b/doc/apt.conf.5.xml @@ -251,6 +251,13 @@ DPkg::Pre-Install-Pkgs {"/usr/sbin/dpkg-preconfigure --apt";}; the cdrom block. It is important to have the trailing slash. Unmount commands can be specified using UMount.</para></listitem> </varlistentry> + + <varlistentry><term>gpgv</term> + <listitem><para>GPGV URIs; the only option for GPGV URIs is the option to pass additional parameters to gpgv. + <literal>gpgv::Options</literal> Additional options passed to gpgv. + </para></listitem> + </varlistentry> + </variablelist> </para> </refsect1> @@ -373,7 +380,9 @@ DPkg::Pre-Install-Pkgs {"/usr/sbin/dpkg-preconfigure --apt";}; <literal>Debug::NoLocking</literal> disables file locking so APT can do some operations as non-root and <literal>Debug::pkgDPkgPM</literal> will print out the command line for each dpkg invokation. <literal>Debug::IdentCdrom</literal> will - disable the inclusion of statfs data in CDROM IDs.</para> + disable the inclusion of statfs data in CDROM IDs. + <literal>Debug::Acquire::gpgv</literal> Debugging of the gpgv method. + </para> </refsect1> <refsect1><title>Examples</title> diff --git a/doc/examples/configure-index b/doc/examples/configure-index index 7cb29f082..a09ea0c37 100644 --- a/doc/examples/configure-index +++ b/doc/examples/configure-index @@ -72,6 +72,11 @@ APT NoAct "false"; }; + GPGV + { + TrustedKeyring "/etc/apt/trusted.gpg"; + }; + // Some general options Ignore-Hold "false"; Clean-Installed "true"; @@ -137,6 +142,11 @@ Acquire UMount "sleep 500"; } }; + + gpgv + { + Options {"--ignore-time-conflict";} // not very usefull on a normal system + }; }; // Directory layout @@ -171,9 +181,10 @@ Dir "/" Bin { methods "/usr/lib/apt/methods/"; gzip "/bin/gzip"; + gpg "/usr/bin/gpgv"; dpkg "/usr/bin/dpkg"; dpkg-source "/usr/bin/dpkg-source"; - dpkg-buildpackage "/usr/bin/dpkg-buildpackage" + dpkg-buildpackage "/usr/bin/dpkg-buildpackage"; apt-get "/usr/bin/apt-get"; apt-cache "/usr/bin/apt-cache"; }; @@ -229,8 +240,10 @@ Debug NoLocking "false"; Acquire::Ftp "false"; // Show ftp command traffic Acquire::Http "false"; // Show http command traffic + Acquire::gpgv "false"; // Show the gpgv traffic aptcdrom "false"; // Show found package files IdentCdrom "false"; + } /* Whatever you do, do not use this configuration file!! Take out ONLY diff --git a/methods/cdrom.cc b/methods/cdrom.cc index d5987dc45..d8bb9522e 100644 --- a/methods/cdrom.cc +++ b/methods/cdrom.cc @@ -97,7 +97,7 @@ bool CDROMMethod::Fetch(FetchItem *Itm) { Res.LastModified = Itm->LastModified; Res.IMSHit = true; - Res.Filename = File; + Res.Filename = Itm->DestFile; URIDone(Res); return true; } diff --git a/methods/gpgv.cc b/methods/gpgv.cc index b34ea8d85..24e945b2c 100644 --- a/methods/gpgv.cc +++ b/methods/gpgv.cc @@ -46,7 +46,7 @@ const char *GPGVMethod::VerifyGetSigners(const char *file, const char *outfile, int status; struct stat buff; string gpgvpath = _config->Find("Dir::Bin::gpg", "/usr/bin/gpgv"); - string pubringpath = _config->Find("Apt::GPGV::TrustedKeyring", "/etc/apt/trusted.gpg"); + string pubringpath = _config->Find("APT::GPGV::TrustedKeyring", "/etc/apt/trusted.gpg"); if (_config->FindB("Debug::Acquire::gpgv", false)) { std::cerr << "gpgv path: " << gpgvpath << std::endl; @@ -68,11 +68,41 @@ const char *GPGVMethod::VerifyGetSigners(const char *file, const char *outfile, } else if (pid == 0) { + const char *Args[400]; + unsigned int i = 0; + + Args[i++] = gpgvpath.c_str(); + Args[i++] = "--status-fd"; + Args[i++] = "3"; + Args[i++] = "--keyring"; + Args[i++] = pubringpath.c_str(); + + Configuration::Item const *Opts; + Opts = _config->Tree("Acquire::gpgv::Options"); + if (Opts != 0) + { + Opts = Opts->Child; + for (; Opts != 0; Opts = Opts->Next) + { + if (Opts->Value.empty() == true) + continue; + Args[i++] = Opts->Value.c_str(); + if(i >= 395) { + std::cerr << "E: Argument list from Acquire::gpgv::Options too long. Exiting." << std::endl; + exit(111); + } + } + } + Args[i++] = file; + Args[i++] = outfile; + Args[i++] = NULL; + if (_config->FindB("Debug::Acquire::gpgv", false)) { - std::cerr << "Preparing to exec: " << gpgvpath - << " --status-fd 3 --keyring " << pubringpath - << " " << file << " " << outfile << std::endl; + std::cerr << "Preparing to exec: " << gpgvpath; + for(unsigned int j=0;Args[j] != NULL; j++) + std::cerr << " " << Args[j]; + std::cerr << std::endl; } int nullfd = open("/dev/null", O_RDONLY); close(fd[0]); @@ -85,8 +115,7 @@ const char *GPGVMethod::VerifyGetSigners(const char *file, const char *outfile, putenv("LANG="); putenv("LC_ALL="); putenv("LC_MESSAGES="); - execlp(gpgvpath.c_str(), gpgvpath.c_str(), "--status-fd", "3", "--keyring", - pubringpath.c_str(), file, outfile, NULL); + execvp(gpgvpath.c_str(), (char **)Args); exit(111); } diff --git a/po/apt-all.pot b/po/apt-all.pot index bd6ad5d81..9a974f7f6 100644 --- a/po/apt-all.pot +++ b/po/apt-all.pot @@ -2259,31 +2259,31 @@ msgstr "" msgid "rename failed, %s (%s -> %s)." msgstr "" -#: apt-pkg/acquire-item.cc:235 apt-pkg/acquire-item.cc:904 +#: apt-pkg/acquire-item.cc:235 apt-pkg/acquire-item.cc:894 msgid "MD5Sum mismatch" msgstr "" -#: apt-pkg/acquire-item.cc:718 +#: apt-pkg/acquire-item.cc:708 #, c-format msgid "" "I wasn't able to locate a file for the %s package. This might mean you need " "to manually fix this package. (due to missing arch)" msgstr "" -#: apt-pkg/acquire-item.cc:771 +#: apt-pkg/acquire-item.cc:761 #, c-format msgid "" "I wasn't able to locate file for the %s package. This might mean you need to " "manually fix this package." msgstr "" -#: apt-pkg/acquire-item.cc:807 +#: apt-pkg/acquire-item.cc:797 #, c-format msgid "" "The package index files are corrupted. No Filename: field for package %s." msgstr "" -#: apt-pkg/acquire-item.cc:894 +#: apt-pkg/acquire-item.cc:884 msgid "Size mismatch" msgstr "" @@ -2292,73 +2292,73 @@ msgstr "" msgid "Vendor block %s contains no fingerprint" msgstr "" -#: apt-pkg/cdrom.cc:487 +#: apt-pkg/cdrom.cc:503 #, c-format msgid "" "Using CD-ROM mount point %s\n" "Mounting CD-ROM\n" msgstr "" -#: apt-pkg/cdrom.cc:496 apt-pkg/cdrom.cc:578 +#: apt-pkg/cdrom.cc:512 apt-pkg/cdrom.cc:594 msgid "Identifying.. " msgstr "" -#: apt-pkg/cdrom.cc:521 +#: apt-pkg/cdrom.cc:537 #, c-format msgid "Stored Label: %s \n" msgstr "" -#: apt-pkg/cdrom.cc:541 +#: apt-pkg/cdrom.cc:557 #, c-format msgid "Using CD-ROM mount point %s\n" msgstr "" -#: apt-pkg/cdrom.cc:559 +#: apt-pkg/cdrom.cc:575 msgid "Unmounting CD-ROM\n" msgstr "" -#: apt-pkg/cdrom.cc:563 +#: apt-pkg/cdrom.cc:579 msgid "Waiting for disc...\n" msgstr "" #. Mount the new CDROM -#: apt-pkg/cdrom.cc:571 +#: apt-pkg/cdrom.cc:587 msgid "Mounting CD-ROM...\n" msgstr "" -#: apt-pkg/cdrom.cc:589 +#: apt-pkg/cdrom.cc:605 msgid "Scanning Disc for index files..\n" msgstr "" -#: apt-pkg/cdrom.cc:627 +#: apt-pkg/cdrom.cc:643 #, c-format msgid "Found %i package indexes, %i source indexes and %i signatures\n" msgstr "" -#: apt-pkg/cdrom.cc:684 +#: apt-pkg/cdrom.cc:700 msgid "That is not a valid name, try again.\n" msgstr "" -#: apt-pkg/cdrom.cc:700 +#: apt-pkg/cdrom.cc:716 #, c-format msgid "" "This Disc is called: \n" "'%s'\n" msgstr "" -#: apt-pkg/cdrom.cc:704 +#: apt-pkg/cdrom.cc:720 msgid "Copying package lists..." msgstr "" -#: apt-pkg/cdrom.cc:728 +#: apt-pkg/cdrom.cc:744 msgid "Writing new source list\n" msgstr "" -#: apt-pkg/cdrom.cc:737 +#: apt-pkg/cdrom.cc:753 msgid "Source List entries for this Disc are:\n" msgstr "" -#: apt-pkg/cdrom.cc:771 +#: apt-pkg/cdrom.cc:787 msgid "Unmounting CD-ROM..." msgstr "" |