[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    Re: extragear/graphics/kphotoalbum
From:       Henner Zeller <h.zeller () acm ! org>
Date:       2009-03-02 17:25:12
Message-ID: 952789670903020925v68bed379w11e44f9b62cf7810 () mail ! gmail ! com
[Download RAW message or body]

Hi,
On Mon, Mar 2, 2009 at 12:25 AM, Jesper K. Pedersen <blackie@blackie.dk> wrote:
> Why would you want that? Doesn't that make KPA even less parallel in compiling
> or am I misunderstanding something?

Several reasons;
First, I don't think that it makes the compiling less parallel. You
still can compile all sources in parallel, there is no difference
there. The only difference is, that it links intermediate libraries
that can make it potentially a bit slower if you compile from scratch
- that should be unnoticable. In fact it will probably turn out to be
faster if you do incremental compiles.

The reason why I started this, and did some other dependency
untangling, was that I yesterday wanted to do some little performance
testing. For this I hoped to create a little standalone binary that
links in just the DB and XMLDB.

 Turns out that this is not possible because of the massive
interdependencies. So for instance the abstract DB code depends on the
MainWindow (!), which then in turn depends on everytyhing else. But
even if that dependency is cut, there are still hard dependencies to
Browser and Viewer for instance which then in turn pull in everything.
One reason for this interdpendence is of course that all sources used
to be compiled together and only linked into one binary - so nobody
notices.
For performance test binaries or just unit-tests, these dependencies
are harmful. Probably a big hindrance in developing the SQLDB because
we can only do in-system manual testing, hoping not to miss something.

Some dependencies I could cut and least the Utilities-library I could
extract ;) Having things in different libraries helps thinking of not
adding more to the dependency entanglement.

I do believe, that we should create a CMakeLists in each subdirectory
to further detangle this in the long term; I can do some compiling
performance tests if you want: it might be a bit slower if you compile
everything because gnumake unfortunately does not use all opportunity
to parellelize, but having the ability to focus on a particular piece
of code and do incremental compiles will be a win in the end in
turnaround times and not lost engineering hours.

As for my performance test: I ended up compiling _all_sources together
with a different main but still couldn't make it to work because of
implicitly created singletons in GUI code somewhere - code that isn't
called of course in that test program. So after 6 hours of hope to
detangle dependencies I ended up adding test functions to the menu in
my local version :/

-h

