pex-tool / pex

A tool for generating .pex (Python EXecutable) files, lock files and venvs.
https://docs.pex-tool.org/
Apache License 2.0
2.53k stars 258 forks source link

Multi-platform handling of sdist dependencies #645

Closed AuHau closed 5 years ago

AuHau commented 5 years ago

I am trying to build PEX for my CLI tool and I am running into a problem with my dependencies that are distributed as sdist (are downloaded as tar.gz files), while trying to build PEX targetting multiple platforms.

Currently, I want to create two PEX builds, one for macOS and one for Linux.

If I am reading this right, PEX is trying to build the sdist into wheel and then include that into the PEX environment. But the wheel is created for the current platform that the PEX build is happening on, therefore the PEX's build process fails because of the multiple platform's constraints.

pex version: 1.6.0
Python version: 3.6.5
pip version: 18.1
build platform: macosx_10_14
git repo: https://github.com/auhau/gitrack/

$ pex -vvvvvv --index-url=https://test.pypi.org/simple/ --python=python3 -r requirements.txt -o ./build/gitrack.macosx_x86_64 --platform macosx_10_12_x86_64 --platform macosx_10_13_x86_64 --platform macosx_10_14_x86_64 -e gitrack.main gitrack setuptools

pex: Constructed RequestsContext context <pex.http.RequestsContext object at 0x101656c50>
pex: Constructed RequestsContext context <pex.http.RequestsContext object at 0x1016ae828>
pex: crawling link i=0 link=Link('file:///Users/c5272397/.pex/build') follow_links=False
pex: crawling link i=0 link=Link('https://pypi.org/simple/gitrack/') follow_links=False
pex: crawling link i=1 link=Link('https://test.pypi.org/simple/gitrack/') follow_links=False
pex: Constructed RequestsContext context <pex.http.RequestsContext object at 0x1016ae860>
pex: crawling link i=0 link=Link('https://pypi.org/simple/setuptools/') follow_links=False
pex: crawling link i=1 link=Link('https://test.pypi.org/simple/setuptools/') follow_links=False
pex: Constructed RequestsContext context <pex.http.RequestsContext object at 0x1016ae7b8>
pex: crawling link i=0 link=Link('https://pypi.org/simple/gitpython/') follow_links=False
pex: crawling link i=1 link=Link('https://test.pypi.org/simple/gitpython/') follow_links=False
pex: Constructed RequestsContext context <pex.http.RequestsContext object at 0x1016ae7b8>
pex: crawling link i=0 link=Link('https://pypi.org/simple/click/') follow_links=False
pex: crawling link i=1 link=Link('https://test.pypi.org/simple/click/') follow_links=False
pex: Constructed RequestsContext context <pex.http.RequestsContext object at 0x1016ae710>
pex: crawling link i=0 link=Link('https://pypi.org/simple/appdirs/') follow_links=False
pex: crawling link i=1 link=Link('https://test.pypi.org/simple/appdirs/') follow_links=False
pex: Constructed RequestsContext context <pex.http.RequestsContext object at 0x1016aebe0>
pex: crawling link i=0 link=Link('https://pypi.org/simple/togglcli/') follow_links=False
pex: crawling link i=1 link=Link('https://test.pypi.org/simple/togglcli/') follow_links=False
pex: Constructed RequestsContext context <pex.http.RequestsContext object at 0x1021b09b0>
pex: crawling link i=0 link=Link('https://pypi.org/simple/inquirer/') follow_links=False
pex: crawling link i=1 link=Link('https://test.pypi.org/simple/inquirer/') follow_links=False
pex: Constructed RequestsContext context <pex.http.RequestsContext object at 0x1021cf6a0>
pex: crawling link i=0 link=Link('https://pypi.org/simple/click-completion/') follow_links=False
pex: crawling link i=1 link=Link('https://test.pypi.org/simple/click-completion/') follow_links=False
pex: Constructed RequestsContext context <pex.http.RequestsContext object at 0x1021d9fd0>
pex: crawling link i=0 link=Link('https://pypi.org/simple/pbr/') follow_links=False
pex: crawling link i=1 link=Link('https://test.pypi.org/simple/pbr/') follow_links=False
pex: Constructed RequestsContext context <pex.http.RequestsContext object at 0x1021d9f60>
pex: crawling link i=0 link=Link('https://pypi.org/simple/requests/') follow_links=False
pex: crawling link i=1 link=Link('https://test.pypi.org/simple/requests/') follow_links=False
pex: Building pex :: Resolving distributions :: Fetching file:///Users/c5272397/.pex/build/gitrack-0.1.8-py2.py3-none-any.whl :: Fetching file:///Users/c5272397/.pex/build/gitrpex: Building pex :: Resolving distributions :: Translating /private/var/folders/gm/7q4dg34d4mn3hpclqqyg733c0000gn/T/tmpwsc721az/gitrack-0.1.8-py2.py3-none-any.whl into distribpex: Building pex :: Resolving distributions :: Fetching file:///Users/c5272397/.pex/build/setuptools-40.6.3-py2.py3-none-any.whlpex: Building pex :: Resolving distributions :: Fetching file:///Users/c5272397/.pex/build/setuptools-40.6.3-py2.py3-none-any.whl :: Fetching file:///Users/c5272397/.pex/build/pex: Building pex :: Resolving distributions :: Translating /private/var/folders/gm/7q4dg34d4mn3hpclqqyg733c0000gn/T/tmpqpay9e_g/setuptools-40.6.3-py2.py3-none-any.whl into dispex: Building pex :: Resolving distributions :: Fetching file:///Users/c5272397/.pex/build/GitPython-2.1.11-py2.py3-none-any.whlpex: Building pex :: Resolving distributions :: Fetching file:///Users/c5272397/.pex/build/GitPython-2.1.11-py2.py3-none-any.whl :: Fetching file:///Users/c5272397/.pex/build/Gpex: Building pex :: Resolving distributions :: Translating /private/var/folders/gm/7q4dg34d4mn3hpclqqyg733c0000gn/T/tmp1rcpb1nd/GitPython-2.1.11-py2.py3-none-any.whl into distpex: Building pex :: Resolving distributions :: Fetching file:///Users/c5272397/.pex/build/Click-7.0-py2.py3-none-any.whlpex: Building pex :: Resolving distributions :: Fetching file:///Users/c5272397/.pex/build/Click-7.0-py2.py3-none-any.whl :: Fetching file:///Users/c5272397/.pex/build/Click-7.pex: Building pex :: Resolving distributions :: Translating /private/var/folders/gm/7q4dg34d4mn3hpclqqyg733c0000gn/T/tmpslimzzd4/Click-7.0-py2.py3-none-any.whl into distributiopex: Building pex :: Resolving distributions :: Fetching file:///Users/c5272397/.pex/build/appdirs-1.4.3-py2.py3-none-any.whlpex: Building pex :: Resolving distributions :: Fetching file:///Users/c5272397/.pex/build/appdirs-1.4.3-py2.py3-none-any.whl :: Fetching file:///Users/c5272397/.pex/build/appdpex: Building pex :: Resolving distributions :: Translating /private/var/folders/gm/7q4dg34d4mn3hpclqqyg733c0000gn/T/tmpn95_ivc2/appdirs-1.4.3-py2.py3-none-any.whl into distribpex: Building pex :: Resolving distributions :: Fetching file:///Users/c5272397/.pex/build/togglCli-2.0.0.0b3-py2.py3-none-any.whlpex: Building pex :: Resolving distributions :: Fetching file:///Users/c5272397/.pex/build/togglCli-2.0.0.0b3-py2.py3-none-any.whl :: Fetching file:///Users/c5272397/.pex/buildpex: Building pex :: Resolving distributions :: Translating /private/var/folders/gm/7q4dg34d4mn3hpclqqyg733c0000gn/T/tmptp9h8kiq/togglCli-2.0.0.0b3-py2.py3-none-any.whl into dipex: Building pex :: Resolving distributions :: Fetching file:///Users/c5272397/.pex/build/inquirer-2.5.1-py2.py3-none-any.whlpex: Building pex :: Resolving distributions :: Fetching file:///Users/c5272397/.pex/build/inquirer-2.5.1-py2.py3-none-any.whl :: Fetching file:///Users/c5272397/.pex/build/inqpex: Building pex :: Resolving distributions :: Translating /private/var/folders/gm/7q4dg34d4mn3hpclqqyg733c0000gn/T/tmp31mwu68d/inquirer-2.5.1-py2.py3-none-any.whl into distripex: Building pex :: Resolving distributions :: Fetching file:///Users/c5272397/.pex/build/click_completion-0.5.0-py3-none-any.whlpex: Building pex :: Resolving distributions :: Fetching file:///Users/c5272397/.pex/build/click_completion-0.5.0-py3-none-any.whl :: Fetching file:///Users/c5272397/.pex/buildpex: Building pex :: Resolving distributions :: Translating /private/var/folders/gm/7q4dg34d4mn3hpclqqyg733c0000gn/T/tmpv6w6rmn6/click_completion-0.5.0-py3-none-any.whl into dipex: Building pex :: Resolving distributions :: Fetching file:///Users/c5272397/.pex/build/pbr-5.1.1-py2.py3-none-any.whlpex: Building pex :: Resolving distributions :: Fetching file:///Users/c5272397/.pex/build/pbr-5.1.1-py2.py3-none-any.whl :: Fetching file:///Users/c5272397/.pex/build/pbr-5.1.pex: Building pex :: Resolving distributions :: Translating /private/var/folders/gm/7q4dg34d4mn3hpclqqyg733c0000gn/T/tmpiqr8sczv/pbr-5.1.1-py2.py3-none-any.whl into distributiopex: Building pex :: Resolving distributions :: Fetching file:///Users/c5272397/.pex/build/requests-2.21.0-py2.py3-none-any.whlpex: Building pex :: Resolving distributions :: Fetching file:///Users/c5272397/.pex/build/requests-2.21.0-py2.py3-none-any.whl :: Fetching file:///Users/c5272397/.pex/build/repex: Building pex :: Resolving distributions :: Translating /private/var/folders/gm/7q4dg34d4mn3hpclqqyg733c0000gn/T/tmpzzaj_qqw/requests-2.21.0-py2.py3-none-any.whl into distrpex: Constructed RequestsContext context <pex.http.RequestsContext object at 0x1016d6630>
pex: crawling link i=0 link=Link('https://pypi.org/simple/gitdb2/') follow_links=False
pex: crawling link i=1 link=Link('https://test.pypi.org/simple/gitdb2/') follow_links=False
pex: Constructed RequestsContext context <pex.http.RequestsContext object at 0x1016d6630>
pex: Constructed RequestsContext context <pex.http.RequestsContext object at 0x1016aed30>
pex: Constructed RequestsContext context <pex.http.RequestsContext object at 0x1016aed30>
pex: Constructed RequestsContext context <pex.http.RequestsContext object at 0x1016ae898>
pex: crawling link i=0 link=Link('https://pypi.org/simple/pendulum/') follow_links=False
pex: crawling link i=1 link=Link('https://test.pypi.org/simple/pendulum/') follow_links=False
pex: Constructed RequestsContext context <pex.http.RequestsContext object at 0x1016aebe0>
pex: crawling link i=0 link=Link('https://pypi.org/simple/validate-email/') follow_links=False
pex: crawling link i=1 link=Link('https://test.pypi.org/simple/validate-email/') follow_links=False
pex: Constructed RequestsContext context <pex.http.RequestsContext object at 0x102386128>
pex: Constructed RequestsContext context <pex.http.RequestsContext object at 0x102386128>
pex: crawling link i=0 link=Link('https://pypi.org/simple/ptable/') follow_links=False
pex: crawling link i=1 link=Link('https://test.pypi.org/simple/ptable/') follow_links=False
pex: Constructed RequestsContext context <pex.http.RequestsContext object at 0x102386128>
pex: Constructed RequestsContext context <pex.http.RequestsContext object at 0x102386978>
pex: crawling link i=0 link=Link('https://pypi.org/simple/blessings/') follow_links=False
pex: crawling link i=1 link=Link('https://test.pypi.org/simple/blessings/') follow_links=False
pex: Constructed RequestsContext context <pex.http.RequestsContext object at 0x10243b940>
pex: crawling link i=0 link=Link('https://pypi.org/simple/readchar/') follow_links=False
pex: crawling link i=1 link=Link('https://test.pypi.org/simple/readchar/') follow_links=False
pex: Constructed RequestsContext context <pex.http.RequestsContext object at 0x102443b00>
pex: crawling link i=0 link=Link('https://pypi.org/simple/shellingham/') follow_links=False
pex: crawling link i=1 link=Link('https://test.pypi.org/simple/shellingham/') follow_links=False
pex: Constructed RequestsContext context <pex.http.RequestsContext object at 0x102443b00>
pex: crawling link i=0 link=Link('https://pypi.org/simple/six/') follow_links=False
pex: crawling link i=1 link=Link('https://test.pypi.org/simple/six/') follow_links=False
pex: Constructed RequestsContext context <pex.http.RequestsContext object at 0x102386cf8>
pex: crawling link i=0 link=Link('https://pypi.org/simple/jinja2/') follow_links=False
pex: crawling link i=1 link=Link('https://test.pypi.org/simple/jinja2/') follow_links=False
pex: Constructed RequestsContext context <pex.http.RequestsContext object at 0x10243b7b8>
pex: Constructed RequestsContext context <pex.http.RequestsContext object at 0x102454be0>
pex: crawling link i=0 link=Link('https://pypi.org/simple/urllib3/') follow_links=False
pex: crawling link i=1 link=Link('https://test.pypi.org/simple/urllib3/') follow_links=False
pex: Constructed RequestsContext context <pex.http.RequestsContext object at 0x10243b9b0>
pex: crawling link i=0 link=Link('https://pypi.org/simple/certifi/') follow_links=False
pex: crawling link i=1 link=Link('https://test.pypi.org/simple/certifi/') follow_links=False
pex: Constructed RequestsContext context <pex.http.RequestsContext object at 0x102443b00>
pex: crawling link i=0 link=Link('https://pypi.org/simple/idna/') follow_links=False
pex: crawling link i=1 link=Link('https://test.pypi.org/simple/idna/') follow_links=False
pex: Constructed RequestsContext context <pex.http.RequestsContext object at 0x1024a09e8>
pex: crawling link i=0 link=Link('https://pypi.org/simple/chardet/') follow_links=False
pex: crawling link i=1 link=Link('https://test.pypi.org/simple/chardet/') follow_links=False
pex: Building pex :: Resolving distributions :: Fetching file:///Users/c5272397/.pex/build/gitdb2-2.0.5-py2.py3-none-any.whl :: Fetching file:///Users/c5272397/.pex/build/gitdbpex: Building pex :: Resolving distributions :: Translating /private/var/folders/gm/7q4dg34d4mn3hpclqqyg733c0000gn/T/tmpgd0duw48/gitdb2-2.0.5-py2.py3-none-any.whl into distribupex: Building pex :: Resolving distributions :: Fetching file:///Users/c5272397/.pex/build/pendulum-2.0.4.tar.gzpex: Building pex :: Resolving distributions :: Fetching file:///Users/c5272397/.pex/build/pendulum-2.0.4.tar.gz :: Fetching file:///Users/c5272397/.pex/build/pendulum-2.0.4.tapex: Building pex :: Resolving distributions :: Translating /private/var/folders/gm/7q4dg34d4mn3hpclqqyg733c0000gn/T/tmpbr6j6fz6/pendulum-2.0.4.tar.gz into distributionpex: Building pex :: Resolving distributions :: Translating /private/var/folders/gm/7q4dg34d4mn3hpclqqyg733c0000gn/T/tmpbr6j6fz6/pendulum-2.0.4.tar.gz into distribution :: Packpex: Building pex :: Resolving distributions :: Translating /private/var/folders/gm/7q4dg34d4mn3hpclqqyg733c0000gn/T/tmpbr6j6fz6/pendulum-2.0.4.tar.gz into distribution :: Packpex: Building pex :: Resolving distributions :: Translating /private/var/folders/gm/7q4dg34d4mn3hpclqqyg733c0000gn/T/tmpbr6j6fz6/pendulum-2.0.4.tar.gz into distribution :: Packaging pendulum :: Installing /var/folders/gm/7q4dg34d4mn3hpclqqyg733c0000gn/T/tmpra7l2gip :: Isolating pex in Chroot(/var/folders/gm/7q4dg34d4mn3hpclqqyg733c0000gn/T/tmpirvz8gkpex: Target package WheelPackage('file:///private/var/folders/gm/7q4dg34d4mn3hpclqqyg733c0000gn/T/tmpxeqgoj11/pendulum-2.0.4-cp36-cp36m-macosx_10_13_x86_64.whl') is not compatible with [('py3', 'none', 'macosx_10_11_fat64'), ('cp36', 'cp36m', 'macosx_10_4_fat32'), ('cp36', 'abi3', 'macosx_10_7_x86_64'), ('cp36', 'cp36d', 'macosx_10_1_fat32'), ('cp36', 'cp36dmu', 'macosx_10_6_universal'), ('cp36', 'none', 'macosx_10_5_x86_64'), ('cp36', 'cp36m', 'macosx_10_6_fat64'), ('cp36', 'cp36dm', 'macosx_10_4_universal'), ('cp36', 'cp36u', 'macosx_10_11_universal'), ('cp36', 'cp36u', 'macosx_10_5_fat32'), ('cp36', 'abi3', 'macosx_10_10_x86_64'), ('py3', 'none', 'macosx_10_2_fat32'), ('cp36', 'abi3', 'macosx_10_9_universal'), ('cp36', 'cp36dm', 'macosx_10_1_fat32'), ('py3', 'none', 'macosx_10_9_x86_64'), ('cp36', 'abi3', 'macosx_10_4_x86_64'), ('cp36', 'abi3', 'macosx_10_4_intel'), ('cp36', 'cp36mu', 'macosx_10_9_fat64'), ('cp36', 'abi3', 'macosx_10_5_x86_64'), ('cp36', 'cp36dm', 'macosx_10_8_intel'), ('cp36', 'abi3', 'macosx_10_5_fat32'), ('cp36', 'cp36dmu', 'macosx_10_10_fat64'), ('cp36', 'cp36u', 'macosx_10_8_fat32'), ('cp36', 'cp36u', 'macosx_10_7_fat64'), ('cp36', 'abi3', 'macosx_10_7_fat32'), ('cp36', 'cp36mu', 'macosx_10_4_universal'), ('py3', 'none', 'macosx_10_11_intel'), ('py3', 'none', 'macosx_10_10_fat32'), ('cp36', 'cp36u', 'macosx_10_11_fat64'), ('cp36', 'abi3', 'macosx_10_12_intel'), ('py3', 'none', 'macosx_10_10_fat64'), ('cp36', 'abi3', 'macosx_10_9_x86_64'), ('cp36', 'cp36m', 'macosx_10_3_fat32'), ('cp36', 'abi3', 'macosx_10_4_fat64'), ('cp36', 'abi3','macosx_10_8_fat32'), ('cp36', 'abi3', 'macosx_10_7_fat64'), ('cp36', 'cp36dm', 'macosx_10_12_fat64'), ('py3', 'none', 'macosx_10_12_universal'), ('cp36', 'cp36dmu', 'macosx_10_12_fat64'), ('cp36', 'cp36u', 'macosx_10_7_fat32'), ('cp36', 'none', 'macosx_10_12_intel'), ('cp36', 'cp36u', 'macosx_10_9_x86_64'), ('cp36', 'abi3', 'macosx_10_11_fat64'), ('cp36', 'cp36u', 'macosx_10_12_intel'), ('py3', 'none', 'macosx_10_10_intel'), ('py3', 'none', 'macosx_10_5_universal'), ('cp36', 'cp36dmu', 'macosx_10_0_universal'), ('cp36', 'none', 'macosx_10_11_fat32'), ('cp36', 'abi3', 'macosx_10_6_fat64'), ('cp36', 'cp36u', 'macosx_10_4_fat64'), ('cp36', 'cp36mu', 'macosx_10_0_universal'), ('cp36', 'cp36dmu', 'macosx_10_8_universal'), ('cp36', 'cp36d', 'macosx_10_6_intel'), ('cp36', 'cp36d', 'macosx_10_7_intel'), ('cp36', 'abi3', 'macosx_10_2_fat32'), ('cp36', 'cp36mu', 'macosx_10_8_intel'), ('py3', 'none', 'macosx_10_9_universal'), ('cp36', 'cp36dm', 'macosx_10_9_fat64'), ('cp36', 'abi3', 'macosx_10_12_universal'), ('cp36', 'cp36dmu', 'macosx_10_8_intel'), ('cp36', 'cp36d', 'macosx_10_12_fat64'), ('py3', 'none', 'macosx_10_12_x86_64'), ('cp36', 'cp36d', 'macosx_10_6_universal'), ('cp36', 'cp36dmu', 'macosx_10_1_fat32'), ('cp36', 'cp36d', 'macosx_10_7_universal'), ('cp36', 'cp36u', 'macosx_10_6_fat64'), ('cp36', 'none', 'macosx_10_7_x86_64'), ('cp36', 'none', 'macosx_10_10_fat64'), ('cp36', 'cp36mu', 'macosx_10_4_x86_64'), ('cp36', 'none', 'macosx_10_10_intel'), ('cp36', 'none', 'macosx_10_6_fat64'), ('cp36', 'abi3', 'macosx_10_4_fat32'), ('cp36', 'cp36dmu', 'macosx_10_11_fat32'), ('py3', 'none', 'macosx_10_12_intel'), ('cp36', 'none', 'macosx_10_2_universal'), ('cp36', 'cp36m', 'macosx_10_12_intel'), ('cp36', 'cp36d', 'macosx_10_4_fat32'), ('cp36', 'cp36d', 'macosx_10_11_universal'), ('cp36', 'cp36mu', 'macosx_10_8_universal'), ('cp36', 'cp36d', 'macosx_10_10_universal'), ('cp36', 'cp36d', 'macosx_10_10_fat64'), ('cp36', 'abi3', 'macosx_10_6_intel'), ('cp36', 'cp36m', 'macosx_10_7_fat32'), ('cp36', 'cp36d', 'macosx_10_6_fat64'), ('cp36', 'cp36u', 'macosx_10_7_universal'), ('cp36', 'cp36dm','macosx_10_6_universal'), ('cp36', 'cp36dm', 'macosx_10_12_universal'), ('cp36', 'none', 'macosx_10_10_x86_64'), ('cp36', 'cp36d', 'macosx_10_9_intel'), ('cp36', 'cp36dm', 'macosx_10_11_universal'), ('cp36', 'none', 'macosx_10_4_fat32'), ('cp36', 'cp36mu', 'macosx_10_2_universal'), ('cp36', 'none', 'macosx_10_10_universal'), ('cp36', 'cp36m', 'macosx_10_4_intel'), ('cp36', 'cp36dm', 'macosx_10_8_fat64'), ('cp36', 'cp36dm', 'macosx_10_6_fat64'), ('cp36', 'cp36dm', 'macosx_10_10_fat32'), ('cp36', 'cp36u', 'macosx_10_3_fat32'), ('cp36', 'abi3', 'macosx_10_7_universal'), ('cp36', 'none', 'macosx_10_9_intel'), ('cp36', 'cp36u', 'macosx_10_6_intel'), ('py3', 'none', 'macosx_10_5_fat32'), ('cp36', 'cp36dmu', 'macosx_10_10_x86_64'), ('cp36', 'cp36d', 'macosx_10_9_x86_64'), ('cp36', 'none', 'macosx_10_8_fat64'), ('cp36', 'cp36d', 'macosx_10_2_fat32'), ('cp36', 'cp36dm', 'macosx_10_5_intel'), ('cp36', 'cp36dm', 'macosx_10_11_intel'), ('py3', 'none', 'macosx_10_1_fat32'), ('cp36', 'cp36d', 'macosx_10_8_fat64'), ('cp36', 'cp36dm', 'macosx_10_5_fat32'), ('cp36', 'cp36mu', 'macosx_10_7_x86_64'), ('cp36', 'abi3', 'macosx_10_11_universal'), ('cp36', 'cp36d', 'macosx_10_11_fat64'), ('cp36', 'none', 'macosx_10_1_fat32'), ('cp36','cp36d', 'macosx_10_5_x86_64'), ('cp36', 'cp36d', 'macosx_10_8_fat32'), ('cp36', 'cp36d', 'macosx_10_7_fat64'), ('cp36', 'cp36dmu', 'macosx_10_9_fat32'), ('cp36', 'cp36dmu', 'macosx_10_7_x86_64'), ('cp36', 'cp36mu', 'macosx_10_8_x86_64'), ('cp36', 'cp36mu', 'macosx_10_10_x86_64'), ('py3', 'none', 'macosx_10_8_fat64'), ('cp36', 'cp36u', 'macosx_10_10_fat32'), ('cp36', 'cp36u', 'macosx_10_4_intel'), ('cp36', 'cp36dm', 'macosx_10_9_x86_64'), ('cp36', 'cp36dm', 'macosx_10_11_x86_64'), ('cp36', 'cp36dmu', 'macosx_10_8_fat32'),('cp36', 'cp36dmu', 'macosx_10_7_fat64'), ('cp36', 'cp36d', 'macosx_10_5_intel'), ('cp36', 'abi3', 'macosx_10_12_fat64'), ('cp36', 'cp36m', 'macosx_10_6_intel'), ('cp36', 'cp36m', 'macosx_10_7_intel'), ('cp36', 'abi3', 'macosx_10_11_intel'), ('cp36', 'abi3', 'macosx_10_10_fat32'), ('cp36', 'cp36dmu', 'macosx_10_11_fat64'), ('cp36', 'cp36dm', 'macosx_10_11_fat64'), ('cp36', 'abi3', 'macosx_10_10_fat64'), ('cp36', 'cp36dmu', 'macosx_10_5_fat64'), ('cp36', 'cp36mu', 'macosx_10_3_fat32'), ('cp36', 'cp36dm', 'macosx_10_9_fat32'), ('cp36', 'cp36dm', 'macosx_10_8_x86_64'), ('cp36', 'cp36m', 'macosx_10_7_universal'), ('cp36', 'cp36dmu', 'macosx_10_7_fat32'), ('cp36', 'cp36dmu', 'macosx_10_2_universal'), ('cp36', 'cp36u', 'macosx_10_12_fat64'), ('cp36', 'cp36dmu', 'macosx_10_6_fat32'), ('cp36', 'cp36dmu', 'macosx_10_12_intel'), ('cp36', 'cp36dmu', 'macosx_10_9_x86_64'), ('cp36', 'cp36mu', 'macosx_10_11_x86_64'), ('cp36', 'cp36u', 'macosx_10_5_x86_64'), ('py3', 'none', 'macosx_10_5_fat64'), ('py3', 'none', 'macosx_10_1_universal'), ('cp36', 'cp36dmu', 'macosx_10_10_intel'), ('py3', 'none', 'macosx_10_4_intel'), ('cp36', 'cp36mu', 'macosx_10_4_fat64'), ('py3', 'none', 'macosx_10_4_fat32'), ('cp36', 'cp36d', 'macosx_10_6_x86_64'), ('cp36', 'cp36d', 'macosx_10_12_intel'), ('cp36', 'cp36mu', 'macosx_10_11_fat32'), ('cp36', 'cp36d', 'macosx_10_7_fat32'), ('cp36', 'cp36mu', 'macosx_10_3_universal'), ('cp36', 'cp36u', 'macosx_10_6_x86_64'), ('cp36', 'cp36d', 'macosx_10_9_fat32'), ('cp36', 'none', 'macosx_10_8_intel'), ('cp36', 'cp36u', 'macosx_10_2_fat32'), ('cp36', 'none','macosx_10_6_x86_64'), ('cp36', 'cp36d', 'macosx_10_3_fat32'), ('cp36', 'cp36dmu', 'macosx_10_4_fat32'), ('cp36', 'cp36mu', 'macosx_10_9_intel'), ('cp36', 'cp36dmu', 'macosx_10_6_fat64'), ('cp36', 'none', 'macosx_10_7_intel'), ('cp36', 'cp36dm', 'macosx_10_9_universal'), ('cp36', 'cp36dmu', 'macosx_10_8_fat64'), ('cp36', 'cp36mu', 'macosx_10_6_fat64'), ('cp36', 'none', 'macosx_10_7_fat32'), ('cp36', 'cp36u', 'macosx_10_9_intel'), ('cp36', 'none', 'macosx_10_9_fat32'), ('cp36', 'cp36dm', 'macosx_10_3_fat32'), ('cp36', 'cp36mu', 'macosx_10_10_universal'), ('py3', 'none', 'macosx_10_12_fat64'), ('cp36', 'cp36dmu', 'macosx_10_12_universal'), ('cp36', 'abi3', 'macosx_10_8_intel'), ('cp36', 'cp36mu','macosx_10_2_fat32'), ('cp36', 'cp36mu', 'macosx_10_6_x86_64'), ('cp36', 'cp36dm', 'macosx_10_4_intel'), ('cp36', 'cp36d', 'macosx_10_9_universal'), ('cp36', 'cp36mu', 'macosx_10_12_universal'), ('cp36', 'cp36u', 'macosx_10_10_universal'), ('cp36', 'cp36dmu', 'macosx_10_6_x86_64'), ('cp36', 'cp36dm', 'macosx_10_10_intel'), ('cp36', 'cp36dm', 'macosx_10_5_fat64'), ('cp36', 'cp36d', 'macosx_10_4_x86_64'), ('cp36', 'cp36u', 'macosx_10_1_universal'), ('cp36', 'cp36d', 'macosx_10_10_intel'), ('cp36', 'cp36dmu', 'macosx_10_9_intel'), ('cp36', 'cp36mu', 'macosx_10_5_x86_64'), ('cp36', 'cp36m', 'macosx_10_12_fat64'), ('py3', 'none', 'macosx_10_9_fat32'), ('cp36', 'cp36dmu', 'macosx_10_3_universal'), ('cp36', 'cp36d', 'macosx_10_2_universal'), ('py3', 'none', 'macosx_10_7_fat32'), ('cp36', 'cp36u', 'macosx_10_12_universal'), ('cp36', 'none', 'macosx_10_11_universal'), ('cp36', 'none', 'macosx_10_5_fat64'), ('cp36', 'cp36m', 'macosx_10_10_fat32'), ('cp36', 'cp36dmu', 'macosx_10_10_universal'), ('cp36', 'cp36m', 'macosx_10_11_intel'), ('cp36', 'cp36m', 'macosx_10_5_x86_64'), ('cp36', 'cp36dm', 'macosx_10_11_fat32'), ('cp36', 'cp36mu', 'macosx_10_10_fat64'), ('cp36', 'abi3', 'macosx_10_3_fat32'), ('cp36', 'cp36d', 'macosx_10_5_fat64'), ('cp36', 'none', 'macosx_10_12_universal'), ('cp36', 'cp36dmu', 'macosx_10_9_fat64'), ('cp36', 'cp36mu', 'macosx_10_9_x86_64'), ('cp36', 'cp36u', 'macosx_10_7_intel'), ('cp36', 'cp36mu', 'macosx_10_6_fat32'), ('cp36', 'cp36m', 'macosx_10_10_universal'), ('py3', 'none', 'macosx_10_12_fat32'), ('cp36', 'cp36dm', 'macosx_10_0_universal'), ('cp36', 'cp36m', 'macosx_10_10_fat64'), ('cp36', 'cp36dm', 'macosx_10_7_x86_64'), ('cp36', 'cp36dmu', 'macosx_10_5_intel'), ('cp36', 'none', 'macosx_10_9_x86_64'), ('cp36', 'cp36mu', 'macosx_10_11_fat64'), ('cp36', 'cp36m', 'macosx_10_9_intel'), ('cp36', 'cp36dm', 'macosx_10_10_x86_64'), ('cp36', 'cp36dmu', 'macosx_10_7_intel'), ('cp36', 'cp36u', 'macosx_10_9_fat32'), ('cp36', 'cp36dm', 'macosx_10_8_universal'), ('cp36', 'cp36dmu', 'macosx_10_11_intel'), ('py3', 'none', 'macosx_10_0_fat32'), ('py3', 'none', 'macosx_10_5_intel'), ('cp36', 'cp36dmu', 'macosx_10_10_fat32'), ('cp36', 'cp36mu', 'macosx_10_11_universal'), ('cp36', 'none', 'macosx_10_11_fat64'), ('cp36', 'none', 'macosx_10_8_fat32'), ('cp36', 'none', 'macosx_10_7_fat64'), ('cp36', 'cp36dmu', 'macosx_10_11_universal'), ('cp36', 'abi3', 'macosx_10_8_x86_64'), ('cp36', 'cp36m', 'macosx_10_6_x86_64'), ('py3', 'none', 'macosx_10_8_fat32'), ('py3', 'none', 'macosx_10_7_fat64'), ('cp36', 'cp36m', 'macosx_10_2_fat32'), ('cp36', 'abi3', 'macosx_10_9_fat32'), ('cp36', 'cp36m', 'macosx_10_12_universal'), ('cp36', 'none', 'any'), ('py3', 'none', 'any'), ('cp36', 'none', 'macosx_10_5_intel'), ('cp36', 'cp36u', 'macosx_10_11_intel'), ('cp36', 'cp36m', 'macosx_10_1_universal'), ('cp36', 'cp36m', 'macosx_10_8_fat64'), ('cp36', 'cp36mu', 'macosx_10_6_universal'), ('cp36', 'cp36u', 'macosx_10_12_fat32'), ('cp36', 'abi3', 'macosx_10_0_fat32'), ('cp36', 'cp36mu', 'macosx_10_11_intel'), ('cp36', 'cp36u', 'macosx_10_10_fat64'), ('cp36', 'abi3', 'macosx_10_5_universal'), ('cp36', 'cp36mu', 'macosx_10_10_fat32'), ('cp36','cp36u', 'macosx_10_8_x86_64'), ('cp36', 'cp36u', 'macosx_10_2_universal'), ('cp36', 'cp36mu', 'macosx_10_7_intel'), ('cp36', 'none', 'macosx_10_6_fat32'), ('cp36', 'cp36d', 'macosx_10_4_universal'), ('cp36', 'cp36mu', 'macosx_10_6_intel'), ('cp36', 'cp36u', 'macosx_10_0_fat32'), ('cp36', 'abi3', 'macosx_10_5_fat64'), ('cp36', 'abi3', 'macosx_10_12_fat32'), ('cp36', 'cp36m', 'macosx_10_5_intel'), ('cp36', 'none', 'macosx_10_8_x86_64'), ('cp36', 'cp36u', 'macosx_10_10_intel'), ('py3', 'none', 'macosx_10_10_x86_64'), ('cp36', 'abi3', 'macosx_10_2_universal'), ('cp36', 'cp36u', 'macosx_10_5_universal'), ('cp36', 'cp36m', 'macosx_10_11_x86_64'), ('cp36', 'abi3', 'macosx_10_6_fat32'), ('cp36', 'cp36mu', 'macosx_10_7_universal'), ('py3', 'none', 'macosx_10_0_universal'), ('cp36', 'none', 'macosx_10_3_universal'), ('cp36', 'abi3', 'macosx_10_10_intel'), ('py3', 'none', 'macosx_10_8_universal'), ('py3', 'none', 'macosx_10_9_fat64'), ('cp36', 'cp36u', 'macosx_10_12_x86_64'), ('cp36', 'cp36u', 'macosx_10_8_fat64'), ('cp36', 'cp36d', 'macosx_10_8_intel'), ('cp36', 'cp36mu', 'macosx_10_1_fat32'), ('cp36', 'none', 'macosx_10_3_fat32'), ('cp36', 'abi3', 'macosx_10_9_intel'), ('py3', 'none', 'macosx_10_7_x86_64'), ('py3', 'none', 'macosx_10_2_universal'), ('cp36', 'abi3', 'macosx_10_3_universal'), ('cp36', 'cp36dm', 'macosx_10_6_intel'), ('cp36', 'cp36m', 'macosx_10_11_fat32'), ('cp36', 'cp36u', 'macosx_10_8_intel'), ('cp36', 'cp36dm', 'macosx_10_7_intel'), ('cp36', 'abi3', 'macosx_10_12_x86_64'), ('cp36', 'abi3', 'macosx_10_10_universal'), ('cp36', 'abi3', 'macosx_10_8_fat64'), ('cp36', 'cp36m', 'macosx_10_0_fat32'), ('cp36', 'none', 'macosx_10_9_universal'), ('py3', 'none', 'macosx_10_4_x86_64'), ('cp36', 'cp36m', 'macosx_10_9_fat32'), ('cp36', 'cp36m', 'macosx_10_8_x86_64'), ('cp36', 'none', 'macosx_10_4_x86_64'), ('cp36', 'cp36m', 'macosx_10_5_universal'), ('cp36', 'cp36dm', 'macosx_10_7_universal'), ('cp36', 'abi3', 'macosx_10_6_x86_64'), ('py3', 'none', 'macosx_10_11_fat32'), ('cp36', 'none', 'macosx_10_12_x86_64'), ('cp36', 'cp36dm', 'macosx_10_10_fat64'), ('cp36', 'cp36m', 'macosx_10_7_x86_64'), ('cp36', 'cp36m', 'macosx_10_12_fat32'), ('cp36', 'cp36u', 'macosx_10_8_universal'), ('cp36', 'cp36dm', 'macosx_10_9_intel'), ('cp36', 'abi3', 'macosx_10_5_intel'), ('py3', 'none', 'macosx_10_3_fat32'), ('cp36', 'cp36m', 'macosx_10_9_universal'), ('cp36', 'none', 'macosx_10_9_fat64'), ('cp36', 'cp36dm', 'macosx_10_10_universal'), ('cp36', 'none', 'macosx_10_5_universal'), ('cp36', 'cp36m', 'macosx_10_4_x86_64'), ('cp36', 'abi3', 'macosx_10_7_intel'), ('py3', 'none', 'macosx_10_8_intel'), ('cp36', 'cp36d', 'macosx_10_12_universal'), ('cp36', 'cp36mu', 'macosx_10_9_universal'), ('py3', 'none', 'macosx_10_6_x86_64'), ('cp36', 'none', 'macosx_10_11_intel'), ('cp36', 'cp36dm', 'macosx_10_4_fat64'), ('cp36', 'cp36mu', 'macosx_10_5_fat64'), ('cp36', 'cp36d', 'macosx_10_9_fat64'), ('cp36', 'abi3', 'macosx_10_1_universal'), ('cp36', 'cp36u', 'macosx_10_5_intel'), ('cp36', 'cp36m', 'macosx_10_10_intel'), ('cp36', 'cp36dmu', 'macosx_10_3_fat32'), ('cp36', 'cp36m', 'macosx_10_10_x86_64'), ('cp36', 'cp36d', 'macosx_10_1_universal'), ('cp36', 'abi3', 'macosx_10_9_fat64'), ('cp36', 'cp36mu', 'macosx_10_4_intel'), ('cp36', 'cp36m', 'macosx_10_2_universal'), ('cp36', 'abi3', 'macosx_10_11_x86_64'), ('cp36', 'cp36dm', 'macosx_10_2_fat32'), ('cp36', 'cp36d', 'macosx_10_10_fat32'), ('cp36', 'cp36d', 'macosx_10_11_intel'), ('cp36', 'cp36dmu', 'macosx_10_4_universal'), ('cp36', 'none', 'macosx_10_4_fat64'), ('cp36', 'cp36u', 'macosx_10_11_fat32'), ('cp36', 'none', 'macosx_10_1_universal'), ('cp36', 'cp36mu', 'macosx_10_10_intel'), ('cp36', 'cp36mu', 'macosx_10_7_fat32'), ('cp36', 'none', 'macosx_10_10_fat32'), ('cp36', 'cp36m', 'macosx_10_5_fat64'), ('cp36', 'cp36m', 'macosx_10_12_x86_64'), ('cp36', 'none', 'macosx_10_11_x86_64'), ('cp36', 'cp36dm', 'macosx_10_5_x86_64'), ('cp36', 'cp36mu', 'macosx_10_12_intel'), ('cp36', 'cp36u', 'macosx_10_11_x86_64'), ('cp36', 'cp36d', 'macosx_10_4_fat64'), ('py3', 'none', 'macosx_10_4_universal'), ('cp36', 'cp36dm', 'macosx_10_4_fat32'), ('py3', 'none', 'macosx_10_8_x86_64'), ('cp36', 'cp36dm', 'macosx_10_1_universal'), ('cp36', 'cp36d', 'macosx_10_11_x86_64'), ('cp36', 'cp36dm', 'macosx_10_6_fat32'), ('cp36', 'cp36mu', 'macosx_10_12_x86_64'), ('cp36', 'cp36dmu', 'macosx_10_12_fat32'), ('cp36', 'cp36dmu', 'macosx_10_8_x86_64'), ('cp36', 'cp36u', 'macosx_10_10_x86_64'), ('cp36', 'cp36m', 'macosx_10_8_intel'), ('cp36', 'cp36mu', 'macosx_10_9_fat32'), ('cp36', 'cp36mu', 'macosx_10_5_universal'), ('cp36', 'cp36m', 'macosx_10_8_universal'), ('cp36', 'cp36dm', 'macosx_10_3_universal'), ('cp36', 'cp36dmu', 'macosx_10_0_fat32'), ('cp36', 'abi3', 'macosx_10_6_universal'),('cp36', 'cp36m', 'macosx_10_0_universal'), ('cp36', 'cp36dmu', 'macosx_10_5_universal'), ('cp36', 'cp36mu', 'macosx_10_0_fat32'), ('cp36', 'none', 'macosx_10_5_fat32'), ('cp36', 'cp36u', 'macosx_10_5_fat64'), ('cp36', 'cp36mu', 'macosx_10_5_intel'), ('cp36', 'cp36dm', 'macosx_10_8_fat32'), ('cp36', 'cp36dm', 'macosx_10_7_fat64'), ('cp36', 'cp36d', 'macosx_10_6_fat32'), ('cp36', 'none', 'macosx_10_4_universal'), ('cp36', 'cp36d', 'macosx_10_0_fat32'), ('py3', 'none', 'macosx_10_11_x86_64'), ('cp36', 'cp36u', 'macosx_10_7_x86_64'), ('cp36', 'cp36d', 'macosx_10_8_x86_64'), ('cp36', 'cp36u', 'macosx_10_6_fat32'), ('py3', 'none', 'macosx_10_4_fat64'), ('cp36', 'cp36dm', 'macosx_10_6_x86_64'), ('cp36', 'cp36d', 'macosx_10_5_fat32'), ('cp36', 'cp36dmu', 'macosx_10_4_intel'), ('cp36', 'none', 'macosx_10_0_fat32'), ('cp36', 'cp36dmu', 'macosx_10_12_x86_64'), ('cp36', 'cp36mu', 'macosx_10_12_fat32'), ('cp36', 'cp36u', 'macosx_10_6_universal'), ('cp36', 'cp36dmu', 'macosx_10_5_fat32'), ('cp36', 'cp36u', 'macosx_10_9_universal'), ('cp36', 'cp36d', 'macosx_10_12_fat32'), ('cp36', 'cp36u', 'macosx_10_4_x86_64'), ('cp36', 'cp36d', 'macosx_10_3_universal'), ('cp36', 'cp36m', 'macosx_10_4_universal'), ('py36', 'none', 'any'), ('py3', 'none', 'macosx_10_9_intel'), ('py3', 'none', 'macosx_10_6_fat64'), ('cp36', 'cp36dm', 'macosx_10_0_fat32'), ('cp36', 'none', 'macosx_10_12_fat32'), ('py3', 'none', 'macosx_10_10_universal'), ('py3', 'none', 'macosx_10_11_universal'), ('cp36', 'cp36m', 'macosx_10_9_fat64'), ('cp36', 'cp36dmu', 'macosx_10_9_universal'), ('cp36', 'cp36dmu', 'macosx_10_4_x86_64'), ('cp36', 'cp36dm', 'macosx_10_12_fat32'), ('cp36', 'cp36m', 'macosx_10_1_fat32'), ('cp36', 'cp36dmu', 'macosx_10_5_x86_64'), ('cp36', 'cp36mu', 'macosx_10_8_fat64'), ('py3', 'none', 'macosx_10_7_universal'), ('cp36', 'abi3', 'macosx_10_0_universal'), ('cp36', 'cp36dm', 'macosx_10_2_universal'), ('cp36', 'cp36dm', 'macosx_10_7_fat32'), ('cp36', 'cp36dmu', 'macosx_10_1_universal'), ('py3', 'none', 'macosx_10_6_universal'), ('cp36', 'cp36m', 'macosx_10_6_universal'), ('cp36', 'cp36dm', 'macosx_10_4_x86_64'), ('cp36', 'cp36d', 'macosx_10_12_x86_64'), ('cp36', 'cp36d', 'macosx_10_11_fat32'), ('cp36', 'cp36dmu', 'macosx_10_2_fat32'), ('cp36', 'none', 'macosx_10_6_intel'), ('cp36', 'cp36u', 'macosx_10_3_universal'), ('cp36', 'cp36dm', 'macosx_10_12_intel'), ('py3', 'none', 'macosx_10_7_intel'), ('cp36', 'cp36u', 'macosx_10_4_fat32'), ('py3', 'none', 'macosx_10_6_intel'), ('cp36', 'cp36dmu', 'macosx_10_4_fat64'), ('cp36', 'none', 'macosx_10_12_fat64'), ('cp36', 'cp36u', 'macosx_10_0_universal'), ('cp36', 'cp36d', 'macosx_10_5_universal'), ('cp36', 'cp36m', 'macosx_10_11_universal'), ('cp36', 'none', 'macosx_10_6_universal'), ('cp36', 'none', 'macosx_10_4_intel'), ('cp36', 'cp36u', 'macosx_10_9_fat64'),('cp36', 'none', 'macosx_10_7_universal'), ('cp36', 'cp36u', 'macosx_10_4_universal'), ('cp36', 'cp36d', 'macosx_10_7_x86_64'), ('cp36', 'cp36dm', 'macosx_10_12_x86_64'), ('cp36', 'none', 'macosx_10_0_universal'), ('cp36', 'cp36mu', 'macosx_10_12_fat64'), ('cp36', 'cp36u', 'macosx_10_1_fat32'), ('cp36', 'cp36mu', 'macosx_10_5_fat32'), ('cp36', 'abi3', 'macosx_10_8_universal'), ('cp36', 'cp36d', 'macosx_10_4_intel'), ('cp36', 'cp36mu', 'macosx_10_1_universal'), ('cp36', 'cp36dmu', 'macosx_10_11_x86_64'), ('cp36', 'cp36d', 'macosx_10_8_universal'), ('cp36', 'cp36mu', 'macosx_10_4_fat32'), ('cp36', 'cp36d', 'macosx_10_0_universal'), ('cp36', 'abi3', 'macosx_10_4_universal'), ('cp36', 'cp36m', 'macosx_10_6_fat32'), ('cp36', 'cp36dm', 'macosx_10_5_universal'), ('py3', 'none', 'macosx_10_3_universal'), ('cp36', 'none', 'macosx_10_8_universal'), ('cp36', 'cp36m', 'macosx_10_9_x86_64'), ('cp36', 'abi3', 'macosx_10_1_fat32'), ('cp36', 'cp36d', 'macosx_10_10_x86_64'), ('cp36', 'cp36m', 'macosx_10_5_fat32'), ('cp36', 'cp36mu', 'macosx_10_8_fat32'), ('cp36', 'cp36mu', 'macosx_10_7_fat64'), ('cp36', 'cp36dmu', 'macosx_10_7_universal'), ('cp3', 'none', 'any'), ('cp36', 'cp36m', 'macosx_10_3_universal'), ('cp36', 'cp36m', 'macosx_10_11_fat64'), ('cp36', 'abi3', 'macosx_10_11_fat32'), ('py3', 'none', 'macosx_10_6_fat32'), ('cp36', 'cp36m', 'macosx_10_8_fat32'), ('cp36', 'cp36m', 'macosx_10_7_fat64'),('cp36', 'cp36m', 'macosx_10_4_fat64'), ('cp36', 'none', 'macosx_10_2_fat32'), ('cp36', 'cp36dmu', 'macosx_10_6_intel'), ('py3', 'none', 'macosx_10_5_x86_64')]
Traceback (most recent call last):
  File "/Users/c5272397/dev/giTrack/.direnv/python-3.6.5/bin/pex", line 11, in <module>
    sys.exit(main())
  File "/Users/c5272397/dev/giTrack/.direnv/python-3.6.5/lib/python3.6/site-packages/pex/bin/pex.py", line 662, in main
    pex_builder = build_pex(reqs, options, resolver_options_builder)
  File "/Users/c5272397/dev/giTrack/.direnv/python-3.6.5/lib/python3.6/site-packages/pex/bin/pex.py", line 592, in build_pex
    for resolved_dist in resolveds:
  File "/Users/c5272397/dev/giTrack/.direnv/python-3.6.5/lib/python3.6/site-packages/pex/resolver.py", line 565, in resolve_multi
    use_manylinux=use_manylinux):
  File "/Users/c5272397/dev/giTrack/.direnv/python-3.6.5/lib/python3.6/site-packages/pex/resolver.py", line 501, in resolve
    return resolver.resolve(resolvables_from_iterable(requirements, builder, interpreter=interpreter))
  File "/Users/c5272397/dev/giTrack/.direnv/python-3.6.5/lib/python3.6/site-packages/pex/resolver.py", line 299, in resolve
    dist = self.build(package, resolvable.options)
  File "/Users/c5272397/dev/giTrack/.direnv/python-3.6.5/lib/python3.6/site-packages/pex/resolver.py", line 378, in build
    dist = super(CachingResolver, self).build(package, options)
  File "/Users/c5272397/dev/giTrack/.direnv/python-3.6.5/lib/python3.6/site-packages/pex/resolver.py", line 257, in build
    raise Untranslateable('Package %s is not translateable by %s' % (package, translator))
