Bug 2061

Summary: Need to document FreeType dependencies and host.def entries
Product: xorg Reporter: Karel Clock Kulhavy <clock>
Component: Server/GeneralAssignee: Alan Coopersmith <alan.coopersmith>
Status: RESOLVED FIXED QA Contact:
Severity: normal    
Priority: high CC: roland.mainz
Version: unspecified   
Hardware: All   
OS: Linux (All)   
Whiteboard:
i915 platform: i915 features:
Bug Depends on:    
Bug Blocks: 3643    

Description Karel Clock Kulhavy 2004-12-12 04:31:11 UTC
x.org X11R6.8.1 source tree was compiled (according to my best conscience)
exactly according to step-by-step guide presented in README and BUILD. The
compilation crashed with this error:

gcc -m32 -c -O2 -fno-strength-reduce -fno-strict-aliasing  -ansi -pedantic -Wall
-Wpointer-arith -Wundef   -I/usr/include/freetype2 -I/usr/includ
e/freetype2/config -I../../extras/fontconfig/src        -I../../extras/fontconfig
-I../../exports/include/X11  -I../.. -I../../exports/include    -Dlinux
-D__i386__ -D_POSIX_C_SOURCE=199309L -D_POSIX_SOURCE -D_XOPEN_SOURCE
-D_BSD_SOURCE -D_SVID_SOURCE  -D_GNU_SOURCE   -DFUNCPROTO=15 -DNARRO WPROTO
-DXTHREADS  -D_REENTRANT -DXUSE_MTSAFE_API    -DFC_DEFAULT_FONTS='""'
-DHAVE_EXPAT -DXFREE86_FT2         -DFONTCONFIG_PATH='"/etc/fonts"'      -fPIC
fcatomic.c In file included from
../../extras/fontconfig/fontconfig/fcfreetype.h:26,                  from
../../extras/fontconfig/src/fcint.h:38,                  from fcatomic.c:49:
/usr/local/include/ft2build.h:55:38: freetype/config/ftheader.h: No such file or
directory In file included from ../../extras/fontconfig/src/fcint.h:38,          
       from fcatomic.c:49: ../../extras/fontconfig/fontconfig/fcfreetype.h:27:10:
#include expects "FILENAME" or <FILENAME> In file included from
../../extras/fontconfig/src/fcint.h:38,                  from fcatomic.c:49:
../../extras/fontconfig/fontconfig/fcfreetype.h:30: syntax error before
"FcFreeTypeCharIndex" ../../extras/fontconfig/fontconfig/fcfreetype.h:30: syntax
error before "face" ../../extras/fontconfig/fontconfig/fcfreetype.h:30: warning:
type defaults to `int' in declaration of `FcFreeTypeCharIndex'
../../extras/fontconfig/fontconfig/fcfreetype.h:30: ISO C forbids data definition
with no type or storage class ../../extras/fontconfig/fontconfig/fcfreetype.h:33:
syntax error before "face" ../../extras/fontconfig/fontconfig/fcfreetype.h:36:
syntax error before "face" ../../extras/fontconfig/fontconfig/fcfreetype.h:39:
syntax error before "FT_Face" ../../extras/fontconfig/fontconfig/fcfreetype.h:42:
warning: type defaults to `int' in declaration of `FT_Face'
../../extras/fontconfig/fontconfig/fcfreetype.h:42: syntax error before "f" In
file included from fcatomic.c:49: ../../extras/fontconfig/src/fcint.h:496: syntax
error before "encoding" fcatomic.c: In function `FcAtomicLock': fcatomic.c:101:
warning: unused variable `fd' fcatomic.c:102: warning: unused variable `f'
make[4]: *** [fcatomic.o] Error 1 make[4]: Leaving directory
`/home/clock/build/lib/fontconfig' make[3]: *** [all] Error 2 make[3]: Leaving
directory `/home/clock/build/lib' make[2]: *** [all] Error 2
make[2]: Leaving directory `/home/clock/build'
make[1]: *** [World] Error 2
make[1]: Leaving directory `/home/clock/build'
make: *** [World] Error 2

Please tell what should be examined about placement, versions etc. of various
libraries to determine cause of this IMHO bug.
Comment 1 Roland Mainz 2004-12-12 16:07:08 UTC
Does the build succeed when you put the line
-- snip --
#define HasFreetype2  NO
-- snip --
into xc/config/cf/host.def ?
Comment 2 Karel Clock Kulhavy 2004-12-13 03:39:37 UTC
xc/config/cf/hotst.def doesn't exist.
So I created it, put "#define HasFreetype2  NO" and rerun again. This time the
compilation was successfull.

However, I believe that Freetype 2 is installed on my system:
clock@beton:~$ locate freetype2
/usr/local/include/freetype2
/usr/local/include/freetype2/freetype
/usr/local/include/freetype2/freetype/cache
/usr/local/include/freetype2/freetype/cache/ftccache.h
/usr/local/include/freetype2/freetype/cache/ftccmap.h
[...]
clock@beton:~$ locate libfreetype
/opt/openoffice/program/filter/libfreetype.so.6
/usr/local/lib/libfreetype.a
/usr/local/lib/libfreetype.la
/usr/local/lib/libfreetype.so
/usr/local/lib/libfreetype.so.6
/usr/local/lib/libfreetype.so.6.3.3
/usr/X11R6/lib/modules/fonts/libfreetype.a
/usr/X11R6/lib/modules/libfreetype.a
clock@beton:~$ freetype-config  --version
9.3.3
clock@beton:~$ which freetype-config
/usr/local/bin/freetype-config

Also I remember installing freetype2 at least once in the past from sources
(manually) according to their README, do not remember deliberately deleting
it, and various programs with freetype support (mozilla, gimp, gtk etc.) work
for me from which I infer my belief that freetype2 is installed on my system.

Neither freetype2 nor X.Org README AFAIK presents any official procedure to test
arbitrary running system for presence of properly installed freetype2, so
that my subjective beliefs are the only thing I am able to offer :(

Moreover, freetype2 is not listed among prerequisites for compilation of
X.Org server in the BUILDING file. Only fontconfig is mentioned which I assume
is different project from Freetype2. So I am surprised by the fact that
the compilation is dependent on it.
Comment 3 Karel Clock Kulhavy 2005-01-15 08:28:47 UTC
I have removed freetype2 completely from the system and installed brand
new again (2.1.9) and the problems persists (without changes to
config/cf/host.def).

The problem happened in lib/fontconfig. lib/fontconfig/Makefile reveals
FREETYPE2INCDIR=/usr/include
This is the problem. It should be
FREETYPE2INCDIR=/usr/local/include
because freetype2 on my system is installed in /usr/local prefix.
My installation seems to be OK:
1) freetype-config --cflags reports /usr/local prefix
2) pkg-config --cflags freetype2 reports /usr/local prefix
3) /usr/local/lib/pkgconfig is included in system-wide environment variable
PKG_CONFIG_PATH

So it looks like XFree86.Org have two bugs:
1) the BUILD file in toplevel doesn't mention freetype2, although it seems to be
a dependency.
2) the BUILD file should either specify that freetype2 must be installed in /usr
prefix, or X.Org should test what prefix it is installed in.
Comment 4 Alan Coopersmith 2005-07-04 23:05:35 UTC
This needs to be clearly documented for the 6.9 release.
Comment 5 Alan Coopersmith 2005-07-16 19:04:04 UTC
Examples have been added to xorgsite.def and instructions added to the BUILD 
file in CVS head for the upcoming 6.9 release.   Closing as fixed.

Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.