Downloaden en standaard buildscript proberen:
psy npl # mkdir X/libglew psy npl # cd X/libglew/ psy libglew # wget http://dfn.dl.sourceforge.net/sourceforge/glew/glew-1.4.0-src.tgz --14:24:01-- http://dfn.dl.sourceforge.net/sourceforge/glew/glew-1.4.0-src.tgz => `glew-1.4.0-src.tgz' Resolving dfn.dl.sourceforge.net... 194.95.236.6 Connecting to dfn.dl.sourceforge.net|194.95.236.6|:80... connected. HTTP request sent, awaiting response... 200 OK Length: 360,075 (352K) [application/x-gzip] 100%[===============================================================================================================>] 360,075 548.15K/s 14:24:03 (546.75 KB/s) - `glew-1.4.0-src.tgz' saved [360075/360075] psy libglew # cp ../../packagename.SlackBuild.example libglew.SlackBuild psy libglew # cd ../.. psy npl # ./rebuildcheck X/libglew/libglew.SlackBuild REBUILD REQUIRED: ./glew-1.4.0-src.tgz has changed! REBUILDING /home/psy/syn3/npl/X/libglew/libglew.SlackBuild: Buildroot up-to-date check: ............................................................................................................DONE Buildroot /home/psy/syn3/builder/buildroot0 repareren/syncen...OK /home/psy/syn3/npl/X/libglew word gekopieerd naar werkdirectory /home/psy/syn3/builder/buildroot0/tmp/build *** Chroot naar /home/psy/syn3/builder/buildroot0 en starten van libglew.SlackBuild in /tmp/build: /dev/pts/43: No such file or directory 1 /tmp/build > basename ./libglew.SlackBuild 1 /tmp/build > sed s/.SlackBuild// 26 /tmp/build > NAME=libglew 1 /tmp/build > ls '*.tar.*' ls: *.tar.*: No such file or directory 29 /tmp/build > SRC_ARC= 1 /tmp/build > echo 1 /tmp/build > sed 's/.*-//g' 1 /tmp/build > sed 's/\.tar\..*$//g' 32 /tmp/build > VER= 1 /tmp/build > echo 1 /tmp/build > sed 's/\.tar\..*$//g' 35 /tmp/build > SRC_DIR= 1 /tmp/build > arch 39 /tmp/build > ARCH=i586 47 /tmp/build > syn3_unpack Usage: /bin/syn3_unpack <archive> Unpacks specified archive in current directory. Automaticly determins how to unpack the file. 47 /tmp/build > exit 1 *** Er ging iets mis tijdens het bakken in de buildroot!
syn3_unpack herkend geen .tgz files, dus rename file naar .tar.gz met een nette naam zonder src erin:
psy npl # cd X/libglew/ psy libglew # mv glew-1.4.0-src.tgz glew-1.4.0.tar.gz psy libglew # cd ../.. psy npl # ./rebuildcheck X/libglew/libglew.SlackBuild ... 17 /tmp/build > cd glew-1.4.0 /bin/syn3_build_automake: line 17: cd: glew-1.4.0: No such file or directory
In de source tarbal bevind zich een directory glew, zonder versie nummer. Dus is het nodig SRC_DIR aan te passen in buildscript:
psy npl # mcedit X/libglew/libglew.SlackBuild psy npl # ./rebuildcheck X/libglew/libglew.SlackBuild ... 18 /tmp/build/glew > ./configure --prefix=/usr --sysconfdir=/etc /bin/syn3_build_automake: line 18: ./configure: No such file or directory
Aiii...er is blijkbaar geen ./configure. We jumpen in de buildroot en kijken hoe we het pakketje moeten builden:
psy npl # chroot ../builder/buildroot0/ stderr is not a tty - where are you? [Syn-3] root@darkstar.example.net /# ls bin/ boot/ dev/ etc/ home/ lib/ mnt/ proc/ root/ sbin/ service/ sys/ tmp/ usr/ var/ [Syn-3] root@darkstar.example.net /# cd /tmp/build/glew glew glew-1.4.0.tar.gz [Syn-3] root@darkstar.example.net /# cd /tmp/build/glew [Syn-3] root@darkstar.example.net /tmp/build/glew# ls Makefile README.txt auto/ bin/ build/ config/ doc/ include/ lib/ src/ [Syn-3] root@darkstar.example.net /tmp/build/glew# cat README.txt See doc/index.html for more information. If you downloaded the tarball from the GLEW website, you just need to: Unix: make Windows: use the project file in build/vc6/ If you wish to build GLEW from scratch (update the extension data from the net or add your own extension information), you need a Unix environment (including wget, perl, and GNU make). The extension data is regenerated from the top level source directory with: make extensions [Syn-3] root@darkstar.example.net /tmp/build/glew# make cc -O2 -Wall -W -Iinclude -fPIC -o src/glew.pic_o -c src/glew.c cc -O2 -Wall -W -Iinclude -o src/glew.o -c src/glew.c In file included from src/glew.c:32: include/GL/glew.h:1123:20: GL/glu.h: No such file or directory
We hebben de opengl library nodig om tegen te compilen. Dit is libmesa. Als we in de makefile kijken zien we dit:
... GLEW_DEST ?= /usr BINDIR ?= $(GLEW_DEST)/bin LIBDIR ?= $(GLEW_DEST)/lib INCDIR ?= $(GLEW_DEST)/include/GL ... install: all # directories $(INSTALL) -d -m 0755 $(BINDIR) $(INSTALL) -d -m 0755 $(INCDIR) $(INSTALL) -d -m 0755 $(LIBDIR) ...
We 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:
In de slackbuild, vervangen we syn3_build_automake door wat andere regels: build and install sourcefiles #(use one of the other syn3_build_* scripts when needed) export CONFIGURE_OPTS="" export MAKE_OPTS="" #export NOTEST=1 #syn3_build_automake $SRC_DIR /tmp/pkg || exit 1 pushd $SRC_DIR || exit 1 make -j1 || exit 1 make -j1 GLEW_DIR=/tmp/pkg/usr install || exit 1 popd
Deze NEED zorgt ervoor dat libmesa en alle builddependencies hiervan in de buildroot geinstalled worden.
Hierna build hij nog niet, en zeurt hij nog, terwijl de glu.h wel in de buildroot staat:
... include/GL/glew.h:1123:20: GL/glu.h: No such file or directory make: *** [src/glew.pic_o] Error 1 61 /tmp/build/glew > exit 1 *** Er ging iets mis tijdens het bakken in de buildroot! Error while rebuilding /home/psy/syn3/npl/X/libglew/libglew.SlackBuild! psy npl # chroot ../builder/buildroot0/ stderr is not a tty - where are you? [Syn-3] root@darkstar.example.net /# find / |grep glu.h /usr/X11R6/include/GL/glu.h /usr/src/Mesa-6.5/docs/glu.html /usr/src/Mesa-6.5/include/GL/glu.h
Dit betekend dat de makefile niet op de goede plek kijkt. Dit noemen we vanaf nu officieel een 'kutpakket' om te compilen. ;)
We kunnen verder kutten, maar es is veel kans dat de mensen van gentoo of debian al een patch hebben hiervoor. ff zoeken... Mijn 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
Maar 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:
Installation problem - Jahshaka Forums include/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 ... www.jahshaka.org/forum/installation-problem-t629.html - 81k - Cached - Similar pages
Klinkt 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:
psy npl # chroot ../builder/buildroot0/ stderr is not a tty - where are you? [Syn-3] root@darkstar.example.net /# cd /tmp/build/glew [Syn-3] root@darkstar.example.net /tmp/build/glew# ln -s /usr/X11/include/GL /usr/include/GL [Syn-3] root@darkstar.example.net /tmp/build/glew# make -j1 cc -O2 -Wall -W -Iinclude -fPIC -o src/glew.pic_o -c src/glew.c cc -shared -Wl,-soname=libGLEW.so.1.4 -o lib/libGLEW.so.1.4.0 src/glew.pic_o -lXmu -lXi -lGLU -lGL -lXext -lX11 /usr/lib/gcc-lib/i486-slackware-linux/3.3.4/../../../../i486-slackware-linux/bin/ld: cannot find -lXmu collect2: ld returned 1 exit status make: *** [lib/libGLEW.so.1.4.0] Error 1
We komen weer een stap verder! Nu hebben we libXmu nog nodig zo te zien. We zoeken even in de filelist waar dat ding staat:
psy npl # ./findpkg libXmu Package libXmu not found! psy npl # cat .tmp/files|grep -i libXmu /home/psy/syn3/npl/X/xorg/lib/mods/libXmu-X11R7.1-1.0.1.tar.gz
Ok, hij hoort onderdeel te zijn van xorg_lib, maar deze hebben we al. (kijk maar naar de output van rebuildcheck) Dit 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:
#syn3_build_automake $SRC_DIR /tmp/pkg || exit 1 source /etc/xorg_build.conf || exit 1 ln -s /usr/X11/include/GL /usr/include/GL || exit 1 pushd $SRC_DIR || exit 1 make -j1 || exit 1 make -j1 GLEW_DIR=/tmp/pkg/usr install || exit 1 popd
rebuild:
62 /tmp/build/glew > make -j1 cc -O2 -Wall -W -Iinclude -fPIC -o src/glew.pic_o -c src/glew.c cc -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 ln -sf libGLEW.so.1.4.0 lib/libGLEW.so.1.4 ln -sf libGLEW.so.1.4.0 lib/libGLEW.so cc -O2 -Wall -W -Iinclude -o src/glew.o -c src/glew.c ar cr lib/libGLEW.a src/glew.o cc -O2 -Wall -W -Iinclude -o bin/glewinfo src/glewinfo.c -Llib -Wl,-Bdynamic -lGLEW -L/usr/X11R6/lib -lXmu -lXi -lGLU -lGL -lXext -lX11 cc -O2 -Wall -W -Iinclude -o bin/visualinfo src/visualinfo.c -Llib -Wl,-Bdynamic -lGLEW -L/usr/X11R6/lib -lXmu -lXi -lGLU -lGL -lXext -lX11 63 /tmp/build/glew > make -j1 GLEW_DIR=/tmp/pkg/usr install install -d -m 0755 /usr/bin install -d -m 0755 /usr/include/GL install -d -m 0755 /usr/lib install -s -m 0644 lib/libGLEW.so.1.4.0 /usr/lib/ ln -sf libGLEW.so.1.4.0 /usr/lib/libGLEW.so.1.4 install -m 0644 include/GL/wglew.h /usr/include/GL/ install -m 0644 include/GL/glew.h /usr/include/GL/ install -m 0644 include/GL/glxew.h /usr/include/GL/ install -s -m 0644 lib/libGLEW.a /usr/lib/ ln -sf libGLEW.so.1.4.0 /usr/lib/libGLEW.so install -s -m 0755 bin/glewinfo bin/visualinfo /usr/bin/ 64 /tmp/build/glew > popd /tmp/build 68 /tmp/build > syn3_strip /tmp/pkg /bin/syn3_strip: line 11: cd: /tmp/pkg: No such file or directory 68 /tmp/build > exit 1 *** Er ging iets mis tijdens het bakken in de buildroot!
W00t! 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:
63 /tmp/build/glew > make -j1 GLEW_DEST=/tmp/pkg/usr install install -d -m 0755 /tmp/pkg/usr/bin install -d -m 0755 /tmp/pkg/usr/include/GL install -d -m 0755 /tmp/pkg/usr/lib install -s -m 0644 lib/libGLEW.so.1.4.0 /tmp/pkg/usr/lib/ ln -sf libGLEW.so.1.4.0 /tmp/pkg/usr/lib/libGLEW.so.1.4 install -m 0644 include/GL/wglew.h /tmp/pkg/usr/include/GL/ install -m 0644 include/GL/glew.h /tmp/pkg/usr/include/GL/ install -m 0644 include/GL/glxew.h /tmp/pkg/usr/include/GL/ install -s -m 0644 lib/libGLEW.a /tmp/pkg/usr/lib/ ln -sf libGLEW.so.1.4.0 /tmp/pkg/usr/lib/libGLEW.so install -s -m 0755 bin/glewinfo bin/visualinfo /tmp/pkg/usr/bin/ 64 /tmp/build/glew > popd /tmp/build 68 /tmp/build > syn3_strip /tmp/pkg 71 /tmp/build > syn3_move_dev /tmp/pkg /tmp/pkgdev 72 /tmp/build > syn3_makepkg /tmp/pkgdev libglew_dev 1.4.0 i586 tar-1.13: libglew_dev.pkg.tar is the archive; not dumped 75 /tmp/build > syn3_makepkg /tmp/pkg libglew 1.4.0 i586 tar-1.13: libglew.pkg.tar is the archive; not dumped *** Build gelukt. * Packages terugmoven naar originele directory.. /home/psy/syn3/builder/buildroot0/tmp/build/libglew.arch /home/psy/syn3/builder/buildroot0/tmp/build/libglew_dev.arch ... /home/psy/syn3/builder/buildroot0/tmp/build/libglew.version /home/psy/syn3/builder/buildroot0/tmp/build/libglew_dev.version ... /home/psy/syn3/builder/buildroot0/tmp/build/libglew.pkg /home/psy/syn3/builder/buildroot0/tmp/build/libglew_dev.pkg ... * Klaar ja! Updating md5 for /home/psy/syn3/npl/X/libglew/libglew.SlackBuild... Updating dependency information for /home/psy/syn3/npl/X/libglew/libglew.SlackBuild... All rebuilds completed.
Nu word het hele process doorlopen en lijkt alles goed te gaan. Even in het gemaakte pakketjes kijken of alles goed lijkt:
psy npl # tar -tvzf X/libglew/libglew.pkg drwxr-xr-x root/root 0 2007-08-25 16:01 ./ drwxr-xr-x root/root 0 2007-08-25 16:01 install/ -rw-r--r-- root/root 182 2007-08-25 16:01 install/doinst.sh drwxr-xr-x root/root 0 2007-08-25 16:01 usr/ drwxr-xr-x root/root 0 2007-08-25 16:01 usr/lib/ -rw-r--r-- root/root 229040 2007-08-25 16:01 usr/lib/libGLEW.so.1.4.0 drwxr-xr-x root/root 0 2007-08-25 16:01 usr/bin/ -rwxr-xr-x root/root 198356 2007-08-25 16:01 usr/bin/glewinfo -rwxr-xr-x root/root 10936 2007-08-25 16:01 usr/bin/visualinfo psy npl # tar -tvzf X/libglew/libglew_dev.pkg drwxr-xr-x root/root 0 2007-08-25 16:01 ./ drwxr-xr-x root/root 0 2007-08-25 16:01 usr/ drwxr-xr-x root/root 0 2007-08-25 16:01 usr/include/ drwxr-xr-x root/root 0 2007-08-25 16:01 usr/include/GL/ -rw-r--r-- root/root 41824 2007-08-25 16:01 usr/include/GL/wglew.h -rw-r--r-- root/root 520342 2007-08-25 16:01 usr/include/GL/glew.h -rw-r--r-- root/root 46077 2007-08-25 16:01 usr/include/GL/glxew.h drwxr-xr-x root/root 0 2007-08-25 16:01 usr/lib/ -rw-r--r-- root/root 114412 2007-08-25 16:01 usr/lib/libGLEW.a
Dit ziet er keurig uit...een mooie SO file en een keurig development pakketje met headers en de .a file.
Nu nog toevoegen aan SVN en committen, en dan is dit pakketje klaar voor gebruik:
psy npl # svn add X/libglew A X/libglew A X/libglew/libglew.SlackBuild A (bin) X/libglew/glew-1.4.0.tar.gz A X/libglew/libglew.arch A X/libglew/libglew_dev.arch A X/libglew/libglew.version A X/libglew/libglew_dev.version A (bin) X/libglew/libglew.pkg A (bin) X/libglew/libglew_dev.pkg A X/libglew/libglew.md5 psy npl # svn commit -m 'libglew, nodig voor openmsx' X/libglew Adding X/libglew Adding (bin) X/libglew/glew-1.4.0.tar.gz Adding X/libglew/libglew.SlackBuild Adding X/libglew/libglew.arch Adding X/libglew/libglew.md5 Adding (bin) X/libglew/libglew.pkg Adding X/libglew/libglew.version Adding X/libglew/libglew_dev.arch Adding (bin) X/libglew/libglew_dev.pkg Adding X/libglew/libglew_dev.version Transmitting file data ......... Committed revision 3430.
Nu kan ik verder met de volgende dependency voor openmsx.