Public bug reported:

I am maintainer of the freebsd port of smartmontools. While trying to
update the port to the latest version i found a lot of build failures.
All this failures are looking as:

[  2%] Building C object 
cuneiform_src/Kern/ctb/CMakeFiles/ctb32.dir/src/ctb_oper.c.o
In file included from /usr/include/string.h:49,
                 from 
/usr/ports/graphics/cuneiform/work/cuneiform-linux-1.0.0/cuneiform_src/Kern/ctb/src/ctb_oper.c:62:
/usr/ports/graphics/cuneiform/work/cuneiform-linux-1.0.0/cuneiform_src/Kern/hrstr/strings.h:101:
 error: expected specifier-qualifier-list before 'uchar'
/usr/ports/graphics/cuneiform/work/cuneiform-linux-1.0.0/cuneiform_src/Kern/hrstr/strings.h:138:
 error: expected '=', ',', ';', 'asm' or '__attribute__' before 
'bNeedFreeString'
*** Error code 1


The real problem is that wrong strings.h is included from the system string.h 
header. Reason is very simple - gcc searches all directories from -I/src/... 
dirs and only then - system path. There is file names strings.h in the source 
tree, so its included by mistake and this causing a build failure. 

There are 2 possible workarounds for this - one is to use mine
workaround from the cuneiform_src/Kern/hhh/tigerh/h/c_types.h file:

/* solves conflict with bsd <strings.h> */
#if defined(__FreeBSD__)
#undef __BSD_VISIBLE
#endif

This way it force system strng.h not to include strings.h. The problem
is that in many source files <strings.h> is included *before* cuneiform
includes, so this will require to change include order of the  all such
files, Another option (as for me - better one) is to rename strings.h to
something like cf_strings.h and also to change references in the
cuneiform files (it is used only in 1 or 2 headers). I think this is the
best case, because will prevent such problems in the feature. Please
tell me your opinion and i will do the patch.

** Affects: cuneiform-linux
     Importance: Undecided
         Status: New

-- 
build fail on freebsd because of strings.h include
https://bugs.launchpad.net/bugs/631207
You received this bug notification because you are a member of Cuneiform
Linux, which is the registrant for Cuneiform for Linux.

Status in Linux port of Cuneiform: New

Bug description:
I am maintainer of the freebsd port of smartmontools. While trying to update 
the port to the latest version i found a lot of build failures. All this 
failures are looking as:

[  2%] Building C object 
cuneiform_src/Kern/ctb/CMakeFiles/ctb32.dir/src/ctb_oper.c.o
In file included from /usr/include/string.h:49,
                 from 
/usr/ports/graphics/cuneiform/work/cuneiform-linux-1.0.0/cuneiform_src/Kern/ctb/src/ctb_oper.c:62:
/usr/ports/graphics/cuneiform/work/cuneiform-linux-1.0.0/cuneiform_src/Kern/hrstr/strings.h:101:
 error: expected specifier-qualifier-list before 'uchar'
/usr/ports/graphics/cuneiform/work/cuneiform-linux-1.0.0/cuneiform_src/Kern/hrstr/strings.h:138:
 error: expected '=', ',', ';', 'asm' or '__attribute__' before 
'bNeedFreeString'
*** Error code 1


The real problem is that wrong strings.h is included from the system string.h 
header. Reason is very simple - gcc searches all directories from -I/src/... 
dirs and only then - system path. There is file names strings.h in the source 
tree, so its included by mistake and this causing a build failure. 

There are 2 possible workarounds for this - one is to use mine workaround from 
the cuneiform_src/Kern/hhh/tigerh/h/c_types.h file:

/* solves conflict with bsd <strings.h> */
#if defined(__FreeBSD__)
#undef __BSD_VISIBLE
#endif

This way it force system strng.h not to include strings.h. The problem is that 
in many source files <strings.h> is included *before* cuneiform includes, so 
this will require to change include order of the  all such files, Another 
option (as for me - better one) is to rename strings.h to something like 
cf_strings.h and also to change references in the cuneiform files (it is used 
only in 1 or 2 headers). I think this is the best case, because will prevent 
such problems in the feature. Please tell me your opinion and i will do the 
patch.



_______________________________________________
Mailing list: https://launchpad.net/~cuneiform
Post to     : cuneiform@lists.launchpad.net
Unsubscribe : https://launchpad.net/~cuneiform
More help   : https://help.launchpad.net/ListHelp

Reply via email to