1. Пример плагина с простым меню
2. Как делается добавление в запись по таймеру?
3. Есть ли уже готовый исходничек на стягивание файлика по заданому URL?
Enigma1/2 изнутри - С/С++ программируем !
- AlexXF
- Вопрос темы решён
-
-
Цитата
По словам пользователя AlexXF ...
1. Пример плагина с простым меню
2. Как делается добавление в запись по таймеру?
3. Есть ли уже готовый исходничек на стягивание файлика по заданому URL?1. Пожалуйста зарегистрируйся для просмотра данной ссылки на страницу.
2.-3. тамже, но в коде enigma Пожалуйста зарегистрируйся для просмотра данной ссылки на страницу.
-
Вот пасибки!
И еще один вопросик - можно ли будет перехватить с помощью плагина кнопочку Info на пульте? Подозреваю, что нельзя - это уже надо как то лезьти в имидж.
Я прав или нет?
-
Цитата
По словам пользователя AlexXF ...
Вот пасибки!И еще один вопросик - можно ли будет перехватить с помощью плагина кнопочку Info на пульте? Подозреваю, что нельзя - это уже надо как то лезьти в имидж.
Я прав или нет?
С помощью плагина сомневаюсь, что этобудет возможно, но для написания и компиляции плагина, тебе придется скомпилить CDK, соответственно вмести с ним ты скомпилишь и enigma, код отработки кнопок находится в ней, эта кнопка сейчас используется на 100% и на одиночное нажатие и на двойное. Если есть желание то можно поменять и это, но тогда у тебя будет своя инигма и тебе нужно делать свой имидж. -
Ясно... пошел ставить CDK...
-
Изменено 19.04.2005
DISCLAIM: Все копирайты за механизм сборки энигмы принадлежат Alexvrs, я всего лишь собрал их до кучи в один файлик текстовый...
ДОБАВЛЕНИЕ от 21 апреля 2005: веселье с разными компилерами и пояснения некоторые принадлежат мне
Натрахавшись порядком, с помощью Alexvrs собрал CDK. Процесс явно не веселый... А посему решил заново опубликовать процесс сборки и кое-какие фички раскопаные...
Платформа: Debian (под Virtual PC)
1. Сбор CDK энигмы
Внимание!!!
+ Эта сволочь не компилируется с последним FLEX 2.5.31, который идет в поставке дебиана и посему надо иметь установленый 2.5.27 или 2.5.4a
+ Сборка CDK должна производится под root и исключительно с компилером gcc не старше 3.2.2(унинсталируем Flex 2.5.31 -
apt-get remove flex
качаем flex другой версии (есть в стабильной ветке), распаковываем, инсталлируем)GCC DOWNGRADE
--------------------------
Пожалуйста зарегистрируйся для просмотра данной ссылки на страницу.
качаем дистрибутив gcc 3.2.2 и под рутом его собираемcd $HOME/путь к развернутому gcc 3.2.2
./configure --prefix=/usr
make all
make install
--------------------------Установили? Проверяем чего у нас есть на машине (все должно уже быть в порядке, но все таки)
Должно быть (не моложе):
automake: 1.7.2
autoconf: 2.57
cvs: 1.11.1p1
libtool: 1.4.3
make: 3.79.1,
gettext: 0.12
makeinfo: 4.1
tar: 1.13.25
gunzip: 1.3.2
patch: 2.5.4
infocmp: 5.2.20020112
gcc: >= 2.95.4 (но не старше 3.2.2 !!!)
g++: >= 2.95.4 (но не старше 3.2.2 !!!)
yacc: 1.35
bison: 1.35
flex: 2.5.4 (!!! читаем выше !!!)
pkg-config: 0.11.0Итак, поехали!
==============
mkdir $HOME/tuxbox-cvs(одно из изменений - директория $HOME/dbox2 больше не нужна - для этого используется директория $HOME/tuxbox-cvs/root)
Отступление, касающееся сборки плагиновЦитата
Как правило плагины содержат заголовок такого типа:
CDK_SRC = $HOME/tuxbox-cvs
CDKROOT = $HOME/dbox2/cdkroot
BOXBIN = $HOME/dbox2/cdk/binСтруктура местонахождения самого CDK изменилась, и теперь этот заголовок будет выглядеть так:
CDK_SRC = $HOME/tuxbox-cvs
CDKROOT = $HOME/tuxbox-cvs/root/cdkroot
BOXBIN = $HOME/tuxbox-cvs/root/cdk/bin1. Качаем-с CDK из ветки dreambox:
----------------------------
cd $HOME/tuxbox-cvs
export CVS_RSH=ssh
cvs -d anoncvs@cvs.tuxbox.org:/cvs/tuxbox -z3 co -P -rdreambox .2. Переходим в папку с cdk...
cd $HOME/tuxbox-cvs/cdk
3. Вносим изменения, согласно ядра линукса 2.6.9
chmod ugo+x prepare
4. Подготавливаем необходимый тип билда
./prepare dm7000
Допустимые значения : dm7000, dm500, dm56x0
5. Запускаем сборку, которая сама обновит/пофиксит/изменит что надо из разных веток...
make checkout
6. Собираем имидж:
make dreamboximage_root
make rebuild-flash
make flash-compressКурим... долго курим...
В процессе могут быть зависания по невозможности скачать тот или иной архив. Смело жмем CTRL+C. Берем, ищем в гугле по названию архива где он есть, качаем и кладем в папочку:
$HOME/tuxbox-cvs/cdk/Archive...и выполняем тот мейк, на котором прервалось все это...
Изначально все закончится с ошибкой: мол имидж великоват для дрима.
Не волнуемся и заходим в ../root/cdkflash/
Вычищаем ненужные файлики .part (игры pacman, snake, если не нужен, то сервер samba...)Например:
Чтобы удалить sambaserver надо удалить файл .part_sambaserver в папке root/cdkflash.В принципе данные файлики и определяют из чего будет состоять имидж.
cd $HOME/tuxbox-cvs/cdk
make rebuild-flash
make flash-compress(более подробно про добавление/удаление элементов имиджа читаем здесь: Пожалуйста зарегистрируйся для просмотра данной ссылки на страницу.)
В итоге все должно завершиться без ошибок. Как результат будет собран имидж в папке ../root/cdkflash/complete.img
Естественно не забываем о максимальных размерах имиджа
max size of cramfs (kernel+bild) is 1152K ( 1179648 bytes )
max size of squashfs is 4992K (511180
complete this is 6144K (6291456)И теперь переходим опять же к сборке энигмы из ветки HEAD
ОбновленоПереименовываем папку $HOME/tuxbox-cvs/apps/tuxbox/enigma в enigma.cdk (на всякий случай, вдруг пригодится?)
cd $HOME/tuxbox-cvs
cvs -d anoncvs@cvs.tuxbox.org:/cvs/tuxbox -z9 co -r HEAD apps/tuxbox/enigmacd $HOME/tuxbox-cvs/apps/tuxbox/enigma
./autogen.sh
cd $HOME/tuxbox-cvs/cdk
rm -f .enigmamake .enigma
Опять курим, пьем чай, смотрим кино....
Собралось?Уррраааа!!!!
-
Ну шаг сборки Энигмы пройден - чего же дальше?
Собрать тестовый плагин!
Он лежит в $HOME/tuxbox-cvs/apps/tuxbox/plugins/enigma/demo/1. Для начала...
cd $HOME/tuxbox-cvs/cdk/
rm -f .plugins2. теперь заходим в папку $HOME/tuxbox-cvs/apps/tuxbox/plugins/
Удаляем оттуда все файлы (не папки!!!) кроме этих:
.cvsignore
AUTHORS
ChangeLog
Makefile.am
NEWS
README
autogen.sh
configure.ac
tuxbox-plugins.pc.in3. Заходим в папку $HOME/tuxbox-cvs/apps/tuxbox/plugins/enigma/demo/
Удаляем все файлы и папки оставив всего четыре файла:
.cvsignore
Makefile.am
demo.cpp
enigma_demo.cfg4. Заходим в папку $HOME/tuxbox-cvs/apps/tuxbox/plugins/enigma/
Создаем файл Makefile.am с таким содержимым:SUBDIRS = demo
5. Возвращаемся в папку $HOME/tuxbox-cvs/apps/tuxbox/plugins/
Правим файл configure.ac
(ищем AC_OUTPUT...)AC_OUTPUT([
Makefile
Include/Makefile
enigma/demo/Makefile
fx2/Makefileдалее не трогаем особенно, главное было добавить строчку enigma/demo/Makefile
6. Правим файл Makefile.am в той же папке ($HOME/tuxbox-cvs/apps/tuxbox/plugins/)
SUBDIRS = include tuxtxt fx2 enigma
7. Далее все просто, мы уже это проходили:
cd $HOME/tuxbox-cvs/cdk
./autogen.sh
./configure --prefix=$HOME/dbox2 --with-cvsdir=$HOME/tuxbox-cvs --enable-maintainer-mode --with-cpu=405 --with-hostruleset=standard --with-targetruleset=flash
make all8. Собраный плагин лежит там где и он должен быть:
$HOME/dbox2/cdkroot/lib/tuxbox/pluginsУфф... а можно проще? Можно!
-
Работаем на примере того же demo
Все предыдущие шаги пройдены, но для сборки одного единственного плагина постоянно использовать 8 шагов - муторная штука!
А посему, после всего что проделано выше, заходим сюда:
cd $HOME/tuxbox-cvs/apps/tuxbox/plugins/enigma/demo/1. Правим файл Makefile
Ищем значение CXX = powerpc-tuxbox-linux-gnu-g++ и меняем его на CXX=$HOME/dbox2/cdk/bin/powerpc-tuxbox-linux-gnu-g++
А вот тут - ОГРОМНОЕ ВНИМАНИЕ!!!
$HOME надо заменить на явное значение... у меня например это выглядит так:
CXX=/home/alexxf/dbox2/cdk/bin/powerpc-tuxbox-linux-gnu-g++
Это качается для всех изменяемых файлов в данном случае...Далее - меняем значение CXXCPP = powerpc-tuxbox-linux-gnu-g++ -E на
CXXCPP = $HOME/dbox2/cdk/bin/powerpc-tuxbox-linux-gnu-g++ -EСохраняем!
2. Нужно еще одно исправление...
cd $HOME/tuxbox-cvs/apps/tuxbox/plugins/Правим файл libtool.sh
CC = "powerpc-tuxbox-linux-gnu-g++"
меняем на ... (догадались?)
CC = "${HOME}/dbox2/cdk/bin/powerpc-tuxbox-linux-gnu-g++"Точно так же поступаем с остальными значениями:
AR = "${HOME}/dbox2/cdk/bin/powerpc-tuxbox-linux-gnu-ar"
LTCC = "${HOME}/dbox2/cdk/bin/powerpc-tuxbox-linux-gnu-gcc"
STRIP = "${HOME}/dbox2/cdk/bin/powerpc-tuxbox-linux-gnu-strip"Правим еще одну переменную (она встречается дважды):
RANLIB="powerpc-tuxbox-linux-gnu-ranlib" на
RANLIB="${HOME}/dbox2/cdk/bin/powerpc-tuxbox-linux-gnu-ranlib"Сохраняем!
3. Опять к нашему тестовому плагину:
cd $HOME/tuxbox-cvs/apps/tuxbox/plugins/enigma/demo/
rm -f *.lo
rm -f *.la
rm -f *.o
makeВсе!!! Теперь в будущем надо только повторять шаг 3 для повторной рекомпиляции плагина, если его будем править под свои нужды...
Вот так!
-
а можно еще проще ? можно.....
ЦитатаПо словам пользователя AlexXF ...
Работаем на примере того же demoВсе предыдущие шаги пройдены, но для сборки одного единственного плагина постоянно использовать 8 шагов - муторная штука!
А посему, после всего что проделано выше, заходим сюда:
cd $HOME/tuxbox-cvs/apps/tuxbox/plugins/enigma/demo/1. Правим файл Makefile
Ищем значение CXX = powerpc-tuxbox-linux-gnu-g++ и меняем его на CXX=$HOME/dbox2/cdk/bin/powerpc-tuxbox-linux-gnu-g++
Сохраняем!это и все последующее можно заменить одной командой....
export PATH=$PATH:$HOME/dbox2/cdk/binпосле следующего обновления cdk из cvs все эти изменения файлов - пропадут,
и придется делать снова.ЦитатаПо словам пользователя AlexXF ...
3. Опять к нашему тестовому плагину:
cd $HOME/tuxbox-cvs/apps/tuxbox/plugins/enigma/demo/
rm -f *.lo
rm -f *.la
rm -f *.o1 команда, make clean.
P.S. в первом посте, не нужно делать первый make all.
зачем собирать старую енигму ? чтобы потом переименовать её в old ?
сразу можно переименовать, закачать новую, и потому уже make. -
AlexXF,
отличная статья ! её бы мне недельки полторы назад почитать, а то всю ночь убил на компиляцию.
кстати у меня под мандрейком 10 не хотело компилится с automake: 1.7.2 пока не обновил до 1.8 -
Цитата
По словам пользователя mvt ...
это и все последующее можно заменить одной командой....
export PATH=$PATH:$HOME/dbox2/cdk/binне догадался... можно!
Цитата
P.S. в первом посте, не нужно делать первый make all.
зачем собирать старую енигму ? чтобы потом переименовать её в old ?
сразу можно переименовать, закачать новую, и потому уже make.Там такая дикая смесь, что ветка 1_0_0 содержить кое что, что нужно для плагинов и прочего... а ветка HEAD содержить РАБОЧУЮ энигму, которая работает на рудрим имиджах
Короче - не зря все это делалось! Иначе - 100% плагины работать не будут.
-
Те, кто уже программирует под энигму, делитесь знаниями.
Известно, что документации на CDK нету. А посему хотелось бы знать некоторые фички...
1. Как таки узнать текущий канал, который показывается? Имя, ID и все прочее?
2. Как переключиться на канал, имея в руках только его имя?
3. Как запрограммировать таймер?Честно обещаю, чего нарою рассказывать здесь, благо задача копания в исходных текстах в поисках чего нить понятного не из легких.
Ну так что, пишет кто нибудь или нет?
-
Привет mvt, рад тебя видеть, если ты тот о ком я подумал,
Цитатаэто и все последующее можно заменить одной командой....
export PATH=$PATH:$HOME/dbox2/cdk/binвсе правельно, именно так я и делал , и конечно тут еще не расказанно про кучу дополнений и тонкостей, но все сразу не упомнишь, т.к. все собирается понемногу и по маленьку,
Цитата1 команда, make clean.
небольшое дополнение, если менялись какие то файлы с исходниками, то можно просто
make all,
компилятор сам это поймет, а вот команда
make install-exec-local,
после компиляции скопирует полученный бинарник куда нужнои еще обратите внимание на файл configure.ac,
вот тут есть некие дополнительные ключи для использования библиотек, если вы планируете использовать ряд возможностей для плугина (например доступ к xml файлам), то вам сюда, вот кусочек из моего файлика:TUXBOX_APPS_LIB_CONFIG(FREETYPE,freetype-config)
TUXBOX_APPS_LIB_PKGCONFIG(FRIBIDI,fribidi)
TUXBOX_APPS_LIB_PKGCONFIG(PNG,libpng)
TUXBOX_APPS_LIB_PKGCONFIG(SIGC,sigc++-1.2)
TUXBOX_APPS_LIB_PKGCONFIG(XMLTREE,tuxbox-xmltree)CPPFLAGS="$CPPFLAGS $FREETYPE_CFLAGS $FRIBIDI_CFLAGS $PNG_CFLAGS $SIGC_CFLAGS $XMLTREE_CFLAGS -fno-exceptions -fno-rtti -Werror"
-
Хорошо программисту под Win32 - у него есть MSDN
Цитата
#include (plugin.h) // стандартный заголовок плагиновextern ''C'' int plugin_exec( PluginParam *par ); // основная функция вызова плагина. Скажу сразу - не разобрался пока толком, что именно передается в *par. Аналог сишной функции main(argc, argv)
#include (lib/gui/ewindow.h) // надо же нам рисовать окошечко
#include (lib/gui/ebutton.h) // и кнопку нарисовать надо
#include (lib/gui/emessage.h) // это для обычного MessageBoxclass eTestWindow: public eWindow
{
eButton *bt_ok; // кнопочка
eLabel *lb_hello; // labelpublic:
// the constructor.
eTestWindow();
// the destructor.
~eTestWindow();
};eTestWindow::~eTestWindow()
{
// деструктор, вызывается при уничтожении
}eTestWindow::eTestWindow(): eWindow(1)
{
// конструктор... нарисуем просто окошечко определенного размера с кнопкойcmove(ePoint(100, 100)); // передвижение окна в заданую позицию
cresize(eSize(520, 376)); // задаем размеры окна ширина, высота
setText(''It's a test window''); // у каждого окна, как и в винде есть заголовок, задаем егоbt_ok=new eButton(this); // порождаем буттон, который принадлежит этому окну (this)
bt_ok->move(ePoint(clientrect.width()-110, clientrect.height()-40)); // перемещаем его вниз окна.
bt_ok->resize(eSize(100, 30)); // задаем ему размеры
bt_ok->setShortcut(''green''); // привязываем его к зеленой кнопочке
bt_ok->setShortcutPixmap(''green''); // и рисуем оную на кнопке
bt_ok->loadDeco(); // буттон должен быть буттоном - рисуем бордюр
bt_ok->setText(''OK''); // но буттон без надписи не баттон
// решаем, что будет происходить по нажанию на эту кнопку, а в нашем случае это будет удачное завершение и закрытие модального диалога
CONNECT(bt_ok->selected, eWidget::accept);// А как же быть с надписью Hello World?
lb_hello=new eLabel(this); // создаем Label!
lb_hello->move(ePoint(20, clientrect.height()-180)); // выдвигаем ее на центр
lb_hello->resize(eSize(clientrect.width()-40, 30)); // задаем ей размер
lb_hello->setText(''HELLO WORLD!''); // вот и обещаное!// вроде все...
}/*
И как же у нас все заработает? А плагин при старте вызовет вот эту функцию - plugin_exec
*/int plugin_exec( PluginParam *par )
{
eTestWindow dlg; // Создаем наше окошко, но еще не показываем.
dlg.show(); // отображаем окно
int result=dlg.exec(); // и переводим его в модальную форму, т.е. пока не нажмут кнопку Lame или OK или зеленую кнопку
dlg.hide(); // как только что-то нажали и вернулся нам результат, прячем окно
// В случае, если был нажат Lame, то результат вернется не нулевой
if (result)
{
eMessageBox msg(''Pressed LAME, aborted'', ''User Abort'', eMessageBox::iconWarning|eMessageBox::btOK); // ага! функция eMessageBox... очень уж похожа на виндовую, только нет в ней родительского хендлера, но оно и понятно
msg.show(); // показать окно
msg.exec(); // дождаться результата
msg.hide(); // спрятать MessageBox
}else{
eMessageBox msg(''Do you like C++ now?'', ''Hello World'', eMessageBox::iconQuestion|eMessageBox::btOK);
msg.show(); // показать окно
msg.exec(); // дождаться результата
msg.hide(); // спрятать MessageBox
}
return 0; // были бы ошибки, вернули бы 1
}Так что программировать внешний интерфейс как оказалось очень просто, ничуть не сложнее Win32 !!!
-
Тут я раскажу как делать инсталяционные пакеты для имиджей ruDREAM (простите если не совсем в тему, но мне кажеться в этом разделе это уместно, т.к. изготовленный plugin нужно еще и установить в DreamBox):
1. Для начала создаем вот такую структуру папок:
[pluginType_pluginName]/var/tmp/install ,
причем имя первой папки имеет некоторую условность, оно составное и имеет следующей формат:
pluginType_pluginName ,где pluginType - тип плугина, вот весь используемый список типов:
language, skin ,plugin, game, background, emu, updare
pluginName - имя самого плугина (без пробелов, можно использовать любое понятное сокращение)2. в папку [pluginType_pluginName]/var/tmp/install
копируем все файлы, которые будут устанавливаться на DreamBox3. в папке создаем 2 файла управляющих установкой и удалением дополнения (install/uninstall), имена файлов такие:
install.xml - правлила установки
[pluginType_pluginName].xml - правлила удаления, принцип названия файла оналогичен имени папки см. п.14. Формат файлов install.xml/[pluginType_pluginName].xml , одинаковый и имеет такую структуру:
PHP<?xml version="1.0" encoding="iso-8859-1" ?> <install> <[type] target="5" name="имя дополнения" url="" version="DDD" creator="" description="описание дополнения" /> <инструкция для установки/удаления №1/> <инструкция для установки/удаления №2/> <инструкция для установки/удаления №n/> </install>
[type] - тип дополнения (все типы перечисленны в п.1)5. Формат инструкций такой:
[инструкция] - существует 9 вариантов:
dir, file, configxml, configfile, registry, message, runscript, exeplugin, reboot(каждая инструкция имеет свой набор параметров, см. п. 6)
продолжение следует......
-
6. Все форматы инструкций:
[dir] - инструкция создания папки
[name="dir_name"] - имя создоваемой папки
[distantion="path"] - полный путь, где будет создаваться папка
permissions=[xxx] - права доступа (3 цифры, аналогично Linux)
[file] - инструкция копирования файла
[name="file_name"] - имя копируемого файла
[distantion="/path/"] - полный путь, куда будет содаваться файл (обязательно на конце "/")
[permissions="xxx"] - права доступа (3 цифры, аналогично Linux)PHP<configxml source="/tmp/install/emulist.xml" distantion="/var/tuxbox/config/emulist.xml" actions="set|add|del" />
[configxml] - инструкция внесения изменений в xml файлы
[source="/tmp/install/emulist.xml"] - исходный файл с шаблоном для добавления/замещения/удаления элемента xml файла, поддерживается только простейшие xml файлы, имеющее такую структуру:PHP<?xml version="1.0" encoding="iso-8859-1" ?> <emulist> <element1 parametr1="" parametr2="" parametrN="" .../> <element2 parametr1="" parametr2="" parametrN="" .../> <elementN parametr1="" parametr2="" parametrN="" .../> </emulist>
где для добавления/замещения/удаления используется секции element1-elementN
[distantion="/var/tuxbox/config/emulist.xml"] - файл в котором делаются изменения
[actions="set|add|del"] - тип изменений, можно указывать любое из трех значений set|add|del (добавить/заместить/удалить)PHP<configfile source="/tmp/install/config.cfg" distantion="/var/tuxbox/config/config.cfg" actions="set|add|del" />
[configxml] - инструкция внесения изменений в простой текстовый файл
[source="/tmp/install/config.cfg"] - исходный файл с шаблоном для добавления/замещения/удаления, данный файл может иметь несколько строк, каждая строка при этом обрабатывается отдельно:
[distantion="/var/tuxbox/config/config.cfg"] - файл в котором делаются изменения
[actions="set|add|del"] - тип изменений, можно указывать любое из трех значений set|add|del (добавить/заместить/удалить)продолжение следует.....
-
[registry] - инструкция внесения изменений в файл реестра
[name="key_name"] - ключь реестра
[value="string"] - значение реестра (пока поддерживается только строковые значения!)
[actions="setKey|delKey"] - тип изменений, можно указывать любое из двух значений setKey|delKey (установить/удалить)
[message] - инструкция выводящая сообщение при инсталяции
[text="blabla"] - текст заголовка сообщения
[helptext="blabla...."] - текст самого сообщения
[runscript] - инструкция выполнения скрипта
[name="script"] - текст скрипта или имя файла со скриптом
[text="blabla"] - текст сообщения при ошибке выполнения скрипта (параметр не обязательный, при отсутствии ничего не выводиться)
[helptext="blabla...."] - текст сообщения выводимого при успешном выполнении (параметр не обязательный, при отсутствии ничего не выводиться)
[exeplugin] - инструкция запуска plugin
[name="demo.cfg"] - имя файла конфигурации plugin (указывать полный путь не нужно)
[reboot] - инструкция перезагрузки DreamBox
[type="hard|full|hot"] - тип перезагрузки, указывается один из трех вариантов hard|full|hot (без сохранения настроек|полная перезагрузка|перезагрузка только enigma)продолжение следует......
-
7. Так же нужно заметить, что в файл install.xml нужно добавить инструкцию копирования файла для удаления дополнения ([pluginType_pluginName].xml), он должен быть скопирован в предопределенную папку:
/var/uninstall/
8. Если сценарий удаления будет использовать какие то дополнительные файлы (например для изменения xml файлов), то эти файлы рекомендуется копировать в папку:
/var/uninstall/][pluginType_pluginName]/, где надо заметить, что ее нужно так же предварительно создать соответствующей инструкцией при установке
(и не забыть удалить, при удалении приложения, включая сам файл [pluginType_pluginName].xml)
9. Теперь собственно сборка самого пакета, для этого в папке [pluginType_pluginName] , нужно создать скрипт и выполнить его:Bash
Показать весь код#!/bin/bash VERA=0107 #FILE_NAME - имя файла, такое же как и у папки с дополнением [pluginType_pluginName] #ADDON NAME - имя дополнения (english) #AUTOR - автор дополнения (english) #ADDON DESCRIPTION - описание дополнения (english) ADDON=FILE_NAME NAME="ADDON NAME" CREATOR="AUTOR" DESC="ADDON DESCRIPTION" rm -f *.tar.gz rm -f *.tar.gz.md5 DATE=$(date +%Y%m%d) TIME=$(date +%H%M) tar -cvf $ADDON.tar var gzip -9 $ADDON.tar md5sum -b $ADDON.tar.gz >$ADDON.tar.gz.md5 MD5=`grep -v '^#' $ADDON.tar.gz.md5 | sed 's/\(................................\).*/\1/'` echo " <emu target="5" name="$NAME" url="[URL]http://www.dreamsat.ru/filex/autoupload/[/URL]$ADDON.tar.gz" version="$VERA$(date +%Y%m%d)$TIME" creator="$CREATOR" md5="$MD5" description="$DESC" />" >node_addon.xml exit 0
ну вот вроде и все, если есть вопросы задавайте....
-
Такая вот конструкция:
time_t now=time(0)+eDVB::getInstance()->time_difference;
Но нифига не текущее время возвращается, а что-то странное... причем с очень странным смещением.
Что делается не так?
-
Цитата
По словам пользователя AlexXF ...
Установили? Проверяем чего у нас есть на машине (все должно уже быть в порядке, но все таки)
Должно быть (не моложе):
automake: 1.7.2
autoconf: 2.57
cvs: 1.11.1p1
libtool: 1.4.3
make: 3.79.1,
gettext: 0.12
makeinfo: 4.1
tar: 1.13.25
gunzip: 1.3.2
patch: 2.5.4
infocmp: 5.2.20020112
GCC: 2.95.4
g++: 2.95.4
yacc: 1.35
bison: 1.35
flex: 2.5.4 (!!! читаем выше !!!)
pkg-config: 0.11.0
Вот официальный список необходимых пакетов и их версий
Пожалуйста зарегистрируйся для просмотра данной ссылки на страницу.- cvs
- autoconf >= 2.52h
- automake >= 1.7
- libtool >= 1.4.2
- gettext >= 0.12.1
- make >= 3.79
- makeinfo (texinfo)
- tar
- bunzip2 (bzip2)
- gunzip (gzip)
- patch
- infocmp (ncurses-bin / ncurses-devel)
- gcc 2.95 or >= 3.0
- g++ 2.95 or >= 3.0
- flex
- bison
- pkg-config
- wgetДля удобства проверки пакетов собрал вызовы версий пакетов в одном скрипте (сэнкс Alexvrs за идею)