File python36-buildfix1.patch of Package Mesa

Index: mesa-25.3.0/src/nouveau/headers/class_parser.py
===================================================================
--- mesa-25.3.0.orig/src/nouveau/headers/class_parser.py
+++ mesa-25.3.0/src/nouveau/headers/class_parser.py
@@ -14,6 +14,16 @@ from mako.template import Template
 import util
 
 
+def removeprefix(s, prefix):
+    if s.startswith(prefix):
+        return s[len(prefix):]
+    return s
+
+def removesuffix(s, suffix):
+    if s.endswith(suffix):
+        return s[:-len(suffix)]
+    return s
+
 METHOD_ARRAY_SIZES = {
     'BIND_GROUP_CONSTANT_BUFFER'                            : 16,
     'CALL_MME_DATA'                                         : 256,
@@ -560,7 +570,7 @@ def parse_header(nvcl, f):
                     state = 1
                 elif teststr in list[1]:
                     if not SKIP_FIELD[0] in list[1]:
-                        curfield.add_def(list[1].removeprefix(teststr), list[2])
+                        curfield.add_def(removeprefix(list[1],teststr), list[2])
                 else:
                     state = 1
 
@@ -570,7 +580,7 @@ def parse_header(nvcl, f):
                     if ("0x" in list[2]):
                         state = 1
                     else:
-                        field = list[1].removeprefix(teststr)
+                        field = removeprefix(list[1], teststr)
                         bitfield = list[2].split(":")
                         f = Field(field, bitfield[1], bitfield[0])
                         curmthd.fields.append(f)
@@ -590,13 +600,13 @@ def parse_header(nvcl, f):
                 is_array = 0
                 if (':' in list[2]):
                     continue
-                name = list[1].removeprefix(teststr)
+                name = removeprefix(list[1], teststr)
                 if name.endswith("(i)"):
                     is_array = 1
-                    name = name.removesuffix("(i)")
+                    name = removesuffix(name, "(i)")
                 if name.endswith("(j)"):
                     is_array = 1
-                    name = name.removesuffix("(j)")
+                    name = removesuffix(name, "(j)")
 
                 curmthd = Method(name, list[2], is_array)
                 methods[name] = curmthd
@@ -605,8 +615,8 @@ def parse_header(nvcl, f):
     return (version, methods)
 
 def nvcl_for_filename(name):
-    name = name.removeprefix("cl")
-    name = name.removesuffix(".h")
+    name = removeprefix(name, "cl")
+    name = removesuffix(name, ".h")
     return "NV" + name.upper()
 
 def main():
@@ -636,7 +646,7 @@ def main():
     if args.prev_in_h is not None:
         prev_clheader = os.path.basename(args.prev_in_h)
         prev_nvcl = nvcl_for_filename(prev_clheader)
-        prev_mod = prev_clheader.removesuffix(".h")
+        prev_mod = removesuffix(prev_clheader, ".h")
         with open(args.prev_in_h, 'r', encoding='utf-8') as f:
             (prev_version, prev_methods) = parse_header(prev_nvcl, f)
 
Index: mesa-25.3.0/src/compiler/nir/nir_algebraic.py
===================================================================
--- mesa-25.3.0.orig/src/compiler/nir/nir_algebraic.py
+++ mesa-25.3.0/src/compiler/nir/nir_algebraic.py
@@ -31,6 +31,11 @@ import traceback
 
 from nir_opcodes import opcodes, type_sizes
 
+def removeprefix(s, prefix):
+    if s.startswith(prefix):
+        return s[len(prefix):]
+    return s
+
 # This should be the same as NIR_SEARCH_MAX_COMM_OPS in nir_search.c
 nir_search_max_comm_ops = 8
 
@@ -396,7 +401,7 @@ class Expression(Value):
       self.nnan = cond.pop('nnan', False)
       self.ninf = cond.pop('ninf', False)
       self.contract = cond.pop('contract', False)
-      self.swizzle = -1 if m.group('swizzle') is None else swizzles[m.group('swizzle').removeprefix('.')]
+      self.swizzle = -1 if m.group('swizzle') is None else swizzles[removeprefix(m.group('swizzle'),'.')]
 
       assert len(cond) <= 1
       self.cond = cond.popitem()[0] if cond else None
Index: mesa-25.3.0/src/nouveau/headers/nv_push_class_dump_h.py
===================================================================
--- mesa-25.3.0.orig/src/nouveau/headers/nv_push_class_dump_h.py
+++ mesa-25.3.0/src/nouveau/headers/nv_push_class_dump_h.py
@@ -5,6 +5,11 @@ from collections import defaultdict
 from mako.template import Template
 import util
 
+def removeprefix(s, prefix):
+    if s.startswith(prefix):
+        return s[len(prefix):]
+    return s
+
 TEMPLATE_H = Template(
     """\
 #pragma once
@@ -129,7 +134,7 @@ def main():
     classes_per_eng = defaultdict(list)
 
     for cl in classes:
-        class_id = int(cl.removeprefix("cl"), 16)
+        class_id = int(removeprefix(cl,"cl"), 16)
         engine_id = class_id_to_engine_id(class_id)
 
         classes_per_eng[engine_id].append(class_id)
Index: mesa-25.3.0/src/vulkan/util/vk_physical_device_features_gen.py
===================================================================
--- mesa-25.3.0.orig/src/vulkan/util/vk_physical_device_features_gen.py
+++ mesa-25.3.0/src/vulkan/util/vk_physical_device_features_gen.py
@@ -34,6 +34,11 @@ import mako
 from mako.template import Template
 from vk_extensions import Requirements, get_all_required, filter_api
 
+def removeprefix(s, prefix):
+    if s.startswith(prefix):
+        return s[len(prefix):]
+    return s
+
 RENAMED_FEATURES = {
     # See https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/17272#note_1446477 for details
     ('BufferDeviceAddressFeaturesEXT', 'bufferDeviceAddressCaptureReplay'): 'bufferDeviceAddressCaptureReplayEXT',
@@ -149,7 +154,7 @@ for (feature_structs, features) in KNOWN
             RENAMED_FEATURES[rename] = flag
 
 def get_renamed_feature(c_type, feature):
-    return RENAMED_FEATURES.get((c_type.removeprefix('VkPhysicalDevice'), feature), feature)
+    return RENAMED_FEATURES.get((removeprefix(c_type, 'VkPhysicalDevice'), feature), feature)
 
 @dataclass
 class FeatureStruct:
@@ -512,12 +517,12 @@ def get_feature_structs_from_xml(xml_fil
             if renamed_flag not in features:
                 features[renamed_flag] = f.c_type
             else:
-                a = features[renamed_flag].removeprefix('VkPhysicalDevice')
-                b = f.c_type.removeprefix('VkPhysicalDevice')
+                a = removeprefix(features[renamed_flag], 'VkPhysicalDevice')
+                b = removeprefix(f.c_type, 'VkPhysicalDevice')
                 if (a, flag) not in RENAMED_FEATURES or (b, flag) not in RENAMED_FEATURES:
                     diagnostics.append(f'{a} and {b} both define {flag}')
 
-            unused_renames.pop((f.c_type.removeprefix('VkPhysicalDevice'), flag), None)
+            unused_renames.pop((removeprefix(f.c_type, 'VkPhysicalDevice'), flag), None)
 
     for rename in unused_renames:
         diagnostics.append(f'unused rename {rename}')
Index: mesa-25.3.0/src/vulkan/util/vk_physical_device_spirv_caps_gen.py
===================================================================
--- mesa-25.3.0.orig/src/vulkan/util/vk_physical_device_spirv_caps_gen.py
+++ mesa-25.3.0/src/vulkan/util/vk_physical_device_spirv_caps_gen.py
@@ -14,6 +14,11 @@ import xml.etree.ElementTree as et
 import mako
 from mako.template import Template
 
+def removeprefix(s, prefix):
+    if s.startswith(prefix):
+        return s[len(prefix):]
+    return s
+
 TEMPLATE_C = Template(COPYRIGHT + """
 /* This file generated from ${filename}, don't edit directly. */
 
@@ -71,13 +76,13 @@ def process_enable(enab):
         else:
             return f"(p->{attrib['member']} & {attrib['value']})"
     elif 'extension' in attrib:
-        return f"e->{attrib['extension'].removeprefix('VK_')}"
+        return f"e->{removeprefix(attrib['extension'], 'VK_')}"
     elif 'feature' in attrib:
         feat = get_renamed_feature(attrib['struct'], attrib['feature'])
         return f"f->{feat}"
     else:
         version = attrib['version']
-        return f"(api_version >= VK_API_{version.removeprefix('VK_')})"
+        return f"(api_version >= VK_API_{removeprefix(version,'VK_')})"
 
 def get_capabilities(doc, beta):
     caps = {}
Index: mesa-25.3.0/src/amd/vulkan/layers/radv_annotate_layer_gen.py
===================================================================
--- mesa-25.3.0.orig/src/amd/vulkan/layers/radv_annotate_layer_gen.py
+++ mesa-25.3.0/src/amd/vulkan/layers/radv_annotate_layer_gen.py
@@ -14,6 +14,11 @@ import xml.etree.ElementTree as et
 import mako
 from mako.template import Template
 
+def removesuffix(s, suffix):
+    if s.endswith(suffix):
+        return s[:-len(suffix)]
+    return s
+
 sys.path.append(os.path.join(sys.path[0], '../../../vulkan/util/'))
 
 from vk_entrypoints import get_entrypoints_from_xml
@@ -68,7 +73,7 @@ def main():
         if not e.name.startswith('Cmd') or e.alias or e.return_type != "void":
             continue
 
-        stripped_name = e.name.removesuffix('EXT').removesuffix('KHR').removesuffix('2')
+        stripped_name = removesuffix(removesuffix(removesuffix(e.name, 'EXT'), 'KHR'), '2')
         if stripped_name in commands_names or stripped_name in EXCLUDED_COMMANDS:
             continue
 
Index: mesa-25.3.0/src/nouveau/compiler/latencies/lat_rs_gen.py
===================================================================
--- mesa-25.3.0.orig/src/nouveau/compiler/latencies/lat_rs_gen.py
+++ mesa-25.3.0/src/nouveau/compiler/latencies/lat_rs_gen.py
@@ -13,6 +13,11 @@ import sys
 
 from mako import template
 
+def removesuffix(s, suffix):
+    if s.endswith(suffix):
+        return s[:-len(suffix)]
+    return s
+
 TEMPLATE_RS = template.Template(text="""\
 // Copyright 2024 Red Hat Inc.
 // SPDX-License-Identifier: MIT
@@ -105,7 +110,7 @@ class Fld(object):
             self.pred_val = part[1]
         elif " & sb" in line:
             self.scoreboard = True
-            self.value = line.removesuffix(" & sb");
+            self.value = removesuffix(line, " & sb");
         else:
             self.scoreboard = False
             self.value = line.strip()
@@ -185,7 +190,7 @@ def main():
 
     file_cats = {}
     for csv_file in args.csv_files[0]:
-        split = os.path.basename(csv_file).removesuffix('.csv').split('_')
+        split = removesuffix(os.path.basename(csv_file), '.csv').split('_')
         assert len(split) == 2
         reg_file = split[0]
         latcat = split[1]
Index: mesa-25.3.0/src/nouveau/headers/lib_rs_gen.py
===================================================================
--- mesa-25.3.0.orig/src/nouveau/headers/lib_rs_gen.py
+++ mesa-25.3.0/src/nouveau/headers/lib_rs_gen.py
@@ -16,6 +16,10 @@ from mako.template import Template
 
 import util
 
+def removesuffix(s, suffix):
+    if s.endswith(suffix):
+        return s[:-len(suffix)]
+    return s
 
 TEMPLATE_RS = Template("""\
 // Copyright © 2024 Collabora Ltd. and Red Hat Inc.
@@ -103,7 +107,7 @@ def main():
     for f in args.class_files[0]:
         f = os.path.basename(f)
         assert f.endswith('.rs')
-        f = f.removesuffix('.rs')
+        f = removesuffix(f, '.rs')
 
         mod_path = f.split('_')
         assert mod_path[0] == 'nvh'
Index: mesa-25.3.0/src/nouveau/headers/struct_parser.py
===================================================================
--- mesa-25.3.0.orig/src/nouveau/headers/struct_parser.py
+++ mesa-25.3.0/src/nouveau/headers/struct_parser.py
@@ -13,6 +13,10 @@ from mako.template import Template
 
 import util
 
+def removesuffix(s, suffix):
+    if s.endswith(suffix):
+        return s[:-len(suffix)]
+    return s
 
 TEMPLATE_RS = Template("""\
 // Copyright © 2024 Collabora Ltd. and Red Hat Inc.
@@ -144,7 +148,7 @@ def parse_header(nvcl, file):
             hi = int(mw_arr.group('hi'))
             stride = int(mw_arr.group('stride'))
             assert name.endswith('(i)')
-            struct.add_field(name.removesuffix('(i)'), lo, hi, stride)
+            struct.add_field(removesuffix(name, '(i)'), lo, hi, stride)
         else:
             for f in struct.fields:
                 if name.startswith(f.name + '_'):
Index: mesa-25.3.0/src/vulkan/util/vk_physical_device_properties_gen.py
===================================================================
--- mesa-25.3.0.orig/src/vulkan/util/vk_physical_device_properties_gen.py
+++ mesa-25.3.0/src/vulkan/util/vk_physical_device_properties_gen.py
@@ -36,6 +36,11 @@ from mako.template import Template
 
 from vk_extensions import get_all_required, filter_api
 
+def removeprefix(s, prefix):
+    if s.startswith(prefix):
+        return s[len(prefix):]
+    return s
+
 # Some extensions have been promoted to core, their properties are renamed
 # in the following hashtable.
 # The hashtable takes the form:
@@ -297,7 +302,7 @@ def get_property_structs(doc, api, beta)
             if "STRUCTURE_TYPE" in str(elem.attrib):
                 s_type = elem.attrib.get("values")
 
-        name = full_name.removeprefix("VkPhysicalDevice")
+        name = removeprefix(full_name, "VkPhysicalDevice")
 
         # collect a list of properties
         properties = []
openSUSE Build Service is sponsored by