Comments: |
Aizraujošs (no, really, vēl jo vairāk ņemot vērā manu lispa ņūbismu, man pavisam noderīgi, uz katra soļa jaunas lietas) unsuccessa storijs, kas pagaidām aprāvies pie "The function CFFI-UFFI-COMPAT::CONVERT-FROM-UFFI-TYPE is undefined." no cl-sdl/ffi/uffi.
(Te: 64 bitu Archlinux ar sbcl un clbuildu, kas gan tikpat labi varēja nebūt: viņa uffi implementācija šķiet tā, kas traucē).
Mkey, esmu ticis galā ar clbuild, sapratis, ko un kā viņš dara, iemācījies to visu darīt ar rokām, etc, un tagad esmu nonācis pie tā, ka (imho) cl-sdl (un, attiecīgi, cl-sdl-opengl) konfliktē ar cl-opengl — šķiet, ka tapēc, ka abi vēlas izmantot opengl pakas nosaukumu kā aliasu.
Vopšem, 1. neatpazīst, kas clc ir par zvēru iekš graphics.lisp, iekomentēju tās rindiņas, 2. lai uzbuildotu machine.so, 64-bitu kaste lūdz -fPIC parametru, 3, Symbol "ORTHO-2D" not found in GLU package. is where i'm stuck.
Atcerējos, ka man ir virtuālā ubunta, un nolēmu paskatīties, kā tur lietas izskatās, un kapēc tur nekas negļuko. Protams, факинг шит, bet tā ir 64-bitu ubunta, un cl-abop krīt ar /usr/bin/ld: /tmp/cc1uUNwy.o: relocation R_X86_64_32 against `y_axis' can not be used when making a shared object; recompile with -fPIC. Domāju, uzlikt 32-bit ubuntu, vai iedziļināties dpkg pārveidošanās. Ne vienu, ne otru darīt īsti nevelk. (Tas nekas, ka es te tev dienasgrāmatu rakstu?)
Ok, ubuntu-9.04-i386 zem virtualboxa it is, un, pēc nelielas aizķeršanās pie kompilācijas (gād dēm jū, cl-sdl-opengl, ar kļūdu, kas jau aizskrollējās, bet vismaz tās ignorēšana neko netraucēja) ļāva beidzot palaist abopu. Strādā! Līdzīgi, kā teikās par pirkstu un zvaigznēm, man tagad vienalga interesē viņu iedarbināt natīvi nedebjāniskajā arklinuka vidē.
(Roze ir fantastiska, bet no compile.lisp komplicētības un saistītās add-rule elegances es vispār noelsos, tā teikt).
Starp citu, vai tas, ka applikācija, neko īpaši nedarot, vien zīmējot logu, vēlas 100% cpu, tas ir kaut kā labojami? Es pie tā jau saviebos cl-opengl piemērus skatoties; ja to varētu kaut kā daiļi apiet, tad es laikam justos omulīgāk.
| From: | snauts |
Date: | July 24th, 2009 - 11:22 am |
---|
| | | (Link) |
|
Es cl-sdl-opengl lietoju, jo debiānī nav cl-opengl paciņas. Man pašam cl-sdl-opengl nepatīk, tāpēc ka šis lieto uffi, itogo mana proga nestrādā ar clisp, ecl un cmucl.
Izskatās, ka tā visa SDL padarīšana jāiestiepj iekšā tajā machine.c un jāpieklapē cl-opengl.
clc ir common-lisp-controller (A very nice system for installing Common Lisp libraries and source on Debian, Fedora? and Gentoo linux systems.)
Vienīgais veids kā es varu uzreiz iedomāties, kā samazināt CPU loudu zīmējot logu ir limitēt frāme rāti. Vai arī tas nav normāli, ka loga pārzīmēšana prasa CPU?
Es priecājos par tavu atsaucību, jo man patiešām gribētos savu progu pataisīt portablāku.
Turpinot dienasgrāmatu, glu:ortho-2d provaido tikai debiāna patčs, nevis standarta cl-sdl-opengl, tapēc nācās savākt un uzlikt sev debiāna versiju. Rezultātā abop uzzīmēja melnu ekrānu, un tad nogāzās ar veco labo cffi-uffi-compat::convert-from-uffi-type undefined. Pēc ilgām mocībām sadraudzēt cffi un uffi (niķu pašā pamatā gan bija mani seni abop/*.fasl mapē ar man nevajadzīgām norādēm uz cffi-uffi-compat, kurus nebiju iztīrījis) —
SUCCESSSSSSS!!!!
Par cpu noslodzi, jā, taisnība, arī glxgears bez __GL_SYNC_TO_VBLANK rij visus pieejamos 100%.
uzliku lietotāj-lokālu cl-opengl uz ubuntu. tas bija 3x vieglāk, nekā dabūt vēsturisko cl-sdl ar debian-only patčiem un cīnīties ar uffi/cffi :) apt-get install darcs freeglut3 mkdir -p ~/.sbcl/{sources,systems} cd ~/.sbcl/sources darcs get http://common-lisp.net/project/cl-opengl/darcs/cl-opengl cl-opengl-darcs cd ~/.sbcl/systems for p in ~/.sbcl/sources/cl-opengl-darcs/*asd; do ln $p -s; done vissss sbcl (require :asdf) (require :cl-glut-examples) (cl-glut-examples::gears)
(nu tas, gadījumam, ja izdomāsi migrēt uz cl-opengl, lai aiztaupītu pūles)
| From: | snauts |
Date: | July 24th, 2009 - 05:02 pm |
---|
| | | (Link) |
|
Nu uz cl-opengl es jau esmu pārmigrējis, vēl tikai atliek tikt galā ar cl-sdl. Es vienkārši savās progas dirā uzrakstīju "darcs get ...cl-opengl" un pēc tam ar (require 'cl-opengl) man viss strādāja.
Hmmm, kas ir tā maģija, ka viņš (tev) atrod .asd paciņas citā mapītē? man darcs get .... cl-opengl / (require 'cl-opengl) nestrādā, Don't know how to require cl-opengl, jo asdf nezina, ka ./cl-opengl mapītē kaut kādi .asd faili varētu būt.
| From: | snauts |
Date: | July 24th, 2009 - 06:22 pm |
---|
| | | (Link) |
|
Pardon, es laikam pirms tam uztaisīju: mv cl-opengl/* .
Rau, un ja tu saliksi simlinkus uz *.asd failiem mapītē ~/.sbcl/systems/, tad tu varēsi requirot cl-opengl, lai kur viņš arī neatrastos, un nebūs source ar opengl sajaukta :)
| From: | snauts |
Date: | July 24th, 2009 - 09:48 pm |
---|
| | | (Link) |
|
Aha, bet debiānī ir /usr/share/common-lisp/, kur iet iekšā visu cl-* paciņu sources un sistēmas. Tāds .sbcl mājas dirā man nemaz nav.
Nu ja, /usr/share/common-lisp ir globālās datorkastes paciņas, ~/.sbcl/ ir tikai lietotājam: kudiš vieglāk, lai nav jāskrien pēc roota glabātāja, lai uzinstalētu cl-opengl. Tehniski, vietas, kur asdf meklē asd failus ir uzskaitītas asdf::*central-registry*, to var modificēt, etc.
| From: | snauts |
Date: | July 25th, 2009 - 07:57 pm |
---|
| | | (Link) |
|
Paldies par detalizētajām atskaitēm cīņā ar manu programmu. Man šodien lieti noderēja, kad es šo noportēju uz windows. | |