Re: Mesa >= 23.3.x and python 2.6 ...

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Jordan

On Sat, Jan 20, 2024 at 01:47:58AM -0800, Jordan Justen wrote:
> On 2024-01-19 12:24:24, Stefan Dirsch wrote:
> > Hi Jordan
> > 
> > Thanks for digging into this!
> > 
> > On Fri, Jan 19, 2024 at 12:10:37PM -0800, Jordan Justen wrote:
> > > On 2024-01-18 04:37:52, Stefan Dirsch wrote:
> > > > Hi
> > > > 
> > > > I noticed that with version 23.3.x Mesa no longer can be built with python
> > > > 2.6. It still worked with Mesa 23.2.1.
> > > 
> > > As mentioned in other emails, this was typo where 3.6 was intended.
> > > 
> > > > 
> > > > It fails with
> > > > 
> > > > [   95s] Traceback (most recent call last):
> > > > [   95s]   File "../src/intel/genxml/gen_bits_header.py", line 23, in <module>
> > > > [   95s]     import intel_genxml
> > > > [   95s]   File "/home/abuild/rpmbuild/BUILD/mesa-23.3.3/src/intel/genxml/intel_
> > > > genxml.py", line 5
> > > > [   95s]     from __future__ import annotations
> > > > [   95s]     ^
> > > > [   95s] SyntaxError: future feature annotations is not defined
> > > > 
> > > 
> > > I guess this code first appeared in Dylan's:
> > > 
> > > 4fd2e15855d ("intel/genxml: add type annotations to gen_sort_tags.py")
> > > 
> > > and then became part of the standard tests a few commits later in:
> > > 
> > > 1f0a0a46d97 ("meson: run genxml sort tests")
> > > 
> > > back in Oct 2022. So, I guess at that point 'ninja test' would have
> > > failed with Python 3.6.
> > > 
> > > Then, I suppose I propagated this to being used on every build in:
> > > 
> > > 0495f952d48 ("intel/genxml: Add genxml_import.py script")
> > > 
> > > in Sept 2023.
> > 
> > Thanks. This explains why I've found this code already in older releases, but
> > it didn't fail for me yet. You said tests. Is this just a test, I could
> > disable (as dirty hack)? I was assuming it would generate code ...
> 
> In 0495f952d48, I moved in to a common file, and essentially, now it's
> used by our script that runs during the build in addition to the test.
> 
> It was "fun" finding a way to get python 3.6 :), but after that, I
> think I found a way to make Python 3.6 work. I guess you can try it
> out:
> 
> https://gitlab.freedesktop.org/jljusten/mesa/-/commits/intel-genxml-python3.6
> 
> In my light testing, Python 3.6 through 3.13 seemed to work. Python
> 3.5 did *not* work.

Wow! Thanks a lot! Indeed these two patches fix this build issue for me! :-)

In addition I needed to add the attached patch to fix some more errors I saw
with a python 3.6 build. With that I can build again Mesa 23.3.3.

Thanks,
Stefan

Public Key available
------------------------------------------------------
Stefan Dirsch (Res. & Dev.)   SUSE Software Solutions Germany GmbH
Tel: 0911-740 53 0            Frankenstraße 146
FAX: 0911-740 53 479          D-90461 Nürnberg
http://www.suse.de            Germany 
----------------------------------------------------------------
Geschäftsführer: Ivo Totev, Andrew Myers, Andrew McDonald, Boudien Moerman
(HRB 36809, AG Nürnberg)
----------------------------------------------------------------
--- mesa-23.3.3/src/nouveau/nvidia-headers/class_parser.py.orig	2024-01-20 12:47:36.464476669 +0100
+++ mesa-23.3.3/src/nouveau/nvidia-headers/class_parser.py	2024-01-20 13:04:30.212851443 +0100
@@ -9,6 +9,16 @@
 
 from mako.template import Template
 
+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,
@@ -273,7 +283,7 @@
                 if ":" in list[2]:
                     state = 1
                 elif teststr in list[1]:
-                    curmthd.field_defs[curfield][list[1].removeprefix(teststr)] = list[2]
+                    curmthd.field_defs[curfield][removeprefix(list[1], teststr)] = list[2]
                 else:
                     state = 1
 
@@ -283,7 +293,7 @@
                     if ("0x" in list[2]):
                         state = 1
                     else:
-                        field = list[1].removeprefix(teststr)
+                        field = removeprefix(list[1], teststr)
                         bitfield = list[2].split(":")
                         curmthd.field_name_start[field] = bitfield[1]
                         curmthd.field_name_end[field] = bitfield[0]
@@ -304,13 +314,13 @@
                 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)")
                 x = method()
                 x.name = name
                 x.addr = list[2]
@@ -336,8 +346,8 @@
 
     clheader = os.path.basename(args.in_h)
     nvcl = clheader
-    nvcl = nvcl.removeprefix("cl")
-    nvcl = nvcl.removesuffix(".h")
+    nvcl = removeprefix(nvcl, "cl")
+    nvcl = removesuffix(nvcl, ".h")
     nvcl = nvcl.upper()
     nvcl = "NV" + nvcl
 
--- mesa-23.3.3/src/freedreno/registers/gen_header.py.orig	2024-01-20 14:01:30.261999839 +0100
+++ mesa-23.3.3/src/freedreno/registers/gen_header.py	2024-01-20 14:01:57.678558692 +0100
@@ -781,7 +781,7 @@ def main():
 	parser.add_argument('--rnn', type=str, required=True)
 	parser.add_argument('--xml', type=str, required=True)
 
-	subparsers = parser.add_subparsers(required=True)
+	subparsers = parser.add_subparsers()
 
 	parser_c_defines = subparsers.add_parser('c-defines')
 	parser_c_defines.set_defaults(func=dump_c_defines)

[Index of Archives]     [Linux DRI Users]     [Linux Intel Graphics]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [XFree86]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux