diff options
Diffstat (limited to 'main/apk-tools/0003-db-command-line-repositories-take-preference.patch')
-rw-r--r-- | main/apk-tools/0003-db-command-line-repositories-take-preference.patch | 194 |
1 files changed, 0 insertions, 194 deletions
diff --git a/main/apk-tools/0003-db-command-line-repositories-take-preference.patch b/main/apk-tools/0003-db-command-line-repositories-take-preference.patch deleted file mode 100644 index 1f1786c35a..0000000000 --- a/main/apk-tools/0003-db-command-line-repositories-take-preference.patch +++ /dev/null @@ -1,194 +0,0 @@ -From 6f1de8cd530f598f3f79414390d98fd8e683f2af Mon Sep 17 00:00:00 2001 -From: Timo Teras <timo.teras@iki.fi> -Date: Thu, 6 Aug 2009 10:17:28 +0300 -Subject: [PATCH 3/7] db: command line repositories take preference - -over the ones in config file. also remove the apk_root == NULL -check as this cannot happen anymore. a valid root is always -required. ---- - src/database.c | 145 +++++++++++++++++++++++++++----------------------------- - 1 files changed, 70 insertions(+), 75 deletions(-) - -diff --git a/src/database.c b/src/database.c -index 30e0431..834383b 100644 ---- a/src/database.c -+++ b/src/database.c -@@ -895,59 +895,56 @@ int apk_db_open(struct apk_database *db, const char *root, unsigned int flags) - db->cache_dir = apk_static_cache_dir; - db->permanent = 1; - -- if (root != NULL) { -- db->root = strdup(root); -- db->root_fd = openat(AT_FDCWD, db->root, O_RDONLY); -- if (db->root_fd < 0 && (flags & APK_OPENF_CREATE)) { -- mkdirat(AT_FDCWD, db->root, 0755); -- db->root_fd = openat(AT_FDCWD, root, O_RDONLY); -- } -- if (db->root_fd < 0) { -- msg = "Unable to open root"; -- goto ret_errno; -- } -- if (fstat64(db->root_fd, &st) != 0 || major(st.st_dev) == 0) -- db->permanent = 0; -- -- if (fstatat64(db->root_fd, apk_linked_cache_dir, &st, 0) == 0 && -- S_ISDIR(st.st_mode)) -- db->cache_dir = apk_linked_cache_dir; -- -- if (flags & APK_OPENF_WRITE) { -+ db->root = strdup(root); -+ db->root_fd = openat(AT_FDCWD, db->root, O_RDONLY); -+ if (db->root_fd < 0 && (flags & APK_OPENF_CREATE)) { -+ mkdirat(AT_FDCWD, db->root, 0755); -+ db->root_fd = openat(AT_FDCWD, root, O_RDONLY); -+ } -+ if (db->root_fd < 0) { -+ msg = "Unable to open root"; -+ goto ret_errno; -+ } -+ if (fstat64(db->root_fd, &st) != 0 || major(st.st_dev) == 0) -+ db->permanent = 0; -+ -+ if (fstatat64(db->root_fd, apk_linked_cache_dir, &st, 0) == 0 && -+ S_ISDIR(st.st_mode)) -+ db->cache_dir = apk_linked_cache_dir; -+ -+ if (flags & APK_OPENF_WRITE) { -+ db->lock_fd = openat(db->root_fd, "var/lib/apk/lock", -+ O_CREAT | O_RDWR, 0400); -+ if (db->lock_fd < 0 && errno == ENOENT && -+ (flags & APK_OPENF_CREATE)) { -+ r = apk_db_create(db); -+ if (r != 0) { -+ msg = "Unable to create database"; -+ goto ret_r; -+ } - db->lock_fd = openat(db->root_fd, "var/lib/apk/lock", - O_CREAT | O_RDWR, 0400); -- if (db->lock_fd < 0 && errno == ENOENT && -- (flags & APK_OPENF_CREATE)) { -- r = apk_db_create(db); -- if (r != 0) { -- msg = "Unable to create database"; -- goto ret_r; -- } -- db->lock_fd = openat(db->root_fd, -- "var/lib/apk/lock", -- O_CREAT | O_RDWR, 0400); -- } -- if (db->lock_fd < 0 || -- flock(db->lock_fd, LOCK_EX | LOCK_NB) < 0) { -- msg = "Unable to lock database"; -- if (apk_wait) { -- struct sigaction sa, old_sa; -- -- apk_message("Waiting for repository lock"); -- memset(&sa, 0, sizeof sa); -- sa.sa_handler = handle_alarm; -- sa.sa_flags = SA_ONESHOT; -- sigaction(SIGALRM, &sa, &old_sa); -- -- alarm(apk_wait); -- if (flock(db->lock_fd, LOCK_EX) < 0) -- goto ret_errno; -- -- alarm(0); -- sigaction(SIGALRM, &old_sa, NULL); -- } else -+ } -+ if (db->lock_fd < 0 || -+ flock(db->lock_fd, LOCK_EX | LOCK_NB) < 0) { -+ msg = "Unable to lock database"; -+ if (apk_wait) { -+ struct sigaction sa, old_sa; -+ -+ apk_message("Waiting for repository lock"); -+ memset(&sa, 0, sizeof sa); -+ sa.sa_handler = handle_alarm; -+ sa.sa_flags = SA_ONESHOT; -+ sigaction(SIGALRM, &sa, &old_sa); -+ -+ alarm(apk_wait); -+ if (flock(db->lock_fd, LOCK_EX) < 0) - goto ret_errno; -- } -+ -+ alarm(0); -+ sigaction(SIGALRM, &old_sa, NULL); -+ } else -+ goto ret_errno; - } - } - -@@ -959,33 +956,18 @@ int apk_db_open(struct apk_database *db, const char *root, unsigned int flags) - db->cachetmp_fd = openat(db->cache_fd, "tmp", O_RDONLY); - db->keys_fd = openat(db->root_fd, "etc/apk/keys", O_RDONLY); - -- if (root != NULL) { -- r = apk_db_read_state(db, flags); -- if (r == -ENOENT && (flags & APK_OPENF_CREATE)) { -- r = apk_db_create(db); -- if (r != 0) { -- msg = "Unable to create database"; -- goto ret_r; -- } -- r = apk_db_read_state(db, flags); -- } -+ r = apk_db_read_state(db, flags); -+ if (r == -ENOENT && (flags & APK_OPENF_CREATE)) { -+ r = apk_db_create(db); - if (r != 0) { -- msg = "Unable to read database state"; -+ msg = "Unable to create database"; - goto ret_r; - } -- -- if (!(flags & APK_OPENF_NO_REPOS)) { -- if (apk_repos == NULL) -- apk_repos = "etc/apk/repositories"; -- blob = apk_blob_from_file(db->root_fd, apk_repos); -- if (!APK_BLOB_IS_NULL(blob)) { -- r = apk_blob_for_each_segment( -- blob, "\n", -- apk_db_add_repository, db); -- rr = r ?: rr; -- free(blob.ptr); -- } -- } -+ r = apk_db_read_state(db, flags); -+ } -+ if (r != 0) { -+ msg = "Unable to read database state"; -+ goto ret_r; - } - - if (!(flags & APK_OPENF_NO_REPOS)) { -@@ -993,10 +975,23 @@ int apk_db_open(struct apk_database *db, const char *root, unsigned int flags) - r = apk_db_add_repository(db, APK_BLOB_STR(repo->url)); - rr = r ?: rr; - } -- -+ if (apk_repos == NULL) -+ apk_repos = "etc/apk/repositories"; -+ blob = apk_blob_from_file(db->root_fd, apk_repos); -+ if (!APK_BLOB_IS_NULL(blob)) { -+ r = apk_blob_for_each_segment( -+ blob, "\n", -+ apk_db_add_repository, db); -+ rr = r ?: rr; -+ free(blob.ptr); -+ } - if (apk_flags & APK_UPDATE_CACHE) - apk_db_index_write_nr_cache(db); - } -+ if (rr != 0) { -+ r = rr; -+ goto ret_r; -+ } - - return rr; - --- -1.6.4 - |