summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAllan McRae <allan@archlinux.org>2013-07-16 21:34:54 +1000
committerAllan McRae <allan@archlinux.org>2014-09-23 21:26:55 +1000
commit7e9ad22ac21329adcf470bb00f2d0a386376fddf (patch)
treeeabd40c10cd63a7518d8566927cb1daa8fe5cad1
parentd3f5ab0e706071b8724575eb356b865d55da8df6 (diff)
downloadpacman-7e9ad22ac21329adcf470bb00f2d0a386376fddf.tar.xz
Add version file when creating local database directory
The version of the local pacman database is stored in its root in the file ALPM_DB_VERSION. The version is starting at 9, corresponding to the next libalpm library version. Signed-off-by: Allan McRae <allan@archlinux.org>
-rw-r--r--lib/libalpm/be_local.c18
-rw-r--r--test/pacman/pmdb.py2
2 files changed, 20 insertions, 0 deletions
diff --git a/lib/libalpm/be_local.c b/lib/libalpm/be_local.c
index 8c8b9b15..7df0ff88 100644
--- a/lib/libalpm/be_local.c
+++ b/lib/libalpm/be_local.c
@@ -44,6 +44,9 @@
#include "deps.h"
#include "filelist.h"
+/* local database format version */
+size_t ALPM_LOCAL_DB_VERSION = 9;
+
static int local_db_read(alpm_pkg_t *info, alpm_dbinfrq_t inforeq);
#define LAZY_LOAD(info, errret) \
@@ -366,6 +369,20 @@ static int is_dir(const char *path, struct dirent *entry)
return 0;
}
+static int local_db_add_version(alpm_db_t UNUSED *db, const char *dbpath)
+{
+ char dbverpath[PATH_MAX];
+ FILE *dbverfile;
+
+ snprintf(dbverpath, PATH_MAX, "%sALPM_DB_VERSION", dbpath);
+
+ dbverfile = fopen(dbverpath, "w");
+ fprintf(dbverfile, "%zu\n", ALPM_LOCAL_DB_VERSION);
+ fclose(dbverfile);
+
+ return 0;
+}
+
static int local_db_create(alpm_db_t *db, const char *dbpath)
{
if(mkdir(dbpath, 0755) != 0) {
@@ -373,6 +390,7 @@ static int local_db_create(alpm_db_t *db, const char *dbpath)
dbpath, strerror(errno));
RET_ERR(db->handle, ALPM_ERR_DB_CREATE, -1);
}
+ local_db_add_version(db, dbpath);
return 0;
}
diff --git a/test/pacman/pmdb.py b/test/pacman/pmdb.py
index a6cf78fc..60e0e9cc 100644
--- a/test/pacman/pmdb.py
+++ b/test/pacman/pmdb.py
@@ -87,6 +87,8 @@ class pmdb(object):
if self.read_dircache is None:
self.read_dircache = os.listdir(self.dbdir)
for entry in self.read_dircache:
+ if entry == "ALPM_DB_VERSION":
+ continue
[pkgname, pkgver, pkgrel] = entry.rsplit("-", 2)
if pkgname == name:
dbentry = entry