gnustep-backend-art - bug w pakiecie

Radosław Kintzi lists w eth0.prv.pl
Czw, 24 Lip 2003, 12:59:46 CEST


Zbudowałem GNUstepa i rozpocząłem testowanie.
Pierwszy problem, to brak fontów w aplikacjach (tych z gnustep-exaples,
oraz innych z netu). Ten błąd jest znany (było o nim na help-gnustep@)
i idąc za radą tam podaną przeszedłem na backend-art, odchodząc do 
buga, o którym chciałem pisać:

$ defaults write NSGlobalDomain GSBackend libgnustep-back-art
$ openapp Calculator.app
objc runtime: cannot find class XGContext
Przerwane

Poprawiłem speca, tak by budował całość tylko raz z --enable-graphics=art 
i po przeinstalowaniu pakietu gnustep-backend-art zaczęło działać zgodnie 
z oczekiwaniami.

Przyjrzałem log z budowania (orginalny spec). Oto wyniki śledztwa:
Executing(%build):
(...)
make[2]: Leaving directory `/home/users/builder/rpm/BUILD/gnustep-back-0
.8.7/Source/art'
Making all for bundle libgnustep-back-art...
/usr/lib/GNUstep/System/Library/Makefiles/mkinstalldirs libgnustep-back-
art.bundle/ix86/linux-gnu/gnu-gnu-gnu
athlon-pld-linux-gcc GSBackend.m -c \
      -MMD -MP -Wall -DGNUSTEP -DGNUSTEP_BASE_LIBRARY=1 -DGNU_GUI_LIBRAR
Y=1 -DGNU_RUNTIME=1 -DGNUSTEP_BASE_LIBRARY=1 -fPIC -DGSWARN -DGSDIAGNOSE
 -O2 -march=athlon -fno-strict-aliasing -fgnu-runtime -fconstant-string-
class=NSConstantString -I../Headers -Iix86/linux-gnu -I/usr/include/liba
rt-2.0 -I/usr/include/freetype2 -I/usr/X11R6/include -I. -I/home/users/b
uilder/GNUstep/Library/Headers/gnustep -I/usr/lib/GNUstep/Local/Library/
Headers/gnustep -I/usr/lib/GNUstep/Network/Library/Headers/gnustep -I/us
r/lib/GNUstep/System/Library/Headers/gnustep -I/home/users/builder/GNUst
ep/Library/Headers/ix86/linux-gnu -I/home/users/builder/GNUstep/Library/
Headers -I/usr/lib/GNUstep/Local/Library/Headers/ix86/linux-gnu -I/usr/l
ib/GNUstep/Local/Library/Headers -I/usr/lib/GNUstep/Network/Library/Head
ers/ix86/linux-gnu -I/usr/lib/GNUstep/Network/Library/Headers -I/usr/lib
/GNUstep/System/Library/Headers/ix86/linux-gnu -I/usr/lib/GNUstep/System
/Library/Headers \
       -o shared_obj/ix86/linux-gnu/gnu-gnu-gnu/GSBackend.o
athlon-pld-linux-gcc -shared  -rdynamic      -s  \
        -o libgnustep-back-art.bundle/ix86/linux-gnu/gnu-gnu-gnu/libgnus
tep-back-art \
        shared_obj/ix86/linux-gnu/gnu-gnu-gnu/GSBackend.o gsc/shared_obj
/ix86/linux-gnu/gnu-gnu-gnu/subproject.o x11/shared_obj/ix86/linux-gnu/g
nu-gnu-gnu/subproject.o art/shared_obj/ix86/linux-gnu/gnu-gnu-gnu/subpro
ject.o \
         -L/usr/lib -L/usr/X11R6/lib -L/home/users/builder/GNUstep/Libra
ry/Libraries/ix86/linux-gnu/gnu-gnu-gnu -L/home/users/builder/GNUstep/Li
brary/Libraries/ix86/linux-gnu -L/usr/lib/GNUstep/Local/Library/Librarie
s/ix86/linux-gnu/gnu-gnu-gnu -L/usr/lib/GNUstep/Local/Library/Libraries/
ix86/linux-gnu -L/usr/lib/GNUstep/Network/Library/Libraries/ix86/linux-g
nu/gnu-gnu-gnu -L/usr/lib/GNUstep/Network/Library/Libraries/ix86/linux-g
nu -L/usr/lib/GNUstep/System/Library/Libraries/ix86/linux-gnu/gnu-gnu-gn
u -L/usr/lib/GNUstep/System/Library/Libraries/ix86/linux-gnu -L/usr/lib 
-lart_lgpl_2 -lm -lfreetype -lz -lGL -lXft -lwraster -ltiff -lXpm -lHerm
es -lpng -lz -ljpeg -lungif -lXext -lX11 -lm -lfontconfig 



Zatem wydaje się, ze łączenie libgnustep-back-art odbywa się w %build,
ale z drugiej strony:


Executing(%install): 
(...)
+ /usr/bin/make install \
  GNUSTEP_INSTALLATION_DIR=/home/users/builder/tmp/gnustep \
  -back-0.8.7-root-builder/usr/lib/GNUstep/System BUILD_GRAPHICS=art \
  BACKEND_NAME=back-art
Making all in Source...
make[1]: Entering directory
`/home/users/builder/rpm/BUILD/gnustep-back-0.8.7/Source'
Making all in subprojects of bundle libgnustep-back-art...
make[2]: Entering directory
`/home/users/builder/rpm/BUILD/gnustep-back-0.8.7/Source/gsc'
Making all for subproject gsc...
make[3]: Nothing to be done for `internal-subproject-all'.
make[2]: Leaving directory
`/home/users/builder/rpm/BUILD/gnustep-back-0.8.7/Source/gsc'

(...)


make[2]: Entering directory 
 `/home/users/builder/rpm/BUILD/gnustep-back-0.8.7/Source/art'
