google / emboss

Emboss is a tool for generating code that reads and writes binary data structures.
Apache License 2.0
67 stars 20 forks source link

emboss fails to run on python 3.8 #136

Open EricRahm opened 2 months ago

EricRahm commented 2 months ago

Running emboss is currently broken in python version 3.8. I believe our code now relies on at least 3.9 as of PR #111. We could try to add back 3.8 support but given it's EOL in a few months and #111 seems to be fixing a real issue I'd suggest just bumping the min version to 3.9.

STR:

  1. Verify the a new default python3 works
    
    # run with local installation
    $ python3 --version
    Python 3.11.8
    $ bazel test \
    'compiler/back_end/cpp:*' \
    'compiler/front_end:*' 'compiler/util:*' 'integration/googletest:*'
Executed 80 out of 80 tests: 80 tests pass. //integration/googletest:emboss_test_util_test PASSED in 0.2s Executed 80 out of 80 tests: 80 tests pass. ``` 2. Explicitly run against python 3.8 ``` $ pyenv install 3.8 $ bazel test --action_env=PYENV_VERSION=3.8 \ 'compiler/back_end/cpp:*' 'compiler/front_end:*' \ 'compiler/util:*' 'integration/googletest:*' //compiler/front_end:write_inference_test FAILED in 2.7s /usr/local/google/home/erahm/.cache/bazel/_bazel_erahm/ce8d987ff54be8a48c8957a8dbac668b/execroot/com_google_emboss/bazel-out/k8-fastbuild/testlogs/compiler/front_end/write_inference_test/test.log Executed 80 out of 80 tests: 66 tests pass and 14 fail locally. $ cat /usr/local/google/home/erahm/.cache/bazel/_bazel_erahm/ce8d987ff54be8a48c8957a8dbac668b/execroot/com_google_emboss/bazel-out/k8-fastbuild/testlogs/compiler/front_end/write_inference_test/test.log exec ${PAGER:-/usr/bin/less} "$0" || exit 1 Executing tests from //compiler/front_end:write_inference_test ----------------------------------------------------------------------------- EEEEEEEEEEEEEE ====================================================================== ERROR: test_adds_alias_write_method_to_alias_of_alias_of_physical_field (__main__.WriteInferenceTest) ---------------------------------------------------------------------- File "/tmp/bazel-working-directory/com_google_emboss/bazel-out/k8-fastbuild/bin/compiler/front_end/write_inference_test.runfiles/com_google_emboss/compiler/util/resources.py", line 21, in load with importlib.resources.files( AttributeError: module 'importlib.resources' has no attribute 'files' ``` 3. Explicitly run against 3.9, note things work again ``` $ pyenv install 3.9 $ bazel test --action_env=PYENV_VERSION=3.9 \ 'compiler/back_end/cpp:*' 'compiler/front_end:*' \ 'compiler/util:*' 'integration/googletest:*' //integration/googletest:emboss_test_util_test PASSED in 0.0s Executed 80 out of 80 tests: 80 tests pass. ```