summaryrefslogtreecommitdiff
path: root/core/pacman/replace-i686-by-pentium4-when-architecture-is-auto.patch
diff options
context:
space:
mode:
Diffstat (limited to 'core/pacman/replace-i686-by-pentium4-when-architecture-is-auto.patch')
-rw-r--r--core/pacman/replace-i686-by-pentium4-when-architecture-is-auto.patch86
1 files changed, 86 insertions, 0 deletions
diff --git a/core/pacman/replace-i686-by-pentium4-when-architecture-is-auto.patch b/core/pacman/replace-i686-by-pentium4-when-architecture-is-auto.patch
new file mode 100644
index 00000000..32030586
--- /dev/null
+++ b/core/pacman/replace-i686-by-pentium4-when-architecture-is-auto.patch
@@ -0,0 +1,86 @@
+diff --git a/src/pacman/conf.c b/src/pacman/conf.c
+index 2d8518c4..2e7fac88 100644
+--- a/src/pacman/conf.c
++++ b/src/pacman/conf.c
+@@ -308,6 +308,11 @@ int config_set_arch(const char *arch)
+ struct utsname un;
+ uname(&un);
+ config->arch = strdup(un.machine);
++ if(strcmp(config->arch, "i686") == 0) {
++ __builtin_cpu_init();
++ if (__builtin_cpu_supports("sse2"))
++ config->arch = strdup("pentium4");
++ }
+ } else {
+ config->arch = strdup(arch);
+ }
+diff --git a/src/pacman/pacman.c b/src/pacman/pacman.c
+index 3bb622e6..34aace6c 100644
+--- a/src/pacman/pacman.c
++++ b/src/pacman/pacman.c
+@@ -274,8 +274,18 @@ static void setuseragent(void)
+ int len;
+
+ uname(&un);
++ char machine[9];
++ strncpy(machine, un.machine, sizeof machine);
++ machine[sizeof machine-1] = '\0';
++ if(strcmp(machine, "i686") == 0) {
++ __builtin_cpu_init();
++ if (__builtin_cpu_supports("sse2")) {
++ strncpy(machine, "pentium4", sizeof machine);
++ machine[sizeof machine-1] = '\0';
++ }
++ }
+ len = snprintf(agent, 100, "pacman/%s (%s %s) libalpm/%s",
+- PACKAGE_VERSION, un.sysname, un.machine, alpm_version());
++ PACKAGE_VERSION, un.sysname, machine, alpm_version());
+ if(len >= 100) {
+ pm_printf(ALPM_LOG_WARNING, _("HTTP_USER_AGENT truncated\n"));
+ }
+diff --git a/test/pacman/tests/upgrade082.py b/test/pacman/tests/upgrade082.py
+index 0bdbdf71..8c30ec32 100644
+--- a/test/pacman/tests/upgrade082.py
++++ b/test/pacman/tests/upgrade082.py
+@@ -3,6 +3,18 @@
+ import os
+ machine = os.uname()[4]
+
++if machine == 'i686':
++ import re
++ fo = open('/proc/cpuinfo')
++ for line in fo:
++ name_value = [s.strip() for s in line.split(':', 1)]
++ if len(name_value) != 2:
++ continue
++ name, value = name_value
++ if name == "flags":
++ if re.match(r'.*?\bsse2\b', value) is not None:
++ machine = 'pentium4'
++
+ p = pmpkg("dummy")
+ p.files = ["bin/dummy",
+ "usr/man/man1/dummy.1"]
+diff --git a/test/pacman/tests/upgrade083.py b/test/pacman/tests/upgrade083.py
+index 097ae02c..7195e35b 100644
+--- a/test/pacman/tests/upgrade083.py
++++ b/test/pacman/tests/upgrade083.py
+@@ -3,6 +3,18 @@
+ import os
+ machine = os.uname()[4]
+
++if machine == 'i686':
++ import re
++ fo = open('/proc/cpuinfo')
++ for line in fo:
++ name_value = [s.strip() for s in line.split(':', 1)]
++ if len(name_value) != 2:
++ continue
++ name, value = name_value
++ if name == "flags":
++ if re.match(r'.*?\bsse2\b', value) is not None:
++ machine = 'pentium4'
++
+ p = pmpkg("dummy")
+ p.files = ["bin/dummy",
+ "usr/man/man1/dummy.1"]