shellexec von SnowHead, Flexmenü zur eigenen Gestaltung

Games, Plugins, Utils, Tools, 3rdParty, etc...
rhabarber1848
CDK-Experte
Beiträge: 4335
Registriert: Donnerstag 3. April 2008, 14:05

shellexec von SnowHead, Flexmenü zur eigenen Gestaltung

Beitrag von rhabarber1848 »

Hi,
Das Plugin dient zum Aufräumen des Menüs der blauen Taste. Viele dort auswähl-
bare Scripts oder Binarys werden selten benötigt und verringern nur die Über-
sichtlichkeit des Menüs. Statt dieser vielen Plugins wird nun das shellexec-
plugin in den Ordner /lib/tuxbox/plugins kopiert und die anderen Plugins kön-
nen dort gelöscht werden. Die von ihnen aufgerufenen Scripte werden nun in die
shellexec.conf eingetragen, und stehen nun als eine Art Untermenü unter dem
in der shellexec.cfg eingetragenen Namen zur Verfügung.
http://article.gmane.org/gmane.comp.vid ... x.scm/1648
http://article.gmane.org/gmane.comp.vid ... x.scm/1649
http://article.gmane.org/gmane.comp.vid ... x.scm/1650

shellexec ist in Yadd-Images per default enthalten, für Flashimages
in root-local.sh folgendes eintragen:

Code: Alles auswählen

make flash-shellexec
readme.txt: http://cvs.tuxbox-cvs.sourceforge.net/t ... iew=markup
mb405
Tuxboxer
Tuxboxer
Beiträge: 2331
Registriert: Donnerstag 24. März 2005, 21:52

Re: shellexec von SnowHead, Flexmenü zur eigenen Gestaltung

Beitrag von mb405 »

habe grade mal das shellexec dings kompilieren lassen.
irgendwas spinnt da noch.

in bin fehlt die shellexec und in plugins ist ne riesige shellexec.so

ist das jetzt so gewollt ?
Striper
Erleuchteter
Erleuchteter
Beiträge: 625
Registriert: Samstag 8. September 2007, 16:17

Re: shellexec von SnowHead, Flexmenü zur eigenen Gestaltung

Beitrag von Striper »

Kann es sein das du diesen check-in nicht dabei hattest?

http://cvs.tuxbox-cvs.sourceforge.net/l ... 00058.html
mb405
Tuxboxer
Tuxboxer
Beiträge: 2331
Registriert: Donnerstag 24. März 2005, 21:52

Re: shellexec von SnowHead, Flexmenü zur eigenen Gestaltung

Beitrag von mb405 »

genau nach diesen
vorher gabs ne shellexec in bin nun nicht mehr.
jetzt gibts die *.cfg und *.so in lib/tuxbox/plugins
und beim starten kommt
shellexec.so undefined symbol: plugin_exec
rhabarber1848
CDK-Experte
Beiträge: 4335
Registriert: Donnerstag 3. April 2008, 14:05

Re: shellexec von SnowHead, Flexmenü zur eigenen Gestaltung

Beitrag von rhabarber1848 »

Ich bin dabei, die Unstimmigkeiten zu klären...
mb405
Tuxboxer
Tuxboxer
Beiträge: 2331
Registriert: Donnerstag 24. März 2005, 21:52

Re: shellexec von SnowHead, Flexmenü zur eigenen Gestaltung

Beitrag von mb405 »

im original plugin gabs die shellexec in bin, und die shellexec.cfg und shellexec.so unter plugins.
die erste Makefile.am ist soweit ok. die baut das shellexec binary unter bin.
nun mus nur noch der starter unter plugins rein.
rhabarber1848
CDK-Experte
Beiträge: 4335
Registriert: Donnerstag 3. April 2008, 14:05

Re: shellexec von SnowHead, Flexmenü zur eigenen Gestaltung

Beitrag von rhabarber1848 »

