[Development] Specifying module dependencies

Oswald Buddenhagen oswald.buddenhagen at theqtcompany.com
Fri Jun 12 09:47:44 CEST 2015


On Thu, Jun 11, 2015 at 08:30:37PM +0000, Gladhorn Frederik wrote:
> On Thursday 11. June 2015 18.47.40 Oswald Buddenhagen wrote:
> > you won't get rid of the redundant dependency specifications anyway,
> > because qt.pro (and the sync.profile's) are about repository deps,
> > while the module's requires() (and whatever other methods they use
> > to exclude themselves) are about module (and non-qt) deps.
> > 
> > about sync.profile and pinning, i think you didn't consider
> > non-mainline branches in your plan. you need to specify the branches
> > of the other modules you want to build against *somewhere*. nowadays
> > that could be actually qt5.git's .gitmodules, as it now contains the
> > branches. of course, this implies branching qt5.git for every
> > CI-controlled non-mainline branch. this actually sounds quite
> > logical. i'm all for removing the inter-repo deps from sync.profile
> > - it was never meant to contain them in the first place.
> 
> I'm concerned about using qt5.git to hold the information of module
> dependencies since it will never be complete
>
this will always be the case at some times as long as the information is
held redundantly.

> and the information should imho be with the module, not in some other
> git repository. From that point of view sync.profile is preferable.

> The reason is that it doesn't scale - when a new module is created, it
> shouldn't have to require registration in qt5.git.  This also applies
> to modules that are not (yet) part of official releases or that are
> proprietary for whatever reason. All of these modules don't belong in
> qt5.git.
> 
new modules can be registered before they enter mainline - there are
plenty of precedents for that.
proprietary modules can be added in a proprietary branch.

this is really the same discussion as specifying sources belonging to a
project by wildcard. i'm fairly firmly on the 'nope' side on this one
(see discussion in https://bugreports.qt.io/browse/QBS-58).

> Therefore I would propose containing the information of what
> dependencies a module (on the git repository level) has inside the
> module itself.
> 
that must include the branches. these will inevitably be redundant with
qt5/.gitmodules. and we've recently seen that this redundancy is
actually causing problems.

On Fri, Jun 12, 2015 at 09:05:09AM +0200, Joerg Bornemann wrote:
> But it's easily possible to deduce information about repository
> dependencies from module dependencies, isn't it?
> 
to do that, you need
- a full understanding of the build system. virtually impossible to get
  with qmake.
- the repositories themselves, so the build tool can find the modules in
  them. this does not help when you need to decide which repositories
  you need to clone in the first place.

it all boils down to the fact that aggregation must happen top-down.
we could unify the implementation somewhat by adding more custom fields
to .gitmodules instead of duplicating some of the information in qt.pro.
but there is no way around the fundamental requirement. even with qbs.



More information about the Development mailing list