)]}'
{"/COMMIT_MSG":[{"author":{"_account_id":4146,"name":"Clark Boylan","email":"cboylan@sapwetik.org","username":"cboylan"},"change_message_id":"5194cfd786c6e3ff81320e3839d8f76f49c3dac6","unresolved":true,"context_lines":[{"line_number":21,"context_line":"user (stack). If we want proper editable installs, we should put"},{"line_number":22,"context_line":"work into venv-based installs so we can finally get rid of the `sudo"},{"line_number":23,"context_line":"pip install` antipattern which the Python packaging community and"},{"line_number":24,"context_line":"distros alike are desperately trying to kill off."},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"Change-Id: Ie72f4ff8d7ff3ec6263db6ab7281ae4ed1846f53"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":12,"id":"93830d91_bbcc459d","line":24,"updated":"2022-04-13 21:17:15.000000000","message":"I think the decision on whether or not to proceed with this option basically boils down to \"are editable installs a required feature\". And if they are we end up pivoting to the global venv anyway which solves this problem differently.","commit_id":"9b4c38dccbcbd03243e8600422d99554c269a29f"},{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"b87e185045f2a902d06acf4be82a0691d9de9d2a","unresolved":true,"context_lines":[{"line_number":21,"context_line":"user (stack). If we want proper editable installs, we should put"},{"line_number":22,"context_line":"work into venv-based installs so we can finally get rid of the `sudo"},{"line_number":23,"context_line":"pip install` antipattern which the Python packaging community and"},{"line_number":24,"context_line":"distros alike are desperately trying to kill off."},{"line_number":25,"context_line":""},{"line_number":26,"context_line":"Change-Id: Ie72f4ff8d7ff3ec6263db6ab7281ae4ed1846f53"}],"source_content_type":"text/x-gerrit-commit-message","patch_set":12,"id":"010f5a9e_448f412c","line":24,"in_reply_to":"93830d91_bbcc459d","updated":"2022-04-13 21:29:48.000000000","message":"IMHO, editable installs are definitely required for as long as we can reasonably support them. Devstack is not a deployment tool, it\u0027s a development and testing tool. It need not (IMHO) adhere to proper security hygiene (nor does it *at all* currently) in the same way any real deployment tool should. It needs to facilitate our testing and development practices, and editable installs are very much part of that. Working on a live install will be substantially more laborious without editable installs, so I\u0027m strenuously opposed to losing that functionality unless we just entirely can\u0027t get past it. If upstream python stuff makes it massively more difficult in the future, then we\u0027ll have to evaluate our options, but until that point, I don\u0027t want to lose this functionality.\n\nI\u0027m also not really sure how venvs get us around a general limitation on editable installs in the future. If it\u0027s just to get around having something installed in the system and editable as a normal user, I\u0027d argue that, again, that\u0027s really not a concern (rather, it\u0027s a feature to me). But, if that\u0027s what we have to do to keep things editable, then so be it.","commit_id":"9b4c38dccbcbd03243e8600422d99554c269a29f"}],"/PATCHSET_LEVEL":[{"author":{"_account_id":4393,"name":"Dan Smith","email":"dms@danplanet.com","username":"danms"},"change_message_id":"b87e185045f2a902d06acf4be82a0691d9de9d2a","unresolved":false,"context_lines":[],"source_content_type":"","patch_set":12,"id":"2f3a43cd_9e79844c","updated":"2022-04-13 21:29:48.000000000","message":"Just adding my opinion in here, but I definitely think losing editable installs is a major (major) problem.","commit_id":"9b4c38dccbcbd03243e8600422d99554c269a29f"}],"inc/python":[{"author":{"_account_id":4146,"name":"Clark Boylan","email":"cboylan@sapwetik.org","username":"cboylan"},"change_message_id":"a0ca67e41a2badf902f07585c1ab77e5418bebbb","unresolved":true,"context_lines":[{"line_number":446,"context_line":"    pushd \"$project_dir\""},{"line_number":447,"context_line":"    rm -fr dist"},{"line_number":448,"context_line":"    # TODO(fungi) Use https://pypi.org/project/build instead of setup.py"},{"line_number":449,"context_line":"    python3 setup.py sdist"},{"line_number":450,"context_line":"    popd"},{"line_number":451,"context_line":"    # TODO(fungi) Figure out what we need to do for extras"},{"line_number":452,"context_line":"    pip_install $flags \"$project_dir/dist/*.tgz\""}],"source_content_type":"application/x-shellscript","patch_set":4,"id":"ae71a034_a9e73e77","line":449,"updated":"2022-04-13 15:30:09.000000000","message":"Out of curiosity why not `pip wheel ./` or similar then install a wheel? This has the benefit of not relying on outdated methods (setup.py sdist) and doesn\u0027t require we install an additional tool (build).","commit_id":"0c5c821e3a37f552eae75d3acbdd0239c8f19c46"},{"author":{"_account_id":5263,"name":"Jeremy Stanley","display_name":"fungi","email":"fungi@yuggoth.org","username":"fungi","status":"missing, presumed fed"},"change_message_id":"a79f4cc6e9d1e6881da6c3122d66fd196fae46dc","unresolved":false,"context_lines":[{"line_number":446,"context_line":"    pushd \"$project_dir\""},{"line_number":447,"context_line":"    rm -fr dist"},{"line_number":448,"context_line":"    # TODO(fungi) Use https://pypi.org/project/build instead of setup.py"},{"line_number":449,"context_line":"    python3 setup.py sdist"},{"line_number":450,"context_line":"    popd"},{"line_number":451,"context_line":"    # TODO(fungi) Figure out what we need to do for extras"},{"line_number":452,"context_line":"    pip_install $flags \"$project_dir/dist/*.tgz\""}],"source_content_type":"application/x-shellscript","patch_set":4,"id":"42ced024_0534a103","line":449,"updated":"2022-04-13 15:55:33.000000000","message":"We need wheel installed somewhere, but maybe we already have it. We don\u0027t have build installed for sure though. I\u0027ll give wheel a shot in hopes it\u0027s available to the interpreter already, otherwise we\u0027ll need to add more code to install it.","commit_id":"0c5c821e3a37f552eae75d3acbdd0239c8f19c46"},{"author":{"_account_id":4146,"name":"Clark Boylan","email":"cboylan@sapwetik.org","username":"cboylan"},"change_message_id":"5194cfd786c6e3ff81320e3839d8f76f49c3dac6","unresolved":false,"context_lines":[{"line_number":446,"context_line":"    pushd \"$project_dir\""},{"line_number":447,"context_line":"    rm -fr dist"},{"line_number":448,"context_line":"    # TODO(fungi) Use https://pypi.org/project/build instead of setup.py"},{"line_number":449,"context_line":"    python3 setup.py sdist"},{"line_number":450,"context_line":"    popd"},{"line_number":451,"context_line":"    # TODO(fungi) Figure out what we need to do for extras"},{"line_number":452,"context_line":"    pip_install $flags \"$project_dir/dist/*.tgz\""}],"source_content_type":"application/x-shellscript","patch_set":4,"id":"d7c3db9f_29a6c050","line":449,"in_reply_to":"ae71a034_a9e73e77","updated":"2022-04-13 21:17:15.000000000","message":"Done","commit_id":"0c5c821e3a37f552eae75d3acbdd0239c8f19c46"},{"author":{"_account_id":4146,"name":"Clark Boylan","email":"cboylan@sapwetik.org","username":"cboylan"},"change_message_id":"a0ca67e41a2badf902f07585c1ab77e5418bebbb","unresolved":true,"context_lines":[{"line_number":448,"context_line":"    # TODO(fungi) Use https://pypi.org/project/build instead of setup.py"},{"line_number":449,"context_line":"    python3 setup.py sdist"},{"line_number":450,"context_line":"    popd"},{"line_number":451,"context_line":"    # TODO(fungi) Figure out what we need to do for extras"},{"line_number":452,"context_line":"    pip_install $flags \"$project_dir/dist/*.tgz\""},{"line_number":453,"context_line":"    # ensure that further actions can do things like setup.py sdist"},{"line_number":454,"context_line":"    if [[ \"$flags\" \u003d\u003d \"-e\" ]]; then"}],"source_content_type":"application/x-shellscript","patch_set":4,"id":"7ed03c5e_50aa0524","line":451,"updated":"2022-04-13 15:30:09.000000000","message":"Is it not valid to do `pip install \u0027foo.tgz[bar]\u0027`? https://stackoverflow.com/questions/52228286/how-to-pip-install-with-wheel-specifying-extras indicates this is valid with wheels at least.","commit_id":"0c5c821e3a37f552eae75d3acbdd0239c8f19c46"},{"author":{"_account_id":5263,"name":"Jeremy Stanley","display_name":"fungi","email":"fungi@yuggoth.org","username":"fungi","status":"missing, presumed fed"},"change_message_id":"a79f4cc6e9d1e6881da6c3122d66fd196fae46dc","unresolved":false,"context_lines":[{"line_number":448,"context_line":"    # TODO(fungi) Use https://pypi.org/project/build instead of setup.py"},{"line_number":449,"context_line":"    python3 setup.py sdist"},{"line_number":450,"context_line":"    popd"},{"line_number":451,"context_line":"    # TODO(fungi) Figure out what we need to do for extras"},{"line_number":452,"context_line":"    pip_install $flags \"$project_dir/dist/*.tgz\""},{"line_number":453,"context_line":"    # ensure that further actions can do things like setup.py sdist"},{"line_number":454,"context_line":"    if [[ \"$flags\" \u003d\u003d \"-e\" ]]; then"}],"source_content_type":"application/x-shellscript","patch_set":4,"id":"668661a7_edaa2c02","line":451,"updated":"2022-04-13 15:55:33.000000000","message":"Oh, perfect. Yeah I simply left it out for now so as to simplify the PoC and avoid confusing matter by guessing about how to do extras with a local archive. In retrospect, I don\u0027t see any good reason it shouldn\u0027t work.","commit_id":"0c5c821e3a37f552eae75d3acbdd0239c8f19c46"},{"author":{"_account_id":4146,"name":"Clark Boylan","email":"cboylan@sapwetik.org","username":"cboylan"},"change_message_id":"5194cfd786c6e3ff81320e3839d8f76f49c3dac6","unresolved":false,"context_lines":[{"line_number":448,"context_line":"    # TODO(fungi) Use https://pypi.org/project/build instead of setup.py"},{"line_number":449,"context_line":"    python3 setup.py sdist"},{"line_number":450,"context_line":"    popd"},{"line_number":451,"context_line":"    # TODO(fungi) Figure out what we need to do for extras"},{"line_number":452,"context_line":"    pip_install $flags \"$project_dir/dist/*.tgz\""},{"line_number":453,"context_line":"    # ensure that further actions can do things like setup.py sdist"},{"line_number":454,"context_line":"    if [[ \"$flags\" \u003d\u003d \"-e\" ]]; then"}],"source_content_type":"application/x-shellscript","patch_set":4,"id":"777eeaf0_4b0b637d","line":451,"in_reply_to":"7ed03c5e_50aa0524","updated":"2022-04-13 21:17:15.000000000","message":"Done","commit_id":"0c5c821e3a37f552eae75d3acbdd0239c8f19c46"},{"author":{"_account_id":4146,"name":"Clark Boylan","email":"cboylan@sapwetik.org","username":"cboylan"},"change_message_id":"5194cfd786c6e3ff81320e3839d8f76f49c3dac6","unresolved":true,"context_lines":[{"line_number":333,"context_line":"# extras: comma-separated list of optional dependencies to install"},{"line_number":334,"context_line":"#         (e.g., ldap,memcache)."},{"line_number":335,"context_line":"#         See https://docs.openstack.org/pbr/latest/user/using.html#extra-requirements"},{"line_number":336,"context_line":"# The command is like \"pip install \u0027\u0027 \u003cproject_dir\u003e[\u003cextras\u003e]\""},{"line_number":337,"context_line":"#TODO(fungi) Rename this now that we\u0027re no longer supporting editable/develop"},{"line_number":338,"context_line":"function setup_develop {"},{"line_number":339,"context_line":"    local bindep"}],"source_content_type":"application/x-shellscript","patch_set":12,"id":"a9e126a9_e4f1d677","line":336,"range":{"start_line":336,"start_character":35,"end_line":336,"end_character":37},"updated":"2022-04-13 21:17:15.000000000","message":"I think these quotes may have ended up in the wrong spot?","commit_id":"9b4c38dccbcbd03243e8600422d99554c269a29f"}]}
