Description: Arch: Ignore grammer pickle mis-matches in lib2to3.
 Pickle files encode the endian of the arch that built them.  They are
 architecture-independent, but there isn't a canonical endianness, both are
 handled on load.

Forwarded: no

--- a/Lib/lib2to3/pgen2/driver.py
+++ b/Lib/lib2to3/pgen2/driver.py
@@ -119,7 +119,10 @@ def load_grammar(gt="Grammar.txt", gp=No
     if force or not _newer(gp, gt):
         logger.info("Generating grammar tables from %s", gt)
         g = pgen.generate_grammar(gt)
-        if save:
+        # the pickle files mismatch, when built on different architectures.
+        # don't save these for now. An alternative solution might be to
+        # include the multiarch triplet into the file name
+        if False:
             logger.info("Writing grammar tables to %s", gp)
             try:
                 g.dump(gp)
--- a/Lib/lib2to3/tests/test_parser.py
+++ b/Lib/lib2to3/tests/test_parser.py
@@ -38,87 +38,6 @@ class TestDriver(support.TestCase):
         self.assertEqual(t.children[1].children[0].type, syms.print_stmt)
 
 
-class TestPgen2Caching(support.TestCase):
-    def test_load_grammar_from_txt_file(self):
-        pgen2_driver.load_grammar(support.grammar_path, save=False, force=True)
-
-    def test_load_grammar_from_pickle(self):
-        # Make a copy of the grammar file in a temp directory we are
-        # guaranteed to be able to write to.
-        tmpdir = tempfile.mkdtemp()
-        try:
-            grammar_copy = os.path.join(
-                    tmpdir, os.path.basename(support.grammar_path))
-            shutil.copy(support.grammar_path, grammar_copy)
-            pickle_name = pgen2_driver._generate_pickle_name(grammar_copy)
-
-            pgen2_driver.load_grammar(grammar_copy, save=True, force=True)
-            self.assertTrue(os.path.exists(pickle_name))
-
-            os.unlink(grammar_copy)  # Only the pickle remains...
-            pgen2_driver.load_grammar(grammar_copy, save=False, force=False)
-        finally:
-            shutil.rmtree(tmpdir)
-
-    @unittest.skipIf(sys.executable is None, 'sys.executable required')
-    def test_load_grammar_from_subprocess(self):
-        tmpdir = tempfile.mkdtemp()
-        tmpsubdir = os.path.join(tmpdir, 'subdir')
-        try:
-            os.mkdir(tmpsubdir)
-            grammar_base = os.path.basename(support.grammar_path)
-            grammar_copy = os.path.join(tmpdir, grammar_base)
-            grammar_sub_copy = os.path.join(tmpsubdir, grammar_base)
-            shutil.copy(support.grammar_path, grammar_copy)
-            shutil.copy(support.grammar_path, grammar_sub_copy)
-            pickle_name = pgen2_driver._generate_pickle_name(grammar_copy)
-            pickle_sub_name = pgen2_driver._generate_pickle_name(
-                     grammar_sub_copy)
-            self.assertNotEqual(pickle_name, pickle_sub_name)
-
-            # Generate a pickle file from this process.
-            pgen2_driver.load_grammar(grammar_copy, save=True, force=True)
-            self.assertTrue(os.path.exists(pickle_name))
-
-            # Generate a new pickle file in a subprocess with a most likely
-            # different hash randomization seed.
-            sub_env = dict(os.environ)
-            sub_env['PYTHONHASHSEED'] = 'random'
-            code = """
-from lib2to3.pgen2 import driver as pgen2_driver
-pgen2_driver.load_grammar(%r, save=True, force=True)
-            """ % (grammar_sub_copy,)
-            msg = ("lib2to3 package is deprecated and may not be able "
-                   "to parse Python 3.10+")
-            cmd = [sys.executable,
-                   f'-Wignore:{msg}:PendingDeprecationWarning',
-                   '-c', code]
-            subprocess.check_call( cmd, env=sub_env)
-            self.assertTrue(os.path.exists(pickle_sub_name))
-
-            with open(pickle_name, 'rb') as pickle_f_1, \
-                    open(pickle_sub_name, 'rb') as pickle_f_2:
-                self.assertEqual(
-                    pickle_f_1.read(), pickle_f_2.read(),
-                    msg='Grammar caches generated using different hash seeds'
-                    ' were not identical.')
-        finally:
-            shutil.rmtree(tmpdir)
-
-    def test_load_packaged_grammar(self):
-        modname = __name__ + '.load_test'
-        class MyLoader:
-            def get_data(self, where):
-                return pickle.dumps({'elephant': 19})
-        class MyModule:
-            __file__ = 'parsertestmodule'
-            __spec__ = importlib.util.spec_from_loader(modname, MyLoader())
-        sys.modules[modname] = MyModule()
-        self.addCleanup(operator.delitem, sys.modules, modname)
-        g = pgen2_driver.load_packaged_grammar(modname, 'Grammar.txt')
-        self.assertEqual(g.elephant, 19)
-
-
 class GrammarTest(support.TestCase):
     def validate(self, code):
         support.parse_string(code)
