Welcome, Guest. Please login or register.


Author Topic: EP128emu (Read 401752 times)

Offline IstvanV

  • EP addict
  • *
  • Posts: 4822
Re: EP128emu
« Reply #555 on: 2016.August.11. 14:00:27 »
Egy apróság, ha meg lehetne oldani: a Spectrum meg CPC emu használjon saját kiterjesztéseket snapshot meg demo mentéshez, és ezek legyenek megfelelően társítva. Mert most ezekben is EP-s néven van a mentés, de betöltéskor az ep128emu mód indulna, ami persze kifagy :-)
b) verzió ha az emu felismerné a fájlból, hogy milyen mód kell

Ez megoldható, bár nem tudom, melyik megoldást lenne érdemesebb választani.

Pedig meg sem talalta:

Code: [Select]
Checking for C header file lua.h... (cached) no

Valamit elvileg talált, ha a HAVE_LUA_H definiálva van. A pkg-config teszt eredménye lenne érdekesebb, és esetleg a config.log file.

Offline Attus

  • EP addict
  • *
  • Posts: 1225
  • Country: hu
Re: EP128emu
« Reply #556 on: 2016.August.11. 14:28:09 »
Nekem semmi gondom a plus4emu csomagom elkészítésénél, megtalál mindent.

A Sconstruct fájlt megpatkoltam, hogy a scons install jól végezze a dolgát, kibővítettem a config és rom cuccok installálásával is.
A p4makecfg parancsrészt kitöröltem az installálási részből, mivel a chroot környezetben interaktivitás nem lehetséges.
Lehet, hogy István találna benne még ésszerűsíteni valót.

Az installálás végeztével az plus4emu binárist árneveztem plus4emu.bin -re, amit az installálási rész után a dpkg csomagolóm által hozzáadott és a /usr/bin alá elhelyezett plus4emu wrapper hív majd fel az emu futtatásakor, amennyiben a júzer ~ könyvtárában nincs .plus4emu mappa.

Mellékelem a csomagom elkészülési logját, lehet, hogy LGB is talál benne valami megoldást a lua problémájára.

Az installálási SConstruct foltom

Az installálási rész

A pluszban szállított wrapper

Próbáltam átadni egy $DESTDIR környezeti változót a SConscript fájlban a HOME helyébe illesztett DESTDIR -el, de nem volt hajlandó átvenni a $DESTDIR értékét.

Ez nem működött:
export DESTDIR=${UB_INSTALLDIR}/usr
scons install
« Last Edit: 2016.August.11. 14:46:08 by Attus »

Offline lgb

  • EP addict
  • *
  • Posts: 3563
  • Country: hu
  • æðsta yfirmaður
    • http://lgb.hu/
Re: EP128emu
« Reply #557 on: 2016.August.11. 14:56:57 »
Valamit elvileg talált, ha a HAVE_LUA_H definiálva van. A pkg-config teszt eredménye lenne érdekesebb, és esetleg a config.log file.

Nemi clean utan:

Code: [Select]
Checking for C header file lua.h... no
Ennek ellenere tovabbra is leakad, hogy nincs lua.h, pedig igy tenyleg probalnia sem kene ...

Code: [Select]
scons: Configure: Checking for C header file lua.h...
.sconf_temp/conftest_10.c <-
  |
  |#include "lua.h"
  |
  |
gcc -o .sconf_temp/conftest_10.o -c -Wall -O3 -fno-inline-functions -fomit-frame-pointer -ffast-math -DHAVE_STDINT_H -I. -Isrc -I/usr/local/include -I/usr/include/cairo -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng12 .sconf_temp/conftest_10.c
.sconf_temp/conftest_10.c:2:17: fatal error: lua.h: No such file or directory
compilation terminated.
scons: Configure: no

Offline Attus

  • EP addict
  • *
  • Posts: 1225
  • Country: hu
Re: EP128emu
« Reply #558 on: 2016.August.11. 15:01:03 »
Hol van a rendszereden a lua.h nevű fájl?
Talána szájába kéne rágni ennek a SConstructnak.
UHU 3 alatt csak lua-5.1 van, ahol a lua_dev csomag ide rakja:  /usr/include/lua.h

A fejlesztő rendszeren van lua-5.1, ami szintén ugyanoda rakja.
Afelesztői rendszer van lua52 csomag is, amiből a lua52_dev csomag ide teszi:
 /usr/include/lua5.2/lua.h

Én most UHU-3 alá csináltam az ott lévő lua-dev csomaggal.
Megkísérlem a fejlesztői rendszerre is a lua52 -vel, de kérdem én! Minek a lua52, ha elég a régi lua?
« Last Edit: 2016.August.11. 15:12:31 by Attus »

Offline lgb

  • EP addict
  • *
  • Posts: 3563
  • Country: hu
  • æðsta yfirmaður
    • http://lgb.hu/
Re: EP128emu
« Reply #559 on: 2016.August.11. 15:15:15 »
lgb@vega:~$ pkg-config lua-5.3 --cflags
-I/usr/include/lua5.3
lgb@vega:~$ pkg-config lua-5.2 --cflags
-I/usr/include/lua5.2
lgb@vega:~$ pkg-config lua-5.1 --cflags
-I/usr/include/lua5.1

En ebben kicsit tanacstalan vagyok, mar gondoltam ra, hogy elegge el nem itelheto modon atirom Makefile-ra :D Ez nem az SConstruct-ot minositi persze, hanem engem :)

Offline Attus

  • EP addict
  • *
  • Posts: 1225
  • Country: hu
Re: EP128emu
« Reply #560 on: 2016.August.11. 15:27:08 »
Csak a lua csomaggal fordul most le, a lua52 -vel bajok vannak.
Nyilván, mert a lua.h nem a /usr/include alatt van, hanem nem szabvány helyen.
Megpatkolás nélkül egyszerűen átlépi és lua támogatás nélkül fordul le.
Megpatkoltam a SConstruct fájlt, hogy a lua52 -t is keresse, ekkor már megakadt, hogy nem találja a lua.h fájlt.
Code: [Select]
for pkgName in ['lua-5.1', 'lua51', 'lua', 'lua52']:
A config.log része:
Code: [Select]
gcc -o .sconf_temp/conftest_11.o -c -Wall -O3 -fno-inline-functions -fomit-frame-pointer -ffast-math -DHAVE_STDINT_H -I. -Isrc -I/usr/local/include -I/usr/include/cairo -I/usr/include/glib-2.0 -I/usr/lib/glib-2.0/include -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/libdrm .sconf_temp/conftest_11.c
.sconf_temp/conftest_11.c:2:17: fatal error: lua.h: No such file or directory
compilation terminated.
« Last Edit: 2016.August.11. 15:36:38 by Attus »

Offline Attus

  • EP addict
  • *
  • Posts: 1225
  • Country: hu
Re: EP128emu
« Reply #561 on: 2016.August.11. 15:30:53 »
lgb@vega:~$ pkg-config lua-5.1 --cflags
-I/usr/include/lua5.1

Ezért nem leli, mert ubinál az 5.1 is el van szeparálva egy külön lua5.1 mappa alá, nem közvetlen a /usr/include alatt van.
Nyilván a SConstruct által generált cucc nem ott keresi és nem találja.

Offline IstvanV

  • EP addict
  • *
  • Posts: 4822
Re: EP128emu
« Reply #562 on: 2016.August.11. 15:37:02 »
Ennek ellenere tovabbra is leakad, hogy nincs lua.h, pedig igy tenyleg probalnia sem kene ...

A probléma nem ott van, ha a lua.h-t nem találja a "szabványos" helyeken, akkor ezzel próbálkozik:
Code: [Select]
   if not haveLua and sys.platform[:5] == 'linux' and not win32CrossCompile:
        for pkgName in ['lua-5.1', 'lua51', 'lua']:
            try:
                if not plus4emuLibEnvironment.ParseConfig(
                           'pkg-config --cflags ' + pkgName):
                    raise Exception()
            except:
                continue
            luaPkgName = pkgName
            haveLua = 1
            break
Tehát arról kellene többet tudni, hogy itt pontosan mi történik.

Szerk.: az okozhatja a hibát, hogy ez a rész (276. sor) nem másolja a CPPPATH-t, a ParseConfig() pedig ahhoz adja hozzá az /usr/include/lua5.1-et. :oops:
Code: [Select]
plus4emuGUIEnvironment['CCFLAGS'] = plus4emuLibEnvironment['CCFLAGS']
plus4emuGUIEnvironment['CXXFLAGS'] = plus4emuLibEnvironment['CXXFLAGS']
plus4emuGLGUIEnvironment['CCFLAGS'] = plus4emuLibEnvironment['CCFLAGS']
plus4emuGLGUIEnvironment['CXXFLAGS'] = plus4emuLibEnvironment['CXXFLAGS']
« Last Edit: 2016.August.11. 16:01:01 by IstvanV »

Offline Attus

  • EP addict
  • *
  • Posts: 1225
  • Country: hu
Re: EP128emu
« Reply #563 on: 2016.August.11. 19:36:35 »

Szerk.: az okozhatja a hibát, hogy ez a rész (276. sor) nem másolja a CPPPATH-t, a ParseConfig() pedig ahhoz adja hozzá az /usr/include/lua5.1-et. :oops:
Code: [Select]
plus4emuGUIEnvironment['CCFLAGS'] = plus4emuLibEnvironment['CCFLAGS']
plus4emuGUIEnvironment['CXXFLAGS'] = plus4emuLibEnvironment['CXXFLAGS']
plus4emuGLGUIEnvironment['CCFLAGS'] = plus4emuLibEnvironment['CCFLAGS']
plus4emuGLGUIEnvironment['CXXFLAGS'] = plus4emuLibEnvironment['CXXFLAGS']
Na, ez a rész nekem szinte kínai.
:oops:

Offline lgb

  • EP addict
  • *
  • Posts: 3563
  • Country: hu
  • æðsta yfirmaður
    • http://lgb.hu/
Re: EP128emu
« Reply #564 on: 2016.August.11. 20:37:11 »
Ezek utan jonak tunik (bar oszinten, hiaba ertek a Python-hoz, valtozatlanul nem latom at, mit csinal ez az SConstruct valahogy ...):

Code: [Select]
--- a/SConstruct
+++ b/SConstruct
@@ -277,6 +277,9 @@ plus4emuGUIEnvironment['CCFLAGS'] = plus4emuLibEnvironment['CCFLAGS']
 plus4emuGUIEnvironment['CXXFLAGS'] = plus4emuLibEnvironment['CXXFLAGS']
 plus4emuGLGUIEnvironment['CCFLAGS'] = plus4emuLibEnvironment['CCFLAGS']
 plus4emuGLGUIEnvironment['CXXFLAGS'] = plus4emuLibEnvironment['CXXFLAGS']
+plus4emuGUIEnvironment['CPPPATH'] = plus4emuLibEnvironment['CPPPATH']
+plus4emuGLGUIEnvironment['CPPPATH'] = plus4emuLibEnvironment['CPPPATH']

Szerintem ep128emu-nal is megnezem, ugy remlik ott sem fordult nekem Lua-val ...

UPDATE: most mindket git repo-ba betoltam, mivel ugy tunik igy fordul rendben. Meg elvileg osszes "Istvan Patch" :) is bekerult mindkettobe, vagy hat remelem legalabbis, hogy most ep128emu es plus4emu github cuccom is up-to-date szerunek mondhato. Bar neha elvesztettem a fonalat, hogy akkor most hol is tart a patch aradat :D :D
« Last Edit: 2016.August.11. 20:45:14 by lgb »

Offline IstvanV

  • EP addict
  • *
  • Posts: 4822
Re: EP128emu
« Reply #565 on: 2016.August.11. 21:54:40 »
Időközben újabb patch készült, de ha csak a CPPPATH változott a GitHub-on, akkor talán nem probléma, hogy figyelmen kívül hagyja a változást, mert ugyanazt a hibát szintén javítja.

[ Guests cannot view attachments ]
[ Guests cannot view attachments ]

- a snapshot töltés az ep128emu indításakor automatikusan beállítja a gép típusát, ha ezt a parancssor nem tartalmazza
- a lua.h hiba remélhetőleg javítva, és nincsenek hibaüzenetek sem a nem talált csomagok miatt; talán érdemes lenne azonban az újabb Lua verziókat is keresni
- Attus installer módosításait beépítettem, ha az UB_INSTALLDIR környezeti változó definiált, akkor az SConstruct feltételezi, hogy csomag készül chroot környezetben
- a bináris értékek most már valóban működnek a plus4emu monitorában, az előző patch hibás volt

Az installer/plus4emu file-nak futtathatónak kell lennie (chmod 755), ez a script indítja az emulátort a Linux csomagban.

Offline lgb

  • EP addict
  • *
  • Posts: 3563
  • Country: hu
  • æðsta yfirmaður
    • http://lgb.hu/
