]> git.saurik.com Git - apt.git/commitdiff
display warnings instead of errors if the parts dirs doesn't exist
authorDavid Kalnischkies <kalnischkies@gmail.com>
Wed, 15 Jul 2009 21:57:07 +0000 (23:57 +0200)
committerDavid Kalnischkies <kalnischkies@gmail.com>
Wed, 15 Jul 2009 21:57:07 +0000 (23:57 +0200)
Parts dirs are /etc/apt/{sources.list,apt.conf,preferences}.d
(in the default setup)

apt-pkg/cachefile.cc
apt-pkg/init.cc
apt-pkg/policy.cc
apt-pkg/sourcelist.cc
debian/changelog

index 0b1efb9ff97460b41d1363c10262577dd844894c..790312dc8d88d849c89887d20dd1db070fce0558 100644 (file)
@@ -48,6 +48,7 @@ pkgCacheFile::~pkgCacheFile()
 /* */
 bool pkgCacheFile::BuildCaches(OpProgress &Progress,bool WithLock)
 {
+   const bool ErrorWasEmpty = _error->empty();
    if (WithLock == true)
       if (_system->Lock() == false)
         return false;
@@ -70,7 +71,7 @@ bool pkgCacheFile::BuildCaches(OpProgress &Progress,bool WithLock)
       return _error->Error(_("The package lists or status file could not be parsed or opened."));
 
    /* This sux, remove it someday */
-   if (_error->empty() == false)
+   if (ErrorWasEmpty == true && _error->empty() == false)
       _error->Warning(_("You may want to run apt-get update to correct these problems"));
 
    Cache = new pkgCache(Map);
@@ -91,6 +92,7 @@ bool pkgCacheFile::Open(OpProgress &Progress,bool WithLock)
    Policy = new pkgPolicy(Cache);
    if (_error->PendingError() == true)
       return false;
+
    if (ReadPinFile(*Policy) == false || ReadPinDir(*Policy) == false)
       return false;
    
index 4abfb726f08de1fcb5a661820ade06209af1121f..63caade36a599b818b93ce0e466aa72aef12569b 100644 (file)
@@ -81,19 +81,26 @@ bool pkgInitConfig(Configuration &Cnf)
    
    // Read an alternate config file
    const char *Cfg = getenv("APT_CONFIG");
-   if (Cfg != 0 && FileExists(Cfg) == true)
-      Res &= ReadConfigFile(Cnf,Cfg);
-   
+   if (Cfg != 0)
+   {
+      if (FileExists(Cfg) == true)
+        Res &= ReadConfigFile(Cnf,Cfg);
+      else
+        _error->WarningE("FileExists",_("Unable to read %s"),Cfg);
+   }
+
    // Read the configuration parts dir
    string Parts = Cnf.FindDir("Dir::Etc::parts");
    if (FileExists(Parts) == true)
       Res &= ReadConfigDir(Cnf,Parts);
-      
+   else
+      _error->WarningE("FileExists",_("Unable to read %s"),Parts.c_str());
+
    // Read the main config file
    string FName = Cnf.FindFile("Dir::Etc::main");
    if (FileExists(FName) == true)
       Res &= ReadConfigFile(Cnf,FName);
-   
+
    if (Res == false)
       return false;
    
index 26d1c17bdc6061bccc3b69ccaeb9bf06132f355e..81fdb0431eac789c538ac960a3b1319c6b54bfb7 100644 (file)
@@ -267,12 +267,21 @@ class PreferenceSection : public pkgTagSection
                                                                        /*}}}*/
 // ReadPinDir - Load the pin files from this dir into a Policy         /*{{{*/
 // ---------------------------------------------------------------------
-/* */
+/* This will load each pin file in the given dir into a Policy. If the
+   given dir is empty the dir set in Dir::Etc::PreferencesParts is used.
+   Note also that this method will issue a warning if the dir does not
+   exists but it will return true in this case! */
 bool ReadPinDir(pkgPolicy &Plcy,string Dir)
 {
    if (Dir.empty() == true)
       Dir = _config->FindDir("Dir::Etc::PreferencesParts");
 
+   if (FileExists(Dir) == false)
+   {
+      _error->WarningE("FileExists",_("Unable to read %s"),Dir.c_str());
+      return true;
+   }
+
    DIR *D = opendir(Dir.c_str());
    if (D == 0)
       return _error->Errno("opendir",_("Unable to read %s"),Dir.c_str());
index fea645078688e64caa213b6148bd204b99455199..47a08ad9071a2c5a99470c68400ecd2f8cc3aad8 100644 (file)
@@ -158,12 +158,16 @@ bool pkgSourceList::ReadMainList()
    //                  entries in sources.list.d.
    string Main = _config->FindFile("Dir::Etc::sourcelist");
    if (FileExists(Main) == true)
-      Res &= ReadAppend(Main);   
+      Res &= ReadAppend(Main);
+   else
+      _error->WarningE("FileExists",_("Unable to read %s"),Main.c_str());
 
    string Parts = _config->FindDir("Dir::Etc::sourceparts");
    if (FileExists(Parts) == true)
       Res &= ReadSourceDir(Parts);
-   
+   else
+      _error->WarningE("FileExists",_("Unable to read %s"),Parts.c_str());
+
    return Res;
 }
                                                                        /*}}}*/
index 786b8a86f99181841a29207d35c635355957811f..e4da484d46ad521f0d2631d86f1c0575524c0908 100644 (file)
@@ -39,6 +39,7 @@ apt (0.7.22) UNRELEASED; urgency=low
     array which can (at least in theory) grow dynamic
   * add a segfault handler to MMap to show the Cache-Limit message, which
     can be deactivated with MMap::SegfaultHandler=false (Closes: 535218)
+  * display warnings instead of errors if the parts dirs doesn't exist
 
   [ Michael Vogt ]
   * honor the dpkg hold state in new Marker hooks (closes: #64141)