> On Monday 02 March 2009, Henner Zeller wrote:
> | SVN commit 933977 by hzeller:
> |
> | Pull out Utilities as separate library.
> |
> |
> |  M  +16 -12    CMakeLists.txt
> |
> |
> | --- trunk/extragear/graphics/kphotoalbum/CMakeLists.txt #933976:933977
> | @@ -72,15 +72,14 @@
> |  set(libSettings_SRCS ${CMAKE_CURRENT_SOURCE_DIR}/Settings/SettingsData.cpp
> |  ${CMAKE_CURRENT_SOURCE_DIR}/Settings/SettingsDialog.cpp
> | ${CMAKE_CURRENT_SOURCE_DIR}/Settings/ViewerSizeConfig.cpp
> | ${CMAKE_CURRENT_SOURCE_DIR}/Settings/CategoryItem.cpp)
> |
> |  set(libxmldb_SRCS
> | -     ${CMAKE_CURRENT_SOURCE_DIR}/XMLDB/Database.cpp
> | -     ${CMAKE_CURRENT_SOURCE_DIR}/XMLDB/XMLCategoryCollection.cpp
> | -     ${CMAKE_CURRENT_SOURCE_DIR}/XMLDB/XMLCategory.cpp
> | -     ${CMAKE_CURRENT_SOURCE_DIR}/XMLDB/XMLImageDateCollection.cpp
> | +       ${CMAKE_CURRENT_SOURCE_DIR}/XMLDB/Database.cpp
> | +     ${CMAKE_CURRENT_SOURCE_DIR}/XMLDB/XMLCategoryCollection.cpp
> | +     ${CMAKE_CURRENT_SOURCE_DIR}/XMLDB/XMLCategory.cpp
> | +     ${CMAKE_CURRENT_SOURCE_DIR}/XMLDB/XMLImageDateCollection.cpp
> |       ${CMAKE_CURRENT_SOURCE_DIR}/XMLDB/NumberedBackup.cpp
> | -     ${CMAKE_CURRENT_SOURCE_DIR}/XMLDB/FileReader.cpp
> | +     ${CMAKE_CURRENT_SOURCE_DIR}/XMLDB/FileReader.cpp
> |       ${CMAKE_CURRENT_SOURCE_DIR}/XMLDB/FileWriter.cpp
> | -     ${CMAKE_CURRENT_SOURCE_DIR}/XMLDB/IdNameMapper.cpp
> | -)
> | +     ${CMAKE_CURRENT_SOURCE_DIR}/XMLDB/IdNameMapper.cpp)
> |
> |  set(libThumbnailView_SRCS
> |          ${CMAKE_CURRENT_SOURCE_DIR}/ThumbnailView/ThumbnailRequest.cpp
> | @@ -240,10 +239,19 @@
> |
> |  ########### next target ###############
> |
> | -set(kphotoalbum_SRCS main.cpp ${libdatebar_SRCS} ${libSettings_SRCS}
> | ${libsurvey_SRCS} ${libxmldb_SRCS} ${libThumbnailView_SRCS}
> | ${libPlugins_SRCS} ${libViewer_SRCS} ${libCategoryListView_SRCS}
> | ${libHTMLGenerator_SRCS} ${libUtilities_SRCS} ${libMainWindow_SRCS}
> | ${libImageManager_SRCS} ${libDB_SRCS} ${libImportExport_SRCS}
> | ${libAnnotationDialog_SRCS} ${EXIV2_SRCS} ${libBrowser_SRCS})
> | +set(kphotoalbum_SRCS main.cpp ${libdatebar_SRCS} ${libSettings_SRCS}
> | ${libsurvey_SRCS} ${libxmldb_SRCS} ${libThumbnailView_SRCS}
> | ${libPlugins_SRCS} ${libViewer_SRCS} ${libCategoryListView_SRCS}
> | ${libHTMLGenerator_SRCS} ${libMainWindow_SRCS} ${libImageManager_SRCS}
> | ${libDB_SRCS} ${libImportExport_SRCS} ${libAnnotationDialog_SRCS}
> | ${EXIV2_SRCS} ${libBrowser_SRCS})
> |
> |  kde4_add_executable(kphotoalbum ${kphotoalbum_SRCS})
> |
> | +kde4_add_library(Utilities STATIC ${libUtilities_SRCS})
> | +
> | +# Internal components
> | +if(SQLDB_SUPPORT)
> | +  target_link_libraries(kphotoalbum SQLDB)
> | +endif(SQLDB_SUPPORT)
> | +target_link_libraries(kphotoalbum Utilities)
> | +
> | +# External components
> |  target_link_libraries(kphotoalbum  ${KDE4_KDE3SUPPORT_LIBS}
> | ${KDE4_KIO_LIBS} ${JPEG_LIBRARY} kmediaplayer ${KDE4_PHONON_LIBS})
> |
> |  if(KIPI_FOUND)
> | @@ -268,10 +276,6 @@
> |      INCLUDE_DIRECTORIES(${NEPOMUK_INCLUDE_DIR})
> |  endif(NEPOMUK_FOUND)
> |
> | -if(SQLDB_SUPPORT)
> | -  target_link_libraries(kphotoalbum SQLDB)
> | -endif(SQLDB_SUPPORT)
> | -
> |  install(TARGETS kphotoalbum ${INSTALL_TARGETS_DEFAULT_ARGS})
>
>
> --
> Having trouble finding a given image in your collection containing
> thousands of images?
>
> http://www.kphotoalbum.org might be the answer.
>
>

[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic