[Qbs] Donation to QBS developers/maintainers/contributes
Christian Gagneraud
chgans at gmail.com
Tue May 14 14:08:06 CEST 2019
On Tue, 14 May 2019 at 23:35, Christian Gagneraud <chgans at gmail.com> wrote:
>
> On Tue, 14 May 2019 at 23:11, Christian Gagneraud <chgans at gmail.com> wrote:
> >
> > On Tue, 14 May 2019 at 22:51, Иван Комиссаров <abbapoh at gmail.com> wrote:
> > >
> > > I wonder how hard is to implement pure c++ "declarative" library. Afaik, qtdeclarative originally used v8 JavaScript engine which got replaced with Qt-ish engine to avoid conversions to/from Qt types. Maybe, it's possible to go the opposite direction and remove Qt dependency in the first place?
> > > Except for GUI and script module, I don't think there's a lot of Qt stuff.
> >
> > chgans at chgans-pc:~/Projects/qt-creator/src/shared/qbs$ find src/ -name
> > '*.[hc]*' | xargs sed -ne 's, *# *include *<\(Q[^/>.]*\)[/>].*$,\1,gp'
> > | sort | uniq -c | sort -nr
> > 673 QtCore
> > 76 QtScript
> > 7 QtGui
> > 6 QtWidgets
> > 5 QtNetwork
> > 1 QtXml
>
> The above is the number of #include in all cpp and h files, per Qt
> module. As you can see dependency on QtCore is quite heavy.
>
> And here is the number of cpp/h files using QtScript, per directory:
> chgans at chgans-pc:~/Projects/qt-creator/src/shared/qbs$ git grep -l
> QtScript src/ | egrep '.(cpp|h)' | xargs dirname | sort | uniq -c |
> sort -nr
> 17 src/lib/corelib/buildgraph
> 14 src/lib/corelib/jsextensions
> 12 src/lib/corelib/language
> 3 src/lib/corelib/tools
>
> Ideally you would like to see only jsextensions and language
Just in case someone follows my monologue... :)
QtSCript dependency of buildgraph:
chgans at chgans-pc:~/Projects/qt-creator/src/shared/qbs$ git grep -h
QtScript src/lib/corelib/buildgraph/ | sed -ne 's,^ *# *include
*<QtScript/\([^>]*\)>.*$,\1,gp' | sort | uniq -c | sort -nr
10 qscriptvalue.h
3 qscriptengine.h
3 qscriptcontext.h
2 qscriptvalueiterator.h
2 qscriptclass.h
1 qscriptstring.h
1 qscriptprogram.h
1 qscriptclasspropertyiterator.h
I'm no expert at QtScript and Javascript, but this looks mostly like
"core" classes (value, engine, context, program).
And here are the "offenders"
chgans at chgans-pc:~/Projects/qt-creator/src/shared/qbs$ git grep -l
QtScript src/lib/corelib/buildgraph/
src/lib/corelib/buildgraph/artifactsscriptvalue.cpp
src/lib/corelib/buildgraph/artifactsscriptvalue.h
src/lib/corelib/buildgraph/buildgraph.cpp
src/lib/corelib/buildgraph/buildgraph.h
src/lib/corelib/buildgraph/dependencyparametersscriptvalue.h
src/lib/corelib/buildgraph/depscanner.cpp
src/lib/corelib/buildgraph/depscanner.h
src/lib/corelib/buildgraph/processcommandexecutor.cpp
src/lib/corelib/buildgraph/projectbuilddata.h
src/lib/corelib/buildgraph/qtmocscanner.cpp
src/lib/corelib/buildgraph/qtmocscanner.h
src/lib/corelib/buildgraph/rulecommands.cpp
src/lib/corelib/buildgraph/rulecommands.h
src/lib/corelib/buildgraph/rulesapplicator.cpp
src/lib/corelib/buildgraph/rulesapplicator.h
src/lib/corelib/buildgraph/rulesevaluationcontext.h
src/lib/corelib/buildgraph/scriptclasspropertyiterator.h
But this is without looking at leaks from langugage itself:
chgans at chgans-pc:~/Projects/qt-creator/src/shared/qbs$ git grep -l
QtScript src/lib/corelib/language/*.h
src/lib/corelib/language/evaluationdata.h
src/lib/corelib/language/evaluator.h
src/lib/corelib/language/evaluatorscriptclass.h
src/lib/corelib/language/language.h
src/lib/corelib/language/scriptengine.h
src/lib/corelib/language/scriptimporter.h
Is it worth the effort to remove QtScript from buildgraph and make
language hermetic to QtScript?
Versus: forking, maintaining (and improving?) QtScript.
Chris
More information about the Qbs
mailing list