mb405 hat geschrieben:shellexec.so unter plugins.
Den Source dazu suche ich noch...
mb405 hat geschrieben:die erste Makefile.am ist soweit ok
Stimmt, aber ohne o.g. Datei bringt das nichts.

Ich habe mittlerweile gemerkt, dass ich beim Testen gestern übersehen
habe, dass shellexec mittels customization-Skripts aus einem Binary-
Archiv entpackt wurde... :oops: So wie es jetzt im CVS ist, kann es nicht
funktionieren, weder als Plugin noch als Binary...
mb405
Tuxboxer
Tuxboxer
Beiträge: 2331
Registriert: Donnerstag 24. März 2005, 21:52

Re: shellexec von SnowHead, Flexmenü zur eigenen Gestaltung

Beitrag von mb405 »

also das binary, welches mit der ersten makefile.am erstellt wird funktioniert.
die *.cfg und *.so hatte ich ja schon vom original plugin noch drauf. es braucht ja nur ne art starter, welches die shellexec binary startet.
rhabarber1848
CDK-Experte
Beiträge: 4335
Registriert: Donnerstag 3. April 2008, 14:05

Re: shellexec von SnowHead, Flexmenü zur eigenen Gestaltung

Beitrag von rhabarber1848 »

mb405 hat geschrieben:es braucht ja nur ne art starter
Das soll aber auch mit uClibc, auf der Coolstream und der Dream- und IPbox
funktionieren, mit binaries kommen wir da nicht weit...
seife
Developer
Beiträge: 4189
Registriert: Sonntag 2. November 2003, 12:36

Re: shellexec von SnowHead, Flexmenü zur eigenen Gestaltung

Beitrag von seife »

Ein shellstarter-plugin ist ein dreizeiler, das sollte nicht das Problem sein.
Das benutze ich hier, abgewandelt vom shell.c vom yadi:

Code: Alles auswählen

void plugin_exec()
{
  int ret, pid, status;
  pid=fork();
  if (pid == -1) {
    perror("[shellplugin.so] fork");
    return;
  } else if (pid == 0) {
    fprintf(stderr, "[shellplugin.so] forked, executing " SCRIPT "\n");
    for (ret=3 ; ret < 255; ret++)
      close (ret);
    ret = system(SCRIPT);
    if (ret)
      fprintf(stderr, "[shellplugin.so] script return code: %d (%m)\n", ret);
    else
      fprintf(stderr, "[shellplugin.so] script return code: %d\n", ret);
    _exit(ret);
  }
  fprintf(stderr, "[shellplugin.so] parent, waiting for child with pid %d...\n", pid);
  waitpid(pid, &status, 0);
  fprintf(stderr, "[shellplugin.so] parent, waitpid() returned..\n");
  if (WIFEXITED(status))
    fprintf(stderr, "[shellplugin.so] child returned with status %d\n", WEXITSTATUS(status));
}
Braucht noch ein paar #includes etc, aber man erkennt die Idee.
rhabarber1848
CDK-Experte
Beiträge: 4335
Registriert: Donnerstag 3. April 2008, 14:05

Re: shellexec von SnowHead, Flexmenü zur eigenen Gestaltung

Beitrag von rhabarber1848 »

seife hat geschrieben:Ein shellstarter-plugin ist ein dreizeiler, das sollte nicht das Problem sein.
Danke, ich teste den Code im Moment.
rhabarber1848
CDK-Experte
Beiträge: 4335
Registriert: Donnerstag 3. April 2008, 14:05

Re: shellexec von SnowHead, Flexmenü zur eigenen Gestaltung

Beitrag von rhabarber1848 »

Funktioniert, ich habe es erstmal eingecheckt:
http://article.gmane.org/gmane.comp.vid ... x.scm/1657

Bitte nicht vergessen: Um shellexec zu nutzen, muss eine eigene
/var/tuxbox/config/shellexec.conf vorhanden sein.
mb405
Tuxboxer
Tuxboxer
Beiträge: 2331
Registriert: Donnerstag 24. März 2005, 21:52

