[Xorg] CVS HEAD -- ftfuncs.c:931: error: structure has nomembernamed `find_sbit_image'
Egbert Eich
eich at pdx.freedesktop.org
Wed Aug 4 03:42:40 PDT 2004
Owen Taylor writes:
> >
> > We removed the dependency on internal headers.
>
> Really? I still see the inclusion in:
>
> http://freedesktop.org/cgi-bin/viewcvs.cgi/xorg/xc/lib/font/FreeType/ftfuncs.c?rev=1.5&view=auto
>
OK, you seem to be referring to:
#include FT_INTERNAL_TRUETYPE_TYPES_H
#include FT_INTERNAL_SFNT_H
#include FT_INTERNAL_STREAM_H
The last one at least doesn't seem to be required.
The question arises how private those headers are.
> > However the question
> > arises what is an internal header. If you install a header in
> > /usr/include/... it is no longer internal.
>
> And if you install a header into
> /usr/include/freetype2/freetype/internal/?
>
> While I wouldn't recommend installing internal headers, I think if
> an application does:
>
> #include FT_INTERNAL_TRUETYPE_TYPES_H
>
> They are definitely asking for trouble.
So why are these headers installed, then?
I think saying "well, these are not really ment to be public
so we reserve the right to change them but application may still find
them useful" calls for trouble.
>
> > > (Pango also uses internal headers but with implicit acceptance of
> > > the risk that if you upgrade FreeType you may also need to upgrade
> > > Pango.)
> >
> > This issue should be fixed with the freetype folks. If interfaces are
> > exposed thru the headers in /usr/include/.. they should not be considered
> > internally. If one needs the freetype sources (we did prior to X.Org 6.7)
> > to build because he needs a header file that doesn't get installed,
> > one should talk to FreeType to make this information public.
> > That's what Chisato did.
>
> The Pango question is a little different - Pango includes a big hunk of
> table reading code from FreeType 1 ported to Pango 2. The plan is to get
> it back into the FreeType project, but that's a long term thing.
> Anyways, not really the subject here...
Right. We should do the same thing and supply a patch freetype that
makes it public.
It won't help us to fix the past, though, but we can fix the past
by adding backward compatibility #ifdefs. Knowing that we will
not have to clutter the code with these for an unforseeable future
helps to justify them.
[...]
>
> I don't think that the rebuilding half the packages installed is
> will be necessary. FreeType-2.0 => FreeType-2.1 might have required
> rebuilding Pango (I don't recall at this point.) I'm pretty sure
> we didn't need to rebuild anything else in the distribution.
> And no other upgrades of FreeType required rebuilding packages.
Appearantly there was a problem between 2.1.6 and 2.1.7 and there
are indications that there also is a problem between 2.1.7 and 2.1.8.
>
> [...]
>
[...]
> >
> > Then this begs the question why people have to access internal structures
> > and why they are exposed thru external headers in the first place.
>
> Well if you look at why ftfuncs.c is using internal headers, I think
> it's because new functionality was written as if it was part of
> FreeType - probably so it could be submitted as an addition to FreeType.
>
> We could certainly campaign to have FreeType move more stuff to the
> public supported API... to make FreeType a more extensible library.
> But I think new functionality is seldom going to be *required* for X,
> so a better approach is probably:
>
> - When new functionality is useful, submit a patch to freetype to
> add that functionality.
> - Add conditionalization to X to use that functionality when
> there and fallback when not.
Right.
[...]
> >
> > I can see a problem when the later one is used during build while the
> > earlier version is used during run time.
> > The other way around shouldn't be a problem provided the backward
> > compatibility issue is resolved.
>
> If the mismatch happens the right way, there's no problem. But it
> happens the wrong way roughly 50% of the time...
>
> > > [ I'll certainly loudly oppose the motion if you encourage the FreeType
> > > maintainers to bump the major version number :-). That would be
> > > a horrible pain for distributors ]
> > >
> >
> > This has happend with other libs before and has forced distributors to
> > ship old versions of these libs along with the newest ones anyhow.
>
> Yes, but usually major version number changes go along with significant
> API changes. A new major version of a library more than doubles the
> maintenance for distributions (I have to *backport* fixes to the
> old version...). Having that cost for no real gain isn't pretty.
>
OK, that's definitely annoying. But how often does it happen that
a patch is importand enough to be backported to an older version?
Cheers,
Egbert.
More information about the xorg
mailing list