gcc 4.3.2 e problemi di compilazione
Moderatori: ragno, tapino, alez, zulu, davidea
gcc 4.3.2 e problemi di compilazione
Allora, dopo aver letto un bel po' di documenti ed aver fatto varie prove, ho un VDR 1.6.0.2 perfettamente funzionante che gira sotto Arch Linux con tanto di gestione ACPI, shares Samba ed un po' di altre features interessanti.
L'unico problema restano ancora i plugin che, spesso, vanno leggermente modificati per poterli compilare correttamente.
Alcuni problemi sono legati a modifiche introdotte nelle versioni di VDR più recenti (tipicamente nei function prototypes), altri alle librerie installate con gcc 4.3.2 che, in alcuni casi, hanno rotto la compatibilità con le versioni precedenti.
Ed è proprio su questo argomento che vorrei chiedere lumi agli esperti.
Vorrei provare a compilare una 1.4.7 giusto per vedere le differenze rispetto alla versione più recente e decidere quale tenere.
Il problema è che con gcc 4.3.2 mi escono parecchi errori di compilazione.
Leggendo in giro, il problema sembra essere noto così come la soluzione, ma vorrei evitare di mettermi a modificare il codice a manina (anche se, solitamente, si tratta solo di aggiungere/modificare qualche include) e quindi vorrei sapere se esiste già qualche patch precotta che effettui tutte le modifiche necessarie.
Grazie e ciao.
L'unico problema restano ancora i plugin che, spesso, vanno leggermente modificati per poterli compilare correttamente.
Alcuni problemi sono legati a modifiche introdotte nelle versioni di VDR più recenti (tipicamente nei function prototypes), altri alle librerie installate con gcc 4.3.2 che, in alcuni casi, hanno rotto la compatibilità con le versioni precedenti.
Ed è proprio su questo argomento che vorrei chiedere lumi agli esperti.
Vorrei provare a compilare una 1.4.7 giusto per vedere le differenze rispetto alla versione più recente e decidere quale tenere.
Il problema è che con gcc 4.3.2 mi escono parecchi errori di compilazione.
Leggendo in giro, il problema sembra essere noto così come la soluzione, ma vorrei evitare di mettermi a modificare il codice a manina (anche se, solitamente, si tratta solo di aggiungere/modificare qualche include) e quindi vorrei sapere se esiste già qualche patch precotta che effettui tutte le modifiche necessarie.
Grazie e ciao.
Re: gcc 4.3.2 e problemi di compilazione
ciao!
con archlinux, non ho mai avuto problemi gravi di compilazione da sorgenti, ho installato la versione 0.8, ma in questo momento non posso dirti quale versione del gcc utilizzo. Appena posso te lo faccio sapere.
Comunque mi pare strano che la 1.4.7 ti dia problemi, magari posta un po' di log con gli errori, che vediamo di cosa si tratta...
saluti
ragno
con archlinux, non ho mai avuto problemi gravi di compilazione da sorgenti, ho installato la versione 0.8, ma in questo momento non posso dirti quale versione del gcc utilizzo. Appena posso te lo faccio sapere.
Comunque mi pare strano che la 1.4.7 ti dia problemi, magari posta un po' di log con gli errori, che vediamo di cosa si tratta...
saluti
ragno
vdr: 1.4.7+extpatch54 (pensionata), 1.7.27 (yavdr 0.4)
Percorri la via che porta al sole,
e non camminare sui sentieri oscuri.
E quando penso che sia finita,
è proprio allora che comincia la salita.
Percorri la via che porta al sole,
e non camminare sui sentieri oscuri.
E quando penso che sia finita,
è proprio allora che comincia la salita.
Re: gcc 4.3.2 e problemi di compilazione
Ciao Ragno,
credo che tu abbia una versione di gcc + librerie precedente alla 4.3.
La 4.3, infatti, modifica alcuni include files e, per compilare, è necessario adeguare il codice a tali modifiche.
Come dicevo nel post precedente, risolvere gli errori di compilazione è piuttosto semplice. Mi chiedevo solo se esistesse già una patch standard.
Cercando in giro non l'ho trovata e quindi credo che ne produrrò una da mettere a disposizione di chi ne avesse bisogno.
credo che tu abbia una versione di gcc + librerie precedente alla 4.3.
La 4.3, infatti, modifica alcuni include files e, per compilare, è necessario adeguare il codice a tali modifiche.
Come dicevo nel post precedente, risolvere gli errori di compilazione è piuttosto semplice. Mi chiedevo solo se esistesse già una patch standard.
Cercando in giro non l'ho trovata e quindi credo che ne produrrò una da mettere a disposizione di chi ne avesse bisogno.
Re: gcc 4.3.2 e problemi di compilazione
Sara' che un altra cosa che non faccio di solito e' quella di aggiornare il sistema quando funziona... 
Toglimi una curiosita' tu da che versione di arch sei partito per l'installazione?
checking gcc...version 4.1.2....hai ragione!
comunque se non hai trovato qualcosa dai un'occhiata qui
http://www.vdr-portal.de/board/thread.p ... adid=78068
saluti
ragno!

