Changes between Initial Version and Version 1 of npl/X/libglew


Ignore:
Timestamp:
08/08/08 00:10:42 (16 years ago)
Author:
trac
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • npl/X/libglew

    v1 v1  
     1Downloaden en standaard buildscript proberen:
     2{{{
     3psy npl # mkdir X/libglew
     4psy npl # cd X/libglew/
     5psy libglew # wget http://dfn.dl.sourceforge.net/sourceforge/glew/glew-1.4.0-src.tgz
     6--14:24:01--  http://dfn.dl.sourceforge.net/sourceforge/glew/glew-1.4.0-src.tgz
     7           => `glew-1.4.0-src.tgz'
     8Resolving dfn.dl.sourceforge.net... 194.95.236.6
     9Connecting to dfn.dl.sourceforge.net|194.95.236.6|:80... connected.
     10HTTP request sent, awaiting response... 200 OK
     11Length: 360,075 (352K) [application/x-gzip]
     12
     13100%[===============================================================================================================>] 360,075      548.15K/s
     14
     1514:24:03 (546.75 KB/s) - `glew-1.4.0-src.tgz' saved [360075/360075]
     16
     17psy libglew # cp ../../packagename.SlackBuild.example libglew.SlackBuild
     18psy libglew # cd ../..
     19psy npl # ./rebuildcheck X/libglew/libglew.SlackBuild
     20REBUILD REQUIRED: ./glew-1.4.0-src.tgz has changed!
     21REBUILDING /home/psy/syn3/npl/X/libglew/libglew.SlackBuild:
     22Buildroot up-to-date check: ............................................................................................................DONE
     23Buildroot /home/psy/syn3/builder/buildroot0 repareren/syncen...OK
     24/home/psy/syn3/npl/X/libglew word gekopieerd naar werkdirectory /home/psy/syn3/builder/buildroot0/tmp/build
     25*** Chroot naar /home/psy/syn3/builder/buildroot0 en starten van libglew.SlackBuild in /tmp/build:
     26/dev/pts/43: No such file or directory
     271 /tmp/build > basename ./libglew.SlackBuild
     281 /tmp/build > sed s/.SlackBuild//
     2926 /tmp/build > NAME=libglew
     301 /tmp/build > ls '*.tar.*'
     31ls: *.tar.*: No such file or directory
     3229 /tmp/build > SRC_ARC=
     331 /tmp/build > echo
     341 /tmp/build > sed 's/.*-//g'
     351 /tmp/build > sed 's/\.tar\..*$//g'
     3632 /tmp/build > VER=
     371 /tmp/build > echo
     381 /tmp/build > sed 's/\.tar\..*$//g'
     3935 /tmp/build > SRC_DIR=
     401 /tmp/build > arch
     4139 /tmp/build > ARCH=i586
     4247 /tmp/build > syn3_unpack
     43Usage: /bin/syn3_unpack <archive>
     44Unpacks specified archive in current directory.
     45Automaticly determins how to unpack the file.
     4647 /tmp/build > exit 1
     47*** Er ging iets mis tijdens het bakken in de buildroot!
     48}}}
     49
     50syn3_unpack herkend geen .tgz files, dus rename file naar .tar.gz met een nette naam zonder src erin:
     51{{{
     52psy npl # cd X/libglew/
     53psy libglew # mv glew-1.4.0-src.tgz glew-1.4.0.tar.gz
     54psy libglew # cd ../..
     55psy npl # ./rebuildcheck X/libglew/libglew.SlackBuild
     56...
     5717 /tmp/build > cd glew-1.4.0
     58/bin/syn3_build_automake: line 17: cd: glew-1.4.0: No such file or directory
     59
     60}}}
     61
     62In de source tarbal bevind zich een directory ''glew'', zonder versie nummer. Dus is het nodig SRC_DIR aan te passen in buildscript:
     63{{{
     64psy npl # mcedit X/libglew/libglew.SlackBuild
     65
     66psy npl # ./rebuildcheck X/libglew/libglew.SlackBuild
     67...
     6818 /tmp/build/glew > ./configure --prefix=/usr --sysconfdir=/etc
     69/bin/syn3_build_automake: line 18: ./configure: No such file or directory
     70}}}
     71
     72Aiii...er is blijkbaar geen ./configure. We jumpen in de buildroot en kijken hoe we het pakketje moeten builden:
     73{{{
     74psy npl # chroot ../builder/buildroot0/
     75stderr is not a tty - where are you?
     76[Syn-3] root@darkstar.example.net /# ls
     77bin/  boot/  dev/  etc/  home/  lib/  mnt/  proc/  root/  sbin/  service/  sys/  tmp/  usr/  var/
     78[Syn-3] root@darkstar.example.net /# cd /tmp/build/glew
     79glew               glew-1.4.0.tar.gz
     80[Syn-3] root@darkstar.example.net /# cd /tmp/build/glew
     81[Syn-3] root@darkstar.example.net /tmp/build/glew# ls
     82Makefile  README.txt  auto/  bin/  build/  config/  doc/  include/  lib/  src/
     83[Syn-3] root@darkstar.example.net /tmp/build/glew# cat README.txt
     84See doc/index.html for more information.
     85
     86If you downloaded the tarball from the GLEW website, you just need to:
     87
     88    Unix:
     89
     90        make
     91
     92    Windows:
     93
     94        use the project file in build/vc6/
     95
     96If you wish to build GLEW from scratch (update the extension data from
     97the net or add your own extension information), you need a Unix
     98environment (including wget, perl, and GNU make).  The extension data
     99is regenerated from the top level source directory with:
     100
     101        make extensions
     102[Syn-3] root@darkstar.example.net /tmp/build/glew# make
     103cc -O2 -Wall -W -Iinclude  -fPIC  -o src/glew.pic_o -c src/glew.c
     104cc -O2 -Wall -W -Iinclude   -o src/glew.o -c src/glew.c
     105In file included from src/glew.c:32:
     106include/GL/glew.h:1123:20: GL/glu.h: No such file or directory
     107}}}
     108
     109We hebben de opengl library nodig om tegen te compilen. Dit is libmesa. Als we in de makefile kijken zien we dit:
     110{{{
     111...
     112GLEW_DEST ?= /usr
     113BINDIR ?= $(GLEW_DEST)/bin
     114LIBDIR ?= $(GLEW_DEST)/lib
     115INCDIR ?= $(GLEW_DEST)/include/GL
     116...
     117install: all
     118# directories
     119        $(INSTALL) -d -m 0755 $(BINDIR)
     120        $(INSTALL) -d -m 0755 $(INCDIR)
     121        $(INSTALL) -d -m 0755 $(LIBDIR)
     122...
     123}}}
     124
     125We hopen dat ''make && make GLEW_DEST=/tmp/pkg/usr install'' het pakketje build en op de goede plek pleurt, en voegen #NEED:libmesa toe aan de slackbuild:
     126{{{
     127In de slackbuild, vervangen we syn3_build_automake door wat andere regels:
     128build and install sourcefiles
     129#(use one of the other syn3_build_* scripts when needed)
     130export CONFIGURE_OPTS=""
     131export MAKE_OPTS=""
     132#export NOTEST=1
     133#syn3_build_automake $SRC_DIR /tmp/pkg || exit 1
     134pushd $SRC_DIR || exit 1
     135make -j1 || exit 1
     136make -j1 GLEW_DIR=/tmp/pkg/usr install || exit 1
     137popd
     138}}}
     139
     140Deze NEED zorgt ervoor dat libmesa en alle builddependencies hiervan in de buildroot geinstalled worden.
     141
     142Hierna build hij nog niet, en zeurt hij nog, terwijl de glu.h wel in de buildroot staat:
     143{{{
     144...
     145include/GL/glew.h:1123:20: GL/glu.h: No such file or directory
     146make: *** [src/glew.pic_o] Error 1
     14761 /tmp/build/glew > exit 1
     148*** Er ging iets mis tijdens het bakken in de buildroot!
     149Error while rebuilding /home/psy/syn3/npl/X/libglew/libglew.SlackBuild!
     150psy npl # chroot ../builder/buildroot0/
     151stderr is not a tty - where are you?
     152[Syn-3] root@darkstar.example.net /# find / |grep glu.h
     153/usr/X11R6/include/GL/glu.h
     154/usr/src/Mesa-6.5/docs/glu.html
     155/usr/src/Mesa-6.5/include/GL/glu.h
     156}}}
     157
     158Dit betekend dat de makefile niet op de goede plek kijkt. Dit noemen we vanaf nu officieel een 'kutpakket' om te compilen. ;)
     159
     160We kunnen verder kutten, maar es is veel kans dat de mensen van gentoo of debian al een patch hebben hiervoor. ff zoeken...
     161Mijn gentoo was nog bij 1.3.x, en van debian vond ik deze patch via google: http://ftp.debian.org/debian/pool/main/g/glew/glew_1.4.0-2.diff.gz
     162
     163Maar dit hielp ook niks, even googlen op de foutmelding...via http://www.google.com/search?hl=en&safe=off&q=glew++%2B+GL%2Fglu.h%3A+No+such+file+or+directory&btnG=Search vind je:
     164{{{
     165Installation problem - Jahshaka Forums
     166include/GL/glew.h:1103:20: error: GL/glu.h: No such file or directory .... Is GLEW installed in /usr/include/GL? If installing openlibraries from cvs you ...
     167www.jahshaka.org/forum/installation-problem-t629.html - 81k - Cached - Similar pages
     168}}}
     169
     170Klinkt logisch, GL/glu.h moet gewoon in /usr/include staan ipv /usr/X11/include. Is dit een fout in een source pacakge van ons of is glew gewoon krikky? We maken ons niet druk en proberen het ff snel met een symlink in de buildroot:
     171{{{
     172psy npl # chroot ../builder/buildroot0/
     173stderr is not a tty - where are you?
     174[Syn-3] root@darkstar.example.net /# cd /tmp/build/glew
     175[Syn-3] root@darkstar.example.net /tmp/build/glew# ln -s /usr/X11/include/GL /usr/include/GL
     176[Syn-3] root@darkstar.example.net /tmp/build/glew# make -j1
     177cc -O2 -Wall -W -Iinclude  -fPIC  -o src/glew.pic_o -c src/glew.c
     178cc -shared -Wl,-soname=libGLEW.so.1.4 -o lib/libGLEW.so.1.4.0 src/glew.pic_o  -lXmu -lXi -lGLU -lGL -lXext -lX11
     179/usr/lib/gcc-lib/i486-slackware-linux/3.3.4/../../../../i486-slackware-linux/bin/ld: cannot find -lXmu
     180collect2: ld returned 1 exit status
     181make: *** [lib/libGLEW.so.1.4.0] Error 1
     182}}}
     183
     184We komen weer een stap verder! Nu zijn we libXmu nog nodig zo te zien. We zoeken even in de filelist waar dat ding staat:
     185{{{
     186psy npl # ./findpkg libXmu
     187Package libXmu not found!
     188psy npl # cat .tmp/files|grep -i libXmu
     189/home/psy/syn3/npl/X/xorg/lib/mods/libXmu-X11R7.1-1.0.1.tar.gz
     190}}}
     191
     192Ok, hij hoort onderdeel te zijn van xorg_lib, maar deze hebben we al. (kijk maar naar de output van rebuildcheck)
     193Dit komt omdat je normaal ook /etc/xorg_build.conf moet sourcen. Deze set een aantal omgevings variabellen, zodat bepaalde libraries gevonden kunnen worden. We passen de slackbuild aan zodat hij er ongeveer zo uit ziet en rebuilden nogmaals:
     194
     195{{{
     196#syn3_build_automake $SRC_DIR /tmp/pkg || exit 1
     197source /etc/xorg_build.conf || exit 1
     198ln -s /usr/X11/include/GL /usr/include/GL || exit 1
     199pushd $SRC_DIR || exit 1
     200make -j1 || exit 1
     201make -j1 GLEW_DIR=/tmp/pkg/usr install || exit 1
     202popd
     203}}}
     204
     205rebuild:
     206{{{
     20762 /tmp/build/glew > make -j1
     208cc -O2 -Wall -W -Iinclude  -fPIC  -o src/glew.pic_o -c src/glew.c
     209cc -shared -Wl,-soname=libGLEW.so.1.4 -o lib/libGLEW.so.1.4.0 src/glew.pic_o -L/usr/X11R6/lib -lXmu -lXi -lGLU -lGL -lXext -lX11
     210ln -sf libGLEW.so.1.4.0 lib/libGLEW.so.1.4
     211ln -sf libGLEW.so.1.4.0 lib/libGLEW.so
     212cc -O2 -Wall -W -Iinclude   -o src/glew.o -c src/glew.c
     213ar cr lib/libGLEW.a src/glew.o
     214cc -O2 -Wall -W -Iinclude  -o bin/glewinfo src/glewinfo.c -Llib -Wl,-Bdynamic -lGLEW -L/usr/X11R6/lib -lXmu -lXi -lGLU -lGL -lXext -lX11
     215cc -O2 -Wall -W -Iinclude  -o bin/visualinfo src/visualinfo.c -Llib -Wl,-Bdynamic -lGLEW -L/usr/X11R6/lib -lXmu -lXi -lGLU -lGL -lXext -lX11
     21663 /tmp/build/glew > make -j1 GLEW_DIR=/tmp/pkg/usr install
     217install -d -m 0755 /usr/bin
     218install -d -m 0755 /usr/include/GL
     219install -d -m 0755 /usr/lib
     220install -s -m 0644 lib/libGLEW.so.1.4.0 /usr/lib/
     221ln -sf libGLEW.so.1.4.0 /usr/lib/libGLEW.so.1.4
     222install -m 0644 include/GL/wglew.h /usr/include/GL/
     223install -m 0644 include/GL/glew.h /usr/include/GL/
     224install -m 0644 include/GL/glxew.h /usr/include/GL/
     225install -s -m 0644 lib/libGLEW.a /usr/lib/
     226ln -sf libGLEW.so.1.4.0 /usr/lib/libGLEW.so
     227install -s -m 0755 bin/glewinfo bin/visualinfo /usr/bin/
     22864 /tmp/build/glew > popd
     229/tmp/build
     23068 /tmp/build > syn3_strip /tmp/pkg
     231/bin/syn3_strip: line 11: cd: /tmp/pkg: No such file or directory
     23268 /tmp/build > exit 1
     233*** Er ging iets mis tijdens het bakken in de buildroot!
     234}}}
     235
     236W00t! We zien dat het pakketje wel build, maar het installen gaat nog naar de verkeerde plek. Oops, we gebruiken GLEW_DIR, terwijl het GLEW_DEST moet zijn. (Dit had ik dus verkeerd gelezen ofzo) Dit corrigeren even en rebuilden nogmaals:
     237{{{
     23863 /tmp/build/glew > make -j1 GLEW_DEST=/tmp/pkg/usr install
     239install -d -m 0755 /tmp/pkg/usr/bin
     240install -d -m 0755 /tmp/pkg/usr/include/GL
     241install -d -m 0755 /tmp/pkg/usr/lib
     242install -s -m 0644 lib/libGLEW.so.1.4.0 /tmp/pkg/usr/lib/
     243ln -sf libGLEW.so.1.4.0 /tmp/pkg/usr/lib/libGLEW.so.1.4
     244install -m 0644 include/GL/wglew.h /tmp/pkg/usr/include/GL/
     245install -m 0644 include/GL/glew.h /tmp/pkg/usr/include/GL/
     246install -m 0644 include/GL/glxew.h /tmp/pkg/usr/include/GL/
     247install -s -m 0644 lib/libGLEW.a /tmp/pkg/usr/lib/
     248ln -sf libGLEW.so.1.4.0 /tmp/pkg/usr/lib/libGLEW.so
     249install -s -m 0755 bin/glewinfo bin/visualinfo /tmp/pkg/usr/bin/
     25064 /tmp/build/glew > popd
     251/tmp/build
     25268 /tmp/build > syn3_strip /tmp/pkg
     25371 /tmp/build > syn3_move_dev /tmp/pkg /tmp/pkgdev
     25472 /tmp/build > syn3_makepkg /tmp/pkgdev libglew_dev 1.4.0 i586
     255tar-1.13: libglew_dev.pkg.tar is the archive; not dumped
     25675 /tmp/build > syn3_makepkg /tmp/pkg libglew 1.4.0 i586
     257tar-1.13: libglew.pkg.tar is the archive; not dumped
     258*** Build gelukt.
     259* Packages terugmoven naar originele directory..
     260/home/psy/syn3/builder/buildroot0/tmp/build/libglew.arch /home/psy/syn3/builder/buildroot0/tmp/build/libglew_dev.arch ...
     261/home/psy/syn3/builder/buildroot0/tmp/build/libglew.version /home/psy/syn3/builder/buildroot0/tmp/build/libglew_dev.version ...
     262/home/psy/syn3/builder/buildroot0/tmp/build/libglew.pkg /home/psy/syn3/builder/buildroot0/tmp/build/libglew_dev.pkg ...
     263
     264* Klaar ja!
     265Updating md5 for /home/psy/syn3/npl/X/libglew/libglew.SlackBuild...
     266Updating dependency information for /home/psy/syn3/npl/X/libglew/libglew.SlackBuild...
     267All rebuilds completed.
     268}}}
     269
     270Nu word het hele process doorlopen en lijkt alles goed te gaan. Even in het gemaakte pakketjes kijken of alles goed lijkt:
     271{{{
     272psy npl # tar -tvzf X/libglew/libglew.pkg
     273drwxr-xr-x root/root         0 2007-08-25 16:01 ./
     274drwxr-xr-x root/root         0 2007-08-25 16:01 install/
     275-rw-r--r-- root/root       182 2007-08-25 16:01 install/doinst.sh
     276drwxr-xr-x root/root         0 2007-08-25 16:01 usr/
     277drwxr-xr-x root/root         0 2007-08-25 16:01 usr/lib/
     278-rw-r--r-- root/root    229040 2007-08-25 16:01 usr/lib/libGLEW.so.1.4.0
     279drwxr-xr-x root/root         0 2007-08-25 16:01 usr/bin/
     280-rwxr-xr-x root/root    198356 2007-08-25 16:01 usr/bin/glewinfo
     281-rwxr-xr-x root/root     10936 2007-08-25 16:01 usr/bin/visualinfo
     282psy npl # tar -tvzf X/libglew/libglew_dev.pkg
     283drwxr-xr-x root/root         0 2007-08-25 16:01 ./
     284drwxr-xr-x root/root         0 2007-08-25 16:01 usr/
     285drwxr-xr-x root/root         0 2007-08-25 16:01 usr/include/
     286drwxr-xr-x root/root         0 2007-08-25 16:01 usr/include/GL/
     287-rw-r--r-- root/root     41824 2007-08-25 16:01 usr/include/GL/wglew.h
     288-rw-r--r-- root/root    520342 2007-08-25 16:01 usr/include/GL/glew.h
     289-rw-r--r-- root/root     46077 2007-08-25 16:01 usr/include/GL/glxew.h
     290drwxr-xr-x root/root         0 2007-08-25 16:01 usr/lib/
     291-rw-r--r-- root/root    114412 2007-08-25 16:01 usr/lib/libGLEW.a
     292
     293}}}
     294
     295Dit ziet er keurig uit...een mooie SO file en een keurig development pakketje met headers en de .a file.
     296
     297Nu nog toevoegen aan SVN en committen, en dan is dit pakketje klaar voor gebruik:
     298{{{
     299psy npl # svn add X/libglew
     300A         X/libglew
     301A         X/libglew/libglew.SlackBuild
     302A  (bin)  X/libglew/glew-1.4.0.tar.gz
     303A         X/libglew/libglew.arch
     304A         X/libglew/libglew_dev.arch
     305A         X/libglew/libglew.version
     306A         X/libglew/libglew_dev.version
     307A  (bin)  X/libglew/libglew.pkg
     308A  (bin)  X/libglew/libglew_dev.pkg
     309A         X/libglew/libglew.md5
     310psy npl # svn commit -m 'libglew, nodig voor openmsx' X/libglew
     311Adding         X/libglew
     312Adding  (bin)  X/libglew/glew-1.4.0.tar.gz
     313Adding         X/libglew/libglew.SlackBuild
     314Adding         X/libglew/libglew.arch
     315Adding         X/libglew/libglew.md5
     316Adding  (bin)  X/libglew/libglew.pkg
     317Adding         X/libglew/libglew.version
     318Adding         X/libglew/libglew_dev.arch
     319Adding  (bin)  X/libglew/libglew_dev.pkg
     320Adding         X/libglew/libglew_dev.version
     321Transmitting file data .........
     322Committed revision 3430.
     323}}}
     324
     325Nu kan ik verder met de volgende dependency voor openmsx.