[Development] Specifying module dependencies

Simon Hausmann simon.hausmann at theqtcompany.com
Tue Jun 16 10:54:48 CEST 2015


On Monday, June 15, 2015 07:40:07 PM Sergio Ahumada wrote:
> On 15.06.2015 08:52, Simon Hausmann wrote:
> > Perhaps there is a misunderstanding here, so let me confirm also what
> > Joerg
> > said: At this point we're interested in discussion repository
> > dependencies. I understand that are somewhat parallel to the qt module
> > dependencies and I also understand that a full build system "evaluation"
> > is required to entirely reduce the duplication. However at this point
> > we're interested in taking one step into a more modular direction for the
> > repositories only.
> > 
> > As it stands today, in order for a repository to be built by the current
> > CI
> > system, it has to be included in qt5.git. This is an unfortunate artifact
> > of the way the system builds but I'm not convinced that it is a
> > restriction we want to impose on contributed repositories. Therefore the
> > new CI system does not require this.
> 
> maybe I misunderstood .. but are you saying that it is a hard
> requirement to be registered in qt5.git in order to able to be part of
> the current CI ?
> 
> how did https://codereview.qt-project.org/96072 and
> https://codereview.qt-project.org/98297 get merged by the current CI then ?

Unfortunately I can't find any build logs for those two modules that support 
my theory, but from a glance at qtmod_test.pl I have the impression that the 
following is implemented:

1) Modules inside qt5.git are built using "make module-foo" and thus rely on 
qt5.pro to have the correct dependency chain. Sync.profile is used to "git 
reset" to the right "heads" of depending modules.

2) For modules outside qt5.git sync.profile is used to do "make module-bar" 
and "make module-baz" in qt5.git before building the module itself. If no 
sync.profile is present, qtbase is the automatic dependency. That means such 
modules cannot depend on other modules unless they're part of qt5.git.

We are eliminating these restrictions - a module can depend on other modules 
regardless of where they are. All the module needs to be able to do is to 
build with "qmake" and "make" and support everything necessary with "make 
install". As it turns out, this is what our existing modules support to a 
surprising degree :)


Simon



More information about the Development mailing list