Toglimi una curiosita' tu da che versione di arch sei partito per l'installazione?
checking gcc...version 4.1.2....hai ragione!
comunque se non hai trovato qualcosa dai un'occhiata qui
http://www.vdr-portal.de/board/thread.p ... adid=78068
saluti
ragno!
vdr: 1.4.7+extpatch54 (pensionata), 1.7.27 (yavdr 0.4)
Percorri la via che porta al sole,
e non camminare sui sentieri oscuri.
E quando penso che sia finita,
è proprio allora che comincia la salita.
Percorri la via che porta al sole,
e non camminare sui sentieri oscuri.
E quando penso che sia finita,
è proprio allora che comincia la salita.
Re: gcc 4.3.2 e problemi di compilazione
Ciao Ragno,
la mia versione di Arch Linux è la 2007.08 "pacmannata" all'ultima release.
Ho preparato la patch necessaria per compilare VDR 1.4.7 con gcc 4.3.2 eliminando tutti gli errori di compilazione e, già che c'ero, anche gli warning.
Le modifiche sono mutuate dal codice di VDR 1.6.0 che compila senza problemi anche con gcc 4.3.2.
Per eliminare una certa categoria di warning, VDR 1.6.0 utilizza l'opzione di compilazione "-Wno-parentheses" (che in VDR 1.4.7 non era utilizzata) e quindi la patch che ho preparato va a modificare anche il Makefile ed il Make.config.template.
Non modifica, invece, il file Make.config che, nel caso sia già stato creato, va modificato a mano (basta controllare le differenze rispetto al file Make.config.template).
Ecco la patch
la mia versione di Arch Linux è la 2007.08 "pacmannata" all'ultima release.
Ho preparato la patch necessaria per compilare VDR 1.4.7 con gcc 4.3.2 eliminando tutti gli errori di compilazione e, già che c'ero, anche gli warning.
Le modifiche sono mutuate dal codice di VDR 1.6.0 che compila senza problemi anche con gcc 4.3.2.
Per eliminare una certa categoria di warning, VDR 1.6.0 utilizza l'opzione di compilazione "-Wno-parentheses" (che in VDR 1.4.7 non era utilizzata) e quindi la patch che ho preparato va a modificare anche il Makefile ed il Make.config.template.
Non modifica, invece, il file Make.config che, nel caso sia già stato creato, va modificato a mano (basta controllare le differenze rispetto al file Make.config.template).
Ecco la patch
Codice: Seleziona tutto
diff -ruN vdr-1.4.7/Make.config.template vdr-1.4.7-1/Make.config.template
--- vdr-1.4.7/Make.config.template2006-06-15 11:15:25.000000000 +0200
+++ vdr-1.4.7-1/Make.config.template2008-10-29 14:37:25.000000000 +0100
@@ -14,7 +14,7 @@
CFLAGS = -g -O2 -Wall
CXX = g++
-CXXFLAGS = -g -O2 -Wall -Woverloaded-virtual
+CXXFLAGS = -g -O2 -Wall -Woverloaded-virtual -Wno-parentheses
ifdef PLUGIN
CFLAGS += -fPIC
diff -ruN vdr-1.4.7/Makefile vdr-1.4.7-1/Makefile
--- vdr-1.4.7/Makefile2006-08-20 12:44:22.000000000 +0200
+++ vdr-1.4.7-1/Makefile2008-10-29 14:27:01.000000000 +0100
@@ -12,7 +12,7 @@
CFLAGS ?= -g -O2 -Wall
CXX ?= g++
-CXXFLAGS ?= -g -O2 -Wall -Woverloaded-virtual
+CXXFLAGS ?= -g -O2 -Wall -Woverloaded-virtual -Wno-parentheses
LSIDIR = ./libsi
MANDIR = /usr/local/man
diff -ruN vdr-1.4.7/epg.c vdr-1.4.7-1/epg.c
--- vdr-1.4.7/epg.c2006-10-28 11:12:42.000000000 +0200
+++ vdr-1.4.7-1/epg.c2008-10-29 14:29:46.000000000 +0100
@@ -12,6 +12,7 @@
#include "epg.h"
#include <ctype.h>
+#include <limits.h>
#include <time.h>
#include "libsi/si.h"
#include "timers.h"
diff -ruN vdr-1.4.7/keys.h vdr-1.4.7-1/keys.h
--- vdr-1.4.7/keys.h2006-10-14 12:41:20.000000000 +0200
+++ vdr-1.4.7-1/keys.h2008-10-29 14:30:22.000000000 +0100
@@ -81,7 +81,7 @@
struct tKey {
eKeys type;
- char *name;
+ const char *name;
};
class cKey : public cListObject {
diff -ruN vdr-1.4.7/menu.c vdr-1.4.7-1/menu.c
--- vdr-1.4.7/menu.c2006-12-02 12:12:02.000000000 +0100
+++ vdr-1.4.7-1/menu.c2008-10-29 14:31:12.000000000 +0100
@@ -1037,7 +1037,7 @@
return r;
}
-static char *TimerMatchChars = " tT";
+static const char *TimerMatchChars = " tT";
bool cMenuScheduleItem::Update(bool Force)
{
diff -ruN vdr-1.4.7/menuitems.h vdr-1.4.7-1/menuitems.h
--- vdr-1.4.7/menuitems.h2006-04-14 12:01:47.000000000 +0200
+++ vdr-1.4.7-1/menuitems.h2008-10-29 14:29:17.000000000 +0100
@@ -10,6 +10,7 @@
#ifndef __MENUITEMS_H
#define __MENUITEMS_H
+#include <limits.h>
#include "osdbase.h"
extern const char *FileNameChars;
diff -ruN vdr-1.4.7/rcu.c vdr-1.4.7-1/rcu.c
--- vdr-1.4.7/rcu.c2006-12-02 12:12:28.000000000 +0100
+++ vdr-1.4.7-1/rcu.c2008-10-29 14:31:52.000000000 +0100
@@ -257,7 +257,7 @@
data = m;
}
-void cRcuRemote::SetString(char *s)
+void cRcuRemote::SetString(const char *s)
{
const char *chars = mode == modeH ? "0123456789ABCDEF" : "0123456789-EHLP ";
int n = 0;
diff -ruN vdr-1.4.7/rcu.h vdr-1.4.7-1/rcu.h
--- vdr-1.4.7/rcu.h2005-12-31 16:09:25.000000000 +0100
+++ vdr-1.4.7-1/rcu.h2008-10-29 14:32:19.000000000 +0100
@@ -31,7 +31,7 @@
void SetMode(unsigned char Mode);
void SetNumber(int n, bool Hex = false);
void SetPoints(unsigned char Dp, bool On);
- void SetString(char *s);
+ void SetString(const char *s);
bool DetectCode(unsigned char *Code);
virtual void Action(void);
virtual void ChannelSwitch(const cDevice *Device, int ChannelNumber);
diff -ruN vdr-1.4.7/thread.c vdr-1.4.7-1/thread.c
--- vdr-1.4.7/thread.c2006-09-24 14:54:47.000000000 +0200
+++ vdr-1.4.7-1/thread.c2008-10-29 14:32:56.000000000 +0100
@@ -412,7 +412,7 @@
return false;
}
- char *mode = "w";
+ const char *mode = "w";
int iopipe = 0;
if (pid > 0) { // parent process
diff -ruN vdr-1.4.7/tools.c vdr-1.4.7-1/tools.c
--- vdr-1.4.7/tools.c2006-12-02 12:12:59.000000000 +0100
+++ vdr-1.4.7-1/tools.c2008-10-29 14:34:18.000000000 +0100
@@ -775,7 +775,7 @@
int r = 0;
while (i < length && r < maxResult - 3) {
result[r++] = b64[(data[i] >> 2) & 0x3F];
- char c = (data[i] << 4) & 0x3F;
+ uchar c = (data[i] << 4) & 0x3F;
if (++i < length)
c |= (data[i] >> 4) & 0x0F;
result[r++] = b64[c];
Re: gcc 4.3.2 e problemi di compilazione
Ottimo!
Se ti va scaricala anche su risorse...
Poi sarebbe l'ideale metterlo anche sul wiki...
ciao
p.s. mi sa che c'e' da fare un bel lavoretto con i plugghi!!!
Se ti va scaricala anche su risorse...

Poi sarebbe l'ideale metterlo anche sul wiki...
ciao
p.s. mi sa che c'e' da fare un bel lavoretto con i plugghi!!!
vdr: 1.4.7+extpatch54 (pensionata), 1.7.27 (yavdr 0.4)
Percorri la via che porta al sole,
e non camminare sui sentieri oscuri.
E quando penso che sia finita,
è proprio allora che comincia la salita.
Percorri la via che porta al sole,
e non camminare sui sentieri oscuri.
E quando penso che sia finita,
è proprio allora che comincia la salita.
Re: gcc 4.3.2 e problemi di compilazione
L'ho caricata in upload nella sezione VDR-Patch.
Per quanto riguarda la wiki, non vorrei fare casino (tipo, sbagliare sezione o altro) quindi, nel caso, ho bisogno di un aiutino (come nei quiz radiofonici
).
Se riesco a ritagliare un po' di tempo (sto traslocando...) questa sera comincio a fare qualche prova con i plugin.
Per quanto riguarda la wiki, non vorrei fare casino (tipo, sbagliare sezione o altro) quindi, nel caso, ho bisogno di un aiutino (come nei quiz radiofonici

Se riesco a ritagliare un po' di tempo (sto traslocando...) questa sera comincio a fare qualche prova con i plugin.