Hi all,

when talking about how we manage dependencies in the CI system, an interesting 
pain point came up during the contributors' summit:

We have several redundant overlapping, not very clear ways of specifying a 
module's dependencies. Optional deps make it harder.

I'll list the 5 options I know of below. My question is, can we agree on 
something less hidden, with simple syntax that can be used by both qmake and 
the CI system.

For the CI system, we can parse pretty much anything, of course we don't want 
to implement a qmake copy...
A sensible compromise might be JSON since afaict qmake eats that.

Greetings,
Frederik


What we currently have (probably incomplete):

1) sync.profile
A file in each module that allows specifying dependencies in terms of git 
modules (including sha1s), perl syntax. Used by syncqt for public headers but 
also has a section like this (qtdeclarative):
# Module dependencies.
# Every module that is required to build this module should have one entry.
# Each of the module version specifiers can take one of the following values:
#   - A specific Git revision.
#   - any git symbolic ref resolvable from the module's repository (e.g. 
"refs/heads/master" to track master branch)
#   - an empty string to use the same branch under test (dependencies will 
become "refs/heads/master" if we are in the master branch)
#
%dependencies = (
        "qtbase" => "",
        "qtxmlpatterns" => "",
);


2) qt_modulename_.pro
sometimes things seem to be excluded here, e.g. qtserialport has:
requires(!winrt)

3) module/src/src.pro
example qtwinextras and others:
win32 {
    TEMPLATE = subdirs
    CONFIG += ordered
    SUBDIRS += winextras
    qtHaveModule(quick): SUBDIRS += imports
} else {
    # fake project for creating the documentation
    TEMPLATE = aux
    QMAKE_DOCS = $$PWD/winextras/doc/qtwinextras.qdocconf
}

4) qt5.git
in qt.pro we list all modules again, with deps:
addModule(qtdeclarative, qtbase, qtsvg qtxmlpatterns)
(amusingly this is not even correct, qtsvg is not a dependency of 
qtdeclarative any more)

5) I don't even understand how qtwebengine does it to not build for 
Android/iOS...

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

Reply via email to