[Development] Specifying module dependencies

Gladhorn Frederik Frederik.Gladhorn at theqtcompany.com
Thu Jun 11 22:30:37 CEST 2015


On Thursday 11. June 2015 18.47.40 Oswald Buddenhagen wrote:
> On Thu, Jun 11, 2015 at 03:43:15PM +0200, Simon Hausmann wrote:
> > On Thursday, June 11, 2015 12:29:10 PM Oswald Buddenhagen wrote:
> > > On Wed, Jun 10, 2015 at 08:32:07PM +0000, Hausmann Simon wrote:
> > > > Hi,
> > > > 
> > > > Ok :) let's try with reduced qmake syntax (just variables, no
> > > > functions).
> > > > We can still fall back to json if it's too clumsy.
> > > 
> > > as you can "parse anything", what's wrong with parsing the function
> > > calls from qt.pro? they match a pretty simple regexp ...
> > 
> > Nothing is wrong with that. In fact that's a great idea :)
> > 
> > So how about we place a dependencies.pri into the top-level directory of
> > each module that contains just that one addModule(...) function call?
> > 
> > Then qt.pro can just include whatever is there, the CI can simply parse it
> > and - this is different to today's status - the module dependencies are
> > tracked within the module instead of in the external qt5.git.
> 
> it's not that easy.
> 
> 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 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.

Therefore I would propose containing the information of what dependencies a module (on the git repository level) has inside the module itself.

I see that the library level dependencies need to be in the build system, that makes sense since it's more fine-grained.
Maybe we can still aim to have a recommended way of doing this.

Cheers,
Frederik


> 
> _______________________________________________
> Development mailing list
> Development at qt-project.org
> http://lists.qt-project.org/mailman/listinfo/development



More information about the Development mailing list