Skip to content
This repository was archived by the owner on Jun 1, 2026. It is now read-only.
This repository was archived by the owner on Jun 1, 2026. It is now read-only.

Cannot build 1.1.3 on Alpine #83

Closed

Description

@mbrancato

With #76, builds on Alpine fail.

The resulting output:

# pip install google-crc32c
Collecting google-crc32c
  Downloading google-crc32c-1.1.3.tar.gz (12 kB)
  Installing build dependencies ... done
  Getting requirements to build wheel ... done
    Preparing wheel metadata ... done
Building wheels for collected packages: google-crc32c
  Building wheel for google-crc32c (PEP 517) ... error
  ERROR: Command errored out with exit status 1:
   command: /usr/bin/python3 /usr/lib/python3.9/site-packages/pip/_vendor/pep517/_in_process.py build_wheel /tmp/tmpsx030db9
       cwd: /tmp/pip-install-wrnldd24/google-crc32c_f2c995e00fea4c81833f393fe6486738
  Complete output (22 lines):
  running bdist_wheel
  running build
  running build_py
  creating build
  creating build/lib.linux-x86_64-3.9
  creating build/lib.linux-x86_64-3.9/google_crc32c
  copying src/google_crc32c/__config__.py -> build/lib.linux-x86_64-3.9/google_crc32c
  copying src/google_crc32c/cext.py -> build/lib.linux-x86_64-3.9/google_crc32c
  copying src/google_crc32c/__init__.py -> build/lib.linux-x86_64-3.9/google_crc32c
  copying src/google_crc32c/_checksum.py -> build/lib.linux-x86_64-3.9/google_crc32c
  copying src/google_crc32c/python.py -> build/lib.linux-x86_64-3.9/google_crc32c
  running build_ext
  building 'google_crc32c._crc32c' extension
  creating build/temp.linux-x86_64-3.9
  creating build/temp.linux-x86_64-3.9/src
  creating build/temp.linux-x86_64-3.9/src/google_crc32c
  gcc -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -fomit-frame-pointer -g -fno-semantic-interposition -fomit-frame-pointer -g -fno-semantic-interposition -fomit-frame-pointer -g -fno-semantic-interposition -DTHREAD_STACK_SIZE=0x100000 -fPIC -I/usr/include/python3.9 -c src/google_crc32c/_crc32c.c -o build/temp.linux-x86_64-3.9/src/google_crc32c/_crc32c.o
  src/google_crc32c/_crc32c.c:3:10: fatal error: crc32c/crc32c.h: No such file or directory
      3 | #include <crc32c/crc32c.h>
        |          ^~~~~~~~~~~~~~~~~
  compilation terminated.
  error: command '/usr/bin/gcc' failed with exit code 1
  ----------------------------------------
  ERROR: Failed building wheel for google-crc32c
Failed to build google-crc32c
ERROR: Could not build wheels for google-crc32c which use PEP 517 and cannot be installed directly

Environment details

  • Programming language:
  • OS: Alpine
  • Language runtime version: 3.9.5
  • Package version: 1.1.3

Steps to reproduce

  1. pip install google-crc32c

