summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Spooren <mail@aparcar.org>2020-10-03 12:31:56 -1000
committerTimo Teräs <timo.teras@iki.fi>2021-04-11 14:03:31 +0300
commite959755dffcf23fcdc6d6ba8d50c08e83dab7fb6 (patch)
tree9525bc2eb08ccc7d630a812a56c6661d234ff7ec
parent3a89a7b381707879507f9bc5e3d6e8d8222d1e54 (diff)
downloadapk-tools-e959755dffcf23fcdc6d6ba8d50c08e83dab7fb6.tar.gz
apk-tools-e959755dffcf23fcdc6d6ba8d50c08e83dab7fb6.tar.bz2
apk-tools-e959755dffcf23fcdc6d6ba8d50c08e83dab7fb6.tar.xz
apk-tools-e959755dffcf23fcdc6d6ba8d50c08e83dab7fb6.zip
database: automatically create missing cache dir
On some systems the `/var/` dir is mounted in a tmpfs which is reseted after each reboot. For that reason no post-install script can handle the creation of the cache dir at `/var/cache/apk`. Check on database opnening if the folder is available, if not create it. Fixes #10715 Signed-off-by: Paul Spooren <mail@aparcar.org> (cherry picked from commit dac30d50497214c8722a57ee1ae8d3c369babe38)
-rw-r--r--src/database.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/src/database.c b/src/database.c
index d9aadc6..fa48fa3 100644
--- a/src/database.c
+++ b/src/database.c
@@ -1659,6 +1659,12 @@ int apk_db_open(struct apk_database *db, struct apk_db_options *dbopts)
if (fd >= 0) close(fd);
db->cache_dir = apk_static_cache_dir;
db->cache_fd = openat(db->root_fd, db->cache_dir, O_RDONLY | O_CLOEXEC);
+ if (db->cache_fd < 0) {
+ mkdirat(db->root_fd, "var/cache", 0755);
+ mkdirat(db->root_fd, "var/cache/apk", 0755);
+ db->cache_fd = openat(db->root_fd, db->cache_dir, O_RDONLY | O_CLOEXEC);
+ if (db->cache_fd < 0) goto ret_errno;
+ }
}
db->keys_fd = openat(db->root_fd,