[Risolto] qtcam, headers qt e pkg-config

QtCam è un programma molto carino per fare varie cose con la propria webcam. Dato che vorrei includerlo nei repo di Fedora, ho avviato un percorso insieme agli sviluppatori upstream.
Visto che il programma includeva delle librerie, ho chiesto ai programmatori se potevano fornire il codice sorgente ripulito da esse, così da poter utilizzare quelle incluse nel sistema.
Giorni fa mi han contattato dicendo di aver terminato il lavoro e chiedendomi dei feedback. Così mi son apprestato a compilare il loro software, tuttavia sono incappato in un problemino molto semplice
https://github.com/econsysqtcam/qtcam/issues/4#issuecomment-164379686.
Dato che disinstallare gli header di Qt4 è da folli e dato che sarebbe consigliabile utilizzare le informazioni fornite da pkg-config che serve proprio ad evitare problemi come questo, ho provato ad eseguire il comando

pkg-config --libs qt5-qtbase-devel

per ottenere delle info da inserire nel makefile, tuttavia ho solamente ottenuto

Package qt5-qtbase-devel was not found in the pkg-config search path. Perhaps you should add the directory containing `qt5-qtbase-devel.pc' to the PKG_CONFIG_PATH environment variable No package 'qt5-qtbase-devel' found

Come mi consigliate di procedere?

In effetti hanno ragione, il problema è tuo che non dovresti avere un ambiente “sporco” con entrambe le versioni, o comunque essere in grado di gestire la coesistenza.

Per risolvere il problema alla radice, suggerisco di usare mock per creare un ambiente pulito in cui lavorare tipo:

mock -r fedora-23-x86_64 shell

porti i sorgenti dentro /var/lib/mock/fedora-23-x86_64/root, installi le dipendenze che mancano con comandi tipo:

mock -r fedora-23-x86_64 install qt5-qtbase-devel

e provi a compilare.

Ok, ho speso qualche minuto per provare. Ti serve di installare come BuildRequires:

qt5-qtbase-devel
qt5-qtdeclarative-devel
libv4l-devel
systemd-devel
turbojpeg-devel
ffmpeg-devel

A causa di quest’ultimo, ti toccherà di mandare il pacchetto in rpmfusion (ma forse già lo sapevi), quindi il comando per creare la shella va cambiato in:

mock -r fedora-23-x86_64-rpmfusion_free shell

in più, devi aggiungere una piccola patch per far cercare gli header in /usr/include/ffmpeg

diff --git a/src/qtcam.pro b/src/qtcam.pro
index 1be3479..49bb261 100644
--- a/src/qtcam.pro
+++ b/src/qtcam.pro
@@ -59,7 +59,8 @@ HEADERS += \
 
 
 INCLUDEPATH +=  $$PWD/v4l2headers/include \
-                /usr/include
+                /usr/include \
+               /usr/include/ffmpeg

e un’altra per un simbolo che è stato rinominato:

diff --git a/src/videoencoder.h b/src/videoencoder.h
index b04238b..c4953e3 100644
--- a/src/videoencoder.h
+++ b/src/videoencoder.h
@@ -38,6 +38,7 @@
 //    #define AV_CODEC_ID_VP8 CODEC_ID_VP8
 //    #define AVCodecID CodecID
 //#endif
+#define AVCodecID CodecID
 
 extern "C" {
 #include "libavcodec/avcodec.h"

Grazie per l’aiuto, tuttavia per quanto riguarda ffmpeg, ricordo (non ho la macchina virtuale di test sottomano) di aver risolto entrambi i problemi delle librerie video utilizzando opportune tag pkg-config aggiunte nel MakeFile.
Quale opzione è più conveniente a tuo avviso? Modificare MakeFile oppure qtcam.pro?

Tecnicamente, il risultatto non cambia, ma il Makefile viene generato a partire dal .pro, quindi è più corretto modificare quello (come nel caso delle patch ai file dei progetti basati su autotools. Anche perché è l’unico modo per avere eventualmente la patch applicata upstream

Ok grazie