More than a week ago or so, there is a huge update on Slackware current which was mostly due to the KDE 4.8.2 release and its friends likde QT. After a successful upgrade, I noticed a thread regarding digikam
being broken due to this update. Haven’t used digikam
but when I tried to, I’m greeted with an error on the console (of course to see the error, run digikam on the console) that says that libkipi
is not found or something.
Backtracking
So now, my most important tool for importing photos from my camera is not working. I search back on the updates from the ChangeLog.txt
and found out that there are updates on libkipi
library. This makes me think that I need to re-compile digikam’s dependency kipi-plugins
. However, I have no luck and search around the forum instead.
Going digikam 2.6.0 beta instead
My current digikam
version is still at good old 1.9.0. I have read a good post regarding the latest digikam 2.6.0 beta is working Slackware current with few tweaks. Actually, you can find it on the comments. So I tried downloading it and tried to compile using SlackBuild script he provided.
Dependencies, dependencies
To recap, what we are trying to install is the new digikam 2.6.0 beta. You may download the digikam beta on sourceforge. But wait, there is a new dependency for the new digikam
.
The following are the dependencies for the digikam.
- lensfun
- liblqr
- kipi-plugins – included already in 2.6.0, not a dependency anymore
- qjson – new dependency in 2.6.0
As you’ve noticed, kipi-plugins is now included in the source for 2.6.0 beta. However, a new dependency qjson
is now added, therefore we need to install it first. I use sbopkg to install it and it installs seamlessly.
As to my surprise, digikam 2.6.0 doesn’t compile. It complains about opencv which is not currently installed in my machine. When I tried to install opencv, it again complains about ffmpeg. Such a dependency hell. My ffmpeg is currently at version 0.8.7 and I have to upgrade it to the latest 0.10.2. You can use the current ffmpeg SlackBuild script but use the new source code for ffmpeg 0.10.2.
To recap again, we do the following.
- Install qjson
- Upgrade ffmpeg to 0.10.2 – currently the latest
- Install opencv 2.3.1a
OpenCV
by the way is an optional dependency for ffmpeg
. And ffmpeg
is a runtine dependency for OpenCV
. Therefore, install ffmpeg
without OpenCV
before installing OpenCV. Then later if you really wanted to, install ffmpeg
with OpenCV support (I didn’t do that by the way). And oh, ffmpeg
complains about the missing file TODO. What I did was extract the bz2 tarball, add an empty TODO file to the location the error specified, then compressed it again into a tag.bz2
archive replacing the original source. I don’t know why it happens though.
Compiling finally
Now that all the dependencies are in place, we are now ready to compile digikam 2.6.0 beta
(currently beta 3). First, we need to have the digikam 2.6.0 beta source code, grab it at SourceForge. Next, we need a SlackBuild script. I found the SlackBuild script here at willysr’s blog.
Here is the script, the one I used and I’m not sure if this is the one willysr has modified or if this is the original script.
#!/bin/sh # Slackware build script for digiKam # Copyright 2007-2011 Frank Caraballo <fecaraballo{at}gmail{dot}com> # All rights reserved. # # Redistribution and use of this script, with or without modification, is # permitted provided that the following conditions are met: # # 1. Redistributions of this script must retain the above copyright # notice, this list of conditions and the following disclaimer. # # THIS SOFTWARE IS PROVIDED BY THE AUTHOR ''AS IS'' AND ANY EXPRESS OR IMPLIED # WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF # MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO # EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, # SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, # PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; # OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, # WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR # OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF # ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. PRGNAM=digikam VERSION=${VERSION:-2.6.0-beta3} BUILD=${BUILD:-1} TAG=${TAG:-_SBo} if [ -z "$ARCH" ]; then case "$( uname -m )" in i?86) ARCH=i486 ;; arm*) ARCH=arm ;; *) ARCH=$( uname -m ) ;; esac fi CWD=$(pwd) TMP=${TMP:-/tmp/SBo} PKG=$TMP/package-$PRGNAM OUTPUT=${OUTPUT:-/tmp} if [ "$ARCH" = "i486" ]; then SLKCFLAGS="-O2 -march=i486 -mtune=i686" elif [ "$ARCH" = "i686" ]; then SLKCFLAGS="-O2 -march=i686 -mtune=i686" elif [ "$ARCH" = "x86_64" ]; then SLKCFLAGS="-O2 -fPIC" else SLKCFLAGS="-O2" fi set -e rm -rf $PKG mkdir -p $TMP $PKG $OUTPUT cd $TMP rm -rf $PRGNAM-$VERSION tar xvf $CWD/$PRGNAM-$VERSION.tar.?z* cd $PRGNAM-$VERSION chown -R root:root . find . \ \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \ -exec chmod 755 {} \; -o \ \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \ -exec chmod 644 {} \; mkdir -p build cd build cmake \ -DCMAKE_C_FLAGS_RELEASE:STRING="$SLKCFLAGS" \ -DCMAKE_CXX_FLAGS_RELEASE:STRING="$SLKCFLAGS" \ -DCMAKE_INSTALL_PREFIX=/usr \ -DLIB_SUFFIX=$(kde4-config --libsuffix) \ -DMAN_INSTALL_DIR=/usr/man \ -DSYSCONF_INSTALL_DIR=/etc/kde \ -DCMAKE_BUILD_TYPE=Release .. make make install DESTDIR=$PKG cd .. find $PKG | xargs file | grep -e "executable" -e "shared object" | grep ELF \ | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true find $PKG/usr/man -type f -exec gzip -9 {} \; for i in $( find $PKG/usr/man -type l ) ; do ln -s $( readlink $i ).gz $i.gz ; rm $i ; done mkdir -p $PKG/usr/doc/$PRGNAM-$VERSION cp -a \ NEWS README \ $PKG/usr/doc/$PRGNAM-$VERSION cat $CWD/$PRGNAM.SlackBuild > $PKG/usr/doc/$PRGNAM-$VERSION/$PRGNAM.SlackBuild mkdir -p $PKG/install cat $CWD/slack-desc > $PKG/install/slack-desc cat $CWD/doinst.sh > $PKG/install/doinst.sh cd $PKG /sbin/makepkg -l y -c n $OUTPUT/$PRGNAM-$VERSION-$ARCH-$BUILD$TAG.${PKGTYPE:-tgz}
We compile it like this.
./digikam.SlackBuild
Then upgrade using the compiled package usually lands in /tmp directory.
Now that’s it. When digikam hits stable, I only have to upgrade to it.
[UPDATE]: I have noticed that in digikam 2.6.0 beta3, when I tried to import photos from my camera by selecting few photos, using the usual “Download” button in the import window now downloads every photos in the camera. I have to use the context menu instead to download only specific set of photos. Bad.
Enjoy.