Making all for subproject art...
make[3]: Nothing to be done for `internal-subproject-all'.
make[2]: Leaving directory 
 `/home/users/builder/rpm/BUILD/gnustep-back-0.8.7/Source/art'
Making all for bundle libgnustep-back-art...
 Linking bundle libgnustep-back-art ...
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 Copying resources from subprojects into the bundle wrapper...
make[1]: Leaving directory
`/home/users/builder/rpm/BUILD/gnustep-back-0.8.7/Source'


To łączenie  libgnustep-back-art (o ile faktycznie ma tutaj miejsce) jest 
wykonywane po przebudowaniu całości z --enable-graphics=xlib, czyli w drzewie, 
gdzie .o są przygotowane dla libgnustep-back.

Zrobiłem jeszcze test:
$ rpmbuild -bc gnustep-back.spec > /dev/null 2>&1

$ stat ../BUILD/gnustep-back-0.8.7/Source/libgnustep-back-art.bundle/ix86/linux-gnu/gnu-gnu-gnu/libgnustep-back-art

  Size: 513852          Blocks: 1008       IO Block: 4096   zwykły plik
Device: 307h/775d       Inode: 12592941    Links: 1    
Access: (0755/-rwxr-xr-x)  Uid: (  504/   radek)   Gid: ( 1000/   users)
Access: 2003-07-24 12:47:37.000000000 +0200
Modify: 2003-07-24 12:47:37.000000000 +0200
Change: 2003-07-24 12:47:37.000000000 +0200

$ rpmbuild -bi --short-circuit gnustep-back.spec > /dev/null 2>&1

$ stat ../BUILD/gnustep-back-0.8.7/Source/libgnustep-back-art.bundle/ix86/linux-gnu/gnu-gnu-gnu/libgnustep-back-art

  Size: 513852          Blocks: 1008       IO Block: 4096   zwykły plik
Device: 307h/775d       Inode: 12592941    Links: 1    
Access: (0755/-rwxr-xr-x)  Uid: (  504/   radek)   Gid: ( 1000/   users)
Access: 2003-07-24 12:49:34.000000000 +0200
Modify: 2003-07-24 12:49:33.000000000 +0200

Wydaje się, że w %install następuje ponowne łączenie i to jest powodem tego,
że backend-art jest nieużywalny.

Nie testowałem jak jest w przypadku libgnustep-back-xdps, ale
podejrzewam, że mogą być podobne szopki.

Możliwości są dwie:
1. Przygotować łatę na źródła, poprawiającą instalację (tego się nie 
podejmuje, bo z gnustepem dopiero zaczynam)
2. Poprawić speca, tak by budował dla trzech backendów w trzech różnych 
katalogach w BUILD i z nich instalował (to mogę zrobić i jeżeli nie
będzie lepszych rozwiązań zrobię)

Radek

-- 
Radosław Kintzi
mailto:radzio w pld-linux.org
gg:2199600



Więcej informacji o liście dyskusyjnej pld-devel-pl