)]}'
{
  "log": [
    {
      "commit": "0ff627286297a3957143577412884dc50ff8a57a",
      "tree": "3a89b5e1be063f5eceba369a96f458ec1dd82e5b",
      "parents": [
        "5ed2b7c6b2e2a5da50c3db9cda9e9b8e4ae4402f"
      ],
      "author": {
        "name": "yatinkarel",
        "email": "ykarel@redhat.com",
        "time": "Mon Sep 02 17:29:55 2024 +0530"
      },
      "committer": {
        "name": "yatin",
        "email": "ykarel@redhat.com",
        "time": "Tue Sep 03 08:14:00 2024 +0000"
      },
      "message": "Run chown for egg-info only if the directory exists\n\n9-stream jobs failing since [1] merged as these still use\nGLOBAL_VENV\u003dFalse.\negg-info directory is not created in project source\ndirectory when pyproject.toml is used in the project.\npyproject.toml being added across projects[2] to support pip 23.1.\n\n[1] https://review.opendev.org/c/openstack/nova/+/899753\n[2] https://review.opendev.org/q/topic:%22pip-23.1-support%22\n\nChange-Id: I53954a37461aee5dd7f487d6bd205caef4408392\n"
    },
    {
      "commit": "6990b06cd321930f69907ba42ee744755f8029fe",
      "tree": "04a7a73d90af283a60e33433bc5d984f7b1ba208",
      "parents": [
        "d84b874ef6fff88b93e9b0eab79dea6e6868f94f"
      ],
      "author": {
        "name": "Riccardo Pittau",
        "email": "elfosardo@gmail.com",
        "time": "Wed Jul 24 18:01:51 2024 +0200"
      },
      "committer": {
        "name": "Riccardo Pittau",
        "email": "elfosardo@gmail.com",
        "time": "Thu Jul 25 14:37:41 2024 +0200"
      },
      "message": "Install simplejson in devstack venv\n\nWorkaround to avoid failure due to missing osc dependency\nremoved in [1]\n\n[1] https://review.opendev.org/c/openstack/python-openstackclient/+/920001\n\nChange-Id: I3f7541e691717186b7c73f10ffabae6fc0c5c9f9\n"
    },
    {
      "commit": "41d253a6f94c1646f2bd28ac373d6aaf8bfa6089",
      "tree": "2cd2d9e7f725bd1c8acf42c180f24c917481a71f",
      "parents": [
        "5f35bfd2a76097147abd6de78a77e45399b927ff"
      ],
      "author": {
        "name": "Sean Mooney",
        "email": "work@seanmooney.info",
        "time": "Thu Jun 20 19:03:37 2024 +0100"
      },
      "committer": {
        "name": "Sean Mooney",
        "email": "work@seanmooney.info",
        "time": "Fri Jun 21 16:35:32 2024 +0100"
      },
      "message": "add ubuntu noble (24.04) support\n\nThis change installs setuptools in the requirements\nand global venv to ensure that distutils is present\n\nThis change also adds new single and two node\nnodeset for noble and a devstack platform job as nonvoting.\n\nChange-Id: Ie1f8ebc5db75d6913239c529ee923395a764e19c\n"
    },
    {
      "commit": "4ddd456dd3e71bcdf9a02a12dd5914b82ec48e91",
      "tree": "e3d115a26a90ed6738854a3b90cd8f092ab0b876",
      "parents": [
        "1ba76adccbf5d18a5dc6266d3808dcd97e0b9c68"
      ],
      "author": {
        "name": "Slawek Kaplonski",
        "email": "skaplons@redhat.com",
        "time": "Fri Feb 09 14:11:44 2024 +0100"
      },
      "committer": {
        "name": "Slawek Kaplonski",
        "email": "skaplons@redhat.com",
        "time": "Fri Feb 09 15:50:16 2024 +0100"
      },
      "message": "Add support for the pyproject.toml file in setup with constraints\n\nIn the _setup_package_with_constraints_edit name of the package was\nalways discovered from the setup.cfg file. But as some projects\nimplements PEP-621 (see [1] for the SQLAlchemy for example) it is not\nenough now.\nThis patch adds parsing pyproject.toml file also if name is not found in\nthe setup.cfg file.\n\n[1] https://github.com/sqlalchemy/sqlalchemy/commit/a8dbf8763a8fa2ca53cc01033f06681a421bf60b\n\nCloses-Bug: #2052509\nChange-Id: Iee9262079d09a8bd22cd05a8f17950a41a0d1f9d\n"
    },
    {
      "commit": "a40f9cb91fbedddec89f0ffd6c7dd4b3828a232e",
      "tree": "bf8936c984c528558867c1f9dbce6d96c127e767",
      "parents": [
        "9dba09975d2b23ff60b150f16d4db74d3d1ecbdd"
      ],
      "author": {
        "name": "Clark Boylan",
        "email": "clark.boylan@gmail.com",
        "time": "Wed Apr 04 14:02:30 2018 -0700"
      },
      "committer": {
        "name": "Dr. Jens Harbott",
        "email": "harbott@osism.tech",
        "time": "Wed Aug 02 07:07:25 2023 +0200"
      },
      "message": "Add option to install everything in global venvs\n\nSince we are python3 only for openstack we create a single python3\nvirtualenv to install all the packages into. This gives us the benefits\nof installing into a virtualenv while still ensuring coinstallability.\nThis is a major change and will likely break many things.\n\nThere are several reasons for this. The change that started this effort\nwas pip stopped uninstalling packages which used distutils to generate\ntheir package installation. Many distro packages do this which meant\nthat pip installed packages and distro packages could not coexist in the\nglobal install space. More recently git has made pip installing repos as\nroot more difficult due to file ownership concerns.\n\nCurrently the switch to the global venv is optional, but if we go down\nthis path we should very quickly remove the old global installation\nmethod as it has only caused us problems.\n\nMajor hurdles we have to get over are convincing rootwrap to trust\nbinaries in the virtualenvs (so you\u0027ll notice we update rootwrap\nconfigs).\n\nSome distros still have issues, keep them using the old setup for now.\n\nDepends-On: https://review.opendev.org/c/openstack/grenade/+/880266\nCo-Authored-By: Dr. Jens Harbott \u003cfrickler@offenerstapel.de\u003e\nChange-Id: If9bc7ba45522189d03f19b86cb681bb150ee2f25\n"
    },
    {
      "commit": "ec07b343d25e9964db57ef9c3e2a89deeb5ac56e",
      "tree": "8aba9bcbaeeb4deb79b6e317bb1e4bca0096bf3b",
      "parents": [
        "864f4d1ef05e3e539d3537fa4c8d731df9571c9d"
      ],
      "author": {
        "name": "Martin Kopec",
        "email": "mkopec@redhat.com",
        "time": "Tue Jan 24 17:38:45 2023 +0100"
      },
      "committer": {
        "name": "Martin Kopec",
        "email": "mkopec@redhat.com",
        "time": "Thu Feb 16 12:01:39 2023 +0100"
      },
      "message": "Remove support for opensuse\n\nWe haven\u0027t been testing the distro for a while in CI, e.g. in\nTempest, the jobs on opensuse15 haven\u0027t been executed for a year\nnow.\nTherefore the patch removes opensuse support from devstack.\n\nCloses-Bug: #2002900\nChange-Id: I0f5e4c644e2d14d1b8bb5bc0096d1469febe5fcc\n"
    },
    {
      "commit": "1d5be95196d31ba1a4ef125f4b06a5730f2af113",
      "tree": "4212d4fda4669abbc3c058519407f8cade9c14a7",
      "parents": [
        "50e3c06ec245e8a5e7ca24015b0c152e3bc40a5c"
      ],
      "author": {
        "name": "Clark Boylan",
        "email": "clark.boylan@gmail.com",
        "time": "Mon May 23 08:46:05 2022 -0700"
      },
      "committer": {
        "name": "Clark Boylan",
        "email": "clark.boylan@gmail.com",
        "time": "Mon May 23 08:46:50 2022 -0700"
      },
      "message": "Cleanup comment that should\u0027ve been removed\n\nThe previous change, I237f5663b0f8b060f6df130de04e17e2b1695f8a, removed\na SETUPTOOLS flag, but not the comment explaining why that flag was\npreviously set. Clean up that comment.\n\nChange-Id: I32b0240fd56310d7f10596aaa8ef432679bfd66a\n"
    },
    {
      "commit": "50e3c06ec245e8a5e7ca24015b0c152e3bc40a5c",
      "tree": "1876a283b05919beacbba07e51a0980b5b6df89a",
      "parents": [
        "34c28426767dea608b1bf54ad2bc7fdc27b49f16"
      ],
      "author": {
        "name": "Clark Boylan",
        "email": "clark.boylan@gmail.com",
        "time": "Thu May 19 13:36:43 2022 -0700"
      },
      "committer": {
        "name": "Clark Boylan",
        "email": "clark.boylan@gmail.com",
        "time": "Fri May 20 10:35:18 2022 -0700"
      },
      "message": "Fix dbcounter installation on Jammy\n\nThere are two problems with dbcounter installation on Jammy. The first\nis straightforward. We have to use `py_modules` instead of `modules` to\nspecify the source file. I don\u0027t know how this works on other distros\nbut the docs [0] seem to clearly indicate py_modules does this.\n\nThe second issue is quite an issue and requires story time. When\npip/setuptools insteall editable installs (as is done for many of the\nopenstack projects) it creates an easy-install.pth file that tells the\npython interpreter to add the source dirs of those repos to the python\npath. Normally these paths are appended to your sys.path. Pip\u0027s isolated\nbuild env relies on the assumption that these paths are appeneded to the\npath when it santizes sys.path to create the isolated environemnt.\n\nHowever, when SETUPTOOLS_SYS_PATH_TECHNIQUE is set to rewrite the paths\nare not appended and are inserted in the middle. This breaks pip\u0027s\nisolated build env which broke dbcounter installations. We fix this by\nnot setting SETUPTOOLS_SYS_PATH_TECHNIQUE to rewrite. Upstream indicates\nthe reason we set this half a decade ago has since been fixed properly.\n\nThe reason Jammy and nothing else breaks is that python3.10 is the first\npython version to use pip\u0027s isolated build envs by default.\n\nI\u0027ve locally fiddled with a patch to pip [1] to try and fix this\nbehavior even when rewrite is set. I don\u0027t plan to push this upstream\nbut it helps to illustrate where the problem lies. If someone else would\nlike to upstream this feel free.\n\nFinally this change makes the jammy platform job voting again and adds\nit to the gate to ensure we don\u0027t regress again.\n\n[0] https://docs.python.org/3/distutils/sourcedist.html#specifying-the-files-to-distribute\n[1] https://paste.opendev.org/show/bqVAuhgMtVtfYupZK5J6/\n\nChange-Id: I237f5663b0f8b060f6df130de04e17e2b1695f8a\n"
    },
    {
      "commit": "6b9a5646225a766f6240e2a1a93a92b82e088aa0",
      "tree": "69b78dd517cd4f914cae253031747c18755cadde",
      "parents": [
        "13f02e8b7607e89096f719b1fa83734bf3332ec6"
      ],
      "author": {
        "name": "Ian Wienand",
        "email": "iwienand@redhat.com",
        "time": "Wed Jul 28 11:19:57 2021 +1000"
      },
      "committer": {
        "name": "Ian Wienand",
        "email": "iwienand@redhat.com",
        "time": "Tue Aug 10 14:22:35 2021 +1000"
      },
      "message": "Revert \"Workaround for new pip 20.3 behavior\"\n\nThis reverts commit 7a3a7ce876a37376fe0dca7278e41a4f46867daa and\nbcd0acf6c0b5d6501e91133c3a937b3fc40f7122 and part of\nf1ed7c77c50ac28cb58c9f7ed885c6a3e0a75403 which all cap our pip\ninstalls.\n\nGiven the pip ecosystem can often incorporate major changes, tracking\nupstream at least generally gives us one problem at a time to solve\nrather than trying to handle version jumps when LTS distros update.\n\nThe new dependency resolver included some changes that disallow\nsetting URL\u0027s like \"file:///path/to/project#egg\u003dproject\" in\nconstraints.  Apparently the fact it used to work was an accident of\nthe requires/constraints mechanism; it does make some sense as the URL\ndoesn\u0027t really have a version-number that the resolver can put in an\nordering graph.\n\nThe _setup_package_with_constraints_edit function comment highlights\nwhat this is trying to do\n\n # Updates the constraints from REQUIREMENTS_DIR to reflect the\n # future installed state of this package. This ensures when we\n # install this package we get the from source version.\n\nIn other words; if constraints has \"foo\u003d\u003d1.2.3\" and Zuul has checked\nout \"foo\" for testing, we have to make sure pip doesn\u0027t choose version\n1.2.3 from pypi.\n\nIt seems like removing the entry from upper-requirements.txt is the\nimportant part; adding the URL path to the on-disk version was just\nsomething that seemed to work at the time, but isn\u0027t really necessary.\nWe will install the package in question which will be the latest\nversion (from Zuul checkout) and without the package in\nupper-requirements.txt nothing will try and downgrade it.\n\nTherefore the solution proposed here is to remove the adding of the\nURL parts.\n\nThis allows us to uncap pip and restore testing with the new\ndependency resolver.\n\nCloses-Bug: #1906322\nChange-Id: Ib9ba52147199a9d6d0293182d5db50c4a567d677\n"
    },
    {
      "commit": "18b4251bf4f689923a19bf7fbc50d5c2ea422b21",
      "tree": "c78c7585bc96ce770cc8e0afae9f6b6391bf864d",
      "parents": [
        "e7625fc72cbbbfaf37a6682166bc2180d4e50855"
      ],
      "author": {
        "name": "Ian Wienand",
        "email": "iwienand@redhat.com",
        "time": "Mon Aug 31 16:22:57 2020 +1000"
      },
      "committer": {
        "name": "Jens Harbott",
        "email": "j.harbott@x-ion.de",
        "time": "Mon Aug 31 15:01:20 2020 +0200"
      },
      "message": "Use SETUPTOOLS_USE_DISTUTILS\u003dstdlib for global pip installs\n\nA new setuptools release has changed the way pip installs are done,\nsee [0]. With this change we switch back to using the distro\nmethod for global pip installs.\n\nTemporarily make grenade jobs non-voting in order to allow this\npatch to be backported.\n\n[0] http://lists.openstack.org/pipermail/openstack-discuss/2020-August/016905.html\n\nChange-Id: I5d8aa0e58e0409c54451b51de5eb70ba9a68d849\n"
    },
    {
      "commit": "3cbb33e5c6068d80c50f64a543550611eca8309a",
      "tree": "4f4ae2c84cfd8d6c3130de6041c013fa37f8f2e6",
      "parents": [
        "48c0d385023d620fb114fc81125599676c022320"
      ],
      "author": {
        "name": "Radosław Piliszek",
        "email": "radoslaw.piliszek@gmail.com",
        "time": "Tue Jun 30 17:52:10 2020 +0200"
      },
      "committer": {
        "name": "Radosław Piliszek",
        "email": "radoslaw.piliszek@gmail.com",
        "time": "Tue Jun 30 17:52:10 2020 +0200"
      },
      "message": "Fix python3_enable to return true\n\nRecent regression spotted by Dmitry Tantsur.\nDevStack dropped Py2 support but the now-unused-in-devstack\npython3_enable got its result nastily inversed.\n\nChange-Id: I4b37cc847a24705c4955cec2e6e45f0514705f1b\n"
    },
    {
      "commit": "d7a82f41e469fc51fb021184c1fa6c98da428411",
      "tree": "8b0efcf039e29af25b4c70f7a842ae3b44cfbda6",
      "parents": [
        "f6286cb586eb1f861866bfdf85c4f873c79fd592"
      ],
      "author": {
        "name": "Jens Harbott",
        "email": "j.harbott@x-ion.de",
        "time": "Tue Jun 23 10:21:09 2020 +0200"
      },
      "committer": {
        "name": "Jens Harbott",
        "email": "j.harbott@x-ion.de",
        "time": "Fri Jun 26 15:27:32 2020 +0200"
      },
      "message": "Drop support for python2\n\npython2 is EOL, let\u0027s move on and only support python3.\n\nChange-Id: Ieffda4edea9cc19484c04420ed703f7141ef9f15\n"
    },
    {
      "commit": "f1ed7c77c50ac28cb58c9f7ed885c6a3e0a75403",
      "tree": "e266d726c846b032bc55553e37a31afb3538fad2",
      "parents": [
        "c2c2b6b415a4289ab740e7506f68e820ecbc5818"
      ],
      "author": {
        "name": "Jens Harbott",
        "email": "j.harbott@x-ion.de",
        "time": "Thu Jun 11 05:51:26 2020 +0000"
      },
      "committer": {
        "name": "Jens Harbott",
        "email": "j.harbott@x-ion.de",
        "time": "Tue Jun 23 08:02:52 2020 +0200"
      },
      "message": "Use python3 pip module instead of pip binary\n\nFocal only provides a pip3 binary, no pip3.8. Instead of working around\nthat with a symlink, use the module instead.\n\nAdd version information output for this variant.\n\nChange-Id: I7af194ecc40e4d43c10ce067a661bb6ab4ca37d4\n"
    },
    {
      "commit": "be26306b4ab470e65cc93305453d2945aa33bf78",
      "tree": "737e10a46fe51a324ebd916111607328097882ec",
      "parents": [
        "09b5b05c471985ad53c4b321e993101f007ee915"
      ],
      "author": {
        "name": "Radosław Piliszek",
        "email": "radoslaw.piliszek@gmail.com",
        "time": "Mon Mar 30 09:56:53 2020 +0200"
      },
      "committer": {
        "name": "Radosław Piliszek",
        "email": "radoslaw.piliszek@gmail.com",
        "time": "Mon Mar 30 19:53:32 2020 +0200"
      },
      "message": "Support extras in Glance Store install\n\nRecent change to devstack dropped installing test-requirements [1]\nHowever, this caused gate failures due to lack of glance-store\ndeps for cinder and swift support.\n\nThis patch makes devstack install relevant extras depending on\nenabled features.\n\nAdditionally, relevant functions are added/fixed to make this\npossible.\n\nglance-store \u003d glance_store (for gerrit search match)\n\n[1] https://review.opendev.org/715469\n\nChange-Id: I0bf5792a6058b52936115b515ea8360f6264a7c9\n"
    },
    {
      "commit": "09b5b05c471985ad53c4b321e993101f007ee915",
      "tree": "bf4320f72cc396597e21e2c4ec7aaeb0cd7a70b3",
      "parents": [
        "c2830fb26759678b1bfe90a77aa5c149599d6705"
      ],
      "author": {
        "name": "Monty Taylor",
        "email": "mordred@inaugust.com",
        "time": "Fri Mar 27 11:22:39 2020 -0500"
      },
      "committer": {
        "name": "Monty Taylor",
        "email": "mordred@inaugust.com",
        "time": "Fri Mar 27 11:22:39 2020 -0500"
      },
      "message": "Stop installing test-requirements with projects\n\nThis is a test of installing openstack and then seeing if it works.\nOpenStack components do not need test-requirements to operate,\nthat\u0027s why they are test-requirements.\n\nAdditionally, as we look forward to depsolver pip, this is going\nto screw us because we don\u0027t apply constraints to linters, which\nare expressed in - you guessed it, test-requirements.\n\nChange-Id: I8f24b839bf42e2fb9803dc7df3a30ae20cf264eb\n"
    },
    {
      "commit": "c2830fb26759678b1bfe90a77aa5c149599d6705",
      "tree": "be2a104828e26862b39355fd4d218e91ecd5bc53",
      "parents": [
        "c26dfb0d6f165a567925390ac9c6f6ac32742fee"
      ],
      "author": {
        "name": "Monty Taylor",
        "email": "mordred@inaugust.com",
        "time": "Fri Mar 27 11:08:27 2020 -0500"
      },
      "committer": {
        "name": "Monty Taylor",
        "email": "mordred@inaugust.com",
        "time": "Fri Mar 27 11:12:31 2020 -0500"
      },
      "message": "Revert \"Run pip check at end of devstack\"\n\nThis reverts commit 79b8e79488a6268f37244188ab831e99a99648c8.\n\nThis is breaking things in various jobs, most notably because\nwe do not put constraints on linters - but we install\ntest-requirements which then can conflict with each other.\n\nChange-Id: Ibc5603c61b38ce44db58fb27a27352f59123ad09\n"
    },
    {
      "commit": "c26dfb0d6f165a567925390ac9c6f6ac32742fee",
      "tree": "6a030a3a3ce791a5d092ec5b4ecbe51f7f12b047",
      "parents": [
        "37659927923473c13f4bec88855205d0ee28bcfb"
      ],
      "author": {
        "name": "Monty Taylor",
        "email": "mordred@inaugust.com",
        "time": "Wed Mar 25 08:32:26 2020 -0500"
      },
      "committer": {
        "name": "Dr. Jens Harbott",
        "email": "j.harbott@x-ion.de",
        "time": "Thu Mar 26 09:44:23 2020 +0000"
      },
      "message": "Run pip check at end of devstack\n\nThe new pip depsolver is coming this summer. Until it\u0027s ready,\nrun pip check at the end of devstack to make sure we\u0027re not\nsomehow installing conflicting package versions. We shouldn\u0027t\nbe, because of constraints, but if we are, better to know and\nstart figuring it out.\n\nChange-Id: Id98f0848ff5a252d93e5f8029df2d069924d603f\n"
    },
    {
      "commit": "21a10d3499abd6e9cd1950b3615502bef5ad6b45",
      "tree": "38757a10e8e7c5c46ee3784cf2c509b82150f6ca",
      "parents": [
        "2dcbc28abab7eb51b9e3fd549fab49d42c48e90f"
      ],
      "author": {
        "name": "Federico Ressi",
        "email": "fressi@redhat.com",
        "time": "Fri Jan 31 07:43:30 2020 +0100"
      },
      "committer": {
        "name": "Radosław Piliszek",
        "email": "radoslaw.piliszek@gmail.com",
        "time": "Mon Feb 17 17:03:47 2020 +0000"
      },
      "message": "Use python3 as default python command\n\nAfter Python 2 is getting unsupported, new distros\nlike CentOS 8 and RHEL8 have stopped providing \u0027python\u0027\npackage forcing user to decide which alternative to\nuse by installing \u0027python2\u0027 or \u0027python3.x\u0027 package\nand then setting python alternative.\n\nThis change is intended to make using python3 command as\nmuch as possible and use it as default \u0027python\u0027 alternative\nwhere needed.\n\nThe final goals motivating this change are:\n - stop using python2 as much as possible\n - help adding support for CentOS 8 and RHEL8\n\nChange-Id: I1e90db987c0bfa6206c211e066be03ea8738ad3f\n"
    },
    {
      "commit": "2dcbc28abab7eb51b9e3fd549fab49d42c48e90f",
      "tree": "a530d3fb202efc3170c3373194cb127d2254446e",
      "parents": [
        "93d22d82988ee781feddf84535d65adf44472379"
      ],
      "author": {
        "name": "Federico Ressi",
        "email": "fressi@redhat.com",
        "time": "Wed Feb 05 11:29:51 2020 +0100"
      },
      "committer": {
        "name": "Dr. Jens Harbott",
        "email": "j.harbott@x-ion.de",
        "time": "Mon Feb 17 12:00:41 2020 +0000"
      },
      "message": "Install versioned python RPMs on RedHat distros\n\nSet default python3 version as 3 for cases python3\nis not installed before running DevStack.\n\nImplements installation of required python3x package\nfor RedHat family distros with package name depending on\nconfigurable ${PYTHON3_VERSION}. Examples:\n\n  3 \u003d\u003e python3 python3-devel (default one)\n  3.6 \u003d\u003e python36 python36-devel\n  3.7 \u003d\u003e python37 python37-devel\n\nThis should help in situations where there are more\nthan one python available for given platform and\nDevStack is asked to pick one by its full 3.x version\n\nChange-Id: I49d86bc9193165e0a41e8e8720be37d81a4e7ee0\n"
    },
    {
      "commit": "80758e6932c79c48348730dfe571b9bcb02c5410",
      "tree": "984ac34a0ecfd371e5d3d340fd12d7cd026aaa4a",
      "parents": [
        "64b3c5f468110e00a30216186e590e87f81bc328",
        "78cf6f642aea91385dfbe6e1fa594e9f5373e69c"
      ],
      "author": {
        "name": "Zuul",
        "email": "zuul@review.opendev.org",
        "time": "Sat Feb 15 16:01:08 2020 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "review@openstack.org",
        "time": "Sat Feb 15 16:01:08 2020 +0000"
      },
      "message": "Merge \"Always install python3 and its dev package\""
    },
    {
      "commit": "29bf8523965b504624f9450f3dffe863994b4077",
      "tree": "3d33f9e4902f3a3d4eecf536a1d98141e1258b21",
      "parents": [
        "f9a6986b90f896f2c0d122ae2572411f9c13f506"
      ],
      "author": {
        "name": "Radosław Piliszek",
        "email": "radoslaw.piliszek@gmail.com",
        "time": "Fri Jan 24 11:52:13 2020 +0100"
      },
      "committer": {
        "name": "Radosław Piliszek",
        "email": "radoslaw.piliszek@gmail.com",
        "time": "Fri Jan 24 12:55:21 2020 +0100"
      },
      "message": "Do not try finding pip for python2 when not required\n\n[1] stopped installing pip for py2 when py3 is being used.\n\nThis patch makes sure we check only for py3 pip then.\n\nAlso removed some no-longer-relevant comment and\nmade uninstall behave the same.\n\nCheck for pip\u003e\u003d6 removed too.\n\nSee also [2].\n\n[1] 279a7589b03db69fd1b85d947cd0171dacef94ee\n[2] http://lists.openstack.org/pipermail/openstack-discuss/2020-January/012182.html\n\nChange-Id: I36ee53e57e468d760b80a7e621b90899867a8efd\n"
    },
    {
      "commit": "78cf6f642aea91385dfbe6e1fa594e9f5373e69c",
      "tree": "ac65c1f2f82ce3f88f72bee3e5b0a02fb7566511",
      "parents": [
        "e18325ca67dcb70b01a29563432291e1baf9f46e"
      ],
      "author": {
        "name": "Terry Wilson",
        "email": "twilson@redhat.com",
        "time": "Tue Oct 15 19:45:09 2019 +0000"
      },
      "committer": {
        "name": "Terry Wilson",
        "email": "twilson@redhat.com",
        "time": "Wed Jan 22 20:03:29 2020 -0600"
      },
      "message": "Always install python3 and its dev package\n\nSome distros do not install python3/python3-devel with the minimal\ninstall. F29 doesn\u0027t install -devel, and neither Centos 7 or 8\ninstall either. This patch ensures that these packages get installed.\n\nIdeally, PYTHON3_VERSION would be set *after* ensuring that python3\nwas installed, but it gets a little tricky with all of the includes.\nThis sets it to 3.6 as nothing uses 3.5 anymore.\n\nChange-Id: I7bdfc408b7c18273639ec26eade475856ac43593\n"
    },
    {
      "commit": "6b6bdc7111aa6f953a29c5ffc8854039336ce660",
      "tree": "dfa6eeae055b90324722010c582fb7da955298b5",
      "parents": [
        "035b41b9b28e0cda61dc7427dcd7e4b44b7a6563"
      ],
      "author": {
        "name": "Stephen Finucane",
        "email": "sfinucan@redhat.com",
        "time": "Wed Oct 09 16:13:20 2019 +0100"
      },
      "committer": {
        "name": "Stephen Finucane",
        "email": "sfinucan@redhat.com",
        "time": "Fri Jan 17 11:19:16 2020 +0000"
      },
      "message": "inc/python: Remove ability to mark packages as non-Python3\n\nEverything in OpenStack *must* be Python 3 supporting now, which means\nit\u0027s time to remove the functionality that allows us to blacklist\npackages that didn\u0027t support Python 3.\n\nChange-Id: I7c8cf538ec88bd4056b0109f19671e3d65f5da3a\nSigned-off-by: Stephen Finucane \u003csfinucan@redhat.com\u003e\n"
    },
    {
      "commit": "bcb2c30c317834f62cab470dc0b58670d945a6ef",
      "tree": "646a2b87bc883d71e888c5f514b22fa7475de2b9",
      "parents": [
        "4143ce6fc95ccd9bde88c22baaa3eeaba58183f8"
      ],
      "author": {
        "name": "Ian Wienand",
        "email": "iwienand@redhat.com",
        "time": "Mon Jan 13 16:31:20 2020 +1100"
      },
      "committer": {
        "name": "Ian Wienand",
        "email": "iwienand@redhat.com",
        "time": "Mon Jan 13 16:31:20 2020 +1100"
      },
      "message": "Remove TRACK_DEPENDS\n\nThis was added in 2012 with I89677fd54635e82b10ab674ddeb9ffb3f1a755f0,\nbut I can not see it being used anywhere currently.\n\nIt\u0027s use of virtualenv\u0027s has become problematic in a python2\ndeprecated world, but since it is not used, remove it to avoid further\nconfusion.\n\nChange-Id: I65d44d24f449436ca6229928eee2c5a021793055\n"
    },
    {
      "commit": "16bccbcea410ce426f83b5086424080b5bfaf925",
      "tree": "d29b241c280fd43c9d416295add55f0281d47b03",
      "parents": [
        "650769a3115704aa8af8b346a57838d46b87ba6a"
      ],
      "author": {
        "name": "Peter Penchev",
        "email": "openstack-dev@storpool.com",
        "time": "Mon Sep 09 15:14:11 2019 +0300"
      },
      "committer": {
        "name": "Peter Penchev",
        "email": "openstack-dev@storpool.com",
        "time": "Mon Sep 09 15:14:11 2019 +0300"
      },
      "message": "Revert \"install LIBS_FROM_GIT using python 2 and 3 where appropriate\"\n\nAll the OpenStack projects should be able to run under Python 3 now so\nthe fallback installation of the Python 2 libraries should not be\nneeded any longer. This also avoids the problem of script files\ninstalled by the libraries sometimes being overwritten by the Python 2\nversion leading to incorrect execution later, as discussed in\nhttp://lists.openstack.org/pipermail/openstack-discuss/2019-September/009226.html\n\nThis reverts commit a2eb89417fbb6d61526b1819cbe3d0a60537eedd.\n\nChange-Id: I1cdb7e4a209872f1620be556b7278879a4b86df5\n"
    },
    {
      "commit": "9b6d2f20b47523ddc51349943dd76bb76d1c58d8",
      "tree": "89c6b25118e2c5078d5600357c53ba65e8afae38",
      "parents": [
        "371a25328525ac16677ad721f725e81628f9d941"
      ],
      "author": {
        "name": "Matt Riedemann",
        "email": "mriedem.os@gmail.com",
        "time": "Tue Jun 18 10:43:16 2019 -0400"
      },
      "committer": {
        "name": "Ian Wienand",
        "email": "iwienand@redhat.com",
        "time": "Fri Jun 21 14:35:16 2019 +1000"
      },
      "message": "Update (git|review).openstack.org links to opendev\n\nThis updates links going to git.openstack.org and review.openstack.org\nto go to their respective opendev locations to avoid redirects.\n\nChange-Id: I78e3bb5303718962f591117f9c0ee11f2314b128\nCloses-Bug: #1833256\n"
    },
    {
      "commit": "4db9d567d19759ee090e506adf7ad77d8e64e452",
      "tree": "aacdfbf39d6470b04469cbd5416f8f59977996ca",
      "parents": [
        "172f02f1e0b981e0867a1e2cf2777f40af88032e"
      ],
      "author": {
        "name": "Tom Barron",
        "email": "tpb@dyncloud.net",
        "time": "Wed Jan 09 08:43:52 2019 -0500"
      },
      "committer": {
        "name": "garyk",
        "email": "gkotton@vmware.com",
        "time": "Mon May 20 06:01:35 2019 +0000"
      },
      "message": "Safety check for python version in get_pip_command\n\nWe know empirically that some legacy gate jobs pass and appear\nto be running with python3 but actually pip was invoked with\nPYTHON3_VERSION unset so that they are actually ran with python2\npackages.\n\nAs a followup to this discussion [1], add a safety check in the\nget_pip_command function to ensure that a python version has been\nset when it is invoked.\n\n[1] https://review.openstack.org/#/c/622415/4/inc/python@283\n\nChange-Id: I3a08406fb7d68282c6b98abb33a625821510046a\n"
    },
    {
      "commit": "e03bcb2c8b8f1ee1cbef579454a30776e43175b3",
      "tree": "4d90fae8f7cd20532afdf0a26975c7d9a567e59b",
      "parents": [
        "13e260ea2c3220a217626b12bff538916fdd2caf"
      ],
      "author": {
        "name": "Matt Riedemann",
        "email": "mriedem.os@gmail.com",
        "time": "Mon Apr 01 12:19:45 2019 -0400"
      },
      "committer": {
        "name": "Jens Harbott",
        "email": "j.harbott@x-ion.de",
        "time": "Tue Apr 02 10:13:13 2019 +0000"
      },
      "message": "Remove crusty old python 3 package version logic\n\nIf we are running with python3, just assume that any\npackage that is not blacklisted is available for py3\nand just attempt to install it and let pip sort it out\nwhether it gets installed from a local or remote package.\n\nChange-Id: Ic05d183e489320f6dfc721575d47e7e4d661f87c\nCloses-Bug: #1820892\n"
    },
    {
      "commit": "8ca63acff888979bfceb9ce7a55eb217dcddde90",
      "tree": "fce231b323139eb8ab67ec14f8768e6cd9096596",
      "parents": [
        "b359b960d21486ae9f920fc4e64635459c0ee4b3",
        "a30dd1cc96a75d565ae924e4698c4208150e5564"
      ],
      "author": {
        "name": "Zuul",
        "email": "zuul@review.openstack.org",
        "time": "Sat Mar 30 00:45:27 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "review@openstack.org",
        "time": "Sat Mar 30 00:45:27 2019 +0000"
      },
      "message": "Merge \"Fixed support python 2 on Fedora 27\""
    },
    {
      "commit": "a30dd1cc96a75d565ae924e4698c4208150e5564",
      "tree": "764bb7eafbc9d23d196459981c6a4ede1ddc8f21",
      "parents": [
        "deadc7c439f1126ba986b9c4f3c4d0b6d7774016"
      ],
      "author": {
        "name": "Lenny Verkhovsky",
        "email": "lennyb@mellanox.com",
        "time": "Thu Mar 14 13:19:36 2019 +0200"
      },
      "committer": {
        "name": "Lenny Verkhovsky",
        "email": "lennyb@mellanox.com",
        "time": "Sun Mar 24 11:46:45 2019 +0200"
      },
      "message": "Fixed support python 2 on Fedora 27\n\nI7d16194d6ba1391ca31251d5b50cbb8de033fc38 added wrong behavour\non Fedora \u003e 26 and Centos 7 when python3 disabled\npip should install packages in /usr/bin\n\nCloses-Bug: #1820070\nChange-Id: I3a8efbc8eb6e311db9c7347577c5d2047ba523a9\n"
    },
    {
      "commit": "ddb6179b0479ea9478cf2a146fe9b0d7592acaec",
      "tree": "a026986f2d74c08990cc6e5681cde42abe7319ea",
      "parents": [
        "2ba01316f37fb2c41b7dbab4a244d712ab6ed8e0"
      ],
      "author": {
        "name": "Matt Riedemann",
        "email": "mriedem.os@gmail.com",
        "time": "Tue Mar 19 15:04:12 2019 -0400"
      },
      "committer": {
        "name": "Matt Riedemann",
        "email": "mriedem.os@gmail.com",
        "time": "Tue Mar 19 15:04:12 2019 -0400"
      },
      "message": "Ease python 3 classifier check in check_python3_support_for_package_local\n\nThis makes the grep match in check_python3_support_for_package_local\nthe same as check_python3_support_for_package_remote.\n\nChange I0349de2026c49279ba7f262d5e86d37018d66326 in grenade started\nsetting the PYTHON3_VERSION variable, and then we recently started\nusing bionic nodes everywhere which means we\u0027re running python 3.6.\n\nThe etcd3gw package has a python 3 and 3.5 classifier, but not 3.6:\n\nhttps://pypi.org/project/etcd3gw/\n\nThe pip_install function code that is dealing with installing py3\npackages is hitting a problem installing etcd3gw if the package is\nlocal because of the more restrictive grep in the\ncheck_python3_support_for_package_local function, and since\nPYTHON3_VERSION\u003d3.6 now, we don\u0027t install from py3 and install\netcd3gw on python 2.7 which makes services like cinder-volume and\ncinder-backup, which use etcd3gw, fail when they are running under\npython 3 (they get module import errors).\n\nThis simply removes the $ restriction on the grep. Looking at the\nchange that added those local/remote functions:\n\n  I243ea4b76f0d5ef57a03b5b0798a05468ee6de9b\n\nThere is no explanation for the difference, it just said:\n\n  Also, since not many packages are classified correctly, fallback\n  to looking for just \"Programming Language :: Python :: 3\" and\n  log a message for the package to highlight the problem.\n\nSo that\u0027s what this change does.\n\nNote that alternatives would be:\n\n1. Update the etcd3gw package to add the 3.6 classifier and do\n   a release (this should probably happen anyway).\n\n2. Add etcd3gw to ENABLED_PYTHON3_PACKAGES but that would be a\n   short-term hack workaround.\n\nChange-Id: Icd3768870ba0f1659bb2e6f002043d975047b73e\nCloses-Bug: #1820892\n"
    },
    {
      "commit": "c759706686abb421879148410adced34e44333f2",
      "tree": "6be283d2b0d161e8335420839dcc7739b517e262",
      "parents": [
        "72f632222f6d90d3545b5d7ca48297da4218e2ea"
      ],
      "author": {
        "name": "Sean Mooney",
        "email": "work@seanmooney.info",
        "time": "Thu Feb 28 11:20:36 2019 +0000"
      },
      "committer": {
        "name": "Sean Mooney",
        "email": "work@seanmooney.info",
        "time": "Thu Feb 28 11:24:05 2019 +0000"
      },
      "message": "support python 3 on centos 7\n\nwhen installing with python 3.6 on centos7 pip installs\npackages to /usr/local/bin as it does on new versions\nof fedora.\n\nthis change updates the check to include centos\n\nChange-Id: I7d16194d6ba1391ca31251d5b50cbb8de033fc38\n"
    },
    {
      "commit": "f3302dcee3e11fb4283a28416e1bcf92514b6bf8",
      "tree": "e2ee094c33c2db78d39ad2c134f22dd8cbd353a4",
      "parents": [
        "f1275599ad372e7715b5b825d6ab8649867b3679",
        "58243f6203f3385039fe7124b037d5abf7e1d59e"
      ],
      "author": {
        "name": "Zuul",
        "email": "zuul@review.openstack.org",
        "time": "Wed Feb 06 16:34:56 2019 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "review@openstack.org",
        "time": "Wed Feb 06 16:34:57 2019 +0000"
      },
      "message": "Merge \"Add options for development bindep install\""
    },
    {
      "commit": "58243f6203f3385039fe7124b037d5abf7e1d59e",
      "tree": "657a7933404290db8f3df9e47de90c1439e51fc3",
      "parents": [
        "8fc227f63fd0820bd9c5725a6023529c742d2041"
      ],
      "author": {
        "name": "Ian Wienand",
        "email": "iwienand@redhat.com",
        "time": "Thu Dec 13 14:05:53 2018 +1100"
      },
      "committer": {
        "name": "Ian Wienand",
        "email": "iwienand@redhat.com",
        "time": "Mon Jan 14 16:35:12 2019 +1100"
      },
      "message": "Add options for development bindep install\n\nThis adds a -bindep option to the key development library install\nfunctions.  With this option the bindep.txt file will be referenced\nand the relevant packages installed.\n\nChange-Id: I856f1f59fca49b6020920d8f859b797f3b904300\n"
    },
    {
      "commit": "36377f63e348200cd091b702c74350062a69fff9",
      "tree": "e9962c68b82b43a6b415c7aa71722ce3ce5e841e",
      "parents": [
        "a88a22969cb557456d3a8db8ae734a59a1ba8066"
      ],
      "author": {
        "name": "Doug Hellmann",
        "email": "doug@doughellmann.com",
        "time": "Tue Dec 04 11:33:03 2018 -0500"
      },
      "committer": {
        "name": "Tom Barron",
        "email": "tpb@dyncloud.net",
        "time": "Wed Jan 09 09:05:36 2019 -0500"
      },
      "message": "install under python3 by default when enabled\n\nRemove the requirement that services explicitly enable python3 support\nin order to be tested under python3 when running with python3\nenabled. Keep the enable_python3_package() function for backwards\ncompatibility, for now, since it is called in some devstack plugins.\n\nExplicitly add swift to the set of packages that should not be installed\nusing python3 by default until full support is available.\n\nChange-Id: I8ab0a7c242bbf5bf3f091f5a85a98e2f4543f856\nSigned-off-by: Doug Hellmann \u003cdoug@doughellmann.com\u003e\n"
    },
    {
      "commit": "67394b02417802842021fdef95f68edbf723eb71",
      "tree": "8f586ee638d8cf5297cd2a9ab6196bd48c8e3f35",
      "parents": [
        "0c6208c6a07b0616b5982b6e9e7c8216397d49e3"
      ],
      "author": {
        "name": "Andreas Jaeger",
        "email": "aj@suse.com",
        "time": "Sat Nov 24 10:14:46 2018 +0100"
      },
      "committer": {
        "name": "Andreas Jaeger",
        "email": "aj@suse.com",
        "time": "Sat Nov 24 10:18:07 2018 +0100"
      },
      "message": "Remove is_in_projects_txt\n\nThis function is nowhere used as confirmed by codesearch:\nhttp://codesearch.openstack.org/?q\u003dis_in_projects_txt\u0026i\u003dnope\u0026files\u003d\u0026repos\u003d\n\nWe can remove the function.\n\nNote that usage of this function was removed in change\nI843208e2e982eb04931b76f5cb4bd219fbcd70de in 2015.\n\nThis came up in context of https://review.openstack.org/619089 where\nrequirements/projects.txt is getting removed.\n\nChange-Id: I487d3f9e340bd45e83245b9ca91e8e3b5ac3ae02\n"
    },
    {
      "commit": "e991f7da457e0f1343ca13e8adeb0f6334b04990",
      "tree": "917162302ab82adbc4051d90b765b4c08d35e33b",
      "parents": [
        "bb99f1f677beac272c541da0d85ef36d0ff5910a"
      ],
      "author": {
        "name": "imacdonn",
        "email": "iain.macdonnell@oracle.com",
        "time": "Thu Oct 04 19:41:59 2018 +0000"
      },
      "committer": {
        "name": "imacdonn",
        "email": "iain.macdonnell@oracle.com",
        "time": "Thu Oct 04 19:42:21 2018 +0000"
      },
      "message": "Use bash-style test for Fedora version\n\nOld-style test fails on Ubuntu when python3 enabled, with:\n\n.../devstack/inc/python: line 52: [: 16.04: integer expression expected\n\nUse bash-style test, which doesn\u0027t attempt to evaluate the RHS if the\nLHS evaluates to false\n\nChange-Id: If18031ab98c9060e5825c3a8d3c647bd3705cd9c\nCloses-Bug: #1796174\n"
    },
    {
      "commit": "a0f319fc6dcdc44fecbe054869b5eda3567cca5a",
      "tree": "576a993d4902988fdde17b82fb209bc94540ef45",
      "parents": [
        "f99d1771ba1882dfbb69186212a197edae3ef02c",
        "e1edde38edb697f56e111f55e5992e7bf22f6284"
      ],
      "author": {
        "name": "Zuul",
        "email": "zuul@review.openstack.org",
        "time": "Thu Apr 19 12:44:31 2018 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "review@openstack.org",
        "time": "Thu Apr 19 12:44:31 2018 +0000"
      },
      "message": "Merge \"Automatically set LIBS_FROM_GIT based on required projects\""
    },
    {
      "commit": "e1edde38edb697f56e111f55e5992e7bf22f6284",
      "tree": "f042d7085a4dec97abcf0b358d9ed74116fd14ab",
      "parents": [
        "6f27fca4a76aceaadab3776c87c48743671ce502"
      ],
      "author": {
        "name": "James E. Blair",
        "email": "jeblair@redhat.com",
        "time": "Fri Mar 02 15:05:14 2018 +0000"
      },
      "committer": {
        "name": "James E. Blair",
        "email": "jeblair@redhat.com",
        "time": "Tue Apr 17 13:48:37 2018 -0700"
      },
      "message": "Automatically set LIBS_FROM_GIT based on required projects\n\nIf a project shows up in zuul\u0027s required-projects list, add it\nto LIBS_FROM_GIT automatically.  This way, when a user specifies\nthat a job requires a zuul-project, it gets used in testing, but\notherwise, it doesn\u0027t (pypi is used instead).\n\nAlso add information about what happens behind the scenes for both\nLIBS_FROM_GIT and plugin dependencies.\n\nThis moves the check performed in check_libs_from_git to\na helper function which is installed for most kinds of\ninstallations.  This means that if someone sets LIBS_FROM_GIT to\n\"foobar\", devstack won\u0027t error anymore, as nothing is going to\ntry to install foobar, therefore the check won\u0027t run on that.\nHowever, as we move to automated generation of the local config,\nthat error is not likely to happen.  This check was originally\nadded due to an error in the upper-constraints file (where a\nconstraint name did not match a package name).  This location of\nthe check would still catch that type of error.\n\nChange-Id: Ifcf3ad008cf42d3d4762cfb3b6c31c93cfeb40db\n"
    },
    {
      "commit": "236250f1c3e9f328f0dc23ab168afbcfa639a33b",
      "tree": "2c6830075f1fdb3bfe67ceae6c846002788198d9",
      "parents": [
        "9cc3e636fc25b84231ff4e204dfddbd07b933909"
      ],
      "author": {
        "name": "Monty Taylor",
        "email": "mordred@inaugust.com",
        "time": "Fri Mar 23 08:27:57 2018 -0500"
      },
      "committer": {
        "name": "Monty Taylor",
        "email": "mordred@inaugust.com",
        "time": "Fri Mar 23 08:27:57 2018 -0500"
      },
      "message": "Rename python-openstacksdk to openstacksdk\n\nChange-Id: Ia77163f330f674146b369dfebea56bd97820057e\nDepends-On: https://review.openstack.org/554662\n"
    },
    {
      "commit": "b9891eea1f981fa51682f2c94f8e04f047f3dec4",
      "tree": "a9d85f1a4f2df599a0b24bd490fe52b2c12d4c0a",
      "parents": [
        "28b4be186105888b72300d27166deb771857df06"
      ],
      "author": {
        "name": "Victor Stinner",
        "email": "vstinner@redhat.com",
        "time": "Mon Jan 08 15:20:36 2018 +0100"
      },
      "committer": {
        "name": "Victor Stinner",
        "email": "vstinner@redhat.com",
        "time": "Tue Jan 09 11:22:39 2018 +0100"
      },
      "message": "Fix Python3 get_python_exec_prefix on Fedora 27\n\nOn Fedora 27, the default Pytho 3 install prefix changed from /usr\nto /usr/local:\nhttps://fedoraproject.org/wiki/Changes/Making_sudo_pip_safe\n\nCloses-Bug: #1741901\nChange-Id: Id40620efdf173189df053b5d380a801092933f83\n"
    },
    {
      "commit": "e46f22db7fcb6e9aae5922d650eda14a15231fb8",
      "tree": "76ce9a5f76232c9ee2fea0c47c3ea89377f231b1",
      "parents": [
        "9ef3e8448580e9d166e1a4669a036da0205243b5"
      ],
      "author": {
        "name": "Monty Taylor",
        "email": "mordred@inaugust.com",
        "time": "Sun Dec 03 10:21:26 2017 -0600"
      },
      "committer": {
        "name": "Monty Taylor",
        "email": "mordred@inaugust.com",
        "time": "Sun Dec 03 10:21:26 2017 -0600"
      },
      "message": "Add workaround for openstacksdk in check_libs_from_git\n\npython-openstacksdk does not match its pip name which is openstacksdk.\nSo setting python-openstacksdk in LIBS_FROM_GIT leads to devstack\nthinking there is a problem.\n\nPut in a workaround for now. It would be better to either:\n\n  a) rename python-openstacksdk repo to openstacksdk\n  b) rename the pip name for openstacksdk back to python-openstacksdk\n  c) add general support in the various GIT hashes for a pip name\n\nChange-Id: I57cf95763d54ad2060a4ce2af91c3ba18ca04db0\n"
    },
    {
      "commit": "007f588f275ac9d7320d4b24f1d05378d3df3d37",
      "tree": "1181b739611f600b94cf53bb0041cdc3bb4e9e03",
      "parents": [
        "b5fb7fd627fe24876a8dd2782fce065cf1957b55"
      ],
      "author": {
        "name": "DamonLi",
        "email": "damonl@vmware.com",
        "time": "Thu Nov 23 10:05:46 2017 +0800"
      },
      "committer": {
        "name": "Ian Wienand",
        "email": "iwienand@redhat.com",
        "time": "Tue Nov 28 07:34:49 2017 +1100"
      },
      "message": "Convert to safe name in lib_installed_from_git\n\nThe \u0027pip list\u0027 command prints the \"safe name\" which converts _\u0027s to\n-\u0027s amongst other things; e.g. glance_store becomes\n\n  \"glance-store             0.21.1.dev22      /opt/stack/glance_store\"\n\nBecause people may use these more familiar \"file system\" names in\nLIBS_FROM_GIT automatically convert names when checking if libraries\nare installed.\n\nChange-Id: I30524f80a341f38dfa794a8f629d859e85a4a448\n"
    },
    {
      "commit": "b5fb7fd627fe24876a8dd2782fce065cf1957b55",
      "tree": "2dd6de6af181f809a4d2426bfdac4c4a86aee571",
      "parents": [
        "c19d0cbb27d2cd387d9b4543fc59ac6c084a68e6"
      ],
      "author": {
        "name": "rabi",
        "email": "ramishra@redhat.com",
        "time": "Wed Nov 22 08:14:29 2017 +0530"
      },
      "committer": {
        "name": "rabi",
        "email": "ramishra@redhat.com",
        "time": "Wed Nov 22 10:09:30 2017 +0530"
      },
      "message": "Fix lib_installed_from_git\n\nIn commit f0cd9a8b08d92524fc8e2c3f05d08cdebc638e2a we changed to\nuse column format, but it checks for zero length string and\ncheck_libs_from_git fails.\n\nChange-Id: I97b52b80efb33749647229a55147a08afa112dd2\n"
    },
    {
      "commit": "ec31a52560c5ee0b457b186f1bb73a18e53df6f8",
      "tree": "fe08d44692b27c6758fc8a2f4e4a7c1d8dd26c5b",
      "parents": [
        "84220d0cef0374ca9efcc215dcd7cb172e374592",
        "f0cd9a8b08d92524fc8e2c3f05d08cdebc638e2a"
      ],
      "author": {
        "name": "Zuul",
        "email": "zuul@review.openstack.org",
        "time": "Tue Nov 21 20:04:33 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "review@openstack.org",
        "time": "Tue Nov 21 20:04:33 2017 +0000"
      },
      "message": "Merge \"Update lib_install_from_git to use column format\""
    },
    {
      "commit": "065779517f9c99a80fbc39d51784c614e4ee341c",
      "tree": "f2dffa2c172a66bdc967fff6e9c00557524068bf",
      "parents": [
        "57ddd7c1613208017728c50370d2e259c072d511"
      ],
      "author": {
        "name": "Clark Boylan",
        "email": "clark.boylan@gmail.com",
        "time": "Fri Oct 20 12:14:29 2017 -0700"
      },
      "committer": {
        "name": "Clark Boylan",
        "email": "clark.boylan@gmail.com",
        "time": "Fri Oct 20 12:16:32 2017 -0700"
      },
      "message": "Properly get pip version\n\nThe old code was strip()ing the version string instead of split()ing the\nversion string so we always got the first character of the version\nstring. This worked fine as long as the pip version was single digit but\nas soon as it rolls over to \u002710.stuff\u0027 we will compare:\n\n  pip version 1 (instead of 10) \u003e 6\n\nWhich fails bceause 1 is less than six. Instaed we really do want to\ncompare 10 \u003e 6 so use split on \u0027.\u0027 instead.\n\nChange-Id: Ic7d0c04d7fa77774ab2d70fb9d11f182becec553\n"
    },
    {
      "commit": "f0cd9a8b08d92524fc8e2c3f05d08cdebc638e2a",
      "tree": "172fe1333ffcbfe13004d145766e94013c229108",
      "parents": [
        "a29329b55983d69c3966e1699f985be8cdf6e59d"
      ],
      "author": {
        "name": "Monty Taylor",
        "email": "mordred@inaugust.com",
        "time": "Fri Oct 06 13:11:48 2017 -0500"
      },
      "committer": {
        "name": "Ian Wienand",
        "email": "iwienand@redhat.com",
        "time": "Thu Oct 19 15:35:38 2017 +1100"
      },
      "message": "Update lib_install_from_git to use column format\n\nThe pip list command supports a --format\u003dcolumns option which outputs\nthings in space delimited columns. Switch to using that.\n\nChange-Id: I5140a7d83bf567b1c3c67516112eb4c57074fa53\n"
    },
    {
      "commit": "9e7ead9ac2e791f70542741aa2c84e7ad828ac7a",
      "tree": "954c9a85974820855e0d5bfcf70a215e7f543816",
      "parents": [
        "52237ee5482ff8c614dc68088ecaaf7d59a85915"
      ],
      "author": {
        "name": "Zane Bitter",
        "email": "zbitter@redhat.com",
        "time": "Thu Oct 05 16:51:09 2017 -0400"
      },
      "committer": {
        "name": "Ian Wienand",
        "email": "iwienand@redhat.com",
        "time": "Fri Oct 06 22:19:05 2017 +1100"
      },
      "message": "Calculate package directory correctly in pip_install\n\nStrip the [\u003cextras\u003e] string from a \u003cpackage_dir\u003e[\u003cextras\u003e] argument\nwhen looking for the package directory.  Explain what the heck is\ngoing on.\n\nChange-Id: I79beb5c3e9e7c35c91cdd0d5a1d91532bebc4b6d\nCloses-Bug: #1721638\n"
    },
    {
      "commit": "ae9c6ab759d9dc1c7e72159092539444ca03cf33",
      "tree": "344c9c1eb15a447f912084ee38ca8895a7a84729",
      "parents": [
        "5b419ffb1f20dfe613bd694fab8c1f08c8db7cce"
      ],
      "author": {
        "name": "Ian Wienand",
        "email": "iwienand@redhat.com",
        "time": "Fri Sep 29 10:16:47 2017 +1000"
      },
      "committer": {
        "name": "Ian Wienand",
        "email": "iwienand@redhat.com",
        "time": "Fri Sep 29 12:55:45 2017 +1000"
      },
      "message": "Use \"pip list\" in check_libs_from_git\n\nAs described in the change, \"pip freeze\" has issues with the way\nzuulv3 clones repos without a remote.  This is an attempt to use \"pip\nlist\" to check for local install\n\nChange-Id: I33d25f86b6afcadb4b190a0f6c53311111c64521\n"
    },
    {
      "commit": "87d2396d225533aefd8d52bb5fa574ea57dbb987",
      "tree": "6e05a6f6ac4d68fb62deca473df0bdb9edc294ce",
      "parents": [
        "dea3083d984569eac9647f1a28f10ae98afc42f7"
      ],
      "author": {
        "name": "Sampath Priyankara",
        "email": "sam47priya@gmail.com",
        "time": "Thu Aug 03 16:12:40 2017 +0900"
      },
      "committer": {
        "name": "Ian Wienand",
        "email": "iwienand@redhat.com",
        "time": "Mon Aug 14 16:03:41 2017 +1000"
      },
      "message": "Don\u0027t uninstall pip packages if OFFLINE\u003dTrue\n\nlib/nova does a pip re-install of libvirt-python to rebuild the python\nlibrary incase the underlying libvirt version changed during package\ninstalls.  In offline mode, the underlying version of libvirt can\u0027t\nhave changed; so we have the situation that we\u0027ve removed the libvirt\npython bindings but can\u0027t reinstall them (because we\u0027re offline).\n\nThis fixes that particular situation, but skipping uninstalls in\noffline mode seems generically OK.\n\nChange-Id: I2b75d45d94d82f87d996c7570c125d46f5f99f6a\nCloses-Bug: #1708369\n"
    },
    {
      "commit": "fa0077707e15abfbecddbd22fe8594ffe3b4ecc4",
      "tree": "d2a59a3bc977e8ad597e9bd0b502408fe7b6ba88",
      "parents": [
        "ab7035040319d8b145e1ad4ffcefa184ad6bd8a9"
      ],
      "author": {
        "name": "Takashi NATSUME",
        "email": "natsume.takashi@lab.ntt.co.jp",
        "time": "Sat Jul 22 08:59:43 2017 +0900"
      },
      "committer": {
        "name": "Takashi NATSUME",
        "email": "natsume.takashi@lab.ntt.co.jp",
        "time": "Sat Jul 22 09:12:59 2017 +0900"
      },
      "message": "Update URLs\n\nSome URLs are broken, so fix them.\nThe others are redirect to new URLs,\nso replace them with new ones.\n\nThe config options of nova serial console proxy\nhave been gathered in nova/conf/serial_console.py.\nSo the description in doc/source/guides/nova.rst\nis fixed.\n\nChange-Id: Ifd81cc09969341fbf8f135a913fc6003b94e0acc\n"
    },
    {
      "commit": "f266a2dc81be050fec41a180906723ab5cf61df5",
      "tree": "7c1abda53bbe9cf803acd2d48c1e638b2ccc0d81",
      "parents": [
        "9234316794403e6ec422c3c9a766edbb1bae180f"
      ],
      "author": {
        "name": "Clark Boylan",
        "email": "clark.boylan@gmail.com",
        "time": "Mon Jun 12 14:57:59 2017 -0700"
      },
      "committer": {
        "name": "Clark Boylan",
        "email": "clark.boylan@gmail.com",
        "time": "Mon Jun 12 14:57:59 2017 -0700"
      },
      "message": "Install test-requirements with main install\n\nTo reduce the total number of invocations necessary for pip which isn\u0027t\nthe quickest thing ever (due to needing to evaluate constraints and deps\nlists and what is currently installed) combine the main installation of\nsoftware with its test-requirements.txt file which should roughly halve\nour pip invocations.\n\nChange-Id: Ibcc3264136e66d34a879ad1c90a62e1bb6a84243\n"
    },
    {
      "commit": "954fd1b729f792dc6cbc470285a5e147053147a8",
      "tree": "3e6d443db958471bcdff88666ede3e898438c32a",
      "parents": [
        "ac042d41222eea83bf360b4db89c4c7bf415457d"
      ],
      "author": {
        "name": "Brian Haley",
        "email": "bhaley@redhat.com",
        "time": "Tue May 16 12:24:45 2017 -0400"
      },
      "committer": {
        "name": "Brian Haley",
        "email": "bhaley@redhat.com",
        "time": "Tue May 16 12:24:45 2017 -0400"
      },
      "message": "Use -y with \u0027pip uninstall\u0027\n\n\u0027pip uninstall\u0027 will hang running stack.sh if it has to\nprompt the user for input, use -y.\n\nChange-Id: Ic94639e444b87fd3538463d5a51c01a0208a2ab2\nCloses-bug: #1691172\n"
    },
    {
      "commit": "f28e7ef6ba48030d7bc5c6ea27f28b8a1fc281e9",
      "tree": "caeddc62ade7f67002bf13f1ff1b18563ad7c9c2",
      "parents": [
        "2b88b323c9e08ab8fecfe4e3e88d79c26761411c"
      ],
      "author": {
        "name": "Sean Dague",
        "email": "sean@dague.net",
        "time": "Sun May 07 22:02:10 2017 -0400"
      },
      "committer": {
        "name": "Sean Dague",
        "email": "sean@dague.net",
        "time": "Mon May 08 07:30:20 2017 -0400"
      },
      "message": "uninstall libvirt-python and reinstall\n\nlibvirt-python compiles against the currently installed libvirt. If\nyou upgrade that, it needs to rebuild, however it won\u0027t change\nversions, so pip install just noops. Force an uninstall / reinstall of\nit every time to handle potential upgrades of libvirt.\n\nChange-Id: If34541b34aa6d55eedaf6c603fd1fe92eb887308\n"
    },
    {
      "commit": "bacfb94390e0680fac13cb7f7236b9d5d0e89b89",
      "tree": "81b31280be69731159e6edd8fb50f6224f01da5f",
      "parents": [
        "fc2919ffdfe360f05ac7be7b35bdb3c9305acebb"
      ],
      "author": {
        "name": "Armando Migliaccio",
        "email": "armamig@gmail.com",
        "time": "Mon Mar 20 22:27:20 2017 -0700"
      },
      "committer": {
        "name": "Armando Migliaccio",
        "email": "armamig@gmail.com",
        "time": "Mon Mar 20 22:33:56 2017 -0700"
      },
      "message": "Enable openSUSE to work in Python 3.x environments\n\nAdd packages required to run devstack with USE_PYTHON3\u003dTrue.\n\nChange-Id: Iee43c9335bd82c10cfaeffb02d1d99290c34bb83\n"
    },
    {
      "commit": "6523d6e09789076d0a430bf7b608511fcb1c406a",
      "tree": "d96213973217dd7ff0611091f6facdced64a31ce",
      "parents": [
        "73a3e2decd2e7d9fd652fb40c4e697794d9abd05",
        "afef8bf097356d7bb37c57d0daa44653c7905c17"
      ],
      "author": {
        "name": "Jenkins",
        "email": "jenkins@review.openstack.org",
        "time": "Wed Mar 08 13:31:57 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "review@openstack.org",
        "time": "Wed Mar 08 13:31:57 2017 +0000"
      },
      "message": "Merge \"Make declared variables global\""
    },
    {
      "commit": "afef8bf097356d7bb37c57d0daa44653c7905c17",
      "tree": "0aa5c440428469fa0160285cab3ca6e5573135b2",
      "parents": [
        "6f23555c959ce2a121d57c27a7460815808ac2b6"
      ],
      "author": {
        "name": "Sean Dague",
        "email": "sean@dague.net",
        "time": "Mon Mar 06 14:07:23 2017 -0500"
      },
      "committer": {
        "name": "John L. Villalovos",
        "email": "john.l.villalovos@intel.com",
        "time": "Tue Mar 07 22:07:29 2017 -0800"
      },
      "message": "Make declared variables global\n\nWhen variables use the \u0027declare\u0027 directive, it is by default a local\nvariable. While other variables have global scope.\n\nFor example:\n   declare -A AN_ARRAY   # local in scope\n   foo\u003d1                 # global in scope\n\nThis causes errors to occur as some of the variables will be local only\nand others will be global.\n\nUpdate the code, as appropriate, so that variables using the \u0027declare\u0027\ndirective also include the \u0027-g\u0027 flag to have them also be global. Not\nevery instance of a declared variable has been updated.\n\nCloses-Bug: #1669509\nCo-Authored-By: John L. Villalovos \u003cjohn.l.villalovos@intel.com\u003e\nChange-Id: I2180b68fe861ad19c6d4ec0df0f9f8a528347862\n"
    },
    {
      "commit": "0e1e78117e63af1d55b969469642a7337c616aa0",
      "tree": "4efb0f0a7b4b8980ce46f59b9889cf525b6f60a7",
      "parents": [
        "259c5e19a72dfab893446275bf7d26b92d63ca5b",
        "a2eb89417fbb6d61526b1819cbe3d0a60537eedd"
      ],
      "author": {
        "name": "Jenkins",
        "email": "jenkins@review.openstack.org",
        "time": "Tue Feb 28 16:37:49 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "review@openstack.org",
        "time": "Tue Feb 28 16:37:49 2017 +0000"
      },
      "message": "Merge \"install LIBS_FROM_GIT using python 2 and 3 where appropriate\""
    },
    {
      "commit": "259c5e19a72dfab893446275bf7d26b92d63ca5b",
      "tree": "87fe17bcae6dfc5f62daa1d546cfd7eb9c806a0a",
      "parents": [
        "d81e422722d8fba76df2c9a7638892c08fe5c7bb",
        "94129c7d02902e0f000c09c8245be341df1c5965"
      ],
      "author": {
        "name": "Jenkins",
        "email": "jenkins@review.openstack.org",
        "time": "Tue Feb 28 16:37:20 2017 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "review@openstack.org",
        "time": "Tue Feb 28 16:37:20 2017 +0000"
      },
      "message": "Merge \"allow config to manage python3 use explicitly\""
    },
    {
      "commit": "f80e2cfee85a200ba204ac00bada74695abcd964",
      "tree": "00dd1ee9922f85dbc032e8be6959fd415c7e1478",
      "parents": [
        "eb9d42b65c8dbbe531e8124b442f13db5dff2993"
      ],
      "author": {
        "name": "Sean Dague",
        "email": "sean@dague.net",
        "time": "Wed Jan 18 15:42:32 2017 -0500"
      },
      "committer": {
        "name": "Sean Dague",
        "email": "sean@dague.net",
        "time": "Wed Jan 18 15:42:53 2017 -0500"
      },
      "message": "add install_devstack_tools\n\nAn initial install for devstack-tools, this will need to use all the\nfun pip extra variables for installation, however the current\npip_install always prefers python2, and we only want to do python3\nhere.\n\nChange-Id: I3dcdb35130f76fad81cb7b0d4001b7e96efbbd84\n"
    },
    {
      "commit": "a2eb89417fbb6d61526b1819cbe3d0a60537eedd",
      "tree": "bf3d868fefff195b8e1e62792c194a04cd279ddf",
      "parents": [
        "94129c7d02902e0f000c09c8245be341df1c5965"
      ],
      "author": {
        "name": "Doug Hellmann",
        "email": "doug@doughellmann.com",
        "time": "Mon Jan 09 22:11:49 2017 +0000"
      },
      "committer": {
        "name": "Doug Hellmann",
        "email": "doug@doughellmann.com",
        "time": "Tue Jan 10 16:08:43 2017 +0000"
      },
      "message": "install LIBS_FROM_GIT using python 2 and 3 where appropriate\n\nWhen installing a library from source and python 3 is enabled, first run\nthe installation process with python 2 enabled to ensure the library is\nalso installed under python 2 for any services not yet running under\n3. The python 3 version is installed second so that command line tools\ninstalled with libraries are installed under python 3 when python 3 is\nenabled.\n\nChange-Id: Ibb0f7a68d21081bf7652a0c1515080c0c54888ca\nSigned-off-by: Doug Hellmann \u003cdoug@doughellmann.com\u003e\n"
    },
    {
      "commit": "94129c7d02902e0f000c09c8245be341df1c5965",
      "tree": "731f84b7edfcc48ff2a7f8a229a233a9a17b1b0a",
      "parents": [
        "858a105c81f1571825d086d359ca7538079072fb"
      ],
      "author": {
        "name": "Doug Hellmann",
        "email": "doug@doughellmann.com",
        "time": "Mon Jan 09 21:24:24 2017 +0000"
      },
      "committer": {
        "name": "Doug Hellmann",
        "email": "doug@doughellmann.com",
        "time": "Tue Jan 10 16:08:14 2017 +0000"
      },
      "message": "allow config to manage python3 use explicitly\n\nAdd variables ENABLED_PYTHON3_PACKAGES and DISABLED_PYTHON3_PACKAGES to\nwork like ENABLED_SERVICES and DISABLED_SERVICES and to manage which\npackages are installed using Python 3. Move the list of whitelisted\npackages in pip_install to the default for ENABLED_PYTHON3_PACKAGES,\nexcept swift which is not enabled by default for now.\n\nAdd enable_python3_package and disable_python3_package functions to make\nediting the variables from local.conf easier.\n\nAdd python3_enabled_for and python3_disabled_for functions to check the\nsettings against packages being installed by pip.\n\nUpdate pip_install to check if python3 is disabled for a service, then\nsee if it is explicitly enabled, and only then fall back to looking at\nthe classifiers in the packaging metadata.\n\nUpdate pip_install messages to give more detail about why the choice\nbetween python 2 and 3 is being made for a given package.\n\nChange-Id: I69857d4e11f4767928614a3b637c894bcd03491f\nSigned-off-by: Doug Hellmann \u003cdoug@doughellmann.com\u003e\n"
    },
    {
      "commit": "52b10746154d57c067b152009bbc13024c2951d9",
      "tree": "5d41a7642cc8c66b8e7152f30210b3f13c74dc9e",
      "parents": [
        "72bfe17b6ae633edb4dc02dc72691faf4649d08c"
      ],
      "author": {
        "name": "Mehdi Abaakouk",
        "email": "sileht@redhat.com",
        "time": "Thu Dec 01 16:11:17 2016 +0100"
      },
      "committer": {
        "name": "Mehdi Abaakouk",
        "email": "sileht@redhat.com",
        "time": "Wed Jan 04 10:21:29 2017 +0100"
      },
      "message": "cinder: configure dlm when this one is zookeeper\n\nPrevious this was set the zake, but that was revert to missing\ndependencies issue and because zake is a test fixture and not somthing\nto deploy.\n\nThis change configures the Cinder dlm with this one is zookeeper.\nAnd it installs tooz and the extra dependencies needed for the\nzookeeper driver.\n\nTo do it, this commit have to introduce a new method for package\ninstallation: \u0027pip_install_gr_extras package extra1,extra2\u0027.\n\nChange-Id: Idca310c08e345db59840eb31434c6cb1f849fa70\n"
    },
    {
      "commit": "0c0d848b8ce151c72b21114ac741508351a0bf37",
      "tree": "b4d49ea660b345035de9651f2baadaa8526227d8",
      "parents": [
        "afa8a00c14f100cf610ac076f07db2379cfcee20"
      ],
      "author": {
        "name": "Davanum Srinivas",
        "email": "davanum@gmail.com",
        "time": "Tue Jan 03 08:52:25 2017 -0500"
      },
      "committer": {
        "name": "Davanum Srinivas",
        "email": "davanum@gmail.com",
        "time": "Tue Jan 03 08:52:28 2017 -0500"
      },
      "message": "Add swift and uwsgi to py35 whitelist\n\nReally close to getting swift and keystone under uwsgi working, so\nlet\u0027s white list them. Won\u0027t affect any existing jobs, so we should\nbe good.\n\nChange-Id: I51d56d16a5b175bd45dee09edc0b2748d72a5d06\n"
    },
    {
      "commit": "afa8a00c14f100cf610ac076f07db2379cfcee20",
      "tree": "d4136642c135cfb9ba5fe01dc30fdb1230d32a7e",
      "parents": [
        "29890549929b4f2ab9dd5c96d0a857708c683997"
      ],
      "author": {
        "name": "Davanum Srinivas",
        "email": "davanum@gmail.com",
        "time": "Mon Dec 19 09:51:01 2016 -0500"
      },
      "committer": {
        "name": "Davanum Srinivas",
        "email": "davanum@gmail.com",
        "time": "Fri Dec 23 13:15:03 2016 -0500"
      },
      "message": "Switch to python 3.5\n\nUse trueorfalse to normalize the values for USE_PYTHON3\n\nInstall 3.5 instead of 3.4 When USE_PYTHON3 is specified.\nAlso, since not many packages are classified correctly, fallback\nto looking for just \"Programming Language :: Python :: 3\" and\nlog a message for the package to highlight the problem.\n\nAlso special case some services that are *almost* ready\n\nDepends-On: Id48e1b328230fcdf97ed1cb4b97f4c3f9cf6eb8a\nDepends-On: Ib7d9aa0e0b74a936002e0eea0b3af05102b06a62\nChange-Id: I243ea4b76f0d5ef57a03b5b0798a05468ee6de9b\n"
    },
    {
      "commit": "0a099763b022ce476f921c8a4bc2ea20ce5f67b4",
      "tree": "2ebf715f41fed72d8dfa6b68368888ae398247a1",
      "parents": [
        "e56318f9bc87b0ed0e1ce6fcd1216aebe3689fe8"
      ],
      "author": {
        "name": "Lubosz \"diltram\" Kosnik",
        "email": "diltram@gmail.com",
        "time": "Wed Aug 03 10:21:41 2016 -0500"
      },
      "committer": {
        "name": "Lubosz \"diltram\" Kosnik",
        "email": "diltram@gmail.com",
        "time": "Wed Aug 03 10:21:41 2016 -0500"
      },
      "message": "Change python version to 3.5\n\nOn Ubuntu Xenial there is no way to install python3.4\nUse value specified in PYTHON3_VERSION\n\nChange-Id: Ibc69b1c8270bdd240c82cf2acfdfd0730ef0f182\n"
    },
    {
      "commit": "88ccd47c88dc39b8d746afae89dea31d46558a68",
      "tree": "fead6219e57bdb10c32d8b59c5334c805f2995e9",
      "parents": [
        "5c9c54b1ff50f7339e9f958bf053232b0c26f24e"
      ],
      "author": {
        "name": "Spyros Trigazis",
        "email": "strigazi@gmail.com",
        "time": "Sun Jul 24 22:13:57 2016 +0200"
      },
      "committer": {
        "name": "Spyros Trigazis",
        "email": "strigazi@gmail.com",
        "time": "Mon Jul 25 14:31:51 2016 +0200"
      },
      "message": "Keep old behavior of setuptools for editable installs\n\nIn the 25.0.0 release [1] of setuptools during any install\noperation the package in not overwritten. If a package is\ninstalled from another requirement via pip and then it is\ninstalled again from git, it is not updated causing\ncheck_libs_from_git to fail.\n\n[1] https://setuptools.readthedocs.io/en/latest/history.html#v25-0-0\n\nChange-Id: Ibaa1d4157816ea649f4452756fbde25951347001\nCloses-Bug: #1605998\n"
    },
    {
      "commit": "46f8cb7f208d00f89863cf57f2400309cf8f6bd4",
      "tree": "c5515957862bc7cdf5995cb33ca6af01a571db3d",
      "parents": [
        "18534b2805af27fd428fe874525e6dbb1920e373"
      ],
      "author": {
        "name": "Marc Koderer",
        "email": "marc@koderer.com",
        "time": "Fri May 13 09:08:16 2016 +0200"
      },
      "committer": {
        "name": "Marc Koderer",
        "email": "marc@koderer.com",
        "time": "Tue May 17 08:57:39 2016 +0200"
      },
      "message": "Add option to download all libs from git\n\nFor client debugging that invokes multiple libs it can be useful\nto have all libs directly in git and not listing all of them\nin LIBS_FROM_GIT.\n\nTrivialFix\n\nChange-Id: Ie631cc4045231ebbe8177d2d113e47e4bf83f61c\n"
    },
    {
      "commit": "c8c1c615f2bf63e6a1ad9be70a340058bd813919",
      "tree": "b0a6e0905759762fdc29d07454919b605bf284a1",
      "parents": [
        "0a2a7ae8471575d887a19b9bf8b7375ea1fd7f45"
      ],
      "author": {
        "name": "YAMAMOTO Takashi",
        "email": "yamamoto@midokura.com",
        "time": "Tue Mar 22 14:29:47 2016 +0900"
      },
      "committer": {
        "name": "YAMAMOTO Takashi",
        "email": "yamamoto@midokura.com",
        "time": "Tue Mar 22 21:23:23 2016 +0900"
      },
      "message": "Normalize path for upper-constraints\n\nIt seems pip distinguishes paths with .. or extra / for constraints.\nFor example, the following directories are considered different.\n\n    /path/to/dir\n    /path/to//dir\n    /path/to/dir/subdir/..\n\nThis commit tries to normalize the given directory name to avoid\n\"Could not satisfy constraints for \u0027xxxx\u0027: installation from path\nor url cannot be constrained to a version\" error due to directory\nname mismatch.\n\nReference: https://github.com/pypa/pip/pull/3582\nCloses-Bug: #1542545\nChange-Id: Iae9d58c27d3b10bca16e4a471507c4d5c16439a0\n"
    },
    {
      "commit": "c615993fe16902bfc1ac91cad7da34084c77ed99",
      "tree": "6e9a5a65c0561d95b42d8586f3dd1a1b00090453",
      "parents": [
        "535fcd008eee7ec5d11f8d788f7d48514db56bfb",
        "0842b8147f098106b679cf652edbcb5ea4330f04"
      ],
      "author": {
        "name": "Jenkins",
        "email": "jenkins@review.openstack.org",
        "time": "Wed Jan 06 20:17:12 2016 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "review@openstack.org",
        "time": "Wed Jan 06 20:17:12 2016 +0000"
      },
      "message": "Merge \"Support extra dependencies when setup_develop\""
    },
    {
      "commit": "0842b8147f098106b679cf652edbcb5ea4330f04",
      "tree": "c1a9d4baee12f1d51b8a07a4c111c1bab492f8b5",
      "parents": [
        "e60d52c392098192b6c666cb345c50a9a4842d1b"
      ],
      "author": {
        "name": "Brant Knudson",
        "email": "bknudson@us.ibm.com",
        "time": "Mon Aug 03 13:31:25 2015 -0500"
      },
      "committer": {
        "name": "Sean Dague",
        "email": "sean@dague.net",
        "time": "Tue Jan 05 07:41:19 2016 -0500"
      },
      "message": "Support extra dependencies when setup_develop\n\nRecent pip supports using [extras] to install extra dependencies\nfrom the project setup.cfg. Add support so that projects can take\nadvantage of it.\n\nFor example, if devstack is configured to use ldap, install the\nextra ldap dependencies using:\n\n setup_develop $KEYSTONE_DIR ldap\n\nPartial-Bug: 1479962\nChange-Id: Ic13d95b99aaa4d3854b2723343e90f5de6b98aa2\n"
    },
    {
      "commit": "e208d060e17e2ad622c7b06cd90baed0eeed89f8",
      "tree": "da018a768b076a2d5938af9c36ae1748c6a713b3",
      "parents": [
        "7bd9ca8a3be6aeb50bffdce48b220615b1297f79"
      ],
      "author": {
        "name": "Federico Ressi",
        "email": "federico.ressi@intel.com",
        "time": "Sat Nov 21 11:15:39 2015 +0000"
      },
      "committer": {
        "name": "Federico Ressi",
        "email": "federico.ressi@intel.com",
        "time": "Tue Jan 05 08:21:05 2016 +0000"
      },
      "message": "Preserve result returned by apt-get and pip\n\nChange I855ffe9c7a75e9943106af0f70cf715c34ae25c5 and\nI368fec44858bd97fc6a314fb20eed2b10932cbb1 added timing\ninfrastructure which hides the return value of\nthe main commands.  Restore the prior behaviour.\n\nChange-Id: I4a536abefa7824ac6d42e7bbbf1079d9cc055984\nCloses-Bug: #1518545\n"
    },
    {
      "commit": "ddc3839bdc7ff73f6224273605db10fd88cd60df",
      "tree": "0d00622ab7f5b0e4ae8e2832a208237b19e1d318",
      "parents": [
        "b889294af7aa1ccf613da28fb08f547306e0f581"
      ],
      "author": {
        "name": "Doug Hellmann",
        "email": "doug@doughellmann.com",
        "time": "Thu May 07 21:06:24 2015 +0000"
      },
      "committer": {
        "name": "Davanum Srinivas",
        "email": "davanum@gmail.com",
        "time": "Tue Dec 01 14:52:35 2015 -0500"
      },
      "message": "Enable optional Python 3 support\n\nAdd USE_PYTHON3 and PYTHON3_VERSION variables to allow services to use\npython 3 if they indicate support in their python package metadata.\n\nTested in Heat here -\u003e I837c2fba682ab430d50e9f43913f2fed20325a7a.\nProject config change to add a dedicated job to Heat is here -\u003e I0837e62d6ccc66397a5e409f0961edd4be31f467\n\nChange-Id: I079e18b58b214bf8362945c253d6d894ca8b1a6b\n"
    },
    {
      "commit": "5509ed579773bf1a69bc5fb406a206a6da010c56",
      "tree": "d06172fadcae6f52ec4316b8ec578e0ee5c48093",
      "parents": [
        "bf81732b129675d667d2285859f32db16ef5e2f5"
      ],
      "author": {
        "name": "Atsushi SAKAI",
        "email": "sakaia@jp.fujitsu.com",
        "time": "Mon Nov 30 20:20:21 2015 +0900"
      },
      "committer": {
        "name": "Atsushi SAKAI",
        "email": "sakaia@jp.fujitsu.com",
        "time": "Mon Nov 30 20:25:17 2015 +0900"
      },
      "message": "Fix comment typos in inc/ and tests/ directories\n\nvalu3 \u003d\u003e value3\nenviromnet \u003d\u003e environment\ndirecotry \u003d\u003e directory\nvirualenv \u003d\u003e virtualenv\neditiable \u003d\u003e editable\nenvirnment \u003d\u003e environment\n\nChange-Id: I97fb2d44a37b16d02d4fbdb08bfa33414349f651\n"
    },
    {
      "commit": "d111182f218094dfdd88bda63af024c0c6e5d8cd",
      "tree": "6efbaec54afc4965767c187b5743c25b8346f438",
      "parents": [
        "5a98d4f7d0a1cf00f2aca9e0f3f6cdc285c1ee79",
        "ada886dd43ccc07f48d3a82d8d3d840fe5096c03"
      ],
      "author": {
        "name": "Jenkins",
        "email": "jenkins@review.openstack.org",
        "time": "Wed Oct 14 02:43:52 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "review@openstack.org",
        "time": "Wed Oct 14 02:43:52 2015 +0000"
      },
      "message": "Merge \"Don\u0027t mix declaration and set of locals\""
    },
    {
      "commit": "cb658fab15dbf8074038bc76fc54ec4afccf5716",
      "tree": "f84e5354076c802cfe5801a5600529e5d03e3fa5",
      "parents": [
        "95c33d532f5d69516c0fbe123595f00f00792995"
      ],
      "author": {
        "name": "Sean Dague",
        "email": "sean@dague.net",
        "time": "Thu Oct 08 17:12:03 2015 -0400"
      },
      "committer": {
        "name": "Ian Wienand",
        "email": "iwienand@redhat.com",
        "time": "Mon Oct 12 23:10:09 2015 +0000"
      },
      "message": "add pip install timing\n\nChange-Id: I368fec44858bd97fc6a314fb20eed2b10932cbb1\n"
    },
    {
      "commit": "ada886dd43ccc07f48d3a82d8d3d840fe5096c03",
      "tree": "93d62f1c82edc08d813b7f9f7eb9270e7024e055",
      "parents": [
        "433a9b10ddd6fa67d7459c4943a92ce4f488cebc"
      ],
      "author": {
        "name": "Ian Wienand",
        "email": "iwienand@redhat.com",
        "time": "Wed Oct 07 14:06:26 2015 +1100"
      },
      "committer": {
        "name": "Ian Wienand",
        "email": "iwienand@redhat.com",
        "time": "Wed Oct 07 17:03:32 2015 +1100"
      },
      "message": "Don\u0027t mix declaration and set of locals\n\nIa0957b47187c3dcadd46154b17022c4213781112 proposes to have bashate\nfind instances of setting a local value.  The issue is that \"local\"\nalways returns 0, thus hiding any failure in the commands running to\nset the variable.\n\nThis is an automated replacement of such instances\n\nDepends-On: I676c805e8f0401f75cc5367eee83b3d880cdef81\nChange-Id: I9c8912a8fd596535589b207d7fc553b9d951d3fe\n"
    },
    {
      "commit": "433a9b10ddd6fa67d7459c4943a92ce4f488cebc",
      "tree": "4db530838dadc2fc4e1e4ae4d37c6213f747919c",
      "parents": [
        "561137e88a513f1c1e1cc9f08b7d3bd909702282"
      ],
      "author": {
        "name": "Ian Wienand",
        "email": "iwienand@redhat.com",
        "time": "Wed Oct 07 13:29:31 2015 +1100"
      },
      "committer": {
        "name": "Ian Wienand",
        "email": "iwienand@redhat.com",
        "time": "Wed Oct 07 16:54:29 2015 +1100"
      },
      "message": "Don\u0027t set xtrace directly in local call\n\nIa0957b47187c3dcadd46154b17022c4213781112 detects setting local\nvariables with subshell commands.\n\nAlthough this is a particuarly benign case, it trips the test.  Rather\nthan putting in an ignore for this, we can easily change it to make\nthe test pass.  This seems better than putting in special work-arounds\nto bashate, etc.\n\nChange-Id: I37c3967c0f2d780a636a7d26cda83755085c5c69\n"
    },
    {
      "commit": "713fd2f6c644e13ed8ad7e8d819f6a3d44ff5370",
      "tree": "075349bcd6fad0d3b704d0b408cc992b313c7ea1",
      "parents": [
        "767c7298332d1275110ea983c2b9d4b228cbd2c9"
      ],
      "author": {
        "name": "Sirushti Murugesan",
        "email": "sirushti.murugesan@hp.com",
        "time": "Wed Sep 30 15:12:50 2015 +0530"
      },
      "committer": {
        "name": "Sirushti Murugesan",
        "email": "sirushti.murugesan@hp.com",
        "time": "Wed Sep 30 15:24:59 2015 +0530"
      },
      "message": "Additionally install test-requirements with pip_install\n\nWhen moving to Python 3, we also need to install test-requriements\nto allow projects to install any python 3 test dependencies they\nmight be missing otherwise.\n\nChange-Id: I2d19aa2f7ec8de869a82aa7764ab72cc8693101f\n"
    },
    {
      "commit": "c71973eb04d05c2497eb930c4e1b59dcaf983085",
      "tree": "b746858c67421e46d4b393558e6cd3fb052b7e81",
      "parents": [
        "2105b9f9ce325394d205d9c5f7a7427141bc4ebd"
      ],
      "author": {
        "name": "Sean Dague",
        "email": "sean@dague.net",
        "time": "Tue Sep 08 07:12:48 2015 -0400"
      },
      "committer": {
        "name": "Sean Dague",
        "email": "sean@dague.net",
        "time": "Fri Sep 11 07:01:02 2015 -0400"
      },
      "message": "check LIBS_FROM_GIT\n\nafter the glance_store vs. upper-constraints bug, it\u0027s probably worth\nactually enforcing and sanity checking that devstack is doing what\nit\u0027s being asked of with LIBS_FROM_GIT. This will hopefully reduce\nuser generated error.\n\nThis *might* not work with the current oslo naming, we\u0027ll have to test\nand normalize that.\n\nChange-Id: Iffef2007f99a0e932b68c4c897ebbfb748cac2b4\n"
    },
    {
      "commit": "05aa3846a0402edc9cc49f4ba36f09592004b273",
      "tree": "2ec4bb8ed899b1a9a89736d79b057a0bad9cb2e4",
      "parents": [
        "57aafb5a9ad20e19e2c248a8e853a32d5b719c03"
      ],
      "author": {
        "name": "Clark Boylan",
        "email": "clark.boylan@gmail.com",
        "time": "Mon Aug 03 11:14:13 2015 -0700"
      },
      "committer": {
        "name": "Sean Dague",
        "email": "sean@dague.net",
        "time": "Tue Aug 18 09:39:04 2015 -0700"
      },
      "message": "Just use constraints everywhere\n\nHaving behavior on your laptop diverge from behavior in the gate is\nconfusing. Just use constraints on every devstack run to be consistent.\nUsers of devstack can edit the requirements repo in order to change\nthese constraints locally if necessary.\n\nChange-Id: I843208e2e982eb04931b76f5cb4bd219fbcd70de\n"
    },
    {
      "commit": "2d25c9290d163d682ae3958f0e09fede937c0f0f",
      "tree": "5435b2da61aa43cd2772536aa2814fb96beaba87",
      "parents": [
        "05e32fb51ef2c493dd44a40bd9f0ae01822b2874",
        "2ba4a7214c96542987e1c379a28765a242136b12"
      ],
      "author": {
        "name": "Jenkins",
        "email": "jenkins@review.openstack.org",
        "time": "Mon Jul 06 18:22:33 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "review@openstack.org",
        "time": "Mon Jul 06 18:22:33 2015 +0000"
      },
      "message": "Merge \"Fixed detection of a project in projects.txt\""
    },
    {
      "commit": "7c838616c98212c808d12c3789cc17ec76cbd878",
      "tree": "70405e7c3651870e51020bf4438770040ce41cd2",
      "parents": [
        "018c50c2e279e73920d71c317fbabfe3a32c9943"
      ],
      "author": {
        "name": "Robert Collins",
        "email": "rbtcollins@hp.com",
        "time": "Fri Jul 03 13:28:09 2015 +1200"
      },
      "committer": {
        "name": "Robert Collins",
        "email": "rbtcollins@hp.com",
        "time": "Sat Jul 04 09:55:56 2015 +1200"
      },
      "message": "Fix library runs.\n\nLibraries were resulting in two edit-constraints runs:\n - one for the library, which adds a non-editable file path\n - then one for the editable servers, but that fails becuse\n   pkg-resources couldn\u0027t parse the prior entry.\n\nThis is fixed in two parts: the dependent patch which supports parsing\nfile urls that have egg names, and this patch which changes from a\nfile path to a file url with an egg name.\n\nChange-Id: I0f07858e96ea3baf46f8a453e253b9ed29c7f7e2\n"
    },
    {
      "commit": "635a5ba9929e1594aacfc0229663f43898479e2a",
      "tree": "63f67288f2089ff4e5fda36de1d7dc8e3ede0845",
      "parents": [
        "432268b17bff090a8ea8cbbd46c430ddd5be98a1"
      ],
      "author": {
        "name": "Robert Collins",
        "email": "rbtcollins@hp.com",
        "time": "Wed Jun 10 08:48:06 2015 +1200"
      },
      "committer": {
        "name": "Robert Collins",
        "email": "rbtcollins@hp.com",
        "time": "Thu Jul 02 11:37:22 2015 +1200"
      },
      "message": "constraints file support for devstack.\n\nConstraints files allow a global view of dependencies for devstack\nwithout the side effect that requirements files have of installing\neverything everytime. This is part of the cross project\nrequirements-management spec.\n\nChange-Id: If089d30146629e6cf817edd634e5c2b80f1366dd\n"
    },
    {
      "commit": "2ba4a7214c96542987e1c379a28765a242136b12",
      "tree": "5ee67adf79f53b52bd99e6a96c0c16c6935e88f3",
      "parents": [
        "c782781a4ca5fc2671a6e5d188f68e99e7a656f4"
      ],
      "author": {
        "name": "Ihar Hrachyshka",
        "email": "ihrachys@redhat.com",
        "time": "Fri Jun 26 10:45:44 2015 +0200"
      },
      "committer": {
        "name": "Jeremy Stanley",
        "email": "fungi@yuggoth.org",
        "time": "Wed Jul 01 13:42:14 2015 +0000"
      },
      "message": "Fixed detection of a project in projects.txt\n\nBefore the fix, requirements soft-update was used for projects that are\nin the file.\n\nChange-Id: I095d42521f54b45a6b13837e2f8375fa04532faa\nCloses-Bug: #1469067\n"
    },
    {
      "commit": "7af8a1b9b3180da54e2c9505228ad722db44ca27",
      "tree": "9fce8a371897a33f33e840061773853ef23902ca",
      "parents": [
        "c4067a3cc033eec0d6fa589718e35257c6bcae97"
      ],
      "author": {
        "name": "Sean Dague",
        "email": "sean@dague.net",
        "time": "Wed Jun 24 05:51:54 2015 -0400"
      },
      "committer": {
        "name": "Sean Dague",
        "email": "sean@dague.net",
        "time": "Wed Jun 24 05:55:02 2015 -0400"
      },
      "message": "only soft enforce requirements not in projects.txt\n\nWe\u0027re adding the ability to have devstack plugins, which should be\nmuch more free to require new things not in global requirements. Our\nold thinking of locking down all the requirements doesn\u0027t really work\nin a plugin model.\n\nInstead, if the project is in projects.txt, continue with the old\nbehavior. If it is not, do a soft update (update all the requirements\nwe know about, leave the ones we don\u0027t). This was previously the SOFT\nrequirements update mode, but now it will just be the default.\n\nChange-Id: Ic0c6e01a6d7613d712ac9e7e4a378cc3a8ce75e6\n"
    },
    {
      "commit": "40f3e33f734330c32f27882898ab1bb4ab8f3217",
      "tree": "dda0dcc7b877329284f44156b6910d3be78f22b1",
      "parents": [
        "810dc1d6f4b22eee04303e01968c1762a16986e0"
      ],
      "author": {
        "name": "Robert Collins",
        "email": "rbtcollins@hp.com",
        "time": "Fri Jun 19 08:04:00 2015 +1200"
      },
      "committer": {
        "name": "Robert Collins",
        "email": "rbtcollins@hp.com",
        "time": "Fri Jun 19 08:04:00 2015 +1200"
      },
      "message": "Put requirements repo in a venv.\n\nThis is to prevent any possible contamination of test results from its\npresence.\n\nChange-Id: I5a929854745650cc6a182ffc4d15c50caabdd727\n"
    },
    {
      "commit": "9860876f5dbb07826b680143a4e111ad580053fe",
      "tree": "77f0ba9a7222d399565cca1a3db3a071ca9f7979",
      "parents": [
        "60996b1b60c3efb1376b9f0d659acebd05c47f09"
      ],
      "author": {
        "name": "Amrith Kumar",
        "email": "amrith@tesora.com",
        "time": "Wed Apr 08 15:37:58 2015 -0400"
      },
      "committer": {
        "name": "Amrith Kumar",
        "email": "amrith@tesora.com",
        "time": "Wed Apr 08 16:28:34 2015 -0400"
      },
      "message": "perform install_infra sooner in stack.sh\n\nThe install_infra() call needs to be done earlier since\npip_install_gr() depends on it. Also the fact that python module names\nare supposed to be lower case but some use camel case is a problem\n(for example with XenAPI).\n\nChange-Id: I7012d77134fa0d9c746d87e837934e7dcb337e5c\nCloses-Bug: #1441820\n"
    },
    {
      "commit": "60996b1b60c3efb1376b9f0d659acebd05c47f09",
      "tree": "82a570b328fa22b437aa27a10716ae9b5c3da4ff",
      "parents": [
        "d1549d624dea9b00d7aa0f935759c69290e9ea17"
      ],
      "author": {
        "name": "Sean Dague",
        "email": "sean@dague.net",
        "time": "Wed Apr 08 09:06:49 2015 -0400"
      },
      "committer": {
        "name": "Sean Dague",
        "email": "sean@dague.net",
        "time": "Wed Apr 08 10:28:17 2015 -0400"
      },
      "message": "introduce pip_install_gr\n\nThis creates a new pip_install_gr that installs from global\nrequirements allowed versions. Now that stable branches are getting\ncapped all of devstack needs to be fixed to do things like this.\n\nChange-Id: I8fd0ef2bfc544ca2576fab09d3018f760b8848fe\n"
    },
    {
      "commit": "41d6f858be8431975762e65db470929c72b8f2a8",
      "tree": "611ecdd011df3c3ab60bfcc71281656f48767d00",
      "parents": [
        "c392fd3b5fd5464d87e514c173e4a5091d412caf"
      ],
      "author": {
        "name": "Dean Troyer",
        "email": "dtroyer@gmail.com",
        "time": "Wed Mar 25 22:42:46 2015 -0500"
      },
      "committer": {
        "name": "Dean Troyer",
        "email": "dtroyer@gmail.com",
        "time": "Thu Mar 26 15:36:23 2015 -0500"
      },
      "message": "Clean up additional INSTALL_TESTONLY_PACKAGES bits\n\nThe original removal is in https://review.openstack.org/#/c/167669/\n\nChange-Id: I3c59f040523d2cd1453465e80280955218880634\n"
    },
    {
      "commit": "ebdd9ac5b41da372c0276a507451ea9878be7dda",
      "tree": "4d933b332ade8428672ce8b28673691c4ef8d6d7",
      "parents": [
        "4cc060e77c58882f9728c2515e65d205d0e969dd"
      ],
      "author": {
        "name": "Chris Dent",
        "email": "chdent@redhat.com",
        "time": "Wed Mar 04 12:35:14 2015 +0000"
      },
      "committer": {
        "name": "Chris Dent",
        "email": "chdent@redhat.com",
        "time": "Thu Mar 26 14:27:54 2015 +0000"
      },
      "message": "Provide an option to force pip --upgrade\n\nMake it possible for someone to config\n\n  PIP_UPGRADE\u003dTrue\n\nin local.conf and thus force pip_install calls to upgrade. In\nautomated testing this is probably a bad idea, but in manual testing\nor situations where devstack is being used to spin up proof of\nconcepts having the option to use the latest and greatest Python\nmodules is a useful way of exploring the health of the ecosystem.\n\nTo help with visibility of the setting, and section has been added\nin configuration.rst near other similar settings.\n\nChange-Id: I484c954f1e1f05ed02c0b08e8e4a9c18558c05ef\n"
    },
    {
      "commit": "eeb7bda510ad29dce7bfc5eb8aed9b6fe25efea1",
      "tree": "550e2caaef10ce56f5bf96277c3293c05e969ea7",
      "parents": [
        "b23054c4b42b1c4ef8b0cdb642e63eac2a91a3f5"
      ],
      "author": {
        "name": "Sean Dague",
        "email": "sean@dague.net",
        "time": "Wed Mar 25 11:55:32 2015 -0400"
      },
      "committer": {
        "name": "Sean Dague",
        "email": "sean@dague.net",
        "time": "Wed Mar 25 11:55:32 2015 -0400"
      },
      "message": "eliminate TEST_ONLY differentiation\n\ndevstack is a development and test environment, but by default we were\nonly installing the runtime dependencies. We should install all the\ntesting required packages as well.\n\nChange-Id: I7c95927b9daad15766aac9d1276b10ca62efb24c\n"
    },
    {
      "commit": "6a83c423fc1d788d9e81b58a8659eca1cb84095d",
      "tree": "60bed3e68a2d7737b50ec20ae711a96459b58695",
      "parents": [
        "1331a828dab91f2e053cb1a4b78b872af00410c1"
      ],
      "author": {
        "name": "Eli Qiao",
        "email": "liyong.qiao@intel.com",
        "time": "Tue Mar 17 16:54:16 2015 +0800"
      },
      "committer": {
        "name": "Eli Qiao",
        "email": "liyong.qiao@intel.com",
        "time": "Tue Mar 17 17:03:29 2015 +0800"
      },
      "message": "Fix pip install error\n\nIf we set mutiple proxy (ip or url), pip install will\ntreat the second proxy as a command.\nAdd quotation marks around proxy.\nexpecially for no_proxy\n\nChange-Id: I38ad3f083ba5155cda0e5e2b8f5df64492b7fecd\n"
    },
    {
      "commit": "cd8824ac04989e625d7f1ae442498383250932a9",
      "tree": "bb31db5fa112b5840df93eb22abf220d1cab8510",
      "parents": [
        "7a678bfcb2726506a6daff3893c962ade4abb96c"
      ],
      "author": {
        "name": "Joe Gordon",
        "email": "joe.gordon0@gmail.com",
        "time": "Wed Mar 04 16:40:19 2015 -0800"
      },
      "committer": {
        "name": "Joe Gordon",
        "email": "joe.gordon0@gmail.com",
        "time": "Fri Mar 06 01:33:31 2015 +0000"
      },
      "message": "Pass PIP_FIND_LINKS through sudo to pip\n\nWe weren\u0027t actually using the wheels since PIP_FIND_LINKS environmental\nvariable was getting lost during the sudo\n\nChange-Id: I4a89a70df63772a16ee5a8c3f1cd86e9c7bb5242\n"
    },
    {
      "commit": "8c2ce6ea724c9123b8cc5660c6ad52aa8ebf9865",
      "tree": "a1cb60d0152a36c76125f04d4565c11d7473d714",
      "parents": [
        "b1d8e8e274f0c220ae19ee3ea1a3b9a533459297"
      ],
      "author": {
        "name": "Dean Troyer",
        "email": "dtroyer@gmail.com",
        "time": "Wed Feb 18 14:47:54 2015 -0600"
      },
      "committer": {
        "name": "Dean Troyer",
        "email": "dtroyer@gmail.com",
        "time": "Wed Feb 18 20:19:38 2015 -0600"
      },
      "message": "Virtual environment groundwork\n\nIntroduce the tooling to build virtual environments.\n\n* tools/build_venv.sh: build a venv\n* introduce lib/stack to house functionality extracted from stack.sh that\n  is needed in other places, such as Grenade; start with stack_install_service\n  to wrap the venv install mechanics\n* declare PROJECT_VENV array to track where project venvs should be installed\n* create a venv for each project defined in PROJECT_VENV in stack_install_service()\n\nChange-Id: I508588c0e2541b976dd94569d44b61dd2c35c01c\n"
    },
    {
      "commit": "a6de7e962c3293d3a5e5e6ef1ead97c0ea0067f0",
      "tree": "a7d111dfc7fac8a937119e983bbbe2f64d3e6115",
      "parents": [
        "2e9d32baf274fc0bd7edc5fd3b9df3f3fa01e2bd",
        "2b564763aafe6466f42bc5cf2ccc47ddf4169986"
      ],
      "author": {
        "name": "Jenkins",
        "email": "jenkins@review.openstack.org",
        "time": "Wed Feb 18 20:59:20 2015 +0000"
      },
      "committer": {
        "name": "Gerrit Code Review",
        "email": "review@openstack.org",
        "time": "Wed Feb 18 20:59:20 2015 +0000"
      },
      "message": "Merge \"Teach pip_install() about virtual envs\""
    },
    {
      "commit": "d5ac7852473a8a34ae097c33ed173d640db80379",
      "tree": "a149e49e3aa77709ba7dfbb0fa9a67e960b224c5",
      "parents": [
        "d26da45b98a75b9d61d0a33d216ca15543a7faf2"
      ],
      "author": {
        "name": "Joe Gordon",
        "email": "joe.gordon0@gmail.com",
        "time": "Fri Feb 06 19:29:23 2015 -0800"
      },
      "committer": {
        "name": "Joe Gordon",
        "email": "joe.gordon0@gmail.com",
        "time": "Tue Feb 17 11:48:06 2015 -0800"
      },
      "message": "Add new function get_from_global_requirements\n\nInstead of specifying the version of a library in devstack, use the version from\nglobal-requirements\n\nAdd new function get_from_global_requirements and use it\nwhere it makes sense.\n\nChange-Id: I6b2f062761ac05ef72fc6cc9993bc204faf06fa5\n"
    },
    {
      "commit": "2b564763aafe6466f42bc5cf2ccc47ddf4169986",
      "tree": "134ea203d74a8de02afa9bb7957685df54b24a42",
      "parents": [
        "2a811912c6e8a2f85d4a9ef03694cd29cb5fd1cd"
      ],
      "author": {
        "name": "Dean Troyer",
        "email": "dtroyer@gmail.com",
        "time": "Wed Feb 11 17:01:02 2015 -0600"
      },
      "committer": {
        "name": "Dean Troyer",
        "email": "dtroyer@gmail.com",
        "time": "Thu Feb 12 12:19:20 2015 -0600"
      },
      "message": "Teach pip_install() about virtual envs\n\nSet PIP_VIRTUAL_ENV to install the package(s) into an existing virtual\nenvironment.  This works by simply using the pip command already\nin the venv, and not using sudo.\n\nChange-Id: I910e1752e58a666174f83b4f97e547851e66e655\n"
    },
    {
      "commit": "490430dbe3b7d9979b4623f2c327bb0a74436401",
      "tree": "527289f426c49bb51234a1e0621a0afe1ffac20e",
      "parents": [
        "a1b82cc1b5a7172c3fdf17d2c3f0725660911ad7"
      ],
      "author": {
        "name": "Dean Troyer",
        "email": "dtroyer@gmail.com",
        "time": "Fri Jan 30 14:38:35 2015 -0600"
      },
      "committer": {
        "name": "Dean Troyer",
        "email": "dtroyer@gmail.com",
        "time": "Fri Jan 30 14:59:48 2015 -0600"
      },
      "message": "Split functions-common: python functions\n\nMove Python-related functions into inc/python\n\nShould be transparent to all callers as it is sourced from functions-common\n\nChange-Id: I88043830cef9211b4e0baa91bfcc7a92125afa9f\n"
    }
  ]
}
