From 8850e4d0da76a85c5f9926cd40e148e0b29bddac Mon Sep 17 00:00:00 2001 From: Phaedrus Leeds 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