freetype
Mariusz Mazur
mariusz w isn.pl
Wto, 9 Kwi 2002, 20:52:23 CEST
On Tuesday 09 April 2002 20:25, Mariusz Mazur wrote:
> Potrzebna mi osoba która decydowała w jakich katalogach mają siedzieć
> headersy do freetype i freetype1. Moje pytanie brzmi: czym się ta osoba
> kierowała rozmieszczając te pliki w obrębie /usr/include?
Informacja wstępna:
freetype1-devel (wersja starsza) trzyma nagłówki w /usr/include/freetype
freetype-devel (wersja nowsza) trzyma nagłówki w
/usr/include/freetype2/freetype
Dobra. Wytłumaczę o co mi chodzi. Otóż podczas moich bojów z mozillą 0.9.9
wpadłem na to, że mozilla się ślicznie buduje bez pakietów freetype1-devel,
ale z nimi już się wykrzacza. Błędy wskazywały jasno na to, że includowane
były pliki z obu wersji freetype'a. Naszukawszy się chwile narzędzia do
parsowania plików *.c i robienia drzewka includeów (zna ktoś coś takiego?)
wziąłem się na sposób i użyłem do tego celu strace'a. Rzeczywiście okazało
się, że są używane nagłówki z obu wersji biblioteki. Pytanie: dlaczego?
Nie musiałem długo szukać by znaleźć odpowiedź.
bash-2.05# pwd
/usr/include/freetype2
bash-2.05# grep freetype/ -r .|head
./freetype/config/ftconfig.h: /* The build directory is usually
`freetype/builds/<system>', and */
./freetype/config/ftconfig.h: /* This ANSI version should stay in
`include/freetype/config'. */
./freetype/config/ftconfig.h: /* `freetype/builds/<system>' directory, and
edit it to port the engine. */
./freetype/config/ftheader.h:#define FT_CONFIG_CONFIG_H
<freetype/config/ftconfig.h>
./freetype/config/ftheader.h:#define FT_CONFIG_OPTIONS_H
<freetype/config/ftoption.h>
./freetype/config/ftheader.h:#define FT_CONFIG_MODULES_H
<freetype/config/ftmodule.h>
./freetype/config/ftheader.h:#define FT_FREETYPE_H <freetype/freetype.h>
./freetype/config/ftheader.h:#define FT_ERRORS_H <freetype/fterrors.h>
./freetype/config/ftheader.h:#define FT_MODULE_ERRORS_H <freetype/ftmoderr.h>
./freetype/config/ftheader.h:#define FT_SYSTEM_H <freetype/ftsystem.h>
Dla mnie jest jasne, że autorzy freetype'a nakazali ludziom używania notacji
w stylu #include FT_FREETYPE_H zamiast bezpośredniego odwoływania się do tych
plików. I tu się rodzi problem. Każdy normalny program podczas kompilacji
szuka swoich nagłówków w /usr/include. A co się stanie jeśli includujemy plik
<freetype/freetype.h>? Ano includujemy plik /usr/include/freetype/freetype.h
należący do freetype1 i tym samym nic się nie kompiluje.
Teraz wyjścia są dwa: albo zmienimy miejsce w którym znajduje się freetype1
(/usr/include/freetype) psując przy okazji dużo rzeczy (i tutaj chciałbym się
dowiedzieć, czy ktoś ma jakieś informacje o tym jakie położenie tych plików
sugerują sami autorzy), albo w powyższych #defineach pozamieniam
<freetype/jakiśplik.h> na <freetype2/freetype/jakiśplik.h>. *Teoretycznie*
nie powinno to niczego popsuć bo z założenia i tak wszystkie programy podczas
kompilacji przeszukują /usr/include i powinny trafić na odpowiednie pliki. No
ale niby z założenia mamy mieć PLD 1.0 i nie chcę ryzykować popsucia
czegokolwiek. No, a poza tym jest to dosyć duża zmiana o której zpewnością
chcieli by wiedzieć sami autorzy.
Komentarze/sugestie/whatever?
--
Każdy człowiek, który naprawdę żyje, nie ma charakteru, nie może go mieć.
Charakter jest zawsze martwy, otacza cię zgniła struktura przeniesiona z
przeszłości. Jeżeli działasz zgodnie z charakterem wtedy nie działasz w ogóle
- jedynie mechanicznie reagujesz. { Osho }
Więcej informacji o liście dyskusyjnej pld-devel-pl