]> git.saurik.com Git - apt.git/blobdiff - cmdline/apt-get.cc
Speeling correction
[apt.git] / cmdline / apt-get.cc
index 592834485b84109985fa2098e70740d5597666a7..a41c50b0a854667d230799bbee15dcd249a3a24a 100644 (file)
@@ -1,6 +1,6 @@
 // -*- mode: cpp; mode: fold -*-
 // Description                                                         /*{{{*/
-// $Id: apt-get.cc,v 1.109 2001/07/01 22:59:04 jgg Exp $
+// $Id: apt-get.cc,v 1.118 2002/04/02 07:16:24 jgg Exp $
 /* ######################################################################
    
    apt-get - Cover for dpkg
@@ -45,7 +45,8 @@
 
 #include "acqprogress.h"
 
-#include <fstream.h>
+#include <locale.h>
+#include <fstream>
 #include <termios.h>
 #include <sys/ioctl.h>
 #include <sys/stat.h>
@@ -511,7 +512,7 @@ void Stats(ostream &out,pkgDepCache &Dep)
    if (Downgrade != 0)
       ioprintf(out,_("%lu downgraded, "),Downgrade);
 
-   ioprintf(out,_("%lu to remove and %lu  not upgraded.\n"),
+   ioprintf(out,_("%lu to remove and %lu not upgraded.\n"),
            Dep.DelCount(),Dep.KeepCount());
    
    if (Dep.BadCount() != 0)
@@ -721,7 +722,8 @@ bool InstallPackages(CacheFile &Cache,bool ShwKept,bool Ask = true,
 
    /* Check for enough free space, but only if we are actually going to
       download */
-   if (_config->FindB("APT::Get::Print-URIs") == false)
+   if (_config->FindB("APT::Get::Print-URIs") == false &&
+       _config->FindB("APT::Get::Download",true) == true)
    {
       struct statvfs Buf;
       string OutputDir = _config->FindDir("Dir::Cache::Archives");
@@ -1174,11 +1176,21 @@ bool DoUpdate(CommandLine &CmdL)
    // Create the download object
    AcqTextStatus Stat(ScreenWidth,_config->FindI("quiet",0));
    pkgAcquire Fetcher(&Stat);
-   
+
    // Populate it with the source selection
    if (List.GetIndexes(&Fetcher) == false)
         return false;
    
+   // Just print out the uris an exit if the --print-uris flag was used
+   if (_config->FindB("APT::Get::Print-URIs") == true)
+   {
+      pkgAcquire::UriIterator I = Fetcher.UriBegin();
+      for (; I != Fetcher.UriEnd(); I++)
+        cout << '\'' << I->URI << "' " << flNotDir(I->Owner->DestFile) << ' ' << 
+              I->Owner->FileSize << ' ' << I->Owner->MD5Sum() << endl;
+      return true;
+   }
+   
    // Run it
    if (Fetcher.Run() == pkgAcquire::Failed)
       return false;
@@ -1860,9 +1872,25 @@ bool DoBuildDep(CommandLine &CmdL)
             
       // Process the build-dependencies
       vector<pkgSrcRecords::Parser::BuildDepRec> BuildDeps;
-      if (Last->BuildDepends(BuildDeps) == false)
+      if (Last->BuildDepends(BuildDeps, _config->FindB("APT::Get::Arch-Only",false)) == false)
        return _error->Error(_("Unable to get build-dependency information for %s"),Src.c_str());
    
+      // Also ensure that build-essential packages are present
+      Configuration::Item const *Opts = _config->Tree("APT::Build-Essential");
+      if (Opts) 
+        Opts = Opts->Child;
+      for (; Opts; Opts = Opts->Next)
+      {
+        if (Opts->Value.empty() == true)
+           continue;
+
+         pkgSrcRecords::Parser::BuildDepRec rec;
+        rec.Package = Opts->Value;
+        rec.Type = pkgSrcRecords::Parser::BuildDependIndep;
+        rec.Op = 0;
+        BuildDeps.insert(BuildDeps.begin(), rec);
+      }
+
       if (BuildDeps.size() == 0)
       {
         ioprintf(c1out,_("%s has no build depends.\n"),Src.c_str());
@@ -1877,8 +1905,15 @@ bool DoBuildDep(CommandLine &CmdL)
       {
         pkgCache::PkgIterator Pkg = Cache->FindPkg((*D).Package);
         if (Pkg.end() == true)
+         {
+           /* for a build-conflict; ignore unknown packages */
+           if ((*D).Type == pkgSrcRecords::Parser::BuildConflict || 
+               (*D).Type == pkgSrcRecords::Parser::BuildConflictIndep)
+               continue;
+
            return _error->Error(_("%s dependency on %s cannot be satisfied because the package %s cannot be found"),
                                 Last->BuildDepType((*D).Type),Src.c_str(),(*D).Package.c_str());
+         }
         pkgCache::VerIterator IV = (*Cache)[Pkg].InstVerIter(*Cache);
         
         if ((*D).Type == pkgSrcRecords::Parser::BuildConflict || 
@@ -2112,6 +2147,7 @@ int main(int argc,const char *argv[])
       {0,"trivial-only","APT::Get::Trivial-Only",0},
       {0,"remove","APT::Get::Remove",0},
       {0,"only-source","APT::Get::Only-Source",0},
+      {0,"arch-only","APT::Get::Arch-Only",0},
       {'c',"config-file",0,CommandLine::ConfigFile},
       {'o',"option",0,CommandLine::ArbItem},
       {0,0,0,0}};
@@ -2125,11 +2161,15 @@ int main(int argc,const char *argv[])
                                    {"clean",&DoClean},
                                    {"autoclean",&DoAutoClean},
                                    {"check",&DoCheck},
-                                  {"source",&DoSource},
+                                  {"source",&DoSource},
                                   {"moo",&DoMoo},
-                                  {"help",&ShowHelp},
+                                  {"help",&ShowHelp},
                                    {0,0}};
-   
+
+   // Set up gettext support
+   setlocale(LC_ALL,"");
+   textdomain(PACKAGE);
+
    // Parse the command line and initialize the package library
    CommandLine CmdL(Args,_config);
    if (pkgInitConfig(*_config) == false ||