Raspberry PI support...

Gilles Caulier caulier.gilles at gmail.com
Sun Jun 7 10:27:11 BST 2020


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