Suggested Bug Fixes

Boudewijn Rempt boud at valdyas.org
Tue Oct 21 10:51:04 BST 2014


Hi Stephen,

If you've got a patch, I can give it a try and see whether it breaks the Krita and/or Calligra Gemini builds. We don't use mingw for Krita because it results in a much slower, much bigger binary. The winquirks stuff is a kind of hack around stuff missing in msvc, and I guess that that's where most of the conflicts you see come from.

As for updating the winkde build, I guess we'd need to ping the people on the kde-windows mailing list.

On Monday 20 October 2014 Oct 16:29:33 Stephen Leibowitz wrote:
> I am suggesting a number of fixes to Calligra. They are meant to address
> problems in its Windows builds as shown in the last entry here:
> http://www.winkde.org/pub/kde/ports/win32/dashboard/release/
> 
> Some of the fixes might also be helpful for non-Windows builds.
> 
> As an aside, the Calligra version used in the build at winkde.org is 2.7.90
> (2.8 beta). It appears that the problems shown in the build are still there
> in the most recent Calligra version. But it would be nice if winkde.org
> would move to Calligra version 2.8.6, or 2.9 when available.
> 
> My suggested fixes are shown below. I am unsure if the rich text formatting
> will show on this posting to the mailing list. So I have also put a rich
> text version on my website. The formatting makes it easier to understand:
> tinyurl.com/sleibowitz/SL_Fixes_141020.rtf
> Stephen Leibowitz
> ____________________________________
> 
> The Build Overview at:
> http://www.winkde.org/pub/kde/ports/win32/dashboard/release/
> 
> shows that the mingw-w32 and mingw-w64 builds of Calligra 2.7.90 failed.
> The detail for mingw-w64 is here:
> http://winkde.org/pub/kde/ports/win32/repository-4.12/logs/log-mingw-w64-kdeapps_calligra.txt
> 
> *This is a section of that build log:*
> 
> In file included from sqlscanner.cpp:644:0:
> h:/build/kdeapps/calligra-20120805/work/calligra-2.7.90/winquirks/unistd.h:119:13:
> error: conflicting declaration 'typedef int mode_t'
> 
>  typedef int mode_t;
>              ^
> 
> In file included from H:/include/mingw/sys/types.h:23:0,
>                  from H:/include/mingw/stdio.h:29,
>                  from sqlscanner.cpp:20:
> h:\mingw64\x86_64-w64-mingw32\include\sys\types.h:77:17: error: 'mode_t'
> has a previous declaration as 'typedef _mode_t mode_t'
> 
>  typedef _mode_t mode_t;
>                  ^
> ***
> 
> *The following code segment is from:*
> https://openmodelica.org/svn/OpenModelicaExternal/trunk/tools/windows/OMDev/tools/mingw64/x86_64-w64-mingw32/include/sys/types.h
> 
> #ifndef _MODE_T_
> #define _MODE_T_
> typedef unsigned short _mode_t;
> 
> #ifndef NO_OLDNAMES
> typedef _mode_t mode_t;
> #endif
> #endif  /* Not _MODE_T_ */
> 
> ***
> 
> *Here is a segment in calligra-2.8.5\winquirks\unistd.h:*
> #ifndef _MODE_T_
> #define _MODE_T_
> typedef int mode_t;
> #endif
> 
> *I suggest changing the typedef in unistd.h       (CHANGE 1):*
> #ifndef _MODE_T_
> #define _MODE_T_
> typedef unsigned short mode_t;
> #endif
> 
> ****************************
> 
> *The Calligra 2.7.90 build log using mingw-w64 mentioned above also gives
> this error message:*
> 
> In file included from sqlscanner.cpp:644:0:
> h:/build/kdeapps/calligra-20120805/work/calligra-2.7.90/winquirks/unistd.h:124:13:
> error: conflicting declaration 'typedef int pid_t'
> 
>  typedef int pid_t;
>              ^
> 
> In file included from H:/include/mingw/sys/types.h:23:0,
>                  from H:/include/mingw/stdio.h:29,
>                  from sqlscanner.cpp:20:
> h:\mingw64\x86_64-w64-mingw32\include\sys\types.h:68:16: error: 'pid_t' has
> a previous declaration as 'typedef _pid_t pid_t'
> 
>  typedef _pid_t pid_t;
>                 ^
> ***
> 
> *The following code segment is from:*
> https://openmodelica.org/svn/OpenModelicaExternal/trunk/tools/windows/OMDev/tools/mingw64/x86_64-w64-mingw32/include/sys/types.h
> #ifndef _PID_T_
> #define _PID_T_
> #ifndef _WIN64
> typedef int     _pid_t;
> #else
> __MINGW_EXTENSION
> typedef __int64 _pid_t;
> #endif
> 
> #ifndef NO_OLDNAMES
> #undef pid_t
> typedef _pid_t  pid_t;
> #endif
> #endif  /* Not _PID_T_ */
> 
> ***
> 
> *Here is a segment in calligra-2.8.5\winquirks\unistd.h:*
> #ifndef pid_t
> typedef int pid_t;
> #endif
> 
> *I suggest replacing the 3-line unistd.h segment with       (CHANGE 2):*
> #ifndef pid_t
> #ifndef _WIN64
> typedef int     pid_t;
> #else
> typedef __int64 pid_t;
> #endif
> #endif
> 
> ****************************
> 
> *Here is line 116 of calligra-2.8.5\winquirks\unistd.h*
> #if _MSC_VER < 1600
> *I suggest replacing it with       (CHANGE 3):*
> #if defined(_MSC_VER) && _MSC_VER < 1600
> 
> 
> *Here is line 184 of calligra-2.8.5\3rdparty\kdgantt\kdganttglobal.h*
> #if _MSC_VER >= 1300
> *I suggest replacing it with       (CHANGE 4):*
> #if defined(_MSC_VER) && _MSC_VER >= 1300
> 
> ****************************
> 
> The Calligra 2.7.90 build log using msvc2010 is at:
> http://winkde.org/pub/kde/ports/win32/repository-4.12/logs/log-msvc2010-kdeapps_calligra.txt
> 
> In two places it gives this warning concerning sqlscanner.cpp:
> warning C4003: not enough actual parameters for macro 'yywrap'
> 
> *Here is line 344 of calligra-2.8.5\libs\db\parser\sqlscanner.cpp*
> #define yywrap(n) 1
> *I suggest replacing it with       (CHANGE 5):*
> #define yywrap() 1
> 
> ****************************
> 
> The Calligra 2.7.90 build log using msvc2010 gives this warning concerning
> msghandler.cpp:
> 'KexiDB::MessageHandler::askQuestion' : recursive on all control paths,
> function will cause runtime stack overflow
> 
> *Here are lines 81 and 82 of calligra-2.8.5\libs\db\msghandler.cpp*
>         return askQuestion(message, dlgType, defaultResult, buttonYes,
>                            buttonNo, dontShowAskAgainName, options);
> *I suggest using this function instead       (CHANGE 6):*
>         return askQuestionInternal(message, dlgType, defaultResult,
> buttonYes,
>                            buttonNo, dontShowAskAgainName, options);
> 
> ****************************
> 
> The Calligra 2.7.90 build log using msvc2010 gives this warning concerning
> taskworkpackageview.cpp:
> '*/' found outside of comment
> 
> *Here is line 187 of
> calligra-2.8.5\plan\workpackage\taskworkpackageview.cpp*
> void TaskWorkPackageTreeView::dragMoveEvent(QDragMoveEvent */*event*/)
> *I suggest removing the comment       (CHANGE 7):*
> void TaskWorkPackageTreeView::dragMoveEvent(QDragMoveEvent *event)
> 
> ****************************
> 
> The Calligra 2.7.90 build log using msvc2010 gives this warning in 5 places
> concerning taskworkpackagemodel.cpp:
> '*/' found outside of comment
> 
> *Here is line 98 of
> calligra-2.8.5\plan\workpackage\taskworkpackagemodel.cpp*
> void TaskWorkPackageModel::slotNodeInserted( Node */*node*/ )
> *I suggest removing the comment       (CHANGE 8):*
> void TaskWorkPackageModel::slotNodeInserted( Node *node )
> 
> *Here is line 111 of
> calligra-2.8.5\plan\workpackage\taskworkpackagemodel.cpp*
> void TaskWorkPackageModel::slotNodeRemoved( Node */*node*/ )
> *I suggest removing the comment       (CHANGE 9):*
> void TaskWorkPackageModel::slotNodeRemoved( Node *node )
> 
> *Here is line 127 of
> calligra-2.8.5\plan\workpackage\taskworkpackagemodel.cpp*
> void TaskWorkPackageModel::slotDocumentAdded( Node *node, Document
> */*doc*/, int row )
> *I suggest removing the comment       (CHANGE 10):*
> void TaskWorkPackageModel::slotDocumentAdded( Node *node, Document *doc,
> int row )
> 
> *Here is line 136 of
> calligra-2.8.5\plan\workpackage\taskworkpackagemodel.cpp*
> void TaskWorkPackageModel::slotDocumentRemoved( Node *node, Document
> */*doc*/, int row )
> *I suggest removing the comment       (CHANGE 11):*
> void TaskWorkPackageModel::slotDocumentRemoved( Node *node, Document *doc,
> int row )
> 
> *Here is line 145 of
> calligra-2.8.5\plan\workpackage\taskworkpackagemodel.cpp*
> void TaskWorkPackageModel::slotDocumentChanged( Node *node, Document
> */*doc*/, int row )
> *I suggest removing the comment       (CHANGE 12):*
> void TaskWorkPackageModel::slotDocumentChanged( Node *node, Document *doc,
> int row )
> 
> ****************************
> 
> The Calligra 2.7.90 build log using msvc2010 gives this warning in 2 places
> concerning workpackage.cpp:
> '*/' found outside of comment
> 
> *Here is line 109 of calligra-2.8.5\plan\workpackage\workpackage.cpp*
> bool WorkPackage::addChild( Part */*part*/, const Document *doc )
> *I suggest removing the comment       (CHANGE 13):*
> bool WorkPackage::addChild( Part *part, const Document *doc )
> 
> *Here is line 300 of calligra-2.8.5\plan\workpackage\workpackage.cpp*
> bool WorkPackage::saveNativeFormat( Part */*part*/, const QString &path )
> *I suggest removing the comment       (CHANGE 14):*
> bool WorkPackage::saveNativeFormat( Part *part, const QString &path )
> 
> ****************************
> The Calligra 2.7.90 build log using msvc2010 gives this warning concerning
> part.cpp:
> '*/' found outside of comment
> 
> *Here is line 828 of calligra-2.8.5\plan\workpackage\part.cpp*
> bool Part::completeSaving( KoStore */*store*/ )
> *I suggest removing the comment       (CHANGE 15):*
> bool Part::completeSaving( KoStore *store )
> 
> ****************************
> 
> *Here is a section of calligra-2.8.5\winquirks\unistd.h starting at line
> 165:*
> 
> #ifdef __cplusplus
> extern "C" {
> #endif
> 
> #if 0
> int setenv(const char *name, const char *value, int overwrite);
> int unsetenv (const char *name);
> #endif
> #ifdef __cplusplus
> }
> #endif
> 
> *For clarity, I suggest replacing it with       (CHANGE 16):*
> 
> #ifdef __cplusplus
> extern "C" {
> 
> #if 0
> int setenv(const char *name, const char *value, int overwrite);
> int unsetenv (const char *name);
> #endif
> 
> }
> #endif  /* __cplusplus */
> 
> ****************************

-- 
Boudewijn Rempt
http://www.valdyas.org, http://www.krita.org



More information about the calligra-devel mailing list