Re: shellexec von SnowHead, Flexmenü zur eigenen Gestaltung

Beitrag von mb405 »

na so isses doch perfekt :)
geil
SnowHead
Einsteiger
Einsteiger
Beiträge: 105
Registriert: Sonntag 6. Juni 2004, 16:04

Re: shellexec von SnowHead, Flexmenü zur eigenen Gestaltung

Beitrag von SnowHead »

Da auch für einige andere Plugins Shellstarter benötigt werden, würde ich die vom Starter ausgegebenen Meldungen auch entsprechend dem Startername lauten lassen. "shellplugin.so" wäre im Falle eines Fehlers nicht sehr hilfreich. Mal sollte in der start.c also besser noch ein "#define SONAME shellexec" einfügen, und die Meldungen dann z.B.

Code: Alles auswählen

fprintf(stderr, "[%s.so] script return code: %d\n", SONAME, ret);
lauten lassen. Das ließe sich dann auch leicht auf die Shellstarter der anderen Plugins portieren.
rhabarber1848
CDK-Experte
Beiträge: 4335
Registriert: Donnerstag 3. April 2008, 14:05

Re: shellexec von SnowHead, Flexmenü zur eigenen Gestaltung

Beitrag von rhabarber1848 »

SnowHead hat geschrieben:Man sollte in der start.c also besser noch ein "#define SONAME shellexec" einfügen
committed:
http://article.gmane.org/gmane.comp.vid ... x.scm/1666
SnowHead
Einsteiger
Einsteiger
Beiträge: 105
Registriert: Sonntag 6. Juni 2004, 16:04

Re: shellexec von SnowHead, Flexmenü zur eigenen Gestaltung

Beitrag von SnowHead »

Es wäre noch was zu überlegen: Als zu startende Binary steht "/bin/shellexec" in der Quelle. Was, wenn shellexec in /var/bin/ liegt? Ich weiß nicht, welche Bash die Pluginverwaltung benutzt und ob dort die Suchpfade verfügbar sind. Falls die Suchpfade verfügbar sind, wäre als Binaryaufruf "shellexec" sinnvoller, da dann erst in /var/bin/ und dann in /bin/ gesucht werden würde, was flexibler z.B. bei nachträglicher Implementierung von shellexec in SquashFS-Images wäre. Aber das müßte man halt vorher mal testen.
rhabarber1848
CDK-Experte
Beiträge: 4335
Registriert: Donnerstag 3. April 2008, 14:05

Re: shellexec von SnowHead, Flexmenü zur eigenen Gestaltung

Beitrag von rhabarber1848 »

Ich stimme SnowHead zu, bitte testen: EDIT: Patch ist im CVS
seife
Developer
Beiträge: 4189
Registriert: Sonntag 2. November 2003, 12:36

Re: shellexec von SnowHead, Flexmenü zur eigenen Gestaltung

Beitrag von seife »

Ja. hardcoded Pfade sind früher oder später schmerzhaft ;) Und die busybox sh sucht auf jeden Fall den PATH ab.
Grabber66
Einsteiger
Einsteiger
Beiträge: 216
Registriert: Dienstag 1. Juni 2004, 12:24

Re: shellexec von SnowHead, Flexmenü zur eigenen Gestaltung

Beitrag von Grabber66 »

So dann nochmal im richtigen Thread.

