getting plaindir repos back in action: most of the files
authorStephan Kulow <coolo@suse.de>
Mon, 24 Mar 2008 14:30:37 +0000 (14:30 +0000)
committerStephan Kulow <coolo@suse.de>
Mon, 24 Mar 2008 14:30:37 +0000 (14:30 +0000)
understood by the libzypp parser are not working, but
zypper in <path.rpm> works again

zypp/RepoManager.cc
zypp/parser/plaindir/RepoParser.cc

index 1ab0df3..73d281c 100644 (file)
@@ -38,6 +38,7 @@
 #include "zypp/parser/yum/RepoParser.h"
 #include "zypp/repo/susetags/Downloader.h"
 #include "zypp/parser/susetags/RepoParser.h"
+#include "zypp/parser/plaindir/RepoParser.h"
 
 #include "zypp/ZYppCallbacks.h"
 
@@ -475,7 +476,6 @@ namespace zypp
 
         return refresh ? REFRESH_NEEDED : REPO_UP_TO_DATE;
       }
-#if 0
       else if ( repokind.toEnum() == RepoType::RPMPLAINDIR_e )
       {
         RepoStatus newstatus = parser::plaindir::dirStatus(url.getPathName());
@@ -498,9 +498,8 @@ namespace zypp
         if (!refresh)
           touchIndexFile(info);
 
-        return refresh;
+        return refresh ? REFRESH_NEEDED : REPO_UP_TO_DATE;
       }
-#endif
       else
       {
         ZYPP_THROW(RepoUnknownTypeException());
@@ -604,7 +603,6 @@ namespace zypp
 
           downloader_ptr->download( media, tmpdir.path());
         }
-#if 0
         else if ( repokind.toEnum() == RepoType::RPMPLAINDIR_e )
         {
           RepoStatus newstatus = parser::plaindir::dirStatus(url.getPathName());
@@ -618,7 +616,6 @@ namespace zypp
 
           file.close();
         }
-#endif
         else
         {
           ZYPP_THROW(RepoUnknownTypeException());
@@ -747,12 +744,17 @@ namespace zypp
     {
       case RepoType::RPMMD_e :
       case RepoType::YAST2_e :
+      case RepoType::RPMPLAINDIR_e :
       {
         // Take care we unlink the solvfile on exception
         ManagedFile guard( solvfile, filesystem::unlink );
 
         ostringstream cmd;
-        cmd << str::form( "repo2solv.sh \"%s\" > \"%s\"", rawpath.c_str(), solvfile.c_str() );
+        if ( repokind.toEnum() == RepoType::RPMPLAINDIR_e )
+        {
+          cmd << str::form( "repo2solv.sh \"%s\" > \"%s\"", info.baseUrlsBegin()->getPathName().c_str(), solvfile.c_str() );
+        } else
+          cmd << str::form( "repo2solv.sh \"%s\" > \"%s\"", rawpath.c_str(), solvfile.c_str() );
 
         MIL << "Executing: " << cmd.str() << endl;
         ExternalProgram prog( cmd.str(), ExternalProgram::Stderr_To_Stdout );
@@ -800,19 +802,6 @@ namespace zypp
         // no error
       }
       break;
-#endif
-#if 0
-      case RepoType::RPMPLAINDIR_e :
-      {
-        CombinedProgressData subprogrcv( progress, 100);
-        InputStream is(rawpath + "cookie");
-        string buffer;
-        getline( is.stream(), buffer);
-        Url url(buffer);
-        parser::plaindir::RepoParser parser(id, store, subprogrcv);
-        parser.parse(url.getPathName());
-      }
-      break;
 
       default:
         ZYPP_THROW(RepoUnknownTypeException());
index aeb856e..7958e48 100644 (file)
@@ -69,60 +69,6 @@ RepoStatus dirStatus( const Pathname &dir )
   return status;
 }
 
-data::Package_Ptr makePackageDataFromHeader( const RpmHeader::constPtr header,
-                                             set<string> * filerequires,
-                                             const Pathname & location, std::string &repoid )
-{
-  if ( ! header )
-    return 0;
-
-  if ( header->isSrc() ) {
-    WAR << "Can't make Package from SourcePackage header" << endl;
-    return 0;
-  }
-
-  data::Package_Ptr pkg = new data::Package;
-
-  pkg->name    = header->tag_name();
-  pkg->edition = header->tag_edition();
-  pkg->arch    = header->tag_arch();
-
-  header->tag_requires( filerequires ).swap( pkg->deps[Dep::REQUIRES] );
-  header->tag_prerequires( filerequires ).swap( pkg->deps[Dep::PREREQUIRES] );
-  header->tag_conflicts( filerequires ).swap( pkg->deps[Dep::CONFLICTS] );
-  header->tag_obsoletes( filerequires ).swap( pkg->deps[Dep::OBSOLETES] );
-  header->tag_enhances( filerequires ).swap( pkg->deps[Dep::ENHANCES] );
-  header->tag_suggests( filerequires ).swap( pkg->deps[Dep::SUGGESTS] );
-  header->tag_freshens( filerequires ).swap( pkg->deps[Dep::FRESHENS] );
-  header->tag_supplements( filerequires ).swap( pkg->deps[Dep::SUPPLEMENTS] );
-
-  pkg->vendor                 = header->tag_vendor();
-  pkg->installedSize          = header->tag_size();
-  pkg->buildTime              = header->tag_buildtime();
-  pkg->summary                = (TranslatedText)header->tag_summary();
-  pkg->description            = (TranslatedText)header->tag_description();
-
-  pkg->repositoryLocation     = location;
-
-  header->tag_du( pkg->diskusage );
-
-  list<string> filenames = header->tag_filenames();
-  pkg->deps[Dep::PROVIDES] = header->tag_provides ( filerequires );
-
-  for (list<string>::const_iterator filename = filenames.begin();
-       filename != filenames.end();
-       ++filename)
-  {
-    if ( Capability::isInterestingFileSpec( *filename ) )
-    {
-      pkg->deps[Dep::PROVIDES].insert( Capability( *filename, Capability::PARSED ) );
-    }
-  }
-
-  return pkg;
-}
-
-
 /** RepoParser implementation.
  * \todo Clean data on exeption.
  */
@@ -170,6 +116,7 @@ void RepoParser::Impl::parse( const Pathname & reporoot_r )
     ZYPP_THROW( AbortRequestException() );
 }
 
+#if 0
 int RepoParser::Impl::extract_packages_from_directory( const Pathname & rootpath,
                                                        const Pathname & subdir, 
                                                        bool recursive)
@@ -240,6 +187,8 @@ int RepoParser::Impl::extract_packages_from_directory( const Pathname & rootpath
   }
   return 0;
 }
+#endif
+
 ///////////////////////////////////////////////////////////////////
 //
 //     CLASS NAME : RepoParser