]> git.pld-linux.org Git - packages/rpm.git/commitdiff
- compile rpmdb tool with choosen bdb and check if it's done properly
authorJan Rękorajski <baggins@pld-linux.org>
Sat, 24 Nov 2012 12:11:41 +0000 (13:11 +0100)
committerJan Rękorajski <baggins@pld-linux.org>
Sat, 24 Nov 2012 12:11:41 +0000 (13:11 +0100)
rpm.spec
rpmdb_checkversion.c

index b3697727a1d6457b0703350aba40261aa18cc2dd..20b8228a141aa0bda20112ac9e53f08e0926462a 100644 (file)
--- a/rpm.spec
+++ b/rpm.spec
@@ -961,7 +961,13 @@ sed -i \
 
 %{?with_apidocs:%{__make} apidocs}
 
-%{__cc} %{rpmcflags} tools/rpmdb_checkversion.c -o tools/rpmdb_checkversion -ldb-%{reqdb_ver}
+%{__cc} %{rpmcflags} -I/usr/include/db%{reqdb_ver} tools/rpmdb_checkversion.c \
+       -o tools/rpmdb_checkversion -ldb-%{reqdb_ver}
+
+if tools/rpmdb_checkversion -V 2>&1 | grep "t match library version"; then
+       echo "Error linking rpmdb tools!"
+       exit 1
+fi
 
 %install
 rm -rf $RPM_BUILD_ROOT
index 7666fff9da02cd27ef22f0914675149e45157191..58a169c4483b53f28d60a422da9a128ff86a537f 100644 (file)
@@ -5,6 +5,8 @@
 #include <unistd.h>
 #include <db.h>
 
+int    version_check __P((void));
+
 const char *progname = "rpmdb_checkversion";           /* Program name. */
 
 /*
@@ -20,6 +22,9 @@ main(int argc, char *argv[])
        DB_ENV *dbenv;
        int ret;
 
+       if ((ret = version_check()) != 0)
+               return (EXIT_FAILURE);
+
        /*
         * All of the shared database files live in home, but
         * data files will live in data_dir.
@@ -27,7 +32,7 @@ main(int argc, char *argv[])
        quiet = 0;
        home = "/var/lib/rpm";
        data_dir = "/var/lib/rpm";
-       while ((ch = getopt(argc, argv, "h:d:q")) != EOF)
+       while ((ch = getopt(argc, argv, "h:d:qV")) != EOF)
                switch (ch) {
                case 'h':
                        home = optarg;
@@ -38,6 +43,9 @@ main(int argc, char *argv[])
                case 'q':
                        quiet = 1;
                        break;
+               case 'V':
+                       printf("%s\n", db_version(NULL, NULL, NULL));
+                       return (EXIT_SUCCESS);
                case '?':
                default:
                        (void)fprintf(stderr, "usage: %s [-h home] [-d data_dir]\n", progname);
@@ -94,3 +102,20 @@ main(int argc, char *argv[])
 
        return (0);
 }
+
+int
+version_check()
+{
+       int v_major, v_minor, v_patch;
+
+       /* Make sure we're loaded with the right version of the DB library. */
+       (void)db_version(&v_major, &v_minor, &v_patch);
+       if (v_major != DB_VERSION_MAJOR || v_minor != DB_VERSION_MINOR) {
+               fprintf(stderr,
+                   "%s: version %d.%d doesn't match library version %d.%d\n",
+                   progname, DB_VERSION_MAJOR,
+                   DB_VERSION_MINOR, v_major, v_minor);
+               return (EXIT_FAILURE);
+       }
+       return (0);
+}
This page took 0.047664 seconds and 4 git commands to generate.