aboutsummaryrefslogtreecommitdiffstats
path: root/main/apk-tools/0004-db-Allow-override-arch-when-using-root.patch
diff options
context:
space:
mode:
authorNatanael Copa <ncopa@alpinelinux.org>2011-04-27 08:28:36 +0000
committerNatanael Copa <ncopa@alpinelinux.org>2011-04-27 08:28:36 +0000
commit0bad4fb65b2655b7cd4aeba3213833081195b7a3 (patch)
tree09679129d6d087df0bb903bdec5ec0be8afc2baa /main/apk-tools/0004-db-Allow-override-arch-when-using-root.patch
parentf8b09684c6f3562f749ccfd3d8dc651b973eaaf3 (diff)
downloadaports-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.patch85
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
+