[openstack-dev] Automation around binary dependencies

Flavio Percoco flavio at redhat.com
Tue Jun 11 12:04:35 UTC 2013


On 11/06/13 09:15 +1200, Robert Collins wrote:
>On 11 June 2013 08:32, Mark McLoughlin <markmc at redhat.com> wrote:
>> Hi
>>
>> Having metadata in each project describing its non-python requirements
>> is definitely a good thing. As is having some way of turning that
>> metadata into a "check these deps are satisfied" or "install these deps"
>> disto-specific command.
>>
>> I think it's great you've kicked this off - it's a great starting point
>> for finding a workable solution. I'm actually kinda surprised we never
>> had e.g. tools/install-deps.sh type scripts long ago.
>
>:) We do in devstack, but eesh thats harsh on a workstation.
>
>> The first thing I notice is that the list of requirements is a list of
>> debian packages and versions. Obviously, anyone who doesn't use a debian
>> distro wouldn't like to have to cater first for debian and then for
>> their preferred distro when adding a dep. I think the project has gone
>> beyond having a single first class distro, so I think this needs
>> improving.
>>
>> (I've an obvious bias here - but the concern honestly does go beyond
>> just me)
>
>I agree; here are my thoughts on some approaches for this.
>
>A - have a golden list, and describe everything in those terms. When
>platforms (debian/ubuntu/fedora/rhel) etc disagree, whoever doesn't
>match the golden list has to translate. We can build and ship a global
>translation list, as well as per-project translation lists.
>

I think this one would work better and help keeping those list
organized.

>B - have platform specific rules in other-requirements.txt. e.g.
>linux-image-generic [platform:ubuntu]
>linux-image [platform:debian]
>kernel [platform:rpm]

It's an interesting idea but this would make the requirements list
longer and harder to read. Wouldn't it?

>> We could also use openstack/requirements to maintain a mapping of distro
>> agnostic requirement name/version to distro specific package
>> name/version. Maybe bindep would look use the distro mapping table to
>> apply other-requirements.txt or maybe we'd have a utility to copy the
>> appropriate parts of the mapping table into other-requirements.txt.
>>
>> Bikeshed - other-requirements could be system-requirements.txt or
>> distro-requirements.txt ?
>
>Certainly, I have no strong attachments here. Blue is fine :). What I
>will say is that if 'distro agnostic' means 'pick a name *no* distro
>is using if *any distro deviates from another distro*', then that way
>lies a lot of pain and burden. I'd *much* rather say 'distro agnostic
>means Debian' or 'distro agnostic means Ubuntu', not to "bless" such a
>distro as far as OpenStack is concerned, but to just give us a stable
>and comprehensive list of packages as a starting point.
>

What about just passing the requirements file as we do with pip? We
can have a standard for OS projects anyway but keeping bindep
filename-agnostic seems better to me.


>>> I think this could live very happily as an oslo component, like pbr
>>> does. It provides a small CLI, and a Python library which can be used
>>> from things like pbr or CI scripts, if they want to layer on it.
>>
>> It could come under oslo, but I'd like to see it gain a good deal of
>> traction first. Obviously adding other-requirements.txt to projects
>> would be a good first step. Using it in devstack would be next?
>

Agree with Mark here.


Nice work Rob, this is definitely a good thing.

Cheers,
FF

-- 
@flaper87
Flavio Percoco



More information about the OpenStack-dev mailing list