Script 'mail_helper' called by obssrc
Hello community,

here is the log from the commit of package rpm for openSUSE:Factory checked in 
at 2023-01-18 13:08:44
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/rpm (Old)
 and      /work/SRC/openSUSE:Factory/.rpm.new.32243 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "rpm"

Wed Jan 18 13:08:44 2023 rev:306 rq:1058837 version:4.18.0

Changes:
--------
--- /work/SRC/openSUSE:Factory/rpm/rpm.changes  2022-12-21 16:05:43.658259074 
+0100
+++ /work/SRC/openSUSE:Factory/.rpm.new.32243/rpm.changes       2023-01-18 
13:08:47.080113321 +0100
@@ -1,0 +2,5 @@
+Tue Dec 27 13:17:31 UTC 2022 - Ludwig Nussel <lnus...@suse.com>
+
+- Replace transitional %usrmerged macro with regular version check 
(boo#1206798)
+
+-------------------------------------------------------------------
@@ -5,0 +11,5 @@
+
+-------------------------------------------------------------------
+Thu Dec  8 17:08:30 UTC 2022 - Dirk Müller <dmuel...@suse.com>
+
+- add x86_64-microarchitectures.patch

New:
----
  x86_64-microarchitectures.patch

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ rpm.spec ++++++
--- /var/tmp/diff_new_pack.8wjeUf/_old  2023-01-18 13:08:48.620122160 +0100
+++ /var/tmp/diff_new_pack.8wjeUf/_new  2023-01-18 13:08:48.624122183 +0100
@@ -110,6 +110,7 @@
 Patch133:       zstdpool.diff
 Patch134:       zstdthreaded.diff
 Patch135:       selinux_transactional_update.patch
+Patch136:       x86_64-microarchitectures.patch
 # touches a generated file
 Patch180:       whatrequires-doc.diff
 Patch6464:      auto-config-update-aarch64-ppc64le.diff
@@ -220,8 +221,8 @@
 %patch                   -P 93 -P 94                         -P 99
 %patch -P 100        -P 102 -P 103
 %patch                                                  -P 117
-%patch -P 122 -P 123               -P 131        -P 133 -P 134
-%patch -P 135 -P 180
+%patch -P 122 -P 123
+%patch -P 131          -P 133 -P 134 -P 135 -P 136 -P 180
 
 %ifarch aarch64 ppc64le riscv64
 %patch6464
@@ -239,6 +240,8 @@
 
 %ifarch %arm
 BUILDTARGET="--build=%{_target_cpu}-suse-linux-gnueabi"
+%elifarch x86_64 %x86_64
+BUILDTARGET="--build=x86_64-suse-linux"
 %else
 BUILDTARGET="--build=%{_target_cpu}-suse-linux"
 %endif
@@ -272,7 +275,7 @@
 ln -s ../share/locale %{buildroot}/usr/lib/locale
 %make_install
 mkdir -p %{buildroot}/bin
-%if !0%{?usrmerged}
+%if 0%{?suse_version} < 1550
 ln -s /usr/bin/rpm %{buildroot}/bin/rpm
 %endif
 # remove .la file and the static variant of libpopt
@@ -388,7 +391,7 @@
 %license       COPYING
 %doc   docs/manual
        /etc/rpm
-%if !0%{?usrmerged}
+%if 0%{?suse_version} < 1550
        /bin/rpm
 %endif
        %{_bindir}/gendiff

++++++ x86_64-microarchitectures.patch ++++++
>From 282f75e33f93e46854345598f576d052d5cfe390 Mon Sep 17 00:00:00 2001
From: Fabian Vogt <fv...@suse.de>
Date: Thu, 8 Dec 2022 12:50:12 +0100
Subject: [PATCH] Add x86-64 architecture levels (v2-v4) as architectures

The x86_64 SysV psABI defines four levels of x86_64 with certain CPU features
required for each level. Those definitions are meant to be generically useful
and recognized as such by glibc and gcc as well.

For backward-compatibility and to avoid surprises, default to building x86_64
even on v2+ capable machines.
---
 installplatform |  2 +-
 lib/rpmrc.c     | 75 +++++++++++++++++++++++++++++++++++++++++++++++++
 macros.in       |  4 +++
 rpmrc.in        | 18 ++++++++++++
 4 files changed, 98 insertions(+), 1 deletion(-)

--- installplatform
+++ installplatform
@@ -78,7 +78,7 @@ for ARCH in noarch `grep ^arch_canon $RP
        CANONARCH=i386
        CANONCOLOR=0
        ;;
-    x86_64|amd64|ia32e)
+    x86_64*|amd64|ia32e)
        ISANAME=x86
        ISABITS=64
        CANONARCH=x86_64
--- lib/rpmrc.c
+++ lib/rpmrc.c
@@ -735,6 +735,71 @@ exit:
     return rc;
 }
 
+#      if defined(__linux__) && defined(__x86_64__)
+static inline void cpuid(uint32_t op, uint32_t op2, uint32_t *eax, uint32_t 
*ebx, uint32_t *ecx, uint32_t *edx)
+{
+    asm volatile (
+       "cpuid\n"
+    : "=a" (*eax), "=b" (*ebx), "=c" (*ecx), "=d" (*edx)
+    : "a" (op), "c" (op2));
+}
+
+/* From gcc's gcc/config/i386/cpuid.h */
+/* Features (%eax == 1) */
+/* %ecx */
+#define bit_SSE3       (1 << 0)
+#define bit_LZCNT      (1 << 5)
+#define bit_SSSE3      (1 << 9)
+#define bit_FMA                (1 << 12)
+#define bit_CMPXCHG16B (1 << 13)
+#define bit_SSE4_1     (1 << 19)
+#define bit_SSE4_2     (1 << 20)
+#define bit_MOVBE      (1 << 22)
+#define bit_POPCNT     (1 << 23)
+#define bit_OSXSAVE    (1 << 27)
+#define bit_AVX                (1 << 28)
+#define bit_F16C       (1 << 29)
+
+/* Extended Features (%eax == 0x80000001) */
+/* %ecx */
+#define bit_LAHF_LM    (1 << 0)
+
+/* Extended Features (%eax == 7) */
+/* %ebx */
+#define bit_BMI                (1 << 3)
+#define bit_AVX2       (1 << 5)
+#define bit_BMI2       (1 << 8)
+#define bit_AVX512F    (1 << 16)
+#define bit_AVX512DQ   (1 << 17)
+#define bit_AVX512CD   (1 << 28)
+#define bit_AVX512BW   (1 << 30)
+#define bit_AVX512VL   (1u << 31)
+
+static int get_x86_64_level(void)
+{
+    int level = 1;
+
+    unsigned int op_1_ecx = 0, op_80000001_ecx = 0, op_7_ebx = 0, unused;
+    cpuid(1, 0, &unused, &unused, &op_1_ecx, &unused);
+    cpuid(0x80000001, 0, &unused, &unused, &op_80000001_ecx, &unused);
+    cpuid(7, 0, &unused, &op_7_ebx, &unused, &unused);
+
+    const unsigned int op_1_ecx_lv2 = bit_SSE3 | bit_SSSE3 | bit_CMPXCHG16B | 
bit_SSE4_1 | bit_SSE4_2 | bit_POPCNT;
+    if ((op_1_ecx & op_1_ecx_lv2) == op_1_ecx_lv2 && (op_80000001_ecx & 
bit_LAHF_LM))
+       level = 2;
+
+    const unsigned int op_1_ecx_lv3 = bit_LZCNT | bit_FMA | bit_MOVBE | 
bit_OSXSAVE | bit_AVX | bit_F16C;
+    const unsigned int op_7_ebx_lv3 = bit_BMI | bit_AVX2 | bit_BMI2;
+    if (level == 2 && (op_1_ecx & op_1_ecx_lv3) == op_1_ecx_lv3 && (op_7_ebx & 
op_7_ebx_lv3) == op_7_ebx_lv3)
+        level = 3;
+
+    const unsigned int op_7_ebx_lv4 = bit_AVX512F | bit_AVX512DQ | 
bit_AVX512CD | bit_AVX512BW | bit_AVX512VL;
+    if (level == 3 && (op_7_ebx & op_7_ebx_lv4) == op_7_ebx_lv4)
+        level = 4;
+
+    return level;
+}
+#      endif
 
 #      if defined(__linux__) && defined(__i386__)
 #include <setjmp.h>
@@ -1287,6 +1352,16 @@ static void defaultMachine(rpmrcCtx ctx,
        }
 #      endif
 
+# if defined(__linux__) && defined(__x86_64__)
+       {
+           int x86_64_level = get_x86_64_level();
+           if (x86_64_level > 1) {
+               strcpy(un.machine, "x86_64_vX");
+               un.machine[8] = '0' + x86_64_level;
+           }
+       }
+#endif
+
        /* the uname() result goes through the arch_canon table */
        canon = lookupInCanonTable(un.machine,
                           ctx->tables[RPM_MACHTABLE_INSTARCH].canons,
--- macros.in
+++ macros.in
@@ -1064,6 +1064,10 @@ package or when debugging this package.\
 %ix86   i386 i486 i586 i686 pentium3 pentium4 athlon geode
 
 #------------------------------------------------------------------------------
+# arch macro for all supported x86_64 processors
+%x86_64        x86_64 x86_64_v2 x86_64_v3 x86_64_v4 amd64 em64t
+
+#------------------------------------------------------------------------------
 # arch macro for all supported 32-bit ARM processors
 %arm32 armv3l armv4b armv4l armv4tl armv5b armv5l armv5teb armv5tel armv5tejl 
armv6l armv6hl armv7l armv7hl armv7hnl armv8l armv8hl armv8hnl armv8hcnl
 
--- rpmrc.in
+++ rpmrc.in
@@ -22,6 +22,10 @@ optflags: athlon -O2 -g -m32 -march=athl
 optflags: geode -Os -g -m32 -march=geode
 optflags: ia64 -O2 -g -fmessage-length=0 -D_FORTIFY_SOURCE=2 -fstack-protector 
-funwind-tables -fasynchronous-unwind-tables
 optflags: x86_64 -O2 -g -m64 -fmessage-length=0 -D_FORTIFY_SOURCE=2 
-fstack-protector -funwind-tables -fasynchronous-unwind-tables
+optflags: x86_64_v2 -O2 -g -march=x86-64-v2 -m64 -fmessage-length=0 
-D_FORTIFY_SOURCE=2 -fstack-protector -funwind-tables 
-fasynchronous-unwind-tables
+optflags: x86_64_v3 -O2 -g -march=x86-64-v3 -m64 -fmessage-length=0 
-D_FORTIFY_SOURCE=2 -fstack-protector -funwind-tables 
-fasynchronous-unwind-tables
+optflags: x86_64_v4 -O2 -g -march=x86-64-v4 -m64 -fmessage-length=0 
-D_FORTIFY_SOURCE=2 -fstack-protector -funwind-tables 
-fasynchronous-unwind-tables
+
 optflags: amd64 -O2 -g
 optflags: ia32e -O2 -g
 
@@ -148,6 +152,9 @@ archcolor: s390x 2
 archcolor: ia64 2
 
 archcolor: x86_64 2
+archcolor: x86_64_v2 2
+archcolor: x86_64_v3 2
+archcolor: x86_64_v4 2
 
 archcolor: sh3 1
 archcolor: sh4 1
@@ -168,6 +175,9 @@ arch_canon: i586:   i586    1
 arch_canon:    i486:   i486    1
 arch_canon:    i386:   i386    1
 arch_canon:    x86_64: x86_64  1
+arch_canon:    x86_64_v2:      x86_64_v2       1
+arch_canon:    x86_64_v3:      x86_64_v3       1
+arch_canon:    x86_64_v4:      x86_64_v4       1
 arch_canon:    amd64:  amd64   1
 arch_canon:    ia32e:  ia32e   1
 arch_canon:    em64t:  em64t   1
@@ -378,6 +388,9 @@ buildarchtranslate: s390x: s390x
 buildarchtranslate: ia64: ia64
 
 buildarchtranslate: x86_64: x86_64
+buildarchtranslate: x86_64_v2: x86_64
+buildarchtranslate: x86_64_v3: x86_64
+buildarchtranslate: x86_64_v4: x86_64
 buildarchtranslate: amd64: x86_64
 buildarchtranslate: ia32e: x86_64
 
@@ -504,6 +517,9 @@ arch_compat: ia64: i686 noarch
 arch_compat: x86_64: amd64 em64t athlon noarch
 arch_compat: amd64: x86_64 em64t athlon noarch
 arch_compat: ia32e: x86_64 em64t athlon noarch
+arch_compat: x86_64_v2: x86_64 amd64 em64t athlon noarch
+arch_compat: x86_64_v3: x86_64_v2 x86_64 amd64 em64t athlon noarch
+arch_compat: x86_64_v4: x86_64_v3 x86_64_v2 x86_64 amd64 em64t athlon noarch
 
 arch_compat: sh3: noarch
 arch_compat: sh4: noarch
@@ -640,6 +656,9 @@ buildarch_compat: s390x: noarch
 
 buildarch_compat: ia64: noarch
 
+buildarch_compat: x86_64_v4: x86_64_v3
+buildarch_compat: x86_64_v3: x86_64_v2
+buildarch_compat: x86_64_v2: x86_64
 buildarch_compat: x86_64: noarch
 buildarch_compat: amd64: x86_64
 buildarch_compat: ia32e: x86_64

Reply via email to