[packages/rpm/db52] - compile rpmdb tool with choosen bdb and check if it's done properly

baggins baggins at pld-linux.org
Sat Nov 24 13:12:27 CET 2012


commit fb95de52a7ed1dbb5fde31d008b787e4384ecffe
Author: Jan Rękorajski <baggins at pld-linux.org>
Date:   Sat Nov 24 13:11:41 2012 +0100

    - compile rpmdb tool with choosen bdb and check if it's done properly

 rpm.spec             |  8 +++++++-
 rpmdb_checkversion.c | 27 ++++++++++++++++++++++++++-
 2 files changed, 33 insertions(+), 2 deletions(-)
---
diff --git a/rpm.spec b/rpm.spec
index b369772..20b8228 100644
--- 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
diff --git a/rpmdb_checkversion.c b/rpmdb_checkversion.c
index 7666fff..58a169c 100644
--- a/rpmdb_checkversion.c
+++ b/rpmdb_checkversion.c
@@ -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);
+}
================================================================

---- gitweb:

http://git.pld-linux.org/gitweb.cgi/packages/rpm.git/commitdiff/fb95de52a7ed1dbb5fde31d008b787e4384ecffe



More information about the pld-cvs-commit mailing list