Raspberry PI support...

Gilles Caulier caulier.gilles at gmail.com
Mon Sep 7 09:23:56 BST 2020


Hi,

On the PI there is nothing special to customize in the configuration,
you need only to install package with apt-get, typically this list :

https://github.com/cgilles/digikam-install-deps/blob/master/preparehost-raspberryos.sh

>From this list you don't need to remove something (see the bottom of
this file). The script is used to also recompile the mast version of
Qt, but you can use the PI based OS packages as well.

digiKam use a lots of memory and CPU computations. My PI is the last
version with 8Gb and 4 cores. I recommend using this model. You can
use a 4Gb version if your collection is not too big....

To host collection use an external SSD of course, connected on USB3
port. It work like a charm.

Best

Gilles Caulier


Le lun. 7 sept. 2020 à 03:22, Tonio Kroeger
<tonio.kroeger1903 at gmail.com> a écrit :
>
> Hi Gilles,
>
> that is great news! Can you give a hint/link to what are the prerequisites on the raspi? I really struggled with it. Installed a lot of stuff I had no idea what it was. In the end my (headless) raspi did not boot anymore...
>
> Would be absolutely great to have digikam on the raspi!
>
> Thanks
>
> TK
>
> On Sun, Jun 7, 2020 at 11:27 AM Gilles Caulier <caulier.gilles at gmail.com> wrote:
>>
>> Hi all,
>>
>> I bought the last PI version 4 B, with 4 core ARM 64 bits and 8Gb of RAM.
>>
>> compared to older PI 3 mono core 1 Gb, this version rock really and
>> fully suitable with Plasma desktop.
>>
>> Compared to version 3, version 4 compiles the whole digiKam from
>> scratch in less than one hour. Under version 3, it's more than 10
>> hours....
>>
>> Expected for the Opengl API, all compile fine. I will investigate why
>> libgl API do not export right functions, even if all include files are
>> installed...
>>
>> I also made a small patch to compile Exiv2 under ARM. I PR my patch
>> but, as usual, it's always complicated with Robin to propose changes
>> in the Exiv2 project even if the patch is very small.. I think the
>> problem is a human one...
>>
>> https://github.com/Exiv2/exiv2/pull/1231
>>
>> digiKam under ARM report alignment of data warnings, especially with
>> DImg API, like this :
>>
>> /home/gilles/Documents/7.x/core/libs/dimg/dimg_scale.cpp: In member
>> function ‘Digikam::DImg Digikam::DImg::smoothScaleClipped(int, int,
>> int, int, int, int) const’:
>> /home/gilles/Documents/7.x/core/libs/dimg/dimg_scale.cpp:231:81:
>> warning: cast from ‘uchar*’ {aka ‘unsigned char*’} to ‘ullong*’ {aka
>> ‘long long unsigned int*’} increases required alignment of target type
>> [-Wcast-align]
>>              dimgScaleAARGBA16(scaleinfo,
>> reinterpret_cast<ullong*>(buffer.bits()),
>>
>>           ^
>> /home/gilles/Documents/7.x/core/libs/dimg/dimg_scale.cpp:237:80:
>> warning: cast from ‘uchar*’ {aka ‘unsigned char*’} to ‘ullong*’ {aka
>> ‘long long unsigned int*’} increases required alignment of target type
>> [-Wcast-align]
>>              dimgScaleAARGB16(scaleinfo,
>> reinterpret_cast<ullong*>(buffer.bits()),
>>
>>          ^
>> /home/gilles/Documents/7.x/core/libs/dimg/dimg_scale.cpp:246:77:
>> warning: cast from ‘uchar*’ {aka ‘unsigned char*’} to ‘uint*’ {aka
>> ‘unsigned int*’} increases required alignment of target type
>> [-Wcast-align]
>>              dimgScaleAARGBA(scaleinfo, reinterpret_cast<uint*>(buffer.bits()),
>>                                                                              ^
>> /home/gilles/Documents/7.x/core/libs/dimg/dimg_scale.cpp:252:76:
>> warning: cast from ‘uchar*’ {aka ‘unsigned char*’} to ‘uint*’ {aka
>> ‘unsigned int*’} increases required alignment of target type
>> [-Wcast-align]
>>              dimgScaleAARGB(scaleinfo, reinterpret_cast<uint*>(buffer.bits()),
>>                                                                             ^
>> /home/gilles/Documents/7.x/core/libs/dimg/dimg_scale.cpp: In member
>> function ‘Digikam::DImg Digikam::DImg::smoothScaleSection(int, int,
>> int, int, int, int) const’:
>> /home/gilles/Documents/7.x/core/libs/dimg/dimg_scale.cpp:338:81:
>> warning: cast from ‘uchar*’ {aka ‘unsigned char*’} to ‘ullong*’ {aka
>> ‘long long unsigned int*’} increases required alignment of target type
>> [-Wcast-align]
>>              dimgScaleAARGBA16(scaleinfo,
>> reinterpret_cast<ullong*>(buffer.bits()),
>>
>>           ^
>> /home/gilles/Documents/7.x/core/libs/dimg/dimg_scale.cpp:346:80:
>> warning: cast from ‘uchar*’ {aka ‘unsigned char*’} to ‘ullong*’ {aka
>> ‘long long unsigned int*’} increases required alignment of target type
>> [-Wcast-align]
>>              dimgScaleAARGB16(scaleinfo,
>> reinterpret_cast<ullong*>(buffer.bits()),
>>
>>          ^
>> /home/gilles/Documents/7.x/core/libs/dimg/dimg_scale.cpp:358:66:
>> warning: cast from ‘uchar*’ {aka ‘unsigned char*’} to ‘uint*’ {aka
>> ‘unsigned int*’} increases required alignment of target type
>> [-Wcast-align]
>>                              reinterpret_cast<uint*>(buffer.bits()),
>>                                                                   ^
>> /home/gilles/Documents/7.x/core/libs/dimg/dimg_scale.cpp:367:65:
>> warning: cast from ‘uchar*’ {aka ‘unsigned char*’} to ‘uint*’ {aka
>> ‘unsigned int*’} increases required alignment of target type
>> [-Wcast-align]
>>                             reinterpret_cast<uint*>(buffer.bits()),
>>                                                                  ^
>> /home/gilles/Documents/7.x/core/libs/dimg/dimg_scale.cpp: In function
>> ‘Digikam::DImgScale::DImgScaleInfo*
>> Digikam::DImgScale::dimgCalcScaleInfo(const Digikam::DImg&, int, int,
>> int, int, bool)’:
>> /home/gilles/Documents/7.x/core/libs/dimg/dimg_scale.cpp:521:80:
>> warning: cast from ‘uchar*’ {aka ‘unsigned char*’} to ‘ullong*’ {aka
>> ‘long long unsigned int*’} increases required alignment of target type
>> [-Wcast-align]
>>          isi->ypoints16 =
>> dimgCalcYPoints16(reinterpret_cast<ullong*>(img.bits()), img.width(),
>> img.height(), sch);
>>
>>          ^
>> /home/gilles/Documents/7.x/core/libs/dimg/dimg_scale.cpp:526:76:
>> warning: cast from ‘uchar*’ {aka ‘unsigned char*’} to ‘uint*’ {aka
>> ‘unsigned int*’} increases required alignment of target type
>> [-Wcast-align]
>>          isi->ypoints   =
>> dimgCalcYPoints(reinterpret_cast<uint*>(img.bits()), img.width(),
>> img.height(), sch);
>>
>> Voilà, work in progress
>>
>> Gilles caulier


More information about the Digikam-devel mailing list