)]}'
{"inc/python":[{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"21c4aea46de08f62c4b7e302129e1166729f2747","unresolved":false,"context_lines":[{"line_number":193,"context_line":"# this should be used for projects which run services, like all services"},{"line_number":194,"context_line":"function setup_develop {"},{"line_number":195,"context_line":"    local project_dir\u003d$1"},{"line_number":196,"context_line":"    extras\u003d$2"},{"line_number":197,"context_line":"    setup_package_with_req_sync $project_dir -e $extras"},{"line_number":198,"context_line":"}"},{"line_number":199,"context_line":""}],"source_content_type":"application/x-shellscript","patch_set":1,"id":"1a4dcd0f_f43acc97","line":196,"updated":"2015-08-04 19:30:59.000000000","message":"forgot local here.","commit_id":"e1851f8b9225d3a4db0d87e7c8ef1cb952f7dac1"},{"author":{"_account_id":2750,"name":"Sean Dague","email":"sean@dague.net","username":"sdague"},"change_message_id":"ec394e4a500f497d159f2370f9b360962612de87","unresolved":false,"context_lines":[{"line_number":218,"context_line":"function setup_package_with_req_sync {"},{"line_number":219,"context_line":"    local project_dir\u003d$1"},{"line_number":220,"context_line":"    local flags\u003d$2"},{"line_number":221,"context_line":"    local extras\u003d$3"},{"line_number":222,"context_line":""},{"line_number":223,"context_line":"    # Don\u0027t update repo if local changes exist"},{"line_number":224,"context_line":"    # Don\u0027t use buggy \"git diff --quiet\""}],"source_content_type":"application/x-shellscript","patch_set":1,"id":"1a4dcd0f_ab6e27c7","line":221,"updated":"2015-08-04 18:16:23.000000000","message":"hmmm... I guess I\u0027m kind of ok with extras only being allowed when flags are used. This might need unwind later.","commit_id":"e1851f8b9225d3a4db0d87e7c8ef1cb952f7dac1"},{"author":{"_account_id":2750,"name":"Sean Dague","email":"sean@dague.net","username":"sdague"},"change_message_id":"ec394e4a500f497d159f2370f9b360962612de87","unresolved":false,"context_lines":[{"line_number":275,"context_line":"        extras\u003d\"[$extras]\""},{"line_number":276,"context_line":"    fi"},{"line_number":277,"context_line":""},{"line_number":278,"context_line":"    pip_install $flags \"$project_dir$extras\""},{"line_number":279,"context_line":"    # ensure that further actions can do things like setup.py sdist"},{"line_number":280,"context_line":"    if [[ \"$flags\" \u003d\u003d \"-e\" ]]; then"},{"line_number":281,"context_line":"        safe_chown -R $STACK_USER $1/*.egg-info"}],"source_content_type":"application/x-shellscript","patch_set":1,"id":"1a4dcd0f_6b97bf90","line":278,"updated":"2015-08-04 18:16:23.000000000","message":"this is really a directory some times... that works?","commit_id":"e1851f8b9225d3a4db0d87e7c8ef1cb952f7dac1"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"21c4aea46de08f62c4b7e302129e1166729f2747","unresolved":false,"context_lines":[{"line_number":275,"context_line":"        extras\u003d\"[$extras]\""},{"line_number":276,"context_line":"    fi"},{"line_number":277,"context_line":""},{"line_number":278,"context_line":"    pip_install $flags \"$project_dir$extras\""},{"line_number":279,"context_line":"    # ensure that further actions can do things like setup.py sdist"},{"line_number":280,"context_line":"    if [[ \"$flags\" \u003d\u003d \"-e\" ]]; then"},{"line_number":281,"context_line":"        safe_chown -R $STACK_USER $1/*.egg-info"}],"source_content_type":"application/x-shellscript","patch_set":1,"id":"1a4dcd0f_94ca68a0","line":278,"in_reply_to":"1a4dcd0f_6b97bf90","updated":"2015-08-04 19:30:59.000000000","message":"I tried it with the follow-on patch and it used /opt/stack/keystone[ldap] and the extra packages were installed.","commit_id":"e1851f8b9225d3a4db0d87e7c8ef1cb952f7dac1"},{"author":{"_account_id":7118,"name":"Ian Wienand","email":"iwienand@redhat.com","username":"iwienand"},"change_message_id":"5752ba6c8e24e77d3ec8a2423d3399eb8d9d59ed","unresolved":false,"context_lines":[{"line_number":181,"context_line":""},{"line_number":182,"context_line":"# this should be used if you want to install globally, all libraries should"},{"line_number":183,"context_line":"# use this, especially *oslo* ones"},{"line_number":184,"context_line":"function setup_install {"},{"line_number":185,"context_line":"    local project_dir\u003d$1"},{"line_number":186,"context_line":"    setup_package_with_constraints_edit $project_dir"},{"line_number":187,"context_line":"}"}],"source_content_type":"application/x-shellscript","patch_set":3,"id":"da20952f_e3d1b030","line":184,"updated":"2015-09-09 22:23:46.000000000","message":"why not add this here too ...","commit_id":"a85cc11576c293bfc3bc9c9b95f7b4df96c26002"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"1a460efdc01231cc6c02e4daf46d6ea801071836","unresolved":false,"context_lines":[{"line_number":181,"context_line":""},{"line_number":182,"context_line":"# this should be used if you want to install globally, all libraries should"},{"line_number":183,"context_line":"# use this, especially *oslo* ones"},{"line_number":184,"context_line":"function setup_install {"},{"line_number":185,"context_line":"    local project_dir\u003d$1"},{"line_number":186,"context_line":"    setup_package_with_constraints_edit $project_dir"},{"line_number":187,"context_line":"}"}],"source_content_type":"application/x-shellscript","patch_set":3,"id":"da20952f_3d0a3721","line":184,"in_reply_to":"da20952f_e3d1b030","updated":"2015-09-11 18:25:11.000000000","message":"Done","commit_id":"a85cc11576c293bfc3bc9c9b95f7b4df96c26002"},{"author":{"_account_id":7118,"name":"Ian Wienand","email":"iwienand@redhat.com","username":"iwienand"},"change_message_id":"5752ba6c8e24e77d3ec8a2423d3399eb8d9d59ed","unresolved":false,"context_lines":[{"line_number":186,"context_line":"    setup_package_with_constraints_edit $project_dir"},{"line_number":187,"context_line":"}"},{"line_number":188,"context_line":""},{"line_number":189,"context_line":"# this should be used for projects which run services, like all services"},{"line_number":190,"context_line":"function setup_develop {"},{"line_number":191,"context_line":"    local project_dir\u003d$1"},{"line_number":192,"context_line":"    local extras\u003d$2"}],"source_content_type":"application/x-shellscript","patch_set":3,"id":"da20952f_c3102c03","line":189,"updated":"2015-09-09 22:23:46.000000000","message":"can we please document this, with an example of the extras and mention that it\u0027s like pip foo[extra]","commit_id":"a85cc11576c293bfc3bc9c9b95f7b4df96c26002"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"1a460efdc01231cc6c02e4daf46d6ea801071836","unresolved":false,"context_lines":[{"line_number":186,"context_line":"    setup_package_with_constraints_edit $project_dir"},{"line_number":187,"context_line":"}"},{"line_number":188,"context_line":""},{"line_number":189,"context_line":"# this should be used for projects which run services, like all services"},{"line_number":190,"context_line":"function setup_develop {"},{"line_number":191,"context_line":"    local project_dir\u003d$1"},{"line_number":192,"context_line":"    local extras\u003d$2"}],"source_content_type":"application/x-shellscript","patch_set":3,"id":"da20952f_5d828b53","line":189,"in_reply_to":"da20952f_c3102c03","updated":"2015-09-11 18:25:11.000000000","message":"Done","commit_id":"a85cc11576c293bfc3bc9c9b95f7b4df96c26002"},{"author":{"_account_id":7118,"name":"Ian Wienand","email":"iwienand@redhat.com","username":"iwienand"},"change_message_id":"5752ba6c8e24e77d3ec8a2423d3399eb8d9d59ed","unresolved":false,"context_lines":[{"line_number":211,"context_line":"# install this package we get the from source version."},{"line_number":212,"context_line":"#"},{"line_number":213,"context_line":"# Uses globals ``REQUIREMENTS_DIR``"},{"line_number":214,"context_line":"# setup_develop directory"},{"line_number":215,"context_line":"function setup_package_with_constraints_edit {"},{"line_number":216,"context_line":"    local project_dir\u003d$1"},{"line_number":217,"context_line":"    local flags\u003d$2"}],"source_content_type":"application/x-shellscript","patch_set":3,"id":"da20952f_63e60018","line":214,"updated":"2015-09-09 22:23:46.000000000","message":"can we fix this usage string while we\u0027re here","commit_id":"a85cc11576c293bfc3bc9c9b95f7b4df96c26002"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"1a460efdc01231cc6c02e4daf46d6ea801071836","unresolved":false,"context_lines":[{"line_number":211,"context_line":"# install this package we get the from source version."},{"line_number":212,"context_line":"#"},{"line_number":213,"context_line":"# Uses globals ``REQUIREMENTS_DIR``"},{"line_number":214,"context_line":"# setup_develop directory"},{"line_number":215,"context_line":"function setup_package_with_constraints_edit {"},{"line_number":216,"context_line":"    local project_dir\u003d$1"},{"line_number":217,"context_line":"    local flags\u003d$2"}],"source_content_type":"application/x-shellscript","patch_set":3,"id":"da20952f_ce255eae","line":214,"in_reply_to":"da20952f_63e60018","updated":"2015-09-11 18:25:11.000000000","message":"Done","commit_id":"a85cc11576c293bfc3bc9c9b95f7b4df96c26002"},{"author":{"_account_id":7118,"name":"Ian Wienand","email":"iwienand@redhat.com","username":"iwienand"},"change_message_id":"5752ba6c8e24e77d3ec8a2423d3399eb8d9d59ed","unresolved":false,"context_lines":[{"line_number":215,"context_line":"function setup_package_with_constraints_edit {"},{"line_number":216,"context_line":"    local project_dir\u003d$1"},{"line_number":217,"context_line":"    local flags\u003d$2"},{"line_number":218,"context_line":"    local extras\u003d$3"},{"line_number":219,"context_line":""},{"line_number":220,"context_line":"    if [ -n \"$REQUIREMENTS_DIR\" ]; then"},{"line_number":221,"context_line":"        # Constrain this package to this project directory from here on out."}],"source_content_type":"application/x-shellscript","patch_set":3,"id":"da20952f_23c7a865","line":218,"updated":"2015-09-09 22:23:46.000000000","message":"there\u0027s a bit of a gotcha with this if a flag isn\u0027t added and we recognise the extras as a flag.\n\nSince this is only used from setup_install i think it would be good if we just sort that out now by adding \"extras\" support in that fn too, instead of making the mistake later.\n\nI think maybe this function could be renamed with an _ to indicate it\u0027s an internal function too","commit_id":"a85cc11576c293bfc3bc9c9b95f7b4df96c26002"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"1a460efdc01231cc6c02e4daf46d6ea801071836","unresolved":false,"context_lines":[{"line_number":215,"context_line":"function setup_package_with_constraints_edit {"},{"line_number":216,"context_line":"    local project_dir\u003d$1"},{"line_number":217,"context_line":"    local flags\u003d$2"},{"line_number":218,"context_line":"    local extras\u003d$3"},{"line_number":219,"context_line":""},{"line_number":220,"context_line":"    if [ -n \"$REQUIREMENTS_DIR\" ]; then"},{"line_number":221,"context_line":"        # Constrain this package to this project directory from here on out."}],"source_content_type":"application/x-shellscript","patch_set":3,"id":"da20952f_2e165a49","line":218,"in_reply_to":"da20952f_23c7a865","updated":"2015-09-11 18:25:11.000000000","message":"Done","commit_id":"a85cc11576c293bfc3bc9c9b95f7b4df96c26002"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"f3fb80f86dbcb4298fb691fc843b4965bd8a7844","unresolved":false,"context_lines":[{"line_number":215,"context_line":"function setup_package_with_constraints_edit {"},{"line_number":216,"context_line":"    local project_dir\u003d$1"},{"line_number":217,"context_line":"    local flags\u003d$2"},{"line_number":218,"context_line":"    local extras\u003d$3"},{"line_number":219,"context_line":""},{"line_number":220,"context_line":"    if [ -n \"$REQUIREMENTS_DIR\" ]; then"},{"line_number":221,"context_line":"        # Constrain this package to this project directory from here on out."}],"source_content_type":"application/x-shellscript","patch_set":3,"id":"da20952f_0e36fb02","line":218,"in_reply_to":"da20952f_23c7a865","updated":"2015-09-11 16:18:02.000000000","message":"This function should be private","commit_id":"a85cc11576c293bfc3bc9c9b95f7b4df96c26002"},{"author":{"_account_id":7118,"name":"Ian Wienand","email":"iwienand@redhat.com","username":"iwienand"},"change_message_id":"5752ba6c8e24e77d3ec8a2423d3399eb8d9d59ed","unresolved":false,"context_lines":[{"line_number":232,"context_line":"# ``pip install -e`` the package, which processes the dependencies"},{"line_number":233,"context_line":"# using pip before running `setup.py develop`"},{"line_number":234,"context_line":"# Uses globals ``STACK_USER``"},{"line_number":235,"context_line":"# setup_develop_no_requirements_update directory"},{"line_number":236,"context_line":"function setup_package {"},{"line_number":237,"context_line":"    local project_dir\u003d$1"},{"line_number":238,"context_line":"    local flags\u003d$2"}],"source_content_type":"application/x-shellscript","patch_set":3,"id":"da20952f_43c2dc54","line":235,"updated":"2015-09-09 22:23:46.000000000","message":"could we fix up this string too","commit_id":"a85cc11576c293bfc3bc9c9b95f7b4df96c26002"},{"author":{"_account_id":7118,"name":"Ian Wienand","email":"iwienand@redhat.com","username":"iwienand"},"change_message_id":"5752ba6c8e24e77d3ec8a2423d3399eb8d9d59ed","unresolved":false,"context_lines":[{"line_number":233,"context_line":"# using pip before running `setup.py develop`"},{"line_number":234,"context_line":"# Uses globals ``STACK_USER``"},{"line_number":235,"context_line":"# setup_develop_no_requirements_update directory"},{"line_number":236,"context_line":"function setup_package {"},{"line_number":237,"context_line":"    local project_dir\u003d$1"},{"line_number":238,"context_line":"    local flags\u003d$2"},{"line_number":239,"context_line":"    local extras\u003d$3"}],"source_content_type":"application/x-shellscript","patch_set":3,"id":"da20952f_43997c78","line":236,"updated":"2015-09-09 22:23:46.000000000","message":"I also think maybe we should rename this with _ to indicate it\u0027s not an external call too","commit_id":"a85cc11576c293bfc3bc9c9b95f7b4df96c26002"},{"author":{"_account_id":970,"name":"Dean Troyer","email":"dtroyer@gmail.com","username":"dtroyer"},"change_message_id":"f3fb80f86dbcb4298fb691fc843b4965bd8a7844","unresolved":false,"context_lines":[{"line_number":233,"context_line":"# using pip before running `setup.py develop`"},{"line_number":234,"context_line":"# Uses globals ``STACK_USER``"},{"line_number":235,"context_line":"# setup_develop_no_requirements_update directory"},{"line_number":236,"context_line":"function setup_package {"},{"line_number":237,"context_line":"    local project_dir\u003d$1"},{"line_number":238,"context_line":"    local flags\u003d$2"},{"line_number":239,"context_line":"    local extras\u003d$3"}],"source_content_type":"application/x-shellscript","patch_set":3,"id":"da20952f_8e744bcf","line":236,"in_reply_to":"da20952f_43997c78","updated":"2015-09-11 16:18:02.000000000","message":"I think this one is OK as a public interface even if we don\u0027t use it that way today.","commit_id":"a85cc11576c293bfc3bc9c9b95f7b4df96c26002"},{"author":{"_account_id":6486,"name":"Brant Knudson","email":"blk@acm.org","username":"blk-u"},"change_message_id":"1a460efdc01231cc6c02e4daf46d6ea801071836","unresolved":false,"context_lines":[{"line_number":233,"context_line":"# using pip before running `setup.py develop`"},{"line_number":234,"context_line":"# Uses globals ``STACK_USER``"},{"line_number":235,"context_line":"# setup_develop_no_requirements_update directory"},{"line_number":236,"context_line":"function setup_package {"},{"line_number":237,"context_line":"    local project_dir\u003d$1"},{"line_number":238,"context_line":"    local flags\u003d$2"},{"line_number":239,"context_line":"    local extras\u003d$3"}],"source_content_type":"application/x-shellscript","patch_set":3,"id":"da20952f_ee786291","line":236,"in_reply_to":"da20952f_8e744bcf","updated":"2015-09-11 18:25:11.000000000","message":"Done","commit_id":"a85cc11576c293bfc3bc9c9b95f7b4df96c26002"},{"author":{"_account_id":2750,"name":"Sean Dague","email":"sean@dague.net","username":"sdague"},"change_message_id":"47e860c23ab1b1d46325f567352acbf0c9d9a115","unresolved":false,"context_lines":[{"line_number":264,"context_line":"function setup_package {"},{"line_number":265,"context_line":"    local project_dir\u003d$1"},{"line_number":266,"context_line":"    local flags\u003d$2"},{"line_number":267,"context_line":"    local extras\u003d$3"},{"line_number":268,"context_line":""},{"line_number":269,"context_line":"    if [[ ! -z \"$extras\" ]]; then"},{"line_number":270,"context_line":"        extras\u003d\"[$extras]\""}],"source_content_type":"application/x-shellscript","patch_set":4,"id":"fa69d971_a57fe764","line":267,"updated":"2016-01-05 11:56:58.000000000","message":"how does this work if $flags is not set? Previously flags could be optional.","commit_id":"d3d204393babc9c230faf42a8e1dae2544ea6777"}]}
