ubuntuusers.de

MariaDB compiliert nicht mehr

Status: Gelöst | Ubuntu-Version: Ubuntu 14.04 (Trusty Tahr)
Antworten |

AugustQ

Anmeldungsdatum:
24. Oktober 2007

Beiträge: 767

Hi,

ich habe vor ein paar Tagen mein System aktualisiert, von 13.10 auf 14.04. Und heute telle ich fest, daß die Sourcen von MariaDB sich nicht mehr compilieren lassen.

Das hier ist die Stelle, die einen Fehler hervorruft: in row0log.cc:

1
2
3
4
5
6
7
8
#ifdef FALLOC_FL_PUNCH_HOLE
		/* Try to deallocate the space for the file on disk.
		This should work on ext4 on Linux 2.6.39 and later,
		and be ignored when the operation is unsupported. */
		fallocate(index->online_log->fd,
			  FALLOC_FL_PUNCH_HOLE | FALLOC_FL_KEEP_SIZE,
			  ofs, srv_buf_size);
#endif /* FALLOC_FL_PUNCH_HOLE */

und zwar ist die Variable srv_buf_size nicht bekannt. Das FALLOC_FL_PUNCH_HOLE wird nirgendwo definiert, ist aber offensichtlich gültig, denn sonst würde er diesen Zweig nicht anfassen. Mit grep habe ich mal die Dateien durchsucht und nur diese Datei gefunden, in der dieses define vorkommt, aber nur als #ifdef FALLOC_FL_PUNCH_HOLE

Also habe ich dies mal mit einer eigenen Anweisung undefined (Eclipse zeigte mir den Zweig eh in grau an, also nicht defined, aber trotzdem). Jetzt läuft der compile-Vorgang zwar weiter, stoppt aber an dieser Stelle:

in sql_yacc.yy an der Stelle
#define YYTHD ((THD *)yythd)

mit der Meldung: sql/sql_yacc.yy:32:23: error: ‘yythd’ was not declared in this scope

Und jetzt habe ich erst mal aufgehört.

Was kann das sein?

Den Source-code habe ich nicht verändert. Und unter 13.10 compilierte alles ohne Probleme.

Any ideass?

Schönen Gruß AugustQ

Moderiert von tomtomtom:

Ins passende Forum verschoben.

AugustQ

(Themenstarter)

Anmeldungsdatum:
24. Oktober 2007

Beiträge: 767

hello to everyone,

das Problem ist gelöst. Einfach die neueste Version der Sourcen holen und schon geht es.

Die Sourcen liessen sich bisher hervorragend compilieren. Nach der Installation des neuen Systems (also von 13.10 auf 14.04) ging dann nichts mehr.

Die verursachende Stelle hatte ich ja im ersten Post angegeben. So sieht das jetzt in der neuen VErsion der Software aus:

1
2
3
4
5
6
7
8
#if 0 //def FALLOC_FL_PUNCH_HOLE
		/* Try to deallocate the space for the file on disk.
		This should work on ext4 on Linux 2.6.39 and later,
		and be ignored when the operation is unsupported. */
		fallocate(index->online_log->fd,
			  FALLOC_FL_PUNCH_HOLE | FALLOC_FL_KEEP_SIZE,
			  ofs, srv_buf_size);
#endif /* FALLOC_FL_PUNCH_HOLE */

Ja, so kann man das auch machen.

Schönen Gruß AugustQ

PS: jetzt muß ich meine Erweiterungen in die neue Version der Sourcen rüberziehen. Hmmmm, das wollte ich eigentlich vermeiden.

Antworten |