Ich habe ein problem beim bau der shellexec auf der IPBox. Bzw. sie wird gar nicht gebaut ;(

Fehlermeldung bei make flash-shellexec

Code: Alles auswählen

touch .deps/utillinux
/usr/bin/install -c /home/grabber66/Neutrino/image/cdkroot/sbin/sfdisk /home/grabber66/Neutrino/image/cdkflash/root/sbin/sfdisk
touch /home/grabber66/Neutrino/image/cdkflash/root
make[1]: Leaving directory `/home/grabber66/Neutrino/CVS/cdk'
make[1]: Entering directory `/home/grabber66/Neutrino/CVS/cdk'
make[1]: Für das Ziel »flash-hdparm« ist nichts zu tun.
make[1]: Leaving directory `/home/grabber66/Neutrino/CVS/cdk'
make[1]: Entering directory `/home/grabber66/Neutrino/CVS/cdk'
make -C /home/grabber66/Neutrino/CVS/apps/tuxbox/tools/msgbox install prefix=/home/grabber66/Neutrino/image/cdkflash/root
make[2]: Entering directory `/home/grabber66/Neutrino/CVS/apps/tuxbox/tools/msgbox'
powerpc-tuxbox-linux-gnu-gcc -DHAVE_CONFIG_H -I. -I..  -I/home/grabber66/Neutrino/image/cdkroot/include/freetype2 -I../include -I/home/grabber66/Neutrino/CVS/driver/include -I/home/grabber66/Neutrino/CVS/driver/oldapi/include  -Wall -pipe -Os -MT msgbox.o -MD -MP -MF .deps/msgbox.Tpo -c -o msgbox.o msgbox.c
msgbox.c: In function `Read_Neutrino_Cfg':
msgbox.c:114: warning: suggest parentheses around && within ||
msgbox.c: In function `main':
msgbox.c:470: warning: unused variable `alpha'
mv -f .deps/msgbox.Tpo .deps/msgbox.Po
powerpc-tuxbox-linux-gnu-gcc -DHAVE_CONFIG_H -I. -I..  -I/home/grabber66/Neutrino/image/cdkroot/include/freetype2 -I../include -I/home/grabber66/Neutrino/CVS/driver/include -I/home/grabber66/Neutrino/CVS/driver/oldapi/include  -Wall -pipe -Os -MT io.o -MD -MP -MF .deps/io.Tpo -c -o io.o io.c
io.c: In function `GetCode':
io.c:241: warning: control reaches end of non-void function
io.c: In function `RCKeyPressed':
io.c:246: warning: control reaches end of non-void function
mv -f .deps/io.Tpo .deps/io.Po
powerpc-tuxbox-linux-gnu-gcc -DHAVE_CONFIG_H -I. -I..  -I/home/grabber66/Neutrino/image/cdkroot/include/freetype2 -I../include -I/home/grabber66/Neutrino/CVS/driver/include -I/home/grabber66/Neutrino/CVS/driver/oldapi/include  -Wall -pipe -Os -MT text.o -MD -MP -MF .deps/text.Tpo -c -o text.o text.c
mv -f .deps/text.Tpo .deps/text.Po
powerpc-tuxbox-linux-gnu-gcc -DHAVE_CONFIG_H -I. -I..  -I/home/grabber66/Neutrino/image/cdkroot/include/freetype2 -I../include -I/home/grabber66/Neutrino/CVS/driver/include -I/home/grabber66/Neutrino/CVS/driver/oldapi/include  -Wall -pipe -Os -MT gfx.o -MD -MP -MF .deps/gfx.Tpo -c -o gfx.o gfx.c
mv -f .deps/gfx.Tpo .deps/gfx.Po
powerpc-tuxbox-linux-gnu-gcc -DHAVE_CONFIG_H -I. -I..  -I/home/grabber66/Neutrino/image/cdkroot/include/freetype2 -I../include -I/home/grabber66/Neutrino/CVS/driver/include -I/home/grabber66/Neutrino/CVS/driver/oldapi/include  -Wall -pipe -Os -MT txtform.o -MD -MP -MF .deps/txtform.Tpo -c -o txtform.o txtform.c
mv -f .deps/txtform.Tpo .deps/txtform.Po
powerpc-tuxbox-linux-gnu-gcc  -Wall -pipe -Os  -Wl,-O1 -o msgbox msgbox.o io.o text.o gfx.o txtform.o -L/home/grabber66/Neutrino/image/cdkroot/lib -lfreetype
make[3]: Entering directory `/home/grabber66/Neutrino/CVS/apps/tuxbox/tools/msgbox'
test -z "/home/grabber66/Neutrino/image/cdkflash/root/bin" || /bin/mkdir -p "/home/grabber66/Neutrino/image/cdkflash/root/bin"
  /usr/bin/install -c 'msgbox' '/home/grabber66/Neutrino/image/cdkflash/root/bin/msgbox'
make[3]: Für das Ziel »install-data-am« ist nichts zu tun.
make[3]: Leaving directory `/home/grabber66/Neutrino/CVS/apps/tuxbox/tools/msgbox'
make[2]: Leaving directory `/home/grabber66/Neutrino/CVS/apps/tuxbox/tools/msgbox'
touch /home/grabber66/Neutrino/image/cdkflash/root
make[1]: Leaving directory `/home/grabber66/Neutrino/CVS/cdk'
make[1]: Entering directory `/home/grabber66/Neutrino/CVS/cdk'
make[1]: *** Keine Regel, um »flash-shellexec« zu erstellen.  Schluss.
make[1]: Leaving directory `/home/grabber66/Neutrino/CVS/cdk'
mein configure

Code: Alles auswählen

cd $CVS/cdk
./autogen.sh
./configure \
    --with-boxtype=$TYPE \
    --with-boxmodel=$TYPE2 \
    --with-cpu=405 \
    --prefix=$CVS/cdk/bin \
    --with-targetprefix=$TARGETPREFIX \
    --with-cvsdir=$CVS \
    --with-hostprefix=$HOSTPREFIX \
    --with-flashprefix=$FLASHPREFIX \
    --with-customizationsdir=$CONFIG \
    --enable-flashrules \
    --enable-maintainer-mode \
    --enable-german-keymaps \
    --enable-automount \
    --enable-ide \
    --enable-ccache \
    --disable-pictureviewer \
    --enable-movieplayer2 \
    --with-filesystems=ext3,ext2,nfs,vfat,cifs,smbfs \
    --enable-sambaserver \
    --enable-nfsserver
meine root-local.sh

Code: Alles auswählen

#!/bin/sh

IMAGE=$HOME/Neutrino
DATEN=$IMAGE/Daten
newroot=$flashprefix/root-neutrino

flashprefix=$1
buildprefix=$2

echo Hello, this is $0, flashprefix=$1 and buildprefix=$2
cp -vf $DATEN/Extras/* $flashprefix/root/bin/
make libcrypto
make flash-fbshot
make flash-wget
make flash-hddtemp
make flash-e2fsprogs
make flash-sfdisk
make flash-hdparm
make flash-msgbox
make flash-shellexec
echo "-------------------------break--------------------------------"
echo "weiter mit Enter"
while !(read)
do
	sleep 1;
done
echo "-------------------------weiter-------------------------------"
CVS ist 2x neu ausgecheckt worden, Verzeichnisse waren komplett leer.
rhabarber1848
CDK-Experte
Beiträge: 4335
Registriert: Donnerstag 3. April 2008, 14:05

Re: shellexec von SnowHead, Flexmenü zur eigenen Gestaltung

Beitrag von rhabarber1848 »

Grabber66 hat geschrieben:make[1]: *** Keine Regel, um »flash-shellexec« zu erstellen. Schluss.
Kontrolliere bitte, ob in cdk/Makefile das target flash-shellexec existiert
und ob es nicht auskommentiert ist. Hier ist beides der Fall.
Grabber66
Einsteiger
Einsteiger
Beiträge: 216
Registriert: Dienstag 1. Juni 2004, 12:24

Re: shellexec von SnowHead, Flexmenü zur eigenen Gestaltung

Beitrag von Grabber66 »

Sorry und Asche über mein Haupt, ich kann da noch soviel neu auschecken, aber wenn ich ne alte Toolchain nutze dann kann in dem Makefile
der Eintrag garnicht drin sein. Hab eben erst gesehen, das ich nen cdk vom 13.12. zurückgespielt hatte.
Lasse es nun komplett durchlaufen und dann ist der Eintrag nicht auskommentiert drin, von daher denke ich, das es nun auch bauen wird.

Naja ab und zu brauch ich dann denke ich schon ein Paar schläge auf den Hinterkopf um wieder das offentsichtliche zu sehen.
rhabarber1848
CDK-Experte
Beiträge: 4335
Registriert: Donnerstag 3. April 2008, 14:05

Re: shellexec von SnowHead, Flexmenü zur eigenen Gestaltung

Beitrag von rhabarber1848 »

Das make-System ist ok, kann ich bestätigen. Allerdings wird es zu
Kompilierfehlern kommen, da diverse KEY_* nicht definiert sind.
Das behebe ich morgen.
rhabarber1848
CDK-Experte
Beiträge: 4335
Registriert: Donnerstag 3. April 2008, 14:05

Re: shellexec von SnowHead, Flexmenü zur eigenen Gestaltung

Beitrag von rhabarber1848 »

rhabarber1848 hat geschrieben:Allerdings wird es zu Kompilierfehlern kommen, da diverse KEY_* nicht definiert sind.
erledigt: http://article.gmane.org/gmane.comp.vid ... x.scm/1702
Bei msgbox habe ich das gleiche Problem schon behoben und im Tuxwetter-
Patch, den ich im Moment in der Mache habe, ist es auch schon berücksichtigt.
rhabarber1848
CDK-Experte
Beiträge: 4335
Registriert: Donnerstag 3. April 2008, 14:05

Re: shellexec von SnowHead, Flexmenü zur eigenen Gestaltung

Beitrag von rhabarber1848 »

SnowHead hat geschrieben:Was, wenn shellexec in /var/bin/ liegt?
committed:
http://article.gmane.org/gmane.comp.vid ... x.scm/1703
http://article.gmane.org/gmane.comp.vid ... x.scm/1704
rhabarber1848
CDK-Experte
Beiträge: 4335
Registriert: Donnerstag 3. April 2008, 14:05

Re: shellexec von SnowHead, Flexmenü zur eigenen Gestaltung

Beitrag von rhabarber1848 »

Im CVS ist jetzt die Grundstruktur dafür vorhanden, dass in Abhängigkeit anderer
aktivierter Plugins ein Shellexec-Menü erstellt, um diese Plugins zu konfigurieren.

Im Moment betrifft dies nur clock und tuxwetter.

Dies funktioniert nur, wenn --with-shellexec --with-tuxwetter (oder --with-clock)
gesetzt wird. "make flash-shellexec flash-tuxwetter" alleine in einem customization-Skript
wird nicht funktionieren, da zwischen beiden targets keine Abhängigkeiten bestehen,
also am besten nutzt ihr die neuen configure-Optionen.

Ich hatte gestern Probleme, ein INCLUDE in shellexec.conf auf eine Datei zu setzen, die
wiederum ein INCLUDE beinhaltet. Lt. Doku sollen bis zu 16 solcher Verschachtelungen
möglich sein, hat hier aber nicht geklappt. Deshalb taucht die Tuxwetter-Konfiguration
im Hauptmenü von shellexec auf, dies ist garantiert verbesserungswürdig, nur fehlt mir
im Moment die Zeit dazu. Wichtiger ist mir aber die Einbindung in den build-Prozess,
die mit dem aktuellen commit erledigt ist.

http://article.gmane.org/gmane.comp.vid ... x.scm/1973
http://article.gmane.org/gmane.comp.vid ... x.scm/1974
http://article.gmane.org/gmane.comp.vid ... x.scm/1975
http://article.gmane.org/gmane.comp.vid ... x.scm/1976
http://article.gmane.org/gmane.comp.vid ... x.scm/1977
http://article.gmane.org/gmane.comp.vid ... x.scm/1978