diff options
author | Natanael Copa <ncopa@alpinelinux.org> | 2011-04-27 08:28:36 +0000 |
---|---|---|
committer | Natanael Copa <ncopa@alpinelinux.org> | 2011-04-27 08:28:36 +0000 |
commit | 0bad4fb65b2655b7cd4aeba3213833081195b7a3 (patch) | |
tree | 09679129d6d087df0bb903bdec5ec0be8afc2baa /main/apk-tools/0004-db-Allow-override-arch-when-using-root.patch | |
parent | f8b09684c6f3562f749ccfd3d8dc651b973eaaf3 (diff) | |
download | aports-0bad4fb65b2655b7cd4aeba3213833081195b7a3.tar.bz2 aports-0bad4fb65b2655b7cd4aeba3213833081195b7a3.tar.xz |
main/apk-tools: add patches from git
fixes #588
Diffstat (limited to 'main/apk-tools/0004-db-Allow-override-arch-when-using-root.patch')
-rw-r--r-- | main/apk-tools/0004-db-Allow-override-arch-when-using-root.patch | 85 |
1 files changed, 85 insertions, 0 deletions
diff --git a/main/apk-tools/0004-db-Allow-override-arch-when-using-root.patch b/main/apk-tools/0004-db-Allow-override-arch-when-using-root.patch new file mode 100644 index 0000000000..fe1a64b6b4 --- /dev/null +++ b/main/apk-tools/0004-db-Allow-override-arch-when-using-root.patch @@ -0,0 +1,85 @@ +From cec1fa2b0f414e980c4dc56a5cc4dc9ff48bddb8 Mon Sep 17 00:00:00 2001 +From: Natanael Copa <ncopa@alpinelinux.org> +Date: Thu, 14 Apr 2011 21:48:49 +0200 +Subject: [PATCH 4/7] db: Allow override arch when using --root + +This is so we can do x86 --root installs on x86_64 hosts. + +Using --arch without --root can make great damage so we only enable it +if --root is used. +--- + src/apk.c | 5 +++++ + src/apk_database.h | 1 + + src/database.c | 7 +++++-- + 3 files changed, 11 insertions(+), 2 deletions(-) + +diff --git a/src/apk.c b/src/apk.c +index 55963b0..c40cc20 100644 +--- a/src/apk.c ++++ b/src/apk.c +@@ -66,6 +66,8 @@ static struct apk_option generic_options[] = { + required_argument, "REPOFILE" }, + { 0x109, "no-network", "Do not use network (cache is still used)" }, + { 0x111, "overlay-from-stdin", "Read list of overlay files from stdin" }, ++ { 0x112, "arch", "Use architecture with --root", ++ required_argument, "ARCH" }, + }; + + static int version(void) +@@ -369,6 +371,9 @@ int main(int argc, char **argv) + case 0x111: + apk_flags |= APK_OVERLAY_FROM_STDIN; + break; ++ case 0x112: ++ dbopts.arch = optarg; ++ break; + default: + if (applet == NULL || applet->parse == NULL || + applet->parse(ctx, &dbopts, r, +diff --git a/src/apk_database.h b/src/apk_database.h +index 68bba08..9b032e7 100644 +--- a/src/apk_database.h ++++ b/src/apk_database.h +@@ -95,6 +95,7 @@ struct apk_db_options { + int lock_wait; + unsigned long open_flags; + char *root; ++ char *arch; + char *keys_dir; + char *repositories_file; + struct list_head repository_list; +diff --git a/src/database.c b/src/database.c +index 1376ec3..45960d2 100644 +--- a/src/database.c ++++ b/src/database.c +@@ -49,7 +49,6 @@ enum { + + int apk_verbosity = 1; + unsigned int apk_flags = 0; +-const char *apk_arch = APK_DEFAULT_ARCH; + + const char * const apkindex_tar_gz = "APKINDEX.tar.gz"; + static const char * const apk_static_cache_dir = "var/cache/apk"; +@@ -1149,6 +1148,11 @@ int apk_db_open(struct apk_database *db, struct apk_db_options *dbopts) + apk_string_array_init(&db->protected_paths); + db->permanent = 1; + ++ if (dbopts->root && dbopts->arch) { ++ db->arch = apk_blob_atomize(APK_BLOB_STR(dbopts->arch)); ++ } else { ++ db->arch = apk_blob_atomize(APK_BLOB_STR(APK_DEFAULT_ARCH)); ++ } + db->root = strdup(dbopts->root ?: "/"); + db->root_fd = openat(AT_FDCWD, db->root, O_RDONLY | O_CLOEXEC); + if (db->root_fd < 0 && (dbopts->open_flags & APK_OPENF_CREATE)) { +@@ -1226,7 +1230,6 @@ int apk_db_open(struct apk_database *db, struct apk_db_options *dbopts) + db->cachetmp_fd = db->cache_fd; + } + +- db->arch = apk_blob_atomize(APK_BLOB_STR(apk_arch)); + db->keys_fd = openat(db->root_fd, + dbopts->keys_dir ?: "etc/apk/keys", + O_RDONLY | O_CLOEXEC); +-- +1.7.4.5 + |