<div dir="ltr"><br><div><span id="docs-internal-guid-dca4fe93-a574-af34-5949-fc589414c7ae"><span style="font-size:14.6667px;font-family:Arial;color:rgb(0,0,0);vertical-align:baseline;white-space:pre-wrap;background-color:transparent">Hello.</span></span></div><div><span><span style="font-size:14.6667px;font-family:Arial;color:rgb(0,0,0);vertical-align:baseline;white-space:pre-wrap;background-color:transparent">  </span></span><br></div><div><span id="docs-internal-guid-dca4fe93-a571-1859-38d9-edb3afc46958"><p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt"><span style="font-size:14.6667px;font-family:Arial;color:rgb(0,0,0);vertical-align:baseline;white-space:pre-wrap;background-color:transparent"><i>Background: </i></span></p><p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt"><span style="font-size:14.6667px;font-family:Arial;color:rgb(0,0,0);vertical-align:baseline;white-space:pre-wrap;background-color:transparent">Linux packages like DEB/RPM have “Depends:” clauses, Currently packagers use the global-requirements.txt (via requirements.txt) to come up with the version range for this “Depends: || Requires:” clause. </span></p><p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt"><span style="font-size:14.6667px;font-family:Arial;color:rgb(0,0,0);vertical-align:baseline;white-space:pre-wrap;background-color:transparent"><i>Example :</i></span></p><p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt"><span style="font-size:14.6667px;font-family:Arial;vertical-align:baseline;white-space:pre-wrap;background-color:transparent"><font color="#000000">[deb] </font><a href="http://noodle.portalus.net/debian/pool/main/n/nova/nova_13.0.0-2.dsc" style="text-decoration:none">http://noodle.portalus.net/debian/pool/main/n/nova/nova_13.0.0-2.dsc</a></span></p><p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt"><span style="color:rgb(0,0,0);font-family:Arial;font-size:14.6667px;line-height:20.24px;white-space:pre-wrap">[rpm]</span><span style="font-family:Arial;font-size:14.6667px;line-height:20.24px;white-space:pre-wrap"><u> </u></span><a href="https://github.com/openstack-packages/nova/blob/rpm-master/openstack-nova.spec#L378" style="font-family:Arial;font-size:14.6667px;white-space:pre-wrap;line-height:1.38;text-decoration:none;background-color:transparent">https://github.com/openstack-packages/nova/blob/rpm-master/openstack-nova.spec#L378</a></p><br><br><p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt"><span style="font-size:14.6667px;font-family:Arial;color:rgb(0,0,0);vertical-align:baseline;white-space:pre-wrap;background-color:transparent"> According to proposed changes in G-R (</span><a href="https://etherpad.openstack.org/p/newton-global-requirements" style="text-decoration:none"><span style="font-size:14.6667px;font-family:Arial;text-decoration:underline;vertical-align:baseline;white-space:pre-wrap;background-color:transparent">https://etherpad.openstack.org/p/newton-global-requirements</span></a><span style="font-size:14.6667px;font-family:Arial;color:rgb(0,0,0);vertical-align:baseline;white-space:pre-wrap;background-color:transparent">)  related to ranges/bounds I want to clarify situation for Linux packagers.</span></p><p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt"><span style="font-size:14.6667px;font-family:Arial;color:rgb(0,0,0);vertical-align:baseline;white-space:pre-wrap;background-color:transparent"> Very often packages for requirements mentioned in requirements.txt or global-requirements  file are built using code versions set in lower bounds. Usage of broader range for requirements will lead to complex calculations of minimum version of requirement which will satisfy all of projects which are using it. From perspective of packaging - must be only one installed version of requirement in a system.</span></p><p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt"><span style="font-size:14.6667px;font-family:Arial;color:rgb(0,0,0);vertical-align:baseline;white-space:pre-wrap;background-color:transparent"> To avoid this complexity and provide co-installability, upper constraints could be used as the source of minimal version for requirements in system package.</span></p><br><p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt"><span style="font-size:14.6667px;font-family:Arial;color:rgb(0,0,0);vertical-align:baseline;white-space:pre-wrap;background-color:transparent">Example(Mitaka):</span></p><p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt"><span style="font-size:13.3333px;font-family:Arial;color:rgb(0,0,0);vertical-align:baseline;white-space:pre-wrap;background-color:transparent">Package python-nova with requirements according to </span><span style="font-size:13.3333px;font-family:Arial;color:rgb(0,0,0);font-weight:700;vertical-align:baseline;white-space:pre-wrap;background-color:transparent">global-requirements</span></p><p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt"><span style="font-size:13.3333px;font-family:Arial;color:rgb(0,0,0);vertical-align:baseline;white-space:pre-wrap;background-color:transparent">(</span><a href="https://github.com/openstack/requirements/blob/stable/mitaka/global-requirements.txt#L68" style="text-decoration:none"><span style="font-size:13.3333px;font-family:Arial;text-decoration:underline;vertical-align:baseline;white-space:pre-wrap;background-color:transparent">https://github.com/openstack/requirements/blob/stable/mitaka/global-requirements.txt#L68</span></a><span style="font-size:13.3333px;font-family:Arial;color:rgb(0,0,0);vertical-align:baseline;white-space:pre-wrap;background-color:transparent">):</span></p><p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt"><span style="font-size:13.3333px;font-family:Arial;color:rgb(0,0,0);vertical-align:baseline;white-space:pre-wrap">Depends: </span></p><p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt"><span style="font-size:13.3333px;font-family:Arial;color:rgb(0,0,0);vertical-align:baseline;white-space:pre-wrap">          python-iso8601 (>= 0.1.9),</span></p><br><p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt"><span style="font-size:13.3333px;font-family:Arial;color:rgb(0,0,0);vertical-align:baseline;white-space:pre-wrap;background-color:transparent">Package python-nova with requirements according to </span><span style="font-size:13.3333px;font-family:Arial;color:rgb(0,0,0);font-weight:700;vertical-align:baseline;white-space:pre-wrap;background-color:transparent">upper-constraints</span></p><p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt"><span style="font-size:13.3333px;font-family:Arial;color:rgb(0,0,0);vertical-align:baseline;white-space:pre-wrap;background-color:transparent">(</span><a href="https://github.com/openstack/requirements/blob/stable/mitaka/upper-constraints.txt#L153" style="text-decoration:none"><span style="font-size:13.3333px;font-family:Arial;text-decoration:underline;vertical-align:baseline;white-space:pre-wrap;background-color:transparent">https://github.com/openstack/requirements/blob/stable/mitaka/upper-constraints.txt#L153</span></a><span style="font-size:13.3333px;font-family:Arial;color:rgb(0,0,0);vertical-align:baseline;white-space:pre-wrap;background-color:transparent">):</span></p><p dir="ltr" style="line-height:1.38;margin-top:0pt;margin-bottom:0pt"><span style="font-size:13.3333px;font-family:Arial;color:rgb(0,0,0);vertical-align:baseline;white-space:pre-wrap">Depends: </span></p><span style="font-size:13.3333px;font-family:Arial;color:rgb(0,0,0);vertical-align:baseline;white-space:pre-wrap">          python-iso8601 (>= 0.1.11),</span></span><br clear="all"><div><div class="gmail_signature"><div dir="ltr"><div><div><span><font color="#888888"><br><div dir="ltr"><div>Thanks,</div>Igor Yozhikov<br>Senior Deployment Engineer<br>at <span style="color:rgb(11,83,148)"><a href="http://www.mirantis.com" target="_blank">Mirantis</a></span><br>
<span><span><font color="#888888">skype: <span style="color:rgb(61,133,198)"><span style="background-color:rgb(255,255,255)">igor.yozhikov</span></span><br>cellular: +<span style="color:rgb(61,133,198)">7 901 5331200</span><br></font></span></span></div><div><span><span><font color="#888888">slack: </font></span></span><span style="color:rgb(61,133,198)"><span>iyozhikov</span></span></div></font></span></div></div></div></div></div>
</div></div>