diff mbox series

[1/2] package/python-aenum: drop test_v3.py file for python 2.x to fix pycompile issue

Message ID 20201002134048.24473-1-peter@korsgaard.com
State Accepted
Headers show
Series [1/2] package/python-aenum: drop test_v3.py file for python 2.x to fix pycompile issue | expand

Commit Message

Peter Korsgaard Oct. 2, 2020, 1:40 p.m. UTC
Fixes:
http://autobuild.buildroot.net/results/4ca459d54545c0e20b0f0cdc63bd81844ecd7f36/

aenum has conditional logic to load python 3.x code located in test_v3.py:

if pyver >= 3.0:
    from aenum.test_v3 import TestEnumV3, TestOrderV3, TestNamedTupleV3

And contains logic in setup.py to drop that file during setup.py install if
building for python 2.x:

py3_only = ('aenum/test_v3.py', )
..
if __name__ == '__main__':
    if 'install' in sys.argv:
        import os, sys
	..
        if sys.version_info[0] != 3:
            for file in py3_only:
                try:
                    os.unlink(file)

But this doesn't work in Buildroot as pkg-python.dk first does setup.py
build (which copies test_v3.py to the build directory) before setup.py
install, so test_v3.py gets installed, leading to errors from pycompile:

error:   File "/usr/lib/python2.7/site-packages/aenum/test_v3.py", line 12
    class MagicAutoNumberEnum(Enum, settings=AutoNumber):
                                            ^
SyntaxError: invalid syntax

As a workaround, add a hook to drop it from the target directory when
building for python 2.x.

Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
---
 package/python-aenum/python-aenum.mk | 9 +++++++++
 1 file changed, 9 insertions(+)

Comments

Peter Korsgaard Oct. 3, 2020, 6:57 a.m. UTC | #1
>>>>> "Peter" == Peter Korsgaard <peter@korsgaard.com> writes:

 > Fixes:
 > http://autobuild.buildroot.net/results/4ca459d54545c0e20b0f0cdc63bd81844ecd7f36/

 > aenum has conditional logic to load python 3.x code located in test_v3.py:

 > if pyver >= 3.0:
 >     from aenum.test_v3 import TestEnumV3, TestOrderV3, TestNamedTupleV3

 > And contains logic in setup.py to drop that file during setup.py install if
 > building for python 2.x:

 > py3_only = ('aenum/test_v3.py', )
 > ..
 > if __name__ == '__main__':
 >     if 'install' in sys.argv:
 >         import os, sys
 > 	..
 >         if sys.version_info[0] != 3:
 >             for file in py3_only:
 >                 try:
 >                     os.unlink(file)

 > But this doesn't work in Buildroot as pkg-python.dk first does setup.py
 > build (which copies test_v3.py to the build directory) before setup.py
 > install, so test_v3.py gets installed, leading to errors from pycompile:

 > error:   File "/usr/lib/python2.7/site-packages/aenum/test_v3.py", line 12
 >     class MagicAutoNumberEnum(Enum, settings=AutoNumber):
 >                                             ^
 > SyntaxError: invalid syntax

 > As a workaround, add a hook to drop it from the target directory when
 > building for python 2.x.

 > Signed-off-by: Peter Korsgaard <peter@korsgaard.com>

Committed, thanks.
Peter Korsgaard Oct. 5, 2020, 6:04 a.m. UTC | #2
>>>>> "Peter" == Peter Korsgaard <peter@korsgaard.com> writes:

 > Fixes:
 > http://autobuild.buildroot.net/results/4ca459d54545c0e20b0f0cdc63bd81844ecd7f36/

 > aenum has conditional logic to load python 3.x code located in test_v3.py:

 > if pyver >= 3.0:
 >     from aenum.test_v3 import TestEnumV3, TestOrderV3, TestNamedTupleV3

 > And contains logic in setup.py to drop that file during setup.py install if
 > building for python 2.x:

 > py3_only = ('aenum/test_v3.py', )
 > ..
 > if __name__ == '__main__':
 >     if 'install' in sys.argv:
 >         import os, sys
 > 	..
 >         if sys.version_info[0] != 3:
 >             for file in py3_only:
 >                 try:
 >                     os.unlink(file)

 > But this doesn't work in Buildroot as pkg-python.dk first does setup.py
 > build (which copies test_v3.py to the build directory) before setup.py
 > install, so test_v3.py gets installed, leading to errors from pycompile:

 > error:   File "/usr/lib/python2.7/site-packages/aenum/test_v3.py", line 12
 >     class MagicAutoNumberEnum(Enum, settings=AutoNumber):
 >                                             ^
 > SyntaxError: invalid syntax

 > As a workaround, add a hook to drop it from the target directory when
 > building for python 2.x.

 > Signed-off-by: Peter Korsgaard <peter@korsgaard.com>

Committed to 2020.02.x, 2020.05.x and 2020.08.x, thanks.
diff mbox series

Patch

diff --git a/package/python-aenum/python-aenum.mk b/package/python-aenum/python-aenum.mk
index 1d5322ef41..97fcbb5e86 100644
--- a/package/python-aenum/python-aenum.mk
+++ b/package/python-aenum/python-aenum.mk
@@ -11,4 +11,13 @@  PYTHON_AENUM_SETUP_TYPE = setuptools
 PYTHON_AENUM_LICENSE = BSD-3-Clause
 PYTHON_AENUM_LICENSE_FILES = aenum/LICENSE
 
+ifeq ($(BR2_PACKAGE_PYTHON),y)
+# only needed/valid for python 3.x
+define PYTHON_AENUM_RM_PY3_FILE
+	rm -f $(TARGET_DIR)/usr/lib/python*/site-packages/aenum/test_v3.py
+endef
+
+PYTHON_AENUM_POST_INSTALL_TARGET_HOOKS += PYTHON_AENUM_RM_PY3_FILE
+endif
+
 $(eval $(python-package))