)]}'
{"/PATCHSET_LEVEL":[{"author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"change_message_id":"88e658a4aa29ac0678d8f42970aa5d4ff7430038","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":5,"id":"fd663915_d604639d","updated":"2024-05-01 21:26:13.000000000","message":"awesome that wheel artifiacts are now being created! This is great. Just and inital question, then I need to go back and start at the beginning of chain :P","commit_id":"d0c5557fc55ec1ae56718186c260a880ff159935"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"4a6926c9e4243b6ff804d60cb5cb77aadb882fe3","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":13,"id":"0462e906_cd5ff425","updated":"2024-09-25 17:58:44.000000000","message":"recheck\n\nSome transient centos-9-stream repo error.","commit_id":"ef0f144982aa2eae348e3a9adcb66d08f5a50914"},{"author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"change_message_id":"392b6d5b8e331249f5aa39fbf41706e315c1ef4a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":14,"id":"861e0a52_972e8d38","updated":"2024-10-09 01:08:23.000000000","message":"Much better:\n\n```\n# pip install /root/wheels/pyeclib-1.6.1-cp35-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64_zuul.whl \nProcessing /root/wheels/pyeclib-1.6.1-cp35-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64_zuul.whl\nInstalling collected packages: pyeclib\nSuccessfully installed pyeclib-1.6.1    \n(venv) [root@e2ef1dec5830 /]# ldd venv/lib64/python3.6/site-packages/pyeclib_c.abi3.so \nldd: warning: you do not have execution permission for `venv/lib64/python3.6/site-packages/pyeclib_c.abi3.so\u0027\n\tlinux-vdso.so.1 (0x00007f55e092e000)\n\tliberasurecode-pyeclib.so.1 \u003d\u003e /venv/lib64/python3.6/site-packages/pyeclib.libs/liberasurecode-pyeclib.so.1 (0x00007f55dfe00000)\n\tlibpthread.so.0 \u003d\u003e /lib64/libpthread.so.0 (0x00007f55dfa00000)\n\tlibc.so.6 \u003d\u003e /lib64/libc.so.6 (0x00007f55df600000)\n\tlibnullcode-pyeclib.so.1 \u003d\u003e /venv/lib64/python3.6/site-packages/pyeclib.libs/libnullcode-pyeclib.so.1 (0x00007f55df200000)\n\tlibXorcode-pyeclib.so.1 \u003d\u003e /venv/lib64/python3.6/site-packages/pyeclib.libs/libXorcode-pyeclib.so.1 (0x00007f55dee00000)\n\tliberasurecode_rs_vand-pyeclib.so.1 \u003d\u003e /venv/lib64/python3.6/site-packages/pyeclib.libs/liberasurecode_rs_vand-pyeclib.so.1 (0x00007f55dea00000)\n\tlibm.so.6 \u003d\u003e /lib64/libm.so.6 (0x00007f55de600000)\n\tlibz.so.1 \u003d\u003e /lib64/libz.so.1 (0x00007f55de200000)\n\t/lib64/ld-linux-x86-64.so.2 (0x00007f55e0600000)\n(venv) [root@e2ef1dec5830 /]# python ~/wheels/dodgytest.py \n(venv) [root@e2ef1dec5830 /]#\n```","commit_id":"2bb2634d59106e8fb811fba06ab87eafa16cba81"},{"author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"change_message_id":"cc724ecc5ef26d0b8bb2f72ae74afa1c2dcf4cf3","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":14,"id":"bbf6a1a2_48f63323","updated":"2024-10-09 00:53:21.000000000","message":"Nice, makes sense and the ansible is doing what we were doing manually.\n\nHmm, however when I try and pull in one from an artifact and attempt to install it:\n\n```\n# pip install pyeclib-1.6.1-cp35-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl \nProcessing /pyeclib-1.6.1-cp35-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl\nERROR: Exception:\nTraceback (most recent call last):\n  File \"/venv/lib/python3.6/site-packages/pip/_internal/cli/base_command.py\", line 164, in exc_logging_wrapper\n    status \u003d run_func(*args)\n  File \"/venv/lib/python3.6/site-packages/pip/_internal/cli/req_command.py\", line 205, in wrapper\n    return func(self, options, args)\n  File \"/venv/lib/python3.6/site-packages/pip/_internal/commands/install.py\", line 339, in run\n    reqs, check_supported_wheels\u003dnot options.target_dir\n  File \"/venv/lib/python3.6/site-packages/pip/_internal/resolution/resolvelib/resolver.py\", line 73, in resolve\n    collected \u003d self.factory.collect_root_requirements(root_reqs)\n  File \"/venv/lib/python3.6/site-packages/pip/_internal/resolution/resolvelib/factory.py\", line 470, in collect_root_requirements\n    requested_extras\u003d(),\n  File \"/venv/lib/python3.6/site-packages/pip/_internal/resolution/resolvelib/factory.py\", line 435, in _make_requirement_from_install_req\n    version\u003dNone,\n  File \"/venv/lib/python3.6/site-packages/pip/_internal/resolution/resolvelib/factory.py\", line 206, in _make_candidate_from_link\n    version\u003dversion,\n  File \"/venv/lib/python3.6/site-packages/pip/_internal/resolution/resolvelib/candidates.py\", line 287, in __init__\n    version\u003dversion,\n  File \"/venv/lib/python3.6/site-packages/pip/_internal/resolution/resolvelib/candidates.py\", line 156, in __init__\n    self.dist \u003d self._prepare()\n  File \"/venv/lib/python3.6/site-packages/pip/_internal/resolution/resolvelib/candidates.py\", line 225, in _prepare\n    dist \u003d self._prepare_distribution()\n  File \"/venv/lib/python3.6/site-packages/pip/_internal/resolution/resolvelib/candidates.py\", line 292, in _prepare_distribution\n    return preparer.prepare_linked_requirement(self._ireq, parallel_builds\u003dTrue)\n  File \"/venv/lib/python3.6/site-packages/pip/_internal/operations/prepare.py\", line 482, in prepare_linked_requirement\n    return self._prepare_linked_requirement(req, parallel_builds)\n  File \"/venv/lib/python3.6/site-packages/pip/_internal/operations/prepare.py\", line 550, in _prepare_linked_requirement\n    self.build_isolation,\n  File \"/venv/lib/python3.6/site-packages/pip/_internal/operations/prepare.py\", line 59, in _get_prepared_distribution\n    return abstract_dist.get_metadata_distribution()\n  File \"/venv/lib/python3.6/site-packages/pip/_internal/distributions/wheel.py\", line 26, in get_metadata_distribution\n    return get_wheel_distribution(wheel, canonicalize_name(self.req.name))\n  File \"/venv/lib/python3.6/site-packages/pip/_internal/metadata/__init__.py\", line 51, in get_wheel_distribution\n    return Distribution.from_wheel(wheel, canonical_name)\n  File \"/venv/lib/python3.6/site-packages/pip/_internal/metadata/pkg_resources.py\", line 37, in from_wheel\n    with wheel.as_zipfile() as zf:\n  File \"/venv/lib/python3.6/site-packages/pip/_internal/metadata/base.py\", line 321, in as_zipfile\n    return zipfile.ZipFile(self.location, allowZip64\u003dTrue)\n  File \"/usr/lib64/python3.6/zipfile.py\", line 1131, in __init__\n    self._RealGetContents()\n  File \"/usr/lib64/python3.6/zipfile.py\", line 1198, in _RealGetContents\n    raise BadZipFile(\"File is not a zip file\")\nzipfile.BadZipFile: File is not a zip file\n\n```\n\nIt does seem to register as a proper zip file.","commit_id":"2bb2634d59106e8fb811fba06ab87eafa16cba81"},{"author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"change_message_id":"fe427755dee371ca600001d7b3cdffc16d2b8825","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":14,"id":"4bb8353e_776d587d","updated":"2024-10-09 01:01:22.000000000","message":"oh weird, if I wget the artifact it is coming in corrupted. But if I download it via the browser it\u0027s fine. Weird.\n\nAh, wget seems to be truncating it:\n\n```\n$ ls -l pyeclib-1.6.1-cp35-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl*\n-rw-r--r--. 1 matt matt 531683 Oct  9 11:54 pyeclib-1.6.1-cp35-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl\n-rw-r--r--. 1 matt matt 524125 Sep 27 05:27 pyeclib-1.6.1-cp35-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl.1\n```\n\nThe .1 was downloaded by wget. Let\u0027s try this again with a proper version of the wheel generated in zuul.","commit_id":"2bb2634d59106e8fb811fba06ab87eafa16cba81"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"bf8e09348ef29eeca5fa086e8afced1044be9d03","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":14,"id":"49b4aa5c_75cb3b71","in_reply_to":"4bb8353e_776d587d","updated":"2024-10-09 03:24:39.000000000","message":"Might be worth trying something like\n```\nmd5sum pyeclib-1.6.1-cp35-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl\nmd5sum \u003c( gunzip \u003c pyeclib-1.6.1-cp35-abi3-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl.1 )\n```\nI think one of them has just been compressed and extra time.","commit_id":"2bb2634d59106e8fb811fba06ab87eafa16cba81"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"bf8e09348ef29eeca5fa086e8afced1044be9d03","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":14,"id":"45042d48_4542f3ab","in_reply_to":"bbf6a1a2_48f63323","updated":"2024-10-09 03:24:39.000000000","message":"I know I\u0027ve gotten that `zipfile.BadZipFile: File is not a zip file` when trying `pip install $ARTIFACT_URL` -- I traced it down to Zuul artifacts getting compressed when uploaded. Depending on the provider, I think that can get uncompressed automatically during download (something something rackspace CDN, maybe?), but what seemed to work reliably for me was to do something like\n```\ncurl -O --compressed $ARTIFACT_URL\npip install $WHL\n```\nPresumably, something like `wget --compression\u003dauto` might get you similar results?","commit_id":"2bb2634d59106e8fb811fba06ab87eafa16cba81"}],"tools/playbooks/build-wheel/post.yaml":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"dfa208dc1028f46514b356c56fbcadde6d5dbd50","unresolved":true,"context_lines":[{"line_number":24,"context_line":"                url: \u0027artifacts/{{ item.path | basename }}\u0027"},{"line_number":25,"context_line":"                metadata:"},{"line_number":26,"context_line":"                  type: python_wheel"},{"line_number":27,"context_line":"                  # TODO: parse further metadata from basename (python tag, ABI tag)"}],"source_content_type":"text/x-yaml","patch_set":14,"id":"afa67308_bf76d5a7","line":27,"updated":"2024-10-09 23:45:15.000000000","message":"Addressed in https://review.opendev.org/c/openstack/pyeclib/+/932002 -- maybe should squash in?","commit_id":"2bb2634d59106e8fb811fba06ab87eafa16cba81"}],"tools/playbooks/build-wheel/roles/build-pyeclib-wheel/defaults/main.yaml":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"1ca4b0a48c8abb97cb225ae1fe90d8263628baa8","unresolved":true,"context_lines":[],"source_content_type":"","patch_set":10,"id":"35afdc58_5f0e2890","line":2,"updated":"2024-09-03 16:37:16.000000000","message":"Should maybe add `wheel_python_version: cp35-cp35m`","commit_id":"c8a607666a4e82b936dccf5709ace58ee67eeea3"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"334cd4fdb1b43a10439a0bc787141cef4158e3f8","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":10,"id":"031f2ecc_52779d7b","line":2,"in_reply_to":"35afdc58_5f0e2890","updated":"2024-09-03 19:37:30.000000000","message":"Done","commit_id":"c8a607666a4e82b936dccf5709ace58ee67eeea3"},{"author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"change_message_id":"cc724ecc5ef26d0b8bb2f72ae74afa1c2dcf4cf3","unresolved":true,"context_lines":[{"line_number":1,"context_line":"tag: pyeclib-build-wheel-latest"},{"line_number":2,"context_line":"wheel_python_version: cp35-cp35m"}],"source_content_type":"text/x-yaml","patch_set":14,"id":"68703fea_c9350708","line":2,"updated":"2024-10-09 00:53:21.000000000","message":"So this is just defaulting it to something. As the run playbook always specifies a version.\n\nBelts and brances is good.","commit_id":"2bb2634d59106e8fb811fba06ab87eafa16cba81"}],"tools/playbooks/build-wheel/roles/build-pyeclib-wheel/tasks/main.yaml":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"d9279ffce9af9205fa7c08458159f6614742a229","unresolved":false,"context_lines":[{"line_number":11,"context_line":"- name: Copy wheel for upload"},{"line_number":12,"context_line":"  synchronize:"},{"line_number":13,"context_line":"    src: \u0027{{ ansible_user_dir }}/wheels\u0027"},{"line_number":14,"context_line":"    dest: \u0027{{ zuul.executor.log_root }}\u0027"},{"line_number":15,"context_line":"    mode: pull"},{"line_number":16,"context_line":"    verify_host: true"},{"line_number":17,"context_line":"- zuul_return:"}],"source_content_type":"text/x-yaml","patch_set":3,"id":"9242be88_2f75c03c","line":14,"updated":"2024-05-01 16:57:06.000000000","message":"🎉 https://storage.bhs.cloud.ovh.net/v1/AUTH_dcaab5e32b234d56b626f72581e3644c/zuul_opendev_logs_30a/917857/3/check/pyeclib-build-wheels/30a34cd/wheels/index.html has manylinux wheels!","commit_id":"a664ac36736772bdedb5d5ab0113d581faeff49b"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"d9279ffce9af9205fa7c08458159f6614742a229","unresolved":true,"context_lines":[{"line_number":19,"context_line":"      zuul:"},{"line_number":20,"context_line":"        artifacts:"},{"line_number":21,"context_line":"          - name: \u0027{{ wheel_python_version }} wheel\u0027"},{"line_number":22,"context_line":"            url: \u0027{{ lookup(\"fileglob\", \"wheels/*-{{ wheel_python_version }}-*.whl\") }}\u0027"}],"source_content_type":"text/x-yaml","patch_set":3,"id":"b4e0e483_90b6c128","line":22,"updated":"2024-05-01 16:57:06.000000000","message":"This part isn\u0027t working quite right yet, though...","commit_id":"a664ac36736772bdedb5d5ab0113d581faeff49b"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"3f6f108d0c66af75d365e9abb72a2a238e03c9f8","unresolved":false,"context_lines":[{"line_number":19,"context_line":"      zuul:"},{"line_number":20,"context_line":"        artifacts:"},{"line_number":21,"context_line":"          - name: \u0027{{ wheel_python_version }} wheel\u0027"},{"line_number":22,"context_line":"            url: \u0027{{ lookup(\"fileglob\", \"wheels/*-{{ wheel_python_version }}-*.whl\") }}\u0027"}],"source_content_type":"text/x-yaml","patch_set":3,"id":"660bf467_d7edd9d4","line":22,"in_reply_to":"b4e0e483_90b6c128","updated":"2024-05-01 18:26:55.000000000","message":"*Here* we go! https://zuul.opendev.org/t/openstack/build/a8e195bfe57b4d2c928d1a52a0523e4e/artifacts","commit_id":"a664ac36736772bdedb5d5ab0113d581faeff49b"}],"tools/playbooks/build-wheel/run.yaml":[{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"3f6f108d0c66af75d365e9abb72a2a238e03c9f8","unresolved":true,"context_lines":[{"line_number":9,"context_line":"      wheel_python_version: cp27-cp27mu"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"    - role: build-pyeclib-wheel"},{"line_number":12,"context_line":"      wheel_python_version: cp35-cp35m"}],"source_content_type":"text/x-yaml","patch_set":5,"id":"b1ac10db_17802f96","line":12,"range":{"start_line":12,"start_character":28,"end_line":12,"end_character":38},"updated":"2024-05-01 18:26:55.000000000","message":"Note that the actual wheel built will have `cp35-abi3` in it instead, which should allow it to be used on any later Python 3 version!","commit_id":"d0c5557fc55ec1ae56718186c260a880ff159935"},{"author":{"_account_id":15343,"name":"Tim Burke","email":"tburke@nvidia.com","username":"tburke"},"change_message_id":"853df85f5b884b6a83709fa161ad96f36dacb204","unresolved":true,"context_lines":[{"line_number":9,"context_line":"      wheel_python_version: cp27-cp27mu"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"    - role: build-pyeclib-wheel"},{"line_number":12,"context_line":"      wheel_python_version: cp35-cp35m"}],"source_content_type":"text/x-yaml","patch_set":5,"id":"f6359612_68ae32c5","line":12,"range":{"start_line":12,"start_character":28,"end_line":12,"end_character":38},"in_reply_to":"3b71eb93_84fbbc5e","updated":"2024-05-02 21:16:14.000000000","message":"It\u0027s to do with how [the PyPA manylinux docker image](https://github.com/pypa/manylinux?tab\u003dreadme-ov-file#image-content) works -- this says [which version](https://review.opendev.org/c/openstack/pyeclib/+/817498/11/Dockerfile#49) under `/opt/python/` to use.","commit_id":"d0c5557fc55ec1ae56718186c260a880ff159935"},{"author":{"_account_id":7233,"name":"Matthew Oliver","email":"matt@oliver.net.au","username":"mattoliverau"},"change_message_id":"88e658a4aa29ac0678d8f42970aa5d4ff7430038","unresolved":true,"context_lines":[{"line_number":9,"context_line":"      wheel_python_version: cp27-cp27mu"},{"line_number":10,"context_line":""},{"line_number":11,"context_line":"    - role: build-pyeclib-wheel"},{"line_number":12,"context_line":"      wheel_python_version: cp35-cp35m"}],"source_content_type":"text/x-yaml","patch_set":5,"id":"3b71eb93_84fbbc5e","line":12,"range":{"start_line":12,"start_character":28,"end_line":12,"end_character":38},"in_reply_to":"b1ac10db_17802f96","updated":"2024-05-01 21:26:13.000000000","message":"So is there a reason we can\u0027t use `cp35-abi3` here instead? Not going to lie, I\u0027ll need to dig into this a lot more to understand it all :)","commit_id":"d0c5557fc55ec1ae56718186c260a880ff159935"}]}
