Ez egyelőre még patch , de az installer részt beépítettem az ep128emu-nál is az SConstruct-ba. Az "installer/ep128emu" file indítja az emulátort, ha csomag készül, ezért ennek futtathatónak kell lennie. A ROM csomag letöltéséhez a curl-t használja.
Már megint a romhalmaz problematika...
Sajna a curl parancs chroot környezetben használhatatlan.
Ott ugyanis csak a fordításhoz felétlen szükséges cuccok vannak, nincs grafika, internet, tehát szerencsétlen, csak a csomagkészítéshez definiált és életre keltett és oda beléptetett korlátozott írási jogokkal rendelkező (hogy semmit ne tehessen tönkre ott) build felhasználó nem tud letölteni semmit, csak a neki odakészített dolgokkal, kész fájlokkal és feltelepített programokkal tud valamit kezdeni.
Ezért én kifoltoztam a SConstruct fájlból a curl részt.
diff -Nur orig/SConstruct mod/SConstruct
--- orig/SConstruct 2016-08-12 21:34:11.000000000 +0200
+++ mod/SConstruct 2016-08-12 21:53:51.886114783 +0200
@@ -581,9 +581,7 @@
"resource/eptapeedit.desktop",
"resource/zx128.desktop"])
makecfgEnvironment.Command(
- instROMDir + "/ep128emu_roms.bin", None,
- ['curl -o "' + instROMDir + '/ep128emu_roms.bin" '
- + 'http://ep128emu.enterpriseforever.com/roms/ep128emu_roms.bin'])
+ instROMDir + "/ep128emu_roms.bin", None, [])
if not buildingLinuxPackage:
makecfgEnvironment.Command(
instROMDir + "/exos232uk.rom",
A csomagkészíítéshez tehát a githubról származó forráson kívül letöltetem az ep128emu_roms.bin fájlt is, megfoltozza a build rendszerem a foltommal a forrást, majd felépíti a minimális szükséges chroot környezetet és belépteti oda a build felhasználót és vele elvégezteti a fordítást és installálást, aki ugyanis lefuttatja a rendelkezésére bocsájtott compile és az install szkripteket is, majd munkájának eredményét összerámolja csomaggá. Ezután a build rendszer kilépteti őt a chroot alól, az ott elkészült cuccot meg kimásolja nekem a chroot alól az általam kívánt mappába.
A csomagot feltelepíthetem a teljes rendszeremre és kipróbálhatom, akkor már használhatja a csomagom a curl, vagy wget parancsot.
Most a fentebb vázolt probléma miatt az installáló szkriptem erre változott:
#!/bin/sh -eux
scons install
cp ep128emu_roms.bin ${UB_INSTALLDIR}/usr/share/ep128emu/roms/
Így viszont a csomagban benne van újból a romhalmaz is, habár a curl-val installáló részed működése esetén is benne lenne.
Internet kapcsolat nélkül is használható egyből az emu.
Az ep128emu wrapperben a csomagot feltelepítő és használó júzer már használhat természetesen minden olyan parancsot, amelyet a csomag futási függőségeként előirok a csomagban a depends fájlban. Tehát akár wget, vagy curl parancsot is, de ekkor a csomag feltelepülésekor az előírt cuccoknak is fenn kell lennie nyilván a rendszeren, hogy júzerkám használhassa, ha azok nem lennék a rendszerén, akkor okos csomagtelepítőm az apt felteszi majd neki.
Tehát, ha a wrapperben lenne a curl, akkor az töltené le a romhalmazt, ha júzerkám rajta lóg a neten, különben nem történik semmi, csak létrejön neki a ~/ep128emu mappa romhalmaz nélkül és az UHU rendszert hibáztatja, hogy nem műkszik neki az emu.
Ezután le is vakarja az UHU rendszert és felrak egy felkapottabbat, mondjuk valamely BUNTU származékot, és azon fog kinlódni vele, mert normális, forrásból felépített deb csomagot ott sem talál, vagy letölti a sourceforge-ról a kész, jól felhizlalt, mindent statikusan tartalmazó, vagy 10 éves binárisodat. Végül beleun és újra rátér a windóz örömeinek élvezetére.