From 8850e4d0da76a85c5f9926cd40e148e0b29bddac Mon Sep 17 00:00:00 2001
From: Phaedrus Leeds <mwleeds@protonmail.com>
Date: Thu, 16 Dec 2021 10:50:10 -0800
Subject: [PATCH] Fix runtime error when using pyparsing >= 3.0.2

Ever since this commit
(https://github.com/pyparsing/pyparsing/commit/4ab17bb55)
variant-schema-compiler has failed to execute when used by Flatpak like
this:
$ variant-schema-compiler/variant-schema-compiler --outfile-header
common/flatpak-variant-private.h --outfile
common/flatpak-variant-impl-private.h --prefix var
./data/flatpak-variants.gv

For some reason our use of leaveWhitespace() to ensure that a named type
has a ' right before its name no longer works. But fortunately pyparsing
has a Combine() which does exactly what we want.

See https://github.com/flatpak/flatpak/issues/4534

Fixes https://gitlab.gnome.org/alexl/variant-schema-compiler/-/issues/4

Reference:https://gitlab.gnome.org/alexl/variant-schema-compiler/-/commit/8850e4d0da76a85c5f9926cd40e148e0b29bddac

diff --git a/variant-schema-compiler/variant-schema-compiler b/variant-schema-compiler/variant-schema-compiler
index 8b54232..7807f7c 100755
--- a/variant-schema-compiler/variant-schema-compiler
+++ b/variant-schema-compiler/variant-schema-compiler
@@ -4,6 +4,7 @@ import argparse
 import sys
 import os
 from pyparsing import *
+pyparsing_version = tuple(int(x) for x in __version__.split('.'))
 
 typename_prefix = ""
 funcname_prefix = ""
@@ -1741,6 +1742,8 @@ def handleNameableType(toks):
     return type
 
 nameableType = (Optional((Suppress("'") + ident).leaveWhitespace()) + (arrayType ^ maybeType ^ dictType ^ structType)).setParseAction(handleNameableType)
+if pyparsing_version >= (3, 0, 4):
+    nameableType = (Optional((Suppress("'") + ident)) + (arrayType ^ maybeType ^ dictType ^ structType)).setParseAction(handleNameableType)
 
 typeSpec <<= basicType  ^ variantType ^ namedType ^ nameableType
 
-- 
2.30.0

