<p dir="ltr">Sed doesn't exist on windows, whereas a python script can. Sed doesn't handle multiple line constraints.</p>
<p dir="ltr">Rob</p>
<div class="gmail_extra"><br><div class="gmail_quote">On 10 Nov 2016 12:00 AM, "Ihar Hrachyshka" <<a href="mailto:ihrachys@redhat.com">ihrachys@redhat.com</a>> wrote:<br type="attribution"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><br>
> On 8 Nov 2016, at 04:07, Tony Breeds <<a href="mailto:tony@bakeyournoodle.com">tony@bakeyournoodle.com</a>> wrote:<br>
><br>
> On Sat, Sep 03, 2016 at 07:33:42PM +0200, Andreas Jaeger wrote:<br>
>> Reviewing all the constraints work, I see that repositories have created<br>
>> some workaround around requirements install for one of these two legimit<br>
>> reasons - most often using tools/tox_install.sh from tox.ini for it:<br>
>><br>
>> 1) The repository is a dependency of another one and uses constraints,<br>
>> so edit upper-constraints file and allow git install.<br>
>><br>
>> Example:<br>
>> <a href="http://git.openstack.org/cgit/openstack/ironic-lib/tree/tools/tox_install.sh" rel="noreferrer" target="_blank">http://git.openstack.org/cgit/<wbr>openstack/ironic-lib/tree/<wbr>tools/tox_install.sh</a><br>
><br>
> We had a very brief discussion about this in Barcelona.  The idea being to<br>
> create an "incubator" style script in openstack/requirements that can be the<br>
> canonical source and easily copied out to repos that need it.  I'm not<br>
> proposing auto syncing but it would be pretty easy to script.<br>
><br>
> We need "all projects"[1] to support constraints real soon now.  It seems like<br>
> the majority of projects that currently do not use constraints are because<br>
> they're also listed in constraints.<br>
><br>
> I started looking at this today using [2] as the base in the oslo.messaging<br>
> repo  The good thing about this is it doesn't "just work"  I hit the following<br>
> problem:<br>
> ---<br>
> cmdargs: ['/home/stack/projects/<wbr>openstack/openstack/oslo.<wbr>messaging/tools/tox_install.<wbr>sh', '<a href="https://git.openstack.org/cgit/openstack/requirements/plain/upper-constraints.txt" rel="noreferrer" target="_blank">https://git.openstack.org/<wbr>cgit/openstack/requirements/<wbr>plain/upper-constraints.txt</a>', '/home/stack/projects/<wbr>openstack/openstack/oslo.<wbr>messaging/.tox/dist/oslo.<wbr>messaging-5.12.1.dev10.zip']<br>
> <snip><br>
> Processing ./.tox/dist/oslo.messaging-5.<wbr>12.1.dev10.zip<br>
> Could not satisfy constraints for 'oslo.messaging': installation from path or url cannot be constrained to a version<br>
> ---<br>
><br>
> This is because we use 'edit-constraints' to change "oslo.messaging===5.12.0" to<br>
> "-e file:///home/stack/projects/<wbr>openstack/openstack/oslo.<wbr>messaging#egg=oslo.messaging"[<wbr>3]<br>
><br>
> Which doesn't match because we're installing from an sdist.<br>
><br>
> For development installs like this what we really want is a way to say<br>
> constrain all my requirements but allow this library to be unconstrained don't<br>
> we?  That seems to me what we're saying in [3].  When I'm working locally I do<br>
> something like:<br>
><br>
> ---<br>
> pip install -c <a href="https://git.openstack.org/cgit/openstack/requirements/plain/upper-constraints.txt" rel="noreferrer" target="_blank">https://git.openstack.org/<wbr>cgit/openstack/requirements/<wbr>plain/upper-constraints.txt</a> \<br>
>            -r requirements.txt -r test-requirements.txt<br>
> pip install .<br>
> ---<br>
><br>
> This is all leading me to think that we should just remove the constraint on<br>
> $library which can be done with something like:<br>
> --- [4]<br>
> #!/usr/bin/env bash<br>
><br>
> # Client constraint file contains this client version pin that is in conflict<br>
> # with installing the client from source. We should remove the version pin in<br>
> # the constraints file before applying it for from-source installation.<br>
> BRANCH_NAME=XXX<br>
> CLIENT_NAME=XXX<br>
><br>
> set -e<br>
><br>
> CONSTRAINTS_FILE=$1<br>
> shift<br>
><br>
> localfile="${VIRTUAL_ENV}/<wbr>upper-constraints.txt"<br>
> if [[ $CONSTRAINTS_FILE != http* ]]; then<br>
>    CONSTRAINTS_FILE=file://$<wbr>CONSTRAINTS_FILE<br>
> fi<br>
><br>
> curl $CONSTRAINTS_FILE -k -o $localfile<br>
> sed -i~ -e "/^${CLIENT_NAME}===/d" $localfile<br>
><br>
> pip install -U -c$localfile $*<br>
> ---<br>
><br>
> Using openstack_requirements is the "right" thing to do and we could still use<br>
> edit-constraints $localfile -- $CLIENT_NAME ""<br>
> do delete the entry but it seems like wasted work to me<br>
<br>
I believe sed is the way to go. There is not much we get from edit-constraints at this point, and it untangles the script from zuul-cloner that would be needed to fetch requirements repo.<br>
<br>
It seems like the way to go. Wanna propose a patch for a repo (oslo.messaging) to iterate on it in gerrit?<br>
<br>
Ihar<br>
______________________________<wbr>______________________________<wbr>______________<br>
OpenStack Development Mailing List (not for usage questions)<br>
Unsubscribe: <a href="http://OpenStack-dev-request@lists.openstack.org?subject:unsubscribe" rel="noreferrer" target="_blank">OpenStack-dev-request@lists.<wbr>openstack.org?subject:<wbr>unsubscribe</a><br>
<a href="http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev" rel="noreferrer" target="_blank">http://lists.openstack.org/<wbr>cgi-bin/mailman/listinfo/<wbr>openstack-dev</a><br>
</blockquote></div></div>