I have been looking around the web for an app to convert C++ source code to flow diagrams. I'm looking in the wrong places or nothing exists other than a few commercial apps.
I was hoping the Umbrello tool could help, but that does not convert anything directly.
Is there a way to do this?
I want to map the entire docbook process. As I am still very much a novice C++ coder, I am in over my head trying to trace how everything connects. The process should be documented for the wiki.
Ideas?
Thanks.
Darrell
Serghei,
I have submitted a patch for the libkscan ConfigureChecks.cmake
SANE_LIBRARIES concatenation bug. Please take a look at the patch provided for
http://bugs.pearsoncomputing.net/show_bug.cgi?id=901
I think this will provide a more robust set of REGEX expressions for
dealing with lib and ldflag strings and will work across all distros. The
original REGEX expressions simply removed spaces which would result in flags
being merged together causing the build to fail. This set of REGEX expressions
eliminates all non-library information first leaving only a concise semi-colon
separate list of library names.
In short this is the patch:
--- tdegraphics/libkscan/ConfigureChecks.cmake
+++ tdegraphics/libkscan/ConfigureChecks.cmake 2012-03-08 15:51:30.452794166
-0600
@@ -39,8 +39,14 @@
string( REGEX REPLACE "(^| )-I" ";" SANE_INCLUDE_DIRS "${SANE_INCLUDE_DIRS}" )
endif( )
if( SANE_LIBRARIES )
- string( REGEX REPLACE "(^| )-l" ";" SANE_LIBRARIES "${SANE_LIBRARIES}" )
- string( REPLACE " " "" SANE_LIBRARIES "${SANE_LIBRARIES}" )
+ ## remove all spaces and replace whitespace with ';'
+ string( REGEX REPLACE "[ ]+" ";" SANE_LIBRARIES "${SANE_LIBRARIES}" )
+ ## remove all non-library information
+ string( REGEX REPLACE "[-][^l]([^ ;])+" "" SANE_LIBRARIES "${SANE_LIBRARIES}" )
+ ## remove multiple ';'
+ string( REGEX REPLACE "[;]+" ";" SANE_LIBRARIES "${SANE_LIBRARIES}" )
+ ## remove '-l'
+ string( REGEX REPLACE "-l" "" SANE_LIBRARIES "${SANE_LIBRARIES}" )
endif( )
if( NOT HAVE_SANE )
If it works for you, go ahead and commit it.
--
David C. Rankin, J.D.,P.E.
I am creating three new entities for the TDE help files. The entities will be stored in the sources tree in tdelibs/kdoctools/customization/entities/general.entities.
These new entities will contain the document version, release date, and copyright years.
The past practice with all KDE3 help files was to use hard-coded, static text strings. I want to change the fixed text to entities so they can be dynamic and always match the TDE release information.
Conceptually, I tested these new entities by hard-coding them into general.entities and compiling a couple of modified docbook sources to use those entities. Works as planned. :)
The next step is to modify the cmake build process to update the general.entities file when the tdelibs package is built.
The macro or script, whichever is correct terminology for cmake, needs to work like this:
* Extract the release version variable TDE_VERSION_STRING from tdelibs/tdecore/tdeversion.h.
* Read the file date stamp of tdeversion.h (for GIT sources this will change regularly, for tarballs this will remain fixed)
* Create a copyright year string in the form of "2010-$CURRENT_YEAR"
* Update the text strings between the quotation marks in general.entities:
<!ENTITY tde-release-version "R14.0.0 [DEVELOPMENT]">
<!ENTITY tde-release-date "March 8, 2012">
<!ENTITY tde-copyright-date "2010-2012">
* Continue with the build process.
I think I can do something like that in a shell script but I am unfamiliar with how to do the same in cmake.
I don't mind doing the grunt work and testing, but I appreciate guidance to do this.
Thanks!
Darrell
What is the latest tqt status?
I received the following build failure in tdebase:
/dev/shm/tdebase.build/kicker/kicker/core/kmenubase.ui.h:7: error: 't_xdisplay' was not declared in this scope
This particular run was against Qt3.
Darrell
<snip>
>> Yes! I'll pick an obvious example, KHTML. I would like to replace the
broken KHTML engine with Webkit using Qt4. Problem is, I can't link a
Qt4
>> library into a TDE library or program due to symbol conflicts. Even if
you trick the compiler and linker, the program will crash at runtime
because the C++ runtime will not know which symbols (Qt3 or Qt4) to use
when function names and static members have the same name.
> But that is what the linker does. Isn't it? Looks at symbolic names and
puts addresses instead. Therefore you shouldn't have name
> conflicts at runtime. The crash you may encounter is because the linker
chosen wrong symbols to link together in one algorithm. But this have
obvious solution. Put the code you want to link with Qt4 in separate
module and link only with Qt4. I still don't understand how is renaming
better solves this. Could you please refer exact source file and
function?
Actually the linker creates a reference to a "mangled" symbol--see
http://en.wikipedia.org/wiki/Name_mangling#Name_mangling_in_C.2B.2B
Let's take a simple example, qWarning. This becomes _Z8qWarningPKcz in
libqt-mt.so.3.3.8 (nm -D /usr/lib/libqt-mt.so | grep qWarning), and
_Z8qWarningPKcz in /usr/lib/libQtCore.so (nm -D /usr/lib/libQtCore.so |
grep qWarning). If my program references Z8qWarningPKcz, which library
will the symbol resolver choose at runtime? They are not binary
compatible with each other, and when the symbol resolver chooses the wrong
one at runtime (which it will do quite often) the entire program will
crash.
<snip>
> I suppose this could be done in more easy way without renaming.
Not really, see above. :-)
And if you want to work on a "pure" KDE 3.5.10 fork you have that right;
just be aware that you will hit a dead end far before TDE will. ;-)
Tim
Darrell, all,
Ran into another issue with tdegraphics that I can't solve by a dependency review:
[ 31%] Building CXX object libkscan/CMakeFiles/kscan-shared.dir/imgscaninfo.cpp.o
Linking CXX shared library libkscan.so
/usr/bin/ld: cannot find
-lsane-Wl,-O1,--sort-common,--as-needed,-z,relro,--hash-style=gnu-L/usr/lib
collect2: ld returned 1 exit status
make[2]: *** [libkscan/libkscan.so.1.0.0] Error 1
make[1]: *** [libkscan/CMakeFiles/kscan-shared.dir/all] Error 2
make: *** [all] Error 2
Is this a CMake issue? Linker error? What to look for?
--
David C. Rankin, J.D.,P.E.
I'm working on bug report 892. Most of this work involves changing XDG categories (X-KDE-Whatever -> X-TDE-Whatever), which will help further distinguish Trinity from KDE3 and KDE4 and reduce potential conflicts. The work is going well but I have run into a challenge.
When I rebuild tdelibs and tdebase to install desktop files to $PREFIX/share/applications/trinity rather than $PREFIX/share/applications/kde, a few things start breaking.
Some keyboard shortcuts stop, but I can recover that by deleting the user's khotkeys config file and starting afresh. That problem might be related or not, or might just be cruft from its KDE3 days when I migrated profiles.
The real problem is noticeable when I open Konqueror and select the Settings menu option. Most of the setting modules do not appear. The only modules that appear are the "native" ones: Behavior, Appearance, Previews & Meta-Data, and Performance.
The associated desktop files built and installed to $PREFIX/share/applications/trinity just fine.
I can solve the problem by creating a sym link from $PREFIX/share/applications/kde to $PREFIX/share/applications/trinity and restarting the session.
I tried a new profile but that did not solve the problem either. Only the sym link, or building to $PREFIX/share/applications/kde, avoids the problem.
I haven't tested with other packages because at this point I only need tdelibs and tdebase for testing.
At this point I'm concluding that something in the code is hard-coded to look for $PREFIX/share/applications/kde. I can't find anything obvious or explicit. I've looked hard and am stumped.
I would appreciate any help in this challenge. :)
Thanks!
Darrell
Tim, All,
I'm working forward in the build order after building tdebase, but I'm not
sure what should be building and what shouldn't?? The build order I'm trying
to follow is:
"dependencies/$useqt" OK
'dependencies/tqtinterface' OK
'dependencies/arts' OK
'dependencies/dbus-tqt' OK
'dependencies/dbus-1-tqt' OK
'dependencies/tqca-tls' OK
'dependencies/libart-lgpl' OK
'dependencies/avahi-tqt' FAILED
'dependencies/libcaldav' OK
'dependencies/libcarddav' OK
'tdelibs' OK
'tdebase' OK
'applications/abakus, ..??'
'tdebindings'
'tdeaccessibility'
'tdeutils'
'tdemultimedia'
'tdenetwork'
'tdeadmin'
'tdeartwork'
'tdegames'
'tdetoys'
'tdeedu'
'tdegraphics'
'tdevelop'
'tdeaddons'
'tdepim'
'tdewebdev'
'tdesdk'
What after tdebase should be ready to build? Also why is everything turned
OFF ("Build all" OFF) in the tdegraphics, tdenetwork, etc.. CMakeLists.txt files?
--
David C. Rankin, J.D.,P.E.
It sounds like you have your own server for your repository, so this
doesn't apply directly to Trinity Desktop. But the vulnerability
probably applies to your personal GIT server as well--which means it
could be hacked if this is not fixed.
-----------------
GitHub hacked, millions of projects at risk of being modified or deleted
http://www.extremetech.com/computing/120981-github-hacked-millions-of-proje…
Keith