pex.resolver.Untranslateable: Package SourcePackage('file:///Users/c5272397/.pex/build/pendulum-2.0.4.tar.gz') is not translateable by ChainedTranslator(WheelTranslator, EggTranslator, SourceTranslator)

Similarly when I run this as part of my CI build pipeline (that is running on Ubuntu Xenial), than it fails similarly: https://travis-ci.org/AuHau/giTrack/jobs/478828510

Is there something I have configured wrongly? Or am I missing something else?

Also I don't really understand why PEX is trying to do this sdist to bdist translation, since it looks like the final PEX file contains dependencies in extracted form (eq. .deps folder of the PEX zip contains folders with the dependecies). Why it won't directly include the sdist?

Thanks ahead for help!

jsirois commented 5 years ago

Is there something I have configured wrongly? Or am I missing something else?

You're just missing the step of pre-building wheels for all the platforms you want your multi-platform pex to support. Most simply, you'd place the prebuilt wheels flat in a directory available via a network filesystem or HTTPS and then point to that directory with -f:

$ pex --help
...
  Resolver options:
    Tailor how to find, resolve and translate the packages that get put
    into the PEX environment.

    --pypi, --no-pypi, --no-index
                        Whether to use pypi to resolve dependencies; Default:
                        use pypi
    --pex-path=PEX_PATH
                        A colon separated list of other pex files to merge
                        into the runtime environment.
    -f PATH/URL, --find-links=PATH/URL, --repo=PATH/URL
                        Additional repository path (directory or URL) to look
                        for requirements.
...

Your CI link ( https://travis-ci.org/AuHau/giTrack/jobs/478828510) shows a command line of:

$ pex -vvv --index-url=https://test.pypi.org/simple/ --python=python3 -r requirements.txt -o ./build/gitrack.macosx_x86_64 --platform macosx_10_12_x86_64 --platform macosx_10_13_x86_64 --platform macosx_10_14_x86_64 -e gitrack.main gitrack setuptools

And pendulum only supplies macosx_10_14_x86_64 pre-built; so you fail on macosx_10_12_x86_64 and macosx_10_13_x86_64.

Also I don't really understand why PEX is trying to do this sdist to bdist translation, since it looks like the final PEX file contains dependencies in extracted form (eq. .deps folder of the PEX zip contains folders with the dependecies). Why it won't directly include the sdist?

The main design goal of pex is to create a hermetic pre-built executable. As such, including sdists inside the pex that are platform-specific and require building on each platform like pendulum would violate this goal and is an intentional non-feature of built pexes.

I'm going to close this as answered, but please ask away if the problem and solution aren't clear.