Activity

  1. added
    priority: p2Moderately-important priority. Fix may not be included in next release.
    type: bugError or flaw in code with unintended results or allowing sub-optimal usage patterns.
    on Aug 31, 2021
  2. mayansalama commented on Aug 31, 2021

    @mayansalama

    Also hit this today, I assume as a prereq from google-cloud-storage. Forcing 1.1.2 solved the issue for me using google-cloud-storage==1.37.1

  3. oittaa commented on Aug 31, 2021

    @oittaa

    You can also find another build failure example from here: https://github.com/oittaa/gcp-storage-emulator/pull/74/checks?check_run_id=3467604438

    Collecting google-crc32c<2.0dev,>=1.0
      Downloading google-crc32c-1.1.3.tar.gz (12 kB)
      Installing build dependencies: started
      Installing build dependencies: finished with status 'done'
      Getting requirements to build wheel: started
      Getting requirements to build wheel: finished with status 'done'
        Preparing wheel metadata: started
        Preparing wheel metadata: finished with status 'done'
    Collecting six>=1.9
      Downloading six-1.16.0-py2.py3-none-any.whl (11 kB)
    Collecting pyasn1<0.5.0,>=0.4.6
      Downloading pyasn1-0.4.8-py2.py3-none-any.whl (77 kB)
    Collecting pyparsing>=2.0.2
      Downloading pyparsing-2.4.7-py2.py3-none-any.whl (67 kB)
    Building wheels for collected packages: google-crc32c
      Building wheel for google-crc32c (PEP 517): started
      Building wheel for google-crc32c (PEP 517): finished with status 'error'
      ERROR: Command errored out with exit status 1:
       command: /opt/hostedtoolcache/Python/3.10.0-rc.1/x64/bin/python /opt/hostedtoolcache/Python/3.10.0-rc.1/x64/lib/python3.10/site-packages/pip/_vendor/pep517/in_process/_in_process.py build_wheel /tmp/tmp8h_juqfa
           cwd: /tmp/pip-install-ndh19nxw/google-crc32c_fa2b1f839357490fb81a426dfa0ad9d6
      Complete output (22 lines):
      running bdist_wheel
    Failed to build google-crc32c
      running build
      running build_py
      creating build
      creating build/lib.linux-x86_64-3.10
      creating build/lib.linux-x86_64-3.10/google_crc32c
      copying src/google_crc32c/python.py -> build/lib.linux-x86_64-3.10/google_crc32c
      copying src/google_crc32c/__init__.py -> build/lib.linux-x86_64-3.10/google_crc32c
      copying src/google_crc32c/__config__.py -> build/lib.linux-x86_64-3.10/google_crc32c
      copying src/google_crc32c/cext.py -> build/lib.linux-x86_64-3.10/google_crc32c
      copying src/google_crc32c/_checksum.py -> build/lib.linux-x86_64-3.10/google_crc32c
      running build_ext
      building 'google_crc32c._crc32c' extension
      creating build/temp.linux-x86_64-3.10
      creating build/temp.linux-x86_64-3.10/src
      creating build/temp.linux-x86_64-3.10/src/google_crc32c
      gcc -pthread -Wno-unused-result -Wsign-compare -DNDEBUG -g -fwrapv -O3 -Wall -fPIC -I/opt/hostedtoolcache/Python/3.10.0-rc.1/x64/include/python3.10 -c src/google_crc32c/_crc32c.c -o build/temp.linux-x86_64-3.10/src/google_crc32c/_crc32c.o
      src/google_crc32c/_crc32c.c:3:10: fatal error: crc32c/crc32c.h: No such file or directory
          3 | #include <crc32c/crc32c.h>
            |          ^~~~~~~~~~~~~~~~~
      compilation terminated.
      error: command '/usr/bin/gcc' failed with exit code 1
      ----------------------------------------
      ERROR: Failed building wheel for google-crc32c
    ERROR: Could not build wheels for google-crc32c which use PEP 517 and cannot be installed directly
    Error: Process completed with exit code 1.
    
  4. kaime commented on Aug 31, 2021

    @kaime

    Same issue here on python:3.8.8-alpine3.13. Added google-crc32c==1.1.2 before google-cloud-storage==1.42.0 to requirements file to workaround it.

  5. armenzg commented on Aug 31, 2021

    @armenzg

    I'm facing the same issue on Apple's M1 with Python 3.8. I've pinned to version 1.1.2 to work around it.

  6. added a commit that references this issue on Aug 31, 2021
  7. added a commit that references this issue on Aug 31, 2021
  8. dilipped commented on Aug 31, 2021

    @dilipped

    This also affected our automated kokoro tests for gcloud alpha storage.

    I was able to reproduce on a GCE VM running Debian 4.19.181-1 by running the following command.

    $ python3 -m pip install google-crc32c
    
  9. added a commit that references this issue on Aug 31, 2021
  10. danielduhh commented on Aug 31, 2021

    @danielduhh

    @tseaver any idea whats going on? Seems like the latest release didn't include the .whl

  11. tseaver commented on Aug 31, 2021

    @tseaver
    Contributor

    @danielduhh

    any idea whats going on? Seems like the latest release didn't include the .whl

    We don't have specific support for Alpine Linux. Is there a reason why one of the manylinux wheels wouldn't install on your machine? Here are the list of wheels for the 1.1.3 release.

    Note that building from source is going to require that you already have the google-crc32c C library (and headers, if packaged separately) installed on your machine.

    On my Ubuntu 20.04 laptop, which does not have the library installed globally:

    $ python3.8 -m venv /tmp/python-crc32c-83
    $ /tmp/python-crc32c-83/bin/pip install --upgrade setuptools pip wheel
    ...
    Successfully installed pip-21.2.4 setuptools-57.4.0 wheel-0.37.0
    $ /tmp/python-crc32c-83/bin/pip install google-crc32c
    Looking in links: file:///home/tseaver/.pip/wheels
    Collecting google-crc32c
      Downloading google_crc32c-1.1.3-cp38-cp38-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (32 kB)
    Installing collected packages: google-crc32c
    Successfully installed google-crc32c-1.1.3
    $ /tmp/python-crc32c-83/bin/python
    Python 3.8.1 (default, Apr 20 2021, 11:59:31) 
    [GCC 9.3.0] on linux
    Type "help", "copyright", "credits" or "license" for more information.
    >>> from google_crc32c import value, extend, Checksum
    >>> value(b'')
    0
    >>> extend(12345, b'abc')
    2062747409
    >>> checksum = Checksum()
    >>> checksum.update(b'abc')
    >>> checksum.hexdigest()
    b'364b3fb7'
  12. self-assigned this
    on Aug 31, 2021
  13. added
    status: investigatingThe issue is under investigation, which is determined to be non-trivial.
    on Aug 31, 2021
  14. tseaver commented on Aug 31, 2021

    @tseaver
    Contributor

    @mbrancato, @mayansalama, @oittaa, @kaime, @armenzg, @dilipped: Can you please provide the output of the following, using the python3 executable into which you were attempting the install?

    /path/to/python3 -c "import platform; print(platform.platform()); print(platform.architecture())"
    /path/to/python3 -m pip debug --verbose

    On my machine:

    $ /tmp/python-crc32c-83/bin/python3 -c "import platform; print(platform.platform()); print(platform.architecture())"
    Linux-5.11.0-7620-generic-x86_64-with-glibc2.29
    ('64bit', 'ELF')
    $ /tmp/python-crc32c-83/bin/pip debug --verbose
    WARNING: This command is only meant for debugging. Do not use this with automation for parsing and getting these details, since the output and options of this command may change without notice.
    pip version: pip 21.2.4 from /tmp/python-crc32c-83/lib/python3.8/site-packages/pip (python 3.8)
    sys.version: 3.8.1 (default, Apr 20 2021, 11:59:31) 
    [GCC 9.3.0]
    sys.executable: /tmp/python-crc32c-83/bin/python3.8
    sys.getdefaultencoding: utf-8
    sys.getfilesystemencoding: utf-8
    locale.getpreferredencoding: UTF-8
    sys.platform: linux
    sys.implementation:
      name: cpython
    'cert' config value: wheel
    REQUESTS_CA_BUNDLE: None
    CURL_CA_BUNDLE: None
    pip._vendor.certifi.where(): /tmp/python-crc32c-83/lib/python3.8/site-packages/pip/_vendor/certifi/cacert.pem
    pip._vendor.DEBUNDLED: False
    vendored library versions:
      appdirs==1.4.4
      CacheControl==0.12.6
      colorama==0.4.4
      distlib==0.3.2
      distro==1.5.0 (Unable to locate actual module version, using vendor.txt specified version)
      html5lib==1.1
      msgpack==1.0.2 (Unable to locate actual module version, using vendor.txt specified version)
      packaging==21.0
      pep517==0.11.0
      progress==1.5
      pyparsing==2.4.7
      requests==2.26.0
      certifi==2021.05.30
      chardet==4.0.0
      idna==3.2
      urllib3==1.26.6
      resolvelib==0.7.1
      setuptools==44.0.0 (Unable to locate actual module version, using vendor.txt specified version)
      six==1.16.0
      tenacity==8.0.1 (Unable to locate actual module version, using vendor.txt specified version)
      tomli==1.0.3
      webencodings==0.5.1 (Unable to locate actual module version, using vendor.txt specified version)
    Compatible tags: 600
      cp38-cp38-manylinux_2_31_x86_64
      cp38-cp38-manylinux_2_30_x86_64
      cp38-cp38-manylinux_2_29_x86_64
      cp38-cp38-manylinux_2_28_x86_64
      cp38-cp38-manylinux_2_27_x86_64
      cp38-cp38-manylinux_2_26_x86_64
      cp38-cp38-manylinux_2_25_x86_64
      cp38-cp38-manylinux_2_24_x86_64
      cp38-cp38-manylinux_2_23_x86_64
      cp38-cp38-manylinux_2_22_x86_64
      cp38-cp38-manylinux_2_21_x86_64
      cp38-cp38-manylinux_2_20_x86_64
      cp38-cp38-manylinux_2_19_x86_64
      cp38-cp38-manylinux_2_18_x86_64
      cp38-cp38-manylinux_2_17_x86_64
      cp38-cp38-manylinux2014_x86_64
      cp38-cp38-manylinux_2_16_x86_64
      cp38-cp38-manylinux_2_15_x86_64
      cp38-cp38-manylinux_2_14_x86_64
      cp38-cp38-manylinux_2_13_x86_64
      cp38-cp38-manylinux_2_12_x86_64
      cp38-cp38-manylinux2010_x86_64
      cp38-cp38-manylinux_2_11_x86_64
      cp38-cp38-manylinux_2_10_x86_64
      cp38-cp38-manylinux_2_9_x86_64
      cp38-cp38-manylinux_2_8_x86_64
      cp38-cp38-manylinux_2_7_x86_64
      cp38-cp38-manylinux_2_6_x86_64
      cp38-cp38-manylinux_2_5_x86_64
      cp38-cp38-manylinux1_x86_64
      cp38-cp38-linux_x86_64
      cp38-abi3-manylinux_2_31_x86_64
      cp38-abi3-manylinux_2_30_x86_64
      cp38-abi3-manylinux_2_29_x86_64
      cp38-abi3-manylinux_2_28_x86_64
      cp38-abi3-manylinux_2_27_x86_64
      cp38-abi3-manylinux_2_26_x86_64
      cp38-abi3-manylinux_2_25_x86_64
      cp38-abi3-manylinux_2_24_x86_64
      cp38-abi3-manylinux_2_23_x86_64
      cp38-abi3-manylinux_2_22_x86_64
      cp38-abi3-manylinux_2_21_x86_64
      cp38-abi3-manylinux_2_20_x86_64
      cp38-abi3-manylinux_2_19_x86_64
      cp38-abi3-manylinux_2_18_x86_64
      cp38-abi3-manylinux_2_17_x86_64
      cp38-abi3-manylinux2014_x86_64
      cp38-abi3-manylinux_2_16_x86_64
      cp38-abi3-manylinux_2_15_x86_64
      cp38-abi3-manylinux_2_14_x86_64
      cp38-abi3-manylinux_2_13_x86_64
      cp38-abi3-manylinux_2_12_x86_64
      cp38-abi3-manylinux2010_x86_64
      cp38-abi3-manylinux_2_11_x86_64
      cp38-abi3-manylinux_2_10_x86_64
      cp38-abi3-manylinux_2_9_x86_64
      cp38-abi3-manylinux_2_8_x86_64
      cp38-abi3-manylinux_2_7_x86_64
      cp38-abi3-manylinux_2_6_x86_64
      cp38-abi3-manylinux_2_5_x86_64
      cp38-abi3-manylinux1_x86_64
      cp38-abi3-linux_x86_64
      cp38-none-manylinux_2_31_x86_64
      cp38-none-manylinux_2_30_x86_64
      cp38-none-manylinux_2_29_x86_64
      cp38-none-manylinux_2_28_x86_64
      cp38-none-manylinux_2_27_x86_64
      cp38-none-manylinux_2_26_x86_64
      cp38-none-manylinux_2_25_x86_64
      cp38-none-manylinux_2_24_x86_64
      cp38-none-manylinux_2_23_x86_64
      cp38-none-manylinux_2_22_x86_64
      cp38-none-manylinux_2_21_x86_64
      cp38-none-manylinux_2_20_x86_64
      cp38-none-manylinux_2_19_x86_64
      cp38-none-manylinux_2_18_x86_64
      cp38-none-manylinux_2_17_x86_64
      cp38-none-manylinux2014_x86_64
      cp38-none-manylinux_2_16_x86_64
      cp38-none-manylinux_2_15_x86_64
      cp38-none-manylinux_2_14_x86_64
      cp38-none-manylinux_2_13_x86_64
      cp38-none-manylinux_2_12_x86_64
      cp38-none-manylinux2010_x86_64
      cp38-none-manylinux_2_11_x86_64
      cp38-none-manylinux_2_10_x86_64
      cp38-none-manylinux_2_9_x86_64
      cp38-none-manylinux_2_8_x86_64
      cp38-none-manylinux_2_7_x86_64
      cp38-none-manylinux_2_6_x86_64
      cp38-none-manylinux_2_5_x86_64
      cp38-none-manylinux1_x86_64
      cp38-none-linux_x86_64
      cp37-abi3-manylinux_2_31_x86_64
      cp37-abi3-manylinux_2_30_x86_64
      cp37-abi3-manylinux_2_29_x86_64
      cp37-abi3-manylinux_2_28_x86_64
      cp37-abi3-manylinux_2_27_x86_64
      cp37-abi3-manylinux_2_26_x86_64
      cp37-abi3-manylinux_2_25_x86_64
      cp37-abi3-manylinux_2_24_x86_64
      cp37-abi3-manylinux_2_23_x86_64
      cp37-abi3-manylinux_2_22_x86_64
      cp37-abi3-manylinux_2_21_x86_64
      cp37-abi3-manylinux_2_20_x86_64
      cp37-abi3-manylinux_2_19_x86_64
      cp37-abi3-manylinux_2_18_x86_64
      cp37-abi3-manylinux_2_17_x86_64
      cp37-abi3-manylinux2014_x86_64
      cp37-abi3-manylinux_2_16_x86_64
      cp37-abi3-manylinux_2_15_x86_64
      cp37-abi3-manylinux_2_14_x86_64
      cp37-abi3-manylinux_2_13_x86_64
      cp37-abi3-manylinux_2_12_x86_64
      cp37-abi3-manylinux2010_x86_64
      cp37-abi3-manylinux_2_11_x86_64
      cp37-abi3-manylinux_2_10_x86_64
      cp37-abi3-manylinux_2_9_x86_64
      cp37-abi3-manylinux_2_8_x86_64
      cp37-abi3-manylinux_2_7_x86_64
      cp37-abi3-manylinux_2_6_x86_64
      cp37-abi3-manylinux_2_5_x86_64
      cp37-abi3-manylinux1_x86_64
      cp37-abi3-linux_x86_64
      cp36-abi3-manylinux_2_31_x86_64
      cp36-abi3-manylinux_2_30_x86_64
      cp36-abi3-manylinux_2_29_x86_64
      cp36-abi3-manylinux_2_28_x86_64
      cp36-abi3-manylinux_2_27_x86_64
      cp36-abi3-manylinux_2_26_x86_64
      cp36-abi3-manylinux_2_25_x86_64
      cp36-abi3-manylinux_2_24_x86_64
      cp36-abi3-manylinux_2_23_x86_64
      cp36-abi3-manylinux_2_22_x86_64
      cp36-abi3-manylinux_2_21_x86_64
      cp36-abi3-manylinux_2_20_x86_64
      cp36-abi3-manylinux_2_19_x86_64
      cp36-abi3-manylinux_2_18_x86_64
      cp36-abi3-manylinux_2_17_x86_64
      cp36-abi3-manylinux2014_x86_64
      cp36-abi3-manylinux_2_16_x86_64
      cp36-abi3-manylinux_2_15_x86_64
      cp36-abi3-manylinux_2_14_x86_64
      cp36-abi3-manylinux_2_13_x86_64
      cp36-abi3-manylinux_2_12_x86_64
      cp36-abi3-manylinux2010_x86_64
      cp36-abi3-manylinux_2_11_x86_64
      cp36-abi3-manylinux_2_10_x86_64
      cp36-abi3-manylinux_2_9_x86_64
      cp36-abi3-manylinux_2_8_x86_64
      cp36-abi3-manylinux_2_7_x86_64
      cp36-abi3-manylinux_2_6_x86_64
      cp36-abi3-manylinux_2_5_x86_64
      cp36-abi3-manylinux1_x86_64
      cp36-abi3-linux_x86_64
      cp35-abi3-manylinux_2_31_x86_64
      cp35-abi3-manylinux_2_30_x86_64
      cp35-abi3-manylinux_2_29_x86_64
      cp35-abi3-manylinux_2_28_x86_64
      cp35-abi3-manylinux_2_27_x86_64
      cp35-abi3-manylinux_2_26_x86_64
      cp35-abi3-manylinux_2_25_x86_64
      cp35-abi3-manylinux_2_24_x86_64
      cp35-abi3-manylinux_2_23_x86_64
      cp35-abi3-manylinux_2_22_x86_64
      cp35-abi3-manylinux_2_21_x86_64
      cp35-abi3-manylinux_2_20_x86_64
      cp35-abi3-manylinux_2_19_x86_64
      cp35-abi3-manylinux_2_18_x86_64
      cp35-abi3-manylinux_2_17_x86_64
      cp35-abi3-manylinux2014_x86_64
      cp35-abi3-manylinux_2_16_x86_64
      cp35-abi3-manylinux_2_15_x86_64
      cp35-abi3-manylinux_2_14_x86_64
      cp35-abi3-manylinux_2_13_x86_64
      cp35-abi3-manylinux_2_12_x86_64
      cp35-abi3-manylinux2010_x86_64
      cp35-abi3-manylinux_2_11_x86_64
      cp35-abi3-manylinux_2_10_x86_64
      cp35-abi3-manylinux_2_9_x86_64
      cp35-abi3-manylinux_2_8_x86_64
      cp35-abi3-manylinux_2_7_x86_64
      cp35-abi3-manylinux_2_6_x86_64
      cp35-abi3-manylinux_2_5_x86_64
      cp35-abi3-manylinux1_x86_64
      cp35-abi3-linux_x86_64
      cp34-abi3-manylinux_2_31_x86_64
      cp34-abi3-manylinux_2_30_x86_64
      cp34-abi3-manylinux_2_29_x86_64
      cp34-abi3-manylinux_2_28_x86_64
      cp34-abi3-manylinux_2_27_x86_64
      cp34-abi3-manylinux_2_26_x86_64
      cp34-abi3-manylinux_2_25_x86_64
      cp34-abi3-manylinux_2_24_x86_64
      cp34-abi3-manylinux_2_23_x86_64
      cp34-abi3-manylinux_2_22_x86_64
      cp34-abi3-manylinux_2_21_x86_64
      cp34-abi3-manylinux_2_20_x86_64
      cp34-abi3-manylinux_2_19_x86_64
      cp34-abi3-manylinux_2_18_x86_64
      cp34-abi3-manylinux_2_17_x86_64
      cp34-abi3-manylinux2014_x86_64
      cp34-abi3-manylinux_2_16_x86_64
      cp34-abi3-manylinux_2_15_x86_64
      cp34-abi3-manylinux_2_14_x86_64
      cp34-abi3-manylinux_2_13_x86_64
      cp34-abi3-manylinux_2_12_x86_64
      cp34-abi3-manylinux2010_x86_64
      cp34-abi3-manylinux_2_11_x86_64
      cp34-abi3-manylinux_2_10_x86_64
      cp34-abi3-manylinux_2_9_x86_64
      cp34-abi3-manylinux_2_8_x86_64
      cp34-abi3-manylinux_2_7_x86_64
      cp34-abi3-manylinux_2_6_x86_64
      cp34-abi3-manylinux_2_5_x86_64
      cp34-abi3-manylinux1_x86_64
      cp34-abi3-linux_x86_64
      cp33-abi3-manylinux_2_31_x86_64
      cp33-abi3-manylinux_2_30_x86_64
      cp33-abi3-manylinux_2_29_x86_64
      cp33-abi3-manylinux_2_28_x86_64
      cp33-abi3-manylinux_2_27_x86_64
      cp33-abi3-manylinux_2_26_x86_64
      cp33-abi3-manylinux_2_25_x86_64
      cp33-abi3-manylinux_2_24_x86_64
      cp33-abi3-manylinux_2_23_x86_64
      cp33-abi3-manylinux_2_22_x86_64
      cp33-abi3-manylinux_2_21_x86_64
      cp33-abi3-manylinux_2_20_x86_64
      cp33-abi3-manylinux_2_19_x86_64
      cp33-abi3-manylinux_2_18_x86_64
      cp33-abi3-manylinux_2_17_x86_64
      cp33-abi3-manylinux2014_x86_64
      cp33-abi3-manylinux_2_16_x86_64
      cp33-abi3-manylinux_2_15_x86_64
      cp33-abi3-manylinux_2_14_x86_64
      cp33-abi3-manylinux_2_13_x86_64
      cp33-abi3-manylinux_2_12_x86_64
      cp33-abi3-manylinux2010_x86_64
      cp33-abi3-manylinux_2_11_x86_64
      cp33-abi3-manylinux_2_10_x86_64
      cp33-abi3-manylinux_2_9_x86_64
      cp33-abi3-manylinux_2_8_x86_64
      cp33-abi3-manylinux_2_7_x86_64
      cp33-abi3-manylinux_2_6_x86_64
      cp33-abi3-manylinux_2_5_x86_64
      cp33-abi3-manylinux1_x86_64
      cp33-abi3-linux_x86_64
      cp32-abi3-manylinux_2_31_x86_64
      cp32-abi3-manylinux_2_30_x86_64
      cp32-abi3-manylinux_2_29_x86_64
      cp32-abi3-manylinux_2_28_x86_64
      cp32-abi3-manylinux_2_27_x86_64
      cp32-abi3-manylinux_2_26_x86_64
      cp32-abi3-manylinux_2_25_x86_64
      cp32-abi3-manylinux_2_24_x86_64
      cp32-abi3-manylinux_2_23_x86_64
      cp32-abi3-manylinux_2_22_x86_64
      cp32-abi3-manylinux_2_21_x86_64
      cp32-abi3-manylinux_2_20_x86_64
      cp32-abi3-manylinux_2_19_x86_64
      cp32-abi3-manylinux_2_18_x86_64
      cp32-abi3-manylinux_2_17_x86_64
      cp32-abi3-manylinux2014_x86_64
      cp32-abi3-manylinux_2_16_x86_64
      cp32-abi3-manylinux_2_15_x86_64
      cp32-abi3-manylinux_2_14_x86_64
      cp32-abi3-manylinux_2_13_x86_64
      cp32-abi3-manylinux_2_12_x86_64
      cp32-abi3-manylinux2010_x86_64
      cp32-abi3-manylinux_2_11_x86_64
      cp32-abi3-manylinux_2_10_x86_64
      cp32-abi3-manylinux_2_9_x86_64
      cp32-abi3-manylinux_2_8_x86_64
      cp32-abi3-manylinux_2_7_x86_64
      cp32-abi3-manylinux_2_6_x86_64
      cp32-abi3-manylinux_2_5_x86_64
      cp32-abi3-manylinux1_x86_64
      cp32-abi3-linux_x86_64
      py38-none-manylinux_2_31_x86_64
      py38-none-manylinux_2_30_x86_64
      py38-none-manylinux_2_29_x86_64
      py38-none-manylinux_2_28_x86_64
      py38-none-manylinux_2_27_x86_64
      py38-none-manylinux_2_26_x86_64
      py38-none-manylinux_2_25_x86_64
      py38-none-manylinux_2_24_x86_64
      py38-none-manylinux_2_23_x86_64
      py38-none-manylinux_2_22_x86_64
      py38-none-manylinux_2_21_x86_64
      py38-none-manylinux_2_20_x86_64
      py38-none-manylinux_2_19_x86_64
      py38-none-manylinux_2_18_x86_64
      py38-none-manylinux_2_17_x86_64
      py38-none-manylinux2014_x86_64
      py38-none-manylinux_2_16_x86_64
      py38-none-manylinux_2_15_x86_64
      py38-none-manylinux_2_14_x86_64
      py38-none-manylinux_2_13_x86_64
      py38-none-manylinux_2_12_x86_64
      py38-none-manylinux2010_x86_64
      py38-none-manylinux_2_11_x86_64
      py38-none-manylinux_2_10_x86_64
      py38-none-manylinux_2_9_x86_64
      py38-none-manylinux_2_8_x86_64
      py38-none-manylinux_2_7_x86_64
      py38-none-manylinux_2_6_x86_64
      py38-none-manylinux_2_5_x86_64
      py38-none-manylinux1_x86_64
      py38-none-linux_x86_64
      py3-none-manylinux_2_31_x86_64
      py3-none-manylinux_2_30_x86_64
      py3-none-manylinux_2_29_x86_64
      py3-none-manylinux_2_28_x86_64
      py3-none-manylinux_2_27_x86_64
      py3-none-manylinux_2_26_x86_64
      py3-none-manylinux_2_25_x86_64
      py3-none-manylinux_2_24_x86_64
      py3-none-manylinux_2_23_x86_64
      py3-none-manylinux_2_22_x86_64
      py3-none-manylinux_2_21_x86_64
      py3-none-manylinux_2_20_x86_64
      py3-none-manylinux_2_19_x86_64
      py3-none-manylinux_2_18_x86_64
      py3-none-manylinux_2_17_x86_64
      py3-none-manylinux2014_x86_64
      py3-none-manylinux_2_16_x86_64
      py3-none-manylinux_2_15_x86_64
      py3-none-manylinux_2_14_x86_64
      py3-none-manylinux_2_13_x86_64
      py3-none-manylinux_2_12_x86_64
      py3-none-manylinux2010_x86_64
      py3-none-manylinux_2_11_x86_64
      py3-none-manylinux_2_10_x86_64
      py3-none-manylinux_2_9_x86_64
      py3-none-manylinux_2_8_x86_64
      py3-none-manylinux_2_7_x86_64
      py3-none-manylinux_2_6_x86_64
      py3-none-manylinux_2_5_x86_64
      py3-none-manylinux1_x86_64
      py3-none-linux_x86_64
      py37-none-manylinux_2_31_x86_64
      py37-none-manylinux_2_30_x86_64
      py37-none-manylinux_2_29_x86_64
      py37-none-manylinux_2_28_x86_64
      py37-none-manylinux_2_27_x86_64
      py37-none-manylinux_2_26_x86_64
      py37-none-manylinux_2_25_x86_64
      py37-none-manylinux_2_24_x86_64
      py37-none-manylinux_2_23_x86_64
      py37-none-manylinux_2_22_x86_64
      py37-none-manylinux_2_21_x86_64
      py37-none-manylinux_2_20_x86_64
      py37-none-manylinux_2_19_x86_64
      py37-none-manylinux_2_18_x86_64
      py37-none-manylinux_2_17_x86_64
      py37-none-manylinux2014_x86_64
      py37-none-manylinux_2_16_x86_64
      py37-none-manylinux_2_15_x86_64
      py37-none-manylinux_2_14_x86_64
      py37-none-manylinux_2_13_x86_64
      py37-none-manylinux_2_12_x86_64
      py37-none-manylinux2010_x86_64
      py37-none-manylinux_2_11_x86_64
      py37-none-manylinux_2_10_x86_64
      py37-none-manylinux_2_9_x86_64
      py37-none-manylinux_2_8_x86_64
      py37-none-manylinux_2_7_x86_64
      py37-none-manylinux_2_6_x86_64
      py37-none-manylinux_2_5_x86_64
      py37-none-manylinux1_x86_64
      py37-none-linux_x86_64
      py36-none-manylinux_2_31_x86_64
      py36-none-manylinux_2_30_x86_64
      py36-none-manylinux_2_29_x86_64
      py36-none-manylinux_2_28_x86_64
      py36-none-manylinux_2_27_x86_64
      py36-none-manylinux_2_26_x86_64
      py36-none-manylinux_2_25_x86_64
      py36-none-manylinux_2_24_x86_64
      py36-none-manylinux_2_23_x86_64
      py36-none-manylinux_2_22_x86_64
      py36-none-manylinux_2_21_x86_64
      py36-none-manylinux_2_20_x86_64
      py36-none-manylinux_2_19_x86_64
      py36-none-manylinux_2_18_x86_64
      py36-none-manylinux_2_17_x86_64
      py36-none-manylinux2014_x86_64
      py36-none-manylinux_2_16_x86_64
      py36-none-manylinux_2_15_x86_64
      py36-none-manylinux_2_14_x86_64
      py36-none-manylinux_2_13_x86_64
      py36-none-manylinux_2_12_x86_64
      py36-none-manylinux2010_x86_64
      py36-none-manylinux_2_11_x86_64
      py36-none-manylinux_2_10_x86_64
      py36-none-manylinux_2_9_x86_64
      py36-none-manylinux_2_8_x86_64
      py36-none-manylinux_2_7_x86_64
      py36-none-manylinux_2_6_x86_64
      py36-none-manylinux_2_5_x86_64
      py36-none-manylinux1_x86_64
      py36-none-linux_x86_64
      py35-none-manylinux_2_31_x86_64
      py35-none-manylinux_2_30_x86_64
      py35-none-manylinux_2_29_x86_64
      py35-none-manylinux_2_28_x86_64
      py35-none-manylinux_2_27_x86_64
      py35-none-manylinux_2_26_x86_64
      py35-none-manylinux_2_25_x86_64
      py35-none-manylinux_2_24_x86_64
      py35-none-manylinux_2_23_x86_64
      py35-none-manylinux_2_22_x86_64
      py35-none-manylinux_2_21_x86_64
      py35-none-manylinux_2_20_x86_64
      py35-none-manylinux_2_19_x86_64
      py35-none-manylinux_2_18_x86_64
      py35-none-manylinux_2_17_x86_64
      py35-none-manylinux2014_x86_64
      py35-none-manylinux_2_16_x86_64
      py35-none-manylinux_2_15_x86_64
      py35-none-manylinux_2_14_x86_64
      py35-none-manylinux_2_13_x86_64
      py35-none-manylinux_2_12_x86_64
      py35-none-manylinux2010_x86_64
      py35-none-manylinux_2_11_x86_64
      py35-none-manylinux_2_10_x86_64
      py35-none-manylinux_2_9_x86_64
      py35-none-manylinux_2_8_x86_64
      py35-none-manylinux_2_7_x86_64
      py35-none-manylinux_2_6_x86_64
      py35-none-manylinux_2_5_x86_64
      py35-none-manylinux1_x86_64
      py35-none-linux_x86_64
      py34-none-manylinux_2_31_x86_64
      py34-none-manylinux_2_30_x86_64
      py34-none-manylinux_2_29_x86_64
      py34-none-manylinux_2_28_x86_64
      py34-none-manylinux_2_27_x86_64
      py34-none-manylinux_2_26_x86_64
      py34-none-manylinux_2_25_x86_64
      py34-none-manylinux_2_24_x86_64
      py34-none-manylinux_2_23_x86_64
      py34-none-manylinux_2_22_x86_64
      py34-none-manylinux_2_21_x86_64
      py34-none-manylinux_2_20_x86_64
      py34-none-manylinux_2_19_x86_64
      py34-none-manylinux_2_18_x86_64
      py34-none-manylinux_2_17_x86_64
      py34-none-manylinux2014_x86_64
      py34-none-manylinux_2_16_x86_64
      py34-none-manylinux_2_15_x86_64
      py34-none-manylinux_2_14_x86_64
      py34-none-manylinux_2_13_x86_64
      py34-none-manylinux_2_12_x86_64
      py34-none-manylinux2010_x86_64
      py34-none-manylinux_2_11_x86_64
      py34-none-manylinux_2_10_x86_64
      py34-none-manylinux_2_9_x86_64
      py34-none-manylinux_2_8_x86_64
      py34-none-manylinux_2_7_x86_64
      py34-none-manylinux_2_6_x86_64
      py34-none-manylinux_2_5_x86_64
      py34-none-manylinux1_x86_64
      py34-none-linux_x86_64
      py33-none-manylinux_2_31_x86_64
      py33-none-manylinux_2_30_x86_64
      py33-none-manylinux_2_29_x86_64
      py33-none-manylinux_2_28_x86_64
      py33-none-manylinux_2_27_x86_64
      py33-none-manylinux_2_26_x86_64
      py33-none-manylinux_2_25_x86_64
      py33-none-manylinux_2_24_x86_64
      py33-none-manylinux_2_23_x86_64
      py33-none-manylinux_2_22_x86_64
      py33-none-manylinux_2_21_x86_64
      py33-none-manylinux_2_20_x86_64
      py33-none-manylinux_2_19_x86_64
      py33-none-manylinux_2_18_x86_64
      py33-none-manylinux_2_17_x86_64
      py33-none-manylinux2014_x86_64
      py33-none-manylinux_2_16_x86_64
      py33-none-manylinux_2_15_x86_64
      py33-none-manylinux_2_14_x86_64
      py33-none-manylinux_2_13_x86_64
      py33-none-manylinux_2_12_x86_64
      py33-none-manylinux2010_x86_64
      py33-none-manylinux_2_11_x86_64
      py33-none-manylinux_2_10_x86_64
      py33-none-manylinux_2_9_x86_64
      py33-none-manylinux_2_8_x86_64
      py33-none-manylinux_2_7_x86_64
      py33-none-manylinux_2_6_x86_64
      py33-none-manylinux_2_5_x86_64
      py33-none-manylinux1_x86_64
      py33-none-linux_x86_64
      py32-none-manylinux_2_31_x86_64
      py32-none-manylinux_2_30_x86_64
      py32-none-manylinux_2_29_x86_64
      py32-none-manylinux_2_28_x86_64
      py32-none-manylinux_2_27_x86_64
      py32-none-manylinux_2_26_x86_64
      py32-none-manylinux_2_25_x86_64
      py32-none-manylinux_2_24_x86_64
      py32-none-manylinux_2_23_x86_64
      py32-none-manylinux_2_22_x86_64
      py32-none-manylinux_2_21_x86_64
      py32-none-manylinux_2_20_x86_64
      py32-none-manylinux_2_19_x86_64
      py32-none-manylinux_2_18_x86_64
      py32-none-manylinux_2_17_x86_64
      py32-none-manylinux2014_x86_64
      py32-none-manylinux_2_16_x86_64
      py32-none-manylinux_2_15_x86_64
      py32-none-manylinux_2_14_x86_64
      py32-none-manylinux_2_13_x86_64
      py32-none-manylinux_2_12_x86_64
      py32-none-manylinux2010_x86_64
      py32-none-manylinux_2_11_x86_64
      py32-none-manylinux_2_10_x86_64
      py32-none-manylinux_2_9_x86_64
      py32-none-manylinux_2_8_x86_64
      py32-none-manylinux_2_7_x86_64
      py32-none-manylinux_2_6_x86_64
      py32-none-manylinux_2_5_x86_64
      py32-none-manylinux1_x86_64
      py32-none-linux_x86_64
      py31-none-manylinux_2_31_x86_64
      py31-none-manylinux_2_30_x86_64
      py31-none-manylinux_2_29_x86_64
      py31-none-manylinux_2_28_x86_64
      py31-none-manylinux_2_27_x86_64
      py31-none-manylinux_2_26_x86_64
      py31-none-manylinux_2_25_x86_64
      py31-none-manylinux_2_24_x86_64
      py31-none-manylinux_2_23_x86_64
      py31-none-manylinux_2_22_x86_64
      py31-none-manylinux_2_21_x86_64
      py31-none-manylinux_2_20_x86_64
      py31-none-manylinux_2_19_x86_64
      py31-none-manylinux_2_18_x86_64
      py31-none-manylinux_2_17_x86_64
      py31-none-manylinux2014_x86_64
      py31-none-manylinux_2_16_x86_64
      py31-none-manylinux_2_15_x86_64
      py31-none-manylinux_2_14_x86_64
      py31-none-manylinux_2_13_x86_64
      py31-none-manylinux_2_12_x86_64
      py31-none-manylinux2010_x86_64
      py31-none-manylinux_2_11_x86_64
      py31-none-manylinux_2_10_x86_64
      py31-none-manylinux_2_9_x86_64
      py31-none-manylinux_2_8_x86_64
      py31-none-manylinux_2_7_x86_64
      py31-none-manylinux_2_6_x86_64
      py31-none-manylinux_2_5_x86_64
      py31-none-manylinux1_x86_64
      py31-none-linux_x86_64
      py30-none-manylinux_2_31_x86_64
      py30-none-manylinux_2_30_x86_64
      py30-none-manylinux_2_29_x86_64
      py30-none-manylinux_2_28_x86_64
      py30-none-manylinux_2_27_x86_64
      py30-none-manylinux_2_26_x86_64
      py30-none-manylinux_2_25_x86_64
      py30-none-manylinux_2_24_x86_64
      py30-none-manylinux_2_23_x86_64
      py30-none-manylinux_2_22_x86_64
      py30-none-manylinux_2_21_x86_64
      py30-none-manylinux_2_20_x86_64
      py30-none-manylinux_2_19_x86_64
      py30-none-manylinux_2_18_x86_64
      py30-none-manylinux_2_17_x86_64
      py30-none-manylinux2014_x86_64
      py30-none-manylinux_2_16_x86_64
      py30-none-manylinux_2_15_x86_64
      py30-none-manylinux_2_14_x86_64
      py30-none-manylinux_2_13_x86_64
      py30-none-manylinux_2_12_x86_64
      py30-none-manylinux2010_x86_64
      py30-none-manylinux_2_11_x86_64
      py30-none-manylinux_2_10_x86_64
      py30-none-manylinux_2_9_x86_64
      py30-none-manylinux_2_8_x86_64
      py30-none-manylinux_2_7_x86_64
      py30-none-manylinux_2_6_x86_64
      py30-none-manylinux_2_5_x86_64
      py30-none-manylinux1_x86_64
      py30-none-linux_x86_64
      cp38-none-any
      py38-none-any
      py3-none-any
      py37-none-any
      py36-none-any
      py35-none-any
      py34-none-any
      py33-none-any
      py32-none-any
      py31-none-any
      py30-none-any
  15. 12 remaining items

  16. kaime commented on Sep 1, 2021

    @kaime

    @tseaver This works on python:3.8.8-alpine3.13 👍

    # CRC32C_PURE_PYTHON=1 python -m pip install --upgrade google_crc32c==1.1.3
    Collecting google_crc32c==1.1.3
      Using cached google-crc32c-1.1.3.tar.gz (12 kB)
      Installing build dependencies ... done
      Getting requirements to build wheel ... done
        Preparing wheel metadata ... done
    Building wheels for collected packages: google-crc32c
      Building wheel for google-crc32c (PEP 517) ... done
      Created wheel for google-crc32c: filename=google_crc32c-1.1.3-py3-none-any.whl size=13003 sha256=8ed90e712fd39da138425c470326b0c0b903eed97a21d75b0244cc76e4c6a205
      Stored in directory: /root/.cache/pip/wheels/d1/0d/df/00594dd92f619702b5f0f6e2bdf979be143b27137da3bd4334
    Successfully built google-crc32c
    Installing collected packages: google-crc32c
    Successfully installed google-crc32c-1.1.3
    
  17. oittaa commented on Sep 1, 2021

    @oittaa

    @tseaver Here's the output. Copy & pasted from here: https://github.com/oittaa/gcp-storage-emulator/pull/76/checks?check_run_id=3485093270

    Linux-5.8.0-1039-azure-x86_64-with-glibc2.31
    ('64bit', 'ELF')
    WARNING: This command is only meant for debugging. Do not use this with automation for parsing and getting these details, since the output and options of this command may change without notice.
    pip version: pip 21.2.4 from /opt/hostedtoolcache/Python/3.10.0-rc.1/x64/lib/python3.10/site-packages/pip (python 3.10)
    sys.version: 3.10.0rc1 (default, Aug  4 2021, 06:20:47) [GCC 9.3.0]
    sys.executable: /opt/hostedtoolcache/Python/3.10.0-rc.1/x64/bin/python
    sys.getdefaultencoding: utf-8
    sys.getfilesystemencoding: utf-8
    locale.getpreferredencoding: UTF-8
    sys.platform: linux
    sys.implementation:
      name: cpython
    'cert' config value: Not specified
    REQUESTS_CA_BUNDLE: None
    CURL_CA_BUNDLE: None
    pip._vendor.certifi.where(): /opt/hostedtoolcache/Python/3.10.0-rc.1/x64/lib/python3.10/site-packages/pip/_vendor/certifi/cacert.pem
    pip._vendor.DEBUNDLED: False
    vendored library versions:
      appdirs==1.4.4
      CacheControl==0.12.6
      colorama==0.4.4
      distlib==0.3.2
      distro==1.5.0 (Unable to locate actual module version, using vendor.txt specified version)
      html5lib==1.1
      msgpack==1.0.2 (Unable to locate actual module version, using vendor.txt specified version)
      packaging==21.0
      pep517==0.11.0
      progress==1.5
      pyparsing==2.4.7
      requests==2.26.0
      certifi==2021.05.30
      chardet==4.0.0
      idna==3.2
      urllib3==1.26.6
      resolvelib==0.7.1
      setuptools==44.0.0 (Unable to locate actual module version, using vendor.txt specified version)
      six==1.16.0
      tenacity==8.0.1 (Unable to locate actual module version, using vendor.txt specified version)
      tomli==1.0.3
      webencodings==0.5.1 (Unable to locate actual module version, using vendor.txt specified version)
    Compatible tags: 726
      cp310-cp310-manylinux_2_31_x86_64
      cp310-cp310-manylinux_2_30_x86_64
      cp310-cp310-manylinux_2_29_x86_64
      cp310-cp310-manylinux_2_28_x86_64
      cp310-cp310-manylinux_2_27_x86_64
      cp310-cp310-manylinux_2_26_x86_64
      cp310-cp310-manylinux_2_25_x86_64
      cp310-cp310-manylinux_2_24_x86_64
      cp310-cp310-manylinux_2_23_x86_64
      cp310-cp310-manylinux_2_22_x86_64
      cp310-cp310-manylinux_2_21_x86_64
      cp310-cp310-manylinux_2_20_x86_64
      cp310-cp310-manylinux_2_19_x86_64
      cp310-cp310-manylinux_2_18_x86_64
      cp310-cp310-manylinux_2_17_x86_64
      cp310-cp310-manylinux2014_x86_64
      cp310-cp310-manylinux_2_16_x86_64
      cp310-cp310-manylinux_2_15_x86_64
      cp310-cp310-manylinux_2_14_x86_64
      cp310-cp310-manylinux_2_13_x86_64
      cp310-cp310-manylinux_2_12_x86_64
      cp310-cp310-manylinux2010_x86_64
      cp310-cp310-manylinux_2_11_x86_64
      cp310-cp310-manylinux_2_10_x86_64
      cp310-cp310-manylinux_2_9_x86_64
      cp310-cp310-manylinux_2_8_x86_64
      cp310-cp310-manylinux_2_7_x86_64
      cp310-cp310-manylinux_2_6_x86_64
      cp310-cp310-manylinux_2_5_x86_64
      cp310-cp310-manylinux1_x86_64
      cp310-cp310-linux_x86_64
      cp310-abi3-manylinux_2_31_x86_64
      cp310-abi3-manylinux_2_30_x86_64
      cp310-abi3-manylinux_2_29_x86_64
      cp310-abi3-manylinux_2_28_x86_64
      cp310-abi3-manylinux_2_27_x86_64
      cp310-abi3-manylinux_2_26_x86_64
      cp310-abi3-manylinux_2_25_x86_64
      cp310-abi3-manylinux_2_24_x86_64
      cp310-abi3-manylinux_2_23_x86_64
      cp310-abi3-manylinux_2_22_x86_64
      cp310-abi3-manylinux_2_21_x86_64
      cp310-abi3-manylinux_2_20_x86_64
      cp310-abi3-manylinux_2_19_x86_64
      cp310-abi3-manylinux_2_18_x86_64
      cp310-abi3-manylinux_2_17_x86_64
      cp310-abi3-manylinux2014_x86_64
      cp310-abi3-manylinux_2_16_x86_64
      cp310-abi3-manylinux_2_15_x86_64
      cp310-abi3-manylinux_2_14_x86_64
      cp310-abi3-manylinux_2_13_x86_64
      cp310-abi3-manylinux_2_12_x86_64
      cp310-abi3-manylinux2010_x86_64
      cp310-abi3-manylinux_2_11_x86_64
      cp310-abi3-manylinux_2_10_x86_64
      cp310-abi3-manylinux_2_9_x86_64
      cp310-abi3-manylinux_2_8_x86_64
      cp310-abi3-manylinux_2_7_x86_64
      cp310-abi3-manylinux_2_6_x86_64
      cp310-abi3-manylinux_2_5_x86_64
      cp310-abi3-manylinux1_x86_64
      cp310-abi3-linux_x86_64
      cp310-none-manylinux_2_31_x86_64
      cp310-none-manylinux_2_30_x86_64
      cp310-none-manylinux_2_29_x86_64
      cp310-none-manylinux_2_28_x86_64
      cp310-none-manylinux_2_27_x86_64
      cp310-none-manylinux_2_26_x86_64
      cp310-none-manylinux_2_25_x86_64
      cp310-none-manylinux_2_24_x86_64
      cp310-none-manylinux_2_23_x86_64
      cp310-none-manylinux_2_22_x86_64
      cp310-none-manylinux_2_21_x86_64
      cp310-none-manylinux_2_20_x86_64
      cp310-none-manylinux_2_19_x86_64
      cp310-none-manylinux_2_18_x86_64
      cp310-none-manylinux_2_17_x86_64
      cp310-none-manylinux2014_x86_64
      cp310-none-manylinux_2_16_x86_64
      cp310-none-manylinux_2_15_x86_64
      cp310-none-manylinux_2_14_x86_64
      cp310-none-manylinux_2_13_x86_64
      cp310-none-manylinux_2_12_x86_64
      cp310-none-manylinux2010_x86_64
      cp310-none-manylinux_2_11_x86_64
      cp310-none-manylinux_2_10_x86_64
      cp310-none-manylinux_2_9_x86_64
      cp310-none-manylinux_2_8_x86_64
      cp310-none-manylinux_2_7_x86_64
      cp310-none-manylinux_2_6_x86_64
      cp310-none-manylinux_2_5_x86_64
      cp310-none-manylinux1_x86_64
      cp310-none-linux_x86_64
      cp39-abi3-manylinux_2_31_x86_64
      cp39-abi3-manylinux_2_30_x86_64
      cp39-abi3-manylinux_2_29_x86_64
      cp39-abi3-manylinux_2_28_x86_64
      cp39-abi3-manylinux_2_27_x86_64
      cp39-abi3-manylinux_2_26_x86_64
      cp39-abi3-manylinux_2_25_x86_64
      cp39-abi3-manylinux_2_24_x86_64
      cp39-abi3-manylinux_2_23_x86_64
      cp39-abi3-manylinux_2_22_x86_64
      cp39-abi3-manylinux_2_21_x86_64
      cp39-abi3-manylinux_2_20_x86_64
      cp39-abi3-manylinux_2_19_x86_64
      cp39-abi3-manylinux_2_18_x86_64
      cp39-abi3-manylinux_2_17_x86_64
      cp39-abi3-manylinux2014_x86_64
      cp39-abi3-manylinux_2_16_x86_64
      cp39-abi3-manylinux_2_15_x86_64
      cp39-abi3-manylinux_2_14_x86_64
      cp39-abi3-manylinux_2_13_x86_64
      cp39-abi3-manylinux_2_12_x86_64
      cp39-abi3-manylinux2010_x86_64
      cp39-abi3-manylinux_2_11_x86_64
      cp39-abi3-manylinux_2_10_x86_64
      cp39-abi3-manylinux_2_9_x86_64
      cp39-abi3-manylinux_2_8_x86_64
      cp39-abi3-manylinux_2_7_x86_64
      cp39-abi3-manylinux_2_6_x86_64
      cp39-abi3-manylinux_2_5_x86_64
      cp39-abi3-manylinux1_x86_64
      cp39-abi3-linux_x86_64
      cp38-abi3-manylinux_2_31_x86_64
      cp38-abi3-manylinux_2_30_x86_64
      cp38-abi3-manylinux_2_29_x86_64
      cp38-abi3-manylinux_2_28_x86_64
      cp38-abi3-manylinux_2_27_x86_64
      cp38-abi3-manylinux_2_26_x86_64
      cp38-abi3-manylinux_2_25_x86_64
      cp38-abi3-manylinux_2_24_x86_64
      cp38-abi3-manylinux_2_23_x86_64
      cp38-abi3-manylinux_2_22_x86_64
      cp38-abi3-manylinux_2_21_x86_64
      cp38-abi3-manylinux_2_20_x86_64
      cp38-abi3-manylinux_2_19_x86_64
      cp38-abi3-manylinux_2_18_x86_64
      cp38-abi3-manylinux_2_17_x86_64
      cp38-abi3-manylinux2014_x86_64
      cp38-abi3-manylinux_2_16_x86_64
      cp38-abi3-manylinux_2_15_x86_64
      cp38-abi3-manylinux_2_14_x86_64
      cp38-abi3-manylinux_2_13_x86_64
      cp38-abi3-manylinux_2_12_x86_64
      cp38-abi3-manylinux2010_x86_64
      cp38-abi3-manylinux_2_11_x86_64
      cp38-abi3-manylinux_2_10_x86_64
      cp38-abi3-manylinux_2_9_x86_64
      cp38-abi3-manylinux_2_8_x86_64
      cp38-abi3-manylinux_2_7_x86_64
      cp38-abi3-manylinux_2_6_x86_64
      cp38-abi3-manylinux_2_5_x86_64
      cp38-abi3-manylinux1_x86_64
      cp38-abi3-linux_x86_64
      cp37-abi3-manylinux_2_31_x86_64
      cp37-abi3-manylinux_2_30_x86_64
      cp37-abi3-manylinux_2_29_x86_64
      cp37-abi3-manylinux_2_28_x86_64
      cp37-abi3-manylinux_2_27_x86_64
      cp37-abi3-manylinux_2_26_x86_64
      cp37-abi3-manylinux_2_25_x86_64
      cp37-abi3-manylinux_2_24_x86_64
      cp37-abi3-manylinux_2_23_x86_64
      cp37-abi3-manylinux_2_22_x86_64
      cp37-abi3-manylinux_2_21_x86_64
      cp37-abi3-manylinux_2_20_x86_64
      cp37-abi3-manylinux_2_19_x86_64
      cp37-abi3-manylinux_2_18_x86_64
      cp37-abi3-manylinux_2_17_x86_64
      cp37-abi3-manylinux2014_x86_64
      cp37-abi3-manylinux_2_16_x86_64
      cp37-abi3-manylinux_2_15_x86_64
      cp37-abi3-manylinux_2_14_x86_64
      cp37-abi3-manylinux_2_13_x86_64
      cp37-abi3-manylinux_2_12_x86_64
      cp37-abi3-manylinux2010_x86_64
      cp37-abi3-manylinux_2_11_x86_64
      cp37-abi3-manylinux_2_10_x86_64
      cp37-abi3-manylinux_2_9_x86_64
      cp37-abi3-manylinux_2_8_x86_64
      cp37-abi3-manylinux_2_7_x86_64
      cp37-abi3-manylinux_2_6_x86_64
      cp37-abi3-manylinux_2_5_x86_64
      cp37-abi3-manylinux1_x86_64
      cp37-abi3-linux_x86_64
      cp36-abi3-manylinux_2_31_x86_64
      cp36-abi3-manylinux_2_30_x86_64
      cp36-abi3-manylinux_2_29_x86_64
      cp36-abi3-manylinux_2_28_x86_64
      cp36-abi3-manylinux_2_27_x86_64
      cp36-abi3-manylinux_2_26_x86_64
      cp36-abi3-manylinux_2_25_x86_64
      cp36-abi3-manylinux_2_24_x86_64
      cp36-abi3-manylinux_2_23_x86_64
      cp36-abi3-manylinux_2_22_x86_64
      cp36-abi3-manylinux_2_21_x86_64
      cp36-abi3-manylinux_2_20_x86_64
      cp36-abi3-manylinux_2_19_x86_64
      cp36-abi3-manylinux_2_18_x86_64
      cp36-abi3-manylinux_2_17_x86_64
      cp36-abi3-manylinux2014_x86_64
      cp36-abi3-manylinux_2_16_x86_64
      cp36-abi3-manylinux_2_15_x86_64
      cp36-abi3-manylinux_2_14_x86_64
      cp36-abi3-manylinux_2_13_x86_64
      cp36-abi3-manylinux_2_12_x86_64
      cp36-abi3-manylinux2010_x86_64
      cp36-abi3-manylinux_2_11_x86_64
      cp36-abi3-manylinux_2_10_x86_64
      cp36-abi3-manylinux_2_9_x86_64
      cp36-abi3-manylinux_2_8_x86_64
      cp36-abi3-manylinux_2_7_x86_64
      cp36-abi3-manylinux_2_6_x86_64
      cp36-abi3-manylinux_2_5_x86_64
      cp36-abi3-manylinux1_x86_64
      cp36-abi3-linux_x86_64
      cp35-abi3-manylinux_2_31_x86_64
      cp35-abi3-manylinux_2_30_x86_64
      cp35-abi3-manylinux_2_29_x86_64
      cp35-abi3-manylinux_2_28_x86_64
      cp35-abi3-manylinux_2_27_x86_64
      cp35-abi3-manylinux_2_26_x86_64
      cp35-abi3-manylinux_2_25_x86_64
      cp35-abi3-manylinux_2_24_x86_64
      cp35-abi3-manylinux_2_23_x86_64
      cp35-abi3-manylinux_2_22_x86_64
      cp35-abi3-manylinux_2_21_x86_64
      cp35-abi3-manylinux_2_20_x86_64
      cp35-abi3-manylinux_2_19_x86_64
      cp35-abi3-manylinux_2_18_x86_64
      cp35-abi3-manylinux_2_17_x86_64
      cp35-abi3-manylinux2014_x86_64
      cp35-abi3-manylinux_2_16_x86_64
      cp35-abi3-manylinux_2_15_x86_64
      cp35-abi3-manylinux_2_14_x86_64
      cp35-abi3-manylinux_2_13_x86_64
      cp35-abi3-manylinux_2_12_x86_64
      cp35-abi3-manylinux2010_x86_64
      cp35-abi3-manylinux_2_11_x86_64
      cp35-abi3-manylinux_2_10_x86_64
      cp35-abi3-manylinux_2_9_x86_64
      cp35-abi3-manylinux_2_8_x86_64
      cp35-abi3-manylinux_2_7_x86_64
      cp35-abi3-manylinux_2_6_x86_64
      cp35-abi3-manylinux_2_5_x86_64
      cp35-abi3-manylinux1_x86_64
      cp35-abi3-linux_x86_64
      cp34-abi3-manylinux_2_31_x86_64
      cp34-abi3-manylinux_2_30_x86_64
      cp34-abi3-manylinux_2_29_x86_64
      cp34-abi3-manylinux_2_28_x86_64
      cp34-abi3-manylinux_2_27_x86_64
      cp34-abi3-manylinux_2_26_x86_64
      cp34-abi3-manylinux_2_25_x86_64
      cp34-abi3-manylinux_2_24_x86_64
      cp34-abi3-manylinux_2_23_x86_64
      cp34-abi3-manylinux_2_22_x86_64
      cp34-abi3-manylinux_2_21_x86_64
      cp34-abi3-manylinux_2_20_x86_64
      cp34-abi3-manylinux_2_19_x86_64
      cp34-abi3-manylinux_2_18_x86_64
      cp34-abi3-manylinux_2_17_x86_64
      cp34-abi3-manylinux2014_x86_64
      cp34-abi3-manylinux_2_16_x86_64
      cp34-abi3-manylinux_2_15_x86_64
      cp34-abi3-manylinux_2_14_x86_64
      cp34-abi3-manylinux_2_13_x86_64
      cp34-abi3-manylinux_2_12_x86_64
      cp34-abi3-manylinux2010_x86_64
      cp34-abi3-manylinux_2_11_x86_64
      cp34-abi3-manylinux_2_10_x86_64
      cp34-abi3-manylinux_2_9_x86_64
      cp34-abi3-manylinux_2_8_x86_64
      cp34-abi3-manylinux_2_7_x86_64
      cp34-abi3-manylinux_2_6_x86_64
      cp34-abi3-manylinux_2_5_x86_64
      cp34-abi3-manylinux1_x86_64
      cp34-abi3-linux_x86_64
      cp33-abi3-manylinux_2_31_x86_64
      cp33-abi3-manylinux_2_30_x86_64
      cp33-abi3-manylinux_2_29_x86_64
      cp33-abi3-manylinux_2_28_x86_64
      cp33-abi3-manylinux_2_27_x86_64
      cp33-abi3-manylinux_2_26_x86_64
      cp33-abi3-manylinux_2_25_x86_64
      cp33-abi3-manylinux_2_24_x86_64
      cp33-abi3-manylinux_2_23_x86_64
      cp33-abi3-manylinux_2_22_x86_64
      cp33-abi3-manylinux_2_21_x86_64
      cp33-abi3-manylinux_2_20_x86_64
      cp33-abi3-manylinux_2_19_x86_64
      cp33-abi3-manylinux_2_18_x86_64
      cp33-abi3-manylinux_2_17_x86_64
      cp33-abi3-manylinux2014_x86_64
      cp33-abi3-manylinux_2_16_x86_64
      cp33-abi3-manylinux_2_15_x86_64
      cp33-abi3-manylinux_2_14_x86_64
      cp33-abi3-manylinux_2_13_x86_64
      cp33-abi3-manylinux_2_12_x86_64
      cp33-abi3-manylinux2010_x86_64
      cp33-abi3-manylinux_2_11_x86_64
      cp33-abi3-manylinux_2_10_x86_64
      cp33-abi3-manylinux_2_9_x86_64
      cp33-abi3-manylinux_2_8_x86_64
      cp33-abi3-manylinux_2_7_x86_64
      cp33-abi3-manylinux_2_6_x86_64
      cp33-abi3-manylinux_2_5_x86_64
      cp33-abi3-manylinux1_x86_64
      cp33-abi3-linux_x86_64
      cp32-abi3-manylinux_2_31_x86_64
      cp32-abi3-manylinux_2_30_x86_64
      cp32-abi3-manylinux_2_29_x86_64
      cp32-abi3-manylinux_2_28_x86_64
      cp32-abi3-manylinux_2_27_x86_64
      cp32-abi3-manylinux_2_26_x86_64
      cp32-abi3-manylinux_2_25_x86_64
      cp32-abi3-manylinux_2_24_x86_64
      cp32-abi3-manylinux_2_23_x86_64
      cp32-abi3-manylinux_2_22_x86_64
      cp32-abi3-manylinux_2_21_x86_64
      cp32-abi3-manylinux_2_20_x86_64
      cp32-abi3-manylinux_2_19_x86_64
      cp32-abi3-manylinux_2_18_x86_64
      cp32-abi3-manylinux_2_17_x86_64
      cp32-abi3-manylinux2014_x86_64
      cp32-abi3-manylinux_2_16_x86_64
      cp32-abi3-manylinux_2_15_x86_64
      cp32-abi3-manylinux_2_14_x86_64
      cp32-abi3-manylinux_2_13_x86_64
      cp32-abi3-manylinux_2_12_x86_64
      cp32-abi3-manylinux2010_x86_64
      cp32-abi3-manylinux_2_11_x86_64
      cp32-abi3-manylinux_2_10_x86_64
      cp32-abi3-manylinux_2_9_x86_64
      cp32-abi3-manylinux_2_8_x86_64
      cp32-abi3-manylinux_2_7_x86_64
      cp32-abi3-manylinux_2_6_x86_64
      cp32-abi3-manylinux_2_5_x86_64
      cp32-abi3-manylinux1_x86_64
      cp32-abi3-linux_x86_64
      py310-none-manylinux_2_31_x86_64
      py310-none-manylinux_2_30_x86_64
      py310-none-manylinux_2_29_x86_64
      py310-none-manylinux_2_28_x86_64
      py310-none-manylinux_2_27_x86_64
      py310-none-manylinux_2_26_x86_64
      py310-none-manylinux_2_25_x86_64
      py310-none-manylinux_2_24_x86_64
      py310-none-manylinux_2_23_x86_64
      py310-none-manylinux_2_22_x86_64
      py310-none-manylinux_2_21_x86_64
      py310-none-manylinux_2_20_x86_64
      py310-none-manylinux_2_19_x86_64
      py310-none-manylinux_2_18_x86_64
      py310-none-manylinux_2_17_x86_64
      py310-none-manylinux2014_x86_64
      py310-none-manylinux_2_16_x86_64
      py310-none-manylinux_2_15_x86_64
      py310-none-manylinux_2_14_x86_64
      py310-none-manylinux_2_13_x86_64
      py310-none-manylinux_2_12_x86_64
      py310-none-manylinux2010_x86_64
      py310-none-manylinux_2_11_x86_64
      py310-none-manylinux_2_10_x86_64
      py310-none-manylinux_2_9_x86_64
      py310-none-manylinux_2_8_x86_64
      py310-none-manylinux_2_7_x86_64
      py310-none-manylinux_2_6_x86_64
      py310-none-manylinux_2_5_x86_64
      py310-none-manylinux1_x86_64
      py310-none-linux_x86_64
      py3-none-manylinux_2_31_x86_64
      py3-none-manylinux_2_30_x86_64
      py3-none-manylinux_2_29_x86_64
      py3-none-manylinux_2_28_x86_64
      py3-none-manylinux_2_27_x86_64
      py3-none-manylinux_2_26_x86_64
      py3-none-manylinux_2_25_x86_64
      py3-none-manylinux_2_24_x86_64
      py3-none-manylinux_2_23_x86_64
      py3-none-manylinux_2_22_x86_64
      py3-none-manylinux_2_21_x86_64
      py3-none-manylinux_2_20_x86_64
      py3-none-manylinux_2_19_x86_64
      py3-none-manylinux_2_18_x86_64
      py3-none-manylinux_2_17_x86_64
      py3-none-manylinux2014_x86_64
      py3-none-manylinux_2_16_x86_64
      py3-none-manylinux_2_15_x86_64
      py3-none-manylinux_2_14_x86_64
      py3-none-manylinux_2_13_x86_64
      py3-none-manylinux_2_12_x86_64
      py3-none-manylinux2010_x86_64
      py3-none-manylinux_2_11_x86_64
      py3-none-manylinux_2_10_x86_64
      py3-none-manylinux_2_9_x86_64
      py3-none-manylinux_2_8_x86_64
      py3-none-manylinux_2_7_x86_64
      py3-none-manylinux_2_6_x86_64
      py3-none-manylinux_2_5_x86_64
      py3-none-manylinux1_x86_64
      py3-none-linux_x86_64
      py39-none-manylinux_2_31_x86_64
      py39-none-manylinux_2_30_x86_64
      py39-none-manylinux_2_29_x86_64
      py39-none-manylinux_2_28_x86_64
      py39-none-manylinux_2_27_x86_64
      py39-none-manylinux_2_26_x86_64
      py39-none-manylinux_2_25_x86_64
      py39-none-manylinux_2_24_x86_64
      py39-none-manylinux_2_23_x86_64
      py39-none-manylinux_2_22_x86_64
      py39-none-manylinux_2_21_x86_64
      py39-none-manylinux_2_20_x86_64
      py39-none-manylinux_2_19_x86_64
      py39-none-manylinux_2_18_x86_64
      py39-none-manylinux_2_17_x86_64
      py39-none-manylinux2014_x86_64
      py39-none-manylinux_2_16_x86_64
      py39-none-manylinux_2_15_x86_64
      py39-none-manylinux_2_14_x86_64
      py39-none-manylinux_2_13_x86_64
      py39-none-manylinux_2_12_x86_64
      py39-none-manylinux2010_x86_64
      py39-none-manylinux_2_11_x86_64
      py39-none-manylinux_2_10_x86_64
      py39-none-manylinux_2_9_x86_64
      py39-none-manylinux_2_8_x86_64
      py39-none-manylinux_2_7_x86_64
      py39-none-manylinux_2_6_x86_64
      py39-none-manylinux_2_5_x86_64
      py39-none-manylinux1_x86_64
      py39-none-linux_x86_64
      py38-none-manylinux_2_31_x86_64
      py38-none-manylinux_2_30_x86_64
      py38-none-manylinux_2_29_x86_64
      py38-none-manylinux_2_28_x86_64
      py38-none-manylinux_2_27_x86_64
      py38-none-manylinux_2_26_x86_64
      py38-none-manylinux_2_25_x86_64
      py38-none-manylinux_2_24_x86_64
      py38-none-manylinux_2_23_x86_64
      py38-none-manylinux_2_22_x86_64
      py38-none-manylinux_2_21_x86_64
      py38-none-manylinux_2_20_x86_64
      py38-none-manylinux_2_19_x86_64
      py38-none-manylinux_2_18_x86_64
      py38-none-manylinux_2_17_x86_64
      py38-none-manylinux2014_x86_64
      py38-none-manylinux_2_16_x86_64
      py38-none-manylinux_2_15_x86_64
      py38-none-manylinux_2_14_x86_64
      py38-none-manylinux_2_13_x86_64
      py38-none-manylinux_2_12_x86_64
      py38-none-manylinux2010_x86_64
      py38-none-manylinux_2_11_x86_64
      py38-none-manylinux_2_10_x86_64
      py38-none-manylinux_2_9_x86_64
      py38-none-manylinux_2_8_x86_64
      py38-none-manylinux_2_7_x86_64
      py38-none-manylinux_2_6_x86_64
      py38-none-manylinux_2_5_x86_64
      py38-none-manylinux1_x86_64
      py38-none-linux_x86_64
      py37-none-manylinux_2_31_x86_64
      py37-none-manylinux_2_30_x86_64
      py37-none-manylinux_2_29_x86_64
      py37-none-manylinux_2_28_x86_64
      py37-none-manylinux_2_27_x86_64
      py37-none-manylinux_2_26_x86_64
      py37-none-manylinux_2_25_x86_64
      py37-none-manylinux_2_24_x86_64
      py37-none-manylinux_2_23_x86_64
      py37-none-manylinux_2_22_x86_64
      py37-none-manylinux_2_21_x86_64
      py37-none-manylinux_2_20_x86_64
      py37-none-manylinux_2_19_x86_64
      py37-none-manylinux_2_18_x86_64
      py37-none-manylinux_2_17_x86_64
      py37-none-manylinux2014_x86_64
      py37-none-manylinux_2_16_x86_64
      py37-none-manylinux_2_15_x86_64
      py37-none-manylinux_2_14_x86_64
      py37-none-manylinux_2_13_x86_64
      py37-none-manylinux_2_12_x86_64
      py37-none-manylinux2010_x86_64
      py37-none-manylinux_2_11_x86_64
      py37-none-manylinux_2_10_x86_64
      py37-none-manylinux_2_9_x86_64
      py37-none-manylinux_2_8_x86_64
      py37-none-manylinux_2_7_x86_64
      py37-none-manylinux_2_6_x86_64
      py37-none-manylinux_2_5_x86_64
      py37-none-manylinux1_x86_64
      py37-none-linux_x86_64
      py36-none-manylinux_2_31_x86_64
      py36-none-manylinux_2_30_x86_64
      py36-none-manylinux_2_29_x86_64
      py36-none-manylinux_2_28_x86_64
      py36-none-manylinux_2_27_x86_64
      py36-none-manylinux_2_26_x86_64
      py36-none-manylinux_2_25_x86_64
      py36-none-manylinux_2_24_x86_64
      py36-none-manylinux_2_23_x86_64
      py36-none-manylinux_2_22_x86_64
      py36-none-manylinux_2_21_x86_64
      py36-none-manylinux_2_20_x86_64
      py36-none-manylinux_2_19_x86_64
      py36-none-manylinux_2_18_x86_64
      py36-none-manylinux_2_17_x86_64
      py36-none-manylinux2014_x86_64
      py36-none-manylinux_2_16_x86_64
      py36-none-manylinux_2_15_x86_64
      py36-none-manylinux_2_14_x86_64
      py36-none-manylinux_2_13_x86_64
      py36-none-manylinux_2_12_x86_64
      py36-none-manylinux2010_x86_64
      py36-none-manylinux_2_11_x86_64
      py36-none-manylinux_2_10_x86_64
      py36-none-manylinux_2_9_x86_64
      py36-none-manylinux_2_8_x86_64
      py36-none-manylinux_2_7_x86_64
      py36-none-manylinux_2_6_x86_64
      py36-none-manylinux_2_5_x86_64
      py36-none-manylinux1_x86_64
      py36-none-linux_x86_64
      py35-none-manylinux_2_31_x86_64
      py35-none-manylinux_2_30_x86_64
      py35-none-manylinux_2_29_x86_64
      py35-none-manylinux_2_28_x86_64
      py35-none-manylinux_2_27_x86_64
      py35-none-manylinux_2_26_x86_64
      py35-none-manylinux_2_25_x86_64
      py35-none-manylinux_2_24_x86_64
      py35-none-manylinux_2_23_x86_64
      py35-none-manylinux_2_22_x86_64
      py35-none-manylinux_2_21_x86_64
      py35-none-manylinux_2_20_x86_64
      py35-none-manylinux_2_19_x86_64
      py35-none-manylinux_2_18_x86_64
      py35-none-manylinux_2_17_x86_64
      py35-none-manylinux2014_x86_64
      py35-none-manylinux_2_16_x86_64
      py35-none-manylinux_2_15_x86_64
      py35-none-manylinux_2_14_x86_64
      py35-none-manylinux_2_13_x86_64
      py35-none-manylinux_2_12_x86_64
      py35-none-manylinux2010_x86_64
      py35-none-manylinux_2_11_x86_64
      py35-none-manylinux_2_10_x86_64
      py35-none-manylinux_2_9_x86_64
      py35-none-manylinux_2_8_x86_64
      py35-none-manylinux_2_7_x86_64
      py35-none-manylinux_2_6_x86_64
      py35-none-manylinux_2_5_x86_64
      py35-none-manylinux1_x86_64
      py35-none-linux_x86_64
      py34-none-manylinux_2_31_x86_64
      py34-none-manylinux_2_30_x86_64
      py34-none-manylinux_2_29_x86_64
      py34-none-manylinux_2_28_x86_64
      py34-none-manylinux_2_27_x86_64
      py34-none-manylinux_2_26_x86_64
      py34-none-manylinux_2_25_x86_64
      py34-none-manylinux_2_24_x86_64
      py34-none-manylinux_2_23_x86_64
      py34-none-manylinux_2_22_x86_64
      py34-none-manylinux_2_21_x86_64
      py34-none-manylinux_2_20_x86_64
      py34-none-manylinux_2_19_x86_64
      py34-none-manylinux_2_18_x86_64
      py34-none-manylinux_2_17_x86_64
      py34-none-manylinux2014_x86_64
      py34-none-manylinux_2_16_x86_64
      py34-none-manylinux_2_15_x86_64
      py34-none-manylinux_2_14_x86_64
      py34-none-manylinux_2_13_x86_64
      py34-none-manylinux_2_12_x86_64
      py34-none-manylinux2010_x86_64
      py34-none-manylinux_2_11_x86_64
      py34-none-manylinux_2_10_x86_64
      py34-none-manylinux_2_9_x86_64
      py34-none-manylinux_2_8_x86_64
      py34-none-manylinux_2_7_x86_64
      py34-none-manylinux_2_6_x86_64
      py34-none-manylinux_2_5_x86_64
      py34-none-manylinux1_x86_64
      py34-none-linux_x86_64
      py33-none-manylinux_2_31_x86_64
      py33-none-manylinux_2_30_x86_64
      py33-none-manylinux_2_29_x86_64
      py33-none-manylinux_2_28_x86_64
      py33-none-manylinux_2_27_x86_64
      py33-none-manylinux_2_26_x86_64
      py33-none-manylinux_2_25_x86_64
      py33-none-manylinux_2_24_x86_64
      py33-none-manylinux_2_23_x86_64
      py33-none-manylinux_2_22_x86_64
      py33-none-manylinux_2_21_x86_64
      py33-none-manylinux_2_20_x86_64
      py33-none-manylinux_2_19_x86_64
      py33-none-manylinux_2_18_x86_64
      py33-none-manylinux_2_17_x86_64
      py33-none-manylinux2014_x86_64
      py33-none-manylinux_2_16_x86_64
      py33-none-manylinux_2_15_x86_64
      py33-none-manylinux_2_14_x86_64
      py33-none-manylinux_2_13_x86_64
      py33-none-manylinux_2_12_x86_64
      py33-none-manylinux2010_x86_64
      py33-none-manylinux_2_11_x86_64
      py33-none-manylinux_2_10_x86_64
      py33-none-manylinux_2_9_x86_64
      py33-none-manylinux_2_8_x86_64
      py33-none-manylinux_2_7_x86_64
      py33-none-manylinux_2_6_x86_64
      py33-none-manylinux_2_5_x86_64
      py33-none-manylinux1_x86_64
      py33-none-linux_x86_64
      py32-none-manylinux_2_31_x86_64
      py32-none-manylinux_2_30_x86_64
      py32-none-manylinux_2_29_x86_64
      py32-none-manylinux_2_28_x86_64
      py32-none-manylinux_2_27_x86_64
      py32-none-manylinux_2_26_x86_64
      py32-none-manylinux_2_25_x86_64
      py32-none-manylinux_2_24_x86_64
      py32-none-manylinux_2_23_x86_64
      py32-none-manylinux_2_22_x86_64
      py32-none-manylinux_2_21_x86_64
      py32-none-manylinux_2_20_x86_64
      py32-none-manylinux_2_19_x86_64
      py32-none-manylinux_2_18_x86_64
      py32-none-manylinux_2_17_x86_64
      py32-none-manylinux2014_x86_64
      py32-none-manylinux_2_16_x86_64
      py32-none-manylinux_2_15_x86_64
      py32-none-manylinux_2_14_x86_64
      py32-none-manylinux_2_13_x86_64
      py32-none-manylinux_2_12_x86_64
      py32-none-manylinux2010_x86_64
      py32-none-manylinux_2_11_x86_64
      py32-none-manylinux_2_10_x86_64
      py32-none-manylinux_2_9_x86_64
      py32-none-manylinux_2_8_x86_64
      py32-none-manylinux_2_7_x86_64
      py32-none-manylinux_2_6_x86_64
      py32-none-manylinux_2_5_x86_64
      py32-none-manylinux1_x86_64
      py32-none-linux_x86_64
      py31-none-manylinux_2_31_x86_64
      py31-none-manylinux_2_30_x86_64
      py31-none-manylinux_2_29_x86_64
      py31-none-manylinux_2_28_x86_64
      py31-none-manylinux_2_27_x86_64
      py31-none-manylinux_2_26_x86_64
      py31-none-manylinux_2_25_x86_64
      py31-none-manylinux_2_24_x86_64
      py31-none-manylinux_2_23_x86_64
      py31-none-manylinux_2_22_x86_64
      py31-none-manylinux_2_21_x86_64
      py31-none-manylinux_2_20_x86_64
      py31-none-manylinux_2_19_x86_64
      py31-none-manylinux_2_18_x86_64
      py31-none-manylinux_2_17_x86_64
      py31-none-manylinux2014_x86_64
      py31-none-manylinux_2_16_x86_64
      py31-none-manylinux_2_15_x86_64
      py31-none-manylinux_2_14_x86_64
      py31-none-manylinux_2_13_x86_64
      py31-none-manylinux_2_12_x86_64
      py31-none-manylinux2010_x86_64
      py31-none-manylinux_2_11_x86_64
      py31-none-manylinux_2_10_x86_64
      py31-none-manylinux_2_9_x86_64
      py31-none-manylinux_2_8_x86_64
      py31-none-manylinux_2_7_x86_64
      py31-none-manylinux_2_6_x86_64
      py31-none-manylinux_2_5_x86_64
      py31-none-manylinux1_x86_64
      py31-none-linux_x86_64
      py30-none-manylinux_2_31_x86_64
      py30-none-manylinux_2_30_x86_64
      py30-none-manylinux_2_29_x86_64
      py30-none-manylinux_2_28_x86_64
      py30-none-manylinux_2_27_x86_64
      py30-none-manylinux_2_26_x86_64
      py30-none-manylinux_2_25_x86_64
      py30-none-manylinux_2_24_x86_64
      py30-none-manylinux_2_23_x86_64
      py30-none-manylinux_2_22_x86_64
      py30-none-manylinux_2_21_x86_64
      py30-none-manylinux_2_20_x86_64
      py30-none-manylinux_2_19_x86_64
      py30-none-manylinux_2_18_x86_64
      py30-none-manylinux_2_17_x86_64
      py30-none-manylinux2014_x86_64
      py30-none-manylinux_2_16_x86_64
      py30-none-manylinux_2_15_x86_64
      py30-none-manylinux_2_14_x86_64
      py30-none-manylinux_2_13_x86_64
      py30-none-manylinux_2_12_x86_64
      py30-none-manylinux2010_x86_64
      py30-none-manylinux_2_11_x86_64
      py30-none-manylinux_2_10_x86_64
      py30-none-manylinux_2_9_x86_64
      py30-none-manylinux_2_8_x86_64
      py30-none-manylinux_2_7_x86_64
      py30-none-manylinux_2_6_x86_64
      py30-none-manylinux_2_5_x86_64
      py30-none-manylinux1_x86_64
      py30-none-linux_x86_64
      cp310-none-any
      py310-none-any
      py3-none-any
      py39-none-any
      py38-none-any
      py37-none-any
      py36-none-any
      py35-none-any
      py34-none-any
      py33-none-any
      py32-none-any
      py31-none-any
      py30-none-any
    
  18. oittaa commented on Sep 1, 2021

    @oittaa

    Forcing google-crc32c==1.1.2 with google-cloud-storage fixed the issue for me as well.

  19. shihgianlee commented on Sep 1, 2021

    @shihgianlee

    @shihgianlee Can you arrange to upgrade pip before installing google-crc32?

    @tseaver pip3 install --upgrade pip before installing google-cloud-storage==1.38.0 works for me. Thanks!

  20. seantsb commented on Sep 1, 2021

    @seantsb

    this did not appear to work for me :/

    FROM alpine:3.13
    
    RUN apk add --no-cache postgresql-dev \
        && apk add --no-cache postgresql-client \
        && apk add --no-cache gcc \
        && apk add --no-cache g++ \
        && apk add --no-cache python3-dev \
        && apk add --no-cache cargo \
        && apk add --no-cache musl-dev
    
    # google-cloud-storage
    RUN apk add --no-cache libffi \
        && apk add --no-cache libffi-dev
    
    # Install python and pip
    RUN apk add --no-cache python3 \
        && python3 -m ensurepip \
        && pip3 install --upgrade pip setuptools
    
    RUN pip3 install google-crc32c==1.1.3
    
  21. tseaver commented on Sep 1, 2021

    @tseaver
    Contributor

    @seantsb The following Dockerfile works for me:

    $ cat Dockerfile
    FROM alpine:3.13
    
    RUN apk add --no-cache python3 \
        && apk add --no-cache python3-dev \
        && python3 -m ensurepip \
        && pip3 install --upgrade setuptools pip wheel
    
    RUN CRC32C_PURE_PYTHON=1 pip3 install google-crc32c==1.1.3
    
    $ docker run .
    ...
    Collecting google-crc32c==1.1.3
      Downloading google-crc32c-1.1.3.tar.gz (12 kB)
      Installing build dependencies: started
      Installing build dependencies: finished with status 'done'
      Getting requirements to build wheel: started
      Getting requirements to build wheel: finished with status 'done'
        Preparing wheel metadata: started
        Preparing wheel metadata: finished with status 'done'
    Building wheels for collected packages: google-crc32c
      Building wheel for google-crc32c (PEP 517): started
      Building wheel for google-crc32c (PEP 517): finished with status 'done'
      Created wheel for google-crc32c: filename=google_crc32c-1.1.3-py3-none-any.whl size=13003 sha256=576bc6e079c4d39d976c33f50628c06e416f41f4267081c280eb6943086d2a3f
      Stored in directory: /root/.cache/pip/wheels/d1/0d/df/00594dd92f619702b5f0f6e2bdf979be143b27137da3bd4334
    Successfully built google-crc32c
    Installing collected packages: google-crc32c
    Successfully installed google-crc32c-1.1.3
    ...

    We could maybe figure out how to get the underlying C library built, which would then allow creating the wheel without CRC32C_PURE_PYTHON (and run lots faster).

  22. tseaver commented on Sep 1, 2021

    @tseaver
    Contributor

    Hmm, seems to work:

    $ cat Dockerfile
    FROM alpine:3.13
    
    RUN apk add --no-cache gcc \
        && apk add --no-cache g++ \
        && apk add --no-cache musl-dev \
        && apk add --no-cache git \
        && apk add --no-cache make \
        && apk add --no-cache cmake
    
    RUN git clone https://github.com/google/crc32c \
        && cd crc32c \
        && git submodule update --init --recursive \
        && mkdir build \
        && cd build \
        && cmake \
            -DCMAKE_BUILD_TYPE=Release \
            -DCRC32C_BUILD_TESTS=no \
            -DCRC32C_BUILD_BENCHMARKS=no \
            -DBUILD_SHARED_LIBS=yes \
            .. \
        && make all install
    
    RUN apk add --no-cache python3 \
        && apk add --no-cache python3-dev \
        && python3 -m ensurepip \
        && pip3 install --upgrade setuptools pip wheel
    
    RUN pip3 install google-crc32c==1.1.3
    $ docker build .
    ...
    Step 5/5 : RUN pip3 install google-crc32c==1.1.3
     ---> Running in d8414f9fb28d
    Collecting google-crc32c==1.1.3
      Downloading google-crc32c-1.1.3.tar.gz (12 kB)
      Installing build dependencies: started
      Installing build dependencies: finished with status 'done'
      Getting requirements to build wheel: started
      Getting requirements to build wheel: finished with status 'done'
        Preparing wheel metadata: started
        Preparing wheel metadata: finished with status 'done'
    Building wheels for collected packages: google-crc32c
      Building wheel for google-crc32c (PEP 517): started
      Building wheel for google-crc32c (PEP 517): finished with status 'done'
      Created wheel for google-crc32c: filename=google_crc32c-1.1.3-cp38-cp38-linux_x86_64.whl size=20472 sha256=e2f54993aa1e2e0c609e39c4d969cedeb29eb5a93dc40ffc69e1aed3333a653f
      Stored in directory: /root/.cache/pip/wheels/d1/0d/df/00594dd92f619702b5f0f6e2bdf979be143b27137da3bd4334
    Successfully built google-crc32c
    Installing collected packages: google-crc32c
    Successfully installed google-crc32c-1.1.3
  23. tseaver commented on Sep 1, 2021

    @tseaver
    Contributor

    @oittaa We didn't have support for Linux wheels for Python 3.10-dev until recently (PR #78 isn't merged yet), and so your install failed trying to install the sdist. Unless you set CRC32C_PURE_PYTHON=1 in the environment, installing the sdist needs to have the headers / .so for the underlying crc32c library.

  24. seantsb commented on Sep 1, 2021

    @seantsb

    @tseaver you linked this same issue; did you mean to reference #85 ?

    If my system doesn't like 1.1.3, does using 1.1.2 instead just mean it's using the (slow) pure-python version? E.g. I might as well upgrade to 1.1.3 with CRC32C_PURE_PYTHON=1 for explicitness?

  25. tseaver commented on Sep 2, 2021

    @tseaver
    Contributor

    Here's my resolution as of today's 1.1.4 release:

    • Users who saw failures due to "old" pip (missing manylinux1_x86_64 builds for 1.1.3) should now be able to install 1.1.4 (PR fix: restore building 'manylinux1' wheels #87). Upgrading to current pip is still recommended, as the PyPA folks are dropping support for manylinux1 at the end of 2021.
    • Users who are on non-manylinux Linux (e.g., Alpine) can either set the CRC32C_PURE_PYTHON=1 flag when installing, or add the fragment I posted above to build the crc32c library in their Dockerfile before installing.
    • Users who couldn't install wheels because they run Python 3.10 should now have wheels (PR ci: build / test wheels for Python 3.10 [WIP] #78).
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

priority: p2Moderately-important priority. Fix may not be included in next release.status: investigatingThe issue is under investigation, which is determined to be non-trivial.type: bugError or flaw in code with unintended results or allowing sub-optimal usage patterns.

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions