- working but ugly-as-sin implementation of sqlite repodata handling
authorPanu Matilainen <pmatilai@laiskiainen.org>
Sat, 10 Feb 2007 22:01:10 +0000 (00:01 +0200)
committerPanu Matilainen <pmatilai@laiskiainen.org>
Sat, 10 Feb 2007 22:01:10 +0000 (00:01 +0200)
18 files changed:
Makefile.in
aclocal.m4
apt-pkg/Makefile.in
apt-pkg/rpm/repomd.cc
apt-pkg/rpm/repomd.h
apt-pkg/rpm/rpmhandler.cc
apt-pkg/rpm/rpmhandler.h
apt-pkg/rpm/rpmindexfile.cc
apt-pkg/rpm/rpmindexfile.h
apt-pkg/rpm/rpmrecords.cc
cmdline/Makefile.in
configure
configure.ac
doc/Makefile.in
lua/Makefile.in
methods/Makefile.in
test/Makefile.in
tools/Makefile.in

index f821d61..c08624c 100644 (file)
@@ -199,6 +199,7 @@ PTHREADLIB = @PTHREADLIB@
 RANLIB = @RANLIB@
 RPMLIBS = @RPMLIBS@
 RPM_PATH = @RPM_PATH@
+SED = @SED@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SOCKETLIBS = @SOCKETLIBS@
index 08eb60c..5e68a2b 100644 (file)
 # even the implied warranty of MERCHANTABILITY or FITNESS FOR A
 # PARTICULAR PURPOSE.
 
+# isc-posix.m4 serial 2 (gettext-0.11.2)
+dnl Copyright (C) 1995-2002 Free Software Foundation, Inc.
+dnl This file is free software; the Free Software Foundation
+dnl gives unlimited permission to copy and/or distribute it,
+dnl with or without modifications, as long as this notice is preserved.
+
+# This file is not needed with autoconf-2.53 and newer.  Remove it in 2005.
+
+# This test replaces the one in autoconf.
+# Currently this macro should have the same name as the autoconf macro
+# because gettext's gettext.m4 (distributed in the automake package)
+# still uses it.  Otherwise, the use in gettext.m4 makes autoheader
+# give these diagnostics:
+#   configure.in:556: AC_TRY_COMPILE was called before AC_ISC_POSIX
+#   configure.in:556: AC_TRY_RUN was called before AC_ISC_POSIX
+
+undefine([AC_ISC_POSIX])
+
+AC_DEFUN([AC_ISC_POSIX],
+  [
+    dnl This test replaces the obsolescent AC_ISC_POSIX kludge.
+    AC_CHECK_LIB(cposix, strerror, [LIBS="$LIBS -lcposix"])
+  ]
+)
+
 # libtool.m4 - Configure libtool for the host system. -*-Autoconf-*-
 
 # serial 48 AC_PROG_LIBTOOL
@@ -1597,7 +1622,7 @@ linux*)
 
   # Append ld.so.conf contents to the search path
   if test -f /etc/ld.so.conf; then
