Re: Phix, IUP issues - FIXED
- Posted by petelomax Feb 01, 2022
- 1768 views
Well, as promised I made some notes....
First a Linux VM, obviously skip this part if you've got the real thing.
On Windows 10: Download linuxmint-20.3-cinnamon-64bit.iso (2.09GB) Create a new VirtualBox Machine. I have put everything (iso + vdi) in E:\downloads\misc\Phix101\mint Make sure you've got <del>1024MB</del> 2048MB ram, 20G (>13G anyway) vdi Using the default C:\Program Files\Oracle\VirtualBox\VBoxGuestAdditions.iso Add a shared folder ( mine is C:\Users\Pete\Downloads\qman70\Share ) Enable clipboard (and drag 'n drop, why not) Boot, right-click open the 'Install Linux Mint' desktop icon (6:15pm...crashed @6:30pm, increased mem to 2GB:) (6:40pm...files copied 6:52pm, installing... rebooted 7:05ish) Right-click open the guest additions and install that (top right button). Reboot. --sudo mkdir /mnt/share --sudo chmod 777 /mnt/share --sudo mount -t vboxsf -o uid=1000,gid=1000 share /mnt/share --sudo chmod 777 /media/sf_Share usermod -aG vboxsf pete (Reboot)
Then onto what we came here for.
OK, so I installed (via my shared folder) a pre-release of 1.0.2...
mkdir -p phix
rm -r phix
unzip phix.1.0.2.zip -d phix
unzip phix.1.0.2.1.zip -d phix
unzip phix.1.0.2.2.zip -d phix
unzip phix.1.0.2.3.zip -d phix
mv p64 phix/p
cd phix
chmod 777 p
./p -test
./p -c p
./p -test
cd ..
Following IUP instructions (I had to do these in three parts, and manually 'cd ..' each time)
mkdir cd
cd cd
tar -xpvzf ../cd-5.13_Linux54_64_lib.tar.gz
sudo ./install
cd ..
mkdir im
cd im
tar -xpvzf ../im-3.14_Linux54_64_lib.tar.gz
sudo ./install
cd ..
mkdir iup
cd iup
tar -xpvzf ../iup-3.29_Linux54_64_lib.tar.gz
sudo ./install
cd ..
cd phix
Now we get the predicted error from './p pdemo'...
pete@pete-VirtualBox:~/phix$ ./p pdemo
/home/pete/phix/demo/pGUI/pGUI.e:1091
link error: libiup.so
--> see /home/pete/phix/ex.err
pete@pete-VirtualBox:~/phix$ ldd libiup.so
ldd: ./libiup.so: No such file or directory
pete@pete-VirtualBox:~/phix$ ldd /usr/lib64/libiup.so
linux-vdso.so.1 (0x00007ffc4106d000)
libgtk-3.so.0 => /lib/x86_64-linux-gnu/libgtk-3.so.0 (0x00007ff5489ca000)
libgdk-3.so.0 => /lib/x86_64-linux-gnu/libgdk-3.so.0 (0x00007ff5488c5000)
libpangocairo-1.0.so.0 => /lib/x86_64-linux-gnu/libpangocairo-1.0.so.0 (0x00007ff5488b3000)
libcairo.so.2 => /lib/x86_64-linux-gnu/libcairo.so.2 (0x00007ff548790000)
libgdk_pixbuf-2.0.so.0 => /lib/x86_64-linux-gnu/libgdk_pixbuf-2.0.so.0 (0x00007ff548768000)
libpango-1.0.so.0 => /lib/x86_64-linux-gnu/libpango-1.0.so.0 (0x00007ff548719000)
libgobject-2.0.so.0 => /lib/x86_64-linux-gnu/libgobject-2.0.so.0 (0x00007ff5486b7000)
libglib-2.0.so.0 => /lib/x86_64-linux-gnu/libglib-2.0.so.0 (0x00007ff54858e000)
libX11.so.6 => /lib/x86_64-linux-gnu/libX11.so.6 (0x00007ff548451000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007ff548302000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007ff548110000)
libgmodule-2.0.so.0 => /lib/x86_64-linux-gnu/libgmodule-2.0.so.0 (0x00007ff54810a000)
libXi.so.6 => /lib/x86_64-linux-gnu/libXi.so.6 (0x00007ff5480f6000)
libXfixes.so.3 => /lib/x86_64-linux-gnu/libXfixes.so.3 (0x00007ff5480ee000)
libcairo-gobject.so.2 => /lib/x86_64-linux-gnu/libcairo-gobject.so.2 (0x00007ff5480e2000)
libatk-1.0.so.0 => /lib/x86_64-linux-gnu/libatk-1.0.so.0 (0x00007ff5480b8000)
libatk-bridge-2.0.so.0 => /lib/x86_64-linux-gnu/libatk-bridge-2.0.so.0 (0x00007ff548081000)
libepoxy.so.0 => /lib/x86_64-linux-gnu/libepoxy.so.0 (0x00007ff547f4e000)
libfribidi.so.0 => /lib/x86_64-linux-gnu/libfribidi.so.0 (0x00007ff547f2f000)
libgio-2.0.so.0 => /lib/x86_64-linux-gnu/libgio-2.0.so.0 (0x00007ff547d4e000)
libpangoft2-1.0.so.0 => /lib/x86_64-linux-gnu/libpangoft2-1.0.so.0 (0x00007ff547d35000)
libharfbuzz.so.0 => /lib/x86_64-linux-gnu/libharfbuzz.so.0 (0x00007ff547c30000)
libfontconfig.so.1 => /lib/x86_64-linux-gnu/libfontconfig.so.1 (0x00007ff547be9000)
libfreetype.so.6 => /lib/x86_64-linux-gnu/libfreetype.so.6 (0x00007ff547b2a000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007ff547b05000)
libXinerama.so.1 => /lib/x86_64-linux-gnu/libXinerama.so.1 (0x00007ff547b00000)
libXrandr.so.2 => /lib/x86_64-linux-gnu/libXrandr.so.2 (0x00007ff547af3000)
libXcursor.so.1 => /lib/x86_64-linux-gnu/libXcursor.so.1 (0x00007ff547ae6000)
libXcomposite.so.1 => /lib/x86_64-linux-gnu/libXcomposite.so.1 (0x00007ff547ae1000)
libXdamage.so.1 => /lib/x86_64-linux-gnu/libXdamage.so.1 (0x00007ff547adc000)
libxkbcommon.so.0 => /lib/x86_64-linux-gnu/libxkbcommon.so.0 (0x00007ff547a98000)
libwayland-cursor.so.0 => /lib/x86_64-linux-gnu/libwayland-cursor.so.0 (0x00007ff547a8d000)
libwayland-egl.so.1 => /lib/x86_64-linux-gnu/libwayland-egl.so.1 (0x00007ff547a88000)
libwayland-client.so.0 => /lib/x86_64-linux-gnu/libwayland-client.so.0 (0x00007ff547a77000)
libXext.so.6 => /lib/x86_64-linux-gnu/libXext.so.6 (0x00007ff547a62000)
librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007ff547a57000)
libpixman-1.so.0 => /lib/x86_64-linux-gnu/libpixman-1.so.0 (0x00007ff5479ae000)
libpng16.so.16 => /lib/x86_64-linux-gnu/libpng16.so.16 (0x00007ff547976000)
libxcb-shm.so.0 => /lib/x86_64-linux-gnu/libxcb-shm.so.0 (0x00007ff547971000)
libxcb.so.1 => /lib/x86_64-linux-gnu/libxcb.so.1 (0x00007ff547947000)
libxcb-render.so.0 => /lib/x86_64-linux-gnu/libxcb-render.so.0 (0x00007ff547938000)
libXrender.so.1 => /lib/x86_64-linux-gnu/libXrender.so.1 (0x00007ff54772c000)
libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007ff547710000)
libthai.so.0 => /lib/x86_64-linux-gnu/libthai.so.0 (0x00007ff547705000)
libffi.so.7 => /lib/x86_64-linux-gnu/libffi.so.7 (0x00007ff5476f9000)
libpcre.so.3 => /lib/x86_64-linux-gnu/libpcre.so.3 (0x00007ff547686000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007ff54767e000)
/lib64/ld-linux-x86-64.so.2 (0x00007ff54930e000)
libdbus-1.so.3 => /lib/x86_64-linux-gnu/libdbus-1.so.3 (0x00007ff54762d000)
libatspi.so.0 => /lib/x86_64-linux-gnu/libatspi.so.0 (0x00007ff5475f6000)
libmount.so.1 => /lib/x86_64-linux-gnu/libmount.so.1 (0x00007ff547596000)
libselinux.so.1 => /lib/x86_64-linux-gnu/libselinux.so.1 (0x00007ff54756b000)
libresolv.so.2 => /lib/x86_64-linux-gnu/libresolv.so.2 (0x00007ff54754d000)
libgraphite2.so.3 => /lib/x86_64-linux-gnu/libgraphite2.so.3 (0x00007ff547520000)
libexpat.so.1 => /lib/x86_64-linux-gnu/libexpat.so.1 (0x00007ff5474f2000)
libuuid.so.1 => /lib/x86_64-linux-gnu/libuuid.so.1 (0x00007ff5474e9000)
libXau.so.6 => /lib/x86_64-linux-gnu/libXau.so.6 (0x00007ff5474e3000)
libXdmcp.so.6 => /lib/x86_64-linux-gnu/libXdmcp.so.6 (0x00007ff5474d9000)
libdatrie.so.1 => /lib/x86_64-linux-gnu/libdatrie.so.1 (0x00007ff5474cf000)
libsystemd.so.0 => /lib/x86_64-linux-gnu/libsystemd.so.0 (0x00007ff547420000)
libblkid.so.1 => /lib/x86_64-linux-gnu/libblkid.so.1 (0x00007ff5473c9000)
libpcre2-8.so.0 => /lib/x86_64-linux-gnu/libpcre2-8.so.0 (0x00007ff547339000)
libbsd.so.0 => /lib/x86_64-linux-gnu/libbsd.so.0 (0x00007ff54731d000)
liblzma.so.5 => /lib/x86_64-linux-gnu/liblzma.so.5 (0x00007ff5472f4000)
liblz4.so.1 => /lib/x86_64-linux-gnu/liblz4.so.1 (0x00007ff5472d3000)
libgcrypt.so.20 => /lib/x86_64-linux-gnu/libgcrypt.so.20 (0x00007ff5471b5000)
libgpg-error.so.0 => /lib/x86_64-linux-gnu/libgpg-error.so.0 (0x00007ff547192000)
Hmm, that looks pretty good to me...
so how do I make /lib/x86_64-linux-gnu/xxx.so look at /usr/lib64/xxx.so ???
--I then ran sudo chmod 777 /etc/ld.so.conf.d/fakeroot-x86_64-linux-gnu.conf
--so that I could add /usr/lib64 to that file, no joy. (Since undone)
Anyway, I changed line 147 in (cd|iup|im)/tec_uname files from TEC_SYSTEM_LIB=/usr/lib64
to TEC_SYSTEM_LIB=/lib/x86_64-linux-gnu and re-ran sudo (cd|iup|im)/install
[I cd'd into and out of each directory]. More no joy.
So, let's just change demo/pGUI/pGUI.e line 1140:
-- res = open_dll(path)
res = open_dll("/lib/x86_64-linux-gnu/"&path)
And yet still more no joy. Rebooted. It all works. Ish:
sudo cp iup/ftgl/lib/Linux54_64/libftgl.so /lib/x86_64-linux-gnu
and then ./p demo/pGUI/aaline.exw works, as do cdtest, graph1/2/R,
r3d, rubik, simple_paint, triangle (which is not meant to move),
mandelbrot (but very slow, see also boids3D), and matrix (but only
if I comment out both the DROPSELECT_CB and DRAW_CB callbacks as
those have >6 args and need some work doing in builtins/pcfunc.e.)
boids3d does not show a window, but I do get a taskbar icon, and it responds to Escape.
On Windows the mandlebrot window appears straight away in white, then is slowly painted
left-to-right, whereas on Linux it does not appear until drawing completely finishes,
and maybe since boids3d never stops drawing, it could well be the very same bug, and the
same can perhaps be said for teselation.
change demo/pGUI/opengl.e line 1502 and boidscs gets a smigde further:
--string dll_so = iff(platform()=LINUX?GL_LIBPATH & "libGL.so":"opengl32.dll")
string dll_so = iff(platform()=LINUX?GL_LIBPATH & "libiupgl.so":"opengl32.dll")
buffer.exw gives me an all-red screen, should be a faint cross...
Chat: builtins\sockets.e is currently windows-only, though getting it to work
on Linux should in theory be a little more straightforward than average.
getparam and glcanvas_cube crash here too. mglplotdemo is incomplete anyway, as is
PhixLogo which is really just a copy of aaline, and now they both work.

