Seite 1 von 2

shellexec von SnowHead, Flexmenü zur eigenen Gestaltung

Verfasst: Samstag 12. Dezember 2009, 19:41
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

Re: shellexec von SnowHead, Flexmenü zur eigenen Gestaltung

Verfasst: Sonntag 13. Dezember 2009, 12:41
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 ?

Re: shellexec von SnowHead, Flexmenü zur eigenen Gestaltung

Verfasst: Sonntag 13. Dezember 2009, 13:05
von Striper
Kann es sein das du diesen check-in nicht dabei hattest?

http://cvs.tuxbox-cvs.sourceforge.net/l ... 00058.html

Re: shellexec von SnowHead, Flexmenü zur eigenen Gestaltung

Verfasst: Sonntag 13. Dezember 2009, 13:08
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

Re: shellexec von SnowHead, Flexmenü zur eigenen Gestaltung

Verfasst: Sonntag 13. Dezember 2009, 13:35
von rhabarber1848
Ich bin dabei, die Unstimmigkeiten zu klären...

Re: shellexec von SnowHead, Flexmenü zur eigenen Gestaltung

Verfasst: Sonntag 13. Dezember 2009, 13:40
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.

Re: shellexec von SnowHead, Flexmenü zur eigenen Gestaltung

Verfasst: Sonntag 13. Dezember 2009, 14:00
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...

Re: shellexec von SnowHead, Flexmenü zur eigenen Gestaltung

Verfasst: Sonntag 13. Dezember 2009, 14:09
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.

Re: shellexec von SnowHead, Flexmenü zur eigenen Gestaltung

Verfasst: Sonntag 13. Dezember 2009, 14:11
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...

Re: shellexec von SnowHead, Flexmenü zur eigenen Gestaltung

Verfasst: Sonntag 13. Dezember 2009, 16:07
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.

Re: shellexec von SnowHead, Flexmenü zur eigenen Gestaltung

Verfasst: Sonntag 13. Dezember 2009, 18:04
von rhabarber1848
seife hat geschrieben:Ein shellstarter-plugin ist ein dreizeiler, das sollte nicht das Problem sein.
Danke, ich teste den Code im Moment.

Re: shellexec von SnowHead, Flexmenü zur eigenen Gestaltung

Verfasst: Sonntag 13. Dezember 2009, 19:00
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.

Re: shellexec von SnowHead, Flexmenü zur eigenen Gestaltung

Verfasst: Sonntag 13. Dezember 2009, 19:11
von mb405
na so isses doch perfekt :)
geil

Re: shellexec von SnowHead, Flexmenü zur eigenen Gestaltung

Verfasst: Sonntag 13. Dezember 2009, 19:17
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.

Re: shellexec von SnowHead, Flexmenü zur eigenen Gestaltung

Verfasst: Montag 14. Dezember 2009, 22:58
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

Re: shellexec von SnowHead, Flexmenü zur eigenen Gestaltung

Verfasst: Dienstag 15. Dezember 2009, 18:56
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.

Re: shellexec von SnowHead, Flexmenü zur eigenen Gestaltung

Verfasst: Dienstag 15. Dezember 2009, 22:56
von rhabarber1848
Ich stimme SnowHead zu, bitte testen: EDIT: Patch ist im CVS

Re: shellexec von SnowHead, Flexmenü zur eigenen Gestaltung

Verfasst: Mittwoch 16. Dezember 2009, 09:58
von seife
Ja. hardcoded Pfade sind früher oder später schmerzhaft ;) Und die busybox sh sucht auf jeden Fall den PATH ab.

Re: shellexec von SnowHead, Flexmenü zur eigenen Gestaltung

Verfasst: Donnerstag 17. Dezember 2009, 20:19
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.

Re: shellexec von SnowHead, Flexmenü zur eigenen Gestaltung

Verfasst: Donnerstag 17. Dezember 2009, 20:43
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.

Re: shellexec von SnowHead, Flexmenü zur eigenen Gestaltung

Verfasst: Donnerstag 17. Dezember 2009, 21:35
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.

Re: shellexec von SnowHead, Flexmenü zur eigenen Gestaltung

Verfasst: Donnerstag 17. Dezember 2009, 21:44
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.

Re: shellexec von SnowHead, Flexmenü zur eigenen Gestaltung

Verfasst: Freitag 18. Dezember 2009, 20:09
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.

Re: shellexec von SnowHead, Flexmenü zur eigenen Gestaltung

Verfasst: Freitag 18. Dezember 2009, 21:31
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

Re: shellexec von SnowHead, Flexmenü zur eigenen Gestaltung

Verfasst: Sonntag 31. Januar 2010, 12:20
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