-    lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;s/[:,   ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '`
+    lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \[$]2)); skip = 1; } { if (!skip) print \[$]0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;s/[:,       ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '`
     sys_lib_dlsearch_path_spec="/lib${libsuff} /usr/lib${libsuff} $lt_ld_extra"
   fi
 
@@ -4305,6 +4330,9 @@ CC=$lt_[]_LT_AC_TAGVAR(compiler, $1)
 # Is the compiler the GNU C compiler?
 with_gcc=$_LT_AC_TAGVAR(GCC, $1)
 
+gcc_dir=\`gcc -print-file-name=. | $SED 's,/\.$,,'\`
+gcc_ver=\`gcc -dumpversion\`
+
 # An ERE matcher.
 EGREP=$lt_EGREP
 
@@ -4438,11 +4466,11 @@ striplib=$lt_striplib
 
 # Dependencies to place before the objects being linked to create a
 # shared library.
-predep_objects=$lt_[]_LT_AC_TAGVAR(predep_objects, $1)
+predep_objects=\`echo $lt_[]_LT_AC_TAGVAR(predep_objects, $1) | \$SED -e "s@\${gcc_dir}@\\\${gcc_dir}@g;s@\${gcc_ver}@\\\${gcc_ver}@g"\`
 
 # Dependencies to place after the objects being linked to create a
 # shared library.
-postdep_objects=$lt_[]_LT_AC_TAGVAR(postdep_objects, $1)
+postdep_objects=\`echo $lt_[]_LT_AC_TAGVAR(postdep_objects, $1) | \$SED -e "s@\${gcc_dir}@\\\${gcc_dir}@g;s@\${gcc_ver}@\\\${gcc_ver}@g"\`
 
 # Dependencies to place before the objects being linked to create a
 # shared library.
@@ -4454,7 +4482,7 @@ postdeps=$lt_[]_LT_AC_TAGVAR(postdeps, $1)
 
 # The library search path used internally by the compiler when linking
 # a shared library.
-compiler_lib_search_path=$lt_[]_LT_AC_TAGVAR(compiler_lib_search_path, $1)
+compiler_lib_search_path=\`echo $lt_[]_LT_AC_TAGVAR(compiler_lib_search_path, $1) | \$SED -e "s@\${gcc_dir}@\\\${gcc_dir}@g;s@\${gcc_ver}@\\\${gcc_ver}@g"\`
 
 # Method to check whether dependent libraries are shared objects.
 deplibs_check_method=$lt_deplibs_check_method
@@ -4534,7 +4562,7 @@ variables_saved_for_relink="$variables_saved_for_relink"
 link_all_deplibs=$_LT_AC_TAGVAR(link_all_deplibs, $1)
 
 # Compile-time system search path for libraries
-sys_lib_search_path_spec=$lt_sys_lib_search_path_spec
+sys_lib_search_path_spec=\`echo $lt_sys_lib_search_path_spec | \$SED -e "s@\${gcc_dir}@\\\${gcc_dir}@g;s@\${gcc_ver}@\\\${gcc_ver}@g"\`
 
 # Run-time system search path for libraries
 sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec
@@ -6370,6 +6398,7 @@ do
     done
   done
 done
+IFS=$as_save_IFS
 lt_ac_max=0
 lt_ac_count=0
 # Add /usr/xpg4/bin/sed as it is typically found on Solaris
@@ -6402,6 +6431,7 @@ for lt_ac_sed in $lt_ac_sed_list /usr/xpg4/bin/sed; do
 done
 ])
 SED=$lt_cv_path_SED
+AC_SUBST([SED])
 AC_MSG_RESULT([$SED])
 ])
 
@@ -6543,7 +6573,8 @@ installed software in a non-standard prefix.
 
 _PKG_TEXT
 ])],
-               [$4])
+               [AC_MSG_RESULT([no])
+                $4])
 elif test $pkg_failed = untried; then
        ifelse([$4], , [AC_MSG_FAILURE(dnl
 [The pkg-config script could not be found or is too old.  Make sure it
index bb0581b..f3cb43c 100644 (file)
@@ -185,6 +185,7 @@ PTHREADLIB = @PTHREADLIB@
 RANLIB = @RANLIB@
 RPMLIBS = @RPMLIBS@
 RPM_PATH = @RPM_PATH@
+SED = @SED@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SOCKETLIBS = @SOCKETLIBS@
index 74fbdc1..47f5bd4 100644 (file)
@@ -71,8 +71,8 @@ bool repomdRepository::ParseRelease(string File)
       }
 
       n = NULL;
-      if (flExtension(Path) == "gz") {
-        Path = Path.substr(0, Path.size()-3);
+      if (flExtension(Path) == "gz" || flExtension(Path) == "bz2") {
+        Path = Path.substr(0, Path.size()-flExtension(Path).size()-1);
         n = FindNode(Node, "open-checksum");
       } else {
         n = FindNode(Node, "checksum");
index cca1642..c2ebe08 100644 (file)
@@ -39,10 +39,10 @@ class repomdRepository : public pkgRepository
    bool FindURI(string DataType, string &URI);
    
    repomdRepository(string URI,string Dist, const pkgSourceList::Vendor *Vendor,
-                string RootURI)
+                string RootURI, string Compr)
       : pkgRepository(URI, Dist, Vendor, RootURI) 
    {
-      ComprMethod = "gz";
+      ComprMethod = Compr;
       // repomd always has a "release" file
       GotRelease = true;
    };
index 6c846de..e168a4d 100644 (file)
@@ -31,6 +31,7 @@
 #include <libxml/parser.h>
 #include <libxml/tree.h>
 #include <libxml/xmlreader.h>
+#include <sstream>
 #endif
 
 #include <apti18n.h>
@@ -904,6 +905,7 @@ void RPMDBHandler::Rewind()
 #ifdef APT_WITH_REPOMD
 RPMRepomdHandler::RPMRepomdHandler(string File)
 {
+   //cout << __PRETTY_FUNCTION__ << File << endl;
    PrimaryFile = File;
 
    ID = File;
@@ -1238,6 +1240,7 @@ RPMRepomdHandler::~RPMRepomdHandler()
 
 RPMRepomdFLHandler::RPMRepomdFLHandler(string File) : RPMHandler()
 {
+   //cout << __PRETTY_FUNCTION__ << File << endl;
    FilelistFile = File.substr(0, File.size() - 11) + "filelists.xml";
 
    ID = File;
@@ -1330,6 +1333,303 @@ RPMRepomdFLHandler::~RPMRepomdFLHandler()
 {
    xmlFreeTextReader(Filelist);
 }
+
+RPMSqliteHandler::RPMSqliteHandler(string File)
+{
+   //cout << __PRETTY_FUNCTION__ << endl;
+   int rc = 0;
+   char **res = NULL;
+   int nrow, ncol = 0;
+   string sql;
+
+   DBPath = File; 
+   // ugh, pass this in to the constructor or something..
+   FilesDBPath = File.substr(0, File.size() - 14) + "filelists.sqlite";
+   //cout << "db " << DBPath << " filelists " << FilesDBPath << endl;
+   rc = sqlite3_open(DBPath.c_str(), &db);
+   if (rc != SQLITE_OK) {
+      cout << "failed to open " << DBPath << endl;
+   }
+   if (! FilesDBPath.empty()) {
+      rc = sqlite3_open(FilesDBPath.c_str(), &filedb);
+      if (rc != SQLITE_OK) {
+        cout << "failed to open " << FilesDBPath << endl;
+      }
+   }
+
+   sql = "SELECT pkgKey FROM packages";
+   rc = sqlite3_get_table(db, sql.c_str(), &res, &nrow, &ncol, NULL);
+   if (rc != SQLITE_OK) {
+      cout << "failed to read package index size" << endl;
+   }
+
+   for (int c=1; c <= nrow; c++) {
+      Pkgs.push_back(atoi(res[c]));
+   }
+
+   // XXX Things are dead slow without these indexes the way this
+   // is implemented now. Just ignore any failures creating them,
+   // most likely it's because the index already exists.
+   sql = "CREATE INDEX providesIdx on provides (pkgKey)";
+   rc = sqlite3_exec (db, sql.c_str(), NULL, NULL, NULL);
+   sql = "CREATE INDEX requiresIdx on requires (pkgKey)";
+   rc = sqlite3_exec (db, sql.c_str(), NULL, NULL, NULL);
+   sql = "CREATE INDEX conflictsIdx on conflicts (pkgKey)";
+   rc = sqlite3_exec (db, sql.c_str(), NULL, NULL, NULL);
+   sql = "CREATE INDEX obsoletesIdx on obsoletes (pkgKey)";
+   rc = sqlite3_exec (db, sql.c_str(), NULL, NULL, NULL);
+
+   iSize = Pkgs.size();
+   PkgIter = Pkgs.begin();
+   //cout << iSize << " packages in " << File << endl;
+}
+
+RPMSqliteHandler::~RPMSqliteHandler()
+{
+   //cout << __PRETTY_FUNCTION__ << endl;
+   sqlite3_close(db);
+   sqlite3_close(filedb);
+}
+
+string RPMSqliteHandler::FindTag(string Tag)
+{
+   int rc = 0;
+   char **res = NULL;
+   int nrow, ncol = 0;
+   ostringstream sql;
+   string tag;
+
+   sql << "SELECT " << Tag << " FROM packages where pkgKey=" << *(PkgIter-1) << endl;
+   rc = sqlite3_get_table(db, sql.str().c_str(), &res, &nrow, &ncol, NULL);
+   if (rc != SQLITE_OK || nrow != 1) {
+      cout << "failed getting tag " << Tag << endl;
+      sqlite3_free_table(res);
+      return "";
+   }
+   tag = res[1];
+   sqlite3_free_table(res);
+   return tag;
+}
+
+bool RPMSqliteHandler::Skip()
+{
+   //cout << __PRETTY_FUNCTION__ << endl;
+   if (PkgIter == Pkgs.end()) {
+      return false;
+   }
+   iOffset = PkgIter - Pkgs.begin();
+   PkgIter++;
+   return true;
+}
+
+bool RPMSqliteHandler::Jump(off_t Offset)
+{
+   //cout << __PRETTY_FUNCTION__ << endl;
+   if (Offset >= iSize) {
+      return false;
+   }
+   iOffset = Offset;
+   PkgIter = Pkgs.begin() + Offset + 1;
+   return true;
+}
+
+void RPMSqliteHandler::Rewind()
+{
+   //cout << __PRETTY_FUNCTION__ << endl;
+   iOffset = 0;
+   PkgIter = Pkgs.begin();
+}
+
+string RPMSqliteHandler::Name()
+{
+   return FindTag("name");
+}
+
+string RPMSqliteHandler::Version()
+{
+   return FindTag("version");
+}
+
+string RPMSqliteHandler::Release()
+{
+   return FindTag("release");
+}
+
+string RPMSqliteHandler::Epoch()
+{
+   return FindTag("epoch");
+}
+
+string RPMSqliteHandler::Arch()
+{
+   return FindTag("arch");
+}
+
+string RPMSqliteHandler::Group()
+{
+   return FindTag("rpm_group");
+}
+
+string RPMSqliteHandler::Packager()
+{
+   return FindTag("rpm_packager");
+}
+string RPMSqliteHandler::Vendor()
+{
+   return FindTag("rpm_vendor");
+}
+string RPMSqliteHandler::Summary()
+{
+   return FindTag("summary");
+}
+string RPMSqliteHandler::Description()
+{
+   return FindTag("description");
+}
+string RPMSqliteHandler::SourceRpm()
+{
+   return FindTag("rpm_sourcerpm");
+}
+
+string RPMSqliteHandler::FileName()
+{
+   string str = FindTag("location_href");
+   str = basename((char *)str.c_str()); 
+   //cout << "basename " << str << endl;
+   return str;
+}
+
+string RPMSqliteHandler::Directory()
+{
+   //cout << __PRETTY_FUNCTION__ << endl;
+   string str = FindTag("location_href");
+   str = dirname((char *)str.c_str()); 
+   //cout << "dir " << str << endl;
+   return str;
+}
+
+unsigned long RPMSqliteHandler::FileSize()
+{
+   return atoi(FindTag("size_package").c_str());
+}
+
+unsigned long RPMSqliteHandler::InstalledSize()
+{
+   return atoi(FindTag("size_installed").c_str());
+}
+
+string RPMSqliteHandler::MD5Sum()
+{
+   return SHA1Sum();
+}
+
+string RPMSqliteHandler::SHA1Sum()
+{
+   // assuming sha sums for now..
+   return FindTag("checksum_value");
+}
+
+bool RPMSqliteHandler::PRCO(unsigned int Type, vector<Dependency*> &Deps)
+{
+   string what = "";
+   ostringstream sql;
+   int rc, nrow, ncol = 0;
+   char **res = NULL;
+
+   switch (Type) {
+      case pkgCache::Dep::Depends:
+        what = "requires";
+         break;
+      case pkgCache::Dep::Conflicts:
+        what = "conflicts";
+         break;
+      case pkgCache::Dep::Obsoletes:
+        what = "obsoletes";
+         break;
+      case pkgCache::Dep::Provides:
+        what = "provides";
+         break;
+   }
+   //cout << __PRETTY_FUNCTION__ << " " << *(PkgIter-1) << " " << what << endl;
+
+   sql << "SELECT name, flags, epoch, version, release FROM " << what << " where pkgKey=" << *(PkgIter-1) << endl;
+   rc = sqlite3_get_table(db, sql.str().c_str(), &res, &nrow, &ncol, NULL);
+   if (rc != SQLITE_OK) {
+      cout << what << " crap with pkgkey " << *(PkgIter-1) << endl;
+      sqlite3_free_table(res);
+      return false;
+   }
+   for (int c=0; c < nrow*ncol; c += ncol) {
+      int i = c+ncol;
+      int_32 RpmOp = 0;
+      string deptype, depver = "";
+
+      //cout << *(PkgIter-1) << " prco " << res[i+0] << endl;
+      if (res[i+1] == NULL) {
+        RpmOp == RPMSENSE_ANY;
+      } else {
+        deptype = res[i+1];
+        if (deptype == "EQ") {
+           RpmOp = RPMSENSE_EQUAL;
+        } else if (deptype == "GE") {
+           RpmOp = RPMSENSE_GREATER | RPMSENSE_EQUAL;
+        } else if (deptype == "GT") {
+           RpmOp = RPMSENSE_GREATER;
+        } else if (deptype == "LE") {
+           RpmOp = RPMSENSE_LESS | RPMSENSE_EQUAL;
+        } else if (deptype == "LT") {
+           RpmOp = RPMSENSE_LESS;
+        } else {
+           // erm, unknown dependency type?
+           cout << "unknown dep!? " << deptype << endl;
+           return false;
+        }
+        if (res[i+2] != NULL) {
+           depver += string(res[i+2]) + ":";
+        }
+        if (res[i+3] != NULL) {
+           depver += res[i+3];
+        }
+        if (res[i+4] != NULL) {
+           depver += "-" + string(res[i+4]);
+        }
+      }
+      char *depname = res[i+0];
+      //cout << what << " put dep " << depname << " " << RpmOp << " " << depver << endl;
+      bool res = PutDep(depname, depver.c_str(), RpmOp, Type, Deps);
+   }
+   sqlite3_free_table(res);
+   return true;
+}
+
+bool RPMSqliteHandler::FileList(vector<string> &FileList)
+{
+   //cout << __PRETTY_FUNCTION__ << endl;
+   ostringstream sql;
+   int rc, nrow, ncol = 0;
+   char **res = NULL;
+
+   sql << "SELECT dirname, filenames, filetypes FROM filelist where pkgKey=" << *(PkgIter-1) << endl;
+   rc = sqlite3_get_table(filedb, sql.str().c_str(), &res, &nrow, &ncol, NULL);
+   if (rc != SQLITE_OK) {
+      cout << "filelists crap with pkgkey " << *(PkgIter-1) << endl;
+      sqlite3_free_table(res);
+      return false;
+   }
+   for (int c=0; c < nrow*ncol; c += ncol) {
+      int i = c+ncol;
+      string dir = res[i];
+      char *pch = strtok(res[i+1], "/");
+      while (pch != NULL) {
+        FileList.push_back(dir + "/" + pch);
+        pch = strtok(NULL, "/");
+      }
+   }
+   sqlite3_free_table(res);
+   
+   return true;
+}
+
 #endif /* APT_WITH_REPOMD */
 
 
index 13eebb8..40ab9a8 100644 (file)
@@ -17,6 +17,7 @@
 #include <libxml/parser.h>
 #include <libxml/tree.h>
 #include <libxml/xmlreader.h>
+#include <sqlite3.h>
 #endif
 
 #include <rpm/rpmlib.h>
@@ -309,6 +310,56 @@ class RPMRepomdFLHandler : public RPMHandler
    RPMRepomdFLHandler(string File);
    virtual ~RPMRepomdFLHandler();
 };
+
+class RPMSqliteHandler : public RPMHandler
+{
+   protected:
+
+   sqlite3 *db;
+   sqlite3 *filedb;
+   sqlite3 *otherdb;
+   string DBPath;
+   string FilesDBPath;
+   string OtherDBPath;
+
+   vector<off_t> Pkgs;
+   vector<off_t>::iterator PkgIter;
+
+   string FindTag(string Tag);
+
+   public:
+
+   virtual bool Skip();
+   virtual bool Jump(off_t Offset);
+   virtual void Rewind();
+   virtual inline bool IsDatabase() {return false;};
+
+   virtual string FileName();
+   virtual string Directory();
+   virtual unsigned long FileSize();
+   virtual unsigned long InstalledSize();
+   virtual string MD5Sum();
+   virtual string SHA1Sum();
+
+   virtual string Name();
+   virtual string Arch();
+   virtual string Epoch();
+   virtual string Version();
+   virtual string Release();
+
+   virtual string Group();
+   virtual string Packager();
+   virtual string Vendor();
+   virtual string Summary();
+   virtual string Description();
+   virtual string SourceRpm();
+
+   virtual bool PRCO(unsigned int Type, vector<Dependency*> &Deps);
+   virtual bool FileList(vector<string> &FileList);
+
+   RPMSqliteHandler(string File);
+   virtual ~RPMSqliteHandler();
+};
 #endif /* APT_WITH_REPOMD */
 
 #endif
index cd104b8..63d346d 100644 (file)
@@ -659,15 +659,6 @@ bool rpmRepomdIndex::GetIndexes(pkgAcquire *Owner) const
                   Info("primary.xml"), "primary.xml");
    new pkgAcqIndex(Owner,Repository,IndexURI("filelists"),
                   Info("filelists.xml"), "filelists.xml");
-   if (_config->FindB("Acquire::ChangeLogs", false)) {
-      new pkgAcqIndex(Owner,Repository,IndexURI("other"),
-                    Info("other.xml"), "other.xml");
-   }
-   string dummy;
-   if (Repository->FindURI("updateinfo", dummy)) {
-      new pkgAcqIndex(Owner,Repository,IndexURI("updateinfo"),
-                    Info("updateinfo.xml"), "updateinfo.xml");
-   }
    return true;
 }
 
@@ -825,6 +816,46 @@ string rpmRepomdSrcIndex::SourceInfo(pkgSrcRecords::Parser const &Record,
       Res += " (" + File.Type + ")";
    return Res;
 }
+
+bool rpmRepomdDBIndex::GetIndexes(pkgAcquire *Owner) const
+{
+
+   new pkgAcqIndex(Owner,Repository,IndexURI("primary_db"),
+                  Info("primary.sqlite"), "primary.sqlite");
+   new pkgAcqIndex(Owner,Repository,IndexURI("filelists_db"),
+                  Info("filelists.sqlite"), "filelists.sqlite");
+   if (_config->FindB("Acquire::ChangeLogs", false)) {
+      new pkgAcqIndex(Owner,Repository,IndexURI("other_db"),
+                    Info("other.sqlite"), "other.sqlite");
+   }
+   return true;
+}
+
+unsigned long rpmRepomdDBIndex::Size() const
+{
+   RPMHandler *Handler = CreateHandler();
+   unsigned long Res = Handler->Size();
+   delete Handler;
+   return Res;
+}
+bool rpmRepomdDBIndex::MergeFileProvides(pkgCacheGenerator &Gen,
+                                       OpProgress &Prog) const
+{
+   string PackageFile = IndexPath();
+   RPMHandler *Handler = new RPMSqliteHandler(IndexPath());
+   rpmListParser Parser(Handler);
+   if (_error->PendingError() == true) {
+      delete Handler;
+      return _error->Error(_("Problem opening %s"),PackageFile.c_str());
+   }
+   // We call SubProgress with Size(), since we won't call SelectFile() here.
+   Prog.SubProgress(Size(),Info("pkglist"));
+   if (Gen.MergeFileProvides(Parser) == false)
+      return _error->Error(_("Problem with MergeFileProvides %s"),
+                          PackageFile.c_str());
+   delete Handler;
+   return true;
+}
 #endif /* APT_WITH_REPOMD */
 
 // DatabaseIndex::rpmDatabaseIndex - Constructor                       /*{{{*/
@@ -1055,7 +1086,8 @@ class rpmSLTypeRepomd : public rpmSLTypeGen
    public:
 
    pkgRepository *GetRepository(string URI,string Dist,
-                               const pkgSourceList::Vendor *Vendor) const
+                               const pkgSourceList::Vendor *Vendor,
+                               string Compr) const
    {
       pkgRepository *Rep = FindRepository(URI,Dist,Vendor);
       if (Rep != NULL)
@@ -1072,7 +1104,7 @@ class rpmSLTypeRepomd : public rpmSLTypeGen
       else
         BaseURI = URI + Dist + '/';
 
-      Rep = new repomdRepository(URI,Dist,Vendor,BaseURI);
+      Rep = new repomdRepository(URI,Dist,Vendor,BaseURI,Compr);
       RepList.push_back(Rep);
       return Rep;
    }
@@ -1081,7 +1113,7 @@ class rpmSLTypeRepomd : public rpmSLTypeGen
                   string URI, string Dist, string Section,
                   pkgSourceList::Vendor const *Vendor) const 
    {
-      pkgRepository *Rep = GetRepository(URI,Dist,Vendor);
+      pkgRepository *Rep = GetRepository(URI,Dist,Vendor,"gz");
       List.push_back(new rpmRepomdPkgIndex(URI,Dist,Section,Rep));
       return true;
    };
@@ -1125,7 +1157,7 @@ class rpmSLTypeRepomdSrc : public rpmSLTypeRepomd
                   string URI, string Dist, string Section,
                   pkgSourceList::Vendor const *Vendor) const 
    {
-      pkgRepository *Rep = GetRepository(URI,Dist,Vendor);
+      pkgRepository *Rep = GetRepository(URI,Dist,Vendor,"gz");
       List.push_back(new rpmRepomdSrcIndex(URI,Dist,Section,Rep));
       return true;
    };
@@ -1136,6 +1168,44 @@ class rpmSLTypeRepomdSrc : public rpmSLTypeRepomd
       Label = "RepoMD src tree";
    }   
 };
+
+class rpmSLTypeRepomdDB : public rpmSLTypeRepomd
+{
+   public:
+   bool CreateItem(vector<pkgIndexFile *> &List,
+                  string URI, string Dist, string Section,
+                  pkgSourceList::Vendor const *Vendor) const 
+   {
+      pkgRepository *Rep = GetRepository(URI,Dist,Vendor,"bz2");
+      List.push_back(new rpmRepomdDBPkgIndex(URI,Dist,Section,Rep));
+      return true;
+   };
+
+   rpmSLTypeRepomdDB()
+   {
+      Name = "repodb";
+      Label = "RepoMD DB tree";
+   }   
+};
+
+class rpmSLTypeRepomdDBSrc : public rpmSLTypeRepomd
+{
+   public:
+   bool CreateItem(vector<pkgIndexFile *> &List,
+                  string URI, string Dist, string Section,
+                  pkgSourceList::Vendor const *Vendor) const 
+   {
+      pkgRepository *Rep = GetRepository(URI,Dist,Vendor,"bz2");
+      List.push_back(new rpmRepomdDBSrcIndex(URI,Dist,Section,Rep));
+      return true;
+   };
+
+   rpmSLTypeRepomdDBSrc()
+   {
+      Name = "repodb-src";
+      Label = "RepoMD DB src tree";
+   }   
+};
 #endif /* APT_WITH_REPOMD */
 
 rpmSLTypeRpm _apt_rpmType;
@@ -1144,6 +1214,8 @@ rpmSLTypeRpmDir _apt_rpmDirType;
 rpmSLTypeSrpmDir _apt_rpmSrcDirType;
 #ifdef APT_WITH_REPOMD
 rpmSLTypeRepomd _apt_repomdType;
+rpmSLTypeRepomdDB _apt_repomdDBType;
+rpmSLTypeRepomdDBSrc _apt_repomdDBSrcType;
 rpmSLTypeRepomdSrc _apt_repomdSrcType;
 #endif
                                                                        /*}}}*/
@@ -1215,6 +1287,14 @@ const pkgIndexFile::Type *rpmRepomdSrcIndex::GetType() const
 {
    return &_apt_Src;
 }
+const pkgIndexFile::Type *rpmRepomdDBPkgIndex::GetType() const
+{
+   return &_apt_Pkg;
+}
+const pkgIndexFile::Type *rpmRepomdDBSrcIndex::GetType() const
+{
+   return &_apt_Src;
+}
 #endif
 
                                                                        /*}}}*/
index 2879720..28f2c98 100644 (file)
@@ -370,6 +370,62 @@ class rpmRepomdSrcIndex : public rpmRepomdIndex
                      pkgRepository *Repository) :
           rpmRepomdIndex(URI,Dist,Section,Repository) {};
 
+};
+
+class rpmRepomdDBIndex : public rpmRepomdIndex
+{
+   protected:
+
+   virtual string IndexPath() const {return IndexFile("primary_db");};
+
+   public:
+
+   // Creates a RPMHandler suitable for usage with this object
+   virtual RPMHandler *CreateHandler() const
+          { return new RPMSqliteHandler(IndexFile("primary_db")); };
+   virtual bool GetIndexes(pkgAcquire *Owner) const;
+   unsigned long Size() const;
+   virtual bool MergeFileProvides(pkgCacheGenerator &/*Gen*/,
+                                 OpProgress &/*Prog*/) const;
+
+
+   rpmRepomdDBIndex(string URI,string Dist,string Section,
+                     pkgRepository *Repository) :
+          rpmRepomdIndex(URI,Dist,Section,Repository) {};
+};
+
+class rpmRepomdDBPkgIndex : public rpmRepomdDBIndex
+{
+   protected:
+
+   virtual string MainType() const {return "repodb";};
+
+   public:
+
+   virtual bool HasPackages() const {return true;};
+   virtual const Type *GetType() const;
+
+
+   rpmRepomdDBPkgIndex(string URI,string Dist,string Section,
+                     pkgRepository *Repository) :
+          rpmRepomdDBIndex(URI,Dist,Section,Repository) {};
+
+};
+
+class rpmRepomdDBSrcIndex : public rpmRepomdDBIndex
+{
+   protected:
+
+   virtual string MainType() const {return "repodb-src";};
+
+   public:
+
+   virtual const Type *GetType() const;
+
+   rpmRepomdDBSrcIndex(string URI,string Dist,string Section,
+                     pkgRepository *Repository) :
+          rpmRepomdDBIndex(URI,Dist,Section,Repository) {};
+
 };
 #endif /* APT_WITH_REPOMD */
 
index 26dc946..2c26a9b 100644 (file)
@@ -44,6 +44,8 @@ rpmRecordParser::rpmRecordParser(string File, pkgCache &Cache)
       else if (flExtension(File) == "rpm")
         Handler = new RPMSingleFileHandler(File);
 #ifdef APT_WITH_REPOMD
+      else if (flExtension(File) == "sqlite")
+        Handler = new RPMSqliteHandler(File);
       else if (flExtension(File) == "xml")
         Handler = new RPMRepomdHandler(File);
 #endif
index 16ddc6c..c63b2c7 100644 (file)
@@ -215,6 +215,7 @@ PTHREADLIB = @PTHREADLIB@
 RANLIB = @RANLIB@
 RPMLIBS = @RPMLIBS@
 RPM_PATH = @RPM_PATH@
+SED = @SED@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SOCKETLIBS = @SOCKETLIBS@
index 67204e6..2ddb4ab 100755 (executable)
--- a/configure
+++ b/configure
@@ -465,7 +465,7 @@ ac_includes_default="\
 # include <unistd.h>
 #endif"
 
-ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS build build_cpu build_vendor build_os host host_cpu host_vendor host_os INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CYGPATH_W PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM mkdir_p AWK SET_MAKE am__leading_dot AMTAR am__tar am__untar MAINTAINER_MODE_TRUE MAINTAINER_MODE_FALSE MAINT CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT DEPDIR am__include am__quote AMDEP_TRUE AMDEP_FALSE AMDEPBACKSLASH CCDEPMODE am__fastdepCC_TRUE am__fastdepCC_FALSE EGREP LN_S ECHO AR ac_ct_AR RANLIB ac_ct_RANLIB CPP CXX CXXFLAGS ac_ct_CXX CXXDEPMODE am__fastdepCXX_TRUE am__fastdepCXX_FALSE CXXCPP F77 FFLAGS ac_ct_F77 LIBTOOL SOCKETLIBS PTHREADLIB RPM_PATH RPMLIBS WITH_LUA_TRUE WITH_LUA_FALSE WITH_SELINUX_TRUE WITH_SELINUX_FALSE PKG_CONFIG ac_pt_PKG_CONFIG LIBXML2_CFLAGS LIBXML2_LIBS WITH_REPOMD_TRUE WITH_REPOMD_FALSE COMPILE_STATIC_TRUE COMPILE_STATIC_FALSE COMPILE_APTSHELL_TRUE COMPILE_APTSHELL_FALSE HAVE_TIMEGM NEED_SOCKLEN_T_DEFINE GPG MKINSTALLDIRS USE_NLS MSGFMT GMSGFMT XGETTEXT MSGMERGE INTL_MACOSX_LIBS LIBICONV LTLIBICONV INTLLIBS LIBINTL LTLIBINTL POSUB GLIBC_VER LIBSTDCPP_VER LIBOBJS LTLIBOBJS'
+ac_subst_vars='SHELL PATH_SEPARATOR PACKAGE_NAME PACKAGE_TARNAME PACKAGE_VERSION PACKAGE_STRING PACKAGE_BUGREPORT exec_prefix prefix program_transform_name bindir sbindir libexecdir datadir sysconfdir sharedstatedir localstatedir libdir includedir oldincludedir infodir mandir build_alias host_alias target_alias DEFS ECHO_C ECHO_N ECHO_T LIBS build build_cpu build_vendor build_os host host_cpu host_vendor host_os INSTALL_PROGRAM INSTALL_SCRIPT INSTALL_DATA CYGPATH_W PACKAGE VERSION ACLOCAL AUTOCONF AUTOMAKE AUTOHEADER MAKEINFO install_sh STRIP ac_ct_STRIP INSTALL_STRIP_PROGRAM mkdir_p AWK SET_MAKE am__leading_dot AMTAR am__tar am__untar MAINTAINER_MODE_TRUE MAINTAINER_MODE_FALSE MAINT CC CFLAGS LDFLAGS CPPFLAGS ac_ct_CC EXEEXT OBJEXT DEPDIR am__include am__quote AMDEP_TRUE AMDEP_FALSE AMDEPBACKSLASH CCDEPMODE am__fastdepCC_TRUE am__fastdepCC_FALSE SED EGREP LN_S ECHO AR ac_ct_AR RANLIB ac_ct_RANLIB CPP CXX CXXFLAGS ac_ct_CXX CXXDEPMODE am__fastdepCXX_TRUE am__fastdepCXX_FALSE CXXCPP F77 FFLAGS ac_ct_F77 LIBTOOL SOCKETLIBS PTHREADLIB RPM_PATH RPMLIBS WITH_LUA_TRUE WITH_LUA_FALSE WITH_SELINUX_TRUE WITH_SELINUX_FALSE PKG_CONFIG ac_pt_PKG_CONFIG LIBXML2_CFLAGS LIBXML2_LIBS WITH_REPOMD_TRUE WITH_REPOMD_FALSE COMPILE_STATIC_TRUE COMPILE_STATIC_FALSE COMPILE_APTSHELL_TRUE COMPILE_APTSHELL_FALSE HAVE_TIMEGM NEED_SOCKLEN_T_DEFINE GPG MKINSTALLDIRS USE_NLS MSGFMT GMSGFMT XGETTEXT MSGMERGE INTL_MACOSX_LIBS LIBICONV LTLIBICONV INTLLIBS LIBINTL LTLIBINTL POSUB GLIBC_VER LIBSTDCPP_VER LIBOBJS LTLIBOBJS'
 ac_subst_files=''
 
 # Initialize some variables set by options.
@@ -3256,6 +3256,7 @@ do
     done
   done
 done
+IFS=$as_save_IFS
 lt_ac_max=0
 lt_ac_count=0
 # Add /usr/xpg4/bin/sed as it is typically found on Solaris
@@ -3290,6 +3291,7 @@ done
 fi
 
 SED=$lt_cv_path_SED
+
 echo "$as_me:$LINENO: result: $SED" >&5
 echo "${ECHO_T}$SED" >&6
 
@@ -3730,7 +3732,7 @@ ia64-*-hpux*)
   ;;
 *-*-irix6*)
   # Find out which ABI we are using.
-  echo '#line 3733 "configure"' > conftest.$ac_ext
+  echo '#line 3735 "configure"' > conftest.$ac_ext
   if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
@@ -5329,7 +5331,7 @@ fi
 
 
 # Provide some information about the compiler.
-echo "$as_me:5332:" \
+echo "$as_me:5334:" \
      "checking for Fortran 77 compiler version" >&5
 ac_compiler=`set X $ac_compile; echo $2`
 { (eval echo "$as_me:$LINENO: \"$ac_compiler --version </dev/null >&5\"") >&5
@@ -6392,11 +6394,11 @@ else
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:6395: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:6397: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>conftest.err)
    ac_status=$?
    cat conftest.err >&5
-   echo "$as_me:6399: \$? = $ac_status" >&5
+   echo "$as_me:6401: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s "$ac_outfile"; then
      # The compiler can only warn and ignore the option if not recognized
      # So say no if there are warnings other than the usual output.
@@ -6660,11 +6662,11 @@ else
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:6663: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:6665: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>conftest.err)
    ac_status=$?
    cat conftest.err >&5
-   echo "$as_me:6667: \$? = $ac_status" >&5
+   echo "$as_me:6669: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s "$ac_outfile"; then
      # The compiler can only warn and ignore the option if not recognized
      # So say no if there are warnings other than the usual output.
@@ -6764,11 +6766,11 @@ else
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:6767: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:6769: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>out/conftest.err)
    ac_status=$?
    cat out/conftest.err >&5
-   echo "$as_me:6771: \$? = $ac_status" >&5
+   echo "$as_me:6773: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s out/conftest2.$ac_objext
    then
      # The compiler can only warn and ignore the option if not recognized
@@ -8233,7 +8235,7 @@ linux*)
   libsuff=
   case "$host_cpu" in
   x86_64*|s390x*|powerpc64*)
-    echo '#line 8236 "configure"' > conftest.$ac_ext
+    echo '#line 8238 "configure"' > conftest.$ac_ext
     if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
@@ -8252,7 +8254,7 @@ linux*)
 
   # Append ld.so.conf contents to the search path
   if test -f /etc/ld.so.conf; then
-    lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;s/[:,       ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '`
+    lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;s/[:,   ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '`
     sys_lib_dlsearch_path_spec="/lib${libsuff} /usr/lib${libsuff} $lt_ld_extra"
   fi
 
@@ -9130,7 +9132,7 @@ else
   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
   lt_status=$lt_dlunknown
   cat > conftest.$ac_ext <<EOF
-#line 9133 "configure"
+#line 9135 "configure"
 #include "confdefs.h"
 
 #if HAVE_DLFCN_H
@@ -9230,7 +9232,7 @@ else
   lt_dlunknown=0; lt_dlno_uscore=1; lt_dlneed_uscore=2
   lt_status=$lt_dlunknown
   cat > conftest.$ac_ext <<EOF
-#line 9233 "configure"
+#line 9235 "configure"
 #include "confdefs.h"
 
 #if HAVE_DLFCN_H
@@ -9561,6 +9563,9 @@ CC=$lt_compiler
 # Is the compiler the GNU C compiler?
 with_gcc=$GCC
 
+gcc_dir=\`gcc -print-file-name=. | $SED 's,/\.$,,'\`
+gcc_ver=\`gcc -dumpversion\`
+
 # An ERE matcher.
 EGREP=$lt_EGREP
 
@@ -9694,11 +9699,11 @@ striplib=$lt_striplib
 
 # Dependencies to place before the objects being linked to create a
 # shared library.
-predep_objects=$lt_predep_objects
+predep_objects=\`echo $lt_predep_objects | \$SED -e "s@\${gcc_dir}@\\\${gcc_dir}@g;s@\${gcc_ver}@\\\${gcc_ver}@g"\`
 
 # Dependencies to place after the objects being linked to create a
 # shared library.
-postdep_objects=$lt_postdep_objects
+postdep_objects=\`echo $lt_postdep_objects | \$SED -e "s@\${gcc_dir}@\\\${gcc_dir}@g;s@\${gcc_ver}@\\\${gcc_ver}@g"\`
 
 # Dependencies to place before the objects being linked to create a
 # shared library.
@@ -9710,7 +9715,7 @@ postdeps=$lt_postdeps
 
 # The library search path used internally by the compiler when linking
 # a shared library.
-compiler_lib_search_path=$lt_compiler_lib_search_path
+compiler_lib_search_path=\`echo $lt_compiler_lib_search_path | \$SED -e "s@\${gcc_dir}@\\\${gcc_dir}@g;s@\${gcc_ver}@\\\${gcc_ver}@g"\`
 
 # Method to check whether dependent libraries are shared objects.
 deplibs_check_method=$lt_deplibs_check_method
@@ -9790,7 +9795,7 @@ variables_saved_for_relink="$variables_saved_for_relink"
 link_all_deplibs=$link_all_deplibs
 
 # Compile-time system search path for libraries
-sys_lib_search_path_spec=$lt_sys_lib_search_path_spec
+sys_lib_search_path_spec=\`echo $lt_sys_lib_search_path_spec | \$SED -e "s@\${gcc_dir}@\\\${gcc_dir}@g;s@\${gcc_ver}@\\\${gcc_ver}@g"\`
 
 # Run-time system search path for libraries
 sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec
@@ -11570,11 +11575,11 @@ else
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:11573: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:11578: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>conftest.err)
    ac_status=$?
    cat conftest.err >&5
-   echo "$as_me:11577: \$? = $ac_status" >&5
+   echo "$as_me:11582: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s "$ac_outfile"; then
      # The compiler can only warn and ignore the option if not recognized
      # So say no if there are warnings other than the usual output.
@@ -11674,11 +11679,11 @@ else
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:11677: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:11682: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>out/conftest.err)
    ac_status=$?
    cat out/conftest.err >&5
-   echo "$as_me:11681: \$? = $ac_status" >&5
+   echo "$as_me:11686: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s out/conftest2.$ac_objext
    then
      # The compiler can only warn and ignore the option if not recognized
@@ -12210,7 +12215,7 @@ linux*)
   libsuff=
   case "$host_cpu" in
   x86_64*|s390x*|powerpc64*)
-    echo '#line 12213 "configure"' > conftest.$ac_ext
+    echo '#line 12218 "configure"' > conftest.$ac_ext
     if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
@@ -12229,7 +12234,7 @@ linux*)
 
   # Append ld.so.conf contents to the search path
   if test -f /etc/ld.so.conf; then
-    lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;s/[:,       ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '`
+    lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;s/[:,   ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '`
     sys_lib_dlsearch_path_spec="/lib${libsuff} /usr/lib${libsuff} $lt_ld_extra"
   fi
 
@@ -12614,6 +12619,9 @@ CC=$lt_compiler_CXX
 # Is the compiler the GNU C compiler?
 with_gcc=$GCC_CXX
 
+gcc_dir=\`gcc -print-file-name=. | $SED 's,/\.$,,'\`
+gcc_ver=\`gcc -dumpversion\`
+
 # An ERE matcher.
 EGREP=$lt_EGREP
 
@@ -12747,11 +12755,11 @@ striplib=$lt_striplib
 
 # Dependencies to place before the objects being linked to create a
 # shared library.
-predep_objects=$lt_predep_objects_CXX
+predep_objects=\`echo $lt_predep_objects_CXX | \$SED -e "s@\${gcc_dir}@\\\${gcc_dir}@g;s@\${gcc_ver}@\\\${gcc_ver}@g"\`
 
 # Dependencies to place after the objects being linked to create a
 # shared library.
-postdep_objects=$lt_postdep_objects_CXX
+postdep_objects=\`echo $lt_postdep_objects_CXX | \$SED -e "s@\${gcc_dir}@\\\${gcc_dir}@g;s@\${gcc_ver}@\\\${gcc_ver}@g"\`
 
 # Dependencies to place before the objects being linked to create a
 # shared library.
@@ -12763,7 +12771,7 @@ postdeps=$lt_postdeps_CXX
 
 # The library search path used internally by the compiler when linking
 # a shared library.
-compiler_lib_search_path=$lt_compiler_lib_search_path_CXX
+compiler_lib_search_path=\`echo $lt_compiler_lib_search_path_CXX | \$SED -e "s@\${gcc_dir}@\\\${gcc_dir}@g;s@\${gcc_ver}@\\\${gcc_ver}@g"\`
 
 # Method to check whether dependent libraries are shared objects.
 deplibs_check_method=$lt_deplibs_check_method
@@ -12843,7 +12851,7 @@ variables_saved_for_relink="$variables_saved_for_relink"
 link_all_deplibs=$link_all_deplibs_CXX
 
 # Compile-time system search path for libraries
-sys_lib_search_path_spec=$lt_sys_lib_search_path_spec
+sys_lib_search_path_spec=\`echo $lt_sys_lib_search_path_spec | \$SED -e "s@\${gcc_dir}@\\\${gcc_dir}@g;s@\${gcc_ver}@\\\${gcc_ver}@g"\`
 
 # Run-time system search path for libraries
 sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec
@@ -13265,11 +13273,11 @@ else
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:13268: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:13276: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>conftest.err)
    ac_status=$?
    cat conftest.err >&5
-   echo "$as_me:13272: \$? = $ac_status" >&5
+   echo "$as_me:13280: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s "$ac_outfile"; then
      # The compiler can only warn and ignore the option if not recognized
      # So say no if there are warnings other than the usual output.
@@ -13369,11 +13377,11 @@ else
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:13372: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:13380: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>out/conftest.err)
    ac_status=$?
    cat out/conftest.err >&5
-   echo "$as_me:13376: \$? = $ac_status" >&5
+   echo "$as_me:13384: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s out/conftest2.$ac_objext
    then
      # The compiler can only warn and ignore the option if not recognized
@@ -14818,7 +14826,7 @@ linux*)
   libsuff=
   case "$host_cpu" in
   x86_64*|s390x*|powerpc64*)
-    echo '#line 14821 "configure"' > conftest.$ac_ext
+    echo '#line 14829 "configure"' > conftest.$ac_ext
     if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
@@ -14837,7 +14845,7 @@ linux*)
 
   # Append ld.so.conf contents to the search path
   if test -f /etc/ld.so.conf; then
-    lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;s/[:,       ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '`
+    lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;s/[:,   ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '`
     sys_lib_dlsearch_path_spec="/lib${libsuff} /usr/lib${libsuff} $lt_ld_extra"
   fi
 
@@ -15222,6 +15230,9 @@ CC=$lt_compiler_F77
 # Is the compiler the GNU C compiler?
 with_gcc=$GCC_F77
 
+gcc_dir=\`gcc -print-file-name=. | $SED 's,/\.$,,'\`
+gcc_ver=\`gcc -dumpversion\`
+
 # An ERE matcher.
 EGREP=$lt_EGREP
 
@@ -15355,11 +15366,11 @@ striplib=$lt_striplib
 
 # Dependencies to place before the objects being linked to create a
 # shared library.
-predep_objects=$lt_predep_objects_F77
+predep_objects=\`echo $lt_predep_objects_F77 | \$SED -e "s@\${gcc_dir}@\\\${gcc_dir}@g;s@\${gcc_ver}@\\\${gcc_ver}@g"\`
 
 # Dependencies to place after the objects being linked to create a
 # shared library.
-postdep_objects=$lt_postdep_objects_F77
+postdep_objects=\`echo $lt_postdep_objects_F77 | \$SED -e "s@\${gcc_dir}@\\\${gcc_dir}@g;s@\${gcc_ver}@\\\${gcc_ver}@g"\`
 
 # Dependencies to place before the objects being linked to create a
 # shared library.
@@ -15371,7 +15382,7 @@ postdeps=$lt_postdeps_F77
 
 # The library search path used internally by the compiler when linking
 # a shared library.
-compiler_lib_search_path=$lt_compiler_lib_search_path_F77
+compiler_lib_search_path=\`echo $lt_compiler_lib_search_path_F77 | \$SED -e "s@\${gcc_dir}@\\\${gcc_dir}@g;s@\${gcc_ver}@\\\${gcc_ver}@g"\`
 
 # Method to check whether dependent libraries are shared objects.
 deplibs_check_method=$lt_deplibs_check_method
@@ -15451,7 +15462,7 @@ variables_saved_for_relink="$variables_saved_for_relink"
 link_all_deplibs=$link_all_deplibs_F77
 
 # Compile-time system search path for libraries
-sys_lib_search_path_spec=$lt_sys_lib_search_path_spec
+sys_lib_search_path_spec=\`echo $lt_sys_lib_search_path_spec | \$SED -e "s@\${gcc_dir}@\\\${gcc_dir}@g;s@\${gcc_ver}@\\\${gcc_ver}@g"\`
 
 # Run-time system search path for libraries
 sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec
@@ -15593,11 +15604,11 @@ else
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:15596: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:15607: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>conftest.err)
    ac_status=$?
    cat conftest.err >&5
-   echo "$as_me:15600: \$? = $ac_status" >&5
+   echo "$as_me:15611: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s "$ac_outfile"; then
      # The compiler can only warn and ignore the option if not recognized
      # So say no if there are warnings other than the usual output.
@@ -15861,11 +15872,11 @@ else
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:15864: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:15875: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>conftest.err)
    ac_status=$?
    cat conftest.err >&5
-   echo "$as_me:15868: \$? = $ac_status" >&5
+   echo "$as_me:15879: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s "$ac_outfile"; then
      # The compiler can only warn and ignore the option if not recognized
      # So say no if there are warnings other than the usual output.
@@ -15965,11 +15976,11 @@ else
    -e 's:.*FLAGS}\{0,1\} :&$lt_compiler_flag :; t' \
    -e 's: [^ ]*conftest\.: $lt_compiler_flag&:; t' \
    -e 's:$: $lt_compiler_flag:'`
-   (eval echo "\"\$as_me:15968: $lt_compile\"" >&5)
+   (eval echo "\"\$as_me:15979: $lt_compile\"" >&5)
    (eval "$lt_compile" 2>out/conftest.err)
    ac_status=$?
    cat out/conftest.err >&5
-   echo "$as_me:15972: \$? = $ac_status" >&5
+   echo "$as_me:15983: \$? = $ac_status" >&5
    if (exit $ac_status) && test -s out/conftest2.$ac_objext
    then
      # The compiler can only warn and ignore the option if not recognized
@@ -17434,7 +17445,7 @@ linux*)
   libsuff=
   case "$host_cpu" in
   x86_64*|s390x*|powerpc64*)
-    echo '#line 17437 "configure"' > conftest.$ac_ext
+    echo '#line 17448 "configure"' > conftest.$ac_ext
     if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5
   (eval $ac_compile) 2>&5
   ac_status=$?
@@ -17453,7 +17464,7 @@ linux*)
 
   # Append ld.so.conf contents to the search path
   if test -f /etc/ld.so.conf; then
-    lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;s/[:,       ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '`
+    lt_ld_extra=`awk '/^include / { system(sprintf("cd /etc; cat %s 2>/dev/null", \$2)); skip = 1; } { if (!skip) print \$0; skip = 0; }' < /etc/ld.so.conf | $SED -e 's/#.*//;s/[:,   ]/ /g;s/=[^=]*$//;s/=[^= ]* / /g;/^$/d' | tr '\n' ' '`
     sys_lib_dlsearch_path_spec="/lib${libsuff} /usr/lib${libsuff} $lt_ld_extra"
   fi
 
@@ -17838,6 +17849,9 @@ CC=$lt_compiler_GCJ
 # Is the compiler the GNU C compiler?
 with_gcc=$GCC_GCJ
 
+gcc_dir=\`gcc -print-file-name=. | $SED 's,/\.$,,'\`
+gcc_ver=\`gcc -dumpversion\`
+
 # An ERE matcher.
 EGREP=$lt_EGREP
 
@@ -17971,11 +17985,11 @@ striplib=$lt_striplib
 
 # Dependencies to place before the objects being linked to create a
 # shared library.
-predep_objects=$lt_predep_objects_GCJ
+predep_objects=\`echo $lt_predep_objects_GCJ | \$SED -e "s@\${gcc_dir}@\\\${gcc_dir}@g;s@\${gcc_ver}@\\\${gcc_ver}@g"\`
 
 # Dependencies to place after the objects being linked to create a
 # shared library.
-postdep_objects=$lt_postdep_objects_GCJ
+postdep_objects=\`echo $lt_postdep_objects_GCJ | \$SED -e "s@\${gcc_dir}@\\\${gcc_dir}@g;s@\${gcc_ver}@\\\${gcc_ver}@g"\`
 
 # Dependencies to place before the objects being linked to create a
 # shared library.
@@ -17987,7 +18001,7 @@ postdeps=$lt_postdeps_GCJ
 
 # The library search path used internally by the compiler when linking
 # a shared library.
-compiler_lib_search_path=$lt_compiler_lib_search_path_GCJ
+compiler_lib_search_path=\`echo $lt_compiler_lib_search_path_GCJ | \$SED -e "s@\${gcc_dir}@\\\${gcc_dir}@g;s@\${gcc_ver}@\\\${gcc_ver}@g"\`
 
 # Method to check whether dependent libraries are shared objects.
 deplibs_check_method=$lt_deplibs_check_method
@@ -18067,7 +18081,7 @@ variables_saved_for_relink="$variables_saved_for_relink"
 link_all_deplibs=$link_all_deplibs_GCJ
 
 # Compile-time system search path for libraries
-sys_lib_search_path_spec=$lt_sys_lib_search_path_spec
+sys_lib_search_path_spec=\`echo $lt_sys_lib_search_path_spec | \$SED -e "s@\${gcc_dir}@\\\${gcc_dir}@g;s@\${gcc_ver}@\\\${gcc_ver}@g"\`
 
 # Run-time system search path for libraries
 sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec
@@ -18319,6 +18333,9 @@ CC=$lt_compiler_RC
 # Is the compiler the GNU C compiler?
 with_gcc=$GCC_RC
 
+gcc_dir=\`gcc -print-file-name=. | $SED 's,/\.$,,'\`
+gcc_ver=\`gcc -dumpversion\`
+
 # An ERE matcher.
 EGREP=$lt_EGREP
 
@@ -18452,11 +18469,11 @@ striplib=$lt_striplib
 
 # Dependencies to place before the objects being linked to create a
 # shared library.
-predep_objects=$lt_predep_objects_RC
+predep_objects=\`echo $lt_predep_objects_RC | \$SED -e "s@\${gcc_dir}@\\\${gcc_dir}@g;s@\${gcc_ver}@\\\${gcc_ver}@g"\`
 
 # Dependencies to place after the objects being linked to create a
 # shared library.
-postdep_objects=$lt_postdep_objects_RC
+postdep_objects=\`echo $lt_postdep_objects_RC | \$SED -e "s@\${gcc_dir}@\\\${gcc_dir}@g;s@\${gcc_ver}@\\\${gcc_ver}@g"\`
 
 # Dependencies to place before the objects being linked to create a
 # shared library.
@@ -18468,7 +18485,7 @@ postdeps=$lt_postdeps_RC
 
 # The library search path used internally by the compiler when linking
 # a shared library.
-compiler_lib_search_path=$lt_compiler_lib_search_path_RC
+compiler_lib_search_path=\`echo $lt_compiler_lib_search_path_RC | \$SED -e "s@\${gcc_dir}@\\\${gcc_dir}@g;s@\${gcc_ver}@\\\${gcc_ver}@g"\`
 
 # Method to check whether dependent libraries are shared objects.
 deplibs_check_method=$lt_deplibs_check_method
@@ -18548,7 +18565,7 @@ variables_saved_for_relink="$variables_saved_for_relink"
 link_all_deplibs=$link_all_deplibs_RC
 
 # Compile-time system search path for libraries
-sys_lib_search_path_spec=$lt_sys_lib_search_path_spec
+sys_lib_search_path_spec=\`echo $lt_sys_lib_search_path_spec | \$SED -e "s@\${gcc_dir}@\\\${gcc_dir}@g;s@\${gcc_ver}@\\\${gcc_ver}@g"\`
 
 # Run-time system search path for libraries
 sys_lib_dlsearch_path_spec=$lt_sys_lib_dlsearch_path_spec
@@ -19595,13 +19612,14 @@ if eval "test \"`echo '$ac_cv_prog_cc_'${ac_cc}_c_o`\" != yes"; then
    CC="$am_aux_dir/compile $CC"
 fi
 
-echo "$as_me:$LINENO: checking for library containing strerror" >&5
-echo $ECHO_N "checking for library containing strerror... $ECHO_C" >&6
-if test "${ac_cv_search_strerror+set}" = set; then
+
+        echo "$as_me:$LINENO: checking for strerror in -lcposix" >&5
+echo $ECHO_N "checking for strerror in -lcposix... $ECHO_C" >&6
+if test "${ac_cv_lib_cposix_strerror+set}" = set; then
   echo $ECHO_N "(cached) $ECHO_C" >&6
 else
-  ac_func_search_save_LIBS=$LIBS
-ac_cv_search_strerror=no
+  ac_check_lib_save_LIBS=$LIBS
+LIBS="-lcposix  $LIBS"
 cat >conftest.$ac_ext <<_ACEOF
 /* confdefs.h.  */
 _ACEOF
@@ -19646,80 +19664,24 @@ if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
   ac_status=$?
   echo "$as_me:$LINENO: \$? = $ac_status" >&5
   (exit $ac_status); }; }; then
-  ac_cv_search_strerror="none required"
+  ac_cv_lib_cposix_strerror=yes
 else
   echo "$as_me: failed program was:" >&5
 sed 's/^/| /' conftest.$ac_ext >&5
 
+ac_cv_lib_cposix_strerror=no
 fi
 rm -f conftest.err conftest.$ac_objext \
       conftest$ac_exeext conftest.$ac_ext
-if test "$ac_cv_search_strerror" = no; then
-  for ac_lib in cposix; do
-    LIBS="-l$ac_lib  $ac_func_search_save_LIBS"
-    cat >conftest.$ac_ext <<_ACEOF
-/* confdefs.h.  */
-_ACEOF
-cat confdefs.h >>conftest.$ac_ext
-cat >>conftest.$ac_ext <<_ACEOF
-/* end confdefs.h.  */
-
-/* Override any gcc2 internal prototype to avoid an error.  */
-#ifdef __cplusplus
-extern "C"
-#endif
-/* We use char because int might match the return type of a gcc2
-   builtin and then its argument prototype would still apply.  */
-char strerror ();
-int
-main ()
-{
-strerror ();
-  ;
-  return 0;
-}
-_ACEOF
-rm -f conftest.$ac_objext conftest$ac_exeext
-if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5
-  (eval $ac_link) 2>conftest.er1
-  ac_status=$?
-  grep -v '^ *+' conftest.er1 >conftest.err
-  rm -f conftest.er1
-  cat conftest.err >&5
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); } &&
-        { ac_try='test -z "$ac_c_werror_flag"
-                        || test ! -s conftest.err'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; } &&
-        { ac_try='test -s conftest$ac_exeext'
-  { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5
-  (eval $ac_try) 2>&5
-  ac_status=$?
-  echo "$as_me:$LINENO: \$? = $ac_status" >&5
-  (exit $ac_status); }; }; then
-  ac_cv_search_strerror="-l$ac_lib"
-break
-else
-  echo "$as_me: failed program was:" >&5
-sed 's/^/| /' conftest.$ac_ext >&5
-
-fi
-rm -f conftest.err conftest.$ac_objext \
-      conftest$ac_exeext conftest.$ac_ext
-  done
+LIBS=$ac_check_lib_save_LIBS
 fi
-LIBS=$ac_func_search_save_LIBS
+echo "$as_me:$LINENO: result: $ac_cv_lib_cposix_strerror" >&5
+echo "${ECHO_T}$ac_cv_lib_cposix_strerror" >&6
+if test $ac_cv_lib_cposix_strerror = yes; then
+  LIBS="$LIBS -lcposix"
 fi
-echo "$as_me:$LINENO: result: $ac_cv_search_strerror" >&5
-echo "${ECHO_T}$ac_cv_search_strerror" >&6
-if test "$ac_cv_search_strerror" != no; then
-  test "$ac_cv_search_strerror" = "none required" || LIBS="$ac_cv_search_strerror $LIBS"
 
-fi
+
 
 
 ac_ext=cc
@@ -21303,7 +21265,7 @@ else
   RPMDBLIBS="-ldb-3.1"
 fi
 
-      RPMLIBS="-lrpm $RPMDBLIBS -lrpmio -lz -lbz2 -lpopt"
+      RPMLIBS="-lrpm $RPMDBLIBS -lrpmio -lz -lbz2 -lpopt -lsqlite3"
    fi
    echo "$as_me:$LINENO: checking for RPM libraries" >&5
 echo $ECHO_N "checking for RPM libraries... $ECHO_C" >&6
@@ -27083,6 +27045,7 @@ s,@AMDEPBACKSLASH@,$AMDEPBACKSLASH,;t t
 s,@CCDEPMODE@,$CCDEPMODE,;t t
 s,@am__fastdepCC_TRUE@,$am__fastdepCC_TRUE,;t t
 s,@am__fastdepCC_FALSE@,$am__fastdepCC_FALSE,;t t
+s,@SED@,$SED,;t t
 s,@EGREP@,$EGREP,;t t
 s,@LN_S@,$LN_S,;t t
 s,@ECHO@,$ECHO,;t t
index 495b2ac..02f8e17 100644 (file)
@@ -85,7 +85,7 @@ else
          [RPMDBLIBS="-lrpmdb"],
          [RPMDBLIBS="-ldb-3.1"],
          [-lrpm -lrpmio -lz -lbz2 -lpopt])
-      RPMLIBS="-lrpm $RPMDBLIBS -lrpmio -lz -lbz2 -lpopt"
+      RPMLIBS="-lrpm $RPMDBLIBS -lrpmio -lz -lbz2 -lpopt -lsqlite3"
    fi
    AC_MSG_CHECKING(for RPM libraries)
    AC_MSG_RESULT($RPMLIBS)
index b9bd977..af2f467 100644 (file)
@@ -137,6 +137,7 @@ PTHREADLIB = @PTHREADLIB@
 RANLIB = @RANLIB@
 RPMLIBS = @RPMLIBS@
 RPM_PATH = @RPM_PATH@
+SED = @SED@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SOCKETLIBS = @SOCKETLIBS@
index ac10f41..97cc0c9 100644 (file)
@@ -176,6 +176,7 @@ PTHREADLIB = @PTHREADLIB@
 RANLIB = @RANLIB@
 RPMLIBS = @RPMLIBS@
 RPM_PATH = @RPM_PATH@
+SED = @SED@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SOCKETLIBS = @SOCKETLIBS@
index d488298..8d45b32 100644 (file)
@@ -205,6 +205,7 @@ PTHREADLIB = @PTHREADLIB@
 RANLIB = @RANLIB@
 RPMLIBS = @RPMLIBS@
 RPM_PATH = @RPM_PATH@
+SED = @SED@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SOCKETLIBS = @SOCKETLIBS@
index bde8be5..fd421c1 100644 (file)
@@ -172,6 +172,7 @@ PTHREADLIB = @PTHREADLIB@
 RANLIB = @RANLIB@
 RPMLIBS = @RPMLIBS@
 RPM_PATH = @RPM_PATH@
+SED = @SED@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SOCKETLIBS = @SOCKETLIBS@
index bda2266..d4eb5ee 100644 (file)
@@ -179,6 +179,7 @@ PTHREADLIB = @PTHREADLIB@
 RANLIB = @RANLIB@
 RPMLIBS = @RPMLIBS@
 RPM_PATH = @RPM_PATH@
+SED = @SED@
 SET_MAKE = @SET_MAKE@
 SHELL = @SHELL@
 SOCKETLIBS = @SOCKETLIBS@