Re: EP128emu
« Reply #566 on: 2016.August.12. 00:00:41 »
Bedolgoztam :) Amugy Istvan, nem akarsz vmi iras jogot a github-os cuccokra? A Te projecteid, igazan megerdemelned :) Finoman szolva is ... Nem mintha lusta lennek patch-elgetni, szoval nyilvan nem kotelezo, csak gondoltam megkerdezlek azert, remelem nem gond.

Offline Attus

  • EP addict
  • *
  • Posts: 1225
  • Country: hu
Re: EP128emu
« Reply #567 on: 2016.August.12. 08:45:07 »
István!
Ez a legutóbbi plus4emu változat már szinte túlkényezetet engem.
:bow:
Nem kell semmi foltozás, extra plusz fájl, wrapper hozzáadás.
Most a disableSDL = 1 foltozást is  kivettem, mivel módosítottad a forrástban a megjegyzést.
Nekem sdl-1.15 van, jól gondolom, hogy ez jó?

A csomagom készítésénél a compile rész ennyi:
scons

Az install része meg:
scons install.

Ha letörlöm a feltelepített elkészült csomagom első futtatása előt a ~/.plus4emu mappát, akkor a menüpont plus4emu részére kattintva csak egy billentyűzet beállítő ablakocskát kapok és utána máris teljes pompájában működik az emu.
A következő indításoknál azonnal indul. A p4makecfg -t külön terminálból felhívva újra konfigurálható minden.

Más disztrók meg beállítják majd maguknak az UB_INSTALLDIR változót arra, ami nekik megfelel.

Offline Attus

  • EP addict
  • *
  • Posts: 1225
  • Country: hu
Re: EP128emu
« Reply #568 on: 2016.August.12. 09:21:50 »

- a lua.h hiba remélhetőleg javítva, és nincsenek hibaüzenetek sem a nem talált csomagok miatt; talán érdemes lenne azonban az újabb Lua verziókat is keresni

Kipróbáltam lua52 -vel.

Code: [Select]
diff -Nur orig/SConstruct mod/SConstruct
--- orig/SConstruct 2016-08-12 08:20:42.000000000 +0200
+++ mod/SConstruct 2016-08-12 09:11:54.967325322 +0200
@@ -260,7 +260,7 @@
     haveLua = haveLua and configure.CheckCHeader('lauxlib.h')
     haveLua = haveLua and configure.CheckCHeader('lualib.h')
     if not haveLua and sys.platform[:5] == 'linux' and not win32CrossCompile:
-        for pkgName in ['lua-5.1', 'lua51', 'lua']:
+        for pkgName in ['lua-5.1', 'lua51', 'lua52', 'lua']:
             print 'Checking for Lua package ' + pkgName + '...'
             try:
                 if not plus4emuLibEnvironment.ParseConfig(

Megtalálja rendben a lua52 fejléceket, vígan fordít, csak a végén akad el, gondolom a lua52 változás miatt.
Ez már a forrásba való belenyúlást igényli, hogy lua52 -vel is fordítható legyen.
A hiba üzi:
Code: [Select]
src/script.cpp: In member function 'void Plus4Emu::LuaScript::registerLuaFunction(lua_CFunction, const char*)':
src/script.cpp:651:28: error: 'LUA_GLOBALSINDEX' was not declared in this scope
     lua_setfield(luaState, LUA_GLOBALSINDEX, name);
                            ^
src/script.cpp: In member function 'virtual void Plus4Emu::LuaScript::loadScript(const char*)':
src/script.cpp:771:28: error: 'LUA_GLOBALSINDEX' was not declared in this scope
     lua_getfield(luaState, LUA_GLOBALSINDEX, "breakPointCallback");
                            ^
scons: *** [src/script.o] Error 1
scons: building terminated because of errors.

]
Itt találtam egy portolási ajánlást, mellyel a kód mind lua51, mind lua52 esetén működik majd.
« Last Edit: 2016.August.12. 09:28:43 by Attus »

Offline Attus

  • EP addict
  • *
  • Posts: 1225
  • Country: hu
Re: EP128emu
« Reply #569 on: 2016.August.12. 11:24:04 »
István!

Ha már ilyen jól sikeredett linuxhoz a plus4emu scons install része, nem lehetne az ep128emu -ba is beletenni egy ilyesmit?
;-)