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"]