View Issue Details

IDProjectCategoryView StatusLast Update
0001055libextractorlibextractor main librarypublic2006-04-29 20:56
Reportersquinky86 Assigned ToChristian Grothoff  
PrioritynormalSeveritymajorReproducibilityalways
Status closedResolutionfixed 
Product VersionGit master 
Summary0001055: include order will cause compile to fail due to nls issues
DescriptionIf gcc and glibc were compiled with or without nls support and libextractor is compiled in the opposite manor, compile errors will occur due to include order being incorrect:
 x86_64-pc-linux-gnu-g++ -DHAVE_CONFIG_H -I. -I. -I../../../src/include -I../../../src/include -march=athlon64 -O3 -pipe -fomit-frame-pointer -funroll-loops -MT wordextractor.lo -MD -MP -MF .deps/wordextractor.Tpo -c wordextractor.cc -fPIC -DPIC -o .libs/wordextractor.o
In file included from /usr/include/libintl.h:8,
                 from /usr/lib/gcc/x86_64-pc-linux-gnu/3.4.6/include/g++-v3/x86_64-pc-linux-gnu/bits/c++locale.h:46,
                 from /usr/lib/gcc/x86_64-pc-linux-gnu/3.4.6/include/g++-v3/iosfwd:46,
                 from /usr/lib/gcc/x86_64-pc-linux-gnu/3.4.6/include/g++-v3/bits/stl_algobase.h:70,
                 from /usr/lib/gcc/x86_64-pc-linux-gnu/3.4.6/include/g++-v3/bits/char_traits.h:46,
                 from /usr/lib/gcc/x86_64-pc-linux-gnu/3.4.6/include/g++-v3/string:47,
                 from wordleaker.h:26,
                 from wordextractor.cc:31:
/usr/include/gentoo-multilib/amd64/libintl.h:40: error: expected unqualified-id before "const"
/usr/include/gentoo-multilib/amd64/libintl.h:40: error: expected `)' before "const"
/usr/include/gentoo-multilib/amd64/libintl.h:40: error: expected `)' before "const"
/usr/include/gentoo-multilib/amd64/libintl.h:40: error: expected initializer before "const"
/usr/include/gentoo-multilib/amd64/libintl.h:45: error: expected unqualified-id before "const"
/usr/include/gentoo-multilib/amd64/libintl.h:45: error: expected `)' before "const"
/usr/include/gentoo-multilib/amd64/libintl.h:45: error: expected `)' before "const"
/usr/include/gentoo-multilib/amd64/libintl.h:45: error: expected initializer before "const"
/usr/include/gentoo-multilib/amd64/libintl.h:52: error: expected unqualified-id before "const"
/usr/include/gentoo-multilib/amd64/libintl.h:52: error: expected `)' before "const"
/usr/include/gentoo-multilib/amd64/libintl.h:52: error: expected `)' before "const"
/usr/include/gentoo-multilib/amd64/libintl.h:52: error: expected initializer before "const"
/usr/include/gentoo-multilib/amd64/libintl.h:62: error: expected unqualified-id before "unsigned"
/usr/include/gentoo-multilib/amd64/libintl.h:62: error: expected `)' before "unsigned"
/usr/include/gentoo-multilib/amd64/libintl.h:62: error: expected `)' before "unsigned"
/usr/include/gentoo-multilib/amd64/libintl.h:62: error: expected initializer before "unsigned"
/usr/include/gentoo-multilib/amd64/libintl.h:68: error: expected unqualified-id before "unsigned"
/usr/include/gentoo-multilib/amd64/libintl.h:68: error: expected `)' before "unsigned"
/usr/include/gentoo-multilib/amd64/libintl.h:68: error: expected `)' before "unsigned"
/usr/include/gentoo-multilib/amd64/libintl.h:68: error: expected initializer before "unsigned"
/usr/include/gentoo-multilib/amd64/libintl.h:74: error: expected unqualified-id before "unsigned"
/usr/include/gentoo-multilib/amd64/libintl.h:74: error: expected `)' before "unsigned"
/usr/include/gentoo-multilib/amd64/libintl.h:74: error: expected `)' before "unsigned"
/usr/include/gentoo-multilib/amd64/libintl.h:74: error: expected initializer before "unsigned"
/usr/include/gentoo-multilib/amd64/libintl.h:83: error: expected unqualified-id before "throw"
/usr/include/gentoo-multilib/amd64/libintl.h:83: error: expected initializer before "throw"
/usr/include/gentoo-multilib/amd64/libintl.h:87: error: expected unqualified-id before "throw"
/usr/include/gentoo-multilib/amd64/libintl.h:87: error: expected initializer before "throw"
/usr/include/gentoo-multilib/amd64/libintl.h:92: error: expected unqualified-id before "const"
/usr/include/gentoo-multilib/amd64/libintl.h:92: error: expected `)' before "const"
/usr/include/gentoo-multilib/amd64/libintl.h:92: error: expected `)' before "const"
/usr/include/gentoo-multilib/amd64/libintl.h:92: error: expected initializer before "const"
make[3]: *** [wordextractor.lo] Error 1
make[3]: Leaving directory `/var/tmp/portage/libextractor-0.5.12/work/libextractor-0.5.12/src/plugins/wordleaker'
make[2]: *** [all-recursive] Error 1
make[2]: Leaving directory `/var/tmp/portage/libextractor-0.5.12/work/libextractor-0.5.12/src/plugins'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/var/tmp/portage/libextractor-0.5.12/work/libextractor-0.5.12/src'
make: *** [all-recursive] Error 1

There are two files that exhibit this behavior: exiv2extractor.cc and wordextractor.cc. By declaring the generic includes first, then the package-specific includes, this issue can be avoided. Attached is a patch that adjusts the include order.
Additional Informationgentoo linux, glibc-2.4, amd64
TagsNo tags attached.
Attached Files
extractor.patch (1,438 bytes)   
diff -Naur libextractor-0.5.12/src/plugins/exiv2/exiv2extractor.cc libextractor-0.5.12.working/src/plugins/exiv2/exiv2extractor.cc
--- libextractor-0.5.12/src/plugins/exiv2/exiv2extractor.cc	2006-03-10 18:12:32.000000000 -0600
+++ libextractor-0.5.12.working/src/plugins/exiv2/exiv2extractor.cc	2006-04-27 01:11:51.000000000 -0500
@@ -23,19 +23,18 @@
   @date    30-Jun-05, ahu: created
 */
 
-#include "platform.h"
-#include "extractor.h"
-
-#include "exif.hpp"
-#include "image.hpp"
-#include "futils.hpp"
-
 #include <iostream>
 #include <iomanip>
 #include <cassert>
 #include <cstring>
 #include <math.h>
 
+#include "platform.h"
+#include "extractor.h"
+
+#include "exif.hpp"
+#include "image.hpp"
+#include "futils.hpp"
 
 #define WORKAROUND_905 1
 #if WORKAROUND_905
diff -Naur libextractor-0.5.12/src/plugins/wordleaker/wordextractor.cc libextractor-0.5.12.working/src/plugins/wordleaker/wordextractor.cc
--- libextractor-0.5.12/src/plugins/wordleaker/wordextractor.cc	2006-04-05 02:50:51.000000000 -0500
+++ libextractor-0.5.12.working/src/plugins/wordleaker/wordextractor.cc	2006-04-27 01:13:01.000000000 -0500
@@ -22,15 +22,14 @@
      the README file in this directory.
  */
 
-#include "platform.h"
-#include "extractor.h"
-#include "../convert.h"
 #include <math.h>
 #include <time.h>
 
 #include "wordleaker.h"
 #include "pole.h"
-
+#include "platform.h"
+#include "extractor.h"
+#include "../convert.h"
 
 extern "C" {
 
extractor.patch (1,438 bytes)   

Activities

Christian Grothoff

2006-04-28 18:07

manager   ~0002550

Fixed in SVN 0002683.

Issue History

Date Modified Username Field Change
2006-04-26 22:46 squinky86 New Issue
2006-04-26 22:46 squinky86 File Added: extractor.patch
2006-04-28 18:07 Christian Grothoff Status new => resolved
2006-04-28 18:07 Christian Grothoff Resolution open => fixed
2006-04-28 18:07 Christian Grothoff Assigned To => Christian Grothoff
2006-04-28 18:07 Christian Grothoff Note Added: 0002550
2006-04-29 20:56 Christian Grothoff Status resolved => closed