Version: 1.1.0 (rev.: 1079718) (using 4.3.4 (KDE 4.3.4), Debian packages) Compiler: cc OS: Linux (i686) release 2.6.32-4.slh.2-sidux-686 I've got this since (very) roughly a month. (Perhaps only half a month.) Scenario: I've got ridiculous 40 images on my SD card with a total size of 60 MB. Resolution is 12 MP. Copying them via digikam Import dialog takes about ten minutes. Doing the same with any file manager takes 2 seconds. (This is about 300 times faster.) Timing for copying one single file with digikam: 0.1 s: copy process 9.9 s: EXIF rotating file DSC_whatever ALL of these files did NOT need to be rotated. So 99% of this time digikam was doing simply nothing but wasting CPU time and power. The CPU was at 100 % during the EXIF rotating process. Same when writing data to a pic (Caption, Tag, ...). Writing takes 10 seconds too. I've got a 3.3 GHz Core2Duo. Doing the same on my laptop with an old 2 GHz Core2Duo takes 0.1 seconds. At most. So what is going on there? I cannot possibly work with digikam this way. I'm using digikam from SVN, this version checked out today. I did a $ cmake -DCMAKE_BUILD_TYPE=debugfull -DCMAKE_INSTALL_PREFIX=`kde4-config --prefix` ../../graphics && make clean && make -j3 and then # make install Wrong packets installed? Or what is the reason for that?
Created attachment 40211 [details] Output of cmake, if of any interest
PS: When editing an image in the Image Editor and saving it then it takes about one second.
Which Exiv2 and libkexiv2 version you use ? Go to Help/Components Info for details. which image file format you use ? JPEG ? RAW ? another one ? Gilles Caulier
Simple JPEG images. Samep problem with images that worked fine before, by the way. Some other observations: * Okay with .avi files * Okay with old 3 MP pics * Okay with D100 6 MP pics * Giving stars is ok too * Absolute FAIL for D90 12 MP images * Same for D90 imagee that has been edited with the Image Editor and saved with new filename * Same even with D90 images reduced to 3 MP! digiKam version 1.1.0 (rev.: 1079718) Exiv2 can write to Jp2: Yes Exiv2 can write to Jpeg: Yes Exiv2 can write to Pgf: Yes Exiv2 can write to Png: Yes Exiv2 can write to Tiff: Yes Exiv2 supports XMP metadata: Yes LibCImg: 130 LibExiv2: 0.19 LibJPEG: 62 LibJasper: 1.900.1 LibKDE: 4.3.4 (KDE 4.3.4) LibKExiv2: 0.6.0 LibKdcraw: 0.5.0 LibLCMS: 118 LibPGF: 6.09.44 LibPNG: 1.2.42 LibQt: 4.5.3 LibRaw: 0.7.2 LibTIFF: LIBTIFF, Version 3.9.2 Copyright (c) 1988-1996 Sam Leffler Copyright (c) 1991-1996 Silicon Graphics, Inc. Marble widget: 0.8.1 Parallelized demosaicing: Yes LibGphoto2: 2.4.6 LibKipi: 0.4.0
Please give us a web link where we can download images to test in local... Gilles Caulier
http://granjow.net/uploads/bugs/digikam-example-d90.jpg
Simon, what happens if you repeat the experiment with Exiv2 0.18.2? I wonder if the Nikon makernote updates in 0.19 could be the cause of this. Andreas
# dpkg -i libexiv2-5_0.18.2-1+b1_i386.deb (Lese Datenbank ... 259920 Dateien und Verzeichnisse sind derzeit installiert.) Vorbereiten zum Ersetzen von libexiv2-5 0.18.2-1+b1 (durch libexiv2-5_0.18.2-1+b1_i386.deb) ... Entpacke Ersatz für libexiv2-5 ... Richte libexiv2-5 ein (0.18.2-1+b1) ... Still got 0.19 in the components information after doing a cmake && make && make install. Will restart, make clean and rebuild later and try again (then it should work, right?)
libkexiv2 must be recompiled with new Exiv2, and after digiKam/kipi-plugins. Check if new Exiv2 0.19 is really used by Help/Components Info menu entry Gilles Caulier
Maybe quicker, if you haven't recompiled everything yet: Just take the 3MP D90 files, run $ exiv2 -M'set Exif.Image.Make NoName' *.jpg and try with these and 0.19. Any difference? Andreas
Andreas, I haven't got an exiv2 command here. What is missing? Gilles, libkexiv2-7-dev is installed here and ... I just saw that libexiv2-6 is still installed (2-5 too). I cannot remove the 2-6 version because of dependencies. Any ideas? # apt-get remove libexiv2-6 Paketlisten werden gelesen... Fertig Abhängigkeitsbaum wird aufgebaut Status-Informationen einlesen... Fertig Probieren Sie »apt-get -f install«, um dies zu korrigieren: Die folgenden Pakete haben nicht-erfüllte Abhängigkeiten: gpscorrelate: Hängt ab: libexiv2-6 soll aber nicht installiert werden gpscorrelate-gui: Hängt ab: libexiv2-6 soll aber nicht installiert werden hugin: Hängt ab: libexiv2-6 soll aber nicht installiert werden hugin-tools: Hängt ab: libexiv2-6 soll aber nicht installiert werden krename: Hängt ab: libexiv2-6 soll aber nicht installiert werden libhdf5-serial-dev: Hängt ab: libhdf5-serial-1.8.4 (= 1.8.4-1) soll aber nicht installiert werden libkexiv2-7: Hängt ab: libexiv2-6 soll aber nicht installiert werden libstreamanalyzer0: Hängt ab: libexiv2-6 soll aber nicht installiert werden qtpfsgui: Hängt ab: libexiv2-6 soll aber nicht installiert werden ufraw: Hängt ab: libexiv2-6 soll aber nicht installiert werden
Simon, # apt-get install exiv2 digikam/kipi-plugins/ libkexiv2 in Debian unstable are all built against exiv2 0.19.. Mark
Simon, If you want to compile with libexiv2 0.18.2, you don't really need to remove the installed Debian package. It's enough to remove libexiv2-dev, or, if that's also not easily possible, just remove or rename the following three files: /usr/lib/libexiv2.a, /usr/lib/libexiv2.la and /usr/lib/libexiv2.so (that's a link). Then get the 0.18.2 tarball from http://www.exiv2.org/archive.html and build it as per the README. By default it installs into directories below /usr/local/, so it won't interfere with the Debian version in /usr. You may need to add /usr/local/lib to LD_LIBRARY_PATH and /usr/local/lib/pkgconfig to PKG_CONFIG_PATH though. When it's done you can use the ldd command to double-check exactly what libraries a program or another library is using. Andreas
Thanks for your answer, Andreas. Unfortunately, this is how my system looks like right now. # apt-cache policy libexiv2-dev libexiv2-dev: Installiert: (keine) /# mlocate */libexiv2.* /usr/lib/libexiv2.so.4 /usr/lib/libexiv2.so.4.0.1 /usr/lib/libexiv2.so.5 /usr/lib/libexiv2.so.5.3.1 /usr/lib/libexiv2.so.6 /usr/lib/libexiv2.so.6.0.0 Now I compiled 0.18.2, as you suggested, and did export LD_LIBRARY_PATH=/usr/local/lib && export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig/ && cmake -DCMAKE_BUILD_TYPE=debugfull -DCMAKE_INSTALL_PREFIX=`kde4-config --prefix` ../../graphics After compiling digikam again (without make clean): Exactly the same. 0.19. Am I too stupid for that? Simon
Okay, I'm very likely gonna break my system now. /usr/lib# for i in libexiv2.so.*; do mv $i ${i}_; done But the way it is now sucks that much anyway, so I'm gonna risk it. cmake always mentions libkexiv2 only, but never libexiv2. By the way. -- Found Kexiv2 library in cache: /usr/lib/libkexiv2.so By the way. Is it normal that pictures I import with digikam are totally different from the original files? I compared with vbindiff, the first few bytes matched, but then nothing was equal anymore and the file sizes didn't match either. Ah well. [ 27%] Building CXX object kipi-plugins/timeadjust/CMakeFiles/kipiplugin_timeadjust.dir/timeadjustdialog.o /usr/bin/ld: warning: libexiv2.so.6, needed by /usr/lib/gcc/i486-linux-gnu/4.4.3/../../../../lib/libkexiv2.so, not found (try using -rpath or -rpath-link) /usr/lib/gcc/i486-linux-gnu/4.4.3/../../../../lib/libkexiv2.so: undefined reference to `Exiv2::ExifData::erase(__gnu_cxx::__normal_iterator<Exiv2::Exifdatum*, std::vector<Exiv2::Exifdatum, std::allocator<Exiv2::Exifdatum> > >)' /usr/lib/gcc/i486-linux-gnu/4.4.3/../../../../lib/libkexiv2.so: undefined reference to `Exiv2::XmpProperties::registerNs(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)' /usr/lib/gcc/i486-linux-gnu/4.4.3/../../../../lib/libkexiv2.so: undefined reference to `Exiv2::IptcKey::~IptcKey()' /usr/lib/gcc/i486-linux-gnu/4.4.3/../../../../lib/libkexiv2.so: undefined reference to `Exiv2::XmpParser::encode(std::basic_string<char, std::char_traits<char>, std::allocator<char> >&, Exiv2::XmpData const&, unsigned short, unsigned int)' /usr/lib/gcc/i486-linux-gnu/4.4.3/../../../../lib/libkexiv2.so: undefined reference to `Exiv2::XmpParser::initialize()' /usr/lib/gcc/i486-linux-gnu/4.4.3/../../../../lib/libkexiv2.so: undefined reference to `Exiv2::IptcParser::decode(Exiv2::IptcData&, unsigned char const*, unsigned int)' /usr/lib/gcc/i486-linux-gnu/4.4.3/../../../../lib/libkexiv2.so: undefined reference to `Exiv2::ExifParser::decode(Exiv2::ExifData&, unsigned char const*, unsigned int)' /usr/lib/gcc/i486-linux-gnu/4.4.3/../../../../lib/libkexiv2.so: undefined reference to `Exiv2::ExifData::operator[](std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)' /usr/lib/gcc/i486-linux-gnu/4.4.3/../../../../lib/libkexiv2.so: undefined reference to `Exiv2::Exifdatum::operator=(Exiv2::Exifdatum const&)' /usr/lib/gcc/i486-linux-gnu/4.4.3/../../../../lib/libkexiv2.so: undefined reference to `Exiv2::Exifdatum::operator=(unsigned short const&)' /usr/lib/gcc/i486-linux-gnu/4.4.3/../../../../lib/libkexiv2.so: undefined reference to `Exiv2::XmpData::add(Exiv2::XmpKey const&, Exiv2::Value const*)' /usr/lib/gcc/i486-linux-gnu/4.4.3/../../../../lib/libkexiv2.so: undefined reference to `Exiv2::Value::create(Exiv2::TypeId)' /usr/lib/gcc/i486-linux-gnu/4.4.3/../../../../lib/libkexiv2.so: undefined reference to `Exiv2::IptcData::sortByKey()' /usr/lib/gcc/i486-linux-gnu/4.4.3/../../../../lib/libkexiv2.so: undefined reference to `Exiv2::Photoshop::setIptcIrb(unsigned char const*, long, Exiv2::IptcData const&)' /usr/lib/gcc/i486-linux-gnu/4.4.3/../../../../lib/libkexiv2.so: undefined reference to `Exiv2::ExifTags::tagTitle(unsigned short, Exiv2::IfdId)' /usr/lib/gcc/i486-linux-gnu/4.4.3/../../../../lib/libkexiv2.so: undefined reference to `Exiv2::Iptcdatum::operator=(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)' /usr/lib/gcc/i486-linux-gnu/4.4.3/../../../../lib/libkexiv2.so: undefined reference to `Exiv2::XmpData::findKey(Exiv2::XmpKey const&)' /usr/lib/gcc/i486-linux-gnu/4.4.3/../../../../lib/libkexiv2.so: undefined reference to `Exiv2::XmpProperties::propertyTitle(Exiv2::XmpKey const&)' /usr/lib/gcc/i486-linux-gnu/4.4.3/../../../../lib/libkexiv2.so: undefined reference to `Exiv2::Exifdatum::Exifdatum(Exiv2::Exifdatum const&)' /usr/lib/gcc/i486-linux-gnu/4.4.3/../../../../lib/libkexiv2.so: undefined reference to `Exiv2::XmpKey::~XmpKey()' /usr/lib/gcc/i486-linux-gnu/4.4.3/../../../../lib/libkexiv2.so: undefined reference to `Exiv2::Exifdatum::operator=(Exiv2::Value const&)' /usr/lib/gcc/i486-linux-gnu/4.4.3/../../../../lib/libkexiv2.so: undefined reference to `Exiv2::Exifdatum::operator=(int const&)' /usr/lib/gcc/i486-linux-gnu/4.4.3/../../../../lib/libkexiv2.so: undefined reference to `Exiv2::XmpProperties::propertyDesc(Exiv2::XmpKey const&)' /usr/lib/gcc/i486-linux-gnu/4.4.3/../../../../lib/libkexiv2.so: undefined reference to `Exiv2::ExifThumb::setJpegThumbnail(unsigned char const*, long)' /usr/lib/gcc/i486-linux-gnu/4.4.3/../../../../lib/libkexiv2.so: undefined reference to `Exiv2::ImageFactory::open(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)' /usr/lib/gcc/i486-linux-gnu/4.4.3/../../../../lib/libkexiv2.so: undefined reference to `Exiv2::ExifKey::tag() const' /usr/lib/gcc/i486-linux-gnu/4.4.3/../../../../lib/libkexiv2.so: undefined reference to `Exiv2::DataValue::DataValue(unsigned char const*, long, Exiv2::ByteOrder, Exiv2::TypeId)' /usr/lib/gcc/i486-linux-gnu/4.4.3/../../../../lib/libkexiv2.so: undefined reference to `Exiv2::ExifParser::encode(std::vector<unsigned char, std::allocator<unsigned char> >&, unsigned char const*, unsigned int, Exiv2::ByteOrder, Exiv2::ExifData const&)' /usr/lib/gcc/i486-linux-gnu/4.4.3/../../../../lib/libkexiv2.so: undefined reference to `Exiv2::XmpParser::terminate()' /usr/lib/gcc/i486-linux-gnu/4.4.3/../../../../lib/libkexiv2.so: undefined reference to `Exiv2::XmpParser::decode(Exiv2::XmpData&, std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)' /usr/lib/gcc/i486-linux-gnu/4.4.3/../../../../lib/libkexiv2.so: undefined reference to `Exiv2::ExifData::findKey(Exiv2::ExifKey const&)' /usr/lib/gcc/i486-linux-gnu/4.4.3/../../../../lib/libkexiv2.so: undefined reference to `Exiv2::XmpData::clear()' /usr/lib/gcc/i486-linux-gnu/4.4.3/../../../../lib/libkexiv2.so: undefined reference to `Exiv2::XmpData::begin()' /usr/lib/gcc/i486-linux-gnu/4.4.3/../../../../lib/libkexiv2.so: undefined reference to `Exiv2::XmpData::operator[](std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)' /usr/lib/gcc/i486-linux-gnu/4.4.3/../../../../lib/libkexiv2.so: undefined reference to `Exiv2::Iptcdatum::operator=(unsigned short const&)' /usr/lib/gcc/i486-linux-gnu/4.4.3/../../../../lib/libkexiv2.so: undefined reference to `Exiv2::DataBuf::reset(std::pair<unsigned char*, long>)' /usr/lib/gcc/i486-linux-gnu/4.4.3/../../../../lib/libkexiv2.so: undefined reference to `Exiv2::Exifdatum::Exifdatum(Exiv2::ExifKey const&, Exiv2::Value const*)' /usr/lib/gcc/i486-linux-gnu/4.4.3/../../../../lib/libkexiv2.so: undefined reference to `Exiv2::Iptcdatum::operator=(Exiv2::Value const&)' /usr/lib/gcc/i486-linux-gnu/4.4.3/../../../../lib/libkexiv2.so: undefined reference to `Exiv2::ExifData::clear()' /usr/lib/gcc/i486-linux-gnu/4.4.3/../../../../lib/libkexiv2.so: undefined reference to `Exiv2::IptcDataSets::dataSetDesc(unsigned short, unsigned short)' /usr/lib/gcc/i486-linux-gnu/4.4.3/../../../../lib/libkexiv2.so: undefined reference to `Exiv2::version()' /usr/lib/gcc/i486-linux-gnu/4.4.3/../../../../lib/libkexiv2.so: undefined reference to `Exiv2::Xmpdatum::Xmpdatum(Exiv2::Xmpdatum const&)' /usr/lib/gcc/i486-linux-gnu/4.4.3/../../../../lib/libkexiv2.so: undefined reference to `Exiv2::Image::checkMode(Exiv2::MetadataId) const' /usr/lib/gcc/i486-linux-gnu/4.4.3/../../../../lib/libkexiv2.so: undefined reference to `typeinfo for Exiv2::Error' /usr/lib/gcc/i486-linux-gnu/4.4.3/../../../../lib/libkexiv2.so: undefined reference to `Exiv2::Exifdatum::operator=(std::pair<int, int> const&)' /usr/lib/gcc/i486-linux-gnu/4.4.3/../../../../lib/libkexiv2.so: undefined reference to `Exiv2::ExifTags::tagDesc(unsigned short, Exiv2::IfdId)' /usr/lib/gcc/i486-linux-gnu/4.4.3/../../../../lib/libkexiv2.so: undefined reference to `Exiv2::IptcParser::encode(Exiv2::IptcData const&)' /usr/lib/gcc/i486-linux-gnu/4.4.3/../../../../lib/libkexiv2.so: undefined reference to `Exiv2::IptcData::add(Exiv2::IptcKey const&, Exiv2::Value*)' /usr/lib/gcc/i486-linux-gnu/4.4.3/../../../../lib/libkexiv2.so: undefined reference to `Exiv2::ImageFactory::open(unsigned char const*, long)' /usr/lib/gcc/i486-linux-gnu/4.4.3/../../../../lib/libkexiv2.so: undefined reference to `Exiv2::Exifdatum::operator=(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)' /usr/lib/gcc/i486-linux-gnu/4.4.3/../../../../lib/libkexiv2.so: undefined reference to `Exiv2::XmpKey::XmpKey(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)' /usr/lib/gcc/i486-linux-gnu/4.4.3/../../../../lib/libkexiv2.so: undefined reference to `Exiv2::IptcData::erase(__gnu_cxx::__normal_iterator<Exiv2::Iptcdatum*, std::vector<Exiv2::Iptcdatum, std::allocator<Exiv2::Iptcdatum> > >)' /usr/lib/gcc/i486-linux-gnu/4.4.3/../../../../lib/libkexiv2.so: undefined reference to `Exiv2::IptcDataSets::dataSetTitle(unsigned short, unsigned short)' /usr/lib/gcc/i486-linux-gnu/4.4.3/../../../../lib/libkexiv2.so: undefined reference to `Exiv2::Exifdatum::operator=(unsigned int const&)' /usr/lib/gcc/i486-linux-gnu/4.4.3/../../../../lib/libkexiv2.so: undefined reference to `Exiv2::Exifdatum::~Exifdatum()' /usr/lib/gcc/i486-linux-gnu/4.4.3/../../../../lib/libkexiv2.so: undefined reference to `Exiv2::ExifData::add(Exiv2::ExifKey const&, Exiv2::Value const*)' /usr/lib/gcc/i486-linux-gnu/4.4.3/../../../../lib/libkexiv2.so: undefined reference to `Exiv2::ExifThumb::ExifThumb(Exiv2::ExifData&)' /usr/lib/gcc/i486-linux-gnu/4.4.3/../../../../lib/libkexiv2.so: undefined reference to `Exiv2::XmpData::erase(__gnu_cxx::__normal_iterator<Exiv2::Xmpdatum*, std::vector<Exiv2::Xmpdatum, std::allocator<Exiv2::Xmpdatum> > >)' /usr/lib/gcc/i486-linux-gnu/4.4.3/../../../../lib/libkexiv2.so: undefined reference to `Exiv2::XmpData::sortByKey()' /usr/lib/gcc/i486-linux-gnu/4.4.3/../../../../lib/libkexiv2.so: undefined reference to `Exiv2::ExifThumbC::copy() const' /usr/lib/gcc/i486-linux-gnu/4.4.3/../../../../lib/libkexiv2.so: undefined reference to `Exiv2::Metadatum::print(Exiv2::ExifData const*) const' /usr/lib/gcc/i486-linux-gnu/4.4.3/../../../../lib/libkexiv2.so: undefined reference to `Exiv2::IptcData::operator[](std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)' /usr/lib/gcc/i486-linux-gnu/4.4.3/../../../../lib/libkexiv2.so: undefined reference to `Exiv2::IptcKey::record() const' /usr/lib/gcc/i486-linux-gnu/4.4.3/../../../../lib/libkexiv2.so: undefined reference to `Exiv2::ExifKey::~ExifKey()' /usr/lib/gcc/i486-linux-gnu/4.4.3/../../../../lib/libkexiv2.so: undefined reference to `Exiv2::XmpData::end()' /usr/lib/gcc/i486-linux-gnu/4.4.3/../../../../lib/libkexiv2.so: undefined reference to `Exiv2::IptcKey::IptcKey(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)' /usr/lib/gcc/i486-linux-gnu/4.4.3/../../../../lib/libkexiv2.so: undefined reference to `Exiv2::XmpData::empty() const' /usr/lib/gcc/i486-linux-gnu/4.4.3/../../../../lib/libkexiv2.so: undefined reference to `Exiv2::DataBuf::release()' /usr/lib/gcc/i486-linux-gnu/4.4.3/../../../../lib/libkexiv2.so: undefined reference to `Exiv2::ExifKey::ExifKey(std::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)' /usr/lib/gcc/i486-linux-gnu/4.4.3/../../../../lib/libkexiv2.so: undefined reference to `Exiv2::DataValue::DataValue(Exiv2::TypeId)' /usr/lib/gcc/i486-linux-gnu/4.4.3/../../../../lib/libkexiv2.so: undefined reference to `Exiv2::IptcData::findKey(Exiv2::IptcKey const&)' /usr/lib/gcc/i486-linux-gnu/4.4.3/../../../../lib/libkexiv2.so: undefined reference to `Exiv2::Iptcdatum::Iptcdatum(Exiv2::Iptcdatum const&)' /usr/lib/gcc/i486-linux-gnu/4.4.3/../../../../lib/libkexiv2.so: undefined reference to `Exiv2::DataValue::read(unsigned char const*, long, Exiv2::ByteOrder)' /usr/lib/gcc/i486-linux-gnu/4.4.3/../../../../lib/libkexiv2.so: undefined reference to `Exiv2::ExifData::sortByKey()' /usr/lib/gcc/i486-linux-gnu/4.4.3/../../../../lib/libkexiv2.so: undefined reference to `Exiv2::ExifThumbC::ExifThumbC(Exiv2::ExifData const&)' /usr/lib/gcc/i486-linux-gnu/4.4.3/../../../../lib/libkexiv2.so: undefined reference to `Exiv2::Iptcdatum::operator=(Exiv2::Iptcdatum const&)' /usr/lib/gcc/i486-linux-gnu/4.4.3/../../../../lib/libkexiv2.so: undefined reference to `Exiv2::Xmpdatum::operator=(Exiv2::Xmpdatum const&)' /usr/lib/gcc/i486-linux-gnu/4.4.3/../../../../lib/libkexiv2.so: undefined reference to `Exiv2::IptcKey::tag() const' /usr/lib/gcc/i486-linux-gnu/4.4.3/../../../../lib/libkexiv2.so: undefined reference to `Exiv2::DataValue::~DataValue()' collect2: ld returned 1 exit status make[2]: *** [kipi-plugins/dngconverter/test/raw2dng] Fehler 1 make[1]: *** [kipi-plugins/dngconverter/test/CMakeFiles/raw2dng.dir/all] Fehler 2 make[1]: *** Warte auf noch nicht beendete Prozesse... [ 27%] Building CXX object kipi-plugins/timeadjust/CMakeFiles/kipiplugin_timeadjust.dir/clockphotodialog.o Linking CXX shared module ../../lib/kipiplugin_timeadjust.so [ 27%] Built target kipiplugin_timeadjust make: *** [all] Fehler 2
Simon, digiKam doesn't use libexiv2 directly. There is another layer in-between: libkexiv2. Therefore, you need to recompile libkexiv2 now, against the newly compiled libexiv2 0.18.2 (and take similar precautions again to make sure the old one is not used by mistake). Right now you have a libkexiv2 which is linked with the no-longer available libexiv2.so.6 aka 0.19. Gilles or someone else from the digiKam team can give better advise on how to compile libkexiv2 than me. The other potential problem, the old /usr/libexiv2.so.5, you have already addressed by moving it. Keep it that way for the time being. Andreas
Okay ... I did a quick test and made the libexiv2.so.6 point to the 0.18.2 version. digikam then said it was using the 0.18.2 version but did not show any images anymore. That's even a little less useful than the other problem (which makes me avoid digikam whenever possible). When has 0.19 been added to the debian repo, by the way? (I'm using debian unstable) Simon
exiv2 0.19 arrived in Debian unstable on 1 Jan: http://packages.debian.org/changelogs/pool/main/e/exiv2/exiv2_0.19-1/changelog
Using the test file from #6 & exiv2 0.19 it takes some 20 seconds to reset NoName: $ time exiv2 -M'set Exif.Image.Make NoName' digikam-example-d90.jpg real 0m20.371s user 0m20.141s sys 0m0.052s Downgrading to exiv2 0.18.2 (and refreshing the test file) works much smoother: mark@hp:~/Desktop/digikam-test$ exiv2 -V exiv2 0.18.2 Copyright (C) 2004-2009 Andreas Huggel. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA $ time exiv2 -v -M'set Exif.Image.Make NoName' digikam-example-d90.jpg File 1/1: digikam-example-d90.jpg Set Exif.Image.Make "NoName" (Ascii) real 0m0.087s user 0m0.020s sys 0m0.032s So issue isn't with digikam, rather exiv2.. I have placed a copy of exiv2 0.18.2 .deb at http://people.debian.org/~msp/, however this will still require the rebuild of libkexiv2, which is non-trivial..
Mark, can you file a report at the exiv2 bug tracker for this issues. I will mark this report UPSTREAM as we cannot do much about this.
Forwarded upstream: http://dev.exiv2.org/issues/show/677
Thank you very much for testing and reporting, Mark. And thanks everyone else for helping. I hope this bug will be fixed soon. Is there perhaps a program that can star/tag images without exiv2 that I can use in the meantime? I need to edit roughly 800 pictures from yesterday, and this is simply impossible this way.
Andreas, I saw you fixed the bug :) I'm really glad about that. Thanks a lot! I wonder how long it might take until the changes are in the debian unstable repo? Or might I, in this case, simply compile libexiv2 without libkexiv? Simon
Simon, Although I'm considering releasing 0.20 earlier than originally planned due to this and another important fix (but w/o the Canon features), it will still take a couple of weeks until I get it out. So it may be worth taking the trouble and compiling yourself. You'll need to compile libkexiv2 too, though. Andreas
Well, trouble seems to be the correct word ;) Linking CXX executable digikam /usr/lib/libkexiv2.so: undefined reference to `Exiv2::ExifData::erase(__gnu_cxx::__normal_iterator<Exiv2::Exifdatum*, std::vector<Exiv2::Exifdatum, std::allocator<Exiv2::Exifdatum> > >)' /usr/lib/libkexiv2.so: undefined reference to `typeinfo for Exiv2::Error' I've checked out the libexiv2 SVN directory and built/installed it to /usr/local/lib. Now I saw that libkexiv is located in kdegraphics which is somehow accessed by digikam's cmake. Is there a way to tell cmake to build libkexiv2 too, using the libexiv2 in /usr/local/lib? Or am I on the completely wrong way with what I'm doing? My experience with libraries is 0 so far. Simon
You must also rebuilt libkexiv by hand.
Is it enough to just build it in the kgraphics directory? As there is no rule for «make install». Or do I manually have to ln -s the new libraries in /usr/lib?
After you have configured cmake in the kdegrahics libs directory, you should be able to only build kexiv and install it from its own subdirectoy.
Indeed! This is great. I run cmake with -DCMAKE_INSTALL_PREFIX=/usr to install the libraries over the ones from apt. I guess this is not totally ethically correct, but right now it's working ;) Thank you!
(In reply to comment #30) > I run cmake with -DCMAKE_INSTALL_PREFIX=/usr to install the libraries over the > ones from apt. I guess this is not totally ethically correct, but right now > it's working ;) To make it more 'ethically correct', you can wrap the installation using checkinstall. It will put all the files into .deb file, so you can easily remove them later. Basically you just have to 'apt-get install checkinstall' and then 'checkinstall make install' in the directory where you compiled the library. Michael
Cool! checkinstall seems to rule :) I actually had to do # checkinstall --dpkgflags=--force-overwrite --pkgrelease 0.19-1.1 make install («trying to overwrite blabla, which is also in <installed deb from repo>») as here: http://forums.debian.net/viewtopic.php?p=98899&sid=db505d83319554722ea7e7c3b308283d Although this bug is said to have been solved in 1.6.1-4 (1.6.1-10 here). Simon
Hm, one more question. When I do this with libkexiv2, is it libkexiv2-7 or libkexiv2-7-dev? Simon
*** Bug 234889 has been marked as a duplicate of this bug. ***