[Development] Reviews needed before android integration in two weeks

Thiago Macieira thiago.macieira at intel.com
Wed Feb 6 03:04:01 CET 2013


On terça-feira, 5 de fevereiro de 2013 11.33.29, Paul Olav Tvete wrote:
> M       config.tests/qpa/linuxfb/linuxfb.cpp
> M       config.tests/unix/arch.test

+2 up to here.

> M       config.tests/unix/compile.test

This one has superfluous changes. It sets a QMAKE variable that is not used 
anywhere.

> M       config.tests/unix/evdev/evdev.cpp
> M       config.tests/unix/getaddrinfo/getaddrinfotest.cpp

+2
And +ugh! on the getaddrinfotest.cpp. Recheck if it's necessary. Drop if it's 
not.

> A       config.tests/unix/ipc_android/ipc.cpp
> A       config.tests/unix/ipc_android/ipc_android.pro

Questionable copyright on the .cpp file. Looks like it's checking for 
linux/ashmem.h and some macros.

> M       config.tests/unix/makeabs

+1. It's about cross-compilation from windows to unix.

> M       configure

+1 on the msys part, but I can't approve.

-1 on the detection of android. It detects android via one single mkspec name, 
which is hardcoded. This should be done by a getQMakeConf call and extracting 
a variable set there, if necessary. Or by a compile test, like the ashmem 
above.

-1 on the unnecessary whitespace changes. Except that I can't find where they 
were introduced... might be an artifact of my diff.

-1 on this:
+if [ "$PLATFORM" = "win32-g++" ] || [ "$XPLATFORM" = "win32-g++" ] && [ 
"$CFG_MS_BITFIELDS" = "yes" ]; then
+    QMAKE_CONFIG="$QMAKE_CONFIG ms_bitfields"
+fi

The above enables ms_bitfields unconditionally for MinGW, regardless of cross-
compilation or anything else. You're missing parentheses.

-2 on the -openssl-source option. It's not used anywhere.

> A       lib/rules.xml

I'd rather you found a better place for this file.

> A       mkspecs/android-g++/qmake.conf

-1 on CONFIG += ashmem. It looks wrong.

-2 on QT = android. You can't have "android" there, period. That belongs to a 
library called QtAndroid, if and when that exists, and it MUST NOT be default.

If you need that for initialisation, figure out like qtmain / winmain does. 
Just don't touch the QT variable.

The file has some weird indentation.

-1 on setting -g on the release flags. This produces an unlinkable QtWebKit.

> A       mkspecs/android-g++/qplatformdefs.h
> D       mkspecs/common/android/qplatformdefs.h
> D       mkspecs/common/linux-android.conf

Please keep the common files.

> A       mkspecs/features/android.prf

Copyright header is out of style. Please use one in our format.

> A       mkspecs/features/java.prf

Ossi to judge if the mkpath should be there.

javac.depends looks like a horrible hack. In fact, while this is a nice 
feature, the whole file looks like a hack. qmake should be modified to learn how 
to compile Java instead.

> M       mkspecs/features/moc.prf

-1. The change looks wrong. It needs justification.

> A       mkspecs/features/qpa/android.prf

$$[QT_INSTALL_PREFIX]/src makes no sense. Please choose another path.

Also, doesn't qpa/android.prf conflict with android.prf?

> M       mkspecs/features/qpa/genericunixfontdatabase.prf

-1 on coding style.

> M       mkspecs/features/qt_functions.prf

-2 for reasons explained above. Do not modify the QT variable.

> M       mkspecs/features/qt_parts.prf

Changes look incorrect at first glance. Ossi to judge.

> M       mkspecs/features/resources.prf

As the comment says, proper investigation should be done. If it weren't for 
the comment, I'd have given +2.

> M       mkspecs/features/static.prf

There's no linux-mingw-*. I'd like to see this made more generic: add a 
variable to the qmake.conf instead. I can then add -static-intel for icc, for 
example.

> D       mkspecs/unsupported/linux-android-armeabi-g++/qmake.conf
> D       mkspecs/unsupported/linux-android-armeabi-g++/qplatformdefs.h
> D       mkspecs/unsupported/linux-android-armeabi-v7a-g++/qmake.conf
> D       mkspecs/unsupported/linux-android-armeabi-v7a-g++/qplatformdefs.h
> D       mkspecs/unsupported/linux-android-x86-g++/qmake.conf
> D       mkspecs/unsupported/linux-android-x86-g++/qplatformdefs.h

Ok, it's supported now. +2

> M       qmake/generators/makefile.cpp
> M       qmake/generators/unix/unixmake2.cpp
> M       qmake/generators/win32/mingw_make.cpp
> M       qmake/generators/win32/msvc_nmake.cpp

Part of the make-qmake-understand-Java, but incomplete. See above.

> M       qtbase.pro

Unnecessary change.

> A       src/android/...

I suggest the dir be renamed to src/androidmain, to match winmain and the old 
(and thankfully removed) s60main.

> M       src/corelib/arch/arch.pri
> A       src/corelib/arch/qatomic_android.h

-1. Looks superfluous. It's doing exactly what qbasicatomic.h is already doing.

Please justify.

> M       src/corelib/codecs/qiconvcodec.cpp

+2

> M       src/corelib/codecs/qiconvcodec_p.h

+1 but Q_OS_WIN && Q_CC_GNU.

> M       src/corelib/codecs/qtextcodec.cpp
> M       src/corelib/codecs/qtextcodec_p.h

This has been discussed before. Please leave the macro called 
Q_OS_LINUX_ANDROID.

>From this point on, any +2 does is modulo the macro name being changed back.

> M       src/corelib/global/qglobal.cpp
> M       src/corelib/global/qlogging.cpp

+2

> M       src/corelib/global/qsystemdetection.h

-1

Macro name. See above.

> M       src/corelib/io/qabstractfileengine_p.h
> M       src/corelib/io/qfilesystemengine_unix.cpp

+2

> M       src/corelib/io/qfsfileengine_unix.cpp

-1. You need to add a fallback.

> M       src/corelib/io/qtemporarydir.cpp

-1. It looks like Android has mkdtemp, it's just not defined in the headers.

> M       src/corelib/kernel/kernel.pri

0

> M       src/corelib/kernel/qeventdispatcher_unix.cpp
> M       src/corelib/kernel/qeventdispatcher_unix_p.h

This one needs a very good explanation.

> M       src/corelib/kernel/qsharedmemory.cpp

+2

> D       src/corelib/kernel/qsharedmemory_android.cpp

-2. Keep the name, especially since there's qsystemsemaphore_android.cpp.

> A       src/corelib/kernel/qsharedmemory_ashmem.cpp

-1: 
 * need to use qt_safe_{open,close}
 * why the strlcopy? Can't it pass the name parameter?
 * "static" missing in all functions
 * coding style
 * there's a QString creation between the failing system call and checking of 
   errno. That is a bad idea, since malloc() can modify errno. Refactor 
   setErrorString.
	-> additionally, merge it with the _unix implementation.
 * the pin / unpin functions seem to be wrongly used

> M       src/corelib/kernel/qsharedmemory_p.h

-1:
 * coding style (spaces in preprocessor macros)
 * the nested #ifdef look bad. You can do better.

> M       src/corelib/kernel/qsystemsemaphore.cpp

+2

> M       src/corelib/kernel/qsystemsemaphore_android.cpp

-1:
 * code duplication (setErrorString again)
 * coding style

> M       src/corelib/kernel/qsystemsemaphore_p.h

-1: coding style

> M       src/corelib/thread/qbasicatomic.h

-1. See above.

> A       src/corelib/tools/android/cpu-features.c
> A       src/corelib/tools/android/cpu-features.h
> M       src/corelib/tools/qsimd.cpp
> M       src/corelib/tools/tools.pri

Please explain why this is necessary. The checking in qsimd.cpp should be 
enough already.

Move new files to 3rdparty if still valid.

> M       src/gui/image/qimage_neon.cpp

-2. Looks wrong. qsimd_p.h already does that include and this won't compile on 
Android-x86.

> M       src/gui/kernel/qplatforminputcontext.cpp
> M       src/gui/kernel/qplatforminputcontext.h

-2. Superfluous and adds a warning.

> M       src/network/access/qnetworkaccessfilebackend.cpp
> M       src/network/access/qnetworkaccessmanager.cpp
> M       src/network/access/qnetworkreplyfileimpl.cpp

#ifdef missing.

> M       src/network/kernel/qhostinfo_unix.cpp

-2. Fix the configure test instead.

> M       src/network/kernel/qnetworkproxy_win.cpp

-2. The Android assets will never be run on Windows.

> M       src/network/ssl/qsslcertificate.cpp

+2

> M       src/network/ssl/qsslsocket_openssl.cpp

-1: coding style

> M       src/network/ssl/ssl.pri

-1: this unconditionally builds OpenSSL support in, even if the sources aren't 
present. The configure script changes required for this aren't correct.

> A       src/plugins/platforms/android/...

Everything with AOSP or Khronos copyright: move to 3rdparty.

asset file engine: I don't like it. I need to think some more about it.

> M       src/plugins/platforms/cocoa/qcocoamenu.h
> M       src/plugins/platforms/cocoa/qcocoamenuitem.h

-1: coding style

> M       src/plugins/platforms/platforms.pro

-1: superfluous commented out line

> M       src/src.pro

See above about the naming.

> M       src/widgets/graphicsview/qgraphicsitem.cpp
> M       src/widgets/itemviews/qitemdelegate.cpp
> M       src/widgets/kernel/qwidget.cpp

-1 on OS-based policy decisions. This should be in QPA.

> A       src/widgets/styles/json/json.cpp
> A       src/widgets/styles/json/json.g
> A       src/widgets/styles/json/json.h
> A       src/widgets/styles/json/json.pri
> A       src/widgets/styles/json/jsonparser.cpp

-1. Do not add.

You need to show that this is at least 5x faster than the one in QtCore before 
this begins to be acceptable.

I'm not the QtWidgets maintainer. If I were, I'd be giving a -2.

If somehow this is kept, it needs to be moved to 3rdparty.

> M       src/widgets/styles/qcommonstyle.cpp

-1: OS-based policy decisions.

> M       src/widgets/styles/qstylefactory.cpp
> M       src/widgets/styles/styles.pri

+1, except for json.

> M       src/widgets/widgets/qabstractbutton.cpp
> M       src/widgets/widgets/qcombobox.cpp

-1: OS-based policy decisions.

> M       src/widgets/widgets/qmenu.cpp

+2.

> M       src/widgets/widgets/qtextbrowser.cpp

#ifdef on assets

-- 
Thiago Macieira - thiago.macieira (AT) intel.com
  Software Architect - Intel Open Source Technology Center
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 190 bytes
Desc: This is a digitally signed message part.
URL: <http://lists.qt-project.org/pipermail/development/attachments/20130205/8318d86e/attachment.sig>


More information about the Development mailing list