From 997dbedae9ea47fbb46ec15f8827cf1a8065c11e Mon Sep 17 00:00:00 2001 From: James Meyer Date: Mon, 17 Aug 2009 12:16:31 -0500 Subject: mv-core: bring it up to date so that it works again --- abs/mv-core/MythVantage-config/PKGBUILD | 83 +- .../MythVantage-config/checkout_MythVantage.sh | 3 +- abs/mv-core/MythVantage-config/file_time_offset.py | 39 + .../MythVantage-config/install_functions.sh | 525 +++---- abs/mv-core/MythVantage-config/install_proxy.sh | 616 +++------ abs/mv-core/MythVantage-config/mv_advanced.py | 384 ++++++ abs/mv-core/MythVantage-config/mv_common.py | 200 +++ abs/mv-core/MythVantage-config/mv_config.py | 14 + abs/mv-core/MythVantage-config/mv_hostype.py | 219 +++ abs/mv-core/MythVantage-config/mv_install.py | 1433 ++++++++++++++++++++ abs/mv-core/MythVantage-config/mv_ir.py | 330 +++++ abs/mv-core/MythVantage-config/mv_misc.py | 180 +++ abs/mv-core/MythVantage-config/mv_network.py | 504 +++++++ abs/mv-core/MythVantage-config/mv_screensaver.py | 199 +++ abs/mv-core/MythVantage-config/mv_smolt.py | 59 + abs/mv-core/MythVantage-config/mv_software.py | 41 + abs/mv-core/MythVantage-config/mv_webuser.py | 21 + abs/mv-core/MythVantage-config/myth_user_call.py | 159 +++ abs/mv-core/MythVantage-config/systemconfig.py | 243 ++++ abs/mv-core/MythVantage-config/systemconfig.sh | 1269 +---------------- abs/mv-core/MythVantage-config/timezip.py | 8 +- abs/mv-core/MythVantage-config/xconfig.sh | 109 +- abs/mv-core/hobbit-client/client/bin/bb | Bin 177017 -> 176817 bytes abs/mv-core/hobbit-client/client/bin/bbcmd | Bin 149244 -> 149012 bytes abs/mv-core/hobbit-client/client/bin/bbdigest | Bin 192338 -> 192018 bytes abs/mv-core/hobbit-client/client/bin/bbhostgrep | Bin 184578 -> 184354 bytes abs/mv-core/hobbit-client/client/bin/bbhostshow | Bin 146205 -> 145965 bytes abs/mv-core/hobbit-client/client/bin/clientupdate | Bin 180919 -> 180695 bytes abs/mv-core/hobbit-client/client/bin/hobbitlaunch | Bin 167359 -> 167103 bytes abs/mv-core/hobbit-client/client/bin/logfetch | Bin 217231 -> 216887 bytes abs/mv-core/hobbit-client/client/bin/msgcache | Bin 169865 -> 169641 bytes abs/mv-core/hobbit-client/client/bin/orcahobbit | Bin 173135 -> 172935 bytes abs/mv-core/mp_all.sh | 31 + .../myth/release-fixes/Midnight-blue/PKGBUILD | 21 - .../myth/release-fixes/Midnight-wide/PKGBUILD | 21 - .../MythVantage-menu/HOST_SETTINGS.xml | 71 - .../MythVantage-menu/util_menu.xml | 121 -- .../MythVantage-menu/util_menu.xml.mv | 106 -- .../release-fixes/MythVanage-mythmenu/PKGBUILD | 15 - .../myth/release-fixes/basic-amber/PKGBUILD | 20 - abs/mv-core/myth/release-fixes/basic-blue/PKGBUILD | 20 - .../myth/release-fixes/basic-green/PKGBUILD | 20 - .../myth/release-fixes/basic-purple/PKGBUILD | 20 - abs/mv-core/myth/release-fixes/basic-red/PKGBUILD | 20 - abs/mv-core/myth/release-fixes/compile-plugins.sh | 17 - .../mythtv-release-fixes/3466-v1.patch | 240 ---- .../release-fixes/mythtv-release-fixes/PKGBUILD | 79 -- .../mythtv-release-fixes/dbconfig.patch | 19 - .../mythtv-release-fixes/debug_uitypes.cpp.patch | 21 - .../mythtv-release-fixes/debug_xmlparse.cpp.patch | 14 - .../mythtv-release-fixes/jump_snapshot.patch | 13 - .../mythtv-release-fixes/myth.find_orphans.pl | 260 ---- .../release-fixes/mythtv-release-fixes/myth.sh | 4 - .../release-fixes/mythtv-release-fixes/mythbackend | 37 - .../mythtv-release-fixes/mythbackend.sh | 117 -- .../mythtv-release-fixes/myththemedmenu.cpp.patch | 125 -- .../mythtv-release-fixes/myththemedmenu.h.patch | 25 - .../mythtv-release-fixes/mythtv.install | 59 - .../mythtv-release-fixes/pop_be_restart.cpp.patch | 51 - .../mythtv-release-fixes/pop_be_restart.h.patch | 10 - .../mythtv-release-fixes/reload.patch | 52 - .../mythtv-release-fixes/screenshot_jump.patch | 10 - .../mythtv-release-fixes/screenshots.diff | 458 ------- .../mythtv-release-fixes/screenshots2.diff | 467 ------- .../mythtv-release-fixes/smolt_jump.patch | 10 - .../myth/release-fixes/mythtv-themes/PKGBUILD | 36 - .../release-fixes/plugins/mytharchive/PKGBUILD | 41 - .../release-fixes/plugins/mythbrowser/PKGBUILD | 34 - .../release-fixes/plugins/mythcontrols/PKGBUILD | 36 - .../myth/release-fixes/plugins/mythflix/PKGBUILD | 36 - .../release-fixes/plugins/mythgallery/PKGBUILD | 36 - .../myth/release-fixes/plugins/mythgame/PKGBUILD | 36 - .../release-fixes/plugins/mythmovietime/PKGBUILD | 35 - .../myth/release-fixes/plugins/mythmusic/PKGBUILD | 39 - .../plugins/mythmusic/music_flac.patch | 293 ---- .../myth/release-fixes/plugins/mythnews/PKGBUILD | 34 - .../myth/release-fixes/plugins/mythphone/PKGBUILD | 42 - .../myth/release-fixes/plugins/mythsmolt/PKGBUILD | 27 - .../myth/release-fixes/plugins/mythvideo/PKGBUILD | 36 - .../release-fixes/plugins/mythweather/PKGBUILD | 37 - .../myth/release-fixes/plugins/mythweb/PKGBUILD | 34 - .../release-fixes/plugins/mythweb/dblogininit.inc | 6 - .../release-fixes/plugins/mythweb/mythweb.install | 37 - .../plugins/mythweb/mythweblighttpd.patch | 13 - .../myth/release-fixes/syth-lacquer-clean/PKGBUILD | 23 - .../myth/release-fixes/syth-lacquer-wide/PKGBUILD | 23 - abs/mv-core/myth/stable/Midnight-blue/PKGBUILD | 21 + abs/mv-core/myth/stable/Midnight-wide/PKGBUILD | 21 + .../MythVantage-menu/HOST_SETTINGS.xml | 71 + .../MythVantage-menu/util_menu.xml | 121 ++ .../MythVantage-menu/util_menu.xml.mv | 106 ++ .../myth/stable/MythVanage-mythmenu/PKGBUILD | 15 + abs/mv-core/myth/stable/basic-amber/PKGBUILD | 20 + abs/mv-core/myth/stable/basic-blue/PKGBUILD | 20 + abs/mv-core/myth/stable/basic-green/PKGBUILD | 20 + abs/mv-core/myth/stable/basic-purple/PKGBUILD | 20 + abs/mv-core/myth/stable/basic-red/PKGBUILD | 20 + abs/mv-core/myth/stable/mp_all.sh | 30 + abs/mv-core/myth/stable/mytharchive/PKGBUILD | 41 + abs/mv-core/myth/stable/mythbrowser/PKGBUILD | 34 + abs/mv-core/myth/stable/mythcontrols/PKGBUILD | 36 + abs/mv-core/myth/stable/mythflix/PKGBUILD | 36 + abs/mv-core/myth/stable/mythgallery/PKGBUILD | 36 + abs/mv-core/myth/stable/mythgame/PKGBUILD | 36 + abs/mv-core/myth/stable/mythmovietime/PKGBUILD | 35 + abs/mv-core/myth/stable/mythmusic/PKGBUILD | 39 + abs/mv-core/myth/stable/mythmusic/music_flac.patch | 293 ++++ abs/mv-core/myth/stable/mythnews/PKGBUILD | 34 + abs/mv-core/myth/stable/mythphone/PKGBUILD | 42 + abs/mv-core/myth/stable/mythsmolt/PKGBUILD | 27 + .../myth/stable/mythtv-release-fixes/3466-v1.patch | 240 ++++ .../myth/stable/mythtv-release-fixes/PKGBUILD | 79 ++ .../stable/mythtv-release-fixes/dbconfig.patch | 19 + .../mythtv-release-fixes/debug_uitypes.cpp.patch | 21 + .../mythtv-release-fixes/debug_xmlparse.cpp.patch | 14 + .../mythtv-release-fixes/jump_snapshot.patch | 13 + .../mythtv-release-fixes/myth.find_orphans.pl | 260 ++++ .../myth/stable/mythtv-release-fixes/myth.sh | 4 + .../myth/stable/mythtv-release-fixes/mythbackend | 37 + .../stable/mythtv-release-fixes/mythbackend.sh | 117 ++ .../mythtv-release-fixes/myththemedmenu.cpp.patch | 125 ++ .../mythtv-release-fixes/myththemedmenu.h.patch | 25 + .../stable/mythtv-release-fixes/mythtv.install | 59 + .../mythtv-release-fixes/pop_be_restart.cpp.patch | 51 + .../mythtv-release-fixes/pop_be_restart.h.patch | 10 + .../myth/stable/mythtv-release-fixes/reload.patch | 52 + .../mythtv-release-fixes/screenshot_jump.patch | 10 + .../stable/mythtv-release-fixes/screenshots.diff | 458 +++++++ .../stable/mythtv-release-fixes/screenshots2.diff | 467 +++++++ .../stable/mythtv-release-fixes/smolt_jump.patch | 10 + abs/mv-core/myth/stable/mythtv-themes/PKGBUILD | 36 + abs/mv-core/myth/stable/mythvideo/PKGBUILD | 36 + abs/mv-core/myth/stable/mythweather/PKGBUILD | 37 + abs/mv-core/myth/stable/mythweb/PKGBUILD | 34 + abs/mv-core/myth/stable/mythweb/dblogininit.inc | 6 + abs/mv-core/myth/stable/mythweb/mythweb.install | 37 + .../myth/stable/mythweb/mythweblighttpd.patch | 13 + .../myth/stable/syth-lacquer-clean/PKGBUILD | 23 + abs/mv-core/myth/stable/syth-lacquer-wide/PKGBUILD | 23 + abs/mv-core/mythvantage-live/PKGBUILD | 2 +- abs/mv-core/openssh/PKGBUILD | 63 - abs/mv-core/openssh/sshd | 40 - abs/mv-core/openssh/sshd.confd | 4 - abs/mv-core/openssh/sshd.pam | 10 - abs/mv-core/syslog-ng/PKGBUILD | 6 +- 145 files changed, 8056 insertions(+), 5705 deletions(-) create mode 100755 abs/mv-core/MythVantage-config/file_time_offset.py create mode 100755 abs/mv-core/MythVantage-config/mv_advanced.py create mode 100755 abs/mv-core/MythVantage-config/mv_common.py create mode 100755 abs/mv-core/MythVantage-config/mv_config.py create mode 100755 abs/mv-core/MythVantage-config/mv_hostype.py create mode 100755 abs/mv-core/MythVantage-config/mv_install.py create mode 100755 abs/mv-core/MythVantage-config/mv_ir.py create mode 100755 abs/mv-core/MythVantage-config/mv_misc.py create mode 100755 abs/mv-core/MythVantage-config/mv_network.py create mode 100755 abs/mv-core/MythVantage-config/mv_screensaver.py create mode 100755 abs/mv-core/MythVantage-config/mv_smolt.py create mode 100755 abs/mv-core/MythVantage-config/mv_software.py create mode 100755 abs/mv-core/MythVantage-config/mv_webuser.py create mode 100755 abs/mv-core/MythVantage-config/myth_user_call.py create mode 100755 abs/mv-core/MythVantage-config/systemconfig.py create mode 100644 abs/mv-core/mp_all.sh delete mode 100755 abs/mv-core/myth/release-fixes/Midnight-blue/PKGBUILD delete mode 100755 abs/mv-core/myth/release-fixes/Midnight-wide/PKGBUILD delete mode 100755 abs/mv-core/myth/release-fixes/MythVanage-mythmenu/MythVantage-menu/HOST_SETTINGS.xml delete mode 100644 abs/mv-core/myth/release-fixes/MythVanage-mythmenu/MythVantage-menu/util_menu.xml delete mode 100755 abs/mv-core/myth/release-fixes/MythVanage-mythmenu/MythVantage-menu/util_menu.xml.mv delete mode 100755 abs/mv-core/myth/release-fixes/MythVanage-mythmenu/PKGBUILD delete mode 100755 abs/mv-core/myth/release-fixes/basic-amber/PKGBUILD delete mode 100755 abs/mv-core/myth/release-fixes/basic-blue/PKGBUILD delete mode 100755 abs/mv-core/myth/release-fixes/basic-green/PKGBUILD delete mode 100755 abs/mv-core/myth/release-fixes/basic-purple/PKGBUILD delete mode 100755 abs/mv-core/myth/release-fixes/basic-red/PKGBUILD delete mode 100755 abs/mv-core/myth/release-fixes/compile-plugins.sh delete mode 100755 abs/mv-core/myth/release-fixes/mythtv-release-fixes/3466-v1.patch delete mode 100755 abs/mv-core/myth/release-fixes/mythtv-release-fixes/PKGBUILD delete mode 100644 abs/mv-core/myth/release-fixes/mythtv-release-fixes/dbconfig.patch delete mode 100644 abs/mv-core/myth/release-fixes/mythtv-release-fixes/debug_uitypes.cpp.patch delete mode 100644 abs/mv-core/myth/release-fixes/mythtv-release-fixes/debug_xmlparse.cpp.patch delete mode 100644 abs/mv-core/myth/release-fixes/mythtv-release-fixes/jump_snapshot.patch delete mode 100755 abs/mv-core/myth/release-fixes/mythtv-release-fixes/myth.find_orphans.pl delete mode 100755 abs/mv-core/myth/release-fixes/mythtv-release-fixes/myth.sh delete mode 100755 abs/mv-core/myth/release-fixes/mythtv-release-fixes/mythbackend delete mode 100755 abs/mv-core/myth/release-fixes/mythtv-release-fixes/mythbackend.sh delete mode 100644 abs/mv-core/myth/release-fixes/mythtv-release-fixes/myththemedmenu.cpp.patch delete mode 100644 abs/mv-core/myth/release-fixes/mythtv-release-fixes/myththemedmenu.h.patch delete mode 100755 abs/mv-core/myth/release-fixes/mythtv-release-fixes/mythtv.install delete mode 100644 abs/mv-core/myth/release-fixes/mythtv-release-fixes/pop_be_restart.cpp.patch delete mode 100644 abs/mv-core/myth/release-fixes/mythtv-release-fixes/pop_be_restart.h.patch delete mode 100644 abs/mv-core/myth/release-fixes/mythtv-release-fixes/reload.patch delete mode 100644 abs/mv-core/myth/release-fixes/mythtv-release-fixes/screenshot_jump.patch delete mode 100644 abs/mv-core/myth/release-fixes/mythtv-release-fixes/screenshots.diff delete mode 100644 abs/mv-core/myth/release-fixes/mythtv-release-fixes/screenshots2.diff delete mode 100644 abs/mv-core/myth/release-fixes/mythtv-release-fixes/smolt_jump.patch delete mode 100755 abs/mv-core/myth/release-fixes/mythtv-themes/PKGBUILD delete mode 100644 abs/mv-core/myth/release-fixes/plugins/mytharchive/PKGBUILD delete mode 100644 abs/mv-core/myth/release-fixes/plugins/mythbrowser/PKGBUILD delete mode 100644 abs/mv-core/myth/release-fixes/plugins/mythcontrols/PKGBUILD delete mode 100644 abs/mv-core/myth/release-fixes/plugins/mythflix/PKGBUILD delete mode 100644 abs/mv-core/myth/release-fixes/plugins/mythgallery/PKGBUILD delete mode 100644 abs/mv-core/myth/release-fixes/plugins/mythgame/PKGBUILD delete mode 100644 abs/mv-core/myth/release-fixes/plugins/mythmovietime/PKGBUILD delete mode 100644 abs/mv-core/myth/release-fixes/plugins/mythmusic/PKGBUILD delete mode 100644 abs/mv-core/myth/release-fixes/plugins/mythmusic/music_flac.patch delete mode 100644 abs/mv-core/myth/release-fixes/plugins/mythnews/PKGBUILD delete mode 100644 abs/mv-core/myth/release-fixes/plugins/mythphone/PKGBUILD delete mode 100644 abs/mv-core/myth/release-fixes/plugins/mythsmolt/PKGBUILD delete mode 100644 abs/mv-core/myth/release-fixes/plugins/mythvideo/PKGBUILD delete mode 100644 abs/mv-core/myth/release-fixes/plugins/mythweather/PKGBUILD delete mode 100755 abs/mv-core/myth/release-fixes/plugins/mythweb/PKGBUILD delete mode 100755 abs/mv-core/myth/release-fixes/plugins/mythweb/dblogininit.inc delete mode 100755 abs/mv-core/myth/release-fixes/plugins/mythweb/mythweb.install delete mode 100755 abs/mv-core/myth/release-fixes/plugins/mythweb/mythweblighttpd.patch delete mode 100755 abs/mv-core/myth/release-fixes/syth-lacquer-clean/PKGBUILD delete mode 100755 abs/mv-core/myth/release-fixes/syth-lacquer-wide/PKGBUILD create mode 100755 abs/mv-core/myth/stable/Midnight-blue/PKGBUILD create mode 100755 abs/mv-core/myth/stable/Midnight-wide/PKGBUILD create mode 100755 abs/mv-core/myth/stable/MythVanage-mythmenu/MythVantage-menu/HOST_SETTINGS.xml create mode 100644 abs/mv-core/myth/stable/MythVanage-mythmenu/MythVantage-menu/util_menu.xml create mode 100755 abs/mv-core/myth/stable/MythVanage-mythmenu/MythVantage-menu/util_menu.xml.mv create mode 100755 abs/mv-core/myth/stable/MythVanage-mythmenu/PKGBUILD create mode 100755 abs/mv-core/myth/stable/basic-amber/PKGBUILD create mode 100755 abs/mv-core/myth/stable/basic-blue/PKGBUILD create mode 100755 abs/mv-core/myth/stable/basic-green/PKGBUILD create mode 100755 abs/mv-core/myth/stable/basic-purple/PKGBUILD create mode 100755 abs/mv-core/myth/stable/basic-red/PKGBUILD create mode 100644 abs/mv-core/myth/stable/mp_all.sh create mode 100644 abs/mv-core/myth/stable/mytharchive/PKGBUILD create mode 100644 abs/mv-core/myth/stable/mythbrowser/PKGBUILD create mode 100644 abs/mv-core/myth/stable/mythcontrols/PKGBUILD create mode 100644 abs/mv-core/myth/stable/mythflix/PKGBUILD create mode 100644 abs/mv-core/myth/stable/mythgallery/PKGBUILD create mode 100644 abs/mv-core/myth/stable/mythgame/PKGBUILD create mode 100644 abs/mv-core/myth/stable/mythmovietime/PKGBUILD create mode 100644 abs/mv-core/myth/stable/mythmusic/PKGBUILD create mode 100644 abs/mv-core/myth/stable/mythmusic/music_flac.patch create mode 100644 abs/mv-core/myth/stable/mythnews/PKGBUILD create mode 100644 abs/mv-core/myth/stable/mythphone/PKGBUILD create mode 100644 abs/mv-core/myth/stable/mythsmolt/PKGBUILD create mode 100755 abs/mv-core/myth/stable/mythtv-release-fixes/3466-v1.patch create mode 100755 abs/mv-core/myth/stable/mythtv-release-fixes/PKGBUILD create mode 100644 abs/mv-core/myth/stable/mythtv-release-fixes/dbconfig.patch create mode 100644 abs/mv-core/myth/stable/mythtv-release-fixes/debug_uitypes.cpp.patch create mode 100644 abs/mv-core/myth/stable/mythtv-release-fixes/debug_xmlparse.cpp.patch create mode 100644 abs/mv-core/myth/stable/mythtv-release-fixes/jump_snapshot.patch create mode 100755 abs/mv-core/myth/stable/mythtv-release-fixes/myth.find_orphans.pl create mode 100755 abs/mv-core/myth/stable/mythtv-release-fixes/myth.sh create mode 100755 abs/mv-core/myth/stable/mythtv-release-fixes/mythbackend create mode 100755 abs/mv-core/myth/stable/mythtv-release-fixes/mythbackend.sh create mode 100644 abs/mv-core/myth/stable/mythtv-release-fixes/myththemedmenu.cpp.patch create mode 100644 abs/mv-core/myth/stable/mythtv-release-fixes/myththemedmenu.h.patch create mode 100755 abs/mv-core/myth/stable/mythtv-release-fixes/mythtv.install create mode 100644 abs/mv-core/myth/stable/mythtv-release-fixes/pop_be_restart.cpp.patch create mode 100644 abs/mv-core/myth/stable/mythtv-release-fixes/pop_be_restart.h.patch create mode 100644 abs/mv-core/myth/stable/mythtv-release-fixes/reload.patch create mode 100644 abs/mv-core/myth/stable/mythtv-release-fixes/screenshot_jump.patch create mode 100644 abs/mv-core/myth/stable/mythtv-release-fixes/screenshots.diff create mode 100644 abs/mv-core/myth/stable/mythtv-release-fixes/screenshots2.diff create mode 100644 abs/mv-core/myth/stable/mythtv-release-fixes/smolt_jump.patch create mode 100755 abs/mv-core/myth/stable/mythtv-themes/PKGBUILD create mode 100644 abs/mv-core/myth/stable/mythvideo/PKGBUILD create mode 100644 abs/mv-core/myth/stable/mythweather/PKGBUILD create mode 100755 abs/mv-core/myth/stable/mythweb/PKGBUILD create mode 100755 abs/mv-core/myth/stable/mythweb/dblogininit.inc create mode 100755 abs/mv-core/myth/stable/mythweb/mythweb.install create mode 100755 abs/mv-core/myth/stable/mythweb/mythweblighttpd.patch create mode 100755 abs/mv-core/myth/stable/syth-lacquer-clean/PKGBUILD create mode 100755 abs/mv-core/myth/stable/syth-lacquer-wide/PKGBUILD delete mode 100644 abs/mv-core/openssh/PKGBUILD delete mode 100755 abs/mv-core/openssh/sshd delete mode 100644 abs/mv-core/openssh/sshd.confd delete mode 100644 abs/mv-core/openssh/sshd.pam diff --git a/abs/mv-core/MythVantage-config/PKGBUILD b/abs/mv-core/MythVantage-config/PKGBUILD index 70c3029..60c3dca 100755 --- a/abs/mv-core/MythVantage-config/PKGBUILD +++ b/abs/mv-core/MythVantage-config/PKGBUILD @@ -1,31 +1,66 @@ pkgname=MythVantage-config pkgver=3.2 -pkgrel=153 +pkgrel=162 pkgdesc="The Gui-installer" -depends=(bc mysql-python expect curl dnsutils sg3_utils parted) + +depends=(bc libstatgrab mysql-python expect curl dnsutils parted + sg3_utils nmbscan system-templates rsync python-parted + ddcxinfo python-pexpect python-netifaces python-iplib mythinstall) + arch=('i686') -source=(mythinstall.bin install-ui.xml bpopup-ui.xml mythbeselect.bin install_proxy.sh install_functions.sh startx systemconfig.sh install_db_chroot.sh restore_default_settings.sh live-install.sh xconfig.sh timezip.py soundconfig.sh mythvantage-release issue autocard.py MythVantage.sh create_master.sh build_diskless.sh networkconfig.sh myth_user_call ) -install=live.install -build() { +source=(mythinstall.bin + install-ui.xml + bpopup-ui.xml + mythbeselect.bin + install_proxy.sh + install_functions.sh + startx systemconfig.sh + install_db_chroot.sh + restore_default_settings.sh + live-install.sh + xconfig.sh + timezip.py + soundconfig.sh + mythvantage-release + issue autocard.py + MythVantage.sh + create_master.sh + build_diskless.sh + networkconfig.sh + myth_user_call + mv_advanced.py + mv_common.py + mv_config.py + mv_ir.py + mv_misc.py + mv_network.py + mv_screensaver.py + mv_smolt.py + mv_software.py + mv_webuser.py + mv_hostype.py + systemconfig.py + myth_user_call.py + mv_install.py) + +install=live.install +build() { mkdir -p $startdir/pkg/etc mkdir -p $startdir/pkg/usr/share/mythtv/themes/default - -# new stuff MVDIR=$startdir/pkg/usr/MythVantage - mkdir $startdir/pkg/etc/profile.d - install -m 0755 MythVantage.sh $startdir/pkg/etc/profile.d/MythVantage.sh - mkdir -p $startdir/pkg/root/ + mkdir $startdir/pkg/etc/profile.d + install -m 0755 MythVantage.sh $startdir/pkg/etc/profile.d/MythVantage.sh + mkdir -p $startdir/pkg/root/ mkdir -p $MVDIR/bin mkdir -p $MVDIR/templates mkdir -p $MVDIR/etc #copy in all the installer specific stuff - #cp -rp ../templates $MVDIR/ rsync -r --exclude=.svn ../templates $MVDIR/ - install -m0700 myth_user_call $MVDIR/bin/myth_user_call + install -m0700 myth_user_call $MVDIR/bin/myth_user_call install -m 0755 install_proxy.sh $MVDIR/bin/install_proxy.sh install -m 0755 install_functions.sh $MVDIR/bin/install_functions.sh install -m 0755 systemconfig.sh $MVDIR/bin/systemconfig.sh @@ -38,9 +73,23 @@ build() { install -m 0755 autocard.py $MVDIR/bin/autocard.py install -m 0755 soundconfig.sh $MVDIR/bin/soundconfig.sh install -m 0755 networkconfig.sh $MVDIR/bin/networkconfig.sh - install -m 0755 create_master.sh $MVDIR/bin/create_master.sh - install -m 0755 build_diskless.sh $MVDIR/bin/build_diskless.sh - + install -m 0755 create_master.sh $MVDIR/bin/create_master.sh + install -m 0755 build_diskless.sh $MVDIR/bin/build_diskless.sh + install -m 0755 timezip.py $MVDIR/bin/timezip.py + install -m 0755 autocard.py $MVDIR/bin/autocard.py + install -m 0755 mv_config.py $MVDIR/bin/mv_config.py + install -m 0755 mv_install.py $MVDIR/bin/mv_install.py + install -m 0755 mv_advanced.py $MVDIR/bin/ + install -m 0755 mv_common.py $MVDIR/bin/ + install -m 0755 mv_ir.py $MVDIR/bin/ + install -m 0755 mv_misc.py $MVDIR/bin/ + install -m 0755 mv_network.py $MVDIR/bin/ + install -m 0755 mv_screensaver.py $MVDIR/bin/ + install -m 0755 mv_smolt.py $MVDIR/bin/ + install -m 0755 mv_software.py $MVDIR/bin/ + install -m 0755 mv_webuser.py $MVDIR/bin/ + install -m 0755 mv_hostype.py $MVDIR/bin/ + install -m 0755 systemconfig.py $MVDIR/bin/ #copy in the branding stuff install -m 0755 mythvantage-release $startdir/pkg/etc/mythvantage-release @@ -57,10 +106,6 @@ build() { ln -s MythVantage mythinstall cd - install -g mythtv -m 4750 mythbeselect.bin $MVDIR/bin/mythbeselect - - #install -g mythtv -m 750 mythinstall.bin $MVDIR/bin/mythinstall -# mkdir -p $startdir/pkg/usr/share/templates - #cp -rp ../templates $startdir/pkg/usr/share/ install -m 0755 startx $startdir/pkg/root/startx install -m 0755 live-install.sh $startdir/pkg/root/live-install.sh } diff --git a/abs/mv-core/MythVantage-config/checkout_MythVantage.sh b/abs/mv-core/MythVantage-config/checkout_MythVantage.sh index 54fad7e..9fbab15 100755 --- a/abs/mv-core/MythVantage-config/checkout_MythVantage.sh +++ b/abs/mv-core/MythVantage-config/checkout_MythVantage.sh @@ -1,7 +1,7 @@ #!/bin/bash MYDIR=`pwd` MYTHPATH="\/data\/LinHES-PKGBUILD\/abs\/core-testing\/mythtv\/stable\/mythtv\/src\/mythtv-0.21" -MYTHPATH="\/data\/LinHES-PKGBUILD\/abs\/mv-core\/myth\/release-fixes\/mythtv-release-fixes\/src\/mythtv" +MYTHPATH="\/data\/LinHES-PKGBUILD\/abs\/mv-core\/myth\/stable\/mythtv-release-fixes\/src\/mythtv" function setup_links { rm mythinstall.bin @@ -38,6 +38,7 @@ git checkout master dl_repo sed -i "s/^MYTHPATH.*$/MYTHPATH\=\"$MYTHPATH\"/g" $MYDIR/src/MythVantage-app/mythinstall/mythinstall.pro +sed -i "s/^MYTHPATH.*$/MYTHPATH\=\"$MYTHPATH\"/g" $MYDIR/src/MythVantage-app/mythbeselect/mythberestart.pro sed -i "s/\/\/#define __MVAPP__/#define __MVAPP__/g" $MYDIR/src/MythVantage-app/mythinstall/mv_common.h sed -i "s/LinHES/mythvantage/g" $MYDIR/src/MythVantage-app/mythinstall/mv_common.h diff --git a/abs/mv-core/MythVantage-config/file_time_offset.py b/abs/mv-core/MythVantage-config/file_time_offset.py new file mode 100755 index 0000000..f2973d0 --- /dev/null +++ b/abs/mv-core/MythVantage-config/file_time_offset.py @@ -0,0 +1,39 @@ +#!/usr/bin/python + + +import time +import os +import glob +import getopt +import sys +def main(argv): + filecount=0 +# root = "/tmp" +# offset = 4 + now = int(time.time()) + + + try: + opts, args = getopt.getopt(argv, "hs:d:") + except getopt.GetoptError: + sys.exit(2) + for opt, arg in opts: + if opt in ("-h", "--help"): + print "-s seconds -d /testdir" + print "default if 4 seconds" + sys.exit() + elif opt in ( "-s" ): + offset = int(arg) + elif opt in ("-d"): + root = arg + + for item in glob.glob(root+"/*"): + lastmodDate = os.path.getmtime(item) + tdiff= now-lastmodDate + #print tdiff, offset + + if tdiff > offset: + filecount+=1 + print filecount +if __name__ == "__main__": + main(sys.argv[1:]) diff --git a/abs/mv-core/MythVantage-config/install_functions.sh b/abs/mv-core/MythVantage-config/install_functions.sh index 1d217e9..0bc0591 100755 --- a/abs/mv-core/MythVantage-config/install_functions.sh +++ b/abs/mv-core/MythVantage-config/install_functions.sh @@ -1,5 +1,6 @@ #!/bin/bash . /etc/profile + disk=$2 mountpoint=new_boot @@ -10,9 +11,11 @@ CMDLINE=$(cat /proc/cmdline) hostname=`hostname` MYSQLCMD_C="mysql -u$MYTHDBUSER -p$MYTHTVPASSWD mythconverg -B --exec" BASE="" +found_remote=1 function update_db_settings () { + printhl " setting database value $1 to $2 for $hostname" $MYSQLCMD_C "delete from settings where value='${1}' and hostname=\"$hostname\";" $MYSQLCMD_C "REPLACE INTO settings set value='${1}', data='${2}' , hostname=\"$hostname\";" } @@ -29,13 +32,34 @@ theme=($THEMES) # Read into array variable. num_themes=${#theme[*]} # Count how many elements. pick=${theme[$((RANDOM%num_themes))]} -echo "Selected $pick as the theme" +printhl " Selected $pick as the theme" update_db_settings Theme "$pick" } +function parse_cmdline_2_db(){ + echo $CMDLINE | grep -q displayres + if [ $? -eq 0 ] + then + TEMPVAR=${CMDLINE#*displayres=} + update_db_settings HostXres $TEMPVAR + fi + +} + + +function bootsplash_setup (){ + echo $CMDLINE | grep -q splash=silent + if [ $? -eq 0 ] + then + update_db_settings Hostbootsplash 1 + else + update_db_settings Hostbootsplash 0 + fi +} + function setupremote { - mv $BASE/etc/lircd.conf $BASE/etc/lircd.conf.`date +%Y-%m-%d-%H-%M` + [ -e $BASE/etc/lircd.conf ] && mv -f $BASE/etc/lircd.conf $BASE/etc/lircd.conf.`date +%Y-%m-%d-%H-%M` if [ -d $TEMPLATES/remotes/$Remotetype ] then cd $TEMPLATES/remotes/$Remotetype @@ -43,110 +67,162 @@ function setupremote { do cat $i >> $BASE/etc/lircd.conf done - cp lircrc $BASE/etc/lircrc - chmod 755 /etc/lircrc + cp -f lircrc* $BASE/etc/lircrc 2> /dev/null + [ -e /etc/lircrc ] && chmod 755 /etc/lircrc update_db_settings HostRemoteType "$Remotetype" - /usr/sbin/lircd -d /dev/lirc0 - mkdir /root/.mythtv - ln -s /etc/lircrc /root/.mythtv/lircrc - else + #special case for special remote + printhl "Starting with support for $Remotetype" + if [ "$Remotetype" == "dvico" ] + then + /usr/sbin/lircd -d /dev/usb/hiddev0 --driver=dvico + elif [ "$Remotetype" == "Dvico-Dual-Digital4-rev2" ] + then + /usr/sbin/lircd -d /dev/input/irremote --driver=devinput + else + /usr/sbin/lircd -d /dev/lirc0 + fi + [ -e /root/.mythtv ] || mkdir /root/.mythtv 2>/dev/null + ln -s /etc/lircrc /root/.mythtv/lircrc 2>/dev/null + else echo "Couldn't open directory $TEMPLATES/remotes/$Remotetype" fi } function scan_for_hpg_receiver() { -echo "Scanning for Hauppauge receiver" +printhl " Scanning for Hauppauge receiver" for hpgid in `lspci -nm -d4444: |cut -d" " -f6- |tr -d '"'|tr " " :` do line=`grep $hpgid $TEMPLATES/remotes/i2c.id` - if [ $? = 0 ] + if [ $? -eq 0 ] then modprobe lirc_i2c FoundReceiverType=`echo "$line"|cut -d"|" -f2` Remotetype=`echo "$line"|cut -d"|" -f4` statusline=`echo "$line"|cut -d"|" -f2,4` - echo "Found $statusline , $Remotetype" + #echo "Found $statusline , $Remotetype" + echo "Found Hauppauge" + echo "-------------------" + echo " 1) Hauppauge black" + echo " 2) Hauppauge silver" + echo " 3) hauppauge-grey-g3" + echo "" + read -p "Which Hauppauge remote (5 sec): " -t 5 ans + echo + if [ "$?" != "0" ]; then + echo + echo "Using default $Remotetype" + else + case $ans in + 1) Remotetype="hauppauge-black";; + 2) Remotetype="hauppauge-silver";; + 3) Remotetype="hauppauge-grey-g3" ;; + *) echo "Using default $Remotetype";; + esac + fi update_db_settings HostReceiverType $FoundReceiverType + found_remote=0 setupremote break fi - done } + function scan_for_usb_remote () { -echo "Scanning for usb receiver/remote" +#found_remote=1 +printhl " Scanning for usb receiver/remote" while read line do - USBID=`echo "$line"|cut -f1` + USBID=`echo "$line"|cut -d"|" -f1` lsusb -d "$USBID" > /dev/null 2>/dev/null - if [ $? = 0 ] + if [ $? -eq 0 ] then - # Remotetype=`echo "$line"|cut -f2` - Remotetype=`echo "$line"|cut -d"|" -f2` - echo "found $Remotetype" + Remotetype=`echo "$line"|cut -d"|" -f2` + printhl "Found $Remotetype" setupremote + found_remote=0 break fi done <$BASE/$TEMPLATES/remotes/receiver_usb.id -scan_for_hpg_receiver +if [ $found_remote -eq 1 ] +then + scan_for_hpg_receiver +fi +printhl " Scanning for TatIR" +if lsusb | grep 04d8:0004 > /dev/null 2>/dev/null +then + /usr/bin/PyroUsb.py > /dev/null 2>&1 & +fi + +if [ $found_remote -eq 1 ] +then +#No remote found_remote + update_db_settings HostRemoteType "no_remote" +fi + } function rest_of_network () { #netmask - echo $CMDLINE | grep -q netmask - if [ $? = 0 ] + echo $CMDLINE | grep -q cnetmask + if [ $? -eq 0 ] then - TEMPVAR=${CMDLINE#*netmask=} + TEMPVAR=${CMDLINE#*cnetmask=} NETMASK=${TEMPVAR%% *} /sbin/ifconfig eth0 $IP netmask $NETMASK nm=`/usr/bin/nmconv.py -obits $NETMASK` NETMASK="/$nm $NETMASK" - echo $NETMASK + #echo $NETMASK update_db_settings HostNETMASK${MYTHDEFAULT} "$NETMASK" else - echo "netmask not found" + printhl " Netmask not found" fi #gateway - echo $CMDLINE | grep -q gateway - if [ $? = 0 ] + echo $CMDLINE | grep -q cgateway + if [ $? -eq 0 ] then - TEMPVAR=${CMDLINE#*gateway=} + TEMPVAR=${CMDLINE#*cgateway=} GATEWAY=${TEMPVAR%% *} /sbin/route add default gw $GATEWAY update_db_settings HostGW${MYTHDEFAULT} "$GATEWAY" - - else - echo "gateway not found" + else + printhl " Gateway not found" fi #dns - echo $CMDLINE | grep -q dns - if [ $? = 0 ] + echo $CMDLINE | grep -q cdns + if [ $? -eq 0 ] then - TEMPVAR=${CMDLINE#*dns=} + TEMPVAR=${CMDLINE#*cdns=} DNS=${TEMPVAR%% *} echo "nameserver $DNS" >> /etc/resolv.conf update_db_settings HostDNS${MYTHDEFAULT} "$DNS" else - echo "DNS not found" + printhl " DNS not found" + fi + echo $CMDLINE | grep -q chostname + if [ $? -eq 0 ] + then + TEMPVAR=${CMDLINE#*chostname=} + MYHOST=${TEMPVAR%% *} + update_db_settings HostMyhostname "$MYHOST" + else + printhl " hostname not found" fi } function init_network { - echo $CMDLINE |grep -q netdev - if [ $? = 0 ] + echo $CMDLINE |grep -q cnetdev + if [ $? -eq 0 ] then - TEMPVAR=${CMDLINE#*netdev=} + TEMPVAR=${CMDLINE#*cnetdev=} MYTHDEFAULT=${TEMPVAR%% *} else MYTHDEFAULT="eth0" fi - - echo $CMDLINE | grep -q ip - if [ $? = 0 ] + if [ $? -eq 0 ] then update_db_settings HostDefaulteth0 0 update_db_settings HostDefault${MYTHDEFAULT} 1 @@ -155,9 +231,9 @@ function init_network { update_db_settings HostActiveonboot${MYTHDEFAULT} 1 update_db_settings HostNetDevice ${MYTHDEFAULT} - TEMPVAR=${CMDLINE#*ip=} + TEMPVAR=${CMDLINE#*cip=} IP=${TEMPVAR%% *} - if [ x$IP = xdhcp ] + if [ "$IP" == "dhcp" ] then /sbin/dhcpcd $MYTHDEFAULT update_db_settings HostUseDHCP${MYTHDEFAULT} 0 @@ -168,11 +244,74 @@ function init_network { rest_of_network fi fi + + + + +} + +function dev_up_check(){ + /sbin/ifconfig $1 1>/dev/null 2>/dev/null + status=$? + if [ $status -eq 1 ] + then + return 0 + else + devip=`/sbin/ifconfig | grep -C1 $1| grep inet|grep -v inet6 | cut -d: -f2 | awk '{ print $1}'` + if [ "x$devip" = "x" ] + then + return 1 + else + return 0 + fi + fi +} + +function request_dhcp(){ + echo $CMDLINE |grep -q cnetdev + if [ $? -eq 0 ] + then + TEMPVAR=${CMDLINE#*cnetdev=} + MYTHDEFAULT_NET=${TEMPVAR%% *} + else + MYTHDEFAULT_NET="eth0" + fi + for ndev in eth0 eth1 wlan0 wlan1 ath0 + do + dev_up_check $ndev + status=$? + if [ $status -eq 1 ] + then + #interface is down, lets see if dhcp responds + dhcpcd -Td -t2 $ndev -h "" > /tmp/dhcpinfo.$ndev + #check for hostname here + + TEMPVAR=`grep new_ip_address /tmp/dhcpinfo.$ndev |cut -d\= -f2` + if [ ! x$TEMPVAR = x ] + then + update_db_settings HostIP$ndev "$TEMPVAR" + TEMPVAR=`grep new_subnet_mask /tmp/dhcpinfo.$ndev |cut -d\= -f2` + nm=`/usr/bin/nmconv.py -obits $TEMPVAR` + TEMPVAR="/$nm $TEMPVAR" + update_db_settings HostNETMASK$ndev "$TEMPVAR" + TEMPVAR=`grep new_routers /tmp/dhcpinfo.$ndev |cut -d\= -f2` + update_db_settings HostGW$ndev "$TEMPVAR" + TEMPVAR=`grep new_domain_name_servers /tmp/dhcpinfo.$ndev |cut -d\= -f2` + update_db_settings HostDNS$ndev "$TEMPVAR" + fi + fi + done + TEMPVAR=`grep new_host_name /tmp/dhcpinfo.$MYTHDEFAULT_NET |cut -d\= -f2` + if [ ! x$TEMPVAR = x ] + then + update_db_settings HostMyhostname "$TEMPVAR" + fi + } function init_remote { echo $CMDLINE | grep -q remoteport - if [ $? = 0 ] + if [ $? -eq 0 ] then TEMPVAR=${CMDLINE#*remoteport=} REMOTEPORT=${TEMPVAR%% *} @@ -190,7 +329,7 @@ function init_remote { fi echo $CMDLINE | grep -q remote - if [ $? = 0 ] + if [ $? -eq 0 ] then TEMPVAR=${CMDLINE#*remote=} Remotetype=${TEMPVAR%% *} @@ -202,302 +341,4 @@ function init_remote { #----------------------- -#set -x - -partition_it () { -ROOT=$1 -DATA=$2 -SWAP=$3 - -if [ ! x$SWAP = xNO ] - then - SWAPLINE=",$SWAP,S" - MKSWAPCMD="mkswap /dev/${disk}2" - else - SWAPLINE=",0,0" - MKSWAPCMD="" - fi - -if [ x$DATA = xALL ] -then - DATALINE=",,," - EXTRALINE="" -else - DATALINE=",$DATA,," - EXTRALINE=",0,," -fi -sfdisk /dev/$disk -uM << EOF -,$1,,* -$SWAPLINE -$DATALINE -$EXTRALINE -; -EOF - -$MKSWAPCMD -#sfdisk -l /dev/$disk -} - - -function fscmd () { - -case $1 in - reiserfs) FSCMDC="mkreiserfs -q -l ROOT" - ;; - - xfs) FSCMDC="mkfs -t $1 -f" - ;; - ext3) FSCMDC="mkfs.ext3" - ;; - jfs) FSCMDC="mkfs.jfs -q " - ;; - *) FSCMDC="echo $1" - ;; - -esac -} - -format_it () { - fscmd $1 - $FSCMDC /dev/${disk}1| tr -s [:cntrl:] \\n - fscmd $2 - $FSCMDC /dev/${disk}3| tr -s [:cntrl:] \\n -} - -mount_it () { - if [ ! -d \/$mountpoint ] - then - mkdir \/$mountpoint - fi - mount /dev/${disk}1 \/$mountpoint - mkdir \/$mountpoint/data - mount /dev/${disk}3 \/$mountpoint/data -} - -unmount_it () { - umount /dev/${disk}1 - umount /dev/${disk}3 -} - -#linux-live version of copy_it -# copy_it () { -# #rsync -rvp --exclude=/mnt --exclude=\/$mountpoint / \/$mountpoint -# lzmdir=`find /mnt/live/mnt -name data.lzm -execdir pwd \;| tail -1` -# cd $lzmdir -# if [ x$1 = xALL ] -# then -# LIST=`ls *.lzm` -# else -# LIST=`echo $1 | tr , " " ` -# fi -# -# for i in $LIST -# do -# echo "Transferring $i" -# lzm2dir $i \/$mountpoint -# done -# for i in sys proc dev tmp -# do -# mkdir /$mountpoint/$i -# -# done -# chmod 777 /$mountpoint/tmp -# mknod /$mountpoint/dev/null c 1 3 -# mknod /$mountpoint/dev/null c 1 5 -# mknod /$mountpoint/dev/console c 5 1 -# chmod +s /$mountpoint/usr/bin/Xorg -# chmod +s /$mountpoint/usr/bin/crontab -# chmod +s /$mountpoint/usr/bin/sudo -# chmod +s /$mountpoint/bin/mount -# -# } - -copy_it () { - - if [ x$1 = xALL ] - then - echo "Transferring system" - unsquashfs -f -d /$mountpoint /.livesys/medium/system.sqf - else - echo "Upgrading system" - unsquashfs -e $1 -f -d /$mountpoint /.livesys/medium/system.sqf - fi - - for i in sys proc dev tmp - do - mkdir /$mountpoint/$i - - done - chmod 777 /$mountpoint/tmp - mknod /$mountpoint/dev/null c 1 3 - mknod /$mountpoint/dev/null c 1 5 - mknod /$mountpoint/dev/console c 5 1 - chmod +s /$mountpoint/usr/bin/Xorg - chmod +s /$mountpoint/usr/bin/crontab - chmod +s /$mountpoint/usr/bin/sudo - chmod +s /$mountpoint/bin/mount - -} - - -device_node () { - cd /dev - mknod hda b 3 0 - mknod hda1 b 3 1 - mknod hda2 b 3 2 - mknod hda3 b 3 3 - mknod hda4 b 3 4 - mknod hda5 b 3 5 - mknod hda6 b 3 6 - mknod hda7 b 3 7 - mknod hda8 b 3 8 - mknod sda b 8 0 - mknod sda1 b 8 1 - mknod sda2 b 8 2 - mknod sda3 b 8 3 - mknod sda4 b 8 4 - mknod sda5 b 8 5 - mknod sda6 b 8 6 - mknod sda7 b 8 7 - mknod sda8 b 8 8 - mknod sdb b 8 16 - mknod sdb1 b 8 17 - mknod sdb2 b 8 18 - mknod sdb3 b 8 19 - mknod sdb4 b 8 20 - mknod sdb5 b 8 21 - mknod sdb6 b 8 22 - mknod sdb7 b 8 23 - mknod sdb8 b 8 24 - cd - - } - - -function create_fstab() -{ -echo "creating fstab" -cat > /$mountpoint/etc/fstab << EOF -# -none /dev/pts devpts defaults 0 0 -none /dev/shm tmpfs defaults 0 0 -/dev/cdrom /media/cdrom auto ro,user,noauto,unhide 0 0 -/dev/dvd /media/dvd auto ro,user,noauto,unhide 0 0 -UUID=ROOTUID / auto defaults 0 1 -UUID=DATAUID /data auto defaults 0 1 -UUID=SWAPUID swap swap defaults 0 0 -EOF - - -} - - -function find_uuid() { - uuid=`blkid -s UUID /dev/$1 |cut -d= -f2|cut -d\" -f2` - echo $uuid for $1 - FOUNDUUID=$uuid - -} - - -case $1 in - partition_it ) - #drive ROOT DATA(ALL) SWAP(NO) - for i in `mount | grep $disk | awk ' { print $1 } '` - do - umount $i - done - swap=`cat /etc/fstab |grep $disk|grep swap|awk ' { print $1 } '` - swapoff $swap - partition_it $3 $4 $5 - exit 0 - - ;; - format_it ) - device_node - - format_it $3 $4 - exit 0 - ;; - mount_it ) - mount_it - ;; - copy_it ) - copy_it $3 - - ;; - - - fstab_fix_it) - echo $@ >> /tmp/fstab.input - if [ ! -f /$mountpoint/etc/fstab ] - then - create_fstab - fi - - if [ x$3 = xUPGRADE ] - then - echo "copying old fstab" - cp -f /tmp/etc/fstab /$mountpoint/etc/fstab - FOUNDUUID="" - find_uuid ${2}1 - ROOTUUID=$FOUNDUUID - sed -i -e "s/.*\/\ .*$/UUID=$ROOTUUID \/ auto defaults,noatime 0 1/g" /$mountpoint/etc/fstab - else - #search for UUID - FOUNDUUID="" - find_uuid ${2}1 - ROOTUUID=$FOUNDUUID - - echo "--" - echo $ROOTUUID - echo "--" - - FOUNDUUID="" - find_uuid ${2}2 - SWAPUUID=$FOUNDUUID - - FOUNDUUID="" - find_uuid ${2}3 - DATAUUID=$FOUNDUUID - sed -i -e "s/.*\/\ .*$/UUID=$ROOTUUID \/ auto defaults,noatime 0 1/g" /$mountpoint/etc/fstab - sed -i -e "s/.*\/data\ .*$/UUID=$DATAUUID \/data auto defaults,noatime 0 1/g" /$mountpoint/etc/fstab - sed -i -e "s/.*swap\ .*$/UUID=$SWAPUUID swap swap defaults 0/g" /$mountpoint/etc/fstab - fi - - ;; - - grub_it ) - #linux-live - #grub-install --recheck --no-floppy --root-directory=/$mountpoint /dev/$disk - grub-install --recheck --no-floppy --root-directory=/$mountpoint "(hd0)" - - - #fixing fstab -# if [ ! -f /$mountpoint/etc/fstab ] -# then -# cp -f /$mountpoint/etc/fstab.install /$mountpoint/etc/fstab -# fi -# sed -e s/hda/$disk/g /$mountpoint/etc/fstab > /tmp/newfstab -# cp -f /tmp/newfstab /$mountpoint/etc/fstab - - #fixing grub/menu.1st - FOUNDUUID="" - find_uuid ${disk}1 - ROOTUUID=$FOUNDUUID -# sed -e s/hda/$disk/g /$mountpoint/boot/grub/menu.lst > /tmp/menu.lst - - sed -i -e "s/root=.\S*/root=\/dev\/disk\/by-uuid\/$ROOTUUID/g" /$mountpoint/boot/grub/menu.lst - - -#cp -f /tmp/menu.lst /$mountpoint/boot/grub/menu.lst - #cp /etc/X11/xorg.conf /$mountpoint/etc/X11/xorg.conf - mkinitcpio -g /$mountpoint/boot/kernel26.img - ;; - umount_it) - - umount \/$mountpoint/data - umount \/$mountpoint -esac - - diff --git a/abs/mv-core/MythVantage-config/install_proxy.sh b/abs/mv-core/MythVantage-config/install_proxy.sh index 9019349..71b675b 100755 --- a/abs/mv-core/MythVantage-config/install_proxy.sh +++ b/abs/mv-core/MythVantage-config/install_proxy.sh @@ -1,6 +1,6 @@ #!/bin/bash -#chroot and /tmp -MVHOSTNAME=mvi +export TERM=vt100 +MVHOSTNAME=larch5 . /etc/profile TEMP_TEMPLATES=/tmp/templates disk=$2 @@ -14,475 +14,177 @@ run=$MV_ROOT/bin/install_functions.sh . /etc/systemconfig 2>/dev/null . $MV_ROOT/bin/networkconfig.sh CMDLINE=$(cat /proc/cmdline) - -#TEMPNET="Hostip"$default_interface -#eval MYTHIP=\$${TEMPNET} +BACKUPFILE="/myth/backup/mythconverg.sql.gz" progress () { -mypercent=`echo "$1" | cut -d. -f1` -if [ x$mypercent = x ] -then -echo "" > /tmp/.install_percent -else -echo "${mypercent}% complete" > /tmp/.install_percent -fi - - -} - -function apply_new_auth () { -#check if file is present - if [ -f /root/myth_user_call.out ] - then - #read in file, running each command in chroot - exec 4 /tmp/user_auth.update - fi - done - rm -f /root/myth_user_call.out - else - echo "No new password changes to apply" - fi -} - - - -full_install () { - if [ -f /tmp/.this_is_upgrade ] - then - rm /tmp/.this_is_upgrade - fi - echo "Partitioning $disk" > /tmp/.install_state - progress 1 - sleep 1 - $run partition_it $disk $rootsize $datasize $swapsize - - echo "Formatting $disk" > /tmp/.install_state - progress 2 - sleep 1 - $run format_it $disk $rootfs $datafs - - echo "Preparing $disk" > /tmp/.install_state - progress 3 - sleep 1 - $run mount_it $disk - - startsize=`statgrab -M disk.|grep $disk.write_bytes|cut -d= -f 2|tr -d " "` - - echo "STARTSIZE=$startsize">/tmp/.startsize.io - echo "Installing data" > /tmp/.install_state - - sleep 1 - $run copy_it $disk ALL - rm $mountpoint/etc/fstab - $run fstab_fix_it $disk $rootfs $datafs FULL_INSTALL - - progress 99 - sleep 1 - $run grub_it $disk - - - echo "Configuring system" > /tmp/.install_state - progress 100 - sleep 1 - cp -f /etc/systemconfig "$mountpoint"/etc - #run save syssettings to save settings, then copy to new mountpoint - $MV_ROOT/bin/restore_default_settings.sh -c save -t syssettings -h $MVHOSTNAME -d 127.0.0.1 - SE=$TEMPLATES/settings/syssettings - mkdir -p ${mountpoint}$SE - cp -rp $SE/* ${mountpoint}$SE/ - chown root:mythtv "$mountpoint"/etc/systemconfig - chown -R mythtv:mythtv ${mountpoint}$SE - - chmod -R 775 ${mountpoint}$SE - chmod 775 "$mountpoint"/etc/systemconfig - #copy over any updates that might have occured - cp -f $MV_ROOT/bin/*.sh "$mountpoint"$MV_ROOT/bin/ - chmod -R 755 ${mountpoint}/root - cp /etc/mtab "$mountpoint"/etc/mtab - apply_new_auth - mkdir -p $mountpoint/var/log/func - mkdir -p $mountpoint/var/log/certmaster - - if [ $SystemType = "Master_backend" -o $SystemType = "Standalone" ] + mypercent=`echo "$1" | cut -d. -f1` + if [ x$mypercent = x ] then - #installing DB to local machine - #turn off old live database, so the chroot one can start - /etc/rc.d/mysqld stop - mount --bind /dev "$mountpoint/dev" - chroot "$mountpoint" "$MV_ROOT/bin/install_db_chroot.sh" > /tmp/chrootdb.out - chroot "$mountpoint" $MV_ROOT/bin/systemconfig.sh misc,hostype,network,advanced,this_is_install - echo "stopping mysql in chroot" - chroot "$mountpoint" /etc/rc.d/mysqld stop - umount "$mountpoint/dev" - - #/etc/rc.d/mysqld start + echo "" > /tmp/.install_percent else - #update remotedb with this host settings - chroot "$mountpoint" DISPLAY=127.0.0.1:0 /usr/local/bin/MythVantage -t restore,default_1 - chroot "$mountpoint" $MV_ROOT/bin/restore_default_settings.sh -c restore -t syssettings - if [ ! $? = 0 ] - then - touch $mountpoint/tmp/.dbsysfailed - chmod 777 $mountpoint/tmp/.dbsysfailed - else - #Run second time - chroot "$mountpoint" $MV_ROOT/bin/systemconfig.sh misc,hostype,network,advanced,this_is_install - chroot "$mountpoint" $MV_ROOT/bin/restore_default_settings.sh -c ACCESSCONTROL - fi + echo "${mypercent}% complete" > /tmp/.install_percent fi - chroot "$mountpoint" $MV_ROOT/bin/systemconfig.sh advanced - echo "Done" > /tmp/.install_state - cp /tmp/mythvantage_install.log $mountpoint/var/log/ - $run unmount_it $disk -} - -function createsquashlist(){ -if [ -f $1 ] -then - rm -f -$1 -fi -for i in bin boot etc home lib opt root sbin usr var -do -echo $i >> $1 -done - - } - - -function upgrade () { - touch /tmp/.this_is_upgrade - - if [ ! x$rootfs = "xDo_not_format" ] - then - echo "Formatting $disk" > /tmp/.install_state - progress 2 - sleep 1 - $run format_it $disk $rootfs NO - fi - echo "Preparing $disk" > /tmp/.install_state - progress 3 - sleep 1 - $run mount_it $disk - startsize=`statgrab -M disk.|grep $disk.write_bytes|cut -d= -f 2|tr -d " "` - echo "STARTSIZE=$startsize">/tmp/.startsize.io - echo "Installing data" > /tmp/.install_state - sleep 1 - cp -rf /tmp/etc /new_boot/etc.old - cp -rf /tmp/oss /new_boot/var/lib/oss.old - #$run copy_it $disk bin.lzm,boot.lzm,etc.lzm,home.lzm,lib.lzm,opt.lzm,root.lzm,sbin.lzm,usr.lzm,var.lzm - SQUASHLIST="/tmp/.squashlist" - createsquashlist $SQUASHLIST - $run copy_it $disk $SQUASHLIST - #copy back ssh keys - - cp -rp /data/var/cache/pacman/pkg/* /new_boot/data/var/cache/pacman/pkg/ - cp -fp /new_boot/etc.old/ssh/*.pub /new_boot/etc/ssh/ - cp -fp /new_boot/etc.old/ssh/*.key /new_boot/etc/ssh/ - cp -fp /new_boot/etc.old/ssh/*key /new_boot/etc/ssh/ - - #funckeys - cadir=/etc/pki/func/ca - mv /new_boot/etc/pki /new_boot/etc/pki.new - cp -rp /new_boot/etc.old/pki /new_boot/etc/ - #passwd/shadow/group - cp -fp /new_boot/etc.old/passwd /new_boot/etc/ - cp -fp /new_boot/etc.old/shadow /new_boot/etc/ - cp -fp /new_boot/etc.old/group /new_boot/etc/ - - if [ x$rootfs = "xDo_not_format" ] - then - #rootfs=`grep ${disk}1 /tmp/etc/fstab |awk ' { print $3 } '` - rootfs=`grep \/\ /tmp/etc/fstab |awk ' { print $3 } '` - fi -# #datafs=`grep ${disk}3 /tmp/etc/fstab |awk ' { print $3 } '` -# datafs=`grep \/data /tmp/etc/fstab |awk ' { print $3 } '|head 1` - $run fstab_fix_it $disk UPGRADE - - echo "Writing boot sector" > /tmp/.install_state - progress 99 - sleep 1 - $run grub_it $disk - - - echo "Configuring system" > /tmp/.install_state - progress - sleep 1 - cp /etc/mtab "$mountpoint"/etc/mtab - cp -f /etc/systemconfig "$mountpoint"/etc - cp -f $MV_ROOT/bin/*.sh "$mountpoint"$MV_ROOT/bin/ - chmod -R 755 ${mountpoint}/root - chown root:mythtv "$mountpoint"/etc/systemconfig - chmod 775 "$mountpoint"/etc/systemconfig - mkdir -p $mountpoint/var/log/func - mkdir -p $mountpoint/var/log/certmaster - #mount /proc and /dev - mount --bind /dev "$mountpoint/dev" - mount --bind /proc "$mountpoint/proc" - - chroot "$mountpoint" $MV_ROOT/bin/systemconfig.sh misc,hostype,network,advanced,this_is_install - #wrap this in a network check_network, no need to update the db if the import worked. -##### do I need to start mysql? - chroot "$mountpoint" DISPLAY=127.0.0.1:0 /usr/local/bin/MythVantage -t restore,default_1 - chroot "$mountpoint" $MV_ROOT/bin/restore_default_settings.sh -c restore -t syssettings - # - #Run second time - chroot "$mountpoint" $MV_ROOT/bin/systemconfig.sh misc,hostype,network,advanced,this_is_install - chroot "$mountpoint" $MV_ROOT/bin/systemconfig.sh advanced,this_is_install - apply_new_auth - umount "$mountpoint/dev" - umount "$mountpoint/proc" - echo "Done" > /tmp/.install_state - cp /tmp/mythvantage_install.log $mountpoint/var/log/ - - $run unmount_it $disk -} - -function netboot-full_install () { - TEMPVAR=${CMDLINE#*nfsroot=} - NFSROOT=${TEMPVAR%% *} - NFSROOT=`echo $NFSROOT|cut -d: -f1` - MAC=`/sbin/ifconfig eth0|grep HWaddr| cut -d: -f2-|awk '{ print $3}'|tr : -` - URL="http://$NFSROOT:1337/diskless.py?HOSTNAME=$hostname&MAC=$MAC" - echo "calling $URL" - echo "Starting" > /tmp/.install_state - curl $URL - ${MV_ROOT}/bin/xconfig.sh -} - -function killdhcp () { -if [ -f /etc/dhcpc/dhcpcd-eth0.pid ] - then - pid=`cat /etc/dhcpc/dhcpcd-eth0.pid` - kill -9 $pid - rm -f /etc/dhcpc/dhcpcd-eth0.pid - rm -f /var/run/dhcpcd* - fi -if [ -f /var/run/dhcpcd-eth0.pid ] - then - pid=`cat /var/run/dhcpcd-eth0.pid` - kill -9 $pid - rm -f /var/run/dhcpcd-eth0.pid* - fi -ip address flush dev eth0 -} - - -# function vnc_check() { -# CMDLINE=$(cat /proc/cmdline) -# echo $CMDLINE |grep -q vnc -# USEVNC=$? -# echo $CMDLINE |grep -q nfsroot -# NETBOOT=$? -# echo $USEVNC -# if [ ! x$USEVNC = x0 ] -# then -# echo "not using vnc" -# if [ ! x$NETBOOT = x0 ] -# then -# echo "not using netboot" -# else -# echo "using netboot" -# USEVNC=0 -# fi -# -# else -# echo " using vnc" -# fi -# } - - -# function network_setup () { -# DEVICE=eth0 -# if [ ! -f /etc/systemconfig ] -# then -# exit 1 -# fi -# -# if [ ! x$USEVNC = x0 ] -# then -# echo "Resetting the network" -# killdhcp -# if [ $UseDHCP = 0 ] -# then -# /sbin/dhcpcd $DEVICE -# if [ ! $? = 0 ] -# then -# exit 2 -# fi -# fi -# else -# echo "using vnc/netboot, will not reset network" -# echo "nameserver $nameserver" > /etc/resolv.conf -# return 0 -# fi -# -# if [ $UseDHCP = 1 ] -# then -# -# /sbin/ifconfig $DEVICE $ip -# /sbin/route add default gw $route -# echo "nameserver $nameserver" > /etc/resolv.conf -# -# fi -# -# -# } - -function SANE_SYSETTINGS () { -sed -e '/HOSTrootfstype/d' \ - -e '/HOSTrootfstype/d' \ - -e '/HOSTdatafstype/d' \ - -e '/HOSTOSsize/d' \ - -e '/HostUseALLdata/d' \ - -e '/HOSTDATAsize/d' \ - -e '/HOSTuprootfstype/d' \ - -e '/HostUseSWAP/d' \ - -e '/HOSTSWAPsize/d ' /tmp/templates/settings/syssettings/settings.txt > /tmp/settings.new - mv /tmp/settings.new /tmp/templates/settings/syssettings/settings.txt -} - case $1 in - full_install_it ) full_install ;; - - NETBOOT) -echo "-----------------------------------------------------------------------3-----" - netboot-full_install ;; - - find_update) - #TRY TO mount first partition of drive - #copy /etc/systemconfig to live, import settings into db - #umount drive - $run mount_it $disk - if [ -f /new_boot/etc/systemconfig ] - then - ###########ADD templates - mkdir -p $TEMP_TEMPLATES - cp -pr /new_boot/$TEMPLATES $TEMP_TEMPLATES - SANE_SYSETTINGS - cp -rp $TEMP_TEMPLATES/settings $TEMPLATES/ - - - cp /new_boot/etc/systemconfig /etc/systemconfig - cp -rf /new_boot/etc /tmp/etc - cp -rf /new_boot/var/lib/oss /tmp/oss - - $MV_ROOT/bin/restore_default_settings.sh -c restore -t syssettings -h $MVHOSTNAME -d 127.0.0.1 - fi - $run umount_it $disk + full_install_it ) + mv_install.py --rootdisk=$disk --rootfs=$rootfs --rootsize=$rootsize --datafs=$datafs --datasize=$datasize --datadisk=$disk --swapsize=$swapsize -c full_install + rc=$? + echo "mv_install.py exit code $rc" + if [ $rc != 0 ] + then + echo "mv_install error" >> /tmp/.install_error + fi + exit $rc ;; - upgrade_it) - #"$MV_ROOT/bin/install_proxy.sh upgrade_it " + install_drive + " " + rootfs + "&" - upgrade - + NETBOOT) + echo "-----------------------------------------------------------------------3-----" + netboot-full_install ;; - disk_model_it) - model="unknown" - size="xxx" - case $2 in - - h* ) - model=`cat /proc/ide/$2/model` - ;; - s*) model=`sginfo /dev/$2|grep Product|awk ' { print $2 } '` - ;; - esac - size=`parted /dev/$2 print |grep Disk|awk ' { print $3 } ' ` - - - echo ""$model" $size " >/tmp/model + find_update) + mv_install.py --rootdisk=$disk -c find_upgrade ;; - network_check_it) - #Should never return from check_network - case $2 in - setup_network) - vnc_check - install_network_setup - ;; - - check_self) - myipdefault=`ifconfig | grep -C1 $default_interface| grep -v $default_interface | cut -d: -f2 | awk '{ print $1}'` - ping -c 1 $myipdefault - if [ ! $? = 0 ] - then - exit 3 - #can't ping yourself - fi - ;; - check_gw) - #check gateway - mygwdefault=`/sbin/route |grep $default_interface|grep UG|awk '{ print $2}'` - if [ ! x$mygwdefault = x ] - then - ping -c 1 $mygwdefault - if [ ! $? = 0 ] - then - exit 4 - fi - fi - ;; - check_ns) - #check nameserver - mydns=`cat /etc/resolv.conf|grep nameserver|head -1|awk '{ print $2}'` - ping -c 1 $mydns - if [ ! $? = 0 ] - then - exit 5 - fi - ;; - check_names) - host google.com - if [ ! $? = 0 ] - then - exit 6 - fi - ;; - host_names) - #if host is found, then check to see if it's online - #if not online, assume it's ok to use this hostname - - hout=`host $hostname` - status=$? - #found host, now grab the ip - if [ $status = 0 ] - then - hoip=`echo $hout|awk '{print $4}'` - ping -c 1 $hoip - if [ $? = 0 ] - then - status=0 - else - status=1 - fi - fi - if [ $status = 0 ] - then - exit 7 - fi - - - ;; + upgrade_it) + mv_install.py --rootdisk=$disk --rootfs=$rootfs -c upgrade + ;; - esac - exit 0 + disk_model_it) + model="unknown" + size="xxx" + case $2 in + h* ) + model=`cat /proc/ide/$2/model` + ;; + s*) model=`sginfo /dev/$2|grep Product|awk ' { print $2 } '` + ;; + esac + size=`parted /dev/$2 print |grep Disk|awk ' { print $3 } ' ` + echo ""$model" $size " >/tmp/model ;; + network_check_it) + #Should never return from check_network + case $2 in + setup_network) + vnc_check + install_network_setup + ;; + + check_self) + myipdefault=`ifconfig | grep -C1 $default_interface| grep -v $default_interface | cut -d: -f2 | awk '{ print $1}'` + echo "network check myself" + ifconfig + ping -c 1 $myipdefault + if [ ! $? = 0 ] + then + exit 3 + #can't ping yourself + fi + ;; + check_gw) + #check gateway + echo "network check gateway" + /sbin/route -n + mygwdefault=`/sbin/route -n |grep $default_interface|grep UG|awk '{ print $2}'` + echo "Default gateway seems to be $mygwdefault" + if [ ! x$mygwdefault = x ] + then + sleep 2 + ping -c 5 $mygwdefault + if [ ! $? = 0 ] + then + exit 4 + fi + fi + ;; + check_ns) + #check nameserver + echo " network check nameserver" + mydns=`cat /etc/resolv.conf|grep nameserver|head -1|awk '{ print $2}'` + ping -c 1 $mydns + if [ ! $? = 0 ] + then + exit 5 + fi + ;; + check_names) + echo "network check resolve names" + host google.com + if [ ! $? = 0 ] + then + exit 6 + fi + ;; + host_names) + #if host is found, then check to see if it's online + #if hoip matchs my ip assume it's ok + echo "network check my hostname $hostname" + hout=`host $hostname|head -n1` + status=$? + hoip=`echo $hout|awk '{print $4}'` + if [ $hoip = found: ] + then + status=1 + fi + + if [ $hoip = "out;" ] + then + #;; connection timed out; no servers could be reached + echo "DNS servers not found" + status=1 + fi + + unkownhost=`host unkown.linhes.org |head -n1 ` + unkownhostip=`echo $unkownhost |awk '{print $4}'` + + #found host, now grab the ip + if [ $status = 0 ] + then + hoip=`echo $hout|awk '{print $4}'` + /sbin/ifconfig -a |grep -q $hoip + if [ $? = 0 ] + then + echo "DNS ip matches on of my ips $hoip" + status=0 + else + if [ $unkownhostip = $hoip ] + then + echo "Bad DNS returning false hits" + echo "Assuming hostname is OK" + echo "DNS unknown: $unkownhostip" + echo " HOSTDNS: $hoip " + /sbin/ifconfig -a |grep "inet addr" + else + echo "IP in DNS but doesn't match mine, hostname is not safe to use" + echo "DNS:$hoip" + echo "HOST: " + /sbin/ifconfig -a |grep "inet addr" + status=7 + fi + fi + else + echo "Couldn't find hostname in DNS, must be safe to use" + status=0 + fi + exit $status + ;; + + esac + exit 0 + ;; - * ) - state=`cat /tmp/.install_state` + * ) + if [ -f /tmp/.install_state ] + then + state=`cat /tmp/.install_state` + else + state=" " + fi if [ x"${state}" = "xConfiguring system" ] then progress "" @@ -490,7 +192,7 @@ echo "-----------------------------------------------------------------------3-- if [ -f /tmp/.startsize.io ] then - . /tmp/.startsize.io + . /tmp/.startsize.io #finding the drive ddrive=`df | grep $mountpoint | head -n1 | awk -F/ ' { print $3 } ' | cut -d" " -f 1|cut -b1,2,3 ` used=`statgrab -M disk.|grep ${ddrive}.write_bytes|cut -d= -f 2|tr -d " "` @@ -509,10 +211,14 @@ echo "-----------------------------------------------------------------------3-- total=$TOTALSIZE fi percent=`echo "scale=2 ; ($used/$total) * 100 " |bc ` - cond2=$(echo "$percent > 100" |bc ) + cond2=$(echo "$percent > 98" |bc ) if [ $cond2 -eq 1 ] then - percent=100 + percent=98 + fi + if [ x"${state}" = "xDone" ] + then + percent=100 fi cond3=$(echo "$percent < 3" |bc ) if [ $cond3 -eq 0 ] @@ -521,7 +227,7 @@ echo "-----------------------------------------------------------------------3-- fi fi fi - ;; + ;; esac diff --git a/abs/mv-core/MythVantage-config/mv_advanced.py b/abs/mv-core/MythVantage-config/mv_advanced.py new file mode 100755 index 0000000..2b53d04 --- /dev/null +++ b/abs/mv-core/MythVantage-config/mv_advanced.py @@ -0,0 +1,384 @@ +# -*- coding: utf-8 -*- +import logging, os, re +import mv_common + +def setup_pacman(create_link): + if create_link: + logging.info(" Creating pacman link") + #LOOK + #This is not implmented yet, below is the bash code for reference + #if [ ! x$1 = x ] + #then + #ln -s ${BASE}/data/var ${BASE}/data/srv/httpd/htdocs/repo + #echo "creating the link for the pacman repo mirror" + #fi + + #for i in mv-core mv-core-testing mv-extra mv-extra-testing + #do + #echo "[$i]" > ${BASE}/etc/pacman.d/$i + ##add mirror if needed + #if [ x$PKG_MIRROR = x1 ] + #then + #echo " Server = http://$dbhost/repo/$i " >> ${BASE}/etc/pacman.d/$i + #fi + ##add user templates + #USERTEMPLATES="/data/home/mythtv/templates" + #if [ -f $USERTEMPLATES/sources/$i ] + #then + #echo "Adding user $i" + #cat $USERTEMPLATES/sources/$i >> ${BASE}/etc/pacman.d/$i + #fi + #cat $TEMPLATES/sources/$i >> ${BASE}/etc/pacman.d/$i + #echo "setting local mirror to $dbhost for $i " + #done + else: + logging.info(" Pacman link will not be created") + return + +def setup_ncid_client(dbhost,templatefile): + #This always runs + logging.debug(" Configuring ncid client with server %s",dbhost) + cmd = '''sed -e "s/^set Host.*$/set Host %s /" %s >/etc/ncid/ncid.conf''' %(dbhost, templatefile) + return + +def setup_ncid_daemon(port,templatefile,Runncidd): + logging.info(" Configuring callerid daemon") + if Runncidd == "1": + logging.debug(" Port: %s",port) + mv_common.cp_and_log("/etc/ncid/ncidd.conf",templatefile) + cmd = '''sed -e "s/.*set ttyport.*$/set ttyport = \/dev\/%s /" %s >/etc/ncid/ncidd.conf''' %(port,templatefile) + mv_common.runcmd(cmd) + mv_common.pacinstall("ncidd") + mv_common.add_service("ncidd") + else: + logging.debug(" Callerid will not run") + mv_common.pacremove("ncidd") + mv_common.remove_service("ncidd") + return + +def setup_splash(Usebootsplash): + if Usebootsplash == "1": + logging.info(" Enabling splash") + cmd = ''' sed -i "s/^default.*0/default 1/g" /boot/grub/menu.lst''' + mv_common.runcmd(cmd) + else: + logging.info(" Disabling splash") + cmd = ''' sed -i "s/^default.*1/default 0/g" /boot/grub/menu.lst''' + mv_common.runcmd(cmd) + return +def setup_rrd(UseRRD): + if UseRRD == "1": + logging.info(" Enabling rrd_stats") + mv_common.pacinstall("rrd_stats") + else: + logging.info(" Disabling rrd_stats") + mv_common.pacremove("rrd_stats") + + +def setup_hobbit(UseHobbit,SystemType,dbhost): + if UseHobbit == "1": + if SystemType == "Standalone" or SystemType == "Master_backend": + logging.info(" Installing hobbit server") + mv_common.pacinstall("hobbitserver") + mv_common.add_service("hobbit") + else: + logging.info(" Installing hobbit client") + mv_common.pacinstall("hobbit-client") + setup_hobbit_client(dbhost) + mv_common.add_service("hobbit-client") + + else: + logging.info(" Removing Hobbit") + mv_common.pacremove("hobbit") + mv_common.pacremove("hobbit-client") + mv_common.remove_service("hobbit-client") + mv_common.remove_service("hobbitserver") + cmd = "rm -f /data/srv/httpd/htdocs/hobbit/index.html" + mv_common.runcmd(cmd) + return + +def setup_hobbit_client(dbhost): + logging.info(" Configuring hobbit client") + logging.debug(" hobbit server is %s:", dbhost) + cmd='''sed -i "s/^BBDISP.*$/BBDISP=%s/g" /data/srv/hobbit/client/etc/hobbitclient.cfg ''' %dbhost + mv_common.runcmd(cmd) + return + +def setup_evrouter(UseEvrouter,EvrouterConfig,template): + if UseEvrouter == "1": + logging.info(" Configuring everouter") + logging.debug(" EvrouterConfig is %s:",EvrouterConfig) + if EvrouterConfig == "tinker": + logging.debug(" tinker mode, not changing the config") + return + mv_common.pacinstall("evrouter") + mv_common.pacinstall("Xvfb") + mv_common.cp_and_log(template+"/evrouter/"+EvrouterConfig,"/etc/evrouter.cfg") + mv_common.add_service("evrouter") + mv_common.add_service("Xvfb") + else: + logging.info(" Not using evrouter") + mv_common.pacremove("evrouter") + mv_common.remove_service("evrouter") + mv_common.remove_service("Xvfb") + + return + +def setup_DNSmasq(RunDHCP,ip,gw,nameserver): + if RunDHCP == "1": + logging.info(" Configuring dhcp server(dnsmasq)") + logging.debug(" ip: %s", ip) + logging.debug(" gw: %s", gw) + logging.debug(" ns: %s", nameserver) + mv_common.pacinstall("dnsmasq") + mv_common.pacinstall("mvpmc") + mv_common.add_service("dnsmasq") + logging.debug(" Setting default route to my gw: %s",gw) + try: + f = open("/etc/dnsmasq.conf",'r') + dnsconf = f.readlines() + f.close() + except: + logging.info(" Couldn't open dnsmasq.conf") + return + for line in dnsconf: + outline = line + if re.match("^dhcp-option=3",line): + logging.debug(" Setting default route to my gw: %s",gw) + outline = "dhcp-option=3,%s\n" %gw + if re.match("^dhcp-option=6",line): + logging.debug(" Setting dns to my ip: %s",ip) + outline = "dhcp-option=6,%s\n" %ip + f.write(outline) + f.close() + + logging.debug(" change nfsroot to my ip:%s",ip) + cmd = '''sed -i "s/nfsroot=.*:/nfsroot=%s:/g" /data/srv/tftp/pxelinux.cfg/default''' %ip + mv_common.runcmd(cmd) + + logging.debug(" Adding 127.0.0.1 to resolv.conf") + logging.debug(" other nameserver is %s",nameserver) + try: + f = open("/etc/resolv.conf",'r') + dns = f.readlines() + f.close() + except: + dns='' + logging.debug(" Couldn't open resolv.conf for reading") + try: + f = open("/etc/resolv.conf",'w') + line="search lan\n" + f.write(line) + line="nameserver 127.0.0.1\n" + f.write(line) + line="nameserver %s\n" %nameserver + f.write(line) + for line in dns: + f.write(line) + f.close() + except: + logging.debug(" Couldn't open resolv.conf for writing") + + logging.debug(" setup dongle.config") + cmd = ''' sed -i "s/mvpmc -f .*/mvpmc -f \/etc\/helvR10.fon -s %s \& /" /data/srv/tftp/dongle.bin.config ''' %ip + #COMMAND="%s/mvpmc -f .*/mvpmc -f \/etc\/helvR10.fon -s ${ip} \& /" + #ex ${BASE}/data/srv/tftp/dongle.bin.config </etc/exports''' %templatefile + mv_common.add_service("nfsd") + mv_common.add_service("nfs-utils") + mv_common.add_service("portmap") + else: + logging.info(" Removing NFS server") + mv_common.remove_service("nfsd") + return + +def setup_dyndns(DDnsEnable): + if DDnsEnable == "1": + logging.info(" Installing Dynamic DNS client") + mv_common.pacinstall("inadyn") + mv_common.add_service("inadyn") + else: + logging.info(" Removing Dynamic DNS client") + mv_common.pacremove("inadyn") + mv_common.remove_service("inadyn") + + +def setup_advanced(systemconfig,data_config): + logging.info("____Start of advanced configuration____") + create_link = False + if systemconfig["SystemType"] == "Master_backend": + create_link = True + setup_pacman(create_link) + setup_ncid_client(systemconfig["dbhost"], + systemconfig["TEMPLATES"]+"/ncid.conf.template") + + setup_ncid_daemon(systemconfig["nciddSerialPort"], + systemconfig["TEMPLATES"]+"/ncidd.conf.template", + systemconfig["Runncidd"]) + + setup_splash(systemconfig["Usebootsplash"]) + if data_config.SYSTEMTYPE == "MythVantage": + setup_hobbit(systemconfig["UseHobbit"], + systemconfig["SystemType"], + systemconfig["dbhost"]) + if data_config.SYSTEMTYPE == "LinHES": + setup_rrd(systemconfig["UseRRD"]) + + setup_evrouter(systemconfig["UseEvrouter"], + systemconfig["EvrouterConfig"], + systemconfig["TEMPLATES"]) + + setup_DNSmasq(systemconfig["RunDHCP"], + systemconfig["mythip"], + systemconfig["mythgw"], + systemconfig["mythdns"]) + + setup_mythweb(systemconfig["UseMythWEB"]) + setup_samba(systemconfig,data_config) + setup_NFSshares(systemconfig["UseNFS"], + systemconfig["TEMPLATES"]+"/exports.template") + + setup_dyndns(systemconfig["DDnsEnable"]) + logging.info("__End of advanced configuration\n") diff --git a/abs/mv-core/MythVantage-config/mv_common.py b/abs/mv-core/MythVantage-config/mv_common.py new file mode 100755 index 0000000..f18e02b --- /dev/null +++ b/abs/mv-core/MythVantage-config/mv_common.py @@ -0,0 +1,200 @@ +# -*- coding: utf-8 -*- +import logging, os, time +import commands +config_file = "mv_config" +data_config = __import__(config_file, globals(), locals(), []) + +def runcmd(cmd): + if data_config.NOOPDEBUG=="FALSE": + pass + else: + cmd = "echo "+cmd + logging.debug(" %s",cmd) + cmdout = commands.getstatusoutput(cmd) + logging.debug(" %s",cmdout) + return cmdout[0] + +def runcmd_output(cmd): + if data_config.NOOPDEBUG=="FALSE": + pass + else: + cmd = "echo "+cmd + logging.debug(" %s",cmd) + cmdout = commands.getstatusoutput(cmd) + logging.debug(" %s",cmdout) + return cmdout[1] + +def services(systemconfig): + logging.debug("______Start of services______") + logging.debug("__End services") + +def cp_and_log(srcfile,destfile): + #return + if not os.path.exists(srcfile): + logging.info("%s is not present, skipping...",srcfile) + else: + cmd = ("rsync -arhp %s %s") %(srcfile,destfile) + runcmd(cmd) + + +def add_service(daemon): + logging.info(" Adding service %s",daemon) + cmd = "add_service.sh %s" %daemon + runcmd(cmd) + +def remove_service(daemon): + logging.info(" Removing service %s",daemon) + cmd = "remove_service.sh %s" %daemon + runcmd(cmd) + +def start_service(daemon): + logging.info(" start service %s",daemon) + cmd = "sv start %s" %daemon + runcmd(cmd) + +def stop_service(daemon): + logging.info(" stop service %s",daemon) + cmd = "sv stop %s" %daemon + runcmd(cmd) + +def restart_service(daemon): + logging.info(" Restarting service %s",daemon) + if daemon == "lcdd": + stop_service(daemon) + logging.debug(" killing all lcdd") + cmd = "killall -9 LCDd" + runcmd(cmd) + time.sleep(2) + start_service(daemon) + else: + cmd = "sv restart %s" %daemon + runcmd(cmd) + +def hup_service(daemon): + logging.info(" hup service %s",daemon) + cmd = "sv hup %s" %daemon + runcmd(cmd) + + + +def pkg_blacklist_check(pkg): + cmd = '''grep -q %s /etc/blacklist.package''' %pkg + rc = runcmd(cmd) + if rc == 0: + return True + else: + return False + +def pkg_installed_check(pkg): + logging.debug(" Checking if %sis installed",pkg) + cmd = "pacman -Q %s " %pkg + rc = runcmd(cmd) + if rc == 0: + return True + else: + return False + + +def pacinstall(pkg): + logging.info(" Checking %s for install",pkg) + #extra pkg check + if pkg == "xine": + pacinstall("xine-ui") + elif pkg == "dvdcss": + pacinstall("libdvdcss") + elif pkg == "webmin": + add_service("webmin") + elif pkg == "fuppes": + pacinstall("fuppes-svn") + + if not pkg_blacklist_check(pkg): + if pkg_installed_check(pkg): + logging.info(" %s is already installed, will not install",pkg) + else: + logging.info(" Installing %s",pkg) + cmd ='''pacman --noconfirm -Sf %s ''' %pkg + runcmd(cmd) + else: + logging.info(" %s is blacklisted, will not install",pkg) + +def pacremove(pkg): + logging.info(" Checking %s for removal",pkg) + if pkg == "xine": + pacremove("xine-ui") + elif pkg == "dvdcss": + pacremove("libdvdcss") + elif pkg == "webmin": + remove_service("webmin") + + if not pkg_blacklist_check(pkg): + if not pkg_installed_check(pkg): + logging.info(" %s is not installed, will not remove",pkg) + else: + logging.info(" Removing %s",pkg) + cmd ='''pacman --noconfirm -R %s ''' %pkg + runcmd(cmd) + else: + logging.info(" %s is blacklisted, will not remove",pkg) + +def getpid(process): + return commands.getoutput('pidof %s' % process) + +def remove_file(filename): + logging.debug(" Removing %s", filename) + try: + os.remove(filename) + except: + logging.debug("* Could not remove %s", filename) + + +def restartLCD(RESTART_LCD): + if RESTART_LCD : + logging.info(" Restarting lcd server") + cmd = "killall -9 mythlcdserver" + runcmd(cmd) + else: + logging.debug(" Not restarting MYTHLCD server") + + +def reloadfe(dbhost,RESTART_LCD): + logging.debug("____Start of reloadfe____") + if data_config.SYSTEMTYPE == "MythVantage": + logging.info(" Clearing Backend cache") + cmd = '''/usr/bin/backend_control.sh clearcache behost %s''' %dbhost + runcmd(cmd) + + restartLCD(RESTART_LCD) + for pid in getpid("mythfrontend"): + cmd = ''' kill -s USR1 %s ''' %pid + #runcmd(cmd) + logging.info(" Reloading frontend with pid of %s",pid) + + logging.debug("__End of reloadfe\n") + + +def restartfe(RESTART_LCD): + logging.debug("____Start of restartfe____") + if data_config.SYSTEMTYPE=="LinHES": + logging.debug(" LinHES seems to be running will not restartfe") + return + logging.info(" Restarting frontend") + restartLCD(RESTART_LCD) + cmd="killall -9 mythfrontend" + runcmd(cmd) + cmd="killall -9 welcome" + runcmd(cmd) + logging.debug("__End of restartfe\n") + + +def udev_trigger(): + logging.info(" Triggering udev") + cmd = "udevadm settle" + runcmd(cmd) + cmd = "udevadm trigger" + runcmd(cmd) + cmd = "udevadm settle" + runcmd(cmd) + cmd = "udevadm trigger" + runcmd(cmd) + + diff --git a/abs/mv-core/MythVantage-config/mv_config.py b/abs/mv-core/MythVantage-config/mv_config.py new file mode 100755 index 0000000..9ce29f1 --- /dev/null +++ b/abs/mv-core/MythVantage-config/mv_config.py @@ -0,0 +1,14 @@ +# -*- coding: utf-8 -*- +SYSTEMTYPE="MythVantage" +MVHOSTNAME="mvi" +MOUNTPOINT="/new_boot" +DATAMOUNT="/data" +MYTHHOME="/data/home/mythtv" +SQUASHFILE="/tmp/.squashlist" +SQUASHLIST=("bin","boot","etc","home","lib","opt","root","sbin","usr","var","data") +NOOPDEBUG="FALSE" +BACKUPFILE="mythconverg.sql.gz" +BACKUPPATH="/data/backup/" +TEMP_TEMPLATES="/tmp/templates" +SMEDIA="media" + diff --git a/abs/mv-core/MythVantage-config/mv_hostype.py b/abs/mv-core/MythVantage-config/mv_hostype.py new file mode 100755 index 0000000..e7e14cb --- /dev/null +++ b/abs/mv-core/MythVantage-config/mv_hostype.py @@ -0,0 +1,219 @@ +# -*- coding: utf-8 -*- +import logging, mv_common +import os + +config_file = "mv_config" +data_config = __import__(config_file, globals(), locals(), []) + +def setup_ntp(usepool,ntpserver): + if usepool: + logging.info("Setting ntp server to %s",ntpserver) + print '''sed -i "s/pool.ntp.org/$dbhost/g" ${BASE}/etc/ntp.conf''' + else: + logging.info("Not changing ntp configuration") + +def setup_avahi(templates): + file="/etc/avahi/services/mysql.service" + if not os.path.exists(file): + logging.debug(" copying in mysql.service for avahi") + try: + os.makedirs("/etc/avahi/services") + except: + logging.debug(" Couldn't create /etc/avahi/services") + mv_common.cp_and_log(templates+"/mysql.service",file) + cmd="sudo sv restart avahi" + mv_common.runcmd(cmd) + +def remove_avahi_service(): + file="/etc/avahi/services/mysql.service" + if os.path.exists(file): + logging.debug(" Removing avahi mysql.service file") + cmd="rm -rf %s" %file + mv_common.runcmd(cmd) + cmd="sudo sv restart avahi" + mv_common.runcmd(cmd) + +def setup_db(): + logging.debug(" Setting up the database") + +def setup_mysqlnetwork(EnableNetwork): + logging.debug(" Setting up mysql network") + mysqlconf = "/etc/my.cnf" + cmd = '''grep "#skip-networking" %s ''' %mysqlconf + status = mv_common.runcmd(cmd) + + if EnableNetwork : + logging.debug(" Enabling mysql networking") + if status == 0 : + logging.debug(" Network is already enabled for mysql") + else: + cmd = '''sed -ie "s/^skip-networking/#skip-networking/g" %s ''' %mysqlconf + mv_common.runcmd(cmd) + mv_common.restart_service("mysqld") + else: + logging.debug(" Disabling mysql networking") + if status == 1 : + logging.debug(" Network is already disabled for mysql") + else: + cmd = '''sed -ie "s/#skip-networking/skip-networking/g" %s ''' %mysqlconf + mv_common.runcmd(cmd) + mv_common.restart_service("mysqld") + +def setup_mysql_connection(systemconfig): + logging.info(" Configuring database connection") + mythip = systemconfig["mythip"] + systemtype = systemconfig["SystemType"] + mv_root = systemconfig["MVROOT"] + mysqltxt = "/usr/share/mythtv/mysql.txt" + templates = systemconfig["TEMPLATES"] + mysqltemplate = templates + "/mysql.txt" + dbhost = systemconfig["dbhost"] + + if systemtype == "Master_backend": + logging.debug(" Setting dbhost to %s in systemconfig", mythip) + dbhost = mythip + cmd = '''sed -ei "s/^dbhost=.*$/dbhost=\"%s\"/" /etc/systemconfig ''' %dbhost + mv_common.runcmd(cmd) + logging.debug(" Changing dbhost in settings table for master_backend") + cmd = '''%s/bin/restore_default_settings.sh -c BECONFIG -s master -a %s ''' %(mv_root, dbhost) + mv_common.runcmd(cmd) + + if systemtype == "Slave_backend": + slavehost = mythip + logging.debug(" Changing slave in settings: %s", slavehost) + cmd = '''%s/bin/restore_default_settings.sh -c BECONFIG -s slave -a %s ''' %(mv_root, slavehost) + mv_common.runcmd(cmd) + + if systemtype == "Master_backend": + logging.debug(" changing mysql.txt file to use localhost") + cmd = '''sed -e "s/^DBHostName=.*$/DBHostName="localhost"/" %s > %s ''' %(mysqltemplate, mysqltxt) + mv_common.runcmd(cmd) + else: + logging.debug(" changing mysql.txt file to use %s", dbhost) + cmd = '''sed -e "s/^DBHostName=.*$/DBHostName=%s/" %s > %s ''' %(dbhost, mysqltemplate, mysqltxt) + mv_common.runcmd(cmd) + + delfile = data_config.MYTHHOME + "/.mythtv/mysql.txt" + mv_common.remove_file(delfile) + delfile = mv_root + "/bin/mythtv/.mythtv/mysql.txt" + mv_common.remove_file(delfile) + filecheck = data_config.MYTHHOME + "/templates/mysql.txt" + if os.path.exists(filecheck): + logging.info(" Scrapping all the previous work and using %s for mysql.txt", filecheck) + mv_common.cp_and_log(filecheck, mysqltxt) + + + +def setup_func_key(): + if data_config.SYSTEMTYPE == "MythVantage": + logging.debug(" Grabbing the key for Func") + cmd="/usr/MythVantage/bin/grabkey.py" + mv_common.runcmd(cmd) + +def setup_func_minion(dbhost): + logging.info(" Setting up the func minion:") + logging.debug(" certmaster is %s:",dbhost) + cmd='''sed -i "s/^certmaster.*$/certmaster = %s/" /etc/func/minion.conf ''' %dbhost + mv_common.runcmd(cmd) + +def setup_syslog(dbhost): + logging.debug(" Setting syslog to log to %s",dbhost) + cmd ='''sed -i "s/^destination d_remote.*$/destination d_remote \{tcp\(\"%s\" port\(514\)\) \;\} \;/" /etc/syslog-ng.conf''' %dbhost + return + +def hostypeprint(systemconfig): + logging.info("______Start of hostype config_____") + mv_common.services(systemconfig) + install_list='' + remove_list='' + daemon_list='' + daemon_remove_list='' + run_mysqlnetwork = False + + if systemconfig["SystemType"] == "Standalone": + logging.info("Stand alone system being configured") + setup_ntp(False,"null") + remove_avahi_service() + EnableNetwork = False + run_mysqlnetwork = True + if systemconfig["hostypec"]: + setup_db() + install_list=("mysql", "mythdb-initial", "avahi", "portmap", "nfs-utils", "local-website", "myth2ipod", "mythtv-status") + daemon_list=("mysql", "mythbackend", "avahi", "portmap", "nfs-utils", "netfs", "lighttpd") + + elif systemconfig["SystemType"] == "Master_backend": + logging.info("Master backend system being configured") + setup_ntp(False,"null") + setup_avahi(systemconfig["TEMPLATES"]) + install_list=("mysql", "mythdb-initial", "avahi", "portmap", "nfs-utils", "local-website", "myth2ipod", "mythtv-status") + daemon_list=("mysql", "mythbackend", "avahi", "portmap", "nfs-utils", "netfs", "lighttpd") + EnableNetwork = True + run_mysqlnetwork = True + if data_config.SYSTEMTYPE == "MythVantage": + install_list.append('func') + install_list.append('certmaster') + daemon_list.append('certmaster') + + elif systemconfig["SystemType"] == "Slave_backend": + logging.info("Slave backend system being configured") + setup_ntp(True,systemconfig["dbhost"]) + remove_avahi_service() + if systemconfig["hostypec"]: + setup_db() + install_list=("portmap", "nfs-utils", "local-website", "avahi", 'libmysqlclient') + daemon_list=("mythbackend", "portmap", "nfs-utils", "netfs", "lighttpd", "avahi") + daemon_remove_list=('mysql') + if data_config.SYSTEMTYPE == "MythVantage": + install_list.remove("local-website") + daemon_list.remove("lighttpd") + install_list.append('func') + daemon_list.append('funcd') + remove_list.append("lighttpd") + + + elif systemconfig["SystemType"] == "Frontend_only": + logging.info("Frontend only system being configured") + setup_ntp(True,systemconfig["dbhost"]) + remove_avahi_service() + install_list=("mysql-clients", "libmysqlclient", "avahi", "portmap", "nfs-utils", "local-website") + remove_list=("mysql") + daemon_list=("mysql", "mythbackend", "avahi", "portmap", "nfs-utils", "netfs", "lighttpd") + daemon_remove_list=("mysql", "mythbackend") + if data_config.SYSTEMTYPE == "MythVantage": + install_list.remove("local-website") + daemon_list.remove("lighttpd") + install_list.append('func') + daemon_list.append('funcd') + remove_list.append("lighttpd") + + + + for pkg in install_list: + mv_common.pacinstall(pkg) + for pkg in remove_list: + mv_common.pacinstall(pkg) + for daemon in daemon_list: + mv_common.add_service(daemon) + for daemon in daemon_remove_list: + mv_common.remove_service(daemon) + if systemconfig["RunFrontend"] == "1": + logging.debug(" Will run the frontend") + mv_common.add_service("frontend") + mv_common.add_service("hal") + else: + logging.debug(" Will NOT run the frontend") + mv_common.remove_service("frontend") + mv_common.remove_service("hal") + + + if run_mysqlnetwork: + setup_mysqlnetwork(EnableNetwork) + else: + logging.debug(" Not running setup_mysql_connection") + + setup_mysql_connection(systemconfig) + if data_config.SYSTEMTYPE == "MythVantage": + setup_func_minion(systemconfig["dbhost"]) + setup_func_key() + setup_syslog(systemconfig["dbhost"]) + logging.info("__End of hostype config\n") diff --git a/abs/mv-core/MythVantage-config/mv_install.py b/abs/mv-core/MythVantage-config/mv_install.py new file mode 100755 index 0000000..56118c1 --- /dev/null +++ b/abs/mv-core/MythVantage-config/mv_install.py @@ -0,0 +1,1433 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +import sys, os, commands, glob, time +import getopt, re, MySQLdb +import logging +try: + import parted +except: + print "module parted not found" + +def usage(): + print "help text:" + print "example usage: --rootdisk=sda --rootfs=ext4 --rootsize=34240 --datafs=ext4 --datasize=3400 --datadisk=sda --swapsize=340 -c full_install" + +def clean_upgrade(): + return False + +def error_out(errmsg): + cmd = '''echo %s >> /tmp/.install_error ''' %errmsg + runcmd(cmd) + logging.critical("***********************************") + logging.critical("error: %s",errmsg) + print "***********************************" + print "ERROR: mv_install.py: %s" %errmsg + print "***********************************" + sys.exit(1) + + +def update_db(value, data): + db = MySQLdb.connect(host="localhost", user="mythtv", passwd="mythtv", db="mythconverg") + try: + cursor = db.cursor() + cursor.execute("DELETE FROM settings where value=%s and hostname=%s;", (value, data_config.MVHOSTNAME)) + cursor.execute("REPLACE INTO settings set value=%s, data=%s, hostname=%s;", (value, data, data_config.MVHOSTNAME)) + logging.debug("Updated database with %s, %s", data, value) + except MySQLdb.Error, e: + logging.debug("Unable to update database with %s, %s", data, value) + + +def progress(pgnum): + progressline = str(pgnum) + "% complete" + logging.debug("Progress: %s", pgnum) + f = open('/tmp/.install_percent', 'w') + f.write(progressline) + f.close() + +def update_status(status): + logging.debug("Status: %s", status) + f = open('/tmp/.install_state', 'w') + f.write(str(status)) + f.close() + +def kill_dhcp_chroot(): + logging.debug("Killing off chroot dhcpcd") + stddir = os.getcwd() + piddir = ("%s/var/run/") %data_config.MOUNTPOINT + try: + os.chdir(piddir) + for FILE in glob.glob("dhcpcd-*.pid"): + f = open(FILE, 'r') + pid = f.readline() + f.close() + cmd = "kill -9 %s" %pid + runcmd(cmd) + os.remove(FILE) + os.chdir(stddir) + except: + pass + +def statgrab(disk): + cmd = "statgrab -M disk. |grep %s.write_bytes" % hostoptions["rootdisk"] + out = commands.getoutput(cmd) + try: + prewritebytes = out.split("=")[1].strip() + except: + prewritebytes = "1024" + outline = "STARTSIZE=%s" %prewritebytes + f = open('/tmp/.startsize.io', 'w') + f.write(str(outline)) + f.close() + +def backup_sql_check(): + logging.debug("Searching for backup file") + try: + hostoptions["backupfile"] + except: + logging.debug("Backup file var is empty") + return False + if os.path.exists(data_config.MOUNTPOINT+hostoptions["backupfile"]): + logging.debug("Backup file %s is present", data_config.MOUNTPOINT+hostoptions["backupfile"]) + return True + else: + logging.debug("Backup file %s is NOT present", data_config.MOUNTPOINT+hostoptions["backupfile"]) + return False + +def mdadm_find(PREFIX): + logging.debug("Searching for mdadm.conf") + if os.path.exists(PREFIX+"/etc/KnoppMyth-version"): + mdadmconf = "/etc/mdadm/mdadm.conf" + else: + mdadmconf = "/etc/mdadm.conf" + logging.debug("Using %s for mdadm.conf", mdadmconf) + return mdadmconf + +def mdadm_assemble_all(): + # read mdadm.conf and start the arrays + #ARRAY /dev/md5 uuid=19464854:03f71b1b:e0df2edd:246cc977 + logging.debug("Starting mdadm support") + mdadmconf_file = mdadm_find("/tmp") + cmd = "cdadm --assemble --scan -c /tmp/%s" %mdadmconf_file + runcmd(cmd) + mdadm_contents = '' + try: + f = open(mdadmconf_file, 'r') + mdadm_contents = f.readlines() + f.close() + except: + logging.debug(" Couldn't open mdadmconf file") + for line in mdadm_contents: + if line.startswith("ARRAY"): + logging.debug(" Found MD array: %s", line) + array = line.split()[1] + logging.info(" assembling array: %s", array) + cmd = "mdadm --assemble -c /tmp%s %s" %(mdadmconf_file, array) + runcmd(cmd) + time.sleep(2) + cmd = "fsck -p %s" %array + runcmd + +def copy_updates(): + try: + MVROOT = os.environ["MV_ROOT"] + except: + logging.debug("MVROOT was not defined, using the default value") + MVROOT = "/usr/MythVantage" + cp_and_log2(MVROOT+"/bin/", data_config.MOUNTPOINT+MVROOT+"/bin", "*.sh") + cp_and_log2(MVROOT+"/bin/", data_config.MOUNTPOINT+MVROOT+"/bin", "*.py") + +def timezone_to_db(timefile): + logging.info("importing timezone") + try: + f = open(timefile) + timezonecontents = f.readline().strip() + f.close() + except: + logging.debug("Couldn't open /tmp/etc/timezone, will not set the timezone") + return + update_db("HostTimeZone", timezonecontents); + tzsplit = timezonecontents.partition('/') + print tzsplit + if tzsplit[2] == '' : + update_db("HostTimeZoneRegion", tzsplit[0]) + else: + update_db("HostTimeZoneRegion", tzsplit[0]) + tztemp="HostTimeZoneRegion_%s" % tzsplit[0] + update_db(tztemp, tzsplit[2]) + + + +def cp_and_log(srcfile, destfile): + #return + if not os.path.exists(srcfile): + logging.info("%s is not present, skipping...", srcfile) + else: + cmd = ("rsync -arvp %s %s") %(srcfile, destfile) + runcmd(cmd) + +def cp_and_log2(srcfile, destfile, fileglob): + #return + logging.debug("cp_and_log2") + logging.debug("%s, %s, %s", srcfile, destfile, fileglob) + + if not os.path.exists(srcfile): + logging.info("%s is not present, skipping...", srcfile) + else: + if fileglob == '': + cmd = ("rsync -arvp %s %s") %(srcfile, destfile) + runcmd(cmd) + else: + fileglob = "*" + cmd = ("rsync -arvp %s/%s %s") %(srcfile, fileglob, destfile) + runcmd(cmd) + +def runcmd(cmd): + if data_config.NOOPDEBUG == "FALSE": + pass + else: + cmd = "echo "+cmd + logging.debug(" %s", cmd) + cmdout = commands.getstatusoutput(cmd) + logging.debug(" %s", cmdout) + return cmdout + +def mysqldb(cmd, inchroot): + if cmd == "start": + mycmd = " /etc/rc.d/mysqld start" + elif cmd == "stop": + mycmd = " /etc/rc.d/mysqld stop" + if inchroot == "chroot": + mycmd = " chroot /newboot %s" %mycmd + runcmd(mycmd) + + +def mount_bind_chroot(): + logging.debug("Mounting dev/proc/sysfs for chroot") + cmd = " mount --bind /dev %s" %data_config.MOUNTPOINT+"/dev" + runcmd(cmd) + cmd = " mount --bind /dev/pts %s" %data_config.MOUNTPOINT+"/dev/pts" + runcmd(cmd) + cmd = " mount --bind /proc %s" %data_config.MOUNTPOINT+"/proc" + runcmd(cmd) + cmd = " mount -t sysfs none %s" %data_config.MOUNTPOINT+"/sys" + runcmd(cmd) + + +def umount_bind_chroot(): + logging.debug("UnMounting dev/proc/sysfs for chroot") + cmd = " umount -l %s" %data_config.MOUNTPOINT+"/dev/pts" + runcmd(cmd) + cmd = " umount -l %s" %data_config.MOUNTPOINT+"/dev" + runcmd(cmd) + cmd = " umount -l %s" %data_config.MOUNTPOINT+"/proc" + runcmd(cmd) + cmd = " umount -l %s" %data_config.MOUNTPOINT+"/sys" + runcmd(cmd) + + +def blank_table(diskdevice): + logging.debug(" writing new parition table for %s", diskdevice) + logging.debug("parition table before:") + cmd = "fdisk -l %s" %diskdevice + runcmd(cmd) + + cmd = "echo w |fdisk %s" %diskdevice + runcmd(cmd) + + logging.debug("parition table after:") + cmd = "fdisk -l %s" %diskdevice + runcmd(cmd) + +def partitions_removeall(diskdevice, label): + logging.info("Removing all partitions for %s %s", label, diskdevice) + try: + device = parted.getDevice(diskdevice) + partdisk = parted.Disk(device) + partdisk.deleteAllPartitions() + if data_config.NOOPDEBUG == "FALSE": + partdisk.commit() + for partition in partdisk.partitions: + print "type: %s" %partition.type + except: + logging.debug(" Error reading parition table, attempting to write a blank one") + blank_table(diskdevice) + + +def create_partitions(diskdevice, size, ptype, startsector): + logging.debug("_____Create partitions______") + if size == "NO": + logging.info("Size is 0, skipping") + return "NO" + partlist = [] + newstart = 0 + totalused = 0 + device = parted.getDevice(diskdevice) + partdisk = parted.Disk(device) + for partition in partdisk.partitions: + if partition.type != parted.PARTITION_FREESPACE: + partlist.append((partition, + partition.path, + partition.getFlag(parted.PARTITION_BOOT), + partition.geometry.start, + partition.geometry.end, + partition.geometry.length, + partition.type, + partition.fileSystem)) + for slice in partlist: + (usedpartition, usedpath, usedbootable, usedstart, usedend, usedlength, usedtype, usedfs) = slice + #Start the new partition one after the end of last + newstart = usedend+1 + + if startsector == 0: + newstart = 0 + if size == "ALL": + logging.debug(" Using the rest of the disk %s", (device.length-newstart) ) + try: + geom = parted.Geometry(device=device, start=newstart, length=(device.length-newstart)) + except: + logging.info("An error occured, probably invalid parition size") + return + else: + # convert size in MB to a length on the device in sectors + length = (int(size) * (1024 * 1024)) / device.sectorSize + logging.debug("Size is %s", length) + try: + geom = parted.Geometry(device=device, start=newstart, length=length) + except: + logging.info("An error occured, probably invalid parition size") + error_out("invalid parition size") + + #collect device constraint + constraint = device.getConstraint() + # new partition + if ptype == "NORMAL": + newpart = parted.Partition(disk=partdisk, type=parted.PARTITION_NORMAL, geometry=geom) + elif ptype == "SWAP": + newpart = parted.Partition(disk=partdisk, type=parted.PARTITION_NORMAL, geometry=geom) + + #add the partition to the disk and commit changes + partdisk.addPartition(partition=newpart, constraint=constraint) + if data_config.NOOPDEBUG == "FALSE": + partdisk.commit() + logging.info("created partition %s of %dMB and added it to %s" % + (newpart.getDeviceNodeName(), newpart.getSize(), diskdevice)) + return newpart.getDeviceNodeName() + +def set_active_parition(diskdevice): + """ Set the bootable flag for this partition. """ + logging.debug(" Setting active parition") + device = parted.getDevice(diskdevice) + partdisk = parted.Disk(device) + try: + for partition in partdisk.partitions: + partition.setFlag(parted.PARTITION_BOOT) + partdisk.commit() + except: + logging.info(" Couldn't set the active partition") + logging.info(" Depending on your system this may not matter") + + +def partition_disk(): + global hostoptions + logging.info("Partitioning") + logging.debug("____start of partition_disk____") + rootdisk = hostoptions["rootdisk"] + datadisk = hostoptions["datadisk"] + label = "root" + partitions_removeall("/dev/"+rootdisk, label) + label = "data" + partitions_removeall("/dev/"+datadisk, label) + hostoptions["rootpartition"] = create_partitions("/dev/"+rootdisk, hostoptions["rootsize"], "NORMAL", 0) + set_active_parition("/dev/"+rootdisk) + hostoptions["swappartition"] = create_partitions("/dev/"+rootdisk, hostoptions["swapsize"], "SWAP", 1) + if datadisk != rootdisk: + hostoptions["datapartition"] = create_partitions("/dev/"+datadisk, hostoptions["datasize"], "NORMAL", 0) + else: + hostoptions["datapartition"] = create_partitions("/dev/"+datadisk, hostoptions["datasize"], "NORMAL", 1) + time.sleep(5) + +def fscmd(fstype): + fscmds = {"reiserfs":"mkreiserfs -q -l ROOT", "xfs": "mkfs -t xfs -f", "ext3": "mkfs.ext3", "jfs":"mkfs.jfs -q", "ext4":"mkfs.ext4", "Do_not_format":"noformat", "no_format":"noformat"} + try: + rc = fscmds[fstype] + except: + logging.critical(" %s is not a valid fs type, exiting now", fstype) + error_out("Error mvinstall during format") + return rc + + +def format_disk(install_type): + logging.info("______Starting Disk Format______") + rootfs = fscmd(hostoptions["rootfs"]) + datafs = fscmd(hostoptions["datafs"]) + + rootdisk = hostoptions["rootdisk"] + datadisk = hostoptions["datadisk"] + rootpartition = hostoptions["rootpartition"] + datapartition = hostoptions["datapartition"] + if install_type != "upgrade": + swapsize = hostoptions["swapsize"] + swappartition = hostoptions["swappartition"] + + logging.debug(" Format command for rootfs %s : %s ", rootfs, rootpartition) + if ( rootfs != "noformat"): + logging.info("Starting format of %s", rootpartition) + cmd = " %s /dev/%s" %( rootfs, rootpartition) + #os.system(cmd) + runcmd(cmd) + else: + logging.info("Will not format root partition: %s", rootpartition) + + logging.debug(" Format command for datafs %s : %s ", datafs, datapartition) + if (datafs != "noformat"): + logging.info("Starting format of %s", datapartition) + cmd = " %s /dev/%s" %( datafs, datapartition) + #os.system(cmd) + runcmd(cmd) + else: + logging.info("Will not format data partition: %s", datapartition) + + if install_type == "install": + if (hostoptions["swapsize"] != "NO"): + logging.info("Starting format for swap %s", swappartition) + cmd = " mkswap /dev/%s" % swappartition + #os.system(cmd) + runcmd(cmd) + else: + logging.debug(" Swap is set to NO, will not run mkswap") + + logging.debug("_____End of format______") + + +def mount_it(): + logging.info("______Mounting disk______") +# Create mount points + try: + mountpoint = data_config.MOUNTPOINT + mp = mountpoint + logging.info("Creating mountpoints %s", mp) + os.makedirs(mp) + except OSError: + logging.debug(" Could not create %s", mp) + +# Mount root + cmd = "mount /dev/%s %s" %(hostoptions["rootpartition"], mountpoint) + runcmd(cmd) + #logging.debug(cmd) + #cmdout=commands.getoutput(cmd) + #logging.debug(cmdout) +# Mount data +#make mountpoint after mounting / + try: + mountpoint = data_config.MOUNTPOINT + datapoint = data_config.DATAMOUNT + mp = mountpoint+datapoint + logging.info("Creating mountpoints %s", mp) + os.makedirs(mp) + except OSError: + logging.debug(" Could not create %s", mp) + + cmd = "mount /dev/%s %s" %(hostoptions["datapartition"], mp) + runcmd(cmd) + #logging.debug(cmd) + #cmdout=commands.getoutput(cmd) + #logging.debug(cmdout) + +def unmount_it(): + logging.info("______Unmounting disk______") + cmd = "umount %s" %(data_config.MOUNTPOINT+data_config.DATAMOUNT) + runcmd(cmd) + time.sleep(2) + + cmd = "swapoff /dev/%s" %(hostoptions["swappartition"]) + runcmd(cmd) + + cmd = "sync" + runcmd(cmd) + + cmd = "umount %s" %(data_config.MOUNTPOINT) + runcmd(cmd) + cmd = "sync" + runcmd(cmd) + + +def create_squashlist(): + logging.debug("Creating squashlist") + squashfile = data_config.SQUASHFILE + f = open(squashfile, 'w') + for i in data_config.SQUASHLIST: + f.write(i) + f.write("\n") + logging.debug(i) + f.close() + + +def copy_it(install_type): + logging.info("______Transferring to disk______") + logging.debug( install_type) + if ( install_type == "install"): + logging.info("Transferring system") + cmd = " unsquashfs -f -d %s /.livesys/medium/system.sqf" %(data_config.MOUNTPOINT) + runcmd(cmd) + #logging.debug(cmd) + #cmdout=commands.getoutput(cmd) + + if ( install_type == "upgrade"): + logging.info("Upgrading system") + create_squashlist() + cmd = " unsquashfs -e %s -f -d %s /.livesys/medium/system.sqf" %(data_config.SQUASHFILE, data_config.MOUNTPOINT) + runcmd(cmd) + #logging.debug(cmd) + #cmdout=commands.getoutput(cmd) +# Create the missing dir + i = ("sys", "proc", "dev", "tmp", "mnt", "media", "media/cdrom", "media/dvd", "var/log/mythtv") + mountpoint = data_config.MOUNTPOINT + for item in i: + try: + mp = mountpoint+"/"+item + logging.info("Creating mountpoints %s", mp) + os.makedirs(mp) + except OSError: + logging.debug(" __Could not create %s", mp) +# General fixup + cmd = "chmod 777 %s/tmp" %(data_config.MOUNTPOINT) + runcmd(cmd) + cmd = "mknod %s/dev/null c 1 5" %(data_config.MOUNTPOINT) + runcmd(cmd) + cmd = "mknod %s/dev/console c 5 1" %(data_config.MOUNTPOINT) + runcmd(cmd) + cmd = "chmod +s %s/usr/bin/Xorg" %(data_config.MOUNTPOINT) + runcmd(cmd) + cmd = "chmod +s %s/usr/bin/crontab" %(data_config.MOUNTPOINT) + runcmd(cmd) + cmd = "chmod +s %s/usr/bin/sudo" %(data_config.MOUNTPOINT) + runcmd(cmd) + cmd = "chmod +s %s/bin/mount" %(data_config.MOUNTPOINT) + runcmd(cmd) + logging.debug("__End of copy_it__") + +def create_fstab(extralines): + logging.debug("______Creating new fstab file_______") + logging.info("Creating new fstab file") + fstabfile = data_config.MOUNTPOINT+"/etc/fstab" + fstab_list = [] + f = open(fstabfile, 'w') + line = '''# \n''' + fstab_list.append(line) + line = '''none /dev/pts devpts defaults 0 0 \n''' + fstab_list.append(line) + line = '''none /dev/shm tmpfs defaults 0 0\n''' + fstab_list.append(line) + line = '''/dev/cdrom /media/cdrom auto ro,user,noauto,unhide 0 0\n''' + fstab_list.append(line) + line = '''/dev/dvd /media/dvd auto ro,user,noauto,unhide 0 0\n''' + fstab_list.append(line) + line = '''UUID=ROOTUID / auto defaults,noatime 0 1\n''' + fstab_list.append(line) + line = '''UUID=DATAUID %s auto defaults,noatime 0 1\n''' %(data_config.DATAMOUNT) + fstab_list.append(line) + line = '''UUID=SWAPUID swap swap defaults 0 0 \n''' + fstab_list.append(line) + for vline in extralines: + fstab_list.append(vline) + for outline in fstab_list: + logging.debug(outline) + f.write(outline) + f.close() + +def find_uuid(partition): + logging.info("Finding the UUID for %s...", partition) + cmd = "blkid -s UUID /dev/%s" %partition + tmpuuid = runcmd(cmd)[1] + splituuid = tmpuuid.partition("=") + uuid = splituuid[2].replace('"', "") + logging.info("The uuid is %s", uuid) + return uuid.strip() + +def pick_out_vg(): + logging.info("Searching for Volume Groups in old fstab") + vglines = [] + f = open("/tmp/etc/fstab", 'r') + oldfscontents = f.readlines() + for line in oldfscontents: + if line.startswith("/dev/vg"): + vglines.append(line) + templine = line.split() + mdir = templine[1] + if not os.path.exists (mdir): + logging.debug("Creating dir %s for VG mount", mdir) + os.makedirs (mdir) +# Might need to os.chown to mythtv:users + else: + logging.debug("Directory %s for VG mount already present", mdir) + return vglines + +def fstab_it(install_type): + logging.info("______Checking fstab______") + kmvg = [] + fstabfile = data_config.MOUNTPOINT+"/etc/fstab" +# Check for knoppmyth install, if found create new + if install_type == "upgrade": + if os.path.exists("/tmp/etc/KnoppMyth-version"): + logging.debug(" KnoppMyth-Version found, creating new fstab") + kmvg = pick_out_vg() + create_fstab(kmvg) + elif os.path.exists("/tmp/etc/fstab"): + logging.debug(" Upgrade and not Knoppmyth, using old fstab") + cp_and_log("/tmp/etc/fstab", fstabfile) +# Catch all for creating new fstab + if not os.path.exists(data_config.MOUNTPOINT+"/etc"): + os.makedirs(data_config.MOUNTPOINT+"/etc") + if not os.path.exists(fstabfile): + create_fstab(kmvg) + + logging.info("____UUID check for %s", "swap") + swapuuid = find_uuid(hostoptions["swappartition"]) + + logging.info("____UUID check for %s", "data") + datauuid = find_uuid(hostoptions["datapartition"]) + + logging.info("____UUID check for %s", "root") + rootuuid = find_uuid(hostoptions["rootpartition"]) + + fstabfile = data_config.MOUNTPOINT+"/etc/fstab" + logging.info("Correcting UUID's in %s", fstabfile) + f = open(fstabfile, 'r') + oldfscontents = f.readlines() + newfstab = [] + f.close() + for line in oldfscontents: + if line.startswith("UUID"): + templine = line.split() + if ( templine[1] == "/"): + logging.debug(" Found Root fstab line:") + logging.debug( templine) + templine[0] = "UUID=%s" %(rootuuid) + newline = '' + for i in templine: + newline+=i + newline+=" " + newline+="\n" + logging.debug(" New fstab line:") + logging.debug( newline) + newfstab.append(newline) + + if ( templine[1] == data_config.DATAMOUNT): + logging.debug(" Found DATA mount") + logging.debug( templine) + templine[0] = "UUID=%s" %(datauuid) + newline = '' + for i in templine: + newline+=i + newline+=" " + newline+="\n" + logging.debug(" New fstab line:") + logging.debug( newline) + newfstab.append(newline) + + if ( templine[1] == "swap"): + if len(swapuuid) <= 5: + logging.debug(" swapp uuid is to small") + else: + logging.debug(" Found swap partition") + logging.debug( templine) + templine[0] = "UUID=%s" %(swapuuid) + newline = '' + for i in templine: + newline+=i + newline+=" " + newline+="\n" + logging.debug(" New fstab line:") + logging.debug( newline) + newfstab.append(newline) + else: + logging.debug(" Line didn't match, adding to newfstab:") + logging.debug( line) + newfstab.append(line) + logging.info("Writing out newfstab") + logging.debug("______This is the new fstab_____") + f = open(fstabfile, 'w') + for line in newfstab: + logging.debug(line) + f.write(line) + #f.write("\n") + f.close() + +def grub_it(): + logging.info("______Start of grub install______") + cmd = " grub-install --recheck --no-floppy --root-directory=%s \"(hd0)\" " % data_config.MOUNTPOINT + logging.info("Running grub-install") + runcmd(cmd) + rootuuid = find_uuid(hostoptions["rootpartition"]) + cmd = " mkinitcpio -g %s/boot/kernel26.img" % data_config.MOUNTPOINT + logging.info("Running mkinitcpio") + runcmd(cmd) + logging.info("Adding root uuid to grub menu") + grubfile = data_config.MOUNTPOINT+"/boot/grub/menu.lst" + try: + f = open(grubfile, 'r') + oldgrub = f.readlines() + newgrub = [] + f.close() + for line in oldgrub: + if line.startswith("kernel"): + templine = line.split() + logging.debug(" Found kernel Root grubline:") + logging.debug( templine) + templine[2] = "root=/dev/disk/by-uuid/%s" %(rootuuid) + newline = '' + for i in templine: + newline+=i + newline+=" " + newline+="\n" + logging.debug(" New grub menu.lst line:") + logging.debug( newline) + newgrub.append(newline) + else: + logging.debug("Line didn't match, adding to newgrub:") + logging.debug( line) + newgrub.append( line) + logging.info("Writing out new grub file") + logging.debug("______This is the new grub_____") + f = open(grubfile, 'w') + for line in newgrub: + logging.debug(line) + f.write(line) + f.close() + except: + logging.debug("Couldn't open grub file") + +def fix_permissions(): + logging.info("Fixing permissions") + SE = os.environ["TEMPLATES"]+"/settings/syssettings" + cmd = " chmod -R 755 %s" %(data_config.MOUNTPOINT+SE) + runcmd(cmd) + cmd = " chmod 775 %s" %(data_config.MOUNTPOINT+"/etc/systemconfig") + runcmd(cmd) + cmd = " chmod 755 %s" %(data_config.MOUNTPOINT+"/root") + runcmd(cmd) + cmd = " chown root:mythtv %s" %(data_config.MOUNTPOINT+"/etc/systemconfig") + runcmd(cmd) + cmd = " chown -R mythtv:mythtv %s" %(data_config.MOUNTPOINT+SE) + runcmd(cmd) + cmd = " chown -R mythtv:mythtv %s" %(data_config.MOUNTPOINT+"/var/log/mythtv") + runcmd(cmd) + +def apply_new_auth(): + logging.info("_____Applying Password updates_______") + passfile = "/root/myth_user_call.out" + try: + MVROOT = os.environ["MV_ROOT"] + except: + logging.debug("MVROOT was not defined, using the default value") + MVROOT = "/usr/MythVantage" + if data_config.NOOPDEBUG == "FALSE": + cmdprefix = "chroot " + data_config.MOUNTPOINT + " " + MVROOT+"/bin/myth_user_call -i " + else: + cmdprefix = "echo chroot " + data_config.MOUNTPOINT + " " + MVROOT+"/bin/myth_user_call -i " + try: + f = open(passfile, 'r') + passcmds = f.readlines() + f.close() + for cmd in passcmds: + execmd = cmdprefix+cmd +# Using os.system because runcmd fails + logging.debug(execmd) + os.system(execmd) + except: + logging.debug("Applying password updates failed, couldn't open %s", passfile) + logging.debug + +def add_to_blacklist(module): + rcfile = data_config.MOUNTPOINT + "/etc/rc.conf" + logging.debug(" Attempting to add %s to blacklist", module) + newline='' + try: + f = open(rcfile, 'r') + conflines = f.readlines() + f.close() + except: + logging.critical(" *Couldn't open %s for reading",rcfile) + return + + try: + f = open(rcfile, 'w') + except: + logging.critical(" *Couldn't open %s for reading",rcfile) + return + + for line in conflines: + newline = line + if re.match("MOD_BLACKLIST",line): + logging.debug(line) + try: + lastpar = line.rindex(')') + logging.debug(" found ) at %s", lastpar) + newline = line[:lastpar] +" !" + module + " " + line[lastpar:] + logging.debug(newline) + except: + logging.debug("Couldn't find ending )") + newline = line + f.write(newline) + f.close() + + +def add_to_modulelist(module): + rcfile = data_config.MOUNTPOINT + "/etc/rc.conf" + logging.debug(" Attempting to add %s to modulelist", module) + newline='' + try: + f = open(rcfile, 'r') + conflines = f.readlines() + f.close() + except: + logging.critical(" *Couldn't open %s for reading",rcfile) + return + + try: + f = open(rcfile, 'w') + except: + logging.critical(" *Couldn't open %s for reading",rcfile) + return + + for line in conflines: + newline = line + if re.match("MODULES=",line): + logging.debug(line) + try: + lastpar = line.rindex(')') + logging.debug(" found ) at %s", lastpar) + newline = line[:lastpar] +" " + module + " " + line[lastpar:] + logging.debug(newline) + except: + logging.debug("Couldn't find ending )") + newline = line + f.write(newline) + f.close() + + + +def special_hardware_check(): + logging.info("_____Applying special boot parameters_______") + try: + f = open('/proc/cmdline', 'r') + bootoptions = f.readlines() + f.close() + except: + logging.critical(" *Couldn't open /proc/cmdline") + return + bootoptions = bootoptions[0].split() + logging.debug(" Boot options: %s", bootoptions) + for item in bootoptions: + logging.debug(item) + if re.match("disablemodules",item) != None : + logging.debug(" Found disabledmodules") + modulelist = item.split("=")[1] + for module in modulelist.split(','): + add_to_blacklist(module) + + if re.match("modules",item) != None : + logging.debug(" Found modules") + modulelist = item.split("=")[1] + for module in modulelist.split(','): + add_to_modulelist(module) + + if re.match("type",item) != None : + logging.debug(" Found special hardware type") + try: + typefile = open(data_config.MOUNTPOINT + "/myth/.special_hardware_type", 'w') + typelist = item.split("=")[1] + # there should be only one special hardware type, but this will handle multiples, just in case + for type in typelist.split(','): + typefile.write(type) + typefile.write("\n") + typefile.close() + except: + logging.debug("Couldn't write to file: ", typefile) + + +def swapsearch(): +#currently unused! + partlist = [] + stddir = os.getcwd() + os.chdir("/sys/block") + partitionlist = glob.glob("*") + for item in partitionlist: + try: + newitem = item.strip().rpartition(" ")[2] + if (not newitem == '') and (not newitem.startswith("loop")): + path = "/dev/"+newitem.strip() + path = path.strip() + device = parted.getDevice(path) + (cylinders, heads, sectors) = device.biosGeometry + sizeInBytes = device.length * device.sectorSize + disk = parted.Disk(device) + for partition in disk.partitions: + if partition.type == parted.PARTITION_PROTECTED or \ + partition.type == parted.PARTITION_METADATA or \ + partition.type == parted.PARTITION_FREESPACE: + continue + + partlist.append((partition, + partition.path, + partition.getFlag(parted.PARTITION_BOOT), + partition.geometry.start, + partition.geometry.end, + partition.geometry.length, + partition.type, + partition.fileSystem)) + for slice in partlist: + (partition, path, bootable, start, end, length, type, fs) = slice + if partition.getFlag(parted.PARTITION_SWAP) or fs.type == "linux-swap": + print "found swap" + print path + except: + pass + os.chdir(stddir) + +def sane_settings(file): + #Remove some settings from file_name + removeline = ("HOSTrootfstype", "HOSTrootfstype", "HOSTdatafstype", "HOSTOSsize", "HostUseALLdata", "HOSTDATAsize", "HOSTuprootfstype", "HostUseSWAP", "HOSTSWAPsize") + logging.debug("__Running sane settings") + try: + f = open(file, 'r') + filecontents = f.readlines() + f.close() + except: + logging.debug(" Couldn't find file %s to sane", file) + try: + f = open(file, 'w') + for line in filecontents: + for item in removeline: + if line.startsize(line.strip()): + logging.debug(" Found a line to remove in %s, %s", file, line) + else: + f.write(line) + except: + logging.debug(" Couldn't open file %s for writing", file) + logging.debug(" __End sane settings") + +def restore_default_settings(): + try: + MVROOT = os.environ["MV_ROOT"] + except: + logging.debug(" MVROOT was not defined, using the default value") + MVROOT = "/usr/MythVantage" + logging.info("Saving syssettings") + cmd = "%s/bin/restore_default_settings.sh -c save -t syssettings -h %s -d localhost" %(MVROOT, data_config.MVHOSTNAME) + runcmd(cmd) + SE = os.environ["TEMPLATES"]+"/settings/syssettings/" + cp_and_log(SE, data_config.MOUNTPOINT+SE) + cp_and_log("/etc/mtab", data_config.MOUNTPOINT+"/etc/mtab") + copy_updates() + fix_permissions() + +def full_install(hostoptions): + logging.info("______Start of full install______") + try: + MVROOT = os.environ["MV_ROOT"] + except: + logging.debug(" MVROOT was not defined, using the default value") + MVROOT = "/usr/MythVantage" + + try: + os.remove("/tmp/.this_is_upgrade") + except OSError: + logging.debug(" File /tmp/.this_is_upgrade not present, couldn't delete it") + pass +# Partition disk + statusmsg = "Partitioning %s" %( hostoptions["rootdisk"]) + update_status(statusmsg) + progress(1) + if data_config.NOOPDEBUG == "FALSE": + partition_disk() + else: + logging.debug(" Debug mode, skipping partitioning step") + +# Format disk + statusmsg = "Preparing %s" %( hostoptions["rootdisk"]) + update_status(statusmsg) + progress(2) + format_disk("install") + + +# Mount partitions + statusmsg = "Mounting %s" %( hostoptions["rootdisk"]) + update_status(statusmsg) + progress(3) + mount_it() + +# Find number of bytes written to disk before starting copy. This is used +# to have a somewhat decent progress indication. + statgrab( hostoptions["rootdisk"]) + msg = "Creating %s" %(systemconfig["hostname"]) + update_status(msg) + +# Copy system to disk + copy_it("install") +# Remove old fstab so that a new one is created + fstabfile = data_config.MOUNTPOINT+"/etc/fstab" + try: + os.remove(fstabfile) + except OSError: + logging.debug(" ERROR: deleting %s", fstabfile) + fstab_it("full_install") +# Configure system + msg = "Configuring system" + update_status(msg) + progress(98) + grub_it() + special_hardware_check() +# Configuring the system + logging.info("______Configuring system________") + cp_and_log("/etc/systemconfig", data_config.MOUNTPOINT+"/etc/systemconfig") + cp_and_log("/root/xorg.conf.install", data_config.MOUNTPOINT+"/etc/X11/xorg.conf.install") + restore_default_settings() + #try: + #MVROOT=os.environ["MV_ROOT"] + #except: + #logging.debug(" MVROOT was not defined, using the default value") + #MVROOT="/usr/MythVantage" + #logging.info("Saving syssettings") + #cmd="%s/bin/restore_default_settings.sh -c save -t syssettings -h %s -d localhost" %(MVROOT, data_config.MVHOSTNAME) + #runcmd(cmd) + #SE=os.environ["TEMPLATES"]+"/settings/syssettings" + #cp_and_log(SE, data_config.MOUNTPOINT+SE) + #cp_and_log("/etc/mtab", data_config.MOUNTPOINT+"/etc/mtab") + #cp_and_log2(MVROOT+"/bin/", data_config.MOUNTPOINT+MVROOT+"/bin/", "*.sh") + #cp_and_log2(MVROOT+"/bin/", data_config.MOUNTPOINT+MVROOT+"/bin/", "*.py") + #fix_permissions() + mount_bind_chroot() + apply_new_auth() + umount_bind_chroot() + if ( systemconfig["SystemType"] == "Master_backend" or systemconfig["SystemType"] == "Standalone" ): +# This install will need a DB, so install it + logging.info("______Installing Database in CHROOT________") + mysqldb("stop", '') + mount_bind_chroot() + cmd = " chroot %s %s/bin/install_db_chroot.sh |tee /tmp/chrootdb.out" %(data_config.MOUNTPOINT, MVROOT) + runcmd(cmd) + logging.info("Running systemconfig in chroot") + #cmd = " chroot %s %s/bin/systemconfig.sh misc, hostype, network, advanced, user, this_is_install" %(data_config.MOUNTPOINT, MVROOT) + cmd = "chroot %s %s/bin/systemconfig.sh all,this_is_install" %(data_config.MOUNTPOINT, MVROOT) + rc = runcmd(cmd)[0] + if rc != 0 : + error_out("Running systemconfig") + + mysqldb("stop", "chroot") + kill_dhcp_chroot() + logging.info("____End Database in CHROOT____") + mysqldb("start", '') + umount_bind_chroot() + else: + logging.info("______No database required, continuing configuration________") + mount_bind_chroot() + cmd = " chroot %s DISPLAY=127.0.0.1:0 %s/bin/MythVantage -t restore, default 1" %(data_config.MOUNTPOINT, MVROOT) + runcmd(cmd) +# Need to check for to touch /tmp/.dbsysfailed + cmd = " chroot %s %s/bin/restore_default_settings.sh -c restore -t syssettings " %(data_config.MOUNTPOINT, MVROOT) + runcmd(cmd) + if ( 'x' == '1' ): + logging.debug("touching /tmp/.dbsysfailed") + else: + #cmd = " chroot %s %s/bin/systemconfig.sh misc, hostype, network, advanced, user, this_is_install" %(data_config.MOUNTPOINT, MVROOT) + cmd = "chroot %s %s/bin/systemconfig.sh all,this_is_install" %(data_config.MOUNTPOINT, MVROOT) + rc = runcmd(cmd)[0] + if rc != 0 : + error_out("Running systemconfig") + cmd = "chroot %s %s/bin/restore_default_settings.sh -c ACCESSCONTROL " %(data_config.MOUNTPOINT, MVROOT) + runcmd(cmd) + umount_bind_chroot() + #cmd = " chroot %s %s/bin/systemconfig.sh advanced, user" %(data_config.MOUNTPOINT, MVROOT) + #runcmd(cmd) + cmd = " touch %s%s/.configure" %(data_config.MOUNTPOINT, data_config.MYTHHOME) + runcmd(cmd) + cmd = " chmod 777 %s%s/.configure" %(data_config.MOUNTPOINT, data_config.MYTHHOME) + runcmd(cmd) + msg = "Done" + update_status(msg) + cp_and_log("/tmp/mythvantage_install.log", data_config.MOUNTPOINT+"/var/log/mythvantage_install.log") + cp_and_log("/tmp/mv_debug.log", data_config.MOUNTPOINT+"/var/log/mv_debug.log") + unmount_it() + logging.debug("_____End of full install_____") + +def find_upgrade(): + logging.info("_____Start of find_upgrade_____") + global hostoptions + #try to mount first partition of disk + #copy old /etc/systemconfig to live, import settings into db + #umount drive. + #check for clean upgrade + if ( clean_upgrade() ): + logging.info("Clean upgrade requested, not using old data") + return + mount_it() + oldbackupfile = data_config.MOUNTPOINT+"/root/backup/"+data_config.BACKUPFILE + newbackupfile = "/tmp/"+data_config.BACKUPFILE + if os.path.exists(oldbackupfile): + logging.debug("Setting backup file to %s", newbackupfile) + hostoptions["backupfile"] = newbackupfile + cp_and_log(oldbackupfile, newbackupfile) + + srcfile = data_config.MOUNTPOINT+"/etc/systemconfig" + logging.info("Searching for systemconfig file %s", srcfile) + if os.path.exists(srcfile): + logging.info("Found systemconfig file %s", srcfile) + TEMPLATES = os.environ["TEMPLATES"]+"/settings/syssettings" + cp_and_log2(data_config.MOUNTPOINT+TEMPLATES, data_config.TEMP_TEMPLATES, '') + sane_settings("/tmp/templates/settings/syssettings/settings.txt") + cp_and_log2(data_config.TEMP_TEMPLATES, TEMPLATES, '') + cp_and_log(srcfile, "/etc/systemconfig") + cp_and_log(data_config.MOUNTPOINT+"/etc/", "/tmp/etc/") + cp_and_log(data_config.MOUNTPOINT+"/var/lib/alsa/", "/tmp/alsa") + cp_and_log(data_config.MOUNTPOINT+"/var/lib/oss/", "/tmp/oss") + cp_and_log("/tmp/etc/mdadm.conf", "/etc/mdadm.conf") + else: + logging.info("Could not find systemconfig file %s", srcfile) + cp_and_log(data_config.MOUNTPOINT+"/etc/", "/tmp/etc/") + cp_and_log(data_config.MOUNTPOINT+"/var/lib/alsa/", "/tmp/alsa") + cp_and_log("/tmp/etc/mdadm.conf", "/etc") + timezone_to_db("/tmp/etc/timezone") + unmount_it() + logging.debug("End of find_upgrade") + +def upgrade_mount_search(): + #Search for data/myth partition based on contents of fstab + logging.debug("______Start of upgrade_mount_search_____") + cmd = "umount %s%s" %(data_config.MOUNTPOINT, data_config.DATAMOUNT) + runcmd(cmd) + fstab_list = [] + fstab_data_mount = '' + try: + f = open("/tmp/etc/fstab", 'r') + oldfscontents = f.readlines() + f.close() + ## ['UUID=', '/myth', 'auto', 'defaults, noatime', '0', '1'] + #for line in oldfscontents: + #mountdir=line.split() + #if mountdir[1] == (data_config.DATAMOUNT): + #fstablist.append(mountdir) + except: + logging.debug(" Couldn't open /tmp/etc/fstab") + for line in oldfscontents: + if line.startswith("#"): + continue + mountdir=line.split() + try: + if mountdir[1] == (data_config.DATAMOUNT): + fstablist.append(mountdir) + except: + continue + #search fstab for data/myth mountpoint + for i in fstab_list: + if i[1] == data_config.DATAMOUNT: + fstab_data_mount = i[0] + break + + #start software raid support if needed + for i in fstab_list: + if i[0].startswith("/dev/md"): + logging.debug(" starting software raid support") + mdadm_assemble_all + + + if re.search("UUID", fstab_data_mount): + fstab_data_uuid = fstab_data_mount.split("=")[1] + cmd = "blkid -t UUID=%s" %fstab_data_uuid + retcode = call(cmd, shell=True) + if retcode != 0: + logging.debug(" Couldn't find uuid %s, starting md support", fstab_data_uuid) + mdadm_assemble_all + #hoping everything is up and running and data/myth will be available for mount + cmd = "mount -U %s %s" %(fstab_data_uuid, data_config.MOUNTPOINT) + runcmd(cmd) + cmd = "blkid -t UUID=%s|cut -d: -f1" %fstab_data_uuid + logging.debug(cmd) + datadisk = commands.getoutput(cmd) + cmd = "basename %s" %datadisk + datadisk = commands.getoutput(cmd) + else: + cmd = "mount %s %s" %(fstab_data_mount, data_config.MOUNTPOINT) + runcmd(cmd) + cmd = "basename %s" %fstab_data_mount + datadisk = commands.getoutput(cmd) + time.sleep(3) +# hostoptions["backupfile"]=data_config.BACKUPPATH+data_config.BACKUPFILE + if not backup_sql_check(): + newbackupfile = "/tmp/"+data_config.BACKUPFILE + if os.path.exists(newbackupfile): + logging.debug("Setting backup file to %s", newbackupfile) + cp_and_log(newbackupfile, data_config.MOUNTPOINT+newbackupfile) + hostoptions["backupfile"] = newbackupfile + else: + logging.info("Couldn't find any database to restore, upgrade will continue with a new database") + + + +def upgrade(hostoptions): + + try: + MVROOT = os.environ["MV_ROOT"] + except: + logging.debug("MVROOT was not defined, using the default value") + MVROOT = "/usr/MythVantage" + logging.info("______Start of upgrade______") + cmd = "touch /tmp/.this_is_upgrade" + runcmd(cmd) + if hostoptions["rootfs"] == "Do_not_format": + logging.info("Will not format root filesystem") + else: + statusmsg = "Preparing %s" %( hostoptions["rootdisk"]) + update_status(statusmsg) + progress(2) + format_disk("upgrade") + #sys.exit(2) + statusmsg = "Mounting %s" %( hostoptions["rootdisk"]) + update_status(statusmsg) + progress(3) + mount_it() + hostoptions["backupfile"] = data_config.BACKUPPATH+data_config.BACKUPFILE + statgrab( hostoptions["rootdisk"]) + msg = "Upgrading %s" %(systemconfig["hostname"]) + update_status(msg) + time.sleep(3) + copy_it("upgrade") + cmd = "rm -rf %s/etc.old" %data_config.MOUNTPOINT + runcmd(cmd) + cmd = "rm -rf %s/alsa.old" %data_config.MOUNTPOINT + runcmd(cmd) + + cp_and_log("/tmp/etc/", data_config.MOUNTPOINT+"/etc.old/") + cp_and_log("/tmp/alsa/", data_config.MOUNTPOINT+"/alsa.old/") + cp_and_log("/tmp/oss", data_config.MOUNTPOINT+"/var/lib/oss.old") + + srcfile = "%s/etc.old/ssh/" %(data_config.MOUNTPOINT) + destfile = "%s/etc/ssh/" %(data_config.MOUNTPOINT) + cp_and_log2(srcfile, destfile, '*.pub') + cp_and_log2(srcfile, destfile, '*.key') + cp_and_log2(srcfile, destfile, '*key') + + mdfile = mdadm_find("/tmp") + cp_and_log("/tmp"+mdfile, data_config.MOUNTPOINT+"/etc") + + srcfile = "%s/etc.old/asound.conf" %(data_config.MOUNTPOINT) + destfile = "%s/etc/asound.conf" %(data_config.MOUNTPOINT) + cp_and_log(srcfile, destfile) + + # R5.5 -> R6 + srcfile = "%s/alsa.old/asound.state" %(data_config.MOUNTPOINT) + destfile = "%s/etc/asound.state" %(data_config.MOUNTPOINT) + cp_and_log(srcfile, destfile) + # R6 -> R6 + srcfile = "%s/etc.old/asound.state" %(data_config.MOUNTPOINT) + destfile = "%s/etc/asound.state" %(data_config.MOUNTPOINT) + cp_and_log(srcfile, destfile) + + srcfile = "%s/etc.old/mplayer/mplayer.conf" %(data_config.MOUNTPOINT) + destfile = "%s/etc/mplayer/mplayer.conf" %(data_config.MOUNTPOINT) + cp_and_log(srcfile, destfile) + + if not os.path.exists("/tmp/etc/KnoppMyth-version"): + logging.debug(" standard upgrade, restoring auth files") + cp_and_log(data_config.MOUNTPOINT+"/etc.old/passwd", data_config.MOUNTPOINT+"/etc/passwd") + cp_and_log(data_config.MOUNTPOINT+"/etc.old/shadow", data_config.MOUNTPOINT+"/etc/shadow") + cp_and_log(data_config.MOUNTPOINT+"/etc.old/group", data_config.MOUNTPOINT+"/etc/group") + msg = "Configuring system" + + update_status(msg) + progress(98) + logging.info("______Configuring system________") + cp_and_log("/etc/systemconfig", data_config.MOUNTPOINT+"/etc/systemconfig") + if not backup_sql_check(): + upgrade_mount_search() + fstab_it("upgrade") + time.sleep(1) + grub_it() + time.sleep(1) + #needed to get around a bug with pacman + special_hardware_check() + cp_and_log("/root/xorg.conf.install", data_config.MOUNTPOINT+"/etc/X11/xorg.conf.install") + cp_and_log("/etc/mtab", data_config.MOUNTPOINT+"/etc/mtab") + if clean_upgrade() or os.path.exists("/tmp/etc/KnoppMyth-version"): + logging.debug("clean upgrade or knoppmyth upgrade detected, running restore settings") + restore_default_settings() + if clean_upgrade(): + file = "%s/%s/.kmupgrade" %(data_config.MOUNTPOINT, data_config.MYTHHOME) + cmd = "touch %s && chmod 777 %s" %(file, file) + runcmd(cmd) + copy_updates() + fix_permissions() + mount_bind_chroot() + logging.info("Running systemconfig in chroot") + #cmd = " chroot %s %s/bin/systemconfig.sh misc, hostype, network, advanced, user, this_is_install" %(data_config.MOUNTPOINT, MVROOT) + cmd = "chroot %s %s/bin/systemconfig.sh all,this_is_install" %(data_config.MOUNTPOINT, MVROOT) + rc = runcmd(cmd)[0] + if rc != 0 : + error_out("Running systemconfig") + mysqldb("stop", "") + if ( systemconfig["SystemType"] == "Master_backend" or systemconfig["SystemType"] == "Standalone" ): + if clean_upgrade() or not backup_sql_check(): + logging.info("Installing new database") + cmd = " chroot %s %s/bin/install_db_chroot.sh |tee /tmp/chrootdb.out" %(data_config.MOUNTPOINT, MVROOT) + runcmd(cmd) + else: + logging.info("Restoring database") + cmd = " chroot %s %s/bin/restore_km_db_chroot.sh %s|tee /tmp/chrootdb.out" %(data_config.MOUNTPOINT, MVROOT, hostoptions["backupfile"]) + runcmd(cmd) + + if os.path.exists("/tmp/etc/KnoppMyth-version"): + cmd = " chroot %s %s/bin/restore_default_settings.sh -c restore -t hostsettings " %(data_config.MOUNTPOINT, MVROOT) + runcmd(cmd) + logging.debug("Correcting permissions because of km->linhes upgrade") + cmd = " chown -R mythtv:mythtv %s" %(data_config.MOUNTPOINT+data_config.DATAMOUNT) + runcmd(cmd) + cmd = " chown -R root:root %s" %(data_config.MOUNTPOINT+data_config.DATAMOUNT+"/backup") + runcmd(cmd) + else: + cmd = " chroot %s %s/bin/restore_default_settings.sh -c restore -t syssettings " %(data_config.MOUNTPOINT, MVROOT) + runcmd(cmd) + + logging.info("Running systemconfig in chroot 2nd time") + #cmd = " chroot %s %s/bin/systemconfig.sh misc, hostype, network, advanced, user, this_is_install" %(data_config.MOUNTPOINT, MVROOT) + cmd = "chroot %s %s/bin/systemconfig.sh all,this_is_install" %(data_config.MOUNTPOINT, MVROOT) + rc = runcmd(cmd)[0] + if rc != 0 : + error_out("Running systemconfig") + #logging.info("Running systemconfig in chroot") + #cmd = " chroot %s %s/bin/systemconfig.sh advanced" %(data_config.MOUNTPOINT, MVROOT) + #runcmd(cmd) + mysqldb("stop", 'chroot') + apply_new_auth() + kill_dhcp_chroot() + umount_bind_chroot() + cp_and_log("/tmp/mythvantage_install.log", data_config.MOUNTPOINT+"/var/log/mythvantage_install.log") + cp_and_log("/tmp/mv_debug.log", data_config.MOUNTPOINT+"/var/log/mv_debug.log") + unmount_it() + msg = "Done" + update_status(msg) + mysqldb("start", '') + + + + +def main(argv): + global hostoptions + try: + opts, args = getopt.getopt(argv, 'c:h', ["help", "rootdisk=", "rootfs=", "rootsize=", "datafs=", "datasize=", "datadisk=", "swapsize=", "datapartition=" ] ) + except getopt.GetoptError, why: + print why + usage() + sys.exit(2) + hostoptions = {"op": 'null'} + for opt, arg in opts: + if opt in ("-h", "--help"): + usage() + sys.exit(0) + elif opt in ( "--rootdisk"): + hostoptions["rootdisk"] = arg + hostoptions["rootpartition"] = arg+str(1) + elif opt in ("--rootfs"): + hostoptions["rootfs"] = arg + elif opt in ("--rootsize"): + hostoptions["rootsize"] = arg + elif opt in ("--datafs"): + hostoptions["datafs"] = arg + elif opt in ("--datasize"): + hostoptions["datasize"] = arg + elif opt in ("--datadisk"): + hostoptions["datadisk"] = arg + elif opt in ("--datapartition"): + hostoptions["datapartition"] = arg + elif opt in ("--swapsize"): + hostoptions["swapsize"] = arg + + elif opt in ("-c"): + validop = ["full_install", "upgrade", "netboot", "find_upgrade"] + if arg not in validop: + logging.critical("-c %s is not a valid option", arg) + sys.exit(2) + else: + hostoptions["op"] = arg + try: + hostoptions["datadisk"] + except: + hostoptions["datadisk"] = hostoptions["rootdisk"] + hostoptions["datapartition"] = hostoptions["datadisk"]+str(3) + try: + hostoptions["datapartition"] + except: + hostoptions["datapartition"] = hostoptions["datadisk"]+str(3) + hostoptions["swappartition"] = hostoptions["rootdisk"] + str(2) + + + if ( hostoptions["op"] == "full_install" ) : + full_install(hostoptions) + elif (hostoptions["op"] == "upgrade" ) : + hostoptions["datafs"] = "no_format" + find_upgrade() + upgrade(hostoptions) + elif (hostoptions["op"] == "find_upgrade" ) : + find_upgrade() + return hostoptions + + +#____________________________________________setup the logging______________________________________________________ +LOG_FILENAME = '/tmp/mv_status.log' +DEBUGLOG = '/tmp/mv_debug.log' +logging.basicConfig(level=logging.DEBUG, + format='%(asctime)s - %(name)s - %(levelname)s - %(message)s', + datefmt='%m-%d %H:%M', + filename=DEBUGLOG, + filemode='a') +# define a Handler which writes INFO messages or higher to the sys.stderr +console = logging.StreamHandler() +console.setLevel(logging.INFO) +# set a format which is simpler for console use +#formatter = logging.Formatter('%(name)-12s: %(levelname)-8s %(message)s') +formatter = logging.Formatter("%(message)s") +# tell the handler to use this format +console.setFormatter(formatter) +# add the handler to the root logger +logging.getLogger('').addHandler(console) + +#infoformatter = logging.Formatter("%(asctime)s - %(name)s - %(levelname)s - %(message)s") +infoformatter = logging.Formatter("%(message)s") +infofile = logging.FileHandler(LOG_FILENAME, 'w') +infofile.setFormatter(infoformatter) +infofile.setLevel(logging.INFO) +logging.getLogger('').addHandler(infofile) + +#Read in systemconfig +global systemconfig +systemconfig = {} +file_name = "/etc/systemconfig" +try: + config_file = open(file_name) +except: + logging.debug("%s could not be opened", file_name) + config_file = '' + +for line in config_file: + line = line.strip() + if line and line[0] is not "#" and line[-1] is not "=": + var, val = line.rsplit("=", 1) + val = val.strip('"') + systemconfig[var.strip()] = val.strip() + + +if __name__ == "__main__": + config_file = "mv_config" + data_config = __import__(config_file, globals(), locals(), []) + logging.debug("___________START OF DEBUG_________________________") + cmdoptions = main(sys.argv[1:]) + logging.debug("______cmd line options______") + for i in cmdoptions.items(): + logging.debug (i) + logging.debug("______systemconfig______") + for i in systemconfig.items(): + logging.debug(i) + logging.debug("______hostoptions______") + for i in hostoptions.items(): + logging.debug(i) + pass + diff --git a/abs/mv-core/MythVantage-config/mv_ir.py b/abs/mv-core/MythVantage-config/mv_ir.py new file mode 100755 index 0000000..bc1ae37 --- /dev/null +++ b/abs/mv-core/MythVantage-config/mv_ir.py @@ -0,0 +1,330 @@ +# -*- coding: utf-8 -*- +import logging, mv_common +import os, re , glob +from time import time, localtime, strftime +import time +import pwd + +def setup_lirc_links(mythhome): + logging.debug(" Creating links for lirc") + try: + mythuid = pwd.getpwnam('mythtv')[2] + mythgid = pwd.getpwnam('mythtv')[3] + except: + logging.critical("* mythuid not found") + mythuid = '1000' + mythgid = '1000' + if not os.path.exists(mythhome+"/.mythtv"): + logging.debug(" Creating %s/.mythtv",mythhome) + try: + os.mkdir(mythhome+"/.mythtv") + except: + logging.debug(" Couldn't create .mythtv ") + return + try: + os.chown(mythhome+"/.mythtv", mythuid, mythgid) + logging.debug("* Couldn't chown of %s", mythhome) + except: + cmd = ''' chown -R mythtv %s/.mythtv''' %mythhome + mv_common.runcmd(cmd) + cmd = ''' chgrp -R mythtv %s/.mythtv''' %mythhome + mv_common.runcmd(cmd) + pass + + if os.path.exists("/etc/lircrc"): + if not os.path.exists(mythhome+"/.mythtv/lircrc"): + logging.debug(" Creating symlink for myth lircrc") + os.symlink("/etc/lircrc",mythhome+"/.mythtv/lircrc") + else: + logging.debug(" %s/lircrc already present",mythhome) + + if not os.path.exists(mythhome+"/.lircrc"): + logging.debug(" Creating symlink for lircrc") + os.symlink("/etc/lircrc",mythhome+"/.lircrc") + else: + logging.debug(" %s/.lircrc already present",mythhome) + else: + logging.debug(" /etc/lircrc does not exisit, can not link it") + +def scrub_modules(filename,module): + logging.debug(" scrubbing %s from %s",module,filename) + cmd = '''sed -i -e '/.*#%s/d' %s''' %(module,filename) + mv_common.runcmd(cmd) + +def add_module(filename,module): + logging.debug(" adding %s to %s",module,filename) + cmd = ''' echo "%s" >> %s ''' %(module,filename) + mv_common.runcmd(cmd) + +def unload_all_lirc(): + logging.debug(" Unloading all lirc modules") + cmd = "sv stop lircd" + mv_common.runcmd(cmd) + cmd = "killall -9 lircd" + mv_common.runcmd(cmd) + cmd = '''modprobe -r $(lsmod |grep ^lirc |awk '{print $1}') ''' + mv_common.runcmd(cmd) + + + +def include_file( incfile,filename): + logging.debug(" including %s within %s",filename,incfile) + try: + f = open( incfile, 'a') + except: + logging.debug(" Couldn't open %s for writing",incfile) + return + line = '''include "%s" ''' %filename + logging.debug(" %s",line) + f.write(line) + f.write("\n") + f.close() + +def setup_ir_remote(Remotetype,templates): + logging.debug(" Setup of remote type %s",Remotetype) + if Remotetype == "no_remote": + mv_common.remove_service("lircd") + elif Remotetype == "tinker": + pass + else: + currenttime = strftime("%b-%d-%Y-%H:%M:%S", localtime()) + cmd = "mv /etc/lircd.conf /etc/lircd.conf-%s" %currenttime + mv_common.runcmd(cmd) + cmd = "mv /etc/lircrc /etc/lircrc-%s" %currenttime + mv_common.runcmd(cmd) + files = templates + "/remotes/" + Remotetype + "/lircd*" + logging.debug(" Using %s",files) + for filename in glob.glob(files): + # Ignore subfolders + if os.path.isdir (filename): + logging.debug(" %s is a dir, skipping",filename) + continue + include_file("/etc/lircd.conf",filename) + files = templates + "/remotes/" + Remotetype + "/lircrc*" + logging.debug(" Using %s",files) + for filename in glob.glob(files): + # Ignore subfolders + if os.path.isdir (filename): + logging.debug(" %s is a dir, skipping",filename) + continue + include_file("/etc/lircrc",filename) + cmd = "chmod 755 /etc/lircrc" + mv_common.runcmd(cmd) + mv_common.add_service("lircd") + + +def setup_ir_receiver(ReceiverType,TEMPLATES): + logging.info(" Configuring receiver %s", ReceiverType) + if ReceiverType == "Serial": + scrub_modules("/etc/modules.mythvantage","lirc") + add_module("/etc/modules.mythvantage","lirc_serial #lirc") + cmd = "load-modules-mythvantage.sh" + mv_common.runcmd(cmd) + mv_common.remove_service("igdaemon") + mv_common.remove_service("tatir") + + elif ReceiverType == "Usb-imon": + scrub_modules("/etc/modules.mythvantage","lirc") + add_module("/etc/modules.mythvantage","lirc_imon #lirc") + cmd = "load-modules-mythvantage.sh" + mv_common.runcmd(cmd) + mv_common.remove_service("igdaemon") + mv_common.remove_service("tatir") + + elif ReceiverType == "Hauppauge": + scrub_modules("/etc/modules.mythvantage","lirc") + add_module("/etc/modules.mythvantage","lirc_i2c #lirc") + mv_common.cp_and_log(TEMPLATES+"/modules/lirc_i2c.conf" , + "/etc/modprobe.d/lirc_i2c.conf") + cmd = "rmmod lirc_i2c" + mv_common.runcmd(cmd) + cmd = "load-modules-mythvantage.sh" + mv_common.runcmd(cmd) + mv_common.remove_service("igdaemon") + mv_common.remove_service("tatir") + elif ReceiverType == "pvr150": + scrub_modules("/etc/modules.mythvantage","lirc") + add_module("/etc/modules.mythvantage","lirc_i2c #lirc") + mv_common.cp_and_log(TEMPLATES+"/modules/lirc_i2c.conf" , + "/etc/modprobe.d/lirc_i2c.conf") + cmd = "rmmod lirc_i2c" + mv_common.runcmd(cmd) + cmd = "load-modules-mythvantage.sh" + mv_common.runcmd(cmd) + mv_common.remove_service("igdaemon") + mv_common.remove_service("tatir") + elif ReceiverType == "iguanaIR-usb": + scrub_modules("/etc/modules.mythvantage","lirc") + mv_common.add_service("igdaemon") + mv_common.remove_service("tatir") + + elif ReceiverType == "tatir": + scrub_modules("/etc/modules.mythvantage","lirc") + mv_common.add_service("tatir") + mv_common.remove_service("igdaemon") + + else: + logging.debug(" didn't match receiver, using genric case") + scrub_modules("/etc/modules.mythvantage","lirc") + mv_common.remove_service("igdaemon") + mv_common.remove_service("tatir") + +def setup_blaster_proto(HostBlasterType,Hostnumblaster,TEMPLATES,systemconfig): + logging.debug(" Start of setup_blaster_proto") + logging.debug(" HostBlasterType: %s", HostBlasterType) + logging.debug(" Hostnumblaster: %s" , Hostnumblaster) + if not HostBlasterType == "pvr150" and not HostBlasterType == "None": + for i in range(int(Hostnumblaster)): + try: + proto = systemconfig["HostTransmitproto_"+str(i+1)] + logging.debug(" proto: %s",proto) + except: + logging.info(" unkown proto for %s",i+1) + continue + template=TEMPLATES+"/transmit/%s/lircd.conf" %proto + if os.path.exists(template): + logging.debug(" include blaster template: %s",proto) + include_file("/etc/lircd.conf",template) + else: + logging.debug(" template: %s is not present",template) + logging.info("------NEED TO SETUP CHANGE_CHANNEL------") + + +def setup_blaster_transmiter(HostBlasterType): + logging.debug(" Start of setup_blaster_transmiter") + logging.info(" HostBlasterType : %s", HostBlasterType) + + if HostBlasterType == "Receiver": + logging.info(" Blaster is receiver, skipping module config for Blaster") + return + + if HostBlasterType == "no blaster": + scrub_modules("/etc/modules.mythvantage","blaster") + elif HostBlasterType == "Serial": + scrub_modules("/etc/modules.mythvantage","blaster") + add_module("/etc/modules/.mythvantage","lirc_serial #blaster") + cmd = "load-modules-mythvantage.sh" + mv_common.runcmd(cmd) + elif HostBlasterType == "pvr150": + scrub_modules("/etc/modules.mythvantage", "blaster") + scrub_modules("/etc/modules.mythvantage", "lirc") + add_module("/etc/modules.mythvantage", "lirc_pvr150 #blaster") + add_module("/etc/modules.mythvantage", "lirc_pvr150 #lirc") + cmd = "rmmod lirc_i2c" + mv_common.runcmd(cmd) + cmd = "load-modules-mythvantage.sh" + mv_common.runcmd(cmd) + else: + scrub_modules("/etc/modules.mythvantage","blaster") + +def setup_lcd(LCDtype, TEMPLATES, Remotetype): + logging.debug("____Start of setup_lcd____") + logging.debug(" LCDType: %s", LCDtype) + logging.debug(" Remotetype: %s", Remotetype) + if LCDtype == "tinker": + logging.info(" tinker mode detected") + return + + if LCDtype == "no_lcd": + logging.info(" Disabling LCD support") + cmd = "sv stop lcdd" + mv_common.runcmd(cmd) + #sometimes it doesn't want to die + cmd = "killall -9 LCDd" + mv_common.runcmd(cmd) + cmd = "load-modules-mythvantage.sh UNLOAD LCD" + mv_common.runcmd(cmd) + scrub_modules("/etc/modules.mythvantage", "LCD") + mv_common.remove_service("lcdd") + else: + lcdmodule="%s/LCD/%s/modules" %(TEMPLATES,LCDtype) + if os.path.exists(lcdmodule): + logging.debug(" Adding module for LCD") + scrub_modules("/etc/modules.mythvantage", "LCD") + cmd = "cat %s >> /etc/modules.mythvantage" %lcdmodule + mv_common.runcmd(cmd) + if Remotetype != "tinker": + lcdconf = "%s/LCD/%s/LCDd.conf" %(TEMPLATES,LCDtype) + lcdlirc = "%s/LCD/%s" %(TEMPLATES,LCDtype) + mv_common.pacinstall("lcdproc") + if os.path.exists(lcdconf): + logging.debug(" Copying in lcdconf template file: %s",lcdconf) + mv_common.cp_and_log(lcdconf, "/etc/LCDd.conf") + else: + logging.debug(" %s is not present, will not copy it") + + if os.path.exists(lcdlirc+"/lircrc"): + logging.debug(" LCD seems to support lirc") + #setup the lirc aspect of the lcd + #copied from setup_ir_remote + files = lcdlirc+"/lircd*" + logging.debug(" Using %s",files) + for filename in glob.glob(files): + # Ignore subfolders + if os.path.isdir (filename): + logging.debug(" %s is a dir, skipping",filename) + continue + include_file("/etc/lircd.conf",filename) + files = lcdlirc+"/lircrc*" + logging.debug(" Using %s",files) + for filename in glob.glob(files): + # Ignore subfolders + if os.path.isdir (filename): + logging.debug(" %s is a dir, skipping",filename) + continue + include_file("/etc/lircrc",filename) + cmd = "chmod 755 /etc/lircrc" + mv_common.runcmd(cmd) + + mv_common.add_service("lcdd") + mv_common.restart_service("lcdd") + logging.debug("__End of setup_lcd") + +def setup_ir(systemconfig, data_config): + rc = False + logging.info("____Start of IR____") + if systemconfig["Remotetype"] == "tinker": + logging.info(" Tinker mode detected") + else: + if not systemconfig["HostBlasterType"]: + HostBlasterType = "unknown" + Hostnumblaster = "0" + else: + HostBlasterType = systemconfig["HostBlasterType"] + Hostnumblaster = systemconfig["Hostnumblaster"] + + if systemconfig["HostBlasterType"] == "pvr150": + remotetype = "hauppauge-blaster" + logging.debug(" pvr150 blaster selected, setting remote to hauppauge-blaster") + else: + remotetype = systemconfig["Remotetype"] + + setup_ir_remote(remotetype,systemconfig["TEMPLATES"]) + setup_lirc_links(data_config.MYTHHOME) + + if systemconfig["ReceiverType"]: + setup_ir_receiver(systemconfig["ReceiverType"], + systemconfig["TEMPLATES"]) + else: + setup_ir_receiver("unknown", systemconfig["TEMPLATES"]) + unload_all_lirc() + setup_blaster_proto(HostBlasterType, + Hostnumblaster, + systemconfig["TEMPLATES"], + systemconfig) + setup_blaster_transmiter(HostBlasterType) + cmd = "load-modules-mythvantage.sh" + mv_common.runcmd(cmd) + time.sleep(2) + mv_common.udev_trigger() + cmd="sv start lircd" + mv_common.runcmd(cmd) + rc = [ True , True ] + if systemconfig["LCDtype"]: + setup_lcd(systemconfig["LCDtype"], + systemconfig["TEMPLATES"], + systemconfig["Remotetype"]) + else: + logging.debug(" LCD not defined") + logging.info("__End IR\n") + return rc \ No newline at end of file diff --git a/abs/mv-core/MythVantage-config/mv_misc.py b/abs/mv-core/MythVantage-config/mv_misc.py new file mode 100755 index 0000000..9ea9c95 --- /dev/null +++ b/abs/mv-core/MythVantage-config/mv_misc.py @@ -0,0 +1,180 @@ +# -*- coding: utf-8 -*- +import logging, mv_common +import os, re +from urllib2 import Request, urlopen, URLError, HTTPError + +config_file = "mv_config" +data_config = __import__(config_file, globals(), locals(), []) + +def setup_zip(MVROOT,zipcode): + logging.debug("____Setting up the zipcode____") + + if zipcode: + cmd="%s/bin/restore_default_settings.sh -c ZIP -c %s" %(MVROOT,zipcode) + mv_common.runcmd(cmd) + #Let's also speed things up for those in North America + cmd="mkdir /usr/bin/perlbin/vendor/tv_grabbers_non_na" + mv_common.runcmd(cmd) + cmd="mv /usr/bin/perlbin/vendor/tv_grab_* /usr/bin/perlbin/vendor/tv_grabbers_non_na" + mv_common.runcmd(cmd) + cmd="mv /usr/bin/perlbin/vendor/tv_grabbers_non_na/tv_grab_na* /usr/bin/perlbin/vendor/" + mv_common.runcmd(cmd) + else: + logging.debug(" Zipcode is not set") + + logging.debug("__End of zipcode\n") + +def setup_tz(timezone,TEMPLATES): + logging.info("____Setting up the timezone____") + + if not timezone: + timezone="unknown" + logging.info(" Setting timezone to %s",timezone) + mv_common.remove_file("/etc/localtime") + #try: + #logging.debug(" Removing /etc/localtime") + #os.remove("/etc/localtime") + #except: + #logging.debug(" Couldn't remove /etc/localtime") + #pass + + srclink="/usr/share/zoneinfo/%s" %timezone + logging.debug(" symlinking %s to /etc/localtime",srclink) + try: + os.symlink(srclink,"/etc/localtime") + except: + logging.critical(" Couldn't make symlink for /etc/localtime") + cmd = '''sed -e "s/^TIMEZONE=.*$/TIMEZONE=\\"%s\\" /" /etc/rc.conf > $TEMPLATES/rc.conf''' %re.escape(timezone) + mv_common.runcmd(cmd) + + if os.path.exists("/etc/php/php.ini"): + logging.info(" Changing timezone for php") + cmd = '''sed -i "s/^.*date.timezone.*$/date.timezone=%s/" ${BASE}/etc/php/php.ini''' %re.escape(timezone) + mv_common.runcmd(cmd) + + mv_common.cp_and_log(TEMPLATES+"/rc.conf","/etc/rc.conf") + logging.info("__End of timezone\n") + +def setup_nfs(systemconfig): + nfslist=[] + logging.info("____Start of setup_nfs____") + scrubnfs(systemconfig["TEMPLATES"]) + + if systemconfig["HaveCentralNFS"] == "yes": + logging.debug(" Using a Central NFS server") + if systemconfig["NFSserver"] == "file:nfsmap": + #if it's a file check for it, failure results in downloading attempt from MBE + nfsmap_file=data_config.MYTHHOME+"/templates/nfsmap" + if not os.path.exists(nfsmap_file): + logging.debug(" Couldn't find local %s",nfsmap_file) + logging.info(" Trying to download nfsmap from MBE") + nfsmap_file = download_nfsmap(systemconfig["dbhost"]) + nfslist = process_nfsmap_file(nfsmap_file) + # if it's an ip parse ip and download file + elif re.search(systemconfig["NFSserver"],":nfsmap"): + ip=systemconfig["NFSserver"].split(":")[0] + nfsmap_file = download_nfsmap(ip) + nfslist = process_nfsmap_file(nfsmap_file) + #else treat it as a single mount point + else: + item = (systemconfig["NFSserver"] , systemconfig["NFSmount"]) + nfslist.append(item) + else: + #if standalone or slave try to use MBE + if systemconfig["SystemType"] == "Frontend_only" or systemconfig["SystemType"] == "Slave_Backend": + item = (systemconfig["dbhost"] , data_config.DATAMOUNT) + nfslist.append(item) + setup_nfs_fstab(nfslist) + logging.info("__End of nfs\n") + +def setup_sleep(systemconfig): + logging.debug("____Setting up sleep____") + autoshutdown = systemconfig["AutoShutdown"] + stime1 = systemconfig["Shutdowntime"] + stime2 = systemconfig["Shutdowntime2"] + cstime1='' + + if autoshutdown == "1" : + if not stime1 == "-1" : + cstime1 = stime1 + cshutdown = cstime1 + if not stime2 == "-1" : + if cstime1 : + cshutdown = "%s,%s" %(cstime1,stime2) + else: + cshutdown = stime2 + logging.debug(" Shutdown time at %s",cshutdown) + cmd='''sed -e "s/HOUR/%s/g" %s/cron.template | crontab - -u mythtv''' %(cshutdown,systemconfig["TEMPLATES"]) + mv_common.runcmd(cmd) + else: + logging.info(" Shutdown not enabled") + cmd='''sed -e "/00 HOUR.*/d" %s/cron.template | crontab - -u mythtv''' %systemconfig["TEMPLATES"] + mv_common.runcmd(cmd) + + logging.debug("__End of sleep\n") + + +def process_nfsmap_file(mapfile): + logging.debug(" processing nfsmap file %s",mapfile) + nfslist = [] + try: + f = open(mapfile,"r") + for line in f.readlines(): + if line.startswith("#"): + continue + item = line.split() + if len(item) <= 1 : + continue + logging.debug(" %s",item) + nfslist.append(item) + except : + logging.critical("Couldn't read file %s, or some other error",mapfile) + return nfslist + +def scrubnfs(templates): + logging.info(" Scrubbing nfs") + mv_common.cp_and_log("/etc/fstab",templates+"/fstab.conf.template") + #used this sed cmd because it's clean and took me forever to figure out =) + cmd='''sed '/^#STARTSCRUB.*$/,/^#ENDSCRUB.*$/d' %s/fstab.conf.template > /etc/fstab''' %templates + mv_common.runcmd(cmd) + +def download_nfsmap(ip): + nfsmap_file="/tmp/nfsmap" + myurl="http://%s:1337/templates/nfsmap" %ip + req = Request(myurl) + try: + f = urlopen(req) + logging.info(" downloading %s", myurl) + local_file = open(nfsmap_file, "w") + #Write to our local file + local_file.write(f.read()) + local_file.close() + #handle errors + except HTTPError, e: + logging.info(" File download failed") + logging.debug(" %s", myurl) + logging.debug(" HTTP Error: %s", e.code) + except URLError, e: + logging.info(" File download failed") + logging.debug(" %s",myurl) + logging.debug(" URL Error: %s ", e.reason) + + return nfsmap_file + +def setup_nfs_fstab(nfslist): + logging.info(" Adding nfs paths to fstab") + try: + f = open('/etc/fstab', 'a') + line = "#STARTSCRUB --------------anything in this block will be scrubbed\n" + f.write(line) + for s, m in nfslist: + line = "%s %s nfs \n" %(s,m) + logging.debug(" %s",line) + f.write(line) + line = "#ENDSCRUB\n" + f.write(line) + f.close() + except: + logging.critical(" *Couldn't open /etc/fstab for writing") + logging.debug(" Done adding nfs paths to fstab") + diff --git a/abs/mv-core/MythVantage-config/mv_network.py b/abs/mv-core/MythVantage-config/mv_network.py new file mode 100755 index 0000000..3f8de3b --- /dev/null +++ b/abs/mv-core/MythVantage-config/mv_network.py @@ -0,0 +1,504 @@ +# -*- coding: utf-8 -*- +import sys , os, commands , glob, time, re +import logging +import mv_common +import socket, fcntl, struct, array +import netifaces, iplib +global etcnetdir +etcnetdir = "/etc/net/ifaces" + +def setup_MYTH_DHCP(systemconfig): + default_interface = systemconfig["default_interface"] + try: + defaultdhcp = systemconfig["HostUSEDHCP"+default_interface] + except: + logging.critical(" *Error occured finding default dhcp") + defaultdhcp = "0" + logging.debug(" Using %s as dhcp value for %s", defaultdhcp, default_interface) + return defaultdhcp + +def all_interfaces(): + max_possible = 128 # arbitrary. raise if needed. + bytes = max_possible * 32 + s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) + names = array.array('B', '\0' * bytes) + outbytes = struct.unpack('iL', fcntl.ioctl( + s.fileno(), + 0x8912, # SIOCGIFCONF + struct.pack('iL', bytes, names.buffer_info()[0]) + ))[0] + namestr = names.tostring() + return [namestr[i:i+32].split('\0', 1)[0] for i in range(0, outbytes, 32)] + +def get_ip(ifname): + logging.debug(" Finding ip address for %s", ifname) + all_if = all_interfaces() + logging.debug(" found interfaces:%s", all_if) + if ifname in all_if : + logging.debug(" Found %s in all_interfaces", ifname) + else: + logging.critical("* Couldn't find %s in list", ifname) + ifname = all_if[0] + logging.critical("* Using %s for interface name", ifname) + + + s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) + return socket.inet_ntoa(fcntl.ioctl( + s.fileno(), + 0x8915, # SIOCGIFADDR + struct.pack('256s', ifname[:15]) + )[20:24]) + +def get_default_route(iface): + rcroute = "127.0.0.1" + f = open ('/proc/net/route', 'r') + for line in f: + words = string.split (line) + netiface = words[0] + route = words[2] + flags = words[3] + try: + if ( netiface == iface ) and ( flags == "0003") : + route = iplib.IPv4Address(route, notation="hex") + t = str(route.get_dot()) + s = t.split(".") + rcroute = s[3] + "." + s[2] + "." + s[1] + "." + s[0] + break + except ValueError: + pass + return rcroute + +def setup_MYTH_IP(systemconfig): + default_interface = systemconfig["default_interface"] + #check for dhcp in use + if setup_MYTH_DHCP(systemconfig) == "0": + logging.debug(" dhcp is in use, finding dhcp ip") + defaultip = get_ip(default_interface) + else: + try: + defaultip = systemconfig["Hostip"+default_interface] + except: + logging.debug(" Error occured finding the defaultip") + defaultip = "127.0.0.1" + logging.debug(" Using %s as default ip", defaultip) + return defaultip + + +def setup_MYTH_GW(systemconfig): + default_interface = systemconfig["default_interface"] + #check for dhcp in use + if setup_MYTH_DHCP(systemconfig) == "0": + logging.debug(" dhcp is in use, finding dhcp ip") + defaultgw = get_default_route(default_interface) + else: + try: + defaultgw = systemconfig["Hostgw"+default_interface] + except: + logging.debug(" Error occured finding the defaultgw") + defaultgw = "127.0.0.1" + logging.debug(" Using %s as default gw", defaultgw) + return defaultgw + + +def setup_MTYH_DNS(): + returndns = "127.0.0.1" + try: + f = open ('/etc/resolv.conf', 'r') + for line in f: + if line.startswith("nameserver"): + print line + returndns = line.split()[1] + break + except: + logging.debug(" Couldn't open /etc/resolv.conf for myth_dns") + logging.debug(" using %s for myth_dns", returndns) + return returndns + + + + + +def flush(netdev): + logging.debug(" Flushing %s",netdev) + cmd = '''ip address flush dev %s''' %netdev + mv_common.runcmd(cmd) + +def kill_dhcp(basedir): + logging.debug(" _Start of kill_dhcp") + logging.debug(" Killing off dhcpd") + stddir = os.getcwd() + piddir = ("%s/var/run/") %basedir + try: + os.chdir(piddir) + for FILE in glob.glob("dhcpcd-*.pid"): + f = open(FILE,'r') + pid = f.readline() + f.close + cmd = "kill -9 %s" %pid + mv_common.runcmd(cmd) + mv_common.remove_file(FILE) + os.chdir(stddir) + except: + pass + +def setup_nameserver(dns): + logging.info(" Adding %s for DNS", dns) + cmd = '''grep -q %s /etc/resolv.conf''' %dns + status = mv_common.runcmd(cmd) + if not status == 0 : + cmd = ''' echo "nameserver %s" >> /etc/resolv.conf ''' %dns + mv_common.runcmd(cmd) + + + +def setup_hostname(systemconfig): + logging.debug(" _Start of setup_hostname") + try: + hostname = systemconfig["hostname"] + except: + logging.critical(" *Hostname could not be set") + logging.info(" Using default value of me") + hostname = "me" + logging.info(" Setting the hostname to %s", hostname) + cmd = ''' echo %s > /etc/hostname ''' %hostname + mv_common.runcmd(cmd) + cmd = "cat /etc/hosts | grep -v 127.0.0.1 | grep -v %s > /tmp/hosts" %hostname + mv_common.runcmd(cmd) + if systemconfig["mythdhcp"] == "1" : + logging.debug(" not using dhcp") + cmd = ''' echo 127.0.0.1 localhost > /etc/hosts ''' + mv_common.runcmd(cmd) + cmd = ''' echo %s %s > /etc/hosts ''' %(systemconfig["mythip"], systemconfig["hostname"]) + mv_common.runcmd(cmd) + else: + cmd = ''' echo 127.0.0.1 %s localhost > /etc/hosts ''' %systemconfig["hostname"] + mv_common.runcmd(cmd) + cmd = '''cat /tmp/hosts >> /etc/hosts ''' + mv_common.runcmd(cmd) + + +def write_wpafile(line,netdev): + logging.debug(" writing out wpa_supplicant.conf file") + logging.debug(line) + wpafile = etcnetdir+"/"+netdev+"/wpa_supplicant.conf" + try: + f = open(wpafile,'w') + f.write(line) + f.close() + except: + logging.debug(" Couldn't write to %s",wpafile) + +def setup_wpa(netinfo,netdev): + logging.info(" %s will use wpa for encryption",netdev) + line = ''' +#This file was automaticly generated, any changes may be lost +ctrl_interface=/var/run/wpa_supplicant +network={ + ssid="%s" + # Preshared key as an ASCII passphrase + psk="%s" + scan_ssid=1 + key_mgmt=WPA-EAP WPA-PSK NONE + pairwise=CCMP TKIP + proto=WPA RSN +}''' %(netinfo["ESSID"],netinfo["KEY"]) + write_wpafile(line,netdev) + +def setup_wep(netinfo,netdev): + logging.info(" %s will use wep for encryption",netdev) + logging.debug(" When a packet comes along, you must wep it") + line=''' +#This file was automaticly generated, any changes may be lost +ctrl_interface=/var/run/wpa_supplicant +network={ + ssid="%s" + key_mgmt=NONE + wep_key0=%s + wep_tx_keyidx=0 + scan_ssid=1 + auth_alg=SHARED +} +''' %(netinfo["ESSID"],netinfo["KEY"]) + write_wpafile(line,netdev) + + +def setup_none(netinfo,netdev): + logging.info(" %s will not use encryption",netdev) + line = ''' +#This file was automaticly generated, any changes may be lost +ctrl_interface=/var/run/wpa_supplicant +network={ + ssid="%s" + key_mgmt=NONE +} +''' %netinfo["ESSID"] + write_wpafile(line,netdev) + +def setup_interface(netdev,systemconfig): + logging.debug(" _Start of setup_interface for %s",netdev) + nettrans = {'Hostip':'ip', + 'Hostnetmask':'netmask', + 'HostActive':'isactive', + 'HostDNS':'dns', + 'HostUSEDHCP':'UseDHCP', + 'HostGW':'GW', + 'HostMTU':'mtu', + 'HOST_iswireless':"wireless", + 'HostESSID':'ESSID', + 'HostKey':'KEY', + 'HostUseEncryption':'ENCRYPT'} + netinfo = {} + #populate the netinfo dict + for netitem in nettrans: + if systemconfig[netitem+netdev]: + netinfo[nettrans[netitem]] = systemconfig[netitem+netdev] + else: + netinfo[nettrans[netitem]] = False + logging.debug(" %s:%s",netitem,netinfo[nettrans[netitem]]) + logging.info(" %s wireless: %s", netdev,netinfo["wireless"]) + try: + os.makedirs(etcnetdir) + except: + logging.debug(" Could not create %s",etcnetdir) + + optionfile=etcnetdir+"/"+netdev+"/options" + if not os.path.exists(optionfile): + os.makedirs(etcnetdir+"/"+netdev) + mv_common.cp_and_log(systemconfig["TEMPLATES"]+"/etcnet/eth/options", optionfile) + + if netinfo["isactive"] == "1" : + change_iface_state(netdev,"enabled") + else: + change_iface_state(netdev,"disabled") + + if netinfo["wireless"] == "1" : + + logging.info(" Enabling wireless extensions") + cmd = ''' sed -i -e 's/^CONFIG_WIRELESS=.*$/CONFIG_WIRLESS=yes/g' %s/%s/options''' %(etcnetdir,netdev) + mv_common.runcmd(cmd) + if netinfo["ENCRYPT"] == "WEP": + setup_wep(netinfo,netdev) + elif netinfo["ENCRYPT"] == "WPA": + setup_wpa(netinfo,netdev) + elif netinfo["ENCRYPT"] == "none": + setup_none(netinfo,netdev) + + else: + logging.info(" Disabling wireless extensions") + cmd = '''sed -i -e 's/^CONFIG_WIRLESS=.*$/CONFIG_WIRLESS=no/g' %s/%s/options''' %(etcnetdir, netdev) + mv_common.runcmd(cmd) + #try: + wpafile=etcnetdir+"/"+netdev+"/wpa_supplicant.conf" + #os.remove(wpafile) + mv_common.remove_file(wpafile) + #except: + #logging.debug(" Couldn't remove %s",wpafile) + + if netinfo["UseDHCP"] == "0" : + logging.info(" Enabling DHCP support") + cmd = ''' sed -i -e 's/^BOOTPROTO=.*$/BOOTPROTO=dhcp/g' %s/%s/options''' %(etcnetdir, netdev) + mv_common.runcmd(cmd) + else: + logging.info(" Using static ip address of %s",netinfo["ip"]) + cmd = ''' sed -i -e 's/^BOOTPROTO=.*$/BOOTPROTO=static/g' %s/%s/options''' %(etcnetdir, netdev) + mv_common.runcmd(cmd) + cmd = '''echo "default via %s" > %s/%s/ipv4route''' %(netinfo["GW"], etcnetdir, netdev) + mv_common.runcmd(cmd) + cmd = '''echo "%s%s" > %s/%s/ipv4address ''' %(netinfo["ip"], netinfo["netmask"].split()[0], etcnetdir, netdev) + mv_common.runcmd(cmd) + setup_nameserver(netinfo["dns"]) + + if netinfo["mtu"] : + logging.info(" Setting mtu to %s", netinfo["mtu"]) + cmd = '''sed -i '/^mtu.*$/d' %s/%s/iplink''' %(etcnetdir,netdev) + mv_common.runcmd(cmd) + cmd = ''' echo "mtu %s" >> %s/%s/iplink''' %(netinfo["mtu"], etcnetdir,netdev) + mv_common.runcmd(cmd) + else: + logging.info(" Using default mtu value") + cmd = '''sed -i '/^mtu.*$/d' %s/%s/iplink''' %(etcnetdir,netdev) + mv_common.runcmd(cmd) + + +def change_iface_state(netdev, state): + if state == "enabled": + logging.info(" Activating %s", netdev) + cmd = '''sed -i -e 's/^ONBOOT=.*$/ONBOOT=yes/g' %s/%s/options''' %(etcnetdir,netdev) + mv_common.runcmd(cmd) + cmd = '''sed -i -e 's/^DISABLED=.*$/DISABLED=no/g' %s/%s/options ''' %(etcnetdir,netdev) + mv_common.runcmd(cmd) + else: + logging.info(" Disabling %s", netdev) + cmd = '''sed -i -e 's/^ONBOOT=.*$/ONBOOT=no/g' %s/%s/options''' %(etcnetdir,netdev) + mv_common.runcmd(cmd) + cmd = '''sed -i -e 's/^DISABLED=.*$/DISABLED=yes/g' %s/%s/options ''' %(etcnetdir,netdev) + mv_common.runcmd(cmd) + cmd = "/sbin/ifconfig %s down" %netdev + mv_common.runcmd(cmd) + cmd = "ip address flush %s" %netdev + mv_common.runcmd(cmd) + +def devcheck(netdev): + cmd = ''' /sbin/ifconfig %s''' %netdev + rc = mv_common.runcmd(cmd) + if rc == 0 : + return True + else: + return False + +def udev_rules(netdev): + filename = "/etc/udev/rules.d/net.rules" + if devcheck(netdev): + logging.info(" Finding macaddress for %s",netdev) + try: + macaddress = netifaces.ifaddresses(netdev)[netifaces.AF_LINK][0]['addr'] + logging.debug(" Macaddress: %s",macaddress) + except: + logging.debug(" Couldn't find mac address for %s",netdev) + return + try: + f = open(filename,'a') + except: + logging.debug(" Couldn't open %s for writing", filename) + return + if netdev.startswith('eth'): + line = '''KERNEL=="eth*", SYSFS{address}=="%s", NAME="%s"''' % ( macaddress , netdev) + elif netdev.startswith('wlan'): + line = '''KERNEL=="wlan*", SYSFS{address}=="%s", NAME="%s"'''% ( macaddress , netdev) + elif netdev.startswith('ath'): + line = '''KERNEL=="ath*", SYSFS{address}=="%s", NAME="%s"''' % ( macaddress , netdev) + logging.debug(" adding to net.rules ") + logging.debug(" %s",line) + f.write(line) + f.write("\n") + f.close() + +def find_active(systemconfig,this_is_install): + interfacelist=('eth0', 'eth1', 'wlan0', 'wlan1', 'ath0') + logging.debug(" _Start of find_active") + + if systemconfig["mythdhcp"] == "1": + mv_common.remove_file("/etc/resolv.conf") + cmd = ''' echo search lan > /etc/resolv.conf ''' + mv_common.runcmd(cmd) + cmd = ''' echo nameserver 127.0.0.1 >> /etc/resolv.conf ''' + mv_common.runcmd(cmd) + + for netdev in interfacelist: + if this_is_install: + udev_rules(netdev) + currentnet = "HostActive" + netdev + try: + systemconfig[currentnet] + except: + logging.debug(" %s is not defined",currentnet) + change_iface_state(netdev, "disabled") + continue + if systemconfig[currentnet] == "1" : + #check if device is present + if devcheck(netdev) : + setup_interface(netdev,systemconfig) + else: + logging.debug(" Interface %s not found in config", netdev) + #change_iface_state(netdev, "disabled") + else: + change_iface_state(netdev, "disabled") + +def vnc_netboot_check(): + logging.debug(" Start of VNC/NETBOOT check") + vnc = False + netboot = False + try: + f = open('/proc/cmdline', 'r') + bootoptions = f.readlines() + f.close() + except: + logging.critical(" *Couldn't open /proc/cmdline") + logging.debug(" Assuming it's ok to fiddle with the network") + return True + bootoptions = bootoptions[0] + if re.match("vnc",bootoptions) != None : + logging.debug(" Found VNC option") + vnc = True + if re.match("nfsroot",bootoptions) != None : + logging.debug(" Found netboot option") + netboot = True + + return (vnc or netboot) + +def start_network(): + if not vnc_netboot_check(): + logging.info(" Restarting network") + cmd ="/etc/net/scripts/network.init reload" + mv_common.runcmd(cmd) + cmd ="/etc/net/scripts/network.init restart" + mv_common.runcmd(cmd) + else: + logging.info(" Will not restart network due to netboot/vnc") + + +def stop_network(): + if not vnc_netboot_check(): + logging.info(" Stopping network") + cmd ="/etc/net/scripts/network.init stop" + mv_common.runcmd(cmd) + kill_dhcp("") + interfacelist=('eth0', 'eth1', 'wlan0', 'wlan1', 'ath0') + for i in interfacelist: + flush(i) + else: + logging.info(" Will not stop network due to netboot/vnc") + pass + +def hostname_change_check(systemconfig): + restartfe = False + logging.debug(" _Start of hostname_change_check") + oldhostname = socket.gethostname() + #oldhostname = "crap" + newhostname = systemconfig["hostname"] + mv_root = systemconfig["MVROOT"] + logging.debug(" Old hostname: %s", oldhostname) + logging.debug(" New hostname: %s", newhostname) + if oldhostname != newhostname : + logging.info(" Changing hostname in database to match new hostname") + cmd ="%s/bin/restore_default_settings.sh -cuhostname -o -h%s" %(mv_root, oldhostname) + mv_common.runcmd(cmd) + logging.info(" Changing hostname to %s", newhostname) + cmd = "hostname %s" %newhostname + mv_common.runcmd(cmd) + if systemconfig["SystemType"] != "Frontend_only" : + logging.info(" Restarting backend") + mv_common.stop_service("mythbackend") + mv_common.start_service("mythbackend") + restartfe = True + else: + logging.debug(" old and new hostnames matched, leaving things along") + logging.debug(" __End of hostname_change_check") + return restartfe + + + +def setup_network (systemconfig,this_is_install): + logging.info("____Start of network____") + logging.info(" Setting up the network") + restartfe = hostname_change_check(systemconfig) + setup_hostname(systemconfig) + find_active(systemconfig,this_is_install) + start_network() + logging.info("__End of network\n") + return restartfe + + + +##this is used by the install process to start the network +def install_network_setup(systemconfig): + logging.info("____Start of network_install____") + logging.info(" Setting up the network") + #setup_MYTH_vars + setup_hostname(systemconfig) + stop_network() + find_active(systemconfig) + start_network() + logging.info("__End of network install \n") + + diff --git a/abs/mv-core/MythVantage-config/mv_screensaver.py b/abs/mv-core/MythVantage-config/mv_screensaver.py new file mode 100755 index 0000000..2da970c --- /dev/null +++ b/abs/mv-core/MythVantage-config/mv_screensaver.py @@ -0,0 +1,199 @@ +# -*- coding: utf-8 -*- +import logging, mv_common +import re +import os + + +def mplayer_saver_check (cmd,templatefile): + logging.debug(" Checking for heartbeat command in mplayer.conf") + mplayerconf = "/etc/mplayer/mplayer.conf" + if not os.path.exists(mplayerconf): + logging.debug(" copying in mplayer template file") + mv_common.cp_and_log(templatefile, mplayerconf) + + try: + f = open(mplayerconf, 'r') + mplayerconf_contents = f.readlines() + f.close() + except: + logging.debug(" Couldn't open %s for reading",mplayerconf) + mplayerconf_contents = "#\n" + + try: + f = open(mplayerconf, 'w') + except: + logging.debug(" Couldn't open %s for writing",mplayerconf) + return + + for line in mplayerconf_contents: + if re.match("^.*stop-xscreensaver",line): + continue + elif re.match("^.*heartbeat-cmd",line): + continue + else: + f.write(line) + + f.write("stop-xscreensaver = 0\n") + line='''heartbeat-cmd="%s"\n''' %cmd + f.write(line) + f.close() + + +def killxscreensaver(): + logging.info(" Stopping xscreensaver") + cmd="xscreensaver-command --exit " + mv_common.runcmd(cmd) + cmd="killall xscreensaver " + mv_common.runcmd(cmd) + +def killgscreensaver(): + logging.info(" Stopping gnome-screensaver") + cmd="gnome-screensaver-command --exit " + mv_common.runcmd(cmd) + cmd="killall gnome-screensaver " + mv_common.runcmd(cmd) + + +def setup_x_screensaver(idle,theme,screenconfigfile,templatefile): + logging.info(" Configuring X screensaver") + killgscreensaver() + logging.debug(" Why can't xscreensaver have a nice configuration !") + + if not os.path.exists(screenconfigfile): + logging.debug(" copying in new template file") + mv_common.cp_and_log(templatefile,screenconfigfile) + + try: + f = open(screenconfigfile, 'r') + screenconfigcontents=f.readlines() + f.close() + except: + logging.info("Couldn't open %s for reading",screenconfigfile) + return + try: + f = open(screenconfigfile, 'w') + except: + logging.info("Couldn't open %s for writing",screenconfigfile) + return + + startline=0 + foundline=0 + + for k, line in enumerate(screenconfigcontents): + if re.match("programs:",line): + startline = k + if re.search(theme,line): + foundline = k + themenumber=foundline-startline-2 + + for line in screenconfigcontents: + if re.match("selected.*$",line): + continue + + if re.match("timeout",line): + logging.info(" Setting idletime to %s",idle) + outline = "timeout: 0:%s:00 \n" %idle + f.write(outline) + elif re.match("mode",line): + if theme == "Random": + logging.info(" Setting theme to %s", "Random") + outline = "mode: random \n" + f.write(outline) + outline = "selected: -1 \n" + f.write(outline) + continue + + elif theme == "Blank": + logging.info(" Setting theme to %s", "blank") + outline = "mode: blank \n" + f.write(outline) + outline = "selected: -1 \n" + f.write(outline) + continue + + else: + logging.info(" Setting theme to %s", theme) + outline = "mode: one\n" + f.write(outline) + logging.debug(" Theme number is %s",themenumber) + outline = "selected: %s\n" %themenumber + f.write(outline) + continue + + else: + outline = line + f.write(outline) + f.close() + logging.debug("__End of xscreensaver") + +def setup_gnome_screensaver(theme,idletime): + logging.info(" Configuring gnome screensaver") + + logging.info(" Disabling lock screen") + cmd='''gconftool-2 --direct --config-source xml:readwrite:/etc/gconf/gconf.xml.mandatory --type bool --set /apps/gnome-screensaver/lock_enabled false''' + mv_common.runcmd(cmd) + + logging.info(" Setting idletime to %s",idletime) + cmd='''gconftool-2 --direct --config-source xml:readwrite:/etc/gconf/gconf.xml.mandatory --type int -s "/apps/gnome-screensaver/idle_delay" %s''' %idletime + mv_common.runcmd(cmd) + + logging.info(" Setting mode to single") + cmd='''gconftool-2 --direct --config-source xml:readwrite:/etc/gconf/gconf.xml.mandatory --type string -s "/apps/gnome-screensaver/mode" single''' + mv_common.runcmd(cmd) + + if theme == "Random": + logging.info(" setting theme to random") + cmd='''gconftool-2 --direct --config-source xml:readwrite:/etc/gconf/gconf.xml.mandatory --type string -s "/apps/gnome-screensaver/mode" random''' + mv_common.runcmd(cmd) + + elif theme == "Blank": + logging.info(" setting theme to blank") + cmd='''gconftool-2 --direct --config-source xml:readwrite:/etc/gconf/gconf.xml.mandatory --type string -s "/apps/gnome-screensaver/themes" blank''' + mv_common.runcmd(cmd) + + else: + logging.info(" setting theme to %s",theme) + cmd='''gconftool-2 --direct --config-source xml:readwrite:/etc/gconf/gconf.xml.mandatory --set --type list --list-type=string /apps/gnome-screensaver/themes [screensavers-%s]''' %theme + mv_common.runcmd(cmd) + + killxscreensaver() + logging.info("__End gnome screensaver") + + + + +def setup_screensaver (systemconfig,data_config): + logging.info("____Start of screensaver configuration____") + screensavertype = systemconfig["Screensavertype"] + theme = systemconfig["Screensavertheme"] + idletime = systemconfig["Screensaveridle"] + configfile = data_config.MYTHHOME+"/.xscreensaver" + templatefile = systemconfig["TEMPLATES"]+"/xscreensaver.template" + mtemplate = systemconfig["TEMPLATES"]+"/mplayer.conf.template" + + if screensavertype == "xscreensaver": + mv_common.pacinstall("xscreensaver") + mv_common.pacremove("gnome-screensaver") + setup_x_screensaver(idletime, theme, configfile, templatefile) + mplayer_saver_check("/usr/bin/xscreensaver-command -deactivate &",mtemplate) + + elif screensavertype == "gscreensaver": + mv_common.pacinstall("xscreensaver") + mv_common.pacinstall("gnome-screensaver") + setup_gnome_screensaver(theme,idletime) + mplayer_saver_check("/usr/bin/gnome-screensaver-command -p &",mtemplate) + + elif screensavertype == "none": + mv_common.pacremove("xscreensaver") + mv_common.pacremove("gnome-screensaver") + killgscreensaver() + killxscreensaver() + + elif screensavertype == "tinker" : + logging.debug(" screensaver tinker mode detected") + else: + logging.debug(" Unknown screensaver") + logging.info("__End of screensaver\n") + + + diff --git a/abs/mv-core/MythVantage-config/mv_smolt.py b/abs/mv-core/MythVantage-config/mv_smolt.py new file mode 100755 index 0000000..5fd3722 --- /dev/null +++ b/abs/mv-core/MythVantage-config/mv_smolt.py @@ -0,0 +1,59 @@ +# -*- coding: utf-8 -*- +import logging +import mv_common + +def read_release(stype): + if stype == "LinHES": + rfile = "/etc/LinHES-release" + else: + rfile = "/etc/MythVantage-release" + + try: + f= open(rfile,'r') + releasename = f.readlines()[0] + f.close() + except: + logging.debug(" Couldn't open %s",rfile) + releasename = "unknown" + + return releasename + + +def setup_smolt_type(SystemType,Remotetype,RunFrontend,mythhome,stype): + logging.debug("____Start of setup_smolt_type____") + releasename = read_release(stype) + + if SystemType == "Standalone": + smoltsystem = 6 + MVRELEASE="%s (Standalone)" %releasename + elif SystemType == "Master_backend": + if RunFrontend == "1": + smoltsystem = 2 + MVRELEASE="%s (MBE with Frontend)" %releasename + else: + smoltsystem=1 + MVRELEASE="%s (MBE)" %releasename + elif SystemType == "Slave_backend": + if RunFrontend == "1" : + smoltsystem = 4 + MVRELEASE="%s (SLAVE with Frontend)" %releasename + else: + smoltsystem = 5 + MVRELEASE="%s (SLAVE)" %releasename + elif SystemType == "Frontend_only": + smoltsystem = 3 + MVRELEASE="%s ( Frontend only)" %releasename + + logging.debug(" smolt type is %s : %s", MVRELEASE,smoltsystem) + smoltfile = mythhome+"/.mythtv/smolt.info" + cmd = ''' echo "%s" > /etc/os_myth_release ''' %MVRELEASE + mv_common.runcmd(cmd) + + cmd = '''echo "systemtype=%s" > %s''' %(smoltsystem,smoltfile) + mv_common.runcmd(cmd) + + cmd = '''echo "remote=%s" >> %s ''' %(Remotetype,smoltfile) + mv_common.runcmd(cmd) + + logging.debug("__End of setup_smolt_type") + diff --git a/abs/mv-core/MythVantage-config/mv_software.py b/abs/mv-core/MythVantage-config/mv_software.py new file mode 100755 index 0000000..e5b96b2 --- /dev/null +++ b/abs/mv-core/MythVantage-config/mv_software.py @@ -0,0 +1,41 @@ +# -*- coding: utf-8 -*- +import logging, mv_common +import os, re + +def setup_software(systemconfig, data_config): + logging.info("____Start of Software install____") + default_disabled = ("mythphone", "mytharchive", "mythbrowser", "mythnews", + "mythgame", "mythflix", "mythweather", + "mythappletrailers", "mythstream", "mythvodka") + + default_installed=("mythcontrols", "mythgallery", "mythmovies", + "mythmusic", "mythsmolt", "mythvideo") + other_pkg=("miro", "xe", "romdb", "xine", "dvdcss", "webmin" , "fuppes") + + for pkg in default_disabled: + try: + if systemconfig[pkg] == "1": + mv_common.pacinstall(pkg) + else: + mv_common.pacremove(pkg) + except: + logging.debug(" ERROR-- %s is not defined", pkg) + + for pkg in default_installed: + try: + if systemconfig[pkg] == "0": + mv_common.pacremove(pkg) + else: + mv_common.pacinstall(pkg) + except: + logging.debug(" ERROR-- %s is not defined", pkg) + + for pkg in other_pkg: + try: + if systemconfig[pkg] == "1": + mv_common.pacinstall(pkg) + elif systemconfig[pkg] == "0": + mv_common.pacremove(pkg) + except: + logging.debug(" ERROR-- %s is not defined", pkg) + logging.info("__End Software\n ") \ No newline at end of file diff --git a/abs/mv-core/MythVantage-config/mv_webuser.py b/abs/mv-core/MythVantage-config/mv_webuser.py new file mode 100755 index 0000000..a8517a8 --- /dev/null +++ b/abs/mv-core/MythVantage-config/mv_webuser.py @@ -0,0 +1,21 @@ +# -*- coding: utf-8 -*- +import logging, mv_common +#import os + +def setup_web_auth(UseMythWEB_auth): + logging.info("____Start of setup_web_auth____") + if UseMythWEB_auth == str(1): + #enable auth + logging.info(" Enabling authorization for mythweb") + cmd='''sed -i "s/^.*include.*auth-inc.conf.*$/include \\"\/etc\/lighttpd\/auth-inc.conf\\"/g" /etc/lighttpd/lighttpd.conf''' + mv_common.runcmd(cmd) + else: + #disable auth + logging.info(" Disabling authorization for mythweb") + cmd='''sed -i "s/^.*include.*auth-inc.conf.*$/#include \\"\/etc\/lighttpd\/auth-inc.conf\\"/g" /etc/lighttpd/lighttpd.conf''' + mv_common.runcmd(cmd) + logging.debug("Restarting lighttpd") + cmd="sudo sv restart lighttpd" + mv_common.runcmd(cmd) + logging.info("__End of webauth\n") + diff --git a/abs/mv-core/MythVantage-config/myth_user_call.py b/abs/mv-core/MythVantage-config/myth_user_call.py new file mode 100755 index 0000000..63915a4 --- /dev/null +++ b/abs/mv-core/MythVantage-config/myth_user_call.py @@ -0,0 +1,159 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +#Wrapper script to manage USERNAME accounts + web security +# myth_USERNAME_all -c add -u USERNAME +# myth_USERNAME_all -c delete -u USERNAME +# myth_USERNAME_all -c pass -u USERNAME -p pass +# myth_USERNAME_all -c web -u USERNAME -p pass + +import pexpect, sys, time +import os, re, getopt +import mv_common + + + + +def chroot_check(): + if not INIT_CHECK : + return False + cmd = '''ps -p 1 -o comm=''' + init = mv_common.runcmd_output(cmd).strip() + if init == "runit": + return False + else: + return True + + +def store_commands(full_call): + file_name = "/root/myth_user_call.out" + try: + f = open(file_name,'a') + except: + print "%s could not be opened" % file_name + sys.exit(1) + f.write(full_call) + f.write("\n") + f.close() + try: + os.chmod(600,file_name) + except: + pass + + +def add_user(username,full_call): + if chroot_check() : + print "calling myth_call_user in chroot to add user" + store_commands(full_call) + else: + print "Adding user %s" %username + cmd = '''useradd -m -s /bin/bash %s -G audio,video,optical,storage,users''' %username + mv_common.runcmd(cmd) + cmd = ''' usermod -a -G mythtv %s ''' %username + + +def del_user(username,full_call): + if chroot_check() : + print "calling myth_call_user in chroot to del user" + store_commands(full_call) + else: + print "Removing user %s" %username + cmd = '''userdel %s ''' %username + mv_common.runcmd(cmd) + + +def pass_change(username,password,full_call) : + if chroot_check() : + print "calling myth_call_user in chroot to change password" + store_commands(full_call) + else: + print "changing password for %s" %username + passwd = pexpect.spawn("/usr/bin/passwd %s" % username) + + for repeat in (1, 2): + passwd.expect("password: ") + passwd.sendline(password) + time.sleep(0.1) + +def web_security(username,password) : + file_name = "/etc/lighttpd/lighttpd.user" + file_contents = '' + if os.path.exists(file_name): + try: + f = open(file_name,'r') + file_contents = f.readlines() + except: + print " couldn't read %s" % file_name + try: + f = open(file_name,'w') + except: + print "%s could not be opened for writing" % file_name + return + + for line in file_contents: + if not re.search(username, line): + f.write(line) + line = "%s:%s" %(username, password) + f.write(line) + f.write("\n") + f.close() + + +def usage (): + print "Valid options are:" + print " -c (add|delete|pass|web)" + print " -u USERNAME" + print " -p password" + sys.exit(0) + +def main(argv): + global INIT_CHECK + full_call = "" + INIT_CHECK = True + try: + opts, args = getopt.getopt(argv, 'c:u:p:ih' ) + except getopt.GetoptError, why: + print why + usage() + print "exception happened" + sys.exit(2) + + for opt, arg in opts: + if opt in ("-h", "--help"): + usage() + sys.exit(0) + elif opt in ("-c") : + module = arg + full_call += ''' -c %s ''' %re.escape(arg) + elif opt in ("-u") : + username = arg + full_call += ''' -u %s ''' %re.escape(arg) + elif opt in ("-p") : + password = arg + full_call += ''' -p %s ''' %re.escape(arg) + elif opt in ("-i") : + INIT_CHECK = False + full_call += ''' -i ''' + try: + username + except: + usage() + + if module == "add": + add_user(username,full_call) + elif module == "delete": + del_user(username,full_call) + elif module == "pass": + try: + password + except: + print "needs a password" + usage() + pass_change(username,password,full_call) + elif module == "web": + web_security(username,password) + else: + usage() + +if __name__ == "__main__": + main(sys.argv[1:]) + diff --git a/abs/mv-core/MythVantage-config/systemconfig.py b/abs/mv-core/MythVantage-config/systemconfig.py new file mode 100755 index 0000000..c559e09 --- /dev/null +++ b/abs/mv-core/MythVantage-config/systemconfig.py @@ -0,0 +1,243 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +import sys, os, commands, glob, time +import getopt, re, MySQLdb +import logging +import mv_common , mv_network +import inspect +#____________________________________________setup the logging______________________________________________________ +LOG_FILENAME = '/tmp/systemconfig.log' +DEBUGLOG = '/tmp/systemconfig_debug.log' +logging.basicConfig(level=logging.DEBUG, + format='%(asctime)s - %(name)s - %(levelname)s - %(message)s', + datefmt='%m-%d %H:%M', + filename=DEBUGLOG, + filemode='w') +# define a Handler which writes INFO messages or higher to the sys.stderr +console = logging.StreamHandler() +console.setLevel(logging.INFO) +# set a format which is simpler for console use +#formatter = logging.Formatter('%(name)-12s: %(levelname)-8s %(message)s') +formatter = logging.Formatter("%(message)s") +# tell the handler to use this format +console.setFormatter(formatter) +# add the handler to the root logger +logging.getLogger('').addHandler(console) + +#infoformatter = logging.Formatter("%(asctime)s - %(name)s - %(levelname)s - %(message)s") +infoformatter = logging.Formatter("%(message)s") +infofile = logging.FileHandler(LOG_FILENAME, 'w') +infofile.setFormatter(infoformatter) +infofile.setLevel(logging.INFO) +logging.getLogger('').addHandler(infofile) + + +def usage(): + logging.info("tell people how to use this") + +def setup_x(systemconfig): + cmd = "%s/bin/xconfig.sh" %systemconfig["MVROOT"] + mv_common.runcmd(cmd) + +def main(argv): + try: + MVROOT = os.environ["MV_ROOT"] + except: + logging.debug("MVROOT was not defined, using the default value") + MVROOT = "/usr/MythVantage" + + global cmdmodule + global systemconfig + systemconfig["MVROOT"]=MVROOT + restartlcd = False + cmdmodule={"misc":False , "sleep":False , "hostype":False , "hostypec":False , "advanced":False , "audio":False , "network":False , "advancedX":False , "webuser":False , "restartfe":False , "reloadfe":False , "ddns":False , "screensaver":False , "ir":False , "this_is_install":False , "user":False, "software":False, "plugins":False, "smolt":False, "all":False, "dhcp_request":False } + try: + opts, args = getopt.getopt(argv, 'c:hm:d:', ["help","modules" ] ) + except getopt.GetoptError, why: + print why + usage() + print "exception happened" + sys.exit(2) + for opt, arg in opts: + if opt in ("-h", "--help"): + usage() + sys.exit(0) + elif opt in ("-m"): + for i in arg.split(","): + cmdmodule[i]=True + elif opt in ("-d"): + dhcp_dev = arg + + + if cmdmodule["this_is_install"] or cmdmodule["hostypec"]: + systemconfig["hostypec"] = True + cmdmodule["smolt"] = True + + systemconfig["mythip"] = mv_network.setup_MYTH_IP(systemconfig) + systemconfig["mythdhcp"] = mv_network.setup_MYTH_DHCP(systemconfig) + systemconfig["mythgw"] = mv_network.setup_MYTH_DHCP(systemconfig) + systemconfig["mythdns"] = mv_network.setup_MYTH_DHCP(systemconfig) + + if cmdmodule["all"]: + logging.info("*** WILL RUN ALL MODULES ***") + cmdmodule["hostype"] = True + cmdmodule["ir"]= True + cmdmodule["network"] = True + cmdmodule["audio"] = True + cmdmodule["misc"] = True + cmdmodule["sleep"] = True + cmdmodule["webuser"] = True + cmdmodule["ddns"] = True + cmdmodule["screensaver"] = True + cmdmodule["advanced"] = True + cmdmodule["software"] = True + cmdmodule["advancedX"] = True + cmdmodule["smolt"] = True + cmdmodule["user"] = True + + + if cmdmodule["hostype"]: + import mv_hostype + cmdmodule["advancedX"] = True + setup_x(systemconfig) + cmdmodule["ir"] = True + mv_hostype.hostypeprint(systemconfig) + cmdmodule["smolt"] = True + + if cmdmodule["network"]: + restartfe = mv_network.setup_network(systemconfig, cmdmodule["this_is_install"]) + if restartfe == True : + logging.debug(" Setting the frontend to restart due to network change") + cmdmodule["restartfe"] = True + + + + if cmdmodule["ir"] == True: + import mv_ir + restart = mv_ir.setup_ir(systemconfig,data_config) + restartfe = restart[0] + restartlcd = restart[1] + if restartfe == True : + logging.debug(" Setting the frontend to restart due to lirc change") + cmdmodule["restartfe"] = True + cmdmodule["smolt"] = True + + + if cmdmodule["audio"] == True: + logging.debug("______Start of Audio Configuration______") + if not systemconfig["Audiotype"] == "tinker": + cmd="%s/bin/soundconfig.sh -t real -i %s -d %s" %(MVROOT,systemconfig["Audiotype"],systemconfig["SoundDevice"]) + mv_common.runcmd(cmd) + else: + logging.debug(" Tinker mode(audio), not changing configuration") + logging.debug("__End of audio") + + if cmdmodule["misc"]: + import mv_misc + mv_misc.setup_zip(MVROOT,systemconfig["zipcode"]) + mv_misc.setup_tz(systemconfig["timezone"],systemconfig["TEMPLATES"]) + mv_misc.setup_nfs(systemconfig) + + if cmdmodule["sleep"]: + import mv_misc + mv_misc.setup_sleep(systemconfig) + + if cmdmodule["webuser"]: + import mv_webuser + mv_webuser.setup_web_auth(systemconfig["UseMythWEB_auth"]) + + if cmdmodule["ddns"]: + print " LOOK FOR DDNS" + + if cmdmodule["screensaver"]: + import mv_screensaver + mv_screensaver.setup_screensaver(systemconfig, data_config) + + if cmdmodule["advanced"]: + import mv_advanced + mv_advanced.setup_advanced(systemconfig, data_config) + + if cmdmodule["software"] or cmdmodule["plugins"]: + import mv_software + mv_software.setup_software(systemconfig, data_config) + + if cmdmodule["advancedX"]: + setup_x(systemconfig) + + if cmdmodule["restartfe"]: + mv_common.restartfe(restartlcd) + + if cmdmodule["reloadfe"]: + mv_common.reloadfe(systemconfig["dbhost"],restartlcd) + + if cmdmodule["smolt"]: + import mv_smolt + mv_smolt.setup_smolt_type(systemconfig["SystemType"], + systemconfig["Remotetype"], + systemconfig["RunFrontend"], + data_config.MYTHHOME, + data_config.SYSTEMTYPE) + + if cmdmodule["user"]: + logging.info("____Start of ssh user____") + if systemconfig["rootSSH"] == "1" : + logging.info(" Allowing ssh access for root") + cmd = '''sed -i "s/^.*PermitRootLogin.*$/PermitRootLogin yes/" /etc/ssh/sshd_config''' + mv_common.runcmd(cmd) + else: + logging.info(" Removing ssh access for root") + cmd = '''sed -i "s/^.*PermitRootLogin.*$/PermitRootLogin no/" /etc/ssh/sshd_config''' + mv_common.runcmd(cmd) + logging.info("__End of ssh user\n") + + if cmdmodule["dhcp_request"]: + cmd = '''dhcpcd -t4 -h' ' -Td %s > /tmp/mvnetwork.dhcpinfo ''' %dhcp_dev + mv_common.runcmd(cmd) + + +if __name__ == "__main__": + + config_file = "mv_config" + data_config = __import__(config_file, globals(), locals(), []) + #Read in systemconfig + global systemconfig + systemconfig = {"hostypec":False} + file_name = "/etc/systemconfig" + try: + config_file = open(file_name) + except: + logging.critical("%s could not be opened", file_name) + sys.exit(1) + + for line in config_file: + line = line.strip() + if line and line[0] is not "#" and line[-1] is not "=": + var, val = line.rsplit("=", 1) + val = val.strip('"') + systemconfig[var.strip()] = val.strip() + try: + systemconfig["TEMPLATES"] = os.environ["TEMPLATES"] + except: + logging.critical(" *TEMPLATES is not defined") + logging.critical(" *using default value") + systemconfig["TEMPLATES"] = "/usr/MythVantage/templates" + + logging.debug("______START OF DEBUG______") + main(sys.argv[1:]) + logging.debug("______cmd line options______") + for i in cmdmodule.items(): + logging.debug (i) + logging.debug("______systemconfig______") + for i in systemconfig.items(): + logging.debug(i) + #pass + + + + + + + + + + diff --git a/abs/mv-core/MythVantage-config/systemconfig.sh b/abs/mv-core/MythVantage-config/systemconfig.sh index a85d88e..218f705 100755 --- a/abs/mv-core/MythVantage-config/systemconfig.sh +++ b/abs/mv-core/MythVantage-config/systemconfig.sh @@ -4,1275 +4,16 @@ #Any changes made to config files will be removed when systemconfig.sh is run # #JM -################################################################### -#set -x -. /etc/profile -MVRELEASE=`cat /etc/mythvantage-release |cut -d" " -f -2` - echo $@ >/tmp/systemconfig.call echo "----------------------start of systemconfig $@ ----------------------" -BASE="" - -#TEMPLATES="/usr/share/templates" . /etc/profile . $MV_ROOT/bin/networkconfig.sh -PACMAN="pacman --noconfirm" -postfix=`cat ${BASE}/usr/share/mythtv/.releasetype` -PKGBLACKLIST=$BASE/etc/blacklist.package - -if [ x$1 = x"Mysql_only" ] -then - rm -f /tmp/mysql.txt - sed -e "s/^DBHostName=.*$/DBHostName=$2/" $TEMPLATES/mysql.txt > /tmp/mysql.txt - exit 0 -fi - - -if [ -f /etc/systemconfig ] -then - . /etc/systemconfig - setup_MYTH_vars - TEMPNET="Hostip"$default_interface - echo $TEMPNET - eval MYTHIP=\$${TEMPNET} -else - echo "could not find /etc/systemconfig" - exit 1 -fi - - - -#----------------------------------------------------- - - -function setupmysql { -#setup mysql.txt to find the database servers -if [ $SystemType = "Master_backend" ] -then - if [ $MYTHDHCP = 0 ] - then - #this grabs eth0, as that is all thats supported. - # dbhost=`ifconfig | grep 'inet addr:'| grep -v '127.0.0.1' | cut -d: -f2 | awk '{ print $1}'|head -n1` - dbhost=`ifconfig | grep -C1 $default_interface| grep -v $default_interface | cut -d: -f2 | awk '{ print $1}'` - sed -e "s/^dbhost=.*$/dbhost=\"$dbhost\"/" /etc/systemconfig >/tmp/systemconfig.old - cp /tmp/systemconfig.old ${BASE}/etc/systemconfig - ##logic to change master_serverip and backend_serverip in db - ${BASE}${MV_ROOT}/bin/restore_default_settings.sh -c BECONFIG -s master -a $dbhost - else - - dbhost=$MYTHIP - sed -e "s/^dbhost=.*$/dbhost=\"$dbhost\"/" /etc/systemconfig >/tmp/systemconfig.old - cp /tmp/systemconfig.old ${BASE}/etc/systemconfig - #logic to change dbhost in db - ${BASE}${MV_ROOT}/bin/restore_default_settings.sh -c BECONFIG -s master -a $dbhost - fi -fi - -if [ $SystemType = "Slave_backend" ] -then - if [ $MYTHDHCP = 0 ] - then - #this grabs eth0, as that is all thats supported. - #slavehost=`ifconfig | grep 'inet addr:'| grep -v '127.0.0.1' | cut -d: -f2 | awk '{ print $1}'|head -n1` - slavehost=`ifconfig | grep -C1 $default_interface| grep -v $default_interface | cut -d: -f2 | awk '{ print $1}'` - ##logic to change backend_serverip in db - ${BASE}${MV_ROOT}/bin/restore_default_settings.sh -c BECONFIG -s slave -a $slavehost - else - slavehost=$MYTHIP - - #logic to change backend_serverif in db - ${BASE}${MV_ROOT}/bin/restore_default_settings.sh -c BECONFIG -s slave -a $slavehost - fi -fi - -MYSQLTXT=${BASE}/usr/share/mythtv/mysql.txt -if [ $SystemType = "Standalone" ] -then - sed -e "s/^DBHostName=.*$/DBHostName="localhost"/" $TEMPLATES/mysql.txt > $MYSQLTXT -else - sed -e "s/^DBHostName=.*$/DBHostName=$dbhost/" $TEMPLATES/mysql.txt > $MYSQLTXT -fi -rm ${BASE}/data/home/mythtv/.mythtv/mysql.txt -rm ${BASE}${MV_ROOT}/bin/mythtv/.mythtv/mysql.txt -if [ -f ${BASE}/data/home/mythtv/templates/mysql.txt ] -then - cp ${BASE}/data/home/mythtv/templates/mysql.txt $MYSQLTXT -fi - -chmod 755 $MYSQLTXT -chown mythtv $MYSQLTXT - -} - -function setupmysqlnetwork(){ -MFILE=etc/my.cnf -grep "#skip-networking" $BASE/$MFILE -status=$? - - - -if [ $SystemType = "Standalone" ] -then - sed -ie "s/^#skip-networking/skip-networking/g" $BASE/$MFILE - if [ $status = 0 ] - then - sudo sv restart mysql - echo "restarting mysql with no network" - fi - -fi - -if [ $SystemType = "Master_backend" ] -then - sed -ie "s/^skip-networking/#skip-networking/g" $BASE/$MFILE - if [ $status = 1 ] - then - sudo sv restart mysql - echo "restarting mysql with network" - fi - -fi - - -} - - -function settimezone { -#set the timezone -if [ x"$timezone" = x ] -then - timezone="unknown" -fi -rm ${BASE}/etc/localtime -echo $timezone -ln -s "/usr/share/zoneinfo/$timezone" ${BASE}/etc/localtime -sed -e "s~^TIMEZONE=.*$~TIMEZONE=\"${timezone}\"~" ${BASE}/etc/rc.conf > $TEMPLATES/rc.conf - -# echo CLOCK="UTC" > ${BASE}/etc/conf.dclock -# echo CLOCK_SYSTOCH="yes" >> ${BASE}/etc/conf.d/clock -# echo TIMEZONE="$timezone" >> ${BASE}/etc/conf.d/clock -cp $TEMPLATES/rc.conf /etc/rc.conf - -} - - -function setupreceiver { -case $ReceiverType in - tinker) echo "do nothing" - ;; - Serial) echo "setup serial lirc" - sed -i -e '/.*#lirc/d' ${BASE}/etc/modules.mythvantage - echo "lirc_serial #lirc" >> ${BASE}/etc/modules.mythvantage - /usr/bin/load-modules-mythvantage.sh - ;; - Usb-imon) echo "setup receiver-usb-imon" - sed -i -e '/.*#lirc/d' ${BASE}/etc/modules.mythvantage - echo "lirc_imon #lirc" >> ${BASE}/etc/modules.mythvantage - /usr/bin/load-modules-mythvantage.sh - ;; - Hauppauge) echo "setup hauppauge reciever (lirc_i2c)" - sed -i -e '/.*#lirc/d' ${BASE}/etc/modules.mythvantage - echo "lirc_i2c #lirc" >> ${BASE}/etc/modules.mythvantage - cp $TEMPLATES/modules/lirc_i2c.conf ${BASE}/etc/modprobe.d/lirc_i2c.conf - rmmod lirc_i2c 2>/dev/null - load-modules-mythvantage.sh - ;; - - *) sed -i -e '/.*#lirc/d' ${BASE}/etc/modules.mythvantage - ;; -esac - - -} - -function setupremote { -case $Remotetype in - no_remote) echo "No remote selected" - daemon_remove="lircd $daemon_remove" - ;; - tinker) echo "Remote in tinker mode" - ;; - *) echo "Setup remote" - mv ${BASE}/etc/lircd.conf ${BASE}/etc/lircd.conf.`date +%Y-%m-%d-%H-%M` - cd $TEMPLATES/remotes/$Remotetype - for i in lircd* - do - cat $i >> ${BASE}/etc/lircd.conf - done - cp lircrc ${BASE}/etc/lircrc - if [ -f $TEMPLATES/LCD/$LCDtype/lircrc ] - then - cat $TEMPLATES/LCD/$LCDtype/lircrc >> /etc/lircrc - cat $TEMPLATES/LCD/$LCDtype/lircd.conf >> /etc/lircd.conf - fi - if [ -f $TEMPLATES/transmit/$Blastertype/lircd.conf ] - then - cat $TEMPLATES/transmit/$Blastertype/lircd.conf >> ${BASE}/etc/lircd.conf - fi - chmod 755 /etc/lircrc - daemon_add="lircd $daemon_add" - sv hup lircd - ;; -esac - -} - -function setupblaster { -#cd $TEMPLATES/transmit/$Blastertype -#for i in lircd* -#do -# cat lircd.conf >> ${BASE}/etc/lircd.conf -#done -# REMOTE_NAME${BASE}/usr/bin/change_chan.sh=`grep name lircd.conf* |awk -F" " ' { print $2 } '` -sed -e "s/^REMOTE_NAME=.*$/REMOTE_NAME=${Blastertype} /" $TEMPLATES/change_chan.sh > ${BASE}/usr/bin/change_chan.sh -chmod 755 ${BASE}/usr/bin/change_chan.sh -#channel change script change -setupremote - -} - -function setupevrouter { -if [ x$UseEvrouter = x1 ] -then - case x$EvrouterConfig in - xtinker ) - echo "do nothing for evrouter" - ;; - x ) echo "empty evrouter" - ;; - * ) echo "setup evrouter for $EvrouterConfig " - cp $TEMPLATES/evrouter/$EvrouterConfig /etc/evrouter.cfg - daemon_add="evrouter Xvfb $daemon_remove" - - ;; - esac -else - # disable evrouter - daemon_remove="evrouter Xvfb $daemon_remove" -fi - - - - -} - -function setupLCD { -case x$LCDtype in - xtinker) echo "do nothing" - ;; - xno_lcd) echo "disabling lcd" - sv down lcdd - /usr/bin/load-modules-mythvantage.sh UNLOAD LCD - sed -i -e '/.*#LCD/d' ${BASE}/etc/modules.mythvantage - daemon_remove="lcdd $daemon_remove" - ;; - x) echo "empty lcd" ;; - - *) echo "setup lcd" - if [ -f $TEMPLATES/LCD/$LCDtype/modules ] - then - sed -i -e '/.*#LCD/d' ${BASE}/etc/modules.mythvantage - cat $TEMPLATES/LCD/$LCDtype/modules >> ${BASE}/etc/modules.mythvantage - #should also modprobe - fi - - - if [ -f $TEMPLATES/LCD/$LCDtype/LCDd.conf ] - then - cp -f $TEMPLATES/LCD/$LCDtype/LCDd.conf /etc - # install="lcdproc $install" - daemon_add="lcdd $daemon_add" - /usr/bin/load-modules-mythvantage.sh - RESTART_FE="true" - RESTART_LCD="true" - fi - #check if lirc capable,if so then call setupremote - if [ -f $TEMPLATES/LCD/$LCDtype/lircrc ] - then - setupremote - fi - ;; -esac - -} - - - -function scrubnfs { -cp /etc/fstab $TEMPLATES/fstab.conf.template -grep -v nfs $TEMPLATES/fstab.conf.template > ${BASE}/etc/fstab - } - - function setupfstab () { - # setupfstab $NFSserver $NFSshare $NFSmount - echo "$1 $2 nfs" >> ${BASE}/etc/fstab - if [ ! -e "$2" ] - then - mkdir -p "$2" - chown mythtv:mythtv "$2" - fi - if [ x$DCONFIG = x ] - then - mount $2 & - fi - -} - -function setupncidclient -{ - sed -e "s/^set Host.*$/set Host $dbhost /" $TEMPLATES/ncid.conf.template >${BASE}/etc/ncid/ncid.conf -} - -function setupnciddaemon { -cp -f /etc/ncid/ncidd.conf $TEMPLATES/ncidd.conf.template -sed -e "s/.*set ttyport.*$/set ttyport = \/dev\/$nciddSerialPort /" $TEMPLATES/ncidd.conf.template >${BASE}/etc/ncid/ncidd.conf - -} - -function setupntp () { -cat > ${BASE}/etc/ntp.conf << EOF -# default restrictions -restrict default noquery notrust nomodify -# NTP drift file - used to keep track of your system clocks -# time deviation -driftfile /etc/ntp.drift - -# NTP log file -logfile /var/log/ntp.log -# override the default restrictions here, servers that can query -restrict 192.168.0.0 mask 255.255.0.0 nomodify -restrict 10.0.0.0 mask 255.0.00 nomodify - -#servers to sync with -EOF -#this is used for backend or standlone types -if [ $1 = "1" ] -then - echo "server ntp1.cs.wisc.edu" >> ${BASE}/etc/ntp.conf - echo "server ntp3.sf-bay.org" >> ${BASE}/etc/ntp.conf - echo "restrict ntp1.cs.wisc.edu noquery nomodify" >> ${BASE}/etc/ntp.conf - echo "restrict ntp3.sf-bay.org noquery nomodify" >> ${BASE}/etc/ntp.conf - -else - echo "server $dbhost" >> ${BASE}/etc/ntp.conf - echo "restrict $dbhost noquery nomodify" >> ${BASE}/etc/ntp.conf -fi - - -} - -function setupplugins (){ - -pkglistinstall="" -pkglistremove="" -#default enabled -for i in mythcontrols mythgallery mythmovietime mythmusic mythsmolt mythvideo -do - eval pkgvalue=\$${i} - - if [ x$pkgvalue = x ] - then - pkglistinstall="$pkglistinstall $i$postfix" - else - if [ x$pkgvalue = x1 ] - then - pkglistinstall="$pkglistinstall $i$postfix" - else - pkglistremove="$pkglistremove $i$postfix" - fi - fi - - - -done - - - -#default disabled -for i in mythphone mytharchive mythbrowser mythnews mythgame mythflix mythweather -do - eval pkgvalue=\$${i} - - if [ x$pkgvalue = x ] - then - pkglistremove="$pkglistremove $i$postfix" - else - if [ x$pkgvalue = x1 ] - then - pkglistinstall="$pkglistinstall $i$postfix" - else - pkglistremove="$pkglistremove $i$postfix" - fi - fi -done -install="$pkglistinstall $install" -remove="$pkglistremove $remove" - -} -function LCDcheck () { -case x$LCDtype in - xtinker) echo "do nothing lcd " - ;; - xno_lcd) echo "no lcd " - ;; - xxosd) install="xosd lcdproc $install" - ;; - x) echo "lcd empty " - ;; - *) - install="lcdproc $install" - ;; -esac -} - - -function packages () { -#see which plugins need to be installed -echo " Starting to install Packages" -setupplugins -LCDcheck -if [ ! -f $PKGBLACKLIST ] -then - touch $PKGBLACKLIST -fi -for i in $remove -do - echo "-----------$i --------------" - grep -q $i $PKGBLACKLIST - if [ $? = 1 ] - then - pacman -Q $i 2>/dev/null - #VAR=`pacman -Q $i 2>&1 ` - if [ $? = 0 ] - then - if [ $i = "mythweb$postfix" ] - then - pacman --noconfirm -R mythweb$postfix - echo removed $i - else - pacman --noconfirm -Rs $i - echo removed $i - fi - fi - else - echo "$i is black listed" - fi -done -# fi - -for i in $install -do - echo "-----------$i --------------" - grep -q $i $PKGBLACKLIST - if [ $? = 1 ] - then - pacman -Q $i 2>/dev/null - #VAR=`pacman -Q $i 2>&1 ` - # echo $VAR |grep -vq error: - - if [ ! $? = 0 ] - then - pacman --noconfirm -Sf $i - echo installed $i - else - echo "$i already installed" - fi - else - echo "$i is black listed" - fi -done -} - -function daemons { -echo "Daemons on boot" - -for i in $daemon_remove -do - sv check $i 1>/dev/null - status=$? - if [ $status -eq 0 ] - then - sv down $i - fi - remove_service.sh $i -done - - -for i in $daemon_add -do - sv check $i 1>/dev/null - status=$? - add_service.sh $i - - if [ $status -eq 0 ] - then - case $i in - mysql*) sv hup $i - ;; - mythback*) sv hup $i - ;; - lirc* ) sv hup $i - ;; - frontend) sv check frontend 1>/dev/null - ;; - - smbd ) sv hup $i - ;; - nmbd ) sv hup $i - ;; - evrouter) sv restart $i - ;; - *) sv down $i - sleep 1 - sv up $i - ;; - esac - fi - -done - -} - - -function services -{ - ser_install="" - ser_daemon_add="" - ser_remove="" - ser_daemon_remove="" - if [ x$UseEvrouter = x1 ] - then - ser_daemon_add="evrouter Xvfb $ser_daemon_add" - else - ser_daemon_remove="evrouter Xvfb $ser_remove" - fi - - if [ x$RunDHCP = x1 ] - then - ser_daemon_add="dnsmasq $ser_daemon_add" - ser_install="dnsmasq mvpmc $ser_install" - - else - ser_daemon_remove="dnsmasq $ser_daemon_remove" - ser_remove="dnsmasq mvpmc $ser_remove" - fi - - if [ x$RunFrontend = x1 ] - then - ser_daemon_add="frontend hal ghosd $ser_daemon_add" - ser_install="ghosd $ser_install" - showX=true - else - ser_daemon_remove="frontend hal $ser_daemon_remove" - ser_remove="$ser_remove" - fi - - if [ x$UseMythWEB = x1 ] - then - ser_install="lighttpd mythweb$postfix $ser_install" - ser_daemon_add="lighttpd $ser_daemon_add" - else - ser_remove="mythweb$postfix $ser_remove" - ser_daemon_remove="$ser_daemon_remove" - fi - - #samba - if [ x$UseSamba = x1 ] - then - ser_install="samba $ser_install" - ser_daemon_add="nmbd smbd $ser_daemon_add " - if [ x$Samba_mediareadonly = x1 ] - then - smreadonly="no" - else - smreadonly="yes" - fi - - if [ x$Samba_homereadonly = x1 ] - then - shreadonly="no" - else - shreadonly="yes" - fi - - if [ ! -d ${BASE}/etc/samba ] - then - mkdir ${BASE}/etc/samba - fi - - if [ -f ${BASE}/data/home/mythtv/templates/smb.conf ] - then - install -D -m755 ${BASE}/data/home/mythtv/templates/smb.conf ${BASE}/etc/samba/smb.conf - else - sed -e "s/^.*workgroup =.*$/ workgroup = $Samba_domain/g " \ - -e "s/^.*server string = .*$/ server string = $hostname/g" $TEMPLATES/samba/smb.conf.template > ${BASE}/etc/samba/smb.conf - - if [ x$Samba_media = "x1" ] - then - echo "include = /etc/samba/smb.conf.media" >> ${BASE}/etc/samba/smb.conf - sed -e "s/^.*writeable.*$/writeable = $smreadonly/g" $TEMPLATES/samba/smb.conf.media > ${BASE}/etc/samba/smb.conf.media - fi - - if [ x$Samba_home = "x1" ] - then - echo "include = /etc/samba/smb.conf.home" >> ${BASE}/etc/samba/smb.conf - sed -e "s/^.*writeable.*$/writeable = $shreadonly/g" $TEMPLATES/samba/smb.conf.home > ${BASE}/etc/samba/smb.conf.home - - fi - - fi - else - ser_remove="samba $ser_remove" - ser_install="smbclient $ser_install" - ser_daemon_remove="smbd nmbd $ser_daemon_remove" - fi - - - if [ x$UseNFS = x1 ] - then - ser_install="nfs-utils portmap $ser_install" - ser_daemon_add="nfsd nfslock portmap $ser_daemon_add" - sed -e "s/REPLACEME/*/g" $TEMPLATES/exports.template > ${BASE}/etc/exports - - else - ser_remove="$ser_remove" - ser_daemon_remove="nfsd nfslock $ser_daemon_remove" - fi - - if [ x$Runncidd = x1 ] - then - ser_daemon_add="ncidd ncid $ser_daemon_add" - ser_install="ncid $ser_install" - else - ser_daemon_remove="ncidd ncid $ser_daemon_remove" - ser_remove="ncid $ser_remove" - fi - if [ x$UseEvrouter = x1 ] - then - ser_install="evrouter Xvfb $ser_install" - else - ser_remove="evrouter $ser_remove" - fi - #Setting the default, just to avoid the or statement.. - if [ x$UseHobbit = x ] - then - UseHobbit=1 - fi - - if [ x$UseHobbit = x1 ] - then - case $SystemType in - Standalone|Master_backend ) - ser_daemon_add="hobbit $ser_daemon_add" - ser_install="hobbitserver $ser_install" - ;; - - *) ser_daemon_add="hobbit-client $ser_daemon_add" - ser_install="hobbit-client $ser_install" - ;; - esac - else - ser_daemon_remove="hobbit hobbit-client $ser_daemon_remove" - ser_remove="hobbit-client hobbitserver $ser_remove" - rm -f /data/srv/httpd/htdocs/hobbit/index.html - - fi - - - -} - - - -function setupsleep { -if [ x$AutoShutdown = x1 ] -then - cronshutdowntime="" - if [ x$Shutdowntime != x-1 ] - then - cronshutdowntime=$Shutdowntime - fi - if [ x$Shutdowntime2 != x-1 ] - then - if [ x$cronshutdowntime = x ] - then - cronshutdowntime=$Shutdowntime2 - else - cronshutdowntime="${cronshutdowntime},${Shutdowntime2}" - fi - fi - - sed -e "s/HOUR/$cronshutdowntime/g" $TEMPLATES/cron.template | crontab - -u mythtv -else - sed -e "/00 HOUR.*/d" $TEMPLATES/cron.template | crontab - -u mythtv -fi - -} - - -function setuppacman () { -#setup link to httpd dir -echo "Configuring pacman" -if [ ! x$1 = x ] -then - ln -s ${BASE}/data/var ${BASE}/data/srv/httpd/htdocs/repo - echo "creating the link for the pacman repo mirror" -fi - -for i in mv-core mv-core-testing mv-extra mv-extra-testing -do - echo "[$i]" > ${BASE}/etc/pacman.d/$i - #add mirror if needed - if [ x$PKG_MIRROR = x1 ] - then - echo " Server = http://$dbhost/repo/$i " >> ${BASE}/etc/pacman.d/$i - fi - #add user templates - USERTEMPLATES="/data/home/mythtv/templates" - if [ -f $USERTEMPLATES/sources/$i ] - then - echo "Adding user $i" - cat $USERTEMPLATES/sources/$i >> ${BASE}/etc/pacman.d/$i - fi - cat $TEMPLATES/sources/$i >> ${BASE}/etc/pacman.d/$i - echo "setting local mirror to $dbhost for $i " -done - -#sed -e "s/REPLACEME/$dbhost/g" $TEMPLATES/sources/svc_pkg > /etc/pacman.d/svc_pkg - - -} - - -function setupzipcode () { -if [ ! x$zipcode = x ] -then - ${MV_ROOT}/bin/restore_default_settings.sh -c ZIP -z $zipcode -fi -} - -function process_nfsmap () { -#first look for a local copy of nfsmap -if [ $1 = noip ] -then - if [ -f /data/home/mythtv/templates/nfsmap ] - then - NFSMAP="/data/home/mythtv/templates/nfsmap" - else - mv -f /tmp/nfsmap /tmp/nfsmap.old - wget -O /tmp/nfsmap http://$dbhost:1337/templates/nfsmap - if [ $? = 0 ] - then - NFSMAP="/tmp/nfsmap" - fi - fi -else - mv -f /tmp/nfsmap /tmp/nfsmap.old - wget -O /tmp/nfsmap http://$1:1337/templates/nfsmap - if [ $? = 0 ] - then - NFSMAP="/tmp/nfsmap" - fi -fi - -if [ -f $NFSMAP ] -then - #read in file - while read line - do - NFSserver=`echo "$line"|cut -d" " -f1` - NFSmount=`echo "$line"|cut -d" " -f2` - setupfstab $NFSserver $NFSmount - done <$NFSMAP -else - echo "couldn't find nfsmap" - -fi -} - -function setupcnfs () { -scrubnfs -if [ $HaveCentralNFS = "yes" ] -then - case x$NFSserver in - xfile:nfsmap ) - process_nfsmap noip - ;; - *:nfsmap ) - nfsmapip=`echo "$NFSserver" | cut -d: -f1 ` - process_nfsmap $nfsmapip - ;; - *) setupfstab $NFSserver $NFSmount - esac - - #if [ ! x"$NFSserver" = "xfile:nfsmap" ] - #then - # setupfstab $NFSserver $NFSmount - #else - # process_nfsmap - #fi -else - echo "fe_nfs" - #if no central nfs found, then use the mbe. - if [ $SystemType = "Frontend_only" ] - then - setupfstab ${dbhost}:/data/media /data/media - fi -fi - -} - -function setupbootsplash () { - -if [ x$Usebootsplash = x1 ] -then - COMMAND="%s/^default.*0/default 1/g" -else - COMMAND="%s/^default.*1/default 0/g" -fi - -ex ${BASE}/boot/grub/menu.lst < ${BASE}/etc/resolv.conf - echo "nameserver 127.0.0.1" >> ${BASE}/etc/resolv.conf - echo "nameserver $nameserver" >> ${BASE}/etc/resolv.conf -fi - -#setup dongle.config -COMMAND="%s/mvpmc -f .*/mvpmc -f \/etc\/helvR10.fon -s ${MYTHIP} \& /" -ex ${BASE}/data/srv/tftp/dongle.bin.config < /etc/os_myth_release -echo "systemtype=$smoltsystem" > /data/home/mythtv/.mythtv/smolt.info 2>/dev/null -echo "remote=$Remotetype" >> /data/home/mythtv/.mythtv/smolt.info 2>/dev/null diff --git a/abs/mv-core/MythVantage-config/timezip.py b/abs/mv-core/MythVantage-config/timezip.py index 18f338f..bf6b389 100755 --- a/abs/mv-core/MythVantage-config/timezip.py +++ b/abs/mv-core/MythVantage-config/timezip.py @@ -1,4 +1,5 @@ #!/usr/bin/python +# -*- coding: utf-8 -*- # import MySQL module #used to import the zipcode/timezone/nfs info fromMBE import MySQLdb @@ -45,7 +46,10 @@ def selectvars(): # execute SQL statement cursor.execute("select hostname from settings where value='BackendServerIP' and data=(%s)",(masterdb)) result = cursor.fetchone() - BEhostname=result[0] + try: + BEhostname=result[0] + except TypeError: + BEhostname="" cursor.execute("select data from settings where value='HostZipcode' and hostname=(%s)",(BEhostname)) result = cursor.fetchone() @@ -87,7 +91,7 @@ def selectvars(): try: tz_region=result[0] except TypeError: - tz="" + tz_region="" tempsubregion="HostTimeZoneRegion_" + tz_region cursor.execute("select data from settings where value=%s and hostname=(%s)",(tempsubregion,BEhostname)) diff --git a/abs/mv-core/MythVantage-config/xconfig.sh b/abs/mv-core/MythVantage-config/xconfig.sh index eaa84b6..2fad821 100755 --- a/abs/mv-core/MythVantage-config/xconfig.sh +++ b/abs/mv-core/MythVantage-config/xconfig.sh @@ -1,51 +1,64 @@ #!/bin/bash +#SET DISPLAYCARD to force a cardtype +#SET DISPLAYRES to force Xres, ENV takes precendent over cmdline +#displayres=cmdline #NVPKGS="ati-dri xf86-video-ati xf86-video-radeonhd intel-dri xf86-video-intel unichrome-dri xf86-video-unichrome xf86-video-mga xf86-video-savage xf86-video-trident" -NVPKGS="ati-dri xf86-video-ati xf86-video-radeonhd intel-dri xf86-video-intel xf86-video-mga xf86-video-savage xf86-video-trident" +NVPKGS="ati-dri xf86-video-ati xf86-video-radeonhd intel-dri xf86-video-intel xf86-video-mga xf86-video-savage xf86-video-trident unichrome-dri xf86-video-openchrome" BASE="" . /etc/profile NVIDIA_96XX="$TEMPLATES/xorg/96xx_supported.txt" #TEMPLATES="/usr/share/templates" +MYTHHOME=$BASE/home/mythtv function Xvalues { CMDLINE=$(cat /proc/cmdline) echo "$CMDLINE" | grep -q forceXvesa - if [ $? = 0 ] + if [ $? = 0 ] then VGACARDTYPE=vesa + Xcardtype=$VGACARDTYPE else VGACARDTYPE=`lspci | grep -i vga | sort -r | head -n 1 | cut -d: -f3 | cut -d" " -f2` VGAPCIID=`lspci | grep -i vga | sort -r | head -n 1 | cut -d" " -f1` CARDID=`lspci -n | grep "$VGAPCIID" | grep 10de | cut -d" " -f3 | cut -d: -f2` VENDORID=`lspci -n | grep "$VGAPCIID" | grep 10de | cut -d" " -f3 | cut -d: -f1` fi - echo "$VGACARDTYPE" + #force VGACARDTYPE + if [ ! x$DISPLAYCARD = x ] + then + VGACARDTYPE=$DISPLAYCARD + Xcardtype=$VGACARDTYPE + fi + echo "Will use $VGACARDTYPE" currentmode=`cat "$BASE/etc/X11/xorg.conf" | grep Modes | awk -Fs '{ print $2 }'` } function presetupX { - if [ "$XUseAdvanced" = 1 ] + if [ -f /etc/sysconfig/IGNORE_X ] then + echo "Will not run xconfig.sh due to presence of /etc/sysconfig/IGNORE_X" + return 1 + else if [ "$XIgnoreConfig" = 1 ] then echo "Using User supplied X" - if [ -f "$BASE/data/home/mythtv/templates/xorg.user" ] + if [ -f "$MYTHHOME/templates/xorg.user" ] then - cp -f "$BASE/data/home/mythtv/templates/xorg.user" "$XORG_CONF" + cp -f "$MYTHHOME/templates/xorg.user" "$XORG_CONF" else echo "Didn't find the file" - echo "Copy your config file to $BASE/data/home/mythtv/templates/xorg.use" >> "$XORG_CONF" + echo "Copy your config file to $MYTHHOME/templates/xorg.user" > "$XORG_CONF" fi else - setupAdvancedX - fi - else - if [ -f /etc/sysconfig/IGNORE_X ] - then - echo "Will not run xconfig.sh due to presence of /etc/sysconfig/IGNORE_X" - else - setupX + if [ "$XUseAdvanced" = 1 ] + then + setupAdvancedX + else + setupX + fi fi fi + } function setupAdvancedX { @@ -53,7 +66,7 @@ function setupAdvancedX { Xcategory=`echo "$Xresadvanced" | cut -d_ -f1` Xres=`echo "$Xresadvanced" | cut -d_ -f2` echo "$Xcategory" - if [ "$Xcategory" = "Nvidia" ] + if [ "$Xcategory" = "nVidia Modeline" ] then Xres="" if [ "$XnVidia1080p" = "1" ] @@ -79,7 +92,7 @@ function setupAdvancedX { fi # echo $ML case $Xcardtype in - NVIDIA|nVidia) + NVIDIA|nVidia|nvidia) case $Xconnection in DVI) ConnectedMonitor=DFP ;; vga) ConnectedMonitor=CRT;; @@ -175,7 +188,12 @@ function setupX { then case $VGACARDTYPE in nVidia) - sed -e "s/^.*Modes.*$/\t Modes \"${Xres}\"/" "$TEMPLATES/xorg/xorg.conf.nvidia" > "$XORG_CONF" + if [ ${Xres} = Auto ] + then + sed -e "/^.*Modes.*$/d" "$TEMPLATES/xorg/xorg.conf.nvidia" > "$XORG_CONF" + else + sed -e "s/^.*Modes.*$/\t Modes \"${Xres}\"/" "$TEMPLATES/xorg/xorg.conf.nvidia" > "$XORG_CONF" + fi if [ "$TESTMODE" != "test" ] then #nvidia check right here @@ -184,11 +202,13 @@ function setupX { then #install 96xx drivers echo "installing nvidia 96xx drivers" + pacman --noconfirm -Rd libgl > /dev/null 2>&1 pacman --noconfirm -R $NVPKGS > /dev/null 2>&1 pacman --noconfirm -S nvidia-96xx nvidia-96xx-utils > /dev/null 2>&1 else #install latest drivers echo "installing current nvidia drivers" + pacman --noconfirm -Rd libgl > /dev/null 2>&1 pacman --noconfirm -R $NVPKGS > /dev/null 2>&1 pacman --noconfirm -S nvidia nvidia-utils > /dev/null 2>&1 fi @@ -205,7 +225,12 @@ function setupX { # xf86-video-openchrome # xf86-video-unichrome # There is also a seperate driver for the Unichrome Pro - sed -e "s/^.*Modes.*$/\t Modes \"${Xres}\"/" "$TEMPLATES/xorg/xorg.conf.via" > "$XORG_CONF" + if [ ${Xres} = Auto ] + then + sed -e "/^.*Modes.*$/d" "$TEMPLATES/xorg/xorg.conf.via" > "$XORG_CONF" + else + sed -e "s/^.*Modes.*$/\t Modes \"${Xres}\"/" "$TEMPLATES/xorg/xorg.conf.via" > "$XORG_CONF" + fi if [ "$TESTMODE" != "test" ] then if [ "$OPENCHROME" = "1" ] @@ -236,8 +261,13 @@ function setupX { fi ;; - Intel) - sed -e "s/^.*Modes.*$/\t Modes \"${Xres}\"/" "$TEMPLATES/xorg/xorg.conf.intel" > "$XORG_CONF" + Intel|intel) + if [ ${Xres} = Auto ] + then + sed -e "/^.*Modes.*$/d" "$TEMPLATES/xorg/xorg.conf.intel" > "$XORG_CONF" + else + sed -e "s/^.*Modes.*$/\t Modes \"${Xres}\"/" "$TEMPLATES/xorg/xorg.conf.intel" > "$XORG_CONF" + fi if [ "$TESTMODE" != "test" ] then pacman --noconfirm -R nvidia-utils > /dev/null 2>&1 @@ -247,7 +277,12 @@ function setupX { ;; vesa|InnoTek) - sed -e "s/^.*Modes.*$/\t Modes \"${Xres}\"/" "$TEMPLATES/xorg/xorg.conf.vesa" > "$XORG_CONF" + if [ ${Xres} = Auto ] + then + sed -e "/^.*Modes.*$/d" "$TEMPLATES/xorg/xorg.conf.vesa" > "$XORG_CONF" + else + sed -e "s/^.*Modes.*$/\t Modes \"${Xres}\"/" "$TEMPLATES/xorg/xorg.conf.vesa" > "$XORG_CONF" + fi ;; *) @@ -257,11 +292,21 @@ function setupX { if [ -f "$XCONF" ] then echo "Using $XCONF" - grep -v Modes "$XCONF" | sed -e "/Depth.*16/a Modes \"${Xres}\" " -e "/Depth.*24/a Modes \"${Xres}\"" -e 's/dev\/mouse/dev\/psaux/g'> "$XORG_CONF" + if [ ${Xres} = Auto ] + then + grep -v Modes "$XCONF" | sed -e 's/dev\/mouse/dev\/psaux/g'> "$XORG_CONF" + else + grep -v Modes "$XCONF" | sed -e "/Depth.*16/a Modes \"${Xres}\" " -e "/Depth.*24/a Modes \"${Xres}\"" -e 's/dev\/mouse/dev\/psaux/g'> "$XORG_CONF" + fi elif [ -f "$XCONFB" ] then echo "Using $XCONFB" - sed -e "s/^.*Modes.*$/\t Modes \"${Xres}\"/" "$XCONFB" > "$XORG_CONF" + if [ ${Xres} = Auto ] + then + sed -e "/^.*Modes.*$/d" "$XCONFB" > "$XORG_CONF" + else + sed -e "s/^.*Modes.*$/\t Modes \"${Xres}\"/" "$XCONFB" > "$XORG_CONF" + fi else echo "Xorg configuration failed" fi @@ -296,6 +341,22 @@ else else Xres="800x600" fi + CMDLINE=$(cat /proc/cmdline) + echo $CMDLINE | grep -q displayres + if [ $? = 0 ] + then + TEMPVAR=${CMDLINE#*displayres=} + DSR=${TEMPVAR%% *} + fi + if [ ! x$DSR = x ] + then + Xres=$DSR + fi + if [ ! x$DISPLAYRES = x ] + then + Xres=$DISPLAYRES + fi + XORG_CONF="/etc/X11/xorg.conf" XVMC_CONFIG="/etc/X11/XvMCConfig" fi diff --git a/abs/mv-core/hobbit-client/client/bin/bb b/abs/mv-core/hobbit-client/client/bin/bb index 1202ab4..0fa4434 100755 Binary files a/abs/mv-core/hobbit-client/client/bin/bb and b/abs/mv-core/hobbit-client/client/bin/bb differ diff --git a/abs/mv-core/hobbit-client/client/bin/bbcmd b/abs/mv-core/hobbit-client/client/bin/bbcmd index 3dd325b..a18e54c 100755 Binary files a/abs/mv-core/hobbit-client/client/bin/bbcmd and b/abs/mv-core/hobbit-client/client/bin/bbcmd differ diff --git a/abs/mv-core/hobbit-client/client/bin/bbdigest b/abs/mv-core/hobbit-client/client/bin/bbdigest index 9f607e9..c073c01 100755 Binary files a/abs/mv-core/hobbit-client/client/bin/bbdigest and b/abs/mv-core/hobbit-client/client/bin/bbdigest differ diff --git a/abs/mv-core/hobbit-client/client/bin/bbhostgrep b/abs/mv-core/hobbit-client/client/bin/bbhostgrep index e981aee..d46fd7b 100755 Binary files a/abs/mv-core/hobbit-client/client/bin/bbhostgrep and b/abs/mv-core/hobbit-client/client/bin/bbhostgrep differ diff --git a/abs/mv-core/hobbit-client/client/bin/bbhostshow b/abs/mv-core/hobbit-client/client/bin/bbhostshow index 2157ccb..ea5633a 100755 Binary files a/abs/mv-core/hobbit-client/client/bin/bbhostshow and b/abs/mv-core/hobbit-client/client/bin/bbhostshow differ diff --git a/abs/mv-core/hobbit-client/client/bin/clientupdate b/abs/mv-core/hobbit-client/client/bin/clientupdate index 9db22bd..761feae 100755 Binary files a/abs/mv-core/hobbit-client/client/bin/clientupdate and b/abs/mv-core/hobbit-client/client/bin/clientupdate differ diff --git a/abs/mv-core/hobbit-client/client/bin/hobbitlaunch b/abs/mv-core/hobbit-client/client/bin/hobbitlaunch index 9104dda..ab2185c 100755 Binary files a/abs/mv-core/hobbit-client/client/bin/hobbitlaunch and b/abs/mv-core/hobbit-client/client/bin/hobbitlaunch differ diff --git a/abs/mv-core/hobbit-client/client/bin/logfetch b/abs/mv-core/hobbit-client/client/bin/logfetch index 0b71938..40e36a0 100755 Binary files a/abs/mv-core/hobbit-client/client/bin/logfetch and b/abs/mv-core/hobbit-client/client/bin/logfetch differ diff --git a/abs/mv-core/hobbit-client/client/bin/msgcache b/abs/mv-core/hobbit-client/client/bin/msgcache index 33daa51..3f8c57d 100755 Binary files a/abs/mv-core/hobbit-client/client/bin/msgcache and b/abs/mv-core/hobbit-client/client/bin/msgcache differ diff --git a/abs/mv-core/hobbit-client/client/bin/orcahobbit b/abs/mv-core/hobbit-client/client/bin/orcahobbit index 9fcb227..05a359e 100755 Binary files a/abs/mv-core/hobbit-client/client/bin/orcahobbit and b/abs/mv-core/hobbit-client/client/bin/orcahobbit differ diff --git a/abs/mv-core/mp_all.sh b/abs/mv-core/mp_all.sh new file mode 100644 index 0000000..dd310fc --- /dev/null +++ b/abs/mv-core/mp_all.sh @@ -0,0 +1,31 @@ +#!/bin/sh +pkgver=21228 +pkgrel=1 + +# NOTE: Make sure to build and install mythtv first BEFORE building anything else +buildlist=('mythtv' 'mytharchive' 'mythbrowser' 'mythflix' 'mythgallery' 'mythgame' 'mythmovies' 'mythmusic' 'mythnews' 'mythvideo' 'mythweather' 'mythzoneminder' 'mythweb' 'myththemes' 'morethemes') +#buildlist=(mythtv-release-fixes Midnight-blue Midnight-wide MythVanage-mythmenu basic-amber basic-blue basic-green basic-purple basic-red mytharchive mythbrowser mythcontrols mythflix mythgallery mythgame mythmovietime mythmusic mythnews mythphone mythsmolt mythtv-themes mythvideo mythweather mythweb syth-lacquer-clean syth-lacquer-wide) +buildlist=(Midnight-blue Midnight-wide MythVanage-mythmenu basic-amber basic-blue basic-green basic-purple basic-red mytharchive mythbrowser mythcontrols mythflix mythgallery mythgame mythmovietime mythmusic mythnews mythphone mythsmolt mythtv-themes mythvideo mythweather mythweb syth-lacquer-wide) +buildlist=(MythVantage-config MythVantage-system certmaster confuse dnsmasq e16-myth-settings enlightenment evrouter func ghosd graphviz hobbit-client hobbitmon keylaunch lcdproc lighttpd local-website mediadirs mythdb-initial mythtv-status mythvantage-live ncid openssh runit-scripts-mv syslog-ng tilda webcal) +# build and install +for i in `echo ${buildlist[@]:0}` +do + echo "---------- building $i ----------" + cd ./$i + + # set svn version in the PKGBUILD +# sed -i s/^pkgver=.*/pkgver=$pkgver/ PKGBUILD +# sed -i s/^pkgrel=.*/pkgrel=$pkgrel/ PKGBUILD + + # make the package + mp -sr --noconfirm -f --holdver || exit 1 + pacman -Sy + # clean up afterwards + rm -rf pkg + rm -f *~ + + cd .. +done + +echo "" +echo "DONE!" diff --git a/abs/mv-core/myth/release-fixes/Midnight-blue/PKGBUILD b/abs/mv-core/myth/release-fixes/Midnight-blue/PKGBUILD deleted file mode 100755 index 7c09fcf..0000000 --- a/abs/mv-core/myth/release-fixes/Midnight-blue/PKGBUILD +++ /dev/null @@ -1,21 +0,0 @@ -pkgname=Midnight-blue -pkgver=1 -pkgrel=23 -pkgdesc="" -url="" -license="" -depends=() -makedepends=() -conflicts=() -replaces=() -backup=() -source=(http://www.mythvantage.com/src/Midnight-blue.tgz) -arch=i686 -md5sums=() - -build() { - cd $startdir/src - mkdir -p $startdir/pkg/usr/share/mythtv/themes - cp -rp $pkgname $startdir/pkg/usr/share/mythtv/themes/ - -} diff --git a/abs/mv-core/myth/release-fixes/Midnight-wide/PKGBUILD b/abs/mv-core/myth/release-fixes/Midnight-wide/PKGBUILD deleted file mode 100755 index 73fb965..0000000 --- a/abs/mv-core/myth/release-fixes/Midnight-wide/PKGBUILD +++ /dev/null @@ -1,21 +0,0 @@ -pkgname=Midnight-wide -pkgver=1 -pkgrel=23 -pkgdesc="" -url="" -license="" -depends=() -makedepends=() -conflicts=() -replaces=() -backup=() -source=(http://www.mythvantage.com/src/Midnight-wide.tgz) -arch=i686 -md5sums=() - -build() { - cd $startdir/src - mkdir -p $startdir/pkg/usr/share/mythtv/themes - cp -rp $pkgname $startdir/pkg/usr/share/mythtv/themes/ - -} diff --git a/abs/mv-core/myth/release-fixes/MythVanage-mythmenu/MythVantage-menu/HOST_SETTINGS.xml b/abs/mv-core/myth/release-fixes/MythVanage-mythmenu/MythVantage-menu/HOST_SETTINGS.xml deleted file mode 100755 index c9b7e20..0000000 --- a/abs/mv-core/myth/release-fixes/MythVanage-mythmenu/MythVantage-menu/HOST_SETTINGS.xml +++ /dev/null @@ -1,71 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/abs/mv-core/myth/release-fixes/MythVanage-mythmenu/MythVantage-menu/util_menu.xml b/abs/mv-core/myth/release-fixes/MythVanage-mythmenu/MythVantage-menu/util_menu.xml deleted file mode 100644 index aeecbbb..0000000 --- a/abs/mv-core/myth/release-fixes/MythVanage-mythmenu/MythVantage-menu/util_menu.xml +++ /dev/null @@ -1,121 +0,0 @@ - - - - - - - - - - - - - - - - diff --git a/abs/mv-core/myth/release-fixes/MythVanage-mythmenu/MythVantage-menu/util_menu.xml.mv b/abs/mv-core/myth/release-fixes/MythVanage-mythmenu/MythVantage-menu/util_menu.xml.mv deleted file mode 100755 index 4a94303..0000000 --- a/abs/mv-core/myth/release-fixes/MythVanage-mythmenu/MythVantage-menu/util_menu.xml.mv +++ /dev/null @@ -1,106 +0,0 @@ - - - - - - - - - - - - - diff --git a/abs/mv-core/myth/release-fixes/MythVanage-mythmenu/PKGBUILD b/abs/mv-core/myth/release-fixes/MythVanage-mythmenu/PKGBUILD deleted file mode 100755 index ed3a517..0000000 --- a/abs/mv-core/myth/release-fixes/MythVanage-mythmenu/PKGBUILD +++ /dev/null @@ -1,15 +0,0 @@ -pkgname=MythVantage-mythmenu -pkgver=1.0 -pkgrel=7 -pkgdesc="Myth menu with MythVantage settings" -#depends=( mythtv-svn ) -source=() -arch=('i686') -build() { - cd $startdir/src - rsync -a --exclude=.svn $startdir/MythVantage-menu . - mkdir -p -m 755 $startdir/pkg/usr/share/mythtv/themes - cp -rp MythVantage-menu $startdir/pkg/usr/share/mythtv/themes - -} - diff --git a/abs/mv-core/myth/release-fixes/basic-amber/PKGBUILD b/abs/mv-core/myth/release-fixes/basic-amber/PKGBUILD deleted file mode 100755 index 739486f..0000000 --- a/abs/mv-core/myth/release-fixes/basic-amber/PKGBUILD +++ /dev/null @@ -1,20 +0,0 @@ -pkgname=basic-amber -pkgver=1 -pkgrel=8 -pkgdesc="" -url="" -license="" -depends=() -makedepends=() -conflicts=() -replaces=() -backup=() -source=(http://www.mythvantage.com/src/basic-amber.tgz) -md5sums=() -arch=('i686') -build() { - cd $startdir/src - mkdir -p $startdir/pkg/usr/share/mythtv/themes - cp -rp $pkgname $startdir/pkg/usr/share/mythtv/themes/ - -} diff --git a/abs/mv-core/myth/release-fixes/basic-blue/PKGBUILD b/abs/mv-core/myth/release-fixes/basic-blue/PKGBUILD deleted file mode 100755 index 6e6d7d8..0000000 --- a/abs/mv-core/myth/release-fixes/basic-blue/PKGBUILD +++ /dev/null @@ -1,20 +0,0 @@ -pkgname=basic-blue -pkgver=1 -pkgrel=8 -pkgdesc="" -url="" -license="" -depends=() -makedepends=() -conflicts=() -replaces=() -backup=() -source=(http://www.mythvantage.com/src/basic-blue.tgz) -md5sums=() -arch=('i686') -build() { - cd $startdir/src - mkdir -p $startdir/pkg/usr/share/mythtv/themes - #cp -rp $pkgname $startdir/pkg/usr/local/share/mythtv/themes/ - rsync -a --exclude=.svn $pkgname $startdir/pkg/usr/share/mythtv/themes/ -} diff --git a/abs/mv-core/myth/release-fixes/basic-green/PKGBUILD b/abs/mv-core/myth/release-fixes/basic-green/PKGBUILD deleted file mode 100755 index 6cca366..0000000 --- a/abs/mv-core/myth/release-fixes/basic-green/PKGBUILD +++ /dev/null @@ -1,20 +0,0 @@ -pkgname=basic-green -pkgver=1 -pkgrel=7 -pkgdesc="" -url="" -license="" -depends=() -makedepends=() -conflicts=() -replaces=() -backup=() -source=(http://www.mythvantage.com/src/basic-green.tgz) -md5sums=() -arch=('i686') -build() { - cd $startdir/src - mkdir -p $startdir/pkg/usr/share/mythtv/themes - cp -rp $pkgname $startdir/pkg/usr/share/mythtv/themes/ - -} diff --git a/abs/mv-core/myth/release-fixes/basic-purple/PKGBUILD b/abs/mv-core/myth/release-fixes/basic-purple/PKGBUILD deleted file mode 100755 index cc5baeb..0000000 --- a/abs/mv-core/myth/release-fixes/basic-purple/PKGBUILD +++ /dev/null @@ -1,20 +0,0 @@ -pkgname=basic-purple -pkgver=1 -pkgrel=7 -pkgdesc="" -url="" -license="" -depends=() -makedepends=() -conflicts=() -replaces=() -backup=() -source=(http://www.mythvantage.com/src/basic-purple.tgz) -md5sums=() -arch=('i686') -build() { - cd $startdir/src - mkdir -p $startdir/pkg/usr/share/mythtv/themes - cp -rp $pkgname $startdir/pkg/usr/share/mythtv/themes/ - -} diff --git a/abs/mv-core/myth/release-fixes/basic-red/PKGBUILD b/abs/mv-core/myth/release-fixes/basic-red/PKGBUILD deleted file mode 100755 index 1ff6569..0000000 --- a/abs/mv-core/myth/release-fixes/basic-red/PKGBUILD +++ /dev/null @@ -1,20 +0,0 @@ -pkgname=basic-red -pkgver=1 -pkgrel=9 -pkgdesc="" -url="" -license="" -depends=() -makedepends=() -conflicts=() -replaces=() -backup=() -source=(http://www.mythvantage.com/src/basic-red.tgz) -md5sums=() -arch=('i686') -build() { - cd $startdir/src - mkdir -p $startdir/pkg/usr/share/mythtv/themes - cp -rp $pkgname $startdir/pkg/usr/share/mythtv/themes/ - -} diff --git a/abs/mv-core/myth/release-fixes/compile-plugins.sh b/abs/mv-core/myth/release-fixes/compile-plugins.sh deleted file mode 100755 index 22d03d9..0000000 --- a/abs/mv-core/myth/release-fixes/compile-plugins.sh +++ /dev/null @@ -1,17 +0,0 @@ -#!/bin/bash -logdir=`pwd` -rm fail.log -for i in plugins/* -do - if [ -d $i ] - then - mydir=`pwd` - - cd $i -# versionpkg -mf||exit 1 - echo "starting $i" - mp -fsr || echo "$i failed" >> $logdir/fail.log - cd $mydir - fi -done - diff --git a/abs/mv-core/myth/release-fixes/mythtv-release-fixes/3466-v1.patch b/abs/mv-core/myth/release-fixes/mythtv-release-fixes/3466-v1.patch deleted file mode 100755 index 912ce27..0000000 --- a/abs/mv-core/myth/release-fixes/mythtv-release-fixes/3466-v1.patch +++ /dev/null @@ -1,240 +0,0 @@ -Index: libs/libmythtv/NuppelVideoPlayer.cpp -=================================================================== ---- libs/libmythtv/NuppelVideoPlayer.cpp (revision 13535) -+++ libs/libmythtv/NuppelVideoPlayer.cpp (working copy) -@@ -1475,6 +1475,12 @@ - } - } - -+void NuppelVideoPlayer::DrawUnusedRects(bool sync) -+{ -+ if (videoOutput) -+ videoOutput->DrawUnusedRects(sync); -+} -+ - void NuppelVideoPlayer::ResetCaptions(uint mode_override) - { - uint origMode = textDisplayMode; -Index: libs/libmythtv/guidegrid.h -=================================================================== ---- libs/libmythtv/guidegrid.h (revision 13535) -+++ libs/libmythtv/guidegrid.h (working copy) -@@ -86,8 +86,9 @@ - void paintEvent(QPaintEvent *); - - private slots: -- void timeout(); -- void jumpToChannelTimeout(); -+ void timeCheckTimeout(void); -+ void repaintVideoTimeout(void); -+ void jumpToChannelTimeout(void); - - private: - void keyPressEvent(QKeyEvent *e); -@@ -174,6 +175,7 @@ - QString currentTimeColor; - - QTimer *timeCheck; -+ QTimer *videoRepaintTimer; - - bool keyDown; - -Index: libs/libmythtv/tv_play.h -=================================================================== ---- libs/libmythtv/tv_play.h (revision 13535) -+++ libs/libmythtv/tv_play.h (working copy) -@@ -112,6 +112,7 @@ - void StopEmbeddingOutput(void); - bool IsEmbedding(void); - void EPGChannelUpdate(uint chanid, QString channum); -+ void DrawUnusedRects(bool sync); - - // Recording commands - int PlayFromRecorder(int recordernum); -Index: libs/libmythtv/guidegrid.cpp -=================================================================== ---- libs/libmythtv/guidegrid.cpp (revision 13535) -+++ libs/libmythtv/guidegrid.cpp (working copy) -@@ -261,9 +261,14 @@ - - timeCheck = NULL; - timeCheck = new QTimer(this); -- connect(timeCheck, SIGNAL(timeout()), SLOT(timeout()) ); -+ connect(timeCheck, SIGNAL(timeout()), SLOT(timeCheckTimeout()) ); - timeCheck->start(200); - -+ videoRepaintTimer = new QTimer(this); -+ QObject::connect(videoRepaintTimer, SIGNAL(timeout()), -+ this, SLOT(repaintVideoTimeout())); -+ videoRepaintTimer->start(1000); -+ - selectState = false; - - updateBackground(); -@@ -281,18 +286,46 @@ - for (int x = 0; x < MAX_DISPLAY_TIMES; x++) - { - if (m_timeInfos[x]) -+ { - delete m_timeInfos[x]; -+ m_timeInfos[x] = NULL; -+ } - } - - for (int y = 0; y < MAX_DISPLAY_CHANS; y++) - { - if (m_programs[y]) -+ { - delete m_programs[y]; -+ m_programs[y] = NULL; -+ } - } - - m_channelInfos.clear(); - -- delete theme; -+ if (theme) -+ { -+ delete theme; -+ theme = NULL; -+ } -+ -+ if (jumpToChannelTimer) -+ { -+ jumpToChannelTimer->deleteLater(); -+ jumpToChannelTimer = NULL; -+ } -+ -+ if (timeCheck) -+ { -+ timeCheck->deleteLater(); -+ timeCheck = NULL; -+ } -+ -+ if (videoRepaintTimer) -+ { -+ videoRepaintTimer->deleteLater(); -+ videoRepaintTimer = NULL; -+ } - } - - void GuideGrid::keyPressEvent(QKeyEvent *e) -@@ -533,7 +566,7 @@ - return m_channelInfos[idx].chanid; - } - --void GuideGrid::timeout() -+void GuideGrid::timeCheckTimeout(void) - { - timeCheck->changeInterval((int)(60 * 1000)); - QTime new_time = QTime::currentTime(); -@@ -561,6 +594,12 @@ - repaint(curInfoRect, false); - } - -+void GuideGrid::repaintVideoTimeout(void) -+{ -+ timeCheck->changeInterval(1000); -+ update(videoRect); -+} -+ - void GuideGrid::fillChannelInfos(bool gotostartchannel) - { - m_channelInfos.clear(); -@@ -974,6 +1013,7 @@ - if (r.intersects(videoRect) && m_player) - { - timeCheck->changeInterval((int)(200)); -+ m_player->DrawUnusedRects(false); - } - - qApp->unlock(); -@@ -1794,7 +1834,10 @@ - ChannelInfo info = m_channelInfos[idx]; - - if (m_player) -+ { - m_player->EPGChannelUpdate(info.chanid, info.chanstr); -+ videoRepaintTimer->start(200); -+ } - } - - // -Index: libs/libmythtv/NuppelVideoPlayer.h -=================================================================== ---- libs/libmythtv/NuppelVideoPlayer.h (revision 13535) -+++ libs/libmythtv/NuppelVideoPlayer.h (working copy) -@@ -118,6 +118,7 @@ - void StopEmbedding(void); - void ExposeEvent(void); - bool IsEmbedding(void); -+ void DrawUnusedRects(bool sync); - - // Audio Sets - void SetNoAudio(void) { no_audio_out = true; } -Index: libs/libmythtv/tv_play.cpp -=================================================================== ---- libs/libmythtv/tv_play.cpp (revision 13535) -+++ libs/libmythtv/tv_play.cpp (working copy) -@@ -5035,6 +5035,12 @@ - return false; - } - -+void TV::DrawUnusedRects(bool sync) -+{ -+ if (nvp) -+ nvp->DrawUnusedRects(sync); -+} -+ - void TV::doEditSchedule(int editType) - { - if (!playbackinfo) -Index: libs/libmythtv/videoout_xv.cpp -=================================================================== ---- libs/libmythtv/videoout_xv.cpp (revision 13535) -+++ libs/libmythtv/videoout_xv.cpp (working copy) -@@ -2465,7 +2465,7 @@ - } - - if ((needrepaint || xv_need_bobdeint_repaint) && -- (VideoOutputSubType() >= XVideo)) -+ (VideoOutputSubType() >= XVideo) && !embedding) - { - DrawUnusedRects(/* don't do a sync*/false); - } -@@ -2480,12 +2480,6 @@ - - void VideoOutputXv::DrawUnusedRects(bool sync) - { -- // Unfortunately, this gets drawn in the wrong place on prebuffering -- // pauses when embedding and this is rarely useful when embedding -- // since the background is drawn in guidegrid so we bail here. -- dtk -- if (embedding) -- return; -- - // boboff assumes the smallest interlaced resolution is 480 lines - 5% - bool use_bob = (m_deinterlacing && m_deintfiltername == "bobdeint"); - int boboff_raw = (int)round(((double)display_video_rect.height()) / -@@ -2512,7 +2506,12 @@ - - X11L; - -- if (xv_draw_colorkey && needrepaint) -+ // This is used to avoid drawing the colorkey when embedding and -+ // not using overlay. This is needed because we don't paint this -+ // in the vertical retrace period when calling this from the EPG. -+ bool clrdraw = xv_colorkey || !embedding; -+ -+ if (xv_draw_colorkey && needrepaint && clrdraw) - { - XSetForeground(XJ_disp, XJ_gc, xv_colorkey); - XFillRectangle(XJ_disp, XJ_curwin, XJ_gc, -@@ -2521,7 +2520,7 @@ - display_visible_rect.width(), - display_visible_rect.height() - 2 * boboff); - } -- else if (xv_draw_colorkey && xv_need_bobdeint_repaint) -+ else if (xv_draw_colorkey && xv_need_bobdeint_repaint && clrdraw) - { - // if this is only for deinterlacing mode switching, draw - // the border areas, presumably the main image is undamaged. diff --git a/abs/mv-core/myth/release-fixes/mythtv-release-fixes/PKGBUILD b/abs/mv-core/myth/release-fixes/mythtv-release-fixes/PKGBUILD deleted file mode 100755 index 6c57b51..0000000 --- a/abs/mv-core/myth/release-fixes/mythtv-release-fixes/PKGBUILD +++ /dev/null @@ -1,79 +0,0 @@ -pkgname=mythtv-release-fixes -pkgver=20034 -pkgrel=1 -pkgdesc=".21 A personal video recorder for Linux" -url="http://www.mythtv.org" -license="GPL" -depends=('lame' 'libmysqlclient' 'alsa-lib' 'wget' 'qt3' 'x-server' 'freetype2' 'libmpeg2' 'libxml2' 'libraw1394' 'lirc' 'perl-date-manip' 'libavc1394' 'libdc1394' 'libiec61883') -makedepends=('subversion') -conflicts=(mythtv-svn) -replaces=() -backup=() -options=(!strip) -MAKEFLAGS="-j6" - -install='mythtv.install' -#source=(mythbackend myth.sh 3466-v1.patch reload.patch) -source=(mythbackend myth.sh myth.find_orphans.pl dbconfig.patch myththemedmenu.cpp.patch myththemedmenu.h.patch screenshots2.diff screenshot_jump.patch pop_be_restart.h.patch pop_be_restart.cpp.patch jump_snapshot.patch smolt_jump.patch) -arch=('i686') -md5sums=() -_svntrunk=http://svn.mythtv.org/svn/branches/release-0-21-fixes/mythtv -#_svntrunk=http://cvs.mythtv.org/svn/trunk/mythtv -_svnmod=mythtv - -build() { - svn co $_svntrunk --config-dir ./ -r $pkgver $_svnmod - cd $startdir/src/mythtv - patch -p0 < ../dbconfig.patch - grep snapshot programs/mythfrontend/networkcontrol.cpp|grep -q jumpMap - status=$? - - if [ $status != 0 ] - then - echo "patching for screenshot" - patch -p0 < ../screenshots2.diff - patch -p0 < ../screenshot_jump.patch - # patch -p0 < ../jump_snapshot.patch - - else - echo "screenshot already patched" - fi - patch -p0 < ../myththemedmenu.cpp.patch - patch -p0 < ../myththemedmenu.h.patch - patch -p0 < ../pop_be_restart.h.patch - patch -p0 < ../pop_be_restart.cpp.patch - patch -p0 < ../smolt_jump.patch - sed -i -e "s/\`(svnversion \$\${SVNTREEDIR} 2>\/dev\/null) || echo Unknown\`/$pkgver/" version.pro - make distclean - make clean - ./configure --prefix=/usr --enable-opengl-vsync --enable-dvb --enable-firewire --compile-type=release --with-bindings=perl --disable-audio-arts --disable-xrandr --disable-audio-jack --disable-directfb --disable-xvmc --disable-xvmcw --enable-xvmc-pro --enable-xvmc-opengl - -. /etc/profile - - make - make INSTALL_ROOT=$startdir/pkg install - mkdir -p $startdir/pkg/usr/share/mythtv/contrib - mkdir -p $startdir/pkg/etc/rc.d - mkdir -p $startdir/pkg/var/log/mythtv - mkdir -p $startdir/pkg/etc/profile.d - install -m0755 ../myth.sh $startdir/pkg/etc/profile.d/ -# install contrib - mkdir -p $startdir/pkg/usr/local/share/mythtv/contrib || return 1 - #cp -rp contrib/* $startdir/pkg/usr/local/share/mythtv/contrib - rsync -a --exclude=.svn contrib/* $startdir/pkg/usr/local/share/mythtv/contrib - echo "-release-fixes" > $startdir/pkg/usr/local/share/mythtv/.releasetype - #install -m0755 themes/*.ttf $startdir/pkg/usr/local/share/mythtv/themes/ - # set suid on mythfrontend -# chmod a+s $startdir/pkg/usr/local/bin/mythfrontend - -# mkdir -p $startdir/pkg/usr/lib/ -# mv $startdir/pkg/usr/local/lib/perl5 $startdir/pkg/usr/lib/perl5 - cd $startdir/src/mythtv/contrib - gcc -Wall -o firewire_tester firewire_tester.c -liec61883 -lraw1394 - install -m0755 firewire_tester $startdir/pkg/usr/bin/firewire_tester -# install -m0755 $startdir/pkg/usr/share/mythtv/contrib/optimize_mythdb.pl $startdir/pkg/usr/local/bin/optimize_mythdb.pl -# cp $startdir/src/myth.find_orphans.pl $startdir/pkg/usr/share/mythtv/contrib/myth.find_orphans.pl -# install -m0755 $startdir/pkg/usr/share/mythtv/contrib/myth.find_orphans.pl $startdir/pkg/usr/bin/myth.find_orphans.pl - - -} diff --git a/abs/mv-core/myth/release-fixes/mythtv-release-fixes/dbconfig.patch b/abs/mv-core/myth/release-fixes/mythtv-release-fixes/dbconfig.patch deleted file mode 100644 index 1d181ac..0000000 --- a/abs/mv-core/myth/release-fixes/mythtv-release-fixes/dbconfig.patch +++ /dev/null @@ -1,19 +0,0 @@ ---- libs/libmyth/mythcontext.cpp 2007-10-04 00:20:28.000000000 -0500 -+++ libs/libmyth/mythcontext.cpp.new 2007-11-12 22:54:57.000000000 -0600 -@@ -852,14 +852,14 @@ - cout << endl << error << endl << endl; - response = getResponse("Would you like to configure the database " - "connection now?", -- "yes"); -+ "no"); - if (!response || response.left(1).lower() != "y") - return false; - - params.dbHostName = getResponse("Database host name:", - params.dbHostName); - response = getResponse("Should I test connectivity to this host " -- "using the ping command?", "yes"); -+ "using the ping command?", "no"); - params.dbHostPing = (!response || response.left(1).lower() != "y"); - - params.dbPort = intResponse("Database non-default port:", diff --git a/abs/mv-core/myth/release-fixes/mythtv-release-fixes/debug_uitypes.cpp.patch b/abs/mv-core/myth/release-fixes/mythtv-release-fixes/debug_uitypes.cpp.patch deleted file mode 100644 index b87b89f..0000000 --- a/abs/mv-core/myth/release-fixes/mythtv-release-fixes/debug_uitypes.cpp.patch +++ /dev/null @@ -1,21 +0,0 @@ ---- mythtv/libs/libmyth/uitypes.cpp.orig 2007-11-30 14:03:07.000000000 -0600 -+++ mythtv/libs/libmyth/uitypes.cpp 2007-11-30 14:04:09.000000000 -0600 -@@ -3831,15 +3831,15 @@ - // - // Debugging, draw edges around bins - // -- -- /* -+ if (m_debug == true) -+ { - p->setPen(QColor(255,0,0)); - CornerMap::Iterator it; - for ( it = bin_corners.begin(); it != bin_corners.end(); ++it ) - { - p->drawRect(it.data()); - } -- */ -+ } - - } - diff --git a/abs/mv-core/myth/release-fixes/mythtv-release-fixes/debug_xmlparse.cpp.patch b/abs/mv-core/myth/release-fixes/mythtv-release-fixes/debug_xmlparse.cpp.patch deleted file mode 100644 index f479bbe..0000000 --- a/abs/mv-core/myth/release-fixes/mythtv-release-fixes/debug_xmlparse.cpp.patch +++ /dev/null @@ -1,14 +0,0 @@ ---- mythtv/libs/libmyth/xmlparse.cpp.orig 2007-11-30 14:03:00.000000000 -0600 -+++ mythtv/libs/libmyth/xmlparse.cpp 2007-11-30 14:06:22.000000000 -0600 -@@ -2618,6 +2618,11 @@ - area = parseRect(getFirstText(info)); - normalizeRect(area); - } -+ if (info.tagName() == "debug") -+ { -+ if (getFirstText(info) == "true") -+ container->SetDebug(true); -+ } - else if (info.tagName() == "image") - { - QString imgname = ""; diff --git a/abs/mv-core/myth/release-fixes/mythtv-release-fixes/jump_snapshot.patch b/abs/mv-core/myth/release-fixes/mythtv-release-fixes/jump_snapshot.patch deleted file mode 100644 index 2d2c68b..0000000 --- a/abs/mv-core/myth/release-fixes/mythtv-release-fixes/jump_snapshot.patch +++ /dev/null @@ -1,13 +0,0 @@ ---- libs/libmythui/mythmainwindow.cpp.orrig 2008-03-19 18:43:08.000000000 +0000 -+++ libs/libmythui/mythmainwindow.cpp 2008-03-19 18:43:51.000000000 +0000 -@@ -1132,7 +1132,9 @@ - - void MythMainWindow::JumpTo(const QString& destination, bool pop) - { -- if (d->destinationMap.count(destination) > 0 && d->exitmenucallback == NULL) -+ if (destination == "ScreenShot") -+ screenShot(); -+ else if (d->destinationMap.count(destination) > 0 && d->exitmenucallback == NULL) - { - d->exitingtomain = true; - d->popwindows = pop; diff --git a/abs/mv-core/myth/release-fixes/mythtv-release-fixes/myth.find_orphans.pl b/abs/mv-core/myth/release-fixes/mythtv-release-fixes/myth.find_orphans.pl deleted file mode 100755 index c258e1d..0000000 --- a/abs/mv-core/myth/release-fixes/mythtv-release-fixes/myth.find_orphans.pl +++ /dev/null @@ -1,260 +0,0 @@ -#!/usr/bin/perl - -# check for recording anomolies - -# based somewhat on greg froese's "myth.rebuilddatabase.pl" -# -- Lincoln Dale , September 2006 -# 2007-03-11: Added pretty print of unknown files vs. orphaned thumbnails. (Robert Kulagowski) - -# The intent of this script is to be able to find orphaned rows in the 'recorded' table -# (entries which don't have matching media files) and orphaned media files (potentially -# taking up gigabytes of otherwise usable disk space) which have no matching row in -# the 'recorded' db table. -# -# By default, running the script will simply return a list of problems it finds. -# Running with --dodbdelete will remove db recorded rows for which there is no matching -# media file. Running with --dodelete will delete media files for which there is no -# matching db record. -# -# This script may be useful to fix up some orphaned db entries (causes mythweb to run -# verrry slow) as well as reclaim some disk space from some orphaned media files. -# (in an ideal world, neither of these would ever happen, but i've seen both happen in reality). -# This script makes it easy to keep track of whether it has or hasn't happened, even if you -# have thousands of recordings and terabytes of stored media. -# -# no warranties expressed or implied. if you run this and it deletes all your recordings -# and sets mythtv to fill up all your disk space with The Home Shopping Network, its entirely -# your fault. - -my $progname = "myth.find_orphans.pl"; -my $revision = "0.20"; - -use DBI; -use Sys::Hostname; -use Getopt::Long; - -# -# options -# - -my $opt_host = hostname; -my $opt_dbhost = "localhost"; -my $opt_database = "mythconverg"; -my $opt_user = "mythtv"; -my $opt_pass = "mythtv"; -my $opt_ext = "{nuv,mpg,mpeg,avi}"; -my $opt_dir = ""; -my $opt_dodelete = 0; -my $opt_dodbdelete = 0; -my $debug = 0; -my $opt_help = 0; - -GetOptions( - 'host=s' => \$opt_host, - 'dbhost=s' => \$opt_dbhost, - 'database=s' => \$opt_database, - 'user=s' => \$opt_user, - 'pass=s' => \$opt_pass, - 'dir=s' => \$opt_dir, - 'dodelete' => \$opt_dodelete, - 'dodbdelete' => \$opt_dodbdelete, - 'debug+' => \$debug, - 'help' => \$opt_help, - 'h' => \$opt_help, - 'v' => \$opt_help); - -if ($opt_help) { - print<connect("dbi:mysql:database=$opt_database:host=$opt_dbhost","$opt_user","$opt_pass"))) { - die "Cannot connect to database $opt_database on host $opt_dbhost: $!\n"; -} - -if ($opt_dir eq "") { - &dir_lookup("SELECT dirname FROM storagegroup WHERE hostname=(?)"); - &dir_lookup("SELECT data FROM settings WHERE value='RecordFilePrefix' AND hostname=(?)"); - - printf STDERR "Recording directories ($opt_host): $opt_dir\n" if $debug; -} - -if ($opt_dir eq "") { - printf "ERROR: no directory found or specified\n"; - exit 1; -} - -foreach $d (split(/,/,$opt_dir)) { - $d =~ s/\/$//g; # strip trailing / - $dirs{$d}++; -} - - -# -# look in recorded table, make sure we can find every file .. -# - -my $q = "SELECT title, subtitle, starttime, endtime, chanid, basename FROM recorded WHERE hostname=(?) ORDER BY starttime"; -$sth = $dbh->prepare($q); -$sth->execute($opt_host) || die "Could not execute ($q): $!\n"; - -while (my @row=$sth->fetchrow_array) { - ($title, $subtitle, $starttime, $endtime, $channel, $basename) = @row; - - # see if we can find it... - $loc = find_file($basename); - if ($loc eq "") { - printf "Missing media: %s (title:%s, start:%s)\n",$basename,$title,$starttime; - $missing_recordings++; - - if ($opt_dodbdelete) { - my $sql = sprintf "DELETE FROM recorded WHERE basename LIKE \"%s\" LIMIT 1",$basename; - printf "performing database delete: %s\n",$sql; - $dbh->do($sql) || die "Could not execute $sql: $!\n"; - } - } else { - $valid_recordings++; - $seen_basename{$basename}++; - $seen_basename{$basename.".png"}++; # thumbnail - } -} - -# -# look in recording directories, see if there are extra files not in database -# - -foreach my $this_dir (keys %dirs) { - opendir(DIR, $this_dir) || die "cannot open directory $this_dir: $!\n"; - foreach $this_file (readdir(DIR)) { - if (-f "$this_dir/$this_file") { - - next if ($this_file eq "nfslockfile.lock"); - next if ($this_file =~ m/^mythconv.*/); - next if ($this_dir eq "/data/database_backup"); - - my $this_filesize = -s "$this_dir/$this_file"; - if ($seen_basename{$this_file} == 0) { - $sorted_filesizes{$this_filesize} .= sprintf "unknown file [%s]: %s/%s\n",pretty_filesize($this_filesize),$this_dir,$this_file; - $unknown_size += $this_filesize; - if (substr($this_file,-4) eq ".png") { - $unknown_thumbnail++; - } - else { - $unknown_files++; - } - - if ($opt_dodelete) { - printf STDERR "deleting [%s]: %s/%s\n",pretty_filesize($this_filesize),$this_dir,$this_file; - unlink "$this_dir/$this_file"; - - if (-f "$this_dir/$this_file") { - $errors++; - printf "ERROR: could not delete $this_dir/$this_file\n"; - } - } - } else { - $known_files++; - $known_size += $this_filesize; - printf "KNOWN file [%s]: %s/%s\n",pretty_filesize($this_filesize),$this_dir,$this_file if $debug; - } - } else { - printf "NOT A FILE: %s/%s\n",$this_dir,$this_file if $debug; - } - } - closedir DIR; -} - - -# -# finished, report results -# - -foreach my $key (sort { $a <=> $b } keys %sorted_filesizes) { - printf $sorted_filesizes{$key}; -} - -printf "Summary:\n"; -printf " Host: %s, Directories: %s\n", $opt_host, join(" ",keys %dirs); -printf " %d ERRORS ENCOUNTERED (see above for details)\n",$errors if ($errors > 0); -printf " %d valid recording%s, %d missing recording%s %s\n", - $valid_recordings, ($valid_recordings != 1 ? "s" : ""), - $missing_recordings, ($missing_recordings != 1 ? "s" : ""), - ($missing_recordings > 0 ? ($opt_dodbdelete ? "were fixed" : "not fixed, check above is valid and use --dodbdelete to fix") : ""); -printf " %d known media files using %s\n %d orphaned thumbnails with no corresponding recording\n %d unknown files using %s %s\n", - $known_files, pretty_filesize($known_size), - $unknown_thumbnail,$unknown_files, pretty_filesize($unknown_size), - ($unknown_files > 0 ? ($opt_dodelete ? "were fixed" : "not fixed, check above and use --dodelete to clean up if the above output is accurate") : ""); - -exit(0); - -########################################################################### -# filesize bling - -sub pretty_filesize -{ - local($fsize) = @_; - return sprintf "%0.1fGB",($fsize / 1000000000) if ($fsize >= 1000000000); - return sprintf "%0.1fMB",($fsize / 1000000) if ($fsize >= 1000000); - return sprintf "%0.1fKB",($fsize / 1000) if ($fsize >= 1000); - return sprintf "%0.0fB",$fsize; -} - -########################################################################### -# find a file in directories without globbing - -sub find_file -{ - local($fname) = @_; - - foreach my $d (keys %dirs) { - my $f = $d."/".$fname; - if (-e $f) { - return $f; - } - } - return; -} - -########################################################################### - -sub dir_lookup -{ - my $query = shift; - - $sth = $dbh->prepare($query); - $sth->execute($opt_host) || die "Could not execute ($dir_query)"; - while (my @row = $sth->fetchrow_array) { - $opt_dir .= "," if ($opt_dir ne ""); - $opt_dir .= $row[0]; - } -} - -########################################################################### diff --git a/abs/mv-core/myth/release-fixes/mythtv-release-fixes/myth.sh b/abs/mv-core/myth/release-fixes/mythtv-release-fixes/myth.sh deleted file mode 100755 index fb7122c..0000000 --- a/abs/mv-core/myth/release-fixes/mythtv-release-fixes/myth.sh +++ /dev/null @@ -1,4 +0,0 @@ -export PATH=$PATH:/usr/local/bin -# set core file size to 0 -ulimit -c 0 -export MALLOC_CHECK_=0 \ No newline at end of file diff --git a/abs/mv-core/myth/release-fixes/mythtv-release-fixes/mythbackend b/abs/mv-core/myth/release-fixes/mythtv-release-fixes/mythbackend deleted file mode 100755 index f96c6b7..0000000 --- a/abs/mv-core/myth/release-fixes/mythtv-release-fixes/mythbackend +++ /dev/null @@ -1,37 +0,0 @@ -#!/bin/bash - -. /etc/rc.conf -. /etc/rc.d/functions - -PID=`pidof -o %PPID /usr/bin/mythbackend` -case "$1" in - start) - stat_busy "Starting MythTV Backend" - [ ! -e /var/run/mysqld.pid ] && echo -n "mysqld not started" && stat_fail && exit - [ -z "$PID" ] && /usr/local/bin/mythbackend -d -l /var/log/mythbackend.log -v quiet - if [ $? -gt 0 ]; then - stat_fail - else - echo $PID > /var/run/mythbackend.pid - add_daemon mythbackend - stat_done - fi - ;; - stop) - stat_busy "Stopping MythTV Backend" - [ ! -z "$PID" ] && kill $PID &>/dev/null - if [ $? -gt 0 ]; then - stat_fail - else - rm_daemon mythbackend - stat_done - fi - ;; - restart) - $0 stop - $0 start - ;; - *) - echo "usage: $0 {start|stop|restart}" -esac -exit 0 diff --git a/abs/mv-core/myth/release-fixes/mythtv-release-fixes/mythbackend.sh b/abs/mv-core/myth/release-fixes/mythtv-release-fixes/mythbackend.sh deleted file mode 100755 index e7a7b70..0000000 --- a/abs/mv-core/myth/release-fixes/mythtv-release-fixes/mythbackend.sh +++ /dev/null @@ -1,117 +0,0 @@ -#!/bin/bash -# -# /etc/rc.d/init.d/mythbackend -# -# Starts the mythbackend as a daemon -# -# chkconfig: 345 90 10 -# description: Starts the mythbackend process as a daemon after the XWindows \ -# system is started, in runlevel 5. This allows scheduled \ -# recordings to occur without manual intervention. -# processname: mythbackend - -# Copyright (c) by Michael Thomson -# With thanks to Stu Tomlinson -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - -# Default values to use if none are supplied in the config file. -# User who should start the mythbackend processes -MBE_USER="root" -# Directory holding the mythbackend binary -MBE_LOCATION="/usr/local/bin/" -# Name of mythbackend binary -MBE_PROG="mythbackend" -# Full path to mythbackend log file -MBE_LOGFILE="/var/log/mythtv/mythbackend.log" - -# Source function library. -. /etc/init.d/functions - -# Source config file if available -if [ -f "/etc/sysconfig/mythbackend" ]; then - . /etc/sysconfig/mythbackend -fi - -test -x ${MBE_LOCATION}${MBE_PROG} || exit 0 - -RETVAL=0 - -# -# See how we were called. -# - -start() { - # Check if mythbackend is already running - if [ ! -f /var/lock/subsys/${MBE_PROG} ]; then - echo -n "Starting ${MBE_PROG}: " - # /usr/local/bin/mythbackend -d -l /some/log/file - #daemon --user ${MBE_USER} ${MBE_LOCATION}${MBE_PROG} -d -l ${MBE_LOGFILE} - ${MBE_LOCATION}${MBE_PROG} -d -l ${MBE_LOGFILE} - RETVAL=$? - [ $RETVAL -eq 0 ] && touch /var/lock/subsys/${MBE_PROG} - echo - fi - return $RETVAL -} - -stop() { - echo -n "Stopping ${MBE_PROG}: " - killproc ${MBE_LOCATION}${MBE_PROG} - RETVAL=$? - [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/${MBE_PROG} - echo - return $RETVAL -} - - -restart() { - stop - start -} - -reload() { - restart -} - -status_at() { - status ${MBE_LOCATION}${MBE_PROG} -} - -case "$1" in -start) - start - ;; -stop) - stop - ;; -reload|restart) - restart - ;; -condrestart) - if [ -f /var/lock/subsys/${MBE_PROG} ]; then - restart - fi - ;; -status) - status_at - ;; -*) - echo "Usage: $0 {start|stop|restart|condrestart|status}" - exit 1 -esac - -exit $? -exit $RETVAL diff --git a/abs/mv-core/myth/release-fixes/mythtv-release-fixes/myththemedmenu.cpp.patch b/abs/mv-core/myth/release-fixes/mythtv-release-fixes/myththemedmenu.cpp.patch deleted file mode 100644 index f5baccd..0000000 --- a/abs/mv-core/myth/release-fixes/mythtv-release-fixes/myththemedmenu.cpp.patch +++ /dev/null @@ -1,125 +0,0 @@ ---- libs/libmythui/myththemedmenu.cpp.orig 2008-01-31 15:26:38.000000000 +0000 -+++ libs/libmythui/myththemedmenu.cpp 2008-02-07 22:24:27.000000000 +0000 -@@ -2102,6 +2102,10 @@ - } - lastbutton = NULL; - } -+ else if (action == "MENU") -+ { -+ parent->doMenu(); -+ } - else if (action == "EJECT") - { - myth_eject(); -@@ -2482,6 +2486,8 @@ - - if (d->foundtheme) - d->parseMenu(menufile); -+ -+ m_menuPopup = NULL; - } - - MythThemedMenu::~MythThemedMenu(void) -@@ -2592,3 +2598,102 @@ - MythScreenType::aboutToShow(); - d->updateLCD(); - } -+void MythThemedMenu::doMenu() -+{ -+ int allowsd = gContext->GetNumSetting("AllowQuitShutdown"); -+ if (m_menuPopup) -+ return; -+ QString label = "System Menu"; -+ MythScreenStack *mainStack = GetMythMainWindow()->GetMainStack(); -+ m_menuPopup = new MythDialogBox(label, mainStack, "menuPopup"); -+ if (m_menuPopup->Create()) -+ mainStack->AddScreen(m_menuPopup); -+ -+ -+ if ( allowsd != 0 && allowsd !=4 ) -+ { -+ m_menuPopup->SetReturnEvent(this,"popmenu_exit"); -+ m_menuPopup->AddButton("Shutdown"); -+ m_menuPopup->AddButton("Reboot"); -+ m_menuPopup->AddButton("About"); -+ m_menuPopup->AddButton("Cancel"); -+ } -+ else -+ { -+ m_menuPopup->SetReturnEvent(this,"popmenu_noexit"); -+ m_menuPopup->AddButton("About"); -+ m_menuPopup->AddButton("Cancel"); -+ } -+} -+ -+void MythThemedMenu::aboutScreen() -+{ -+{ -+ extern const char *myth_source_version; -+ extern const char *myth_source_path; -+ QString distro_line; -+ distro_line=""; -+ -+ QFile file("/etc/os_myth_release"); -+ if ( file.open(IO_ReadOnly | IO_Translate) ) -+ { -+ QTextStream t( &file ); // use a text stream -+ distro_line = t.readLine(); -+ file.close(); -+ } -+ -+ QString label = ""; -+ label.append(QObject::tr("Revision: ") + myth_source_version + " \n Branch:" + myth_source_path + "\n" + distro_line ); -+ -+ MythScreenStack *mainStack = GetMythMainWindow()->GetMainStack(); -+ m_menuPopup = new MythDialogBox(label, mainStack, "About"); -+ if (m_menuPopup->Create()) -+ mainStack->AddScreen(m_menuPopup); -+ -+ m_menuPopup->SetReturnEvent(this,"About"); -+ m_menuPopup->AddButton("OK!"); -+ } -+} -+ -+void MythThemedMenu::customEvent(QCustomEvent *event) -+{ -+ if (event->type() == kMythDialogBoxCompletionEventType) -+ { -+ DialogCompletionEvent *dce = -+ dynamic_cast(event); -+ -+ QString resultid= dce->GetId(); -+ int buttonnum = dce->GetResult(); -+ if (resultid == "popmenu_exit") -+ { -+ if (buttonnum == 0) -+ { -+ QString halt_cmd = gContext->GetSetting("HaltCommand", -+ "sudo /sbin/halt -p"); -+ if (!halt_cmd.isEmpty()) -+ system(halt_cmd.ascii()); -+ } -+ -+ if (buttonnum == 1) -+ { -+ QString reboot_cmd = gContext->GetSetting("RebootCommand", -+ "sudo /sbin/reboot"); -+ if (!reboot_cmd.isEmpty()) -+ system(reboot_cmd.ascii()); -+ } -+ -+ if (buttonnum == 2) -+ { -+ aboutScreen(); -+ } -+ } -+ -+ if (resultid == "popmenu_noexit") -+ { -+ if (buttonnum == 0) -+ aboutScreen(); -+ } -+ -+ m_menuPopup = NULL; -+ } -+} diff --git a/abs/mv-core/myth/release-fixes/mythtv-release-fixes/myththemedmenu.h.patch b/abs/mv-core/myth/release-fixes/mythtv-release-fixes/myththemedmenu.h.patch deleted file mode 100644 index 9744b11..0000000 --- a/abs/mv-core/myth/release-fixes/mythtv-release-fixes/myththemedmenu.h.patch +++ /dev/null @@ -1,25 +0,0 @@ ---- libs/libmythui/myththemedmenu.h.orig 2008-01-31 15:26:45.000000000 +0000 -+++ libs/libmythui/myththemedmenu.h 2008-02-07 21:00:22.000000000 +0000 -@@ -2,6 +2,7 @@ - #define MYTHTHEMEDMENU_H_ - - #include "mythscreentype.h" -+#include "mythdialogbox.h" - - class MythMainWindow; - class MythThemedMenuPrivate; -@@ -26,8 +27,14 @@ - - void ReloadTheme(void); - void ReloadExitKey(void); -+ - virtual void aboutToShow(void); - -+ void doMenu(); -+ void aboutScreen(); -+ MythDialogBox *m_menuPopup; -+ void customEvent(QCustomEvent *event); -+ - protected: - virtual bool keyPressEvent(QKeyEvent *e); - virtual void gestureEvent(MythUIType *origtype, MythGestureEvent *ge); diff --git a/abs/mv-core/myth/release-fixes/mythtv-release-fixes/mythtv.install b/abs/mv-core/myth/release-fixes/mythtv-release-fixes/mythtv.install deleted file mode 100755 index 2c87aee..0000000 --- a/abs/mv-core/myth/release-fixes/mythtv-release-fixes/mythtv.install +++ /dev/null @@ -1,59 +0,0 @@ - -# arg 1: the new package version -pre_install () { - echo "backing up the database" - dbver=`pacman -Q mythtv-release-fixes | awk ' { print $2 } '` - if [ ! -e /data/databases_backup ] - then - mkdir -p /data/database_backup - fi - mysqldump -u mythtv -pmythtv mythconverg -c > /data/database_backup/${dbver}.dump.sql -} - -post_install() { - mkdir -p /data/home - /usr/sbin/useradd -G users,video,audio,optical -m -d /data/home/mythtv mythtv - /usr/sbin/usermod -G users,video,audio,optical mythtv -# mkdir /var/log/mythtv -# chown -R mythtv:users /var/log/mythtv - dbver=`pacman -Q mythtv-release-fixes | awk ' { print $2 } '` - if [ ! -e /data/database_backup ] - then - mkdir -p /data/database_backup - fi - chown mythtv:nobody /data/database_backup - chmod g+s /data/database_backup - - mysqldump -u mythtv -pmythtv mythconverg -c > /data/database_backup/${dbver}.dump.sql - grep -q /usr/local/lib /etc/ld.so.conf - if [ $? = 1 ] - then - echo "/usr/local/lib" >> /etc/ld.so.conf - fi - -} -pre_upgrade () { - pre_install -} - -# arg 1: the new package version -# arg 2: the old package version -post_upgrade() { - post_install - - /bin/true -} - -# arg 1: the old package version -pre_remove() { - /bin/true -} - -# arg 1: the old package version -post_remove() { -/bint/true -} - -op=$1 -shift -$op $* diff --git a/abs/mv-core/myth/release-fixes/mythtv-release-fixes/pop_be_restart.cpp.patch b/abs/mv-core/myth/release-fixes/mythtv-release-fixes/pop_be_restart.cpp.patch deleted file mode 100644 index a7a5326..0000000 --- a/abs/mv-core/myth/release-fixes/mythtv-release-fixes/pop_be_restart.cpp.patch +++ /dev/null @@ -1,51 +0,0 @@ ---- libs/libmythui/myththemedmenu.cpp.orig 2008-03-17 15:54:00.000000000 -0500 -+++ libs/libmythui/myththemedmenu.cpp 2008-03-17 15:54:09.000000000 -0500 -@@ -2615,12 +2615,14 @@ - m_menuPopup->SetReturnEvent(this,"popmenu_exit"); - m_menuPopup->AddButton("Shutdown"); - m_menuPopup->AddButton("Reboot"); -+ m_menuPopup->AddButton("MythBackend restart"); - m_menuPopup->AddButton("About"); - m_menuPopup->AddButton("Cancel"); - } - else - { - m_menuPopup->SetReturnEvent(this,"popmenu_noexit"); -+ m_menuPopup->AddButton("MythBackend restart"); - m_menuPopup->AddButton("About"); - m_menuPopup->AddButton("Cancel"); - } -@@ -2655,6 +2657,11 @@ - } - } - -+void MythThemedMenu::Restartmythbackend() -+{ -+ system("/usr/MythVantage/bin/mythbeselect -restart"); -+} -+ - void MythThemedMenu::customEvent(QCustomEvent *event) - { - if (event->type() == kMythDialogBoxCompletionEventType) -@@ -2684,6 +2691,10 @@ - - if (buttonnum == 2) - { -+ Restartmythbackend(); -+ } -+ if (buttonnum == 3) -+ { - aboutScreen(); - } - } -@@ -2691,6 +2702,10 @@ - if (resultid == "popmenu_noexit") - { - if (buttonnum == 0) -+ { -+ Restartmythbackend(); -+ } -+ if (buttonnum == 1) - aboutScreen(); - } - diff --git a/abs/mv-core/myth/release-fixes/mythtv-release-fixes/pop_be_restart.h.patch b/abs/mv-core/myth/release-fixes/mythtv-release-fixes/pop_be_restart.h.patch deleted file mode 100644 index 1fba435..0000000 --- a/abs/mv-core/myth/release-fixes/mythtv-release-fixes/pop_be_restart.h.patch +++ /dev/null @@ -1,10 +0,0 @@ ---- libs/libmythui/myththemedmenu.h.orig 2008-03-17 15:48:28.000000000 -0500 -+++ libs/libmythui/myththemedmenu.h 2008-03-17 15:48:30.000000000 -0500 -@@ -32,6 +32,7 @@ - - void doMenu(); - void aboutScreen(); -+ void Restartmythbackend(); - MythDialogBox *m_menuPopup; - void customEvent(QCustomEvent *event); - diff --git a/abs/mv-core/myth/release-fixes/mythtv-release-fixes/reload.patch b/abs/mv-core/myth/release-fixes/mythtv-release-fixes/reload.patch deleted file mode 100644 index 9cc2044..0000000 --- a/abs/mv-core/myth/release-fixes/mythtv-release-fixes/reload.patch +++ /dev/null @@ -1,52 +0,0 @@ ---- programs/mythfrontend/main.cpp 2007-11-13 15:34:40.000000000 +0000 -+++ programs/mythfrontend/main.cpp.new 2007-11-13 15:36:15.000000000 +0000 -@@ -72,6 +72,9 @@ - RunProgramGuide(chanid, channum); - } - -+ -+ -+ - void startFinder(void) - { - RunProgramFind(); -@@ -761,6 +764,7 @@ - } - } - -+ - void InitJumpPoints(void) - { - REG_JUMP("Reload Theme", "", "", reloadTheme); -@@ -784,6 +788,17 @@ - TV::SetEmbedPbbFunc(PlaybackBox::RunPlaybackBox); - } - -+ -+void signal_USR1_handler(int){ -+ VERBOSE(VB_GENERAL, "SIG USR1 received, reloading theme"); -+ RemoteSendMessage("CLEAR_SETTINGS_CACHE"); -+ gContext->ActivateSettingsCache(false); -+ qApp->processEvents(); -+ GetMythMainWindow()->JumpTo("Reload Theme"); -+ gContext->removeCurrentLocation(); -+ gContext->ActivateSettingsCache(true); -+} -+ - int internal_media_init() - { - REG_MEDIAPLAYER("Internal", "MythTV's native media player.", -@@ -1411,7 +1426,12 @@ - - if (!RunMenu(themedir)) - break; -- -+ struct sigaction new_action, old_action; -+ /* Set up the structure to specify the new action. */ -+ new_action.sa_handler = signal_USR1_handler; -+ ::sigemptyset(&new_action.sa_mask); -+ new_action.sa_flags = 0; -+ ::sigaction (SIGUSR1, &new_action, &old_action); - qApp->setMainWidget(mainWindow); - qApp->exec(); - } while (!(exitstatus = handleExit())); diff --git a/abs/mv-core/myth/release-fixes/mythtv-release-fixes/screenshot_jump.patch b/abs/mv-core/myth/release-fixes/mythtv-release-fixes/screenshot_jump.patch deleted file mode 100644 index 8a5dee4..0000000 --- a/abs/mv-core/myth/release-fixes/mythtv-release-fixes/screenshot_jump.patch +++ /dev/null @@ -1,10 +0,0 @@ ---- programs/mythfrontend/networkcontrol.cpp.orig 2008-03-16 23:31:05.000000000 +0000 -+++ programs/mythfrontend/networkcontrol.cpp 2008-03-16 23:32:01.000000000 +0000 -@@ -80,6 +80,7 @@ - jumpMap["zoneminderconsole"] = "ZoneMinder Console"; - jumpMap["zoneminderliveview"] = "ZoneMinder Live View"; - jumpMap["zoneminderevents"] = "ZoneMinder Events"; -+ jumpMap["snapshot"] = "ScreenShot"; - - // These jump point names match the (lowercased) locations from gContext - jumpMap["channelrecpriority"] = "Channel Recording Priorities"; diff --git a/abs/mv-core/myth/release-fixes/mythtv-release-fixes/screenshots.diff b/abs/mv-core/myth/release-fixes/mythtv-release-fixes/screenshots.diff deleted file mode 100644 index 2b5dabe..0000000 --- a/abs/mv-core/myth/release-fixes/mythtv-release-fixes/screenshots.diff +++ /dev/null @@ -1,458 +0,0 @@ -Index: libs/libmythui/mythmainwindow.cpp -=================================================================== ---- libs/libmythui/mythmainwindow.cpp (revision 15827) -+++ libs/libmythui/mythmainwindow.cpp (working copy) -@@ -504,6 +507,81 @@ - d->repaintRegion = d->repaintRegion.unite(pe->region()); - } - -+bool MythMainWindow::screenShot(QString fname, int x, int y, int x2, int y2, int w, int h) -+{ -+ bool ret = false; -+ -+ QString extension = fname.section('.', -1, -2); -+ -+ if (extension == "jpg") -+ extension = "JPEG"; -+ else -+ extension = "PNG"; -+ -+ VERBOSE(VB_GENERAL, QString("MythMainWindow::screenShot saving winId %1 to %2 (%3 x %4) [ %5/%6 - %7/%8]") -+ .arg(QApplication::desktop()->winId()) -+ .arg(fname) -+ .arg(w) -+ .arg(h) -+ .arg(x) -+ .arg(y) -+ .arg(x2) -+ .arg(y2)); -+ -+ QPixmap p; -+ p = QPixmap::grabWindow( QApplication::desktop()->winId(), x, y, x2, y2); -+ -+ QImage img = p.convertToImage(); -+ -+ if ( w == 0 ) -+ w = img.width(); -+ -+ if ( h == 0 ) -+ h = img.height(); -+ -+ VERBOSE(VB_GENERAL, QString("Scaling to %1 x %2 from %3 x %4") -+ .arg(w) -+ .arg(h) -+ .arg(img.width()) -+ .arg(img.height())); -+ -+ img = img.smoothScale( w, h , QImage::ScaleMin); -+ -+ if (img.save(fname ,extension)) -+ { -+ VERBOSE(VB_GENERAL, "MythMainWindow::screenShot succeeded"); -+ ret = true; -+ } -+ else -+ { -+ VERBOSE(VB_GENERAL, "MythMainWindow::screenShot Failed!"); -+ ret = false; -+ } -+ -+ return ret; -+} -+ -+bool MythMainWindow::screenShot(int x, int y, int x2, int y2) -+{ -+ QString fPath = gContext->GetSetting("ScreenShotPath","/tmp/"); -+ QString fName = QString("/%1/myth-screenshot-%2.png") -+ .arg(gContext->GetSetting("ScreenShotPath","/tmp/")) -+ .arg(QDateTime::currentDateTime().toString("yyyy-mm-ddThh-mm-ss.zzz")); -+ -+ return screenShot(fName, x, y, x2, y2, 0, 0); -+} -+ -+bool MythMainWindow::screenShot(QString fname, int w, int h) -+{ -+ return screenShot(fname, 0, 0, -1, -1, w, h); -+} -+ -+ -+bool MythMainWindow::screenShot(void) -+{ -+ return screenShot(0,0,-1,-1); -+} -+ - #ifdef USING_APPLEREMOTE - // This may be possible via installEventFilter() instead? - -Index: libs/libmythui/mythmainwindow.h -=================================================================== ---- libs/libmythui/mythmainwindow.h (revision 15827) -+++ libs/libmythui/mythmainwindow.h (working copy) -@@ -101,6 +101,11 @@ - - MythPainter *GetCurrentPainter(); - -+ bool screenShot(QString fname, int x, int y, int x2, int y2, int w, int h); -+ bool screenShot(int x, int y, int x2, int y2); -+ bool screenShot(QString fname, int w, int h); -+ bool screenShot(void); -+ - void AllowInput(bool allow); - - QRect GetUIScreenRect(); -Index: programs/mythfrontend/mediarenderer.cpp -=================================================================== ---- programs/mythfrontend/mediarenderer.cpp (revision 15827) -+++ programs/mythfrontend/mediarenderer.cpp (working copy) -@@ -9,6 +9,7 @@ - ///////////////////////////////////////////////////////////////////////////// - - #include "mediarenderer.h" -+#include "mythfexml.h" - #include "compat.h" - - ///////////////////////////////////////////////////////////////////////////// -@@ -85,6 +86,11 @@ - "http-get:*:video/mpeg:*," - "http-get:*:video/nupplevideo:*," - "http-get:*:video/x-ms-wmv:*"; -+ // ------------------------------------------------------------------ -+ // Register the MythFEXML protocol... -+ // ------------------------------------------------------------------ -+ VERBOSE(VB_UPNP, "MediaRenderer::Registering MythFEXML Service." ); -+ m_pHttpServer->RegisterExtension( new MythFEXML( RootDevice() )); - - // VERBOSE(VB_UPNP, QString( "MediaRenderer::Registering AVTransport Service." )); - // m_pHttpServer->RegisterExtension( m_pUPnpAVT = new UPnpAVTransport( RootDevice() )); -Index: programs/mythfrontend/MFEXML_scpd.xml -=================================================================== ---- programs/mythfrontend/MFEXML_scpd.xml (revision 0) -+++ programs/mythfrontend/MFEXML_scpd.xml (revision 0) -@@ -0,0 +1,34 @@ -+ -+ -+ -+ 1 -+ 0 -+ -+ -+ -+ GetScreenShot -+ -+ -+ Height -+ in -+ A_ARG_TYPE_Height -+ -+ -+ Width -+ in -+ A_ARG_TYPE_Width -+ -+ -+ -+ -+ -+ -+ A_ARG_TYPE_Height -+ i2 -+ -+ -+ A_ARG_TYPE_Width -+ i2 -+ -+ -+ -Index: programs/mythfrontend/globalsettings.cpp -=================================================================== ---- programs/mythfrontend/globalsettings.cpp (revision 15827) -+++ programs/mythfrontend/globalsettings.cpp (working copy) -@@ -2182,6 +2182,15 @@ - return ge; - } - -+static HostLineEdit *ScreenShotPath() -+{ -+ HostLineEdit *ge = new HostLineEdit("ScreenShotPath"); -+ ge->setLabel(QObject::tr("ScreenShotPath")); -+ ge->setValue(""); -+ ge->setHelpText(QObject::tr("Path to screenshot storage location. Should be writable by the frontend")); -+ return ge; -+} -+ - static HostCheckBox *UseArrowAccels() - { - HostCheckBox *gc = new HostCheckBox("UseArrowAccels"); -@@ -4455,6 +4464,7 @@ - MythMediaSettings *mediaMon = new MythMediaSettings(); - - general->addChild(LircKeyPressedApp()); -+ general->addChild(ScreenShotPath()); - general->addChild(row); - general->addChild(NetworkControlPort()); - general->addChild(mediaMon); -Index: programs/mythfrontend/mythfexml.h -=================================================================== ---- programs/mythfrontend/mythfexml.h (revision 0) -+++ programs/mythfrontend/mythfexml.h (revision 0) -@@ -0,0 +1,66 @@ -+////////////////////////////////////////////////////////////////////////////// -+// Program Name: mythxml.h -+// -+// Purpose - Myth Frontend XML protocol HttpServerExtension -+// -+////////////////////////////////////////////////////////////////////////////// -+ -+#ifndef MYTHFEXML_H_ -+#define MYTHFEXML_H_ -+ -+#include -+#include -+ -+#include "upnp.h" -+#include "eventing.h" -+#include "mythcontext.h" -+ -+typedef enum -+{ -+ MFEXML_Unknown = 0, -+ MFEXML_GetScreenShot = 1 -+ -+} MythFEXMLMethod; -+ -+class MythFEXML : public Eventing -+{ -+ private: -+ -+ QString m_sControlUrl; -+ QString m_sServiceDescFileName; -+ -+ protected: -+ -+ // Implement UPnpServiceImpl methods that we can -+ -+ virtual QString GetServiceType () { return "urn:schemas-mythtv-org:service:MythTv:1"; } -+ virtual QString GetServiceId () { return "urn:mythtv-org:serviceId:MYTHTV_1-0"; } -+ virtual QString GetServiceControlURL() { return m_sControlUrl.mid( 1 ); } -+ virtual QString GetServiceDescURL () { return m_sControlUrl.mid( 1 ) + "/GetServDesc"; } -+ -+ private: -+ -+ MythFEXMLMethod GetMethod( const QString &sURI ); -+ -+ void GetScreenShot ( HTTPRequest *pRequest ); -+ -+ public: -+ MythFEXML( UPnpDevice *pDevice ); -+ virtual ~MythFEXML(); -+ -+ bool ProcessRequest( HttpWorkerThread *pThread, HTTPRequest *pRequest ); -+ -+ // Static methods shared with HttpStatus -+ -+}; -+ -+///////////////////////////////////////////////////////////////////////////// -+///////////////////////////////////////////////////////////////////////////// -+// -+// -+// -+///////////////////////////////////////////////////////////////////////////// -+///////////////////////////////////////////////////////////////////////////// -+#endif -+ -+ -Index: programs/mythfrontend/main.cpp -=================================================================== ---- programs/mythfrontend/main.cpp (revision 15827) -+++ programs/mythfrontend/main.cpp (working copy) -@@ -799,6 +799,11 @@ - } - } - -+void getScreenShot(void) -+{ -+ (void) gContext->GetMainWindow()->screenShot(); -+} -+ - void InitJumpPoints(void) - { - REG_JUMP("Reload Theme", "", "", reloadTheme); -@@ -817,6 +822,8 @@ - REG_JUMP("Status Screen", "", "", showStatus); - REG_JUMP("Previously Recorded", "", "", startPrevious); - -+ REG_JUMPEX("ScreenShot","","",getScreenShot,false); -+ - REG_KEY("qt", "DELETE", "Delete", "D"); - REG_KEY("qt", "EDIT", "Edit", "E"); - -Index: programs/mythfrontend/mythfrontend.pro -=================================================================== ---- programs/mythfrontend/mythfrontend.pro (revision 15827) -+++ programs/mythfrontend/mythfrontend.pro (working copy) -@@ -15,7 +15,7 @@ - setting.files += util_menu.xml info_settings.xml main_settings.xml - setting.files += recpriorities_settings.xml tv_search.xml tv_lists.xml - setting.files += library.xml manage_recordings.xml optical_menu.xml tvmenu.xml --setting.files += tv_settings.xml -+setting.files += tv_settings.xml MFEXML_scpd.xml - setting.extra = -ldconfig - - INSTALLS += setting -@@ -26,13 +26,13 @@ - HEADERS += manualbox.h playbackbox.h viewscheduled.h globalsettings.h - HEADERS += manualschedule.h programrecpriority.h channelrecpriority.h - HEADERS += statusbox.h networkcontrol.h custompriority.h --HEADERS += mediarenderer.h -+HEADERS += mediarenderer.h mythfexml.h - HEADERS += mythappearance.h - - SOURCES += main.cpp manualbox.cpp playbackbox.cpp viewscheduled.cpp - SOURCES += globalsettings.cpp manualschedule.cpp programrecpriority.cpp - SOURCES += channelrecpriority.cpp statusbox.cpp networkcontrol.cpp --SOURCES += mediarenderer.cpp -+SOURCES += mediarenderer.cpp mythfexml.cpp - SOURCES += custompriority.cpp - SOURCES += mythappearance.cpp - -Index: programs/mythfrontend/mythfexml.cpp -=================================================================== ---- programs/mythfrontend/mythfexml.cpp (revision 0) -+++ programs/mythfrontend/mythfexml.cpp (revision 0) -@@ -0,0 +1,135 @@ -+////////////////////////////////////////////////////////////////////////////// -+// Program Name: MythXML.cpp -+// -+// Purpose - Html & XML status HttpServerExtension -+// -+// Created By : David Blain Created On : Oct. 24, 2005 -+// Modified By : Daniel Kristjansson Modified On: Oct. 31, 2007 -+// -+////////////////////////////////////////////////////////////////////////////// -+ -+#include "mythfexml.h" -+ -+#include "libmyth/mythcontext.h" -+#include "libmyth/util.h" -+#include "libmyth/mythdbcon.h" -+ -+#include "mythmainwindow.h" -+ -+#include -+#include -+#include -+#include -+#include -+#include -+ -+#include "../../config.h" -+ -+///////////////////////////////////////////////////////////////////////////// -+// -+///////////////////////////////////////////////////////////////////////////// -+ -+MythFEXML::MythFEXML( UPnpDevice *pDevice ) : Eventing( "MythFEXML", "MYTHTV_Event" ) -+{ -+ -+ QString sUPnpDescPath = UPnp::g_pConfig->GetValue( "UPnP/DescXmlPath", m_sSharePath ); -+ -+ m_sServiceDescFileName = sUPnpDescPath + "MFEXML_scpd.xml"; -+ m_sControlUrl = "/MythFE"; -+ -+ // Add our Service Definition to the device. -+ -+ RegisterService( pDevice ); -+} -+ -+///////////////////////////////////////////////////////////////////////////// -+// -+///////////////////////////////////////////////////////////////////////////// -+ -+MythFEXML::~MythFEXML() -+{ -+} -+ -+///////////////////////////////////////////////////////////////////////////// -+// -+///////////////////////////////////////////////////////////////////////////// -+ -+MythFEXMLMethod MythFEXML::GetMethod( const QString &sURI ) -+{ -+ if (sURI == "GetScreenShot" ) return MFEXML_GetScreenShot; -+ -+ return( MFEXML_Unknown ); -+} -+ -+///////////////////////////////////////////////////////////////////////////// -+// -+///////////////////////////////////////////////////////////////////////////// -+ -+bool MythFEXML::ProcessRequest( HttpWorkerThread *pThread, HTTPRequest *pRequest ) -+{ -+ try -+ { -+ if (pRequest) -+ { -+ if (pRequest->m_sBaseUrl != m_sControlUrl) -+ return( false ); -+ -+ VERBOSE(VB_UPNP, QString("MythFEXML::ProcessRequest: %1 : %2") -+ .arg(pRequest->m_sMethod) -+ .arg(pRequest->m_sRawRequest)); -+ -+ switch( GetMethod( pRequest->m_sMethod )) -+ { -+ case MFEXML_GetScreenShot : GetScreenShot ( pRequest ); return true; -+ -+ -+ default: -+ { -+ UPnp::FormatErrorResponse( pRequest, UPnPResult_InvalidAction ); -+ -+ return true; -+ } -+ } -+ } -+ } -+ catch( ... ) -+ { -+ VERBOSE( VB_IMPORTANT, "MythFEXML::ProcessRequest() - Unexpected Exception" ); -+ } -+ -+ return( false ); -+} -+ -+// ========================================================================== -+// Request handler Methods -+// ========================================================================== -+ -+///////////////////////////////////////////////////////////////////////////// -+// -+///////////////////////////////////////////////////////////////////////////// -+ -+void MythFEXML::GetScreenShot( HTTPRequest *pRequest ) -+{ -+ bool bDefaultPixmap = false; -+ -+ pRequest->m_eResponseType = ResponseTypeFile; -+ -+ // Optional Parameters -+ -+ int nWidth = pRequest->m_mapParams[ "Width" ].toInt(); -+ int nHeight = pRequest->m_mapParams[ "Height" ].toInt(); -+ -+ // Read Icon file path from database -+ -+ QString sFileName = "/tmp/moo.jpg"; -+ -+ -+ if (!gContext->GetMainWindow()->screenShot(sFileName,nWidth, nHeight)) -+ { -+ VERBOSE(VB_GENERAL, "MythFEXML: Failed to take screenshot. Aborting"); -+ return; -+ } -+ -+ pRequest->m_sFileName = sFileName; -+} -+ diff --git a/abs/mv-core/myth/release-fixes/mythtv-release-fixes/screenshots2.diff b/abs/mv-core/myth/release-fixes/mythtv-release-fixes/screenshots2.diff deleted file mode 100644 index 64ce08c..0000000 --- a/abs/mv-core/myth/release-fixes/mythtv-release-fixes/screenshots2.diff +++ /dev/null @@ -1,467 +0,0 @@ -Index: libs/libmythui/mythmainwindow.cpp -=================================================================== ---- libs/libmythui/mythmainwindow.cpp (revision 16103) -+++ libs/libmythui/mythmainwindow.cpp (working copy) -@@ -8,6 +8,8 @@ - #include - #include - #include -+#include -+ - #ifdef QWS - #include - #endif -@@ -504,6 +507,83 @@ - d->repaintRegion = d->repaintRegion.unite(pe->region()); - } - -+bool MythMainWindow::screenShot(QString fname, int x, int y, int x2, int y2, int w, int h) -+{ -+ bool ret = false; -+ -+ QString extension = fname.section('.', -1, -1); -+ if (extension == "jpg") -+ extension = "JPEG"; -+ else -+ extension = "PNG"; -+ -+ VERBOSE(VB_GENERAL, QString("MythMainWindow::screenShot saving winId %1 to %2 (%3 x %4) [ %5/%6 - %7/%8] type %9") -+ .arg(QApplication::desktop()->winId()) -+ .arg(fname) -+ .arg(w) -+ .arg(h) -+ .arg(x) -+ .arg(y) -+ .arg(x2) -+ .arg(y2) -+ .arg(extension)); -+ -+ QPixmap p; -+ p = QPixmap::grabWindow( QApplication::desktop()->winId(), x, y, x2, y2); -+ -+ QImage img = p.convertToImage(); -+ -+ if ( w == 0 ) -+ w = img.width(); -+ -+ if ( h == 0 ) -+ h = img.height(); -+ -+ VERBOSE(VB_GENERAL, QString("Scaling to %1 x %2 from %3 x %4") -+ .arg(w) -+ .arg(h) -+ .arg(img.width()) -+ .arg(img.height())); -+ -+ img = img.smoothScale( w, h , QImage::ScaleMin); -+ -+ if (img.save(fname ,extension,100)) -+ { -+ VERBOSE(VB_GENERAL, "MythMainWindow::screenShot succeeded"); -+ ret = true; -+ } -+ else -+ { -+ VERBOSE(VB_GENERAL, "MythMainWindow::screenShot Failed!"); -+ ret = false; -+ } -+ -+ return ret; -+} -+ -+bool MythMainWindow::screenShot(int x, int y, int x2, int y2) -+{ -+ QString fPath = gContext->GetSetting("ScreenShotPath","/tmp/"); -+ QString fName = QString("/%1/myth-screenshot-%2.png") -+ .arg(fPath) -+ .arg(QDateTime::currentDateTime().toString("yyyy-mm-ddThh-mm-ss.zzz")); -+ -+ return screenShot(fName, x, y, x2, y2, 0, 0); -+} -+ -+bool MythMainWindow::screenShot(QString fname, int w, int h) -+{ -+ QRect sLoc = qApp->mainWidget()->geometry(); -+ return screenShot(fname, sLoc.left(),sLoc.top(), sLoc.width(), sLoc.height(), w, h); -+} -+ -+ -+bool MythMainWindow::screenShot(void) -+{ -+ QRect sLoc = qApp->mainWidget()->geometry(); -+ return screenShot(sLoc.left(),sLoc.top(), sLoc.width(), sLoc.height()); -+} -+ - #ifdef USING_APPLEREMOTE - // This may be possible via installEventFilter() instead? - -Index: libs/libmythui/mythmainwindow.h -=================================================================== ---- libs/libmythui/mythmainwindow.h (revision 16103) -+++ libs/libmythui/mythmainwindow.h (working copy) -@@ -101,6 +101,11 @@ - - MythPainter *GetCurrentPainter(); - -+ bool screenShot(QString fname, int x, int y, int x2, int y2, int w, int h); -+ bool screenShot(int x, int y, int x2, int y2); -+ bool screenShot(QString fname, int w, int h); -+ bool screenShot(void); -+ - void AllowInput(bool allow); - - QRect GetUIScreenRect(); -Index: programs/mythfrontend/mediarenderer.cpp -=================================================================== ---- programs/mythfrontend/mediarenderer.cpp (revision 16103) -+++ programs/mythfrontend/mediarenderer.cpp (working copy) -@@ -9,6 +9,7 @@ - ///////////////////////////////////////////////////////////////////////////// - - #include "mediarenderer.h" -+#include "mythfexml.h" - #include "compat.h" - - ///////////////////////////////////////////////////////////////////////////// -@@ -89,6 +90,11 @@ - "http-get:*:video/mpeg:*," - "http-get:*:video/nupplevideo:*," - "http-get:*:video/x-ms-wmv:*"; -+ // ------------------------------------------------------------------ -+ // Register the MythFEXML protocol... -+ // ------------------------------------------------------------------ -+ VERBOSE(VB_UPNP, "MediaRenderer::Registering MythFEXML Service." ); -+ m_pHttpServer->RegisterExtension( new MythFEXML( RootDevice() )); - - // VERBOSE(VB_UPNP, QString( "MediaRenderer::Registering AVTransport Service." )); - // m_pHttpServer->RegisterExtension( m_pUPnpAVT = new UPnpAVTransport( RootDevice() )); -Index: programs/mythfrontend/MFEXML_scpd.xml -=================================================================== ---- programs/mythfrontend/MFEXML_scpd.xml (revision 0) -+++ programs/mythfrontend/MFEXML_scpd.xml (revision 0) -@@ -0,0 +1,34 @@ -+ -+ -+ -+ 1 -+ 0 -+ -+ -+ -+ GetScreenShot -+ -+ -+ Height -+ in -+ A_ARG_TYPE_Height -+ -+ -+ Width -+ in -+ A_ARG_TYPE_Width -+ -+ -+ -+ -+ -+ -+ A_ARG_TYPE_Height -+ i2 -+ -+ -+ A_ARG_TYPE_Width -+ i2 -+ -+ -+ -Index: programs/mythfrontend/globalsettings.cpp -=================================================================== ---- programs/mythfrontend/globalsettings.cpp (revision 16103) -+++ programs/mythfrontend/globalsettings.cpp (working copy) -@@ -2220,6 +2220,15 @@ - return ge; - } - -+static HostLineEdit *ScreenShotPath() -+{ -+ HostLineEdit *ge = new HostLineEdit("ScreenShotPath"); -+ ge->setLabel(QObject::tr("ScreenShotPath")); -+ ge->setValue("/tmp/"); -+ ge->setHelpText(QObject::tr("Path to screenshot storage location. Should be writable by the frontend")); -+ return ge; -+} -+ - static HostCheckBox *UseArrowAccels() - { - HostCheckBox *gc = new HostCheckBox("UseArrowAccels"); -@@ -4502,6 +4511,7 @@ - MythMediaSettings *mediaMon = new MythMediaSettings(); - - general->addChild(LircKeyPressedApp()); -+ general->addChild(ScreenShotPath()); - general->addChild(row); - general->addChild(NetworkControlPort()); - general->addChild(mediaMon); -Index: programs/mythfrontend/mythfexml.h -=================================================================== ---- programs/mythfrontend/mythfexml.h (revision 0) -+++ programs/mythfrontend/mythfexml.h (revision 0) -@@ -0,0 +1,66 @@ -+////////////////////////////////////////////////////////////////////////////// -+// Program Name: mythxml.h -+// -+// Purpose - Myth Frontend XML protocol HttpServerExtension -+// -+////////////////////////////////////////////////////////////////////////////// -+ -+#ifndef MYTHFEXML_H_ -+#define MYTHFEXML_H_ -+ -+#include -+#include -+ -+#include "upnp.h" -+#include "eventing.h" -+#include "mythcontext.h" -+ -+typedef enum -+{ -+ MFEXML_Unknown = 0, -+ MFEXML_GetScreenShot = 1 -+ -+} MythFEXMLMethod; -+ -+class MythFEXML : public Eventing -+{ -+ private: -+ -+ QString m_sControlUrl; -+ QString m_sServiceDescFileName; -+ -+ protected: -+ -+ // Implement UPnpServiceImpl methods that we can -+ -+ virtual QString GetServiceType () { return "urn:schemas-mythtv-org:service:MythTv:1"; } -+ virtual QString GetServiceId () { return "urn:mythtv-org:serviceId:MYTHTV_1-0"; } -+ virtual QString GetServiceControlURL() { return m_sControlUrl.mid( 1 ); } -+ virtual QString GetServiceDescURL () { return m_sControlUrl.mid( 1 ) + "/GetServDesc"; } -+ -+ private: -+ -+ MythFEXMLMethod GetMethod( const QString &sURI ); -+ -+ void GetScreenShot ( HTTPRequest *pRequest ); -+ -+ public: -+ MythFEXML( UPnpDevice *pDevice ); -+ virtual ~MythFEXML(); -+ -+ bool ProcessRequest( HttpWorkerThread *pThread, HTTPRequest *pRequest ); -+ -+ // Static methods shared with HttpStatus -+ -+}; -+ -+///////////////////////////////////////////////////////////////////////////// -+///////////////////////////////////////////////////////////////////////////// -+// -+// -+// -+///////////////////////////////////////////////////////////////////////////// -+///////////////////////////////////////////////////////////////////////////// -+#endif -+ -+ -Index: programs/mythfrontend/main.cpp -=================================================================== ---- programs/mythfrontend/main.cpp (revision 16103) -+++ programs/mythfrontend/main.cpp (working copy) -@@ -800,6 +800,11 @@ - } - } - -+void getScreenShot(void) -+{ -+ (void) gContext->GetMainWindow()->screenShot(); -+} -+ - void InitJumpPoints(void) - { - REG_JUMP("Reload Theme", "", "", reloadTheme); -@@ -818,6 +823,8 @@ - REG_JUMP("Status Screen", "", "", showStatus); - REG_JUMP("Previously Recorded", "", "", startPrevious); - -+ REG_JUMPEX("ScreenShot","","",getScreenShot,false); -+ - REG_KEY("qt", "DELETE", "Delete", "D"); - REG_KEY("qt", "EDIT", "Edit", "E"); - -Index: programs/mythfrontend/mythfrontend.pro -=================================================================== ---- programs/mythfrontend/mythfrontend.pro (revision 16103) -+++ programs/mythfrontend/mythfrontend.pro (working copy) -@@ -15,7 +15,7 @@ - setting.files += util_menu.xml info_settings.xml main_settings.xml - setting.files += recpriorities_settings.xml tv_search.xml tv_lists.xml - setting.files += library.xml manage_recordings.xml optical_menu.xml tvmenu.xml --setting.files += tv_settings.xml -+setting.files += tv_settings.xml MFEXML_scpd.xml - setting.extra = -ldconfig - - INSTALLS += setting -@@ -26,13 +26,13 @@ - HEADERS += manualbox.h playbackbox.h viewscheduled.h globalsettings.h - HEADERS += manualschedule.h programrecpriority.h channelrecpriority.h - HEADERS += statusbox.h networkcontrol.h custompriority.h --HEADERS += mediarenderer.h -+HEADERS += mediarenderer.h mythfexml.h - HEADERS += mythappearance.h - - SOURCES += main.cpp manualbox.cpp playbackbox.cpp viewscheduled.cpp - SOURCES += globalsettings.cpp manualschedule.cpp programrecpriority.cpp - SOURCES += channelrecpriority.cpp statusbox.cpp networkcontrol.cpp --SOURCES += mediarenderer.cpp -+SOURCES += mediarenderer.cpp mythfexml.cpp - SOURCES += custompriority.cpp - SOURCES += mythappearance.cpp - -Index: programs/mythfrontend/mythfexml.cpp -=================================================================== ---- programs/mythfrontend/mythfexml.cpp (revision 0) -+++ programs/mythfrontend/mythfexml.cpp (revision 0) -@@ -0,0 +1,133 @@ -+////////////////////////////////////////////////////////////////////////////// -+// Program Name: MythXML.cpp -+// -+// Purpose - Html & XML status HttpServerExtension -+// -+// Created By : David Blain Created On : Oct. 24, 2005 -+// Modified By : Daniel Kristjansson Modified On: Oct. 31, 2007 -+// -+////////////////////////////////////////////////////////////////////////////// -+ -+#include "mythfexml.h" -+ -+#include "libmyth/mythcontext.h" -+#include "libmyth/util.h" -+#include "libmyth/mythdbcon.h" -+ -+#include "mythmainwindow.h" -+ -+#include -+#include -+#include -+#include -+#include -+#include -+ -+#include "../../config.h" -+ -+///////////////////////////////////////////////////////////////////////////// -+// -+///////////////////////////////////////////////////////////////////////////// -+ -+MythFEXML::MythFEXML( UPnpDevice *pDevice ) : Eventing( "MythFEXML", "MYTHTV_Event" ) -+{ -+ -+ QString sUPnpDescPath = UPnp::g_pConfig->GetValue( "UPnP/DescXmlPath", m_sSharePath ); -+ -+ m_sServiceDescFileName = sUPnpDescPath + "MFEXML_scpd.xml"; -+ m_sControlUrl = "/MythFE"; -+ -+ // Add our Service Definition to the device. -+ -+ RegisterService( pDevice ); -+} -+ -+///////////////////////////////////////////////////////////////////////////// -+// -+///////////////////////////////////////////////////////////////////////////// -+ -+MythFEXML::~MythFEXML() -+{ -+} -+ -+///////////////////////////////////////////////////////////////////////////// -+// -+///////////////////////////////////////////////////////////////////////////// -+ -+MythFEXMLMethod MythFEXML::GetMethod( const QString &sURI ) -+{ -+ if (sURI == "GetScreenShot" ) return MFEXML_GetScreenShot; -+ -+ return( MFEXML_Unknown ); -+} -+ -+///////////////////////////////////////////////////////////////////////////// -+// -+///////////////////////////////////////////////////////////////////////////// -+ -+bool MythFEXML::ProcessRequest( HttpWorkerThread *pThread, HTTPRequest *pRequest ) -+{ -+ try -+ { -+ if (pRequest) -+ { -+ if (pRequest->m_sBaseUrl != m_sControlUrl) -+ return( false ); -+ -+ VERBOSE(VB_UPNP, QString("MythFEXML::ProcessRequest: %1 : %2") -+ .arg(pRequest->m_sMethod) -+ .arg(pRequest->m_sRawRequest)); -+ -+ switch( GetMethod( pRequest->m_sMethod )) -+ { -+ case MFEXML_GetScreenShot : GetScreenShot ( pRequest ); return true; -+ -+ -+ default: -+ { -+ UPnp::FormatErrorResponse( pRequest, UPnPResult_InvalidAction ); -+ -+ return true; -+ } -+ } -+ } -+ } -+ catch( ... ) -+ { -+ VERBOSE( VB_IMPORTANT, "MythFEXML::ProcessRequest() - Unexpected Exception" ); -+ } -+ -+ return( false ); -+} -+ -+// ========================================================================== -+// Request handler Methods -+// ========================================================================== -+ -+///////////////////////////////////////////////////////////////////////////// -+// -+///////////////////////////////////////////////////////////////////////////// -+ -+void MythFEXML::GetScreenShot( HTTPRequest *pRequest ) -+{ -+ pRequest->m_eResponseType = ResponseTypeFile; -+ -+ // Optional Parameters -+ -+ int nWidth = pRequest->m_mapParams[ "Width" ].toInt(); -+ int nHeight = pRequest->m_mapParams[ "Height" ].toInt(); -+ -+ // Read Icon file path from database -+ -+ QString sFileName = QString("/%1/myth-screenshot-XML.jpg") -+ .arg(gContext->GetSetting("ScreenShotPath","/tmp/")); -+ -+ if (!gContext->GetMainWindow()->screenShot(sFileName,nWidth, nHeight)) -+ { -+ VERBOSE(VB_GENERAL, "MythFEXML: Failed to take screenshot. Aborting"); -+ return; -+ } -+ -+ pRequest->m_sFileName = sFileName; -+} -+ diff --git a/abs/mv-core/myth/release-fixes/mythtv-release-fixes/smolt_jump.patch b/abs/mv-core/myth/release-fixes/mythtv-release-fixes/smolt_jump.patch deleted file mode 100644 index ca9bd08..0000000 --- a/abs/mv-core/myth/release-fixes/mythtv-release-fixes/smolt_jump.patch +++ /dev/null @@ -1,10 +0,0 @@ ---- programs/mythfrontend/networkcontrol.cpp.orig 2008-03-23 23:00:25.000000000 +0000 -+++ programs/mythfrontend/networkcontrol.cpp 2008-03-23 23:01:33.000000000 +0000 -@@ -81,6 +81,7 @@ - jumpMap["zoneminderliveview"] = "ZoneMinder Live View"; - jumpMap["zoneminderevents"] = "ZoneMinder Events"; - jumpMap["snapshot"] = "ScreenShot"; -+ jumpMap["mythsmolt"] = "MythSmolt"; - - // These jump point names match the (lowercased) locations from gContext - jumpMap["channelrecpriority"] = "Channel Recording Priorities"; diff --git a/abs/mv-core/myth/release-fixes/mythtv-themes/PKGBUILD b/abs/mv-core/myth/release-fixes/mythtv-themes/PKGBUILD deleted file mode 100755 index 877b790..0000000 --- a/abs/mv-core/myth/release-fixes/mythtv-themes/PKGBUILD +++ /dev/null @@ -1,36 +0,0 @@ -pkgname=mythtv-themes-release-fixes -pkgver=15931 -pkgrel=7 -pkgdesc="themes for mythtv" -url="http://www.mythtv.org" -license="GPL" -depends=( ) -#makedepends=('sqlite3' 'sed') -conflicts=() -replaces=() -backup=() -#install='mythtv.install' -source=() -arch=('i686') -md5sums=() -_svntrunk=http://svn.mythtv.org/svn/branches/release-0-21-fixes/myththemes -_svnmod=myththemes - -build() { -echo svn co $_svntrunk --config-dir ./ -r $pkgver $_svnmod - svn co $_svntrunk --config-dir ./ -r $pkgver $_svnmod -#svn co http://cvs.mythtv.org/svn/trunk/mythtv -#svn co http://cvs.mythtv.org/svn/trunk/mythplugins -#svn co http://cvs.mythtv.org/svn/trunk/myththemes -cd $startdir/src/myththemes - make distclean - ./configure --prefix=/usr - #./configure --disable-all --enable-mythweather --enable-fftw --disable-aac - make || return 1 - make INSTALL_ROOT=$startdir/pkg install -# cd $startdir/src/$pkgname -# cd mythmovietime -# make || return 1 -# make INSTALL_ROOT=$startdir/pkg install - -} diff --git a/abs/mv-core/myth/release-fixes/plugins/mytharchive/PKGBUILD b/abs/mv-core/myth/release-fixes/plugins/mytharchive/PKGBUILD deleted file mode 100644 index ad6b8fb..0000000 --- a/abs/mv-core/myth/release-fixes/plugins/mytharchive/PKGBUILD +++ /dev/null @@ -1,41 +0,0 @@ -pkgname=mytharchive-release-fixes -pkgver=17719 -pkgrel=6 -pkgdesc="MythTV plugin that lets you create DVDs from or archive your recorded shows." -arch=('i686') -url="http://www.mythtv.org" -license=('GPL') -depends=('mythtv-release-fixes' 'libxmu' 'mysql-python' 'pil' 'dvdauthor' 'cdrkit' 'dvd+rw-tools' 'mjpegtools' 'transcode' ) -source=() -groups=('mythtv-all-plugins-release-fixes') -#_svntrunk=http://cvs.mythtv.org/svn/trunk/mythplugins -_svntrunk=http://svn.mythtv.org/svn/branches/release-0-21-fixes/mythplugins -_svnmod=mythplugins - - -build() { - PLUGIN=mytharchive - cd $startdir/src/ - svn co $_svntrunk --config-dir ./ -r $pkgver $_svnmod - cd $startdir/src/mythplugins - - PLUGIN=mytharchive - grep -q programs-libs.pro $PLUGIN/$PLUGIN/$PLUGIN.pro - if [ $? != 0 ] - then - echo "include ( ../../programs-libs.pro )" >> $PLUGIN/$PLUGIN/$PLUGIN.pro - msg "appending program lib" - fi - msg "Correcting configure kde3 to kde" - sed -i 's#kde3#kde#' configure || return 1 - make distclean - ./configure --prefix=/usr --enable-opengl --disable-all --enable-create-archive --enable-create-dvd --enable-mytharchive || return 1 - qmake mythplugins.pro || return 1 - make qmake || return 1 - msg "Correcting Makefile kde3 to kde" - sed -i 's#kde3#kde#' ./mytharchive/mytharchive/Makefile || return 1 - make -j 2 || return 1 - make INSTALL_ROOT=$startdir/pkg install -} - - diff --git a/abs/mv-core/myth/release-fixes/plugins/mythbrowser/PKGBUILD b/abs/mv-core/myth/release-fixes/plugins/mythbrowser/PKGBUILD deleted file mode 100644 index adfe87a..0000000 --- a/abs/mv-core/myth/release-fixes/plugins/mythbrowser/PKGBUILD +++ /dev/null @@ -1,34 +0,0 @@ - -pkgname=mythbrowser-release-fixes -pkgver=17284 -pkgrel=2 -pkgdesc="Mini web browser for MythTV" -url="http://www.mythtv.org" -arch=('i686') -depends=('mythtv-release-fixes' 'wget' 'libxvmc' 'kdelibs3') -conflicts=('mythtv-plugins-release-fixes') -groups=('mythtv-all-plugins-release-fixes') -license="GPL" -source=() -_svntrunk=http://svn.mythtv.org/svn/branches/release-0-21-fixes/mythplugins -_svnmod=mythplugins -build() { - cd $startdir/src/ - echo svn co $_svntrunk --config-dir ./ -r $pkgver $_svnmod - svn co $_svntrunk --config-dir ./ -r $pkgver $_svnmod - cd $startdir/src/mythplugins - pwd - PLUGIN=mythbrowser - grep -q programs-libs.pro $PLUGIN/$PLUGIN/$PLUGIN.pro - if [ $? != 0 ] - then - echo "include ( ../../programs-libs.pro )" >> $PLUGIN/$PLUGIN/$PLUGIN.pro - msg "appending program lib" - fi - make distclean - ./configure --prefix=/usr --enable-opengl --disable-all --enable-mythbrowser || return 1 - # sed -i 's#kde3#kde#' ./mythbrowser/mythbrowser/Makefile || return 1 - make || return 1 - - make INSTALL_ROOT=$startdir/pkg install -} diff --git a/abs/mv-core/myth/release-fixes/plugins/mythcontrols/PKGBUILD b/abs/mv-core/myth/release-fixes/plugins/mythcontrols/PKGBUILD deleted file mode 100644 index ea1109f..0000000 --- a/abs/mv-core/myth/release-fixes/plugins/mythcontrols/PKGBUILD +++ /dev/null @@ -1,36 +0,0 @@ -pkgname=mythcontrols-release-fixes -pkgver=17719 -pkgrel=5 -pkgdesc="Experimental controls for MythTV" -url="http://www.mythtv.org" -arch=('i686') -depends=('mythtv'-release-fixes) -conflicts=('mythtv-plugins-release-fixes') -groups=('mythtv-all-plugins-release-fixes') -license="GPL" -source=() -_svntrunk=http://svn.mythtv.org/svn/branches/release-0-21-fixes/mythplugins -_svntrunk=http://svn.mythtv.org/svn/branches/release-0-21-fixes/mythplugins -_svnmod=mythplugins - - -build() { - cd $startdir/src/ - echo svn co $_svntrunk --config-dir ./ -r $pkgver $_svnmod - svn co $_svntrunk --config-dir ./ -r $pkgver $_svnmod - cd $startdir/src/mythplugins -PLUGIN=mythcontrols -grep -q programs-libs.pro $PLUGIN/$PLUGIN/$PLUGIN.pro -if [ $? != 0 ] -then - echo "include ( ../../programs-libs.pro )" >> $PLUGIN/$PLUGIN/$PLUGIN.pro - msg "appending program lib" - fi - make distclean - ./configure --disable-all --enable-opengl --enable-mythcontrols --prefix=/usr - - make -j 2 || return 1 - - make INSTALL_ROOT=$startdir/pkg install -} - diff --git a/abs/mv-core/myth/release-fixes/plugins/mythflix/PKGBUILD b/abs/mv-core/myth/release-fixes/plugins/mythflix/PKGBUILD deleted file mode 100644 index a3a48fe..0000000 --- a/abs/mv-core/myth/release-fixes/plugins/mythflix/PKGBUILD +++ /dev/null @@ -1,36 +0,0 @@ -pkgname=mythflix-release-fixes -pkgver=17719 -pkgrel=2 -pkgdesc="Netflix access plugin for MythTV" -url="http://www.mythtv.org" -arch=('i686') -depends=('mythtv-release-fixes') -conflicts=('mythtv-plugins-release-fixes') -groups=('mythtv-all-plugins-release-fixes') -license="GPL" -source=() -#_svntrunk=http://cvs.mythtv.org/svn/trunk/mythplugins -_svntrunk=http://svn.mythtv.org/svn/branches/release-0-21-fixes/mythplugins - -_svntrunk=http://svn.mythtv.org/svn/branches/release-0-21-fixes/mythplugins -_svnmod=mythplugins - -build() { - cd $startdir/src/ - echo svn co $_svntrunk --config-dir ./ -r $pkgver $_svnmod - svn co $_svntrunk --config-dir ./ -r $pkgver $_svnmod - cd $startdir/src/mythplugins - PLUGIN=mythflix - grep -q programs-libs.pro $PLUGIN/$PLUGIN/$PLUGIN.pro - if [ $? != 0 ] - then - echo "include ( ../../programs-libs.pro )" >> $PLUGIN/$PLUGIN/$PLUGIN.pro - msg "appending program lib" - fi - make distclean - ./configure --prefix=/usr --disable-all --enable-opengl --enable-mythflix - - make -j 2 || return 1 - - make INSTALL_ROOT=$startdir/pkg install -} diff --git a/abs/mv-core/myth/release-fixes/plugins/mythgallery/PKGBUILD b/abs/mv-core/myth/release-fixes/plugins/mythgallery/PKGBUILD deleted file mode 100644 index a12e22c..0000000 --- a/abs/mv-core/myth/release-fixes/plugins/mythgallery/PKGBUILD +++ /dev/null @@ -1,36 +0,0 @@ -pkgname=mythgallery-release-fixes -pkgver=17719 -pkgrel=3 -pkgdesc="Image gallery plugin for MythTV" -url="http://www.mythtv.org" -arch=('i686') -depends=('mythtv-release-fixes' 'libexif' 'libtiff') -conflicts=('mythtv-plugins-release-fixes') -groups=('mythtv-all-plugins-release-fixes') -license="GPL" -source=() -_svntrunk=http://svn.mythtv.org/svn/branches/release-0-21-fixes/mythplugins -_svntrunk=http://svn.mythtv.org/svn/branches/release-0-21-fixes/mythplugins -_svnmod=mythplugins - -build() { - cd $startdir/src/ - echo svn co $_svntrunk --config-dir ./ -r $pkgver $_svnmod - svn co $_svntrunk --config-dir ./ -r $pkgver $_svnmod - cd $startdir/src/mythplugins - export QMAKESPEC='linux-g++' - PLUGIN=mythgallery - grep -q programs-libs.pro $PLUGIN/$PLUGIN/$PLUGIN.pro - if [ $? != 0 ] - then - echo "include ( ../../programs-libs.pro )" >> $PLUGIN/$PLUGIN/$PLUGIN.pro - msg "appending program lib" - fi - make distclean - ./configure --prefix=/usr --disable-all --enable-opengl --enable-mythgallery --enable-exif - - make -j 2 || return 1 - - make INSTALL_ROOT=$startdir/pkg install -} - diff --git a/abs/mv-core/myth/release-fixes/plugins/mythgame/PKGBUILD b/abs/mv-core/myth/release-fixes/plugins/mythgame/PKGBUILD deleted file mode 100644 index 8cf2f65..0000000 --- a/abs/mv-core/myth/release-fixes/plugins/mythgame/PKGBUILD +++ /dev/null @@ -1,36 +0,0 @@ -pkgname=mythgame-release-fixes -pkgver=17719 -pkgrel=4 -pkgdesc="Emulation plugin for MythTV" -url="http://www.mythtv.org" -arch=('i686') -depends=('mythtv-release-fixes' 'zlib') -conflicts=('mythtv-plugins-release-fixes') -groups=('mythtv-all-plugins-release-fixes') -license="GPL" -source=() -_svntrunk=http://svn.mythtv.org/svn/branches/release-0-21-fixes/mythplugins -_svntrunk=http://svn.mythtv.org/svn/branches/release-0-21-fixes/mythplugins -_svnmod=mythplugins - -build() { - cd $startdir/src/ - echo svn co $_svntrunk --config-dir ./ -r $pkgver $_svnmod - svn co $_svntrunk --config-dir ./ -r $pkgver $_svnmod - cd $startdir/src/mythplugins -PLUGIN=mythgame -grep -q programs-libs.pro $PLUGIN/$PLUGIN/$PLUGIN.pro -if [ $? != 0 ] -then - echo "include ( ../../programs-libs.pro )" >> $PLUGIN/$PLUGIN/$PLUGIN.pro - msg "appending program lib" - fi - export QMAKESPEC='linux-g++' - make distclean - ./configure --disable-all --enable-opengl --enable-mythgame --prefix=/usr - - make -j 2 || return 1 - - make INSTALL_ROOT=$startdir/pkg install -} - diff --git a/abs/mv-core/myth/release-fixes/plugins/mythmovietime/PKGBUILD b/abs/mv-core/myth/release-fixes/plugins/mythmovietime/PKGBUILD deleted file mode 100644 index 5560410..0000000 --- a/abs/mv-core/myth/release-fixes/plugins/mythmovietime/PKGBUILD +++ /dev/null @@ -1,35 +0,0 @@ -pkgname=mythmovietime-release-fixes -pkgver=17284 -pkgrel=6 -pkgdesc="Emulation plugin for MythTV" -url="http://www.mythtv.org" -arch=('i686') -depends=('mythtv-release-fixes' 'zlib') -conflicts=('mythtv-plugins-release-fixes') -groups=('mythtv-all-plugins-release-fixes') -license="GPL" -source=() -_svntrunk=http://svn.mythtv.org/svn/branches/release-0-21-fixes/mythplugins -_svnmod=mythplugins - -build() { - cd $startdir/src/ - echo svn co $_svntrunk --config-dir ./ -r $pkgver $_svnmod - svn co $_svntrunk --config-dir ./ -r $pkgver $_svnmod - cd $startdir/src/mythplugins -PLUGIN=mythmovietime -grep -q programs-libs.pro $PLUGIN/$PLUGIN/$PLUGIN.pro -if [ $? != 0 ] -then - echo "include ( ../../programs-libs.pro )" >> $PLUGIN/$PLUGIN/$PLUGIN.pro - msg "appending program lib" - fi - export QMAKESPEC='linux-g++' - make distclean - ./configure --prefix=/usr --disable-all --enable-mythmovies - - make -j 2 || return 1 - - make INSTALL_ROOT=$startdir/pkg install -} - diff --git a/abs/mv-core/myth/release-fixes/plugins/mythmusic/PKGBUILD b/abs/mv-core/myth/release-fixes/plugins/mythmusic/PKGBUILD deleted file mode 100644 index bfb1de5..0000000 --- a/abs/mv-core/myth/release-fixes/plugins/mythmusic/PKGBUILD +++ /dev/null @@ -1,39 +0,0 @@ -pkgname=mythmusic-release-fixes -pkgver=17719 -pkgrel=9 -pkgdesc="Music playing plugin for MythTV" -url="http://www.mythtv.org" -arch=('i686' 'x86_64') - - -depends=("mythtv-release-fixes>=${pkgver}" 'libid3tag' 'libmad' 'libvorbis' 'flac>=1.1.4' 'libcdaudio' \ - 'cdparanoia' 'fftw2' 'sdl' 'faad2>=2.6.1' 'lame' 'taglib' \ - 'libvisual-plugins' 'libvisual-projectm') - -conflicts=('mythtv-plugins-release-fixes') -groups=('mythtv-all-plugins-release-fixes') -license="GPL" -source=() -_svntrunk=http://svn.mythtv.org/svn/branches/release-0-21-fixes/mythplugins -_svnmod=mythplugins - -build() { - cd $startdir/src/ - make distclean - echo svn co $_svntrunk --config-dir ./ -r $pkgver $_svnmod - svn co $_svntrunk --config-dir ./ -r $pkgver $_svnmod - cd $startdir/src/mythplugins/mythmusic -# patch -p1 < ../../gcc4.3.patch - cd $startdir/src/mythplugins - ./configure --disable-all --enable-mythmusic --enable-fftw --enable-sdl --disable-aac --enable-opengl --prefix=/usr - PLUGIN=mythmusic - grep -q programs-libs.pro $PLUGIN/$PLUGIN/$PLUGIN.pro - if [ $? != 0 ] - then - echo "include ( ../../programs-libs.pro )" >> $PLUGIN/$PLUGIN/$PLUGIN.pro - msg "appending program lib" - fi - - make || return 1 - make INSTALL_ROOT=$startdir/pkg install -} diff --git a/abs/mv-core/myth/release-fixes/plugins/mythmusic/music_flac.patch b/abs/mv-core/myth/release-fixes/plugins/mythmusic/music_flac.patch deleted file mode 100644 index b152249..0000000 --- a/abs/mv-core/myth/release-fixes/plugins/mythmusic/music_flac.patch +++ /dev/null @@ -1,293 +0,0 @@ ---- flacdecoder.cpp.old 2007-03-11 18:14:37.000000000 -0400 -+++ flacdecoder.cpp 2007-03-11 18:15:34.000000000 -0400 -@@ -17,7 +17,7 @@ - - #include - --static FLAC__SeekableStreamDecoderReadStatus flacread(const FLAC__SeekableStreamDecoder *decoder, FLAC__byte bufferp[], unsigned *bytes, void *client_data) -+static FLAC__StreamDecoderReadStatus flacread(const FLAC__StreamDecoder *decoder, FLAC__byte bufferp[], unsigned *bytes, void *client_data) - { - decoder = decoder; - -@@ -26,27 +26,27 @@ - - if (len == -1) - { -- return FLAC__SEEKABLE_STREAM_DECODER_READ_STATUS_ERROR; -+ return FLAC__STREAM_DECODER_READ_STATUS_END_OF_STREAM; - } - - *bytes = len; -- return FLAC__SEEKABLE_STREAM_DECODER_READ_STATUS_OK; -+ return FLAC__STREAM_DECODER_READ_STATUS_CONTINUE; - } - --static FLAC__SeekableStreamDecoderSeekStatus flacseek(const FLAC__SeekableStreamDecoder *decoder, FLAC__uint64 absolute_byte_offset, void *client_data) -+static FLAC__StreamDecoderSeekStatus flacseek(const FLAC__StreamDecoder *decoder, FLAC__uint64 absolute_byte_offset, void *client_data) - { - decoder = decoder; - FlacDecoder *dflac = (FlacDecoder *)client_data; - - if (!dflac->input()->isDirectAccess()) -- return FLAC__SEEKABLE_STREAM_DECODER_SEEK_STATUS_ERROR; -+ return FLAC__STREAM_DECODER_SEEK_STATUS_ERROR; - - if (dflac->input()->at(absolute_byte_offset)) -- return FLAC__SEEKABLE_STREAM_DECODER_SEEK_STATUS_OK; -- return FLAC__SEEKABLE_STREAM_DECODER_SEEK_STATUS_ERROR; -+ return FLAC__STREAM_DECODER_SEEK_STATUS_OK; -+ return FLAC__STREAM_DECODER_SEEK_STATUS_ERROR; - } - --static FLAC__SeekableStreamDecoderTellStatus flactell(const FLAC__SeekableStreamDecoder *decoder, FLAC__uint64 *absolute_byte_offset, void *client_data) -+static FLAC__StreamDecoderTellStatus flactell(const FLAC__StreamDecoder *decoder, FLAC__uint64 *absolute_byte_offset, void *client_data) - { - decoder = decoder; - FlacDecoder *dflac = (FlacDecoder *)client_data; -@@ -54,20 +54,20 @@ - long t = dflac->input()->at(); - *absolute_byte_offset = t; - -- return FLAC__SEEKABLE_STREAM_DECODER_TELL_STATUS_OK; -+ return FLAC__STREAM_DECODER_TELL_STATUS_OK; - } - --static FLAC__SeekableStreamDecoderLengthStatus flaclength(const FLAC__SeekableStreamDecoder *decoder, FLAC__uint64 *stream_length, void *client_data) -+static FLAC__StreamDecoderLengthStatus flaclength(const FLAC__StreamDecoder *decoder, FLAC__uint64 *stream_length, void *client_data) - { - decoder = decoder; - - FlacDecoder *dflac = (FlacDecoder *)client_data; - - *stream_length = dflac->input()->size(); -- return FLAC__SEEKABLE_STREAM_DECODER_LENGTH_STATUS_OK; -+ return FLAC__STREAM_DECODER_LENGTH_STATUS_OK; - } - --static FLAC__bool flaceof(const FLAC__SeekableStreamDecoder *decoder, void *client_data) -+static FLAC__bool flaceof(const FLAC__StreamDecoder *decoder, void *client_data) - { - decoder = decoder; - -@@ -76,7 +76,7 @@ - return dflac->input()->atEnd(); - } - --static FLAC__StreamDecoderWriteStatus flacwrite(const FLAC__SeekableStreamDecoder *decoder, const FLAC__Frame *frame, const FLAC__int32 * const buffer[], void *client_data) -+static FLAC__StreamDecoderWriteStatus flacwrite(const FLAC__StreamDecoder *decoder, const FLAC__Frame *frame, const FLAC__int32 * const buffer[], void *client_data) - { - decoder = decoder; - -@@ -132,7 +132,7 @@ - } - } - --static void flacmetadata(const FLAC__SeekableStreamDecoder *decoder, const FLAC__StreamMetadata *metadata, void *client_data) -+static void flacmetadata(const FLAC__StreamDecoder *decoder, const FLAC__StreamMetadata *metadata, void *client_data) - { - decoder = decoder; - -@@ -156,11 +156,11 @@ - } - } - --static void flacerror(const FLAC__SeekableStreamDecoder *decoder, FLAC__StreamDecoderErrorStatus status, void *client_data) -+static void flacerror(const FLAC__StreamDecoder *decoder, FLAC__StreamDecoderErrorStatus status, void *client_data) - { - decoder = decoder; - -- FLAC__FileDecoder *file_decoder = (FLAC__FileDecoder *)client_data; -+ FLAC__StreamDecoder *file_decoder = (FLAC__StreamDecoder *)client_data; - - file_decoder = file_decoder; - status = status; -@@ -262,17 +262,8 @@ - } - } - -- decoder = FLAC__seekable_stream_decoder_new(); -- FLAC__seekable_stream_decoder_set_md5_checking(decoder, false); -- FLAC__seekable_stream_decoder_set_read_callback(decoder, flacread); -- FLAC__seekable_stream_decoder_set_seek_callback(decoder, flacseek); -- FLAC__seekable_stream_decoder_set_tell_callback(decoder, flactell); -- FLAC__seekable_stream_decoder_set_length_callback(decoder, flaclength); -- FLAC__seekable_stream_decoder_set_eof_callback(decoder, flaceof); -- FLAC__seekable_stream_decoder_set_write_callback(decoder, flacwrite); -- FLAC__seekable_stream_decoder_set_metadata_callback(decoder, flacmetadata); -- FLAC__seekable_stream_decoder_set_error_callback(decoder, flacerror); -- FLAC__seekable_stream_decoder_set_client_data(decoder, this); -+ decoder = FLAC__stream_decoder_new(); -+ FLAC__stream_decoder_set_md5_checking(decoder, false); - - freq = 0; - bitrate = 0; -@@ -281,8 +272,17 @@ - totalTime = 0; - totalTime = totalTime < 0 ? 0 : totalTime; - -- FLAC__seekable_stream_decoder_init(decoder); -- FLAC__seekable_stream_decoder_process_until_end_of_metadata(decoder); -+ FLAC__stream_decoder_init_stream(decoder, -+ flacread, -+ flacseek, -+ flactell, -+ flaclength, -+ flaceof, -+ flacwrite, -+ flacmetadata, -+ flacerror, -+ this); -+ FLAC__stream_decoder_process_until_end_of_metadata(decoder); - - inited = TRUE; - return TRUE; -@@ -295,8 +295,8 @@ - - void FlacDecoder::deinit() - { -- FLAC__seekable_stream_decoder_finish(decoder); -- FLAC__seekable_stream_decoder_delete(decoder); -+ FLAC__stream_decoder_finish(decoder); -+ FLAC__stream_decoder_delete(decoder); - - if (input()->isOpen()) - input()->close(); -@@ -330,7 +330,7 @@ - } - - bool flacok = true; -- FLAC__SeekableStreamDecoderState decoderstate; -+ FLAC__StreamDecoderState decoderstate; - - while (! done && ! finish) { - lock(); -@@ -340,12 +340,12 @@ - FLAC__uint64 sample = (FLAC__uint64)(seekTime * 44100.0); - if (sample > totalsamples - 50) - sample = totalsamples - 50; -- FLAC__seekable_stream_decoder_seek_absolute(decoder, sample); -+ FLAC__stream_decoder_seek_absolute(decoder, sample); - seekTime = -1.0; - } - -- flacok = FLAC__seekable_stream_decoder_process_single(decoder); -- decoderstate = FLAC__seekable_stream_decoder_get_state(decoder); -+ flacok = FLAC__stream_decoder_process_single(decoder); -+ decoderstate = FLAC__stream_decoder_get_state(decoder); - - if (decoderstate == 0 || decoderstate == 1) - { ---- flacdecoder.h.old 2007-03-11 18:14:37.000000000 -0400 -+++ flacdecoder.h 2007-03-11 18:14:12.000000000 -0400 -@@ -35,7 +35,7 @@ - char *output_buf; - ulong output_bytes, output_at; - -- FLAC__SeekableStreamDecoder *decoder; -+ FLAC__StreamDecoder *decoder; - - unsigned int bks; - bool done, finish; ---- flacencoder.cpp.old 2007-03-11 18:14:37.000000000 -0400 -+++ flacencoder.cpp 2007-03-11 18:14:12.000000000 -0400 -@@ -9,7 +9,7 @@ - #include "flacencoder.h" - #include "metaioflacvorbiscomment.h" - --#include -+#include - #include - #include - -@@ -29,32 +29,32 @@ - int rice_parameter_search_dist = 0; - int max_lpc_order = 8; - -- encoder = FLAC__file_encoder_new(); -+ encoder = FLAC__stream_encoder_new(); - -- FLAC__file_encoder_set_streamable_subset(encoder, true); -- FLAC__file_encoder_set_do_mid_side_stereo(encoder, do_mid_side); -- FLAC__file_encoder_set_loose_mid_side_stereo(encoder, loose_mid_side); -- FLAC__file_encoder_set_channels(encoder, NUM_CHANNELS); -- FLAC__file_encoder_set_bits_per_sample(encoder, 16); -- FLAC__file_encoder_set_sample_rate(encoder, 44100); -- FLAC__file_encoder_set_blocksize(encoder, blocksize); -- FLAC__file_encoder_set_max_lpc_order(encoder, max_lpc_order); -- FLAC__file_encoder_set_qlp_coeff_precision(encoder, qlp_coeff_precision); -- FLAC__file_encoder_set_do_qlp_coeff_prec_search(encoder, false); -- FLAC__file_encoder_set_do_escape_coding(encoder, do_escape_coding); -- FLAC__file_encoder_set_do_exhaustive_model_search(encoder, -+ FLAC__stream_encoder_set_streamable_subset(encoder, true); -+ FLAC__stream_encoder_set_do_mid_side_stereo(encoder, do_mid_side); -+ FLAC__stream_encoder_set_loose_mid_side_stereo(encoder, loose_mid_side); -+ FLAC__stream_encoder_set_channels(encoder, NUM_CHANNELS); -+ FLAC__stream_encoder_set_bits_per_sample(encoder, 16); -+ FLAC__stream_encoder_set_sample_rate(encoder, 44100); -+ FLAC__stream_encoder_set_blocksize(encoder, blocksize); -+ FLAC__stream_encoder_set_max_lpc_order(encoder, max_lpc_order); -+ FLAC__stream_encoder_set_qlp_coeff_precision(encoder, qlp_coeff_precision); -+ FLAC__stream_encoder_set_do_qlp_coeff_prec_search(encoder, false); -+ FLAC__stream_encoder_set_do_escape_coding(encoder, do_escape_coding); -+ FLAC__stream_encoder_set_do_exhaustive_model_search(encoder, - do_exhaustive_model_search); -- FLAC__file_encoder_set_min_residual_partition_order(encoder, -+ FLAC__stream_encoder_set_min_residual_partition_order(encoder, - min_residual_partition_order); -- FLAC__file_encoder_set_max_residual_partition_order(encoder, -+ FLAC__stream_encoder_set_max_residual_partition_order(encoder, - max_residual_partition_order); -- FLAC__file_encoder_set_rice_parameter_search_dist(encoder, -+ FLAC__stream_encoder_set_rice_parameter_search_dist(encoder, - rice_parameter_search_dist); - -- FLAC__file_encoder_set_filename(encoder, outfile.local8Bit()); -+ - -- int ret = FLAC__file_encoder_init(encoder); -- if (ret != FLAC__FILE_ENCODER_OK) -+ int ret = FLAC__stream_encoder_init_file(encoder, outfile.local8Bit(), NULL, NULL); -+ if (ret != FLAC__STREAM_ENCODER_OK) - { - VERBOSE(VB_GENERAL, QString("Error initializing FLAC encoder." - " Got return code: %1").arg(ret)); -@@ -70,8 +70,8 @@ - - if (encoder) - { -- FLAC__file_encoder_finish(encoder); -- FLAC__file_encoder_delete(encoder); -+ FLAC__stream_encoder_finish(encoder); -+ FLAC__stream_encoder_delete(encoder); - } - - if (metadata) -@@ -102,7 +102,7 @@ - - if(sampleindex == MAX_SAMPLES || (length == 0 && sampleindex > 0) ) - { -- if (!FLAC__file_encoder_process(encoder, -+ if (!FLAC__stream_encoder_process(encoder, - (const FLAC__int32 * const *) input, - sampleindex)) - { ---- flacencoder.h.old 2007-03-11 18:14:37.000000000 -0400 -+++ flacencoder.h 2007-03-11 18:14:12.000000000 -0400 -@@ -4,7 +4,7 @@ - #include - - #define HAVE_INTTYPES_H --#include -+#include - - #include "encoder.h" - -@@ -21,7 +21,7 @@ - int addSamples(int16_t *bytes, unsigned int len); - - private: -- FLAC__FileEncoder *encoder; -+ FLAC__StreamEncoder *encoder; - unsigned int sampleindex; - FLAC__int32 inputin[NUM_CHANNELS][MAX_SAMPLES]; - FLAC__int32 *input[NUM_CHANNELS]; diff --git a/abs/mv-core/myth/release-fixes/plugins/mythnews/PKGBUILD b/abs/mv-core/myth/release-fixes/plugins/mythnews/PKGBUILD deleted file mode 100644 index 90ae093..0000000 --- a/abs/mv-core/myth/release-fixes/plugins/mythnews/PKGBUILD +++ /dev/null @@ -1,34 +0,0 @@ -pkgname=mythnews-release-fixes -pkgver=17719 -pkgrel=4 -pkgdesc="News checking plugin for MythTV" -url="http://www.mythtv.org" -arch=('i686') -depends=('mythtv-release-fixes') -conflicts=('mythtv-plugins-release-fixes') -groups=('mythtv-all-plugins-release-fixes') -license="GPL" -source=() -_svntrunk=http://svn.mythtv.org/svn/branches/release-0-21-fixes/mythplugins -_svntrunk=http://svn.mythtv.org/svn/branches/release-0-21-fixes/mythplugins -_svnmod=mythplugins -build() { - cd $startdir/src/ - echo svn co $_svntrunk --config-dir ./ -r $pkgver $_svnmod - svn co $_svntrunk --config-dir ./ -r $pkgver $_svnmod - cd $startdir/src/mythplugins - PLUGIN=mythnews - grep -q programs-libs.pro $PLUGIN/$PLUGIN/$PLUGIN.pro - if [ $? != 0 ] - then - echo "include ( ../../programs-libs.pro )" >> $PLUGIN/$PLUGIN/$PLUGIN.pro - msg "appending program lib" - fi - make distclean - ./configure --disable-all --enable-mythnews --prefix=/usr - - make -j 2 || return 1 - - make INSTALL_ROOT=$startdir/pkg install -} -md5sums=('2a9fbf45ae58a3a35857ce8d7c4d12db') diff --git a/abs/mv-core/myth/release-fixes/plugins/mythphone/PKGBUILD b/abs/mv-core/myth/release-fixes/plugins/mythphone/PKGBUILD deleted file mode 100644 index 7227958..0000000 --- a/abs/mv-core/myth/release-fixes/plugins/mythphone/PKGBUILD +++ /dev/null @@ -1,42 +0,0 @@ -pkgname=mythphone-release-fixes -pkgver=17719 -pkgrel=3 -pkgdesc="Plugin that allows phone calls to be made to MythTv" -url="http://www.mythtv.org" -arch=('i686') -depends=('mythtv-release-fixes') -conflicts=('mythtv-plugins-release-fixes') -groups=('mythtv-all-plugins-release-fixes') -license="GPL" -source=() -_svntrunk=http://svn.mythtv.org/svn/branches/release-0-21-fixes/mythplugins -_svntrunk=http://svn.mythtv.org/svn/branches/release-0-21-fixes/mythplugins -_svnmod=mythplugins - -build() { - cd $startdir/src/ - echo svn co $_svntrunk --config-dir ./ -r $pkgver $_svnmod - svn co $_svntrunk --config-dir ./ -r $pkgver $_svnmod - cd $startdir/src/mythplugins - make distclean - PLUGIN=mythphone - grep -q programs-libs.pro $PLUGIN/$PLUGIN/$PLUGIN.pro - if [ $? != 0 ] - then - echo "include ( ../../programs-libs.pro )" >> $PLUGIN/$PLUGIN/$PLUGIN.pro - msg "appending program lib" - fi - - msg "Correcting configure kde3 to kde" - sed -i 's#kde3#kde#' configure || return 1 - ./configure --prefix=/usr --enable-opengl --disable-all --enable-mythphone || return 1 - qmake mythplugins.pro || return 1 - make qmake || return 1 - - msg "Correcting Makefile kde3 to kde" - sed -i 's#kde3#kde#' ./mythphone/mythphone/Makefile || return 1 - - make -j 2 || return 1 - make INSTALL_ROOT=$startdir/pkg install -} - diff --git a/abs/mv-core/myth/release-fixes/plugins/mythsmolt/PKGBUILD b/abs/mv-core/myth/release-fixes/plugins/mythsmolt/PKGBUILD deleted file mode 100644 index b8e421a..0000000 --- a/abs/mv-core/myth/release-fixes/plugins/mythsmolt/PKGBUILD +++ /dev/null @@ -1,27 +0,0 @@ -pkgname=mythsmolt-release-fixes -pkgver=0.21 -pkgrel=4 -pkgdesc="mythsmolt, a hardware profileing tool" -arch=('i686' 'x86_64') -url="http://www.mythvantage.com" -license=('GPL') -depends=("mythtv-release-fixes" urlgrabber hal) -source=("http://www.mythvantage.com/request.php?4") - -groups=('mythtv-extras') - -build() { - cd $startdir/src/mythsmolt_src/mythsmolt - . /etc/profile.d/qt3.sh - - # use QT3 qmake - export PATH=$QTDIR/bin:$PATH - echo "INCLUDEPATH += /usr/include/mythtv" >> mythsmolt.pro.usr - qmake mythsmolt.pro.usr - make qmake || return 1 - make -j 2 || return 1 - - make INSTALL_ROOT=$startdir/pkg install -} - - diff --git a/abs/mv-core/myth/release-fixes/plugins/mythvideo/PKGBUILD b/abs/mv-core/myth/release-fixes/plugins/mythvideo/PKGBUILD deleted file mode 100644 index 2be63e3..0000000 --- a/abs/mv-core/myth/release-fixes/plugins/mythvideo/PKGBUILD +++ /dev/null @@ -1,36 +0,0 @@ -pkgname=mythvideo-release-fixes -pkgver=17719 -pkgrel=2 -pkgdesc="Video playback and browsing plugin for MythTV" -url="http://www.mythtv.org" -arch=('i686') -depends=('mythtv-release-fixes' 'perlxml' 'perl-libwww' 'perl-uri' 'perl-xml-simple' 'ffmpeg') -license="GPL" -conflicts=('mythtv-plugins-release-fixes') -groups=('mythtv-all-plugins-release-fixes') - -source=() -_svntrunk=http://svn.mythtv.org/svn/branches/release-0-21-fixes/mythplugins -_svntrunk=http://svn.mythtv.org/svn/branches/release-0-21-fixes/mythplugins -_svnmod=mythplugins - -build() { - cd $startdir/src/ - echo svn co $_svntrunk --config-dir ./ -r $pkgver $_svnmod - svn co $_svntrunk --config-dir ./ -r $pkgver $_svnmod - cd $startdir/src/mythplugins - make distclean - PLUGIN=mythvideo - grep -q programs-libs.pro $PLUGIN/$PLUGIN/$PLUGIN.pro - if [ $? != 0 ] - then - echo "include ( ../../programs-libs.pro )" >> $PLUGIN/$PLUGIN/$PLUGIN.pro - msg "appending program lib" - fi - ./configure --prefix=/usr --disable-all --enable-mythvideo --enable-transcode - - make -j 2 || return 1 - - make INSTALL_ROOT=$startdir/pkg install -} -md5sums=('2a9fbf45ae58a3a35857ce8d7c4d12db') diff --git a/abs/mv-core/myth/release-fixes/plugins/mythweather/PKGBUILD b/abs/mv-core/myth/release-fixes/plugins/mythweather/PKGBUILD deleted file mode 100644 index 2870928..0000000 --- a/abs/mv-core/myth/release-fixes/plugins/mythweather/PKGBUILD +++ /dev/null @@ -1,37 +0,0 @@ -pkgname=mythweather-release-fixes -pkgver=17719 -pkgrel=6 -pkgdesc="Weather checking plugin for MythTV" -url="http://www.mythtv.org" -arch=('i686') -depends=('mythtv-release-fixes' 'wget' 'perl-xml-sax' 'perl-soap-lite' 'perl-image-size' 'imagemagick') -conflicts=('mythtv-plugins-release-fixes') -groups=('mythtv-all-plugins-release-fixes') -license="GPL" -source=() -#_svntrunk=http://cvs.mythtv.org/svn/trunk/mythplugins -_svntrunk=http://svn.mythtv.org/svn/branches/release-0-21-fixes/mythplugins - -_svntrunk=http://svn.mythtv.org/svn/branches/release-0-21-fixes/mythplugins -_svnmod=mythplugins - -build() { - cd $startdir/src/ - echo svn co $_svntrunk --config-dir ./ -r $pkgver $_svnmod - svn co $_svntrunk --config-dir ./ -r $pkgver $_svnmod - cd $startdir/src/mythplugins - make distclean - PLUGIN=mythweather - grep -q programs-libs.pro $PLUGIN/$PLUGIN/$PLUGIN.pro - if [ $? != 0 ] - then - echo "include ( ../../programs-libs.pro )" >> $PLUGIN/$PLUGIN/$PLUGIN.pro - msg "appending program lib" - fi - ./configure --enable-opengl --disable-all --enable-mythweather --prefix=/usr - - make -j 2 || return 1 - - make INSTALL_ROOT=$startdir/pkg install -} -md5sums=('2a9fbf45ae58a3a35857ce8d7c4d12db') diff --git a/abs/mv-core/myth/release-fixes/plugins/mythweb/PKGBUILD b/abs/mv-core/myth/release-fixes/plugins/mythweb/PKGBUILD deleted file mode 100755 index 9bddf1c..0000000 --- a/abs/mv-core/myth/release-fixes/plugins/mythweb/PKGBUILD +++ /dev/null @@ -1,34 +0,0 @@ -pkgname=mythweb-release-fixes -pkgver=17724 -pkgrel=21 -pkgdesc="mythweb" -url="http://www.mythtv.org" -license="GPL" -arch=('i686') -depends=(php fcgi libmysqlclient ) -conflicts=('mythweb' 'mythweb-fixes') -replaces=() -backup=() -install='mythweb.install' -source=(mythweblighttpd.patch dblogininit.inc ) -md5sums=() -_svntrunk=http://svn.mythtv.org/svn/branches/release-0-21-fixes/mythplugins -_svnmod=mythplugins -build() { -echo svn co $_svntrunk --config-dir ./ -r $pkgver $_svnmod - svn co $_svntrunk --config-dir ./ -r $pkgver $_svnmod -#svn co http://cvs.mythtv.org/svn/trunk/mythtv -#svn co http://cvs.mythtv.org/svn/trunk/mythplugins -#svn co http://cvs.mythtv.org/svn/trunk/myththemes -cd $startdir/src/mythplugins - -#take care of fing mythweb -mkdir -p $startdir/pkg/data/srv/httpd/htdocs/ -cp -rp mythweb $startdir/pkg/data/srv/httpd/htdocs/ -cp -f $startdir/src/dblogininit.inc $startdir/pkg/data/srv/httpd/htdocs/mythweb/includes/ -cd $startdir/pkg/data/srv/httpd/htdocs/mythweb/includes -patch -p0 < $startdir/src/mythweblighttpd.patch - -chown -R nobody:nobody $startdir/pkg/data/srv/httpd/htdocs/mythweb -chmod -R 775 $startdir/pkg/data/srv/httpd/htdocs/mythweb -} diff --git a/abs/mv-core/myth/release-fixes/plugins/mythweb/dblogininit.inc b/abs/mv-core/myth/release-fixes/plugins/mythweb/dblogininit.inc deleted file mode 100755 index c5395c5..0000000 --- a/abs/mv-core/myth/release-fixes/plugins/mythweb/dblogininit.inc +++ /dev/null @@ -1,6 +0,0 @@ - diff --git a/abs/mv-core/myth/release-fixes/plugins/mythweb/mythweb.install b/abs/mv-core/myth/release-fixes/plugins/mythweb/mythweb.install deleted file mode 100755 index e135b6c..0000000 --- a/abs/mv-core/myth/release-fixes/plugins/mythweb/mythweb.install +++ /dev/null @@ -1,37 +0,0 @@ - -# arg 1: the new package version -pre_install () { -/bin/true -} - -post_install() { - #cp /etc/lighttpd/lighttpd.conf /tmp -# sed -e "s/# .* \"mod_fastcgi\",/\"mod_fastcgi\"\,/g" /tmp/lighttpd.conf > /etc/lighttpd/lighttpd.conf - /bin/true - -} -pre_upgrade () { - pre_install -} - -# arg 1: the new package version -# arg 2: the old package version -post_upgrade() { - post_install - - /bin/true -} - -# arg 1: the old package version -pre_remove() { - /bin/true -} - -# arg 1: the old package version -post_remove() { -/bint/true -} - -op=$1 -shift -$op $* diff --git a/abs/mv-core/myth/release-fixes/plugins/mythweb/mythweblighttpd.patch b/abs/mv-core/myth/release-fixes/plugins/mythweb/mythweblighttpd.patch deleted file mode 100755 index 6403a88..0000000 --- a/abs/mv-core/myth/release-fixes/plugins/mythweb/mythweblighttpd.patch +++ /dev/null @@ -1,13 +0,0 @@ ---- database.php.orig 2007-12-31 21:25:30.000000000 +0000 -+++ database.php 2007-12-31 21:25:50.000000000 +0000 -@@ -18,6 +18,10 @@ - custom_error("Please install the MySQL libraries for PHP.\n" - .'The package is usually called something like php-mysql.'); - } -+ if (empty($_SERVER['db_server']) || empty($_SERVER['db_name']) || empty($_SERVER['db_login'])) { -+ require_once 'dblogininit.inc'; -+ } -+ - - // No database connection info defined? - if (empty($_SERVER['db_server']) || empty($_SERVER['db_name']) || empty($_SERVER['db_login'])) { diff --git a/abs/mv-core/myth/release-fixes/syth-lacquer-clean/PKGBUILD b/abs/mv-core/myth/release-fixes/syth-lacquer-clean/PKGBUILD deleted file mode 100755 index a40d639..0000000 --- a/abs/mv-core/myth/release-fixes/syth-lacquer-clean/PKGBUILD +++ /dev/null @@ -1,23 +0,0 @@ -pkgname=syth-lacquer-clean-wide -pkgver=1 -pkgrel=10 -pkgdesc="" -url="" -license="" -depends=() -makedepends=() -conflicts=() -replaces=() -backup=() - arch=('i686') -#source=($pkgname.tar.bz2) -source=(http://jmeyer.us/e107_files/downloads/SVN/$pkgname.tar.bz2) - -md5sums=() - -build() { - cd $startdir/src - mkdir -p $startdir/pkg/usr/share/mythtv/themes - cp -rp $pkgname $startdir/pkg/usr/share/mythtv/themes/ - -} diff --git a/abs/mv-core/myth/release-fixes/syth-lacquer-wide/PKGBUILD b/abs/mv-core/myth/release-fixes/syth-lacquer-wide/PKGBUILD deleted file mode 100755 index 1aa8c77..0000000 --- a/abs/mv-core/myth/release-fixes/syth-lacquer-wide/PKGBUILD +++ /dev/null @@ -1,23 +0,0 @@ -pkgname=syth-lacquer-wide -pkgver=4 -pkgrel=2 -pkgdesc="Syth for mythtv .21" -url="" -license="" -depends=() -makedepends=() -conflicts=() -replaces=() -backup=() -arch='i686' - -source=(http://www.mythvantage.com/src/syth-lacquer-wide.tgz) - -md5sums=() - -build() { - cd $startdir/src - mkdir -p $startdir/pkg/usr/share/mythtv/themes - cp -rp $pkgname $startdir/pkg/usr/share/mythtv/themes/ - -} diff --git a/abs/mv-core/myth/stable/Midnight-blue/PKGBUILD b/abs/mv-core/myth/stable/Midnight-blue/PKGBUILD new file mode 100755 index 0000000..d5fe664 --- /dev/null +++ b/abs/mv-core/myth/stable/Midnight-blue/PKGBUILD @@ -0,0 +1,21 @@ +pkgname=Midnight-blue +pkgver=21228 +pkgrel=1 +pkgdesc="" +url="" +license="" +depends=() +makedepends=() +conflicts=() +replaces=() +backup=() +source=(http://www.mythvantage.com/src/Midnight-blue.tgz) +arch=i686 +md5sums=() + +build() { + cd $startdir/src + mkdir -p $startdir/pkg/usr/share/mythtv/themes + cp -rp $pkgname $startdir/pkg/usr/share/mythtv/themes/ + +} diff --git a/abs/mv-core/myth/stable/Midnight-wide/PKGBUILD b/abs/mv-core/myth/stable/Midnight-wide/PKGBUILD new file mode 100755 index 0000000..13b0e6e --- /dev/null +++ b/abs/mv-core/myth/stable/Midnight-wide/PKGBUILD @@ -0,0 +1,21 @@ +pkgname=Midnight-wide +pkgver=21228 +pkgrel=1 +pkgdesc="" +url="" +license="" +depends=() +makedepends=() +conflicts=() +replaces=() +backup=() +source=(http://www.mythvantage.com/src/Midnight-wide.tgz) +arch=i686 +md5sums=() + +build() { + cd $startdir/src + mkdir -p $startdir/pkg/usr/share/mythtv/themes + cp -rp $pkgname $startdir/pkg/usr/share/mythtv/themes/ + +} diff --git a/abs/mv-core/myth/stable/MythVanage-mythmenu/MythVantage-menu/HOST_SETTINGS.xml b/abs/mv-core/myth/stable/MythVanage-mythmenu/MythVantage-menu/HOST_SETTINGS.xml new file mode 100755 index 0000000..c9b7e20 --- /dev/null +++ b/abs/mv-core/myth/stable/MythVanage-mythmenu/MythVantage-menu/HOST_SETTINGS.xml @@ -0,0 +1,71 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/abs/mv-core/myth/stable/MythVanage-mythmenu/MythVantage-menu/util_menu.xml b/abs/mv-core/myth/stable/MythVanage-mythmenu/MythVantage-menu/util_menu.xml new file mode 100644 index 0000000..aeecbbb --- /dev/null +++ b/abs/mv-core/myth/stable/MythVanage-mythmenu/MythVantage-menu/util_menu.xml @@ -0,0 +1,121 @@ + + + + + + + + + + + + + + + + diff --git a/abs/mv-core/myth/stable/MythVanage-mythmenu/MythVantage-menu/util_menu.xml.mv b/abs/mv-core/myth/stable/MythVanage-mythmenu/MythVantage-menu/util_menu.xml.mv new file mode 100755 index 0000000..4a94303 --- /dev/null +++ b/abs/mv-core/myth/stable/MythVanage-mythmenu/MythVantage-menu/util_menu.xml.mv @@ -0,0 +1,106 @@ + + + + + + + + + + + + + diff --git a/abs/mv-core/myth/stable/MythVanage-mythmenu/PKGBUILD b/abs/mv-core/myth/stable/MythVanage-mythmenu/PKGBUILD new file mode 100755 index 0000000..e03f7a6 --- /dev/null +++ b/abs/mv-core/myth/stable/MythVanage-mythmenu/PKGBUILD @@ -0,0 +1,15 @@ +pkgname=MythVantage-mythmenu +pkgver=21228 +pkgrel=1 +pkgdesc="Myth menu with MythVantage settings" +#depends=( mythtv-svn ) +source=() +arch=('i686') +build() { + cd $startdir/src + rsync -a --exclude=.svn $startdir/MythVantage-menu . + mkdir -p -m 755 $startdir/pkg/usr/share/mythtv/themes + cp -rp MythVantage-menu $startdir/pkg/usr/share/mythtv/themes + +} + diff --git a/abs/mv-core/myth/stable/basic-amber/PKGBUILD b/abs/mv-core/myth/stable/basic-amber/PKGBUILD new file mode 100755 index 0000000..7568b16 --- /dev/null +++ b/abs/mv-core/myth/stable/basic-amber/PKGBUILD @@ -0,0 +1,20 @@ +pkgname=basic-amber +pkgver=21228 +pkgrel=1 +pkgdesc="" +url="" +license="" +depends=() +makedepends=() +conflicts=() +replaces=() +backup=() +source=(http://www.mythvantage.com/src/basic-amber.tgz) +md5sums=() +arch=('i686') +build() { + cd $startdir/src + mkdir -p $startdir/pkg/usr/share/mythtv/themes + cp -rp $pkgname $startdir/pkg/usr/share/mythtv/themes/ + +} diff --git a/abs/mv-core/myth/stable/basic-blue/PKGBUILD b/abs/mv-core/myth/stable/basic-blue/PKGBUILD new file mode 100755 index 0000000..0e1df75 --- /dev/null +++ b/abs/mv-core/myth/stable/basic-blue/PKGBUILD @@ -0,0 +1,20 @@ +pkgname=basic-blue +pkgver=21228 +pkgrel=1 +pkgdesc="" +url="" +license="" +depends=() +makedepends=() +conflicts=() +replaces=() +backup=() +source=(http://www.mythvantage.com/src/basic-blue.tgz) +md5sums=() +arch=('i686') +build() { + cd $startdir/src + mkdir -p $startdir/pkg/usr/share/mythtv/themes + #cp -rp $pkgname $startdir/pkg/usr/local/share/mythtv/themes/ + rsync -a --exclude=.svn $pkgname $startdir/pkg/usr/share/mythtv/themes/ +} diff --git a/abs/mv-core/myth/stable/basic-green/PKGBUILD b/abs/mv-core/myth/stable/basic-green/PKGBUILD new file mode 100755 index 0000000..e0867f5 --- /dev/null +++ b/abs/mv-core/myth/stable/basic-green/PKGBUILD @@ -0,0 +1,20 @@ +pkgname=basic-green +pkgver=21228 +pkgrel=1 +pkgdesc="" +url="" +license="" +depends=() +makedepends=() +conflicts=() +replaces=() +backup=() +source=(http://www.mythvantage.com/src/basic-green.tgz) +md5sums=() +arch=('i686') +build() { + cd $startdir/src + mkdir -p $startdir/pkg/usr/share/mythtv/themes + cp -rp $pkgname $startdir/pkg/usr/share/mythtv/themes/ + +} diff --git a/abs/mv-core/myth/stable/basic-purple/PKGBUILD b/abs/mv-core/myth/stable/basic-purple/PKGBUILD new file mode 100755 index 0000000..8c470d0 --- /dev/null +++ b/abs/mv-core/myth/stable/basic-purple/PKGBUILD @@ -0,0 +1,20 @@ +pkgname=basic-purple +pkgver=21228 +pkgrel=1 +pkgdesc="" +url="" +license="" +depends=() +makedepends=() +conflicts=() +replaces=() +backup=() +source=(http://www.mythvantage.com/src/basic-purple.tgz) +md5sums=() +arch=('i686') +build() { + cd $startdir/src + mkdir -p $startdir/pkg/usr/share/mythtv/themes + cp -rp $pkgname $startdir/pkg/usr/share/mythtv/themes/ + +} diff --git a/abs/mv-core/myth/stable/basic-red/PKGBUILD b/abs/mv-core/myth/stable/basic-red/PKGBUILD new file mode 100755 index 0000000..2815672 --- /dev/null +++ b/abs/mv-core/myth/stable/basic-red/PKGBUILD @@ -0,0 +1,20 @@ +pkgname=basic-red +pkgver=21228 +pkgrel=1 +pkgdesc="" +url="" +license="" +depends=() +makedepends=() +conflicts=() +replaces=() +backup=() +source=(http://www.mythvantage.com/src/basic-red.tgz) +md5sums=() +arch=('i686') +build() { + cd $startdir/src + mkdir -p $startdir/pkg/usr/share/mythtv/themes + cp -rp $pkgname $startdir/pkg/usr/share/mythtv/themes/ + +} diff --git a/abs/mv-core/myth/stable/mp_all.sh b/abs/mv-core/myth/stable/mp_all.sh new file mode 100644 index 0000000..ef6aea8 --- /dev/null +++ b/abs/mv-core/myth/stable/mp_all.sh @@ -0,0 +1,30 @@ +#!/bin/sh +pkgver=21228 +pkgrel=1 + +# NOTE: Make sure to build and install mythtv first BEFORE building anything else +buildlist=('mythtv' 'mytharchive' 'mythbrowser' 'mythflix' 'mythgallery' 'mythgame' 'mythmovies' 'mythmusic' 'mythnews' 'mythvideo' 'mythweather' 'mythzoneminder' 'mythweb' 'myththemes' 'morethemes') +#buildlist=(mythtv-release-fixes Midnight-blue Midnight-wide MythVanage-mythmenu basic-amber basic-blue basic-green basic-purple basic-red mytharchive mythbrowser mythcontrols mythflix mythgallery mythgame mythmovietime mythmusic mythnews mythphone mythsmolt mythtv-themes mythvideo mythweather mythweb syth-lacquer-clean syth-lacquer-wide) +buildlist=(Midnight-blue Midnight-wide MythVanage-mythmenu basic-amber basic-blue basic-green basic-purple basic-red mytharchive mythbrowser mythcontrols mythflix mythgallery mythgame mythmovietime mythmusic mythnews mythphone mythsmolt mythtv-themes mythvideo mythweather mythweb syth-lacquer-wide) +# build and install +for i in `echo ${buildlist[@]:0}` +do + echo "---------- building $i ----------" + cd ./$i + + # set svn version in the PKGBUILD + sed -i s/^pkgver=.*/pkgver=$pkgver/ PKGBUILD + sed -i s/^pkgrel=.*/pkgrel=$pkgrel/ PKGBUILD + + # make the package + mp -sr --noconfirm -f -i --holdver || exit 1 + + # clean up afterwards + rm -rf pkg + rm -f *~ + + cd .. +done + +echo "" +echo "DONE!" diff --git a/abs/mv-core/myth/stable/mytharchive/PKGBUILD b/abs/mv-core/myth/stable/mytharchive/PKGBUILD new file mode 100644 index 0000000..16e4ce9 --- /dev/null +++ b/abs/mv-core/myth/stable/mytharchive/PKGBUILD @@ -0,0 +1,41 @@ +pkgname=mytharchive-release-fixes +pkgver=21228 +pkgrel=1 +pkgdesc="MythTV plugin that lets you create DVDs from or archive your recorded shows." +arch=('i686') +url="http://www.mythtv.org" +license=('GPL') +depends=('mythtv-release-fixes' 'libxmu' 'mysql-python' 'pil' 'dvdauthor' 'cdrkit' 'dvd+rw-tools' 'mjpegtools' 'transcode' ) +source=() +groups=('mythtv-all-plugins-release-fixes') +#_svntrunk=http://cvs.mythtv.org/svn/trunk/mythplugins +_svntrunk=http://svn.mythtv.org/svn/branches/release-0-21-fixes/mythplugins +_svnmod=mythplugins + + +build() { + PLUGIN=mytharchive + cd $startdir/src/ + svn co $_svntrunk --config-dir ./ -r $pkgver $_svnmod + cd $startdir/src/mythplugins + + PLUGIN=mytharchive + grep -q programs-libs.pro $PLUGIN/$PLUGIN/$PLUGIN.pro + if [ $? != 0 ] + then + echo "include ( ../../programs-libs.pro )" >> $PLUGIN/$PLUGIN/$PLUGIN.pro + msg "appending program lib" + fi + msg "Correcting configure kde3 to kde" + sed -i 's#kde3#kde#' configure || return 1 + make distclean + ./configure --prefix=/usr --enable-opengl --disable-all --enable-create-archive --enable-create-dvd --enable-mytharchive || return 1 + qmake mythplugins.pro || return 1 + make qmake || return 1 + msg "Correcting Makefile kde3 to kde" + sed -i 's#kde3#kde#' ./mytharchive/mytharchive/Makefile || return 1 + make -j 2 || return 1 + make INSTALL_ROOT=$startdir/pkg install +} + + diff --git a/abs/mv-core/myth/stable/mythbrowser/PKGBUILD b/abs/mv-core/myth/stable/mythbrowser/PKGBUILD new file mode 100644 index 0000000..674536e --- /dev/null +++ b/abs/mv-core/myth/stable/mythbrowser/PKGBUILD @@ -0,0 +1,34 @@ + +pkgname=mythbrowser-release-fixes +pkgver=21228 +pkgrel=1 +pkgdesc="Mini web browser for MythTV" +url="http://www.mythtv.org" +arch=('i686') +depends=('mythtv-release-fixes' 'wget' 'libxvmc' 'kdelibs3') +conflicts=('mythtv-plugins-release-fixes') +groups=('mythtv-all-plugins-release-fixes') +license="GPL" +source=() +_svntrunk=http://svn.mythtv.org/svn/branches/release-0-21-fixes/mythplugins +_svnmod=mythplugins +build() { + cd $startdir/src/ + echo svn co $_svntrunk --config-dir ./ -r $pkgver $_svnmod + svn co $_svntrunk --config-dir ./ -r $pkgver $_svnmod + cd $startdir/src/mythplugins + pwd + PLUGIN=mythbrowser + grep -q programs-libs.pro $PLUGIN/$PLUGIN/$PLUGIN.pro + if [ $? != 0 ] + then + echo "include ( ../../programs-libs.pro )" >> $PLUGIN/$PLUGIN/$PLUGIN.pro + msg "appending program lib" + fi + make distclean + ./configure --prefix=/usr --enable-opengl --disable-all --enable-mythbrowser || return 1 + # sed -i 's#kde3#kde#' ./mythbrowser/mythbrowser/Makefile || return 1 + make || return 1 + + make INSTALL_ROOT=$startdir/pkg install +} diff --git a/abs/mv-core/myth/stable/mythcontrols/PKGBUILD b/abs/mv-core/myth/stable/mythcontrols/PKGBUILD new file mode 100644 index 0000000..5fe329b --- /dev/null +++ b/abs/mv-core/myth/stable/mythcontrols/PKGBUILD @@ -0,0 +1,36 @@ +pkgname=mythcontrols-release-fixes +pkgver=21228 +pkgrel=1 +pkgdesc="Experimental controls for MythTV" +url="http://www.mythtv.org" +arch=('i686') +depends=('mythtv'-release-fixes) +conflicts=('mythtv-plugins-release-fixes') +groups=('mythtv-all-plugins-release-fixes') +license="GPL" +source=() +_svntrunk=http://svn.mythtv.org/svn/branches/release-0-21-fixes/mythplugins +_svntrunk=http://svn.mythtv.org/svn/branches/release-0-21-fixes/mythplugins +_svnmod=mythplugins + + +build() { + cd $startdir/src/ + echo svn co $_svntrunk --config-dir ./ -r $pkgver $_svnmod + svn co $_svntrunk --config-dir ./ -r $pkgver $_svnmod + cd $startdir/src/mythplugins +PLUGIN=mythcontrols +grep -q programs-libs.pro $PLUGIN/$PLUGIN/$PLUGIN.pro +if [ $? != 0 ] +then + echo "include ( ../../programs-libs.pro )" >> $PLUGIN/$PLUGIN/$PLUGIN.pro + msg "appending program lib" + fi + make distclean + ./configure --disable-all --enable-opengl --enable-mythcontrols --prefix=/usr + + make -j 2 || return 1 + + make INSTALL_ROOT=$startdir/pkg install +} + diff --git a/abs/mv-core/myth/stable/mythflix/PKGBUILD b/abs/mv-core/myth/stable/mythflix/PKGBUILD new file mode 100644 index 0000000..a417a28 --- /dev/null +++ b/abs/mv-core/myth/stable/mythflix/PKGBUILD @@ -0,0 +1,36 @@ +pkgname=mythflix-release-fixes +pkgver=21228 +pkgrel=1 +pkgdesc="Netflix access plugin for MythTV" +url="http://www.mythtv.org" +arch=('i686') +depends=('mythtv-release-fixes') +conflicts=('mythtv-plugins-release-fixes') +groups=('mythtv-all-plugins-release-fixes') +license="GPL" +source=() +#_svntrunk=http://cvs.mythtv.org/svn/trunk/mythplugins +_svntrunk=http://svn.mythtv.org/svn/branches/release-0-21-fixes/mythplugins + +_svntrunk=http://svn.mythtv.org/svn/branches/release-0-21-fixes/mythplugins +_svnmod=mythplugins + +build() { + cd $startdir/src/ + echo svn co $_svntrunk --config-dir ./ -r $pkgver $_svnmod + svn co $_svntrunk --config-dir ./ -r $pkgver $_svnmod + cd $startdir/src/mythplugins + PLUGIN=mythflix + grep -q programs-libs.pro $PLUGIN/$PLUGIN/$PLUGIN.pro + if [ $? != 0 ] + then + echo "include ( ../../programs-libs.pro )" >> $PLUGIN/$PLUGIN/$PLUGIN.pro + msg "appending program lib" + fi + make distclean + ./configure --prefix=/usr --disable-all --enable-opengl --enable-mythflix + + make -j 2 || return 1 + + make INSTALL_ROOT=$startdir/pkg install +} diff --git a/abs/mv-core/myth/stable/mythgallery/PKGBUILD b/abs/mv-core/myth/stable/mythgallery/PKGBUILD new file mode 100644 index 0000000..9ca81ff --- /dev/null +++ b/abs/mv-core/myth/stable/mythgallery/PKGBUILD @@ -0,0 +1,36 @@ +pkgname=mythgallery-release-fixes +pkgver=21228 +pkgrel=1 +pkgdesc="Image gallery plugin for MythTV" +url="http://www.mythtv.org" +arch=('i686') +depends=('mythtv-release-fixes' 'libexif' 'libtiff') +conflicts=('mythtv-plugins-release-fixes') +groups=('mythtv-all-plugins-release-fixes') +license="GPL" +source=() +_svntrunk=http://svn.mythtv.org/svn/branches/release-0-21-fixes/mythplugins +_svntrunk=http://svn.mythtv.org/svn/branches/release-0-21-fixes/mythplugins +_svnmod=mythplugins + +build() { + cd $startdir/src/ + echo svn co $_svntrunk --config-dir ./ -r $pkgver $_svnmod + svn co $_svntrunk --config-dir ./ -r $pkgver $_svnmod + cd $startdir/src/mythplugins + export QMAKESPEC='linux-g++' + PLUGIN=mythgallery + grep -q programs-libs.pro $PLUGIN/$PLUGIN/$PLUGIN.pro + if [ $? != 0 ] + then + echo "include ( ../../programs-libs.pro )" >> $PLUGIN/$PLUGIN/$PLUGIN.pro + msg "appending program lib" + fi + make distclean + ./configure --prefix=/usr --disable-all --enable-opengl --enable-mythgallery --enable-exif + + make -j 2 || return 1 + + make INSTALL_ROOT=$startdir/pkg install +} + diff --git a/abs/mv-core/myth/stable/mythgame/PKGBUILD b/abs/mv-core/myth/stable/mythgame/PKGBUILD new file mode 100644 index 0000000..2dc412a --- /dev/null +++ b/abs/mv-core/myth/stable/mythgame/PKGBUILD @@ -0,0 +1,36 @@ +pkgname=mythgame-release-fixes +pkgver=21228 +pkgrel=1 +pkgdesc="Emulation plugin for MythTV" +url="http://www.mythtv.org" +arch=('i686') +depends=('mythtv-release-fixes' 'zlib') +conflicts=('mythtv-plugins-release-fixes') +groups=('mythtv-all-plugins-release-fixes') +license="GPL" +source=() +_svntrunk=http://svn.mythtv.org/svn/branches/release-0-21-fixes/mythplugins +_svntrunk=http://svn.mythtv.org/svn/branches/release-0-21-fixes/mythplugins +_svnmod=mythplugins + +build() { + cd $startdir/src/ + echo svn co $_svntrunk --config-dir ./ -r $pkgver $_svnmod + svn co $_svntrunk --config-dir ./ -r $pkgver $_svnmod + cd $startdir/src/mythplugins +PLUGIN=mythgame +grep -q programs-libs.pro $PLUGIN/$PLUGIN/$PLUGIN.pro +if [ $? != 0 ] +then + echo "include ( ../../programs-libs.pro )" >> $PLUGIN/$PLUGIN/$PLUGIN.pro + msg "appending program lib" + fi + export QMAKESPEC='linux-g++' + make distclean + ./configure --disable-all --enable-opengl --enable-mythgame --prefix=/usr + + make -j 2 || return 1 + + make INSTALL_ROOT=$startdir/pkg install +} + diff --git a/abs/mv-core/myth/stable/mythmovietime/PKGBUILD b/abs/mv-core/myth/stable/mythmovietime/PKGBUILD new file mode 100644 index 0000000..6a5ae8f --- /dev/null +++ b/abs/mv-core/myth/stable/mythmovietime/PKGBUILD @@ -0,0 +1,35 @@ +pkgname=mythmovietime-release-fixes +pkgver=21228 +pkgrel=1 +pkgdesc="Emulation plugin for MythTV" +url="http://www.mythtv.org" +arch=('i686') +depends=('mythtv-release-fixes' 'zlib') +conflicts=('mythtv-plugins-release-fixes') +groups=('mythtv-all-plugins-release-fixes') +license="GPL" +source=() +_svntrunk=http://svn.mythtv.org/svn/branches/release-0-21-fixes/mythplugins +_svnmod=mythplugins + +build() { + cd $startdir/src/ + echo svn co $_svntrunk --config-dir ./ -r $pkgver $_svnmod + svn co $_svntrunk --config-dir ./ -r $pkgver $_svnmod + cd $startdir/src/mythplugins +PLUGIN=mythmovietime +grep -q programs-libs.pro $PLUGIN/$PLUGIN/$PLUGIN.pro +if [ $? != 0 ] +then + echo "include ( ../../programs-libs.pro )" >> $PLUGIN/$PLUGIN/$PLUGIN.pro + msg "appending program lib" + fi + export QMAKESPEC='linux-g++' + make distclean + ./configure --prefix=/usr --disable-all --enable-mythmovies + + make -j 2 || return 1 + + make INSTALL_ROOT=$startdir/pkg install +} + diff --git a/abs/mv-core/myth/stable/mythmusic/PKGBUILD b/abs/mv-core/myth/stable/mythmusic/PKGBUILD new file mode 100644 index 0000000..0617b0b --- /dev/null +++ b/abs/mv-core/myth/stable/mythmusic/PKGBUILD @@ -0,0 +1,39 @@ +pkgname=mythmusic-release-fixes +pkgver=21228 +pkgrel=1 +pkgdesc="Music playing plugin for MythTV" +url="http://www.mythtv.org" +arch=('i686' 'x86_64') + + +depends=("mythtv-release-fixes>=${pkgver}" 'libid3tag' 'libmad' 'libvorbis' 'flac>=1.1.4' 'libcdaudio' \ + 'cdparanoia' 'fftw2' 'sdl' 'faad2>=2.6.1' 'lame' 'taglib' \ + 'libvisual-plugins' 'libvisual-projectm') + +conflicts=('mythtv-plugins-release-fixes') +groups=('mythtv-all-plugins-release-fixes') +license="GPL" +source=() +_svntrunk=http://svn.mythtv.org/svn/branches/release-0-21-fixes/mythplugins +_svnmod=mythplugins + +build() { + cd $startdir/src/ + make distclean + echo svn co $_svntrunk --config-dir ./ -r $pkgver $_svnmod + svn co $_svntrunk --config-dir ./ -r $pkgver $_svnmod + cd $startdir/src/mythplugins/mythmusic +# patch -p1 < ../../gcc4.3.patch + cd $startdir/src/mythplugins + ./configure --disable-all --enable-mythmusic --enable-fftw --enable-sdl --disable-aac --enable-opengl --prefix=/usr + PLUGIN=mythmusic + grep -q programs-libs.pro $PLUGIN/$PLUGIN/$PLUGIN.pro + if [ $? != 0 ] + then + echo "include ( ../../programs-libs.pro )" >> $PLUGIN/$PLUGIN/$PLUGIN.pro + msg "appending program lib" + fi + + make || return 1 + make INSTALL_ROOT=$startdir/pkg install +} diff --git a/abs/mv-core/myth/stable/mythmusic/music_flac.patch b/abs/mv-core/myth/stable/mythmusic/music_flac.patch new file mode 100644 index 0000000..b152249 --- /dev/null +++ b/abs/mv-core/myth/stable/mythmusic/music_flac.patch @@ -0,0 +1,293 @@ +--- flacdecoder.cpp.old 2007-03-11 18:14:37.000000000 -0400 ++++ flacdecoder.cpp 2007-03-11 18:15:34.000000000 -0400 +@@ -17,7 +17,7 @@ + + #include + +-static FLAC__SeekableStreamDecoderReadStatus flacread(const FLAC__SeekableStreamDecoder *decoder, FLAC__byte bufferp[], unsigned *bytes, void *client_data) ++static FLAC__StreamDecoderReadStatus flacread(const FLAC__StreamDecoder *decoder, FLAC__byte bufferp[], unsigned *bytes, void *client_data) + { + decoder = decoder; + +@@ -26,27 +26,27 @@ + + if (len == -1) + { +- return FLAC__SEEKABLE_STREAM_DECODER_READ_STATUS_ERROR; ++ return FLAC__STREAM_DECODER_READ_STATUS_END_OF_STREAM; + } + + *bytes = len; +- return FLAC__SEEKABLE_STREAM_DECODER_READ_STATUS_OK; ++ return FLAC__STREAM_DECODER_READ_STATUS_CONTINUE; + } + +-static FLAC__SeekableStreamDecoderSeekStatus flacseek(const FLAC__SeekableStreamDecoder *decoder, FLAC__uint64 absolute_byte_offset, void *client_data) ++static FLAC__StreamDecoderSeekStatus flacseek(const FLAC__StreamDecoder *decoder, FLAC__uint64 absolute_byte_offset, void *client_data) + { + decoder = decoder; + FlacDecoder *dflac = (FlacDecoder *)client_data; + + if (!dflac->input()->isDirectAccess()) +- return FLAC__SEEKABLE_STREAM_DECODER_SEEK_STATUS_ERROR; ++ return FLAC__STREAM_DECODER_SEEK_STATUS_ERROR; + + if (dflac->input()->at(absolute_byte_offset)) +- return FLAC__SEEKABLE_STREAM_DECODER_SEEK_STATUS_OK; +- return FLAC__SEEKABLE_STREAM_DECODER_SEEK_STATUS_ERROR; ++ return FLAC__STREAM_DECODER_SEEK_STATUS_OK; ++ return FLAC__STREAM_DECODER_SEEK_STATUS_ERROR; + } + +-static FLAC__SeekableStreamDecoderTellStatus flactell(const FLAC__SeekableStreamDecoder *decoder, FLAC__uint64 *absolute_byte_offset, void *client_data) ++static FLAC__StreamDecoderTellStatus flactell(const FLAC__StreamDecoder *decoder, FLAC__uint64 *absolute_byte_offset, void *client_data) + { + decoder = decoder; + FlacDecoder *dflac = (FlacDecoder *)client_data; +@@ -54,20 +54,20 @@ + long t = dflac->input()->at(); + *absolute_byte_offset = t; + +- return FLAC__SEEKABLE_STREAM_DECODER_TELL_STATUS_OK; ++ return FLAC__STREAM_DECODER_TELL_STATUS_OK; + } + +-static FLAC__SeekableStreamDecoderLengthStatus flaclength(const FLAC__SeekableStreamDecoder *decoder, FLAC__uint64 *stream_length, void *client_data) ++static FLAC__StreamDecoderLengthStatus flaclength(const FLAC__StreamDecoder *decoder, FLAC__uint64 *stream_length, void *client_data) + { + decoder = decoder; + + FlacDecoder *dflac = (FlacDecoder *)client_data; + + *stream_length = dflac->input()->size(); +- return FLAC__SEEKABLE_STREAM_DECODER_LENGTH_STATUS_OK; ++ return FLAC__STREAM_DECODER_LENGTH_STATUS_OK; + } + +-static FLAC__bool flaceof(const FLAC__SeekableStreamDecoder *decoder, void *client_data) ++static FLAC__bool flaceof(const FLAC__StreamDecoder *decoder, void *client_data) + { + decoder = decoder; + +@@ -76,7 +76,7 @@ + return dflac->input()->atEnd(); + } + +-static FLAC__StreamDecoderWriteStatus flacwrite(const FLAC__SeekableStreamDecoder *decoder, const FLAC__Frame *frame, const FLAC__int32 * const buffer[], void *client_data) ++static FLAC__StreamDecoderWriteStatus flacwrite(const FLAC__StreamDecoder *decoder, const FLAC__Frame *frame, const FLAC__int32 * const buffer[], void *client_data) + { + decoder = decoder; + +@@ -132,7 +132,7 @@ + } + } + +-static void flacmetadata(const FLAC__SeekableStreamDecoder *decoder, const FLAC__StreamMetadata *metadata, void *client_data) ++static void flacmetadata(const FLAC__StreamDecoder *decoder, const FLAC__StreamMetadata *metadata, void *client_data) + { + decoder = decoder; + +@@ -156,11 +156,11 @@ + } + } + +-static void flacerror(const FLAC__SeekableStreamDecoder *decoder, FLAC__StreamDecoderErrorStatus status, void *client_data) ++static void flacerror(const FLAC__StreamDecoder *decoder, FLAC__StreamDecoderErrorStatus status, void *client_data) + { + decoder = decoder; + +- FLAC__FileDecoder *file_decoder = (FLAC__FileDecoder *)client_data; ++ FLAC__StreamDecoder *file_decoder = (FLAC__StreamDecoder *)client_data; + + file_decoder = file_decoder; + status = status; +@@ -262,17 +262,8 @@ + } + } + +- decoder = FLAC__seekable_stream_decoder_new(); +- FLAC__seekable_stream_decoder_set_md5_checking(decoder, false); +- FLAC__seekable_stream_decoder_set_read_callback(decoder, flacread); +- FLAC__seekable_stream_decoder_set_seek_callback(decoder, flacseek); +- FLAC__seekable_stream_decoder_set_tell_callback(decoder, flactell); +- FLAC__seekable_stream_decoder_set_length_callback(decoder, flaclength); +- FLAC__seekable_stream_decoder_set_eof_callback(decoder, flaceof); +- FLAC__seekable_stream_decoder_set_write_callback(decoder, flacwrite); +- FLAC__seekable_stream_decoder_set_metadata_callback(decoder, flacmetadata); +- FLAC__seekable_stream_decoder_set_error_callback(decoder, flacerror); +- FLAC__seekable_stream_decoder_set_client_data(decoder, this); ++ decoder = FLAC__stream_decoder_new(); ++ FLAC__stream_decoder_set_md5_checking(decoder, false); + + freq = 0; + bitrate = 0; +@@ -281,8 +272,17 @@ + totalTime = 0; + totalTime = totalTime < 0 ? 0 : totalTime; + +- FLAC__seekable_stream_decoder_init(decoder); +- FLAC__seekable_stream_decoder_process_until_end_of_metadata(decoder); ++ FLAC__stream_decoder_init_stream(decoder, ++ flacread, ++ flacseek, ++ flactell, ++ flaclength, ++ flaceof, ++ flacwrite, ++ flacmetadata, ++ flacerror, ++ this); ++ FLAC__stream_decoder_process_until_end_of_metadata(decoder); + + inited = TRUE; + return TRUE; +@@ -295,8 +295,8 @@ + + void FlacDecoder::deinit() + { +- FLAC__seekable_stream_decoder_finish(decoder); +- FLAC__seekable_stream_decoder_delete(decoder); ++ FLAC__stream_decoder_finish(decoder); ++ FLAC__stream_decoder_delete(decoder); + + if (input()->isOpen()) + input()->close(); +@@ -330,7 +330,7 @@ + } + + bool flacok = true; +- FLAC__SeekableStreamDecoderState decoderstate; ++ FLAC__StreamDecoderState decoderstate; + + while (! done && ! finish) { + lock(); +@@ -340,12 +340,12 @@ + FLAC__uint64 sample = (FLAC__uint64)(seekTime * 44100.0); + if (sample > totalsamples - 50) + sample = totalsamples - 50; +- FLAC__seekable_stream_decoder_seek_absolute(decoder, sample); ++ FLAC__stream_decoder_seek_absolute(decoder, sample); + seekTime = -1.0; + } + +- flacok = FLAC__seekable_stream_decoder_process_single(decoder); +- decoderstate = FLAC__seekable_stream_decoder_get_state(decoder); ++ flacok = FLAC__stream_decoder_process_single(decoder); ++ decoderstate = FLAC__stream_decoder_get_state(decoder); + + if (decoderstate == 0 || decoderstate == 1) + { +--- flacdecoder.h.old 2007-03-11 18:14:37.000000000 -0400 ++++ flacdecoder.h 2007-03-11 18:14:12.000000000 -0400 +@@ -35,7 +35,7 @@ + char *output_buf; + ulong output_bytes, output_at; + +- FLAC__SeekableStreamDecoder *decoder; ++ FLAC__StreamDecoder *decoder; + + unsigned int bks; + bool done, finish; +--- flacencoder.cpp.old 2007-03-11 18:14:37.000000000 -0400 ++++ flacencoder.cpp 2007-03-11 18:14:12.000000000 -0400 +@@ -9,7 +9,7 @@ + #include "flacencoder.h" + #include "metaioflacvorbiscomment.h" + +-#include ++#include + #include + #include + +@@ -29,32 +29,32 @@ + int rice_parameter_search_dist = 0; + int max_lpc_order = 8; + +- encoder = FLAC__file_encoder_new(); ++ encoder = FLAC__stream_encoder_new(); + +- FLAC__file_encoder_set_streamable_subset(encoder, true); +- FLAC__file_encoder_set_do_mid_side_stereo(encoder, do_mid_side); +- FLAC__file_encoder_set_loose_mid_side_stereo(encoder, loose_mid_side); +- FLAC__file_encoder_set_channels(encoder, NUM_CHANNELS); +- FLAC__file_encoder_set_bits_per_sample(encoder, 16); +- FLAC__file_encoder_set_sample_rate(encoder, 44100); +- FLAC__file_encoder_set_blocksize(encoder, blocksize); +- FLAC__file_encoder_set_max_lpc_order(encoder, max_lpc_order); +- FLAC__file_encoder_set_qlp_coeff_precision(encoder, qlp_coeff_precision); +- FLAC__file_encoder_set_do_qlp_coeff_prec_search(encoder, false); +- FLAC__file_encoder_set_do_escape_coding(encoder, do_escape_coding); +- FLAC__file_encoder_set_do_exhaustive_model_search(encoder, ++ FLAC__stream_encoder_set_streamable_subset(encoder, true); ++ FLAC__stream_encoder_set_do_mid_side_stereo(encoder, do_mid_side); ++ FLAC__stream_encoder_set_loose_mid_side_stereo(encoder, loose_mid_side); ++ FLAC__stream_encoder_set_channels(encoder, NUM_CHANNELS); ++ FLAC__stream_encoder_set_bits_per_sample(encoder, 16); ++ FLAC__stream_encoder_set_sample_rate(encoder, 44100); ++ FLAC__stream_encoder_set_blocksize(encoder, blocksize); ++ FLAC__stream_encoder_set_max_lpc_order(encoder, max_lpc_order); ++ FLAC__stream_encoder_set_qlp_coeff_precision(encoder, qlp_coeff_precision); ++ FLAC__stream_encoder_set_do_qlp_coeff_prec_search(encoder, false); ++ FLAC__stream_encoder_set_do_escape_coding(encoder, do_escape_coding); ++ FLAC__stream_encoder_set_do_exhaustive_model_search(encoder, + do_exhaustive_model_search); +- FLAC__file_encoder_set_min_residual_partition_order(encoder, ++ FLAC__stream_encoder_set_min_residual_partition_order(encoder, + min_residual_partition_order); +- FLAC__file_encoder_set_max_residual_partition_order(encoder, ++ FLAC__stream_encoder_set_max_residual_partition_order(encoder, + max_residual_partition_order); +- FLAC__file_encoder_set_rice_parameter_search_dist(encoder, ++ FLAC__stream_encoder_set_rice_parameter_search_dist(encoder, + rice_parameter_search_dist); + +- FLAC__file_encoder_set_filename(encoder, outfile.local8Bit()); ++ + +- int ret = FLAC__file_encoder_init(encoder); +- if (ret != FLAC__FILE_ENCODER_OK) ++ int ret = FLAC__stream_encoder_init_file(encoder, outfile.local8Bit(), NULL, NULL); ++ if (ret != FLAC__STREAM_ENCODER_OK) + { + VERBOSE(VB_GENERAL, QString("Error initializing FLAC encoder." + " Got return code: %1").arg(ret)); +@@ -70,8 +70,8 @@ + + if (encoder) + { +- FLAC__file_encoder_finish(encoder); +- FLAC__file_encoder_delete(encoder); ++ FLAC__stream_encoder_finish(encoder); ++ FLAC__stream_encoder_delete(encoder); + } + + if (metadata) +@@ -102,7 +102,7 @@ + + if(sampleindex == MAX_SAMPLES || (length == 0 && sampleindex > 0) ) + { +- if (!FLAC__file_encoder_process(encoder, ++ if (!FLAC__stream_encoder_process(encoder, + (const FLAC__int32 * const *) input, + sampleindex)) + { +--- flacencoder.h.old 2007-03-11 18:14:37.000000000 -0400 ++++ flacencoder.h 2007-03-11 18:14:12.000000000 -0400 +@@ -4,7 +4,7 @@ + #include + + #define HAVE_INTTYPES_H +-#include ++#include + + #include "encoder.h" + +@@ -21,7 +21,7 @@ + int addSamples(int16_t *bytes, unsigned int len); + + private: +- FLAC__FileEncoder *encoder; ++ FLAC__StreamEncoder *encoder; + unsigned int sampleindex; + FLAC__int32 inputin[NUM_CHANNELS][MAX_SAMPLES]; + FLAC__int32 *input[NUM_CHANNELS]; diff --git a/abs/mv-core/myth/stable/mythnews/PKGBUILD b/abs/mv-core/myth/stable/mythnews/PKGBUILD new file mode 100644 index 0000000..a5fa26e --- /dev/null +++ b/abs/mv-core/myth/stable/mythnews/PKGBUILD @@ -0,0 +1,34 @@ +pkgname=mythnews-release-fixes +pkgver=21228 +pkgrel=1 +pkgdesc="News checking plugin for MythTV" +url="http://www.mythtv.org" +arch=('i686') +depends=('mythtv-release-fixes') +conflicts=('mythtv-plugins-release-fixes') +groups=('mythtv-all-plugins-release-fixes') +license="GPL" +source=() +_svntrunk=http://svn.mythtv.org/svn/branches/release-0-21-fixes/mythplugins +_svntrunk=http://svn.mythtv.org/svn/branches/release-0-21-fixes/mythplugins +_svnmod=mythplugins +build() { + cd $startdir/src/ + echo svn co $_svntrunk --config-dir ./ -r $pkgver $_svnmod + svn co $_svntrunk --config-dir ./ -r $pkgver $_svnmod + cd $startdir/src/mythplugins + PLUGIN=mythnews + grep -q programs-libs.pro $PLUGIN/$PLUGIN/$PLUGIN.pro + if [ $? != 0 ] + then + echo "include ( ../../programs-libs.pro )" >> $PLUGIN/$PLUGIN/$PLUGIN.pro + msg "appending program lib" + fi + make distclean + ./configure --disable-all --enable-mythnews --prefix=/usr + + make -j 2 || return 1 + + make INSTALL_ROOT=$startdir/pkg install +} +md5sums=('2a9fbf45ae58a3a35857ce8d7c4d12db') diff --git a/abs/mv-core/myth/stable/mythphone/PKGBUILD b/abs/mv-core/myth/stable/mythphone/PKGBUILD new file mode 100644 index 0000000..7fd3b46 --- /dev/null +++ b/abs/mv-core/myth/stable/mythphone/PKGBUILD @@ -0,0 +1,42 @@ +pkgname=mythphone-release-fixes +pkgver=21228 +pkgrel=1 +pkgdesc="Plugin that allows phone calls to be made to MythTv" +url="http://www.mythtv.org" +arch=('i686') +depends=('mythtv-release-fixes') +conflicts=('mythtv-plugins-release-fixes') +groups=('mythtv-all-plugins-release-fixes') +license="GPL" +source=() +_svntrunk=http://svn.mythtv.org/svn/branches/release-0-21-fixes/mythplugins +_svntrunk=http://svn.mythtv.org/svn/branches/release-0-21-fixes/mythplugins +_svnmod=mythplugins + +build() { + cd $startdir/src/ + echo svn co $_svntrunk --config-dir ./ -r $pkgver $_svnmod + svn co $_svntrunk --config-dir ./ -r $pkgver $_svnmod + cd $startdir/src/mythplugins + make distclean + PLUGIN=mythphone + grep -q programs-libs.pro $PLUGIN/$PLUGIN/$PLUGIN.pro + if [ $? != 0 ] + then + echo "include ( ../../programs-libs.pro )" >> $PLUGIN/$PLUGIN/$PLUGIN.pro + msg "appending program lib" + fi + + msg "Correcting configure kde3 to kde" + sed -i 's#kde3#kde#' configure || return 1 + ./configure --prefix=/usr --enable-opengl --disable-all --enable-mythphone || return 1 + qmake mythplugins.pro || return 1 + make qmake || return 1 + + msg "Correcting Makefile kde3 to kde" + sed -i 's#kde3#kde#' ./mythphone/mythphone/Makefile || return 1 + + make -j 2 || return 1 + make INSTALL_ROOT=$startdir/pkg install +} + diff --git a/abs/mv-core/myth/stable/mythsmolt/PKGBUILD b/abs/mv-core/myth/stable/mythsmolt/PKGBUILD new file mode 100644 index 0000000..db1b977 --- /dev/null +++ b/abs/mv-core/myth/stable/mythsmolt/PKGBUILD @@ -0,0 +1,27 @@ +pkgname=mythsmolt-release-fixes +pkgver=21228 +pkgrel=1 +pkgdesc="mythsmolt, a hardware profileing tool" +arch=('i686' 'x86_64') +url="http://www.mythvantage.com" +license=('GPL') +depends=("mythtv-release-fixes" urlgrabber hal) +source=("http://www.mythvantage.com/request.php?4") + +groups=('mythtv-extras') + +build() { + cd $startdir/src/mythsmolt_src/mythsmolt + . /etc/profile.d/qt3.sh + + # use QT3 qmake + export PATH=$QTDIR/bin:$PATH + echo "INCLUDEPATH += /usr/include/mythtv" >> mythsmolt.pro.usr + qmake mythsmolt.pro.usr + make qmake || return 1 + make -j 2 || return 1 + + make INSTALL_ROOT=$startdir/pkg install +} + + diff --git a/abs/mv-core/myth/stable/mythtv-release-fixes/3466-v1.patch b/abs/mv-core/myth/stable/mythtv-release-fixes/3466-v1.patch new file mode 100755 index 0000000..912ce27 --- /dev/null +++ b/abs/mv-core/myth/stable/mythtv-release-fixes/3466-v1.patch @@ -0,0 +1,240 @@ +Index: libs/libmythtv/NuppelVideoPlayer.cpp +=================================================================== +--- libs/libmythtv/NuppelVideoPlayer.cpp (revision 13535) ++++ libs/libmythtv/NuppelVideoPlayer.cpp (working copy) +@@ -1475,6 +1475,12 @@ + } + } + ++void NuppelVideoPlayer::DrawUnusedRects(bool sync) ++{ ++ if (videoOutput) ++ videoOutput->DrawUnusedRects(sync); ++} ++ + void NuppelVideoPlayer::ResetCaptions(uint mode_override) + { + uint origMode = textDisplayMode; +Index: libs/libmythtv/guidegrid.h +=================================================================== +--- libs/libmythtv/guidegrid.h (revision 13535) ++++ libs/libmythtv/guidegrid.h (working copy) +@@ -86,8 +86,9 @@ + void paintEvent(QPaintEvent *); + + private slots: +- void timeout(); +- void jumpToChannelTimeout(); ++ void timeCheckTimeout(void); ++ void repaintVideoTimeout(void); ++ void jumpToChannelTimeout(void); + + private: + void keyPressEvent(QKeyEvent *e); +@@ -174,6 +175,7 @@ + QString currentTimeColor; + + QTimer *timeCheck; ++ QTimer *videoRepaintTimer; + + bool keyDown; + +Index: libs/libmythtv/tv_play.h +=================================================================== +--- libs/libmythtv/tv_play.h (revision 13535) ++++ libs/libmythtv/tv_play.h (working copy) +@@ -112,6 +112,7 @@ + void StopEmbeddingOutput(void); + bool IsEmbedding(void); + void EPGChannelUpdate(uint chanid, QString channum); ++ void DrawUnusedRects(bool sync); + + // Recording commands + int PlayFromRecorder(int recordernum); +Index: libs/libmythtv/guidegrid.cpp +=================================================================== +--- libs/libmythtv/guidegrid.cpp (revision 13535) ++++ libs/libmythtv/guidegrid.cpp (working copy) +@@ -261,9 +261,14 @@ + + timeCheck = NULL; + timeCheck = new QTimer(this); +- connect(timeCheck, SIGNAL(timeout()), SLOT(timeout()) ); ++ connect(timeCheck, SIGNAL(timeout()), SLOT(timeCheckTimeout()) ); + timeCheck->start(200); + ++ videoRepaintTimer = new QTimer(this); ++ QObject::connect(videoRepaintTimer, SIGNAL(timeout()), ++ this, SLOT(repaintVideoTimeout())); ++ videoRepaintTimer->start(1000); ++ + selectState = false; + + updateBackground(); +@@ -281,18 +286,46 @@ + for (int x = 0; x < MAX_DISPLAY_TIMES; x++) + { + if (m_timeInfos[x]) ++ { + delete m_timeInfos[x]; ++ m_timeInfos[x] = NULL; ++ } + } + + for (int y = 0; y < MAX_DISPLAY_CHANS; y++) + { + if (m_programs[y]) ++ { + delete m_programs[y]; ++ m_programs[y] = NULL; ++ } + } + + m_channelInfos.clear(); + +- delete theme; ++ if (theme) ++ { ++ delete theme; ++ theme = NULL; ++ } ++ ++ if (jumpToChannelTimer) ++ { ++ jumpToChannelTimer->deleteLater(); ++ jumpToChannelTimer = NULL; ++ } ++ ++ if (timeCheck) ++ { ++ timeCheck->deleteLater(); ++ timeCheck = NULL; ++ } ++ ++ if (videoRepaintTimer) ++ { ++ videoRepaintTimer->deleteLater(); ++ videoRepaintTimer = NULL; ++ } + } + + void GuideGrid::keyPressEvent(QKeyEvent *e) +@@ -533,7 +566,7 @@ + return m_channelInfos[idx].chanid; + } + +-void GuideGrid::timeout() ++void GuideGrid::timeCheckTimeout(void) + { + timeCheck->changeInterval((int)(60 * 1000)); + QTime new_time = QTime::currentTime(); +@@ -561,6 +594,12 @@ + repaint(curInfoRect, false); + } + ++void GuideGrid::repaintVideoTimeout(void) ++{ ++ timeCheck->changeInterval(1000); ++ update(videoRect); ++} ++ + void GuideGrid::fillChannelInfos(bool gotostartchannel) + { + m_channelInfos.clear(); +@@ -974,6 +1013,7 @@ + if (r.intersects(videoRect) && m_player) + { + timeCheck->changeInterval((int)(200)); ++ m_player->DrawUnusedRects(false); + } + + qApp->unlock(); +@@ -1794,7 +1834,10 @@ + ChannelInfo info = m_channelInfos[idx]; + + if (m_player) ++ { + m_player->EPGChannelUpdate(info.chanid, info.chanstr); ++ videoRepaintTimer->start(200); ++ } + } + + // +Index: libs/libmythtv/NuppelVideoPlayer.h +=================================================================== +--- libs/libmythtv/NuppelVideoPlayer.h (revision 13535) ++++ libs/libmythtv/NuppelVideoPlayer.h (working copy) +@@ -118,6 +118,7 @@ + void StopEmbedding(void); + void ExposeEvent(void); + bool IsEmbedding(void); ++ void DrawUnusedRects(bool sync); + + // Audio Sets + void SetNoAudio(void) { no_audio_out = true; } +Index: libs/libmythtv/tv_play.cpp +=================================================================== +--- libs/libmythtv/tv_play.cpp (revision 13535) ++++ libs/libmythtv/tv_play.cpp (working copy) +@@ -5035,6 +5035,12 @@ + return false; + } + ++void TV::DrawUnusedRects(bool sync) ++{ ++ if (nvp) ++ nvp->DrawUnusedRects(sync); ++} ++ + void TV::doEditSchedule(int editType) + { + if (!playbackinfo) +Index: libs/libmythtv/videoout_xv.cpp +=================================================================== +--- libs/libmythtv/videoout_xv.cpp (revision 13535) ++++ libs/libmythtv/videoout_xv.cpp (working copy) +@@ -2465,7 +2465,7 @@ + } + + if ((needrepaint || xv_need_bobdeint_repaint) && +- (VideoOutputSubType() >= XVideo)) ++ (VideoOutputSubType() >= XVideo) && !embedding) + { + DrawUnusedRects(/* don't do a sync*/false); + } +@@ -2480,12 +2480,6 @@ + + void VideoOutputXv::DrawUnusedRects(bool sync) + { +- // Unfortunately, this gets drawn in the wrong place on prebuffering +- // pauses when embedding and this is rarely useful when embedding +- // since the background is drawn in guidegrid so we bail here. -- dtk +- if (embedding) +- return; +- + // boboff assumes the smallest interlaced resolution is 480 lines - 5% + bool use_bob = (m_deinterlacing && m_deintfiltername == "bobdeint"); + int boboff_raw = (int)round(((double)display_video_rect.height()) / +@@ -2512,7 +2506,12 @@ + + X11L; + +- if (xv_draw_colorkey && needrepaint) ++ // This is used to avoid drawing the colorkey when embedding and ++ // not using overlay. This is needed because we don't paint this ++ // in the vertical retrace period when calling this from the EPG. ++ bool clrdraw = xv_colorkey || !embedding; ++ ++ if (xv_draw_colorkey && needrepaint && clrdraw) + { + XSetForeground(XJ_disp, XJ_gc, xv_colorkey); + XFillRectangle(XJ_disp, XJ_curwin, XJ_gc, +@@ -2521,7 +2520,7 @@ + display_visible_rect.width(), + display_visible_rect.height() - 2 * boboff); + } +- else if (xv_draw_colorkey && xv_need_bobdeint_repaint) ++ else if (xv_draw_colorkey && xv_need_bobdeint_repaint && clrdraw) + { + // if this is only for deinterlacing mode switching, draw + // the border areas, presumably the main image is undamaged. diff --git a/abs/mv-core/myth/stable/mythtv-release-fixes/PKGBUILD b/abs/mv-core/myth/stable/mythtv-release-fixes/PKGBUILD new file mode 100755 index 0000000..a22451d --- /dev/null +++ b/abs/mv-core/myth/stable/mythtv-release-fixes/PKGBUILD @@ -0,0 +1,79 @@ +pkgname=mythtv-release-fixes +pkgver=21228 +pkgrel=1 +pkgdesc=".21 A personal video recorder for Linux" +url="http://www.mythtv.org" +license="GPL" +depends=('lame' 'libmysqlclient' 'alsa-lib' 'wget' 'qt3' 'x-server' 'freetype2' 'libmpeg2' 'libxml2' 'libraw1394' 'lirc' 'perl-date-manip' 'libavc1394' 'libdc1394' 'libiec61883') +makedepends=('subversion') +conflicts=(mythtv-svn) +replaces=() +backup=() +options=(!strip) +MAKEFLAGS="-j6" + +install='mythtv.install' +#source=(mythbackend myth.sh 3466-v1.patch reload.patch) +source=(mythbackend myth.sh myth.find_orphans.pl dbconfig.patch myththemedmenu.cpp.patch myththemedmenu.h.patch screenshots2.diff screenshot_jump.patch pop_be_restart.h.patch pop_be_restart.cpp.patch jump_snapshot.patch smolt_jump.patch) +arch=('i686') +md5sums=() +_svntrunk=http://svn.mythtv.org/svn/branches/release-0-21-fixes/mythtv +#_svntrunk=http://cvs.mythtv.org/svn/trunk/mythtv +_svnmod=mythtv + +build() { + svn co $_svntrunk --config-dir ./ -r $pkgver $_svnmod + cd $startdir/src/mythtv + patch -p0 < ../dbconfig.patch + grep snapshot programs/mythfrontend/networkcontrol.cpp|grep -q jumpMap + status=$? + + if [ $status != 0 ] + then + echo "patching for screenshot" + patch -p0 < ../screenshots2.diff + patch -p0 < ../screenshot_jump.patch + # patch -p0 < ../jump_snapshot.patch + + else + echo "screenshot already patched" + fi + patch -p0 < ../myththemedmenu.cpp.patch + patch -p0 < ../myththemedmenu.h.patch + patch -p0 < ../pop_be_restart.h.patch + patch -p0 < ../pop_be_restart.cpp.patch + patch -p0 < ../smolt_jump.patch + sed -i -e "s/\`(svnversion \$\${SVNTREEDIR} 2>\/dev\/null) || echo Unknown\`/$pkgver/" version.pro + make distclean + make clean + ./configure --prefix=/usr --enable-opengl-vsync --enable-dvb --enable-firewire --compile-type=release --with-bindings=perl --disable-audio-arts --disable-xrandr --disable-audio-jack --disable-directfb --disable-xvmc --disable-xvmcw --enable-xvmc-pro --enable-xvmc-opengl + +. /etc/profile + + make + make INSTALL_ROOT=$startdir/pkg install + mkdir -p $startdir/pkg/usr/share/mythtv/contrib + mkdir -p $startdir/pkg/etc/rc.d + mkdir -p $startdir/pkg/var/log/mythtv + mkdir -p $startdir/pkg/etc/profile.d + install -m0755 ../myth.sh $startdir/pkg/etc/profile.d/ +# install contrib + mkdir -p $startdir/pkg/usr/local/share/mythtv/contrib || return 1 + #cp -rp contrib/* $startdir/pkg/usr/local/share/mythtv/contrib + rsync -a --exclude=.svn contrib/* $startdir/pkg/usr/local/share/mythtv/contrib + echo "-release-fixes" > $startdir/pkg/usr/local/share/mythtv/.releasetype + #install -m0755 themes/*.ttf $startdir/pkg/usr/local/share/mythtv/themes/ + # set suid on mythfrontend +# chmod a+s $startdir/pkg/usr/local/bin/mythfrontend + +# mkdir -p $startdir/pkg/usr/lib/ +# mv $startdir/pkg/usr/local/lib/perl5 $startdir/pkg/usr/lib/perl5 + cd $startdir/src/mythtv/contrib + gcc -Wall -o firewire_tester firewire_tester.c -liec61883 -lraw1394 + install -m0755 firewire_tester $startdir/pkg/usr/bin/firewire_tester +# install -m0755 $startdir/pkg/usr/share/mythtv/contrib/optimize_mythdb.pl $startdir/pkg/usr/local/bin/optimize_mythdb.pl +# cp $startdir/src/myth.find_orphans.pl $startdir/pkg/usr/share/mythtv/contrib/myth.find_orphans.pl +# install -m0755 $startdir/pkg/usr/share/mythtv/contrib/myth.find_orphans.pl $startdir/pkg/usr/bin/myth.find_orphans.pl + + +} diff --git a/abs/mv-core/myth/stable/mythtv-release-fixes/dbconfig.patch b/abs/mv-core/myth/stable/mythtv-release-fixes/dbconfig.patch new file mode 100644 index 0000000..1d181ac --- /dev/null +++ b/abs/mv-core/myth/stable/mythtv-release-fixes/dbconfig.patch @@ -0,0 +1,19 @@ +--- libs/libmyth/mythcontext.cpp 2007-10-04 00:20:28.000000000 -0500 ++++ libs/libmyth/mythcontext.cpp.new 2007-11-12 22:54:57.000000000 -0600 +@@ -852,14 +852,14 @@ + cout << endl << error << endl << endl; + response = getResponse("Would you like to configure the database " + "connection now?", +- "yes"); ++ "no"); + if (!response || response.left(1).lower() != "y") + return false; + + params.dbHostName = getResponse("Database host name:", + params.dbHostName); + response = getResponse("Should I test connectivity to this host " +- "using the ping command?", "yes"); ++ "using the ping command?", "no"); + params.dbHostPing = (!response || response.left(1).lower() != "y"); + + params.dbPort = intResponse("Database non-default port:", diff --git a/abs/mv-core/myth/stable/mythtv-release-fixes/debug_uitypes.cpp.patch b/abs/mv-core/myth/stable/mythtv-release-fixes/debug_uitypes.cpp.patch new file mode 100644 index 0000000..b87b89f --- /dev/null +++ b/abs/mv-core/myth/stable/mythtv-release-fixes/debug_uitypes.cpp.patch @@ -0,0 +1,21 @@ +--- mythtv/libs/libmyth/uitypes.cpp.orig 2007-11-30 14:03:07.000000000 -0600 ++++ mythtv/libs/libmyth/uitypes.cpp 2007-11-30 14:04:09.000000000 -0600 +@@ -3831,15 +3831,15 @@ + // + // Debugging, draw edges around bins + // +- +- /* ++ if (m_debug == true) ++ { + p->setPen(QColor(255,0,0)); + CornerMap::Iterator it; + for ( it = bin_corners.begin(); it != bin_corners.end(); ++it ) + { + p->drawRect(it.data()); + } +- */ ++ } + + } + diff --git a/abs/mv-core/myth/stable/mythtv-release-fixes/debug_xmlparse.cpp.patch b/abs/mv-core/myth/stable/mythtv-release-fixes/debug_xmlparse.cpp.patch new file mode 100644 index 0000000..f479bbe --- /dev/null +++ b/abs/mv-core/myth/stable/mythtv-release-fixes/debug_xmlparse.cpp.patch @@ -0,0 +1,14 @@ +--- mythtv/libs/libmyth/xmlparse.cpp.orig 2007-11-30 14:03:00.000000000 -0600 ++++ mythtv/libs/libmyth/xmlparse.cpp 2007-11-30 14:06:22.000000000 -0600 +@@ -2618,6 +2618,11 @@ + area = parseRect(getFirstText(info)); + normalizeRect(area); + } ++ if (info.tagName() == "debug") ++ { ++ if (getFirstText(info) == "true") ++ container->SetDebug(true); ++ } + else if (info.tagName() == "image") + { + QString imgname = ""; diff --git a/abs/mv-core/myth/stable/mythtv-release-fixes/jump_snapshot.patch b/abs/mv-core/myth/stable/mythtv-release-fixes/jump_snapshot.patch new file mode 100644 index 0000000..2d2c68b --- /dev/null +++ b/abs/mv-core/myth/stable/mythtv-release-fixes/jump_snapshot.patch @@ -0,0 +1,13 @@ +--- libs/libmythui/mythmainwindow.cpp.orrig 2008-03-19 18:43:08.000000000 +0000 ++++ libs/libmythui/mythmainwindow.cpp 2008-03-19 18:43:51.000000000 +0000 +@@ -1132,7 +1132,9 @@ + + void MythMainWindow::JumpTo(const QString& destination, bool pop) + { +- if (d->destinationMap.count(destination) > 0 && d->exitmenucallback == NULL) ++ if (destination == "ScreenShot") ++ screenShot(); ++ else if (d->destinationMap.count(destination) > 0 && d->exitmenucallback == NULL) + { + d->exitingtomain = true; + d->popwindows = pop; diff --git a/abs/mv-core/myth/stable/mythtv-release-fixes/myth.find_orphans.pl b/abs/mv-core/myth/stable/mythtv-release-fixes/myth.find_orphans.pl new file mode 100755 index 0000000..c258e1d --- /dev/null +++ b/abs/mv-core/myth/stable/mythtv-release-fixes/myth.find_orphans.pl @@ -0,0 +1,260 @@ +#!/usr/bin/perl + +# check for recording anomolies - +# based somewhat on greg froese's "myth.rebuilddatabase.pl" +# -- Lincoln Dale , September 2006 +# 2007-03-11: Added pretty print of unknown files vs. orphaned thumbnails. (Robert Kulagowski) + +# The intent of this script is to be able to find orphaned rows in the 'recorded' table +# (entries which don't have matching media files) and orphaned media files (potentially +# taking up gigabytes of otherwise usable disk space) which have no matching row in +# the 'recorded' db table. +# +# By default, running the script will simply return a list of problems it finds. +# Running with --dodbdelete will remove db recorded rows for which there is no matching +# media file. Running with --dodelete will delete media files for which there is no +# matching db record. +# +# This script may be useful to fix up some orphaned db entries (causes mythweb to run +# verrry slow) as well as reclaim some disk space from some orphaned media files. +# (in an ideal world, neither of these would ever happen, but i've seen both happen in reality). +# This script makes it easy to keep track of whether it has or hasn't happened, even if you +# have thousands of recordings and terabytes of stored media. +# +# no warranties expressed or implied. if you run this and it deletes all your recordings +# and sets mythtv to fill up all your disk space with The Home Shopping Network, its entirely +# your fault. + +my $progname = "myth.find_orphans.pl"; +my $revision = "0.20"; + +use DBI; +use Sys::Hostname; +use Getopt::Long; + +# +# options +# + +my $opt_host = hostname; +my $opt_dbhost = "localhost"; +my $opt_database = "mythconverg"; +my $opt_user = "mythtv"; +my $opt_pass = "mythtv"; +my $opt_ext = "{nuv,mpg,mpeg,avi}"; +my $opt_dir = ""; +my $opt_dodelete = 0; +my $opt_dodbdelete = 0; +my $debug = 0; +my $opt_help = 0; + +GetOptions( + 'host=s' => \$opt_host, + 'dbhost=s' => \$opt_dbhost, + 'database=s' => \$opt_database, + 'user=s' => \$opt_user, + 'pass=s' => \$opt_pass, + 'dir=s' => \$opt_dir, + 'dodelete' => \$opt_dodelete, + 'dodbdelete' => \$opt_dodbdelete, + 'debug+' => \$debug, + 'help' => \$opt_help, + 'h' => \$opt_help, + 'v' => \$opt_help); + +if ($opt_help) { + print<connect("dbi:mysql:database=$opt_database:host=$opt_dbhost","$opt_user","$opt_pass"))) { + die "Cannot connect to database $opt_database on host $opt_dbhost: $!\n"; +} + +if ($opt_dir eq "") { + &dir_lookup("SELECT dirname FROM storagegroup WHERE hostname=(?)"); + &dir_lookup("SELECT data FROM settings WHERE value='RecordFilePrefix' AND hostname=(?)"); + + printf STDERR "Recording directories ($opt_host): $opt_dir\n" if $debug; +} + +if ($opt_dir eq "") { + printf "ERROR: no directory found or specified\n"; + exit 1; +} + +foreach $d (split(/,/,$opt_dir)) { + $d =~ s/\/$//g; # strip trailing / + $dirs{$d}++; +} + + +# +# look in recorded table, make sure we can find every file .. +# + +my $q = "SELECT title, subtitle, starttime, endtime, chanid, basename FROM recorded WHERE hostname=(?) ORDER BY starttime"; +$sth = $dbh->prepare($q); +$sth->execute($opt_host) || die "Could not execute ($q): $!\n"; + +while (my @row=$sth->fetchrow_array) { + ($title, $subtitle, $starttime, $endtime, $channel, $basename) = @row; + + # see if we can find it... + $loc = find_file($basename); + if ($loc eq "") { + printf "Missing media: %s (title:%s, start:%s)\n",$basename,$title,$starttime; + $missing_recordings++; + + if ($opt_dodbdelete) { + my $sql = sprintf "DELETE FROM recorded WHERE basename LIKE \"%s\" LIMIT 1",$basename; + printf "performing database delete: %s\n",$sql; + $dbh->do($sql) || die "Could not execute $sql: $!\n"; + } + } else { + $valid_recordings++; + $seen_basename{$basename}++; + $seen_basename{$basename.".png"}++; # thumbnail + } +} + +# +# look in recording directories, see if there are extra files not in database +# + +foreach my $this_dir (keys %dirs) { + opendir(DIR, $this_dir) || die "cannot open directory $this_dir: $!\n"; + foreach $this_file (readdir(DIR)) { + if (-f "$this_dir/$this_file") { + + next if ($this_file eq "nfslockfile.lock"); + next if ($this_file =~ m/^mythconv.*/); + next if ($this_dir eq "/data/database_backup"); + + my $this_filesize = -s "$this_dir/$this_file"; + if ($seen_basename{$this_file} == 0) { + $sorted_filesizes{$this_filesize} .= sprintf "unknown file [%s]: %s/%s\n",pretty_filesize($this_filesize),$this_dir,$this_file; + $unknown_size += $this_filesize; + if (substr($this_file,-4) eq ".png") { + $unknown_thumbnail++; + } + else { + $unknown_files++; + } + + if ($opt_dodelete) { + printf STDERR "deleting [%s]: %s/%s\n",pretty_filesize($this_filesize),$this_dir,$this_file; + unlink "$this_dir/$this_file"; + + if (-f "$this_dir/$this_file") { + $errors++; + printf "ERROR: could not delete $this_dir/$this_file\n"; + } + } + } else { + $known_files++; + $known_size += $this_filesize; + printf "KNOWN file [%s]: %s/%s\n",pretty_filesize($this_filesize),$this_dir,$this_file if $debug; + } + } else { + printf "NOT A FILE: %s/%s\n",$this_dir,$this_file if $debug; + } + } + closedir DIR; +} + + +# +# finished, report results +# + +foreach my $key (sort { $a <=> $b } keys %sorted_filesizes) { + printf $sorted_filesizes{$key}; +} + +printf "Summary:\n"; +printf " Host: %s, Directories: %s\n", $opt_host, join(" ",keys %dirs); +printf " %d ERRORS ENCOUNTERED (see above for details)\n",$errors if ($errors > 0); +printf " %d valid recording%s, %d missing recording%s %s\n", + $valid_recordings, ($valid_recordings != 1 ? "s" : ""), + $missing_recordings, ($missing_recordings != 1 ? "s" : ""), + ($missing_recordings > 0 ? ($opt_dodbdelete ? "were fixed" : "not fixed, check above is valid and use --dodbdelete to fix") : ""); +printf " %d known media files using %s\n %d orphaned thumbnails with no corresponding recording\n %d unknown files using %s %s\n", + $known_files, pretty_filesize($known_size), + $unknown_thumbnail,$unknown_files, pretty_filesize($unknown_size), + ($unknown_files > 0 ? ($opt_dodelete ? "were fixed" : "not fixed, check above and use --dodelete to clean up if the above output is accurate") : ""); + +exit(0); + +########################################################################### +# filesize bling + +sub pretty_filesize +{ + local($fsize) = @_; + return sprintf "%0.1fGB",($fsize / 1000000000) if ($fsize >= 1000000000); + return sprintf "%0.1fMB",($fsize / 1000000) if ($fsize >= 1000000); + return sprintf "%0.1fKB",($fsize / 1000) if ($fsize >= 1000); + return sprintf "%0.0fB",$fsize; +} + +########################################################################### +# find a file in directories without globbing + +sub find_file +{ + local($fname) = @_; + + foreach my $d (keys %dirs) { + my $f = $d."/".$fname; + if (-e $f) { + return $f; + } + } + return; +} + +########################################################################### + +sub dir_lookup +{ + my $query = shift; + + $sth = $dbh->prepare($query); + $sth->execute($opt_host) || die "Could not execute ($dir_query)"; + while (my @row = $sth->fetchrow_array) { + $opt_dir .= "," if ($opt_dir ne ""); + $opt_dir .= $row[0]; + } +} + +########################################################################### diff --git a/abs/mv-core/myth/stable/mythtv-release-fixes/myth.sh b/abs/mv-core/myth/stable/mythtv-release-fixes/myth.sh new file mode 100755 index 0000000..fb7122c --- /dev/null +++ b/abs/mv-core/myth/stable/mythtv-release-fixes/myth.sh @@ -0,0 +1,4 @@ +export PATH=$PATH:/usr/local/bin +# set core file size to 0 +ulimit -c 0 +export MALLOC_CHECK_=0 \ No newline at end of file diff --git a/abs/mv-core/myth/stable/mythtv-release-fixes/mythbackend b/abs/mv-core/myth/stable/mythtv-release-fixes/mythbackend new file mode 100755 index 0000000..f96c6b7 --- /dev/null +++ b/abs/mv-core/myth/stable/mythtv-release-fixes/mythbackend @@ -0,0 +1,37 @@ +#!/bin/bash + +. /etc/rc.conf +. /etc/rc.d/functions + +PID=`pidof -o %PPID /usr/bin/mythbackend` +case "$1" in + start) + stat_busy "Starting MythTV Backend" + [ ! -e /var/run/mysqld.pid ] && echo -n "mysqld not started" && stat_fail && exit + [ -z "$PID" ] && /usr/local/bin/mythbackend -d -l /var/log/mythbackend.log -v quiet + if [ $? -gt 0 ]; then + stat_fail + else + echo $PID > /var/run/mythbackend.pid + add_daemon mythbackend + stat_done + fi + ;; + stop) + stat_busy "Stopping MythTV Backend" + [ ! -z "$PID" ] && kill $PID &>/dev/null + if [ $? -gt 0 ]; then + stat_fail + else + rm_daemon mythbackend + stat_done + fi + ;; + restart) + $0 stop + $0 start + ;; + *) + echo "usage: $0 {start|stop|restart}" +esac +exit 0 diff --git a/abs/mv-core/myth/stable/mythtv-release-fixes/mythbackend.sh b/abs/mv-core/myth/stable/mythtv-release-fixes/mythbackend.sh new file mode 100755 index 0000000..e7a7b70 --- /dev/null +++ b/abs/mv-core/myth/stable/mythtv-release-fixes/mythbackend.sh @@ -0,0 +1,117 @@ +#!/bin/bash +# +# /etc/rc.d/init.d/mythbackend +# +# Starts the mythbackend as a daemon +# +# chkconfig: 345 90 10 +# description: Starts the mythbackend process as a daemon after the XWindows \ +# system is started, in runlevel 5. This allows scheduled \ +# recordings to occur without manual intervention. +# processname: mythbackend + +# Copyright (c) by Michael Thomson +# With thanks to Stu Tomlinson +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +# Default values to use if none are supplied in the config file. +# User who should start the mythbackend processes +MBE_USER="root" +# Directory holding the mythbackend binary +MBE_LOCATION="/usr/local/bin/" +# Name of mythbackend binary +MBE_PROG="mythbackend" +# Full path to mythbackend log file +MBE_LOGFILE="/var/log/mythtv/mythbackend.log" + +# Source function library. +. /etc/init.d/functions + +# Source config file if available +if [ -f "/etc/sysconfig/mythbackend" ]; then + . /etc/sysconfig/mythbackend +fi + +test -x ${MBE_LOCATION}${MBE_PROG} || exit 0 + +RETVAL=0 + +# +# See how we were called. +# + +start() { + # Check if mythbackend is already running + if [ ! -f /var/lock/subsys/${MBE_PROG} ]; then + echo -n "Starting ${MBE_PROG}: " + # /usr/local/bin/mythbackend -d -l /some/log/file + #daemon --user ${MBE_USER} ${MBE_LOCATION}${MBE_PROG} -d -l ${MBE_LOGFILE} + ${MBE_LOCATION}${MBE_PROG} -d -l ${MBE_LOGFILE} + RETVAL=$? + [ $RETVAL -eq 0 ] && touch /var/lock/subsys/${MBE_PROG} + echo + fi + return $RETVAL +} + +stop() { + echo -n "Stopping ${MBE_PROG}: " + killproc ${MBE_LOCATION}${MBE_PROG} + RETVAL=$? + [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/${MBE_PROG} + echo + return $RETVAL +} + + +restart() { + stop + start +} + +reload() { + restart +} + +status_at() { + status ${MBE_LOCATION}${MBE_PROG} +} + +case "$1" in +start) + start + ;; +stop) + stop + ;; +reload|restart) + restart + ;; +condrestart) + if [ -f /var/lock/subsys/${MBE_PROG} ]; then + restart + fi + ;; +status) + status_at + ;; +*) + echo "Usage: $0 {start|stop|restart|condrestart|status}" + exit 1 +esac + +exit $? +exit $RETVAL diff --git a/abs/mv-core/myth/stable/mythtv-release-fixes/myththemedmenu.cpp.patch b/abs/mv-core/myth/stable/mythtv-release-fixes/myththemedmenu.cpp.patch new file mode 100644 index 0000000..f5baccd --- /dev/null +++ b/abs/mv-core/myth/stable/mythtv-release-fixes/myththemedmenu.cpp.patch @@ -0,0 +1,125 @@ +--- libs/libmythui/myththemedmenu.cpp.orig 2008-01-31 15:26:38.000000000 +0000 ++++ libs/libmythui/myththemedmenu.cpp 2008-02-07 22:24:27.000000000 +0000 +@@ -2102,6 +2102,10 @@ + } + lastbutton = NULL; + } ++ else if (action == "MENU") ++ { ++ parent->doMenu(); ++ } + else if (action == "EJECT") + { + myth_eject(); +@@ -2482,6 +2486,8 @@ + + if (d->foundtheme) + d->parseMenu(menufile); ++ ++ m_menuPopup = NULL; + } + + MythThemedMenu::~MythThemedMenu(void) +@@ -2592,3 +2598,102 @@ + MythScreenType::aboutToShow(); + d->updateLCD(); + } ++void MythThemedMenu::doMenu() ++{ ++ int allowsd = gContext->GetNumSetting("AllowQuitShutdown"); ++ if (m_menuPopup) ++ return; ++ QString label = "System Menu"; ++ MythScreenStack *mainStack = GetMythMainWindow()->GetMainStack(); ++ m_menuPopup = new MythDialogBox(label, mainStack, "menuPopup"); ++ if (m_menuPopup->Create()) ++ mainStack->AddScreen(m_menuPopup); ++ ++ ++ if ( allowsd != 0 && allowsd !=4 ) ++ { ++ m_menuPopup->SetReturnEvent(this,"popmenu_exit"); ++ m_menuPopup->AddButton("Shutdown"); ++ m_menuPopup->AddButton("Reboot"); ++ m_menuPopup->AddButton("About"); ++ m_menuPopup->AddButton("Cancel"); ++ } ++ else ++ { ++ m_menuPopup->SetReturnEvent(this,"popmenu_noexit"); ++ m_menuPopup->AddButton("About"); ++ m_menuPopup->AddButton("Cancel"); ++ } ++} ++ ++void MythThemedMenu::aboutScreen() ++{ ++{ ++ extern const char *myth_source_version; ++ extern const char *myth_source_path; ++ QString distro_line; ++ distro_line=""; ++ ++ QFile file("/etc/os_myth_release"); ++ if ( file.open(IO_ReadOnly | IO_Translate) ) ++ { ++ QTextStream t( &file ); // use a text stream ++ distro_line = t.readLine(); ++ file.close(); ++ } ++ ++ QString label = ""; ++ label.append(QObject::tr("Revision: ") + myth_source_version + " \n Branch:" + myth_source_path + "\n" + distro_line ); ++ ++ MythScreenStack *mainStack = GetMythMainWindow()->GetMainStack(); ++ m_menuPopup = new MythDialogBox(label, mainStack, "About"); ++ if (m_menuPopup->Create()) ++ mainStack->AddScreen(m_menuPopup); ++ ++ m_menuPopup->SetReturnEvent(this,"About"); ++ m_menuPopup->AddButton("OK!"); ++ } ++} ++ ++void MythThemedMenu::customEvent(QCustomEvent *event) ++{ ++ if (event->type() == kMythDialogBoxCompletionEventType) ++ { ++ DialogCompletionEvent *dce = ++ dynamic_cast(event); ++ ++ QString resultid= dce->GetId(); ++ int buttonnum = dce->GetResult(); ++ if (resultid == "popmenu_exit") ++ { ++ if (buttonnum == 0) ++ { ++ QString halt_cmd = gContext->GetSetting("HaltCommand", ++ "sudo /sbin/halt -p"); ++ if (!halt_cmd.isEmpty()) ++ system(halt_cmd.ascii()); ++ } ++ ++ if (buttonnum == 1) ++ { ++ QString reboot_cmd = gContext->GetSetting("RebootCommand", ++ "sudo /sbin/reboot"); ++ if (!reboot_cmd.isEmpty()) ++ system(reboot_cmd.ascii()); ++ } ++ ++ if (buttonnum == 2) ++ { ++ aboutScreen(); ++ } ++ } ++ ++ if (resultid == "popmenu_noexit") ++ { ++ if (buttonnum == 0) ++ aboutScreen(); ++ } ++ ++ m_menuPopup = NULL; ++ } ++} diff --git a/abs/mv-core/myth/stable/mythtv-release-fixes/myththemedmenu.h.patch b/abs/mv-core/myth/stable/mythtv-release-fixes/myththemedmenu.h.patch new file mode 100644 index 0000000..9744b11 --- /dev/null +++ b/abs/mv-core/myth/stable/mythtv-release-fixes/myththemedmenu.h.patch @@ -0,0 +1,25 @@ +--- libs/libmythui/myththemedmenu.h.orig 2008-01-31 15:26:45.000000000 +0000 ++++ libs/libmythui/myththemedmenu.h 2008-02-07 21:00:22.000000000 +0000 +@@ -2,6 +2,7 @@ + #define MYTHTHEMEDMENU_H_ + + #include "mythscreentype.h" ++#include "mythdialogbox.h" + + class MythMainWindow; + class MythThemedMenuPrivate; +@@ -26,8 +27,14 @@ + + void ReloadTheme(void); + void ReloadExitKey(void); ++ + virtual void aboutToShow(void); + ++ void doMenu(); ++ void aboutScreen(); ++ MythDialogBox *m_menuPopup; ++ void customEvent(QCustomEvent *event); ++ + protected: + virtual bool keyPressEvent(QKeyEvent *e); + virtual void gestureEvent(MythUIType *origtype, MythGestureEvent *ge); diff --git a/abs/mv-core/myth/stable/mythtv-release-fixes/mythtv.install b/abs/mv-core/myth/stable/mythtv-release-fixes/mythtv.install new file mode 100755 index 0000000..2c87aee --- /dev/null +++ b/abs/mv-core/myth/stable/mythtv-release-fixes/mythtv.install @@ -0,0 +1,59 @@ + +# arg 1: the new package version +pre_install () { + echo "backing up the database" + dbver=`pacman -Q mythtv-release-fixes | awk ' { print $2 } '` + if [ ! -e /data/databases_backup ] + then + mkdir -p /data/database_backup + fi + mysqldump -u mythtv -pmythtv mythconverg -c > /data/database_backup/${dbver}.dump.sql +} + +post_install() { + mkdir -p /data/home + /usr/sbin/useradd -G users,video,audio,optical -m -d /data/home/mythtv mythtv + /usr/sbin/usermod -G users,video,audio,optical mythtv +# mkdir /var/log/mythtv +# chown -R mythtv:users /var/log/mythtv + dbver=`pacman -Q mythtv-release-fixes | awk ' { print $2 } '` + if [ ! -e /data/database_backup ] + then + mkdir -p /data/database_backup + fi + chown mythtv:nobody /data/database_backup + chmod g+s /data/database_backup + + mysqldump -u mythtv -pmythtv mythconverg -c > /data/database_backup/${dbver}.dump.sql + grep -q /usr/local/lib /etc/ld.so.conf + if [ $? = 1 ] + then + echo "/usr/local/lib" >> /etc/ld.so.conf + fi + +} +pre_upgrade () { + pre_install +} + +# arg 1: the new package version +# arg 2: the old package version +post_upgrade() { + post_install + + /bin/true +} + +# arg 1: the old package version +pre_remove() { + /bin/true +} + +# arg 1: the old package version +post_remove() { +/bint/true +} + +op=$1 +shift +$op $* diff --git a/abs/mv-core/myth/stable/mythtv-release-fixes/pop_be_restart.cpp.patch b/abs/mv-core/myth/stable/mythtv-release-fixes/pop_be_restart.cpp.patch new file mode 100644 index 0000000..a7a5326 --- /dev/null +++ b/abs/mv-core/myth/stable/mythtv-release-fixes/pop_be_restart.cpp.patch @@ -0,0 +1,51 @@ +--- libs/libmythui/myththemedmenu.cpp.orig 2008-03-17 15:54:00.000000000 -0500 ++++ libs/libmythui/myththemedmenu.cpp 2008-03-17 15:54:09.000000000 -0500 +@@ -2615,12 +2615,14 @@ + m_menuPopup->SetReturnEvent(this,"popmenu_exit"); + m_menuPopup->AddButton("Shutdown"); + m_menuPopup->AddButton("Reboot"); ++ m_menuPopup->AddButton("MythBackend restart"); + m_menuPopup->AddButton("About"); + m_menuPopup->AddButton("Cancel"); + } + else + { + m_menuPopup->SetReturnEvent(this,"popmenu_noexit"); ++ m_menuPopup->AddButton("MythBackend restart"); + m_menuPopup->AddButton("About"); + m_menuPopup->AddButton("Cancel"); + } +@@ -2655,6 +2657,11 @@ + } + } + ++void MythThemedMenu::Restartmythbackend() ++{ ++ system("/usr/MythVantage/bin/mythbeselect -restart"); ++} ++ + void MythThemedMenu::customEvent(QCustomEvent *event) + { + if (event->type() == kMythDialogBoxCompletionEventType) +@@ -2684,6 +2691,10 @@ + + if (buttonnum == 2) + { ++ Restartmythbackend(); ++ } ++ if (buttonnum == 3) ++ { + aboutScreen(); + } + } +@@ -2691,6 +2702,10 @@ + if (resultid == "popmenu_noexit") + { + if (buttonnum == 0) ++ { ++ Restartmythbackend(); ++ } ++ if (buttonnum == 1) + aboutScreen(); + } + diff --git a/abs/mv-core/myth/stable/mythtv-release-fixes/pop_be_restart.h.patch b/abs/mv-core/myth/stable/mythtv-release-fixes/pop_be_restart.h.patch new file mode 100644 index 0000000..1fba435 --- /dev/null +++ b/abs/mv-core/myth/stable/mythtv-release-fixes/pop_be_restart.h.patch @@ -0,0 +1,10 @@ +--- libs/libmythui/myththemedmenu.h.orig 2008-03-17 15:48:28.000000000 -0500 ++++ libs/libmythui/myththemedmenu.h 2008-03-17 15:48:30.000000000 -0500 +@@ -32,6 +32,7 @@ + + void doMenu(); + void aboutScreen(); ++ void Restartmythbackend(); + MythDialogBox *m_menuPopup; + void customEvent(QCustomEvent *event); + diff --git a/abs/mv-core/myth/stable/mythtv-release-fixes/reload.patch b/abs/mv-core/myth/stable/mythtv-release-fixes/reload.patch new file mode 100644 index 0000000..9cc2044 --- /dev/null +++ b/abs/mv-core/myth/stable/mythtv-release-fixes/reload.patch @@ -0,0 +1,52 @@ +--- programs/mythfrontend/main.cpp 2007-11-13 15:34:40.000000000 +0000 ++++ programs/mythfrontend/main.cpp.new 2007-11-13 15:36:15.000000000 +0000 +@@ -72,6 +72,9 @@ + RunProgramGuide(chanid, channum); + } + ++ ++ ++ + void startFinder(void) + { + RunProgramFind(); +@@ -761,6 +764,7 @@ + } + } + ++ + void InitJumpPoints(void) + { + REG_JUMP("Reload Theme", "", "", reloadTheme); +@@ -784,6 +788,17 @@ + TV::SetEmbedPbbFunc(PlaybackBox::RunPlaybackBox); + } + ++ ++void signal_USR1_handler(int){ ++ VERBOSE(VB_GENERAL, "SIG USR1 received, reloading theme"); ++ RemoteSendMessage("CLEAR_SETTINGS_CACHE"); ++ gContext->ActivateSettingsCache(false); ++ qApp->processEvents(); ++ GetMythMainWindow()->JumpTo("Reload Theme"); ++ gContext->removeCurrentLocation(); ++ gContext->ActivateSettingsCache(true); ++} ++ + int internal_media_init() + { + REG_MEDIAPLAYER("Internal", "MythTV's native media player.", +@@ -1411,7 +1426,12 @@ + + if (!RunMenu(themedir)) + break; +- ++ struct sigaction new_action, old_action; ++ /* Set up the structure to specify the new action. */ ++ new_action.sa_handler = signal_USR1_handler; ++ ::sigemptyset(&new_action.sa_mask); ++ new_action.sa_flags = 0; ++ ::sigaction (SIGUSR1, &new_action, &old_action); + qApp->setMainWidget(mainWindow); + qApp->exec(); + } while (!(exitstatus = handleExit())); diff --git a/abs/mv-core/myth/stable/mythtv-release-fixes/screenshot_jump.patch b/abs/mv-core/myth/stable/mythtv-release-fixes/screenshot_jump.patch new file mode 100644 index 0000000..8a5dee4 --- /dev/null +++ b/abs/mv-core/myth/stable/mythtv-release-fixes/screenshot_jump.patch @@ -0,0 +1,10 @@ +--- programs/mythfrontend/networkcontrol.cpp.orig 2008-03-16 23:31:05.000000000 +0000 ++++ programs/mythfrontend/networkcontrol.cpp 2008-03-16 23:32:01.000000000 +0000 +@@ -80,6 +80,7 @@ + jumpMap["zoneminderconsole"] = "ZoneMinder Console"; + jumpMap["zoneminderliveview"] = "ZoneMinder Live View"; + jumpMap["zoneminderevents"] = "ZoneMinder Events"; ++ jumpMap["snapshot"] = "ScreenShot"; + + // These jump point names match the (lowercased) locations from gContext + jumpMap["channelrecpriority"] = "Channel Recording Priorities"; diff --git a/abs/mv-core/myth/stable/mythtv-release-fixes/screenshots.diff b/abs/mv-core/myth/stable/mythtv-release-fixes/screenshots.diff new file mode 100644 index 0000000..2b5dabe --- /dev/null +++ b/abs/mv-core/myth/stable/mythtv-release-fixes/screenshots.diff @@ -0,0 +1,458 @@ +Index: libs/libmythui/mythmainwindow.cpp +=================================================================== +--- libs/libmythui/mythmainwindow.cpp (revision 15827) ++++ libs/libmythui/mythmainwindow.cpp (working copy) +@@ -504,6 +507,81 @@ + d->repaintRegion = d->repaintRegion.unite(pe->region()); + } + ++bool MythMainWindow::screenShot(QString fname, int x, int y, int x2, int y2, int w, int h) ++{ ++ bool ret = false; ++ ++ QString extension = fname.section('.', -1, -2); ++ ++ if (extension == "jpg") ++ extension = "JPEG"; ++ else ++ extension = "PNG"; ++ ++ VERBOSE(VB_GENERAL, QString("MythMainWindow::screenShot saving winId %1 to %2 (%3 x %4) [ %5/%6 - %7/%8]") ++ .arg(QApplication::desktop()->winId()) ++ .arg(fname) ++ .arg(w) ++ .arg(h) ++ .arg(x) ++ .arg(y) ++ .arg(x2) ++ .arg(y2)); ++ ++ QPixmap p; ++ p = QPixmap::grabWindow( QApplication::desktop()->winId(), x, y, x2, y2); ++ ++ QImage img = p.convertToImage(); ++ ++ if ( w == 0 ) ++ w = img.width(); ++ ++ if ( h == 0 ) ++ h = img.height(); ++ ++ VERBOSE(VB_GENERAL, QString("Scaling to %1 x %2 from %3 x %4") ++ .arg(w) ++ .arg(h) ++ .arg(img.width()) ++ .arg(img.height())); ++ ++ img = img.smoothScale( w, h , QImage::ScaleMin); ++ ++ if (img.save(fname ,extension)) ++ { ++ VERBOSE(VB_GENERAL, "MythMainWindow::screenShot succeeded"); ++ ret = true; ++ } ++ else ++ { ++ VERBOSE(VB_GENERAL, "MythMainWindow::screenShot Failed!"); ++ ret = false; ++ } ++ ++ return ret; ++} ++ ++bool MythMainWindow::screenShot(int x, int y, int x2, int y2) ++{ ++ QString fPath = gContext->GetSetting("ScreenShotPath","/tmp/"); ++ QString fName = QString("/%1/myth-screenshot-%2.png") ++ .arg(gContext->GetSetting("ScreenShotPath","/tmp/")) ++ .arg(QDateTime::currentDateTime().toString("yyyy-mm-ddThh-mm-ss.zzz")); ++ ++ return screenShot(fName, x, y, x2, y2, 0, 0); ++} ++ ++bool MythMainWindow::screenShot(QString fname, int w, int h) ++{ ++ return screenShot(fname, 0, 0, -1, -1, w, h); ++} ++ ++ ++bool MythMainWindow::screenShot(void) ++{ ++ return screenShot(0,0,-1,-1); ++} ++ + #ifdef USING_APPLEREMOTE + // This may be possible via installEventFilter() instead? + +Index: libs/libmythui/mythmainwindow.h +=================================================================== +--- libs/libmythui/mythmainwindow.h (revision 15827) ++++ libs/libmythui/mythmainwindow.h (working copy) +@@ -101,6 +101,11 @@ + + MythPainter *GetCurrentPainter(); + ++ bool screenShot(QString fname, int x, int y, int x2, int y2, int w, int h); ++ bool screenShot(int x, int y, int x2, int y2); ++ bool screenShot(QString fname, int w, int h); ++ bool screenShot(void); ++ + void AllowInput(bool allow); + + QRect GetUIScreenRect(); +Index: programs/mythfrontend/mediarenderer.cpp +=================================================================== +--- programs/mythfrontend/mediarenderer.cpp (revision 15827) ++++ programs/mythfrontend/mediarenderer.cpp (working copy) +@@ -9,6 +9,7 @@ + ///////////////////////////////////////////////////////////////////////////// + + #include "mediarenderer.h" ++#include "mythfexml.h" + #include "compat.h" + + ///////////////////////////////////////////////////////////////////////////// +@@ -85,6 +86,11 @@ + "http-get:*:video/mpeg:*," + "http-get:*:video/nupplevideo:*," + "http-get:*:video/x-ms-wmv:*"; ++ // ------------------------------------------------------------------ ++ // Register the MythFEXML protocol... ++ // ------------------------------------------------------------------ ++ VERBOSE(VB_UPNP, "MediaRenderer::Registering MythFEXML Service." ); ++ m_pHttpServer->RegisterExtension( new MythFEXML( RootDevice() )); + + // VERBOSE(VB_UPNP, QString( "MediaRenderer::Registering AVTransport Service." )); + // m_pHttpServer->RegisterExtension( m_pUPnpAVT = new UPnpAVTransport( RootDevice() )); +Index: programs/mythfrontend/MFEXML_scpd.xml +=================================================================== +--- programs/mythfrontend/MFEXML_scpd.xml (revision 0) ++++ programs/mythfrontend/MFEXML_scpd.xml (revision 0) +@@ -0,0 +1,34 @@ ++ ++ ++ ++ 1 ++ 0 ++ ++ ++ ++ GetScreenShot ++ ++ ++ Height ++ in ++ A_ARG_TYPE_Height ++ ++ ++ Width ++ in ++ A_ARG_TYPE_Width ++ ++ ++ ++ ++ ++ ++ A_ARG_TYPE_Height ++ i2 ++ ++ ++ A_ARG_TYPE_Width ++ i2 ++ ++ ++ +Index: programs/mythfrontend/globalsettings.cpp +=================================================================== +--- programs/mythfrontend/globalsettings.cpp (revision 15827) ++++ programs/mythfrontend/globalsettings.cpp (working copy) +@@ -2182,6 +2182,15 @@ + return ge; + } + ++static HostLineEdit *ScreenShotPath() ++{ ++ HostLineEdit *ge = new HostLineEdit("ScreenShotPath"); ++ ge->setLabel(QObject::tr("ScreenShotPath")); ++ ge->setValue(""); ++ ge->setHelpText(QObject::tr("Path to screenshot storage location. Should be writable by the frontend")); ++ return ge; ++} ++ + static HostCheckBox *UseArrowAccels() + { + HostCheckBox *gc = new HostCheckBox("UseArrowAccels"); +@@ -4455,6 +4464,7 @@ + MythMediaSettings *mediaMon = new MythMediaSettings(); + + general->addChild(LircKeyPressedApp()); ++ general->addChild(ScreenShotPath()); + general->addChild(row); + general->addChild(NetworkControlPort()); + general->addChild(mediaMon); +Index: programs/mythfrontend/mythfexml.h +=================================================================== +--- programs/mythfrontend/mythfexml.h (revision 0) ++++ programs/mythfrontend/mythfexml.h (revision 0) +@@ -0,0 +1,66 @@ ++////////////////////////////////////////////////////////////////////////////// ++// Program Name: mythxml.h ++// ++// Purpose - Myth Frontend XML protocol HttpServerExtension ++// ++////////////////////////////////////////////////////////////////////////////// ++ ++#ifndef MYTHFEXML_H_ ++#define MYTHFEXML_H_ ++ ++#include ++#include ++ ++#include "upnp.h" ++#include "eventing.h" ++#include "mythcontext.h" ++ ++typedef enum ++{ ++ MFEXML_Unknown = 0, ++ MFEXML_GetScreenShot = 1 ++ ++} MythFEXMLMethod; ++ ++class MythFEXML : public Eventing ++{ ++ private: ++ ++ QString m_sControlUrl; ++ QString m_sServiceDescFileName; ++ ++ protected: ++ ++ // Implement UPnpServiceImpl methods that we can ++ ++ virtual QString GetServiceType () { return "urn:schemas-mythtv-org:service:MythTv:1"; } ++ virtual QString GetServiceId () { return "urn:mythtv-org:serviceId:MYTHTV_1-0"; } ++ virtual QString GetServiceControlURL() { return m_sControlUrl.mid( 1 ); } ++ virtual QString GetServiceDescURL () { return m_sControlUrl.mid( 1 ) + "/GetServDesc"; } ++ ++ private: ++ ++ MythFEXMLMethod GetMethod( const QString &sURI ); ++ ++ void GetScreenShot ( HTTPRequest *pRequest ); ++ ++ public: ++ MythFEXML( UPnpDevice *pDevice ); ++ virtual ~MythFEXML(); ++ ++ bool ProcessRequest( HttpWorkerThread *pThread, HTTPRequest *pRequest ); ++ ++ // Static methods shared with HttpStatus ++ ++}; ++ ++///////////////////////////////////////////////////////////////////////////// ++///////////////////////////////////////////////////////////////////////////// ++// ++// ++// ++///////////////////////////////////////////////////////////////////////////// ++///////////////////////////////////////////////////////////////////////////// ++#endif ++ ++ +Index: programs/mythfrontend/main.cpp +=================================================================== +--- programs/mythfrontend/main.cpp (revision 15827) ++++ programs/mythfrontend/main.cpp (working copy) +@@ -799,6 +799,11 @@ + } + } + ++void getScreenShot(void) ++{ ++ (void) gContext->GetMainWindow()->screenShot(); ++} ++ + void InitJumpPoints(void) + { + REG_JUMP("Reload Theme", "", "", reloadTheme); +@@ -817,6 +822,8 @@ + REG_JUMP("Status Screen", "", "", showStatus); + REG_JUMP("Previously Recorded", "", "", startPrevious); + ++ REG_JUMPEX("ScreenShot","","",getScreenShot,false); ++ + REG_KEY("qt", "DELETE", "Delete", "D"); + REG_KEY("qt", "EDIT", "Edit", "E"); + +Index: programs/mythfrontend/mythfrontend.pro +=================================================================== +--- programs/mythfrontend/mythfrontend.pro (revision 15827) ++++ programs/mythfrontend/mythfrontend.pro (working copy) +@@ -15,7 +15,7 @@ + setting.files += util_menu.xml info_settings.xml main_settings.xml + setting.files += recpriorities_settings.xml tv_search.xml tv_lists.xml + setting.files += library.xml manage_recordings.xml optical_menu.xml tvmenu.xml +-setting.files += tv_settings.xml ++setting.files += tv_settings.xml MFEXML_scpd.xml + setting.extra = -ldconfig + + INSTALLS += setting +@@ -26,13 +26,13 @@ + HEADERS += manualbox.h playbackbox.h viewscheduled.h globalsettings.h + HEADERS += manualschedule.h programrecpriority.h channelrecpriority.h + HEADERS += statusbox.h networkcontrol.h custompriority.h +-HEADERS += mediarenderer.h ++HEADERS += mediarenderer.h mythfexml.h + HEADERS += mythappearance.h + + SOURCES += main.cpp manualbox.cpp playbackbox.cpp viewscheduled.cpp + SOURCES += globalsettings.cpp manualschedule.cpp programrecpriority.cpp + SOURCES += channelrecpriority.cpp statusbox.cpp networkcontrol.cpp +-SOURCES += mediarenderer.cpp ++SOURCES += mediarenderer.cpp mythfexml.cpp + SOURCES += custompriority.cpp + SOURCES += mythappearance.cpp + +Index: programs/mythfrontend/mythfexml.cpp +=================================================================== +--- programs/mythfrontend/mythfexml.cpp (revision 0) ++++ programs/mythfrontend/mythfexml.cpp (revision 0) +@@ -0,0 +1,135 @@ ++////////////////////////////////////////////////////////////////////////////// ++// Program Name: MythXML.cpp ++// ++// Purpose - Html & XML status HttpServerExtension ++// ++// Created By : David Blain Created On : Oct. 24, 2005 ++// Modified By : Daniel Kristjansson Modified On: Oct. 31, 2007 ++// ++////////////////////////////////////////////////////////////////////////////// ++ ++#include "mythfexml.h" ++ ++#include "libmyth/mythcontext.h" ++#include "libmyth/util.h" ++#include "libmyth/mythdbcon.h" ++ ++#include "mythmainwindow.h" ++ ++#include ++#include ++#include ++#include ++#include ++#include ++ ++#include "../../config.h" ++ ++///////////////////////////////////////////////////////////////////////////// ++// ++///////////////////////////////////////////////////////////////////////////// ++ ++MythFEXML::MythFEXML( UPnpDevice *pDevice ) : Eventing( "MythFEXML", "MYTHTV_Event" ) ++{ ++ ++ QString sUPnpDescPath = UPnp::g_pConfig->GetValue( "UPnP/DescXmlPath", m_sSharePath ); ++ ++ m_sServiceDescFileName = sUPnpDescPath + "MFEXML_scpd.xml"; ++ m_sControlUrl = "/MythFE"; ++ ++ // Add our Service Definition to the device. ++ ++ RegisterService( pDevice ); ++} ++ ++///////////////////////////////////////////////////////////////////////////// ++// ++///////////////////////////////////////////////////////////////////////////// ++ ++MythFEXML::~MythFEXML() ++{ ++} ++ ++///////////////////////////////////////////////////////////////////////////// ++// ++///////////////////////////////////////////////////////////////////////////// ++ ++MythFEXMLMethod MythFEXML::GetMethod( const QString &sURI ) ++{ ++ if (sURI == "GetScreenShot" ) return MFEXML_GetScreenShot; ++ ++ return( MFEXML_Unknown ); ++} ++ ++///////////////////////////////////////////////////////////////////////////// ++// ++///////////////////////////////////////////////////////////////////////////// ++ ++bool MythFEXML::ProcessRequest( HttpWorkerThread *pThread, HTTPRequest *pRequest ) ++{ ++ try ++ { ++ if (pRequest) ++ { ++ if (pRequest->m_sBaseUrl != m_sControlUrl) ++ return( false ); ++ ++ VERBOSE(VB_UPNP, QString("MythFEXML::ProcessRequest: %1 : %2") ++ .arg(pRequest->m_sMethod) ++ .arg(pRequest->m_sRawRequest)); ++ ++ switch( GetMethod( pRequest->m_sMethod )) ++ { ++ case MFEXML_GetScreenShot : GetScreenShot ( pRequest ); return true; ++ ++ ++ default: ++ { ++ UPnp::FormatErrorResponse( pRequest, UPnPResult_InvalidAction ); ++ ++ return true; ++ } ++ } ++ } ++ } ++ catch( ... ) ++ { ++ VERBOSE( VB_IMPORTANT, "MythFEXML::ProcessRequest() - Unexpected Exception" ); ++ } ++ ++ return( false ); ++} ++ ++// ========================================================================== ++// Request handler Methods ++// ========================================================================== ++ ++///////////////////////////////////////////////////////////////////////////// ++// ++///////////////////////////////////////////////////////////////////////////// ++ ++void MythFEXML::GetScreenShot( HTTPRequest *pRequest ) ++{ ++ bool bDefaultPixmap = false; ++ ++ pRequest->m_eResponseType = ResponseTypeFile; ++ ++ // Optional Parameters ++ ++ int nWidth = pRequest->m_mapParams[ "Width" ].toInt(); ++ int nHeight = pRequest->m_mapParams[ "Height" ].toInt(); ++ ++ // Read Icon file path from database ++ ++ QString sFileName = "/tmp/moo.jpg"; ++ ++ ++ if (!gContext->GetMainWindow()->screenShot(sFileName,nWidth, nHeight)) ++ { ++ VERBOSE(VB_GENERAL, "MythFEXML: Failed to take screenshot. Aborting"); ++ return; ++ } ++ ++ pRequest->m_sFileName = sFileName; ++} ++ diff --git a/abs/mv-core/myth/stable/mythtv-release-fixes/screenshots2.diff b/abs/mv-core/myth/stable/mythtv-release-fixes/screenshots2.diff new file mode 100644 index 0000000..64ce08c --- /dev/null +++ b/abs/mv-core/myth/stable/mythtv-release-fixes/screenshots2.diff @@ -0,0 +1,467 @@ +Index: libs/libmythui/mythmainwindow.cpp +=================================================================== +--- libs/libmythui/mythmainwindow.cpp (revision 16103) ++++ libs/libmythui/mythmainwindow.cpp (working copy) +@@ -8,6 +8,8 @@ + #include + #include + #include ++#include ++ + #ifdef QWS + #include + #endif +@@ -504,6 +507,83 @@ + d->repaintRegion = d->repaintRegion.unite(pe->region()); + } + ++bool MythMainWindow::screenShot(QString fname, int x, int y, int x2, int y2, int w, int h) ++{ ++ bool ret = false; ++ ++ QString extension = fname.section('.', -1, -1); ++ if (extension == "jpg") ++ extension = "JPEG"; ++ else ++ extension = "PNG"; ++ ++ VERBOSE(VB_GENERAL, QString("MythMainWindow::screenShot saving winId %1 to %2 (%3 x %4) [ %5/%6 - %7/%8] type %9") ++ .arg(QApplication::desktop()->winId()) ++ .arg(fname) ++ .arg(w) ++ .arg(h) ++ .arg(x) ++ .arg(y) ++ .arg(x2) ++ .arg(y2) ++ .arg(extension)); ++ ++ QPixmap p; ++ p = QPixmap::grabWindow( QApplication::desktop()->winId(), x, y, x2, y2); ++ ++ QImage img = p.convertToImage(); ++ ++ if ( w == 0 ) ++ w = img.width(); ++ ++ if ( h == 0 ) ++ h = img.height(); ++ ++ VERBOSE(VB_GENERAL, QString("Scaling to %1 x %2 from %3 x %4") ++ .arg(w) ++ .arg(h) ++ .arg(img.width()) ++ .arg(img.height())); ++ ++ img = img.smoothScale( w, h , QImage::ScaleMin); ++ ++ if (img.save(fname ,extension,100)) ++ { ++ VERBOSE(VB_GENERAL, "MythMainWindow::screenShot succeeded"); ++ ret = true; ++ } ++ else ++ { ++ VERBOSE(VB_GENERAL, "MythMainWindow::screenShot Failed!"); ++ ret = false; ++ } ++ ++ return ret; ++} ++ ++bool MythMainWindow::screenShot(int x, int y, int x2, int y2) ++{ ++ QString fPath = gContext->GetSetting("ScreenShotPath","/tmp/"); ++ QString fName = QString("/%1/myth-screenshot-%2.png") ++ .arg(fPath) ++ .arg(QDateTime::currentDateTime().toString("yyyy-mm-ddThh-mm-ss.zzz")); ++ ++ return screenShot(fName, x, y, x2, y2, 0, 0); ++} ++ ++bool MythMainWindow::screenShot(QString fname, int w, int h) ++{ ++ QRect sLoc = qApp->mainWidget()->geometry(); ++ return screenShot(fname, sLoc.left(),sLoc.top(), sLoc.width(), sLoc.height(), w, h); ++} ++ ++ ++bool MythMainWindow::screenShot(void) ++{ ++ QRect sLoc = qApp->mainWidget()->geometry(); ++ return screenShot(sLoc.left(),sLoc.top(), sLoc.width(), sLoc.height()); ++} ++ + #ifdef USING_APPLEREMOTE + // This may be possible via installEventFilter() instead? + +Index: libs/libmythui/mythmainwindow.h +=================================================================== +--- libs/libmythui/mythmainwindow.h (revision 16103) ++++ libs/libmythui/mythmainwindow.h (working copy) +@@ -101,6 +101,11 @@ + + MythPainter *GetCurrentPainter(); + ++ bool screenShot(QString fname, int x, int y, int x2, int y2, int w, int h); ++ bool screenShot(int x, int y, int x2, int y2); ++ bool screenShot(QString fname, int w, int h); ++ bool screenShot(void); ++ + void AllowInput(bool allow); + + QRect GetUIScreenRect(); +Index: programs/mythfrontend/mediarenderer.cpp +=================================================================== +--- programs/mythfrontend/mediarenderer.cpp (revision 16103) ++++ programs/mythfrontend/mediarenderer.cpp (working copy) +@@ -9,6 +9,7 @@ + ///////////////////////////////////////////////////////////////////////////// + + #include "mediarenderer.h" ++#include "mythfexml.h" + #include "compat.h" + + ///////////////////////////////////////////////////////////////////////////// +@@ -89,6 +90,11 @@ + "http-get:*:video/mpeg:*," + "http-get:*:video/nupplevideo:*," + "http-get:*:video/x-ms-wmv:*"; ++ // ------------------------------------------------------------------ ++ // Register the MythFEXML protocol... ++ // ------------------------------------------------------------------ ++ VERBOSE(VB_UPNP, "MediaRenderer::Registering MythFEXML Service." ); ++ m_pHttpServer->RegisterExtension( new MythFEXML( RootDevice() )); + + // VERBOSE(VB_UPNP, QString( "MediaRenderer::Registering AVTransport Service." )); + // m_pHttpServer->RegisterExtension( m_pUPnpAVT = new UPnpAVTransport( RootDevice() )); +Index: programs/mythfrontend/MFEXML_scpd.xml +=================================================================== +--- programs/mythfrontend/MFEXML_scpd.xml (revision 0) ++++ programs/mythfrontend/MFEXML_scpd.xml (revision 0) +@@ -0,0 +1,34 @@ ++ ++ ++ ++ 1 ++ 0 ++ ++ ++ ++ GetScreenShot ++ ++ ++ Height ++ in ++ A_ARG_TYPE_Height ++ ++ ++ Width ++ in ++ A_ARG_TYPE_Width ++ ++ ++ ++ ++ ++ ++ A_ARG_TYPE_Height ++ i2 ++ ++ ++ A_ARG_TYPE_Width ++ i2 ++ ++ ++ +Index: programs/mythfrontend/globalsettings.cpp +=================================================================== +--- programs/mythfrontend/globalsettings.cpp (revision 16103) ++++ programs/mythfrontend/globalsettings.cpp (working copy) +@@ -2220,6 +2220,15 @@ + return ge; + } + ++static HostLineEdit *ScreenShotPath() ++{ ++ HostLineEdit *ge = new HostLineEdit("ScreenShotPath"); ++ ge->setLabel(QObject::tr("ScreenShotPath")); ++ ge->setValue("/tmp/"); ++ ge->setHelpText(QObject::tr("Path to screenshot storage location. Should be writable by the frontend")); ++ return ge; ++} ++ + static HostCheckBox *UseArrowAccels() + { + HostCheckBox *gc = new HostCheckBox("UseArrowAccels"); +@@ -4502,6 +4511,7 @@ + MythMediaSettings *mediaMon = new MythMediaSettings(); + + general->addChild(LircKeyPressedApp()); ++ general->addChild(ScreenShotPath()); + general->addChild(row); + general->addChild(NetworkControlPort()); + general->addChild(mediaMon); +Index: programs/mythfrontend/mythfexml.h +=================================================================== +--- programs/mythfrontend/mythfexml.h (revision 0) ++++ programs/mythfrontend/mythfexml.h (revision 0) +@@ -0,0 +1,66 @@ ++////////////////////////////////////////////////////////////////////////////// ++// Program Name: mythxml.h ++// ++// Purpose - Myth Frontend XML protocol HttpServerExtension ++// ++////////////////////////////////////////////////////////////////////////////// ++ ++#ifndef MYTHFEXML_H_ ++#define MYTHFEXML_H_ ++ ++#include ++#include ++ ++#include "upnp.h" ++#include "eventing.h" ++#include "mythcontext.h" ++ ++typedef enum ++{ ++ MFEXML_Unknown = 0, ++ MFEXML_GetScreenShot = 1 ++ ++} MythFEXMLMethod; ++ ++class MythFEXML : public Eventing ++{ ++ private: ++ ++ QString m_sControlUrl; ++ QString m_sServiceDescFileName; ++ ++ protected: ++ ++ // Implement UPnpServiceImpl methods that we can ++ ++ virtual QString GetServiceType () { return "urn:schemas-mythtv-org:service:MythTv:1"; } ++ virtual QString GetServiceId () { return "urn:mythtv-org:serviceId:MYTHTV_1-0"; } ++ virtual QString GetServiceControlURL() { return m_sControlUrl.mid( 1 ); } ++ virtual QString GetServiceDescURL () { return m_sControlUrl.mid( 1 ) + "/GetServDesc"; } ++ ++ private: ++ ++ MythFEXMLMethod GetMethod( const QString &sURI ); ++ ++ void GetScreenShot ( HTTPRequest *pRequest ); ++ ++ public: ++ MythFEXML( UPnpDevice *pDevice ); ++ virtual ~MythFEXML(); ++ ++ bool ProcessRequest( HttpWorkerThread *pThread, HTTPRequest *pRequest ); ++ ++ // Static methods shared with HttpStatus ++ ++}; ++ ++///////////////////////////////////////////////////////////////////////////// ++///////////////////////////////////////////////////////////////////////////// ++// ++// ++// ++///////////////////////////////////////////////////////////////////////////// ++///////////////////////////////////////////////////////////////////////////// ++#endif ++ ++ +Index: programs/mythfrontend/main.cpp +=================================================================== +--- programs/mythfrontend/main.cpp (revision 16103) ++++ programs/mythfrontend/main.cpp (working copy) +@@ -800,6 +800,11 @@ + } + } + ++void getScreenShot(void) ++{ ++ (void) gContext->GetMainWindow()->screenShot(); ++} ++ + void InitJumpPoints(void) + { + REG_JUMP("Reload Theme", "", "", reloadTheme); +@@ -818,6 +823,8 @@ + REG_JUMP("Status Screen", "", "", showStatus); + REG_JUMP("Previously Recorded", "", "", startPrevious); + ++ REG_JUMPEX("ScreenShot","","",getScreenShot,false); ++ + REG_KEY("qt", "DELETE", "Delete", "D"); + REG_KEY("qt", "EDIT", "Edit", "E"); + +Index: programs/mythfrontend/mythfrontend.pro +=================================================================== +--- programs/mythfrontend/mythfrontend.pro (revision 16103) ++++ programs/mythfrontend/mythfrontend.pro (working copy) +@@ -15,7 +15,7 @@ + setting.files += util_menu.xml info_settings.xml main_settings.xml + setting.files += recpriorities_settings.xml tv_search.xml tv_lists.xml + setting.files += library.xml manage_recordings.xml optical_menu.xml tvmenu.xml +-setting.files += tv_settings.xml ++setting.files += tv_settings.xml MFEXML_scpd.xml + setting.extra = -ldconfig + + INSTALLS += setting +@@ -26,13 +26,13 @@ + HEADERS += manualbox.h playbackbox.h viewscheduled.h globalsettings.h + HEADERS += manualschedule.h programrecpriority.h channelrecpriority.h + HEADERS += statusbox.h networkcontrol.h custompriority.h +-HEADERS += mediarenderer.h ++HEADERS += mediarenderer.h mythfexml.h + HEADERS += mythappearance.h + + SOURCES += main.cpp manualbox.cpp playbackbox.cpp viewscheduled.cpp + SOURCES += globalsettings.cpp manualschedule.cpp programrecpriority.cpp + SOURCES += channelrecpriority.cpp statusbox.cpp networkcontrol.cpp +-SOURCES += mediarenderer.cpp ++SOURCES += mediarenderer.cpp mythfexml.cpp + SOURCES += custompriority.cpp + SOURCES += mythappearance.cpp + +Index: programs/mythfrontend/mythfexml.cpp +=================================================================== +--- programs/mythfrontend/mythfexml.cpp (revision 0) ++++ programs/mythfrontend/mythfexml.cpp (revision 0) +@@ -0,0 +1,133 @@ ++////////////////////////////////////////////////////////////////////////////// ++// Program Name: MythXML.cpp ++// ++// Purpose - Html & XML status HttpServerExtension ++// ++// Created By : David Blain Created On : Oct. 24, 2005 ++// Modified By : Daniel Kristjansson Modified On: Oct. 31, 2007 ++// ++////////////////////////////////////////////////////////////////////////////// ++ ++#include "mythfexml.h" ++ ++#include "libmyth/mythcontext.h" ++#include "libmyth/util.h" ++#include "libmyth/mythdbcon.h" ++ ++#include "mythmainwindow.h" ++ ++#include ++#include ++#include ++#include ++#include ++#include ++ ++#include "../../config.h" ++ ++///////////////////////////////////////////////////////////////////////////// ++// ++///////////////////////////////////////////////////////////////////////////// ++ ++MythFEXML::MythFEXML( UPnpDevice *pDevice ) : Eventing( "MythFEXML", "MYTHTV_Event" ) ++{ ++ ++ QString sUPnpDescPath = UPnp::g_pConfig->GetValue( "UPnP/DescXmlPath", m_sSharePath ); ++ ++ m_sServiceDescFileName = sUPnpDescPath + "MFEXML_scpd.xml"; ++ m_sControlUrl = "/MythFE"; ++ ++ // Add our Service Definition to the device. ++ ++ RegisterService( pDevice ); ++} ++ ++///////////////////////////////////////////////////////////////////////////// ++// ++///////////////////////////////////////////////////////////////////////////// ++ ++MythFEXML::~MythFEXML() ++{ ++} ++ ++///////////////////////////////////////////////////////////////////////////// ++// ++///////////////////////////////////////////////////////////////////////////// ++ ++MythFEXMLMethod MythFEXML::GetMethod( const QString &sURI ) ++{ ++ if (sURI == "GetScreenShot" ) return MFEXML_GetScreenShot; ++ ++ return( MFEXML_Unknown ); ++} ++ ++///////////////////////////////////////////////////////////////////////////// ++// ++///////////////////////////////////////////////////////////////////////////// ++ ++bool MythFEXML::ProcessRequest( HttpWorkerThread *pThread, HTTPRequest *pRequest ) ++{ ++ try ++ { ++ if (pRequest) ++ { ++ if (pRequest->m_sBaseUrl != m_sControlUrl) ++ return( false ); ++ ++ VERBOSE(VB_UPNP, QString("MythFEXML::ProcessRequest: %1 : %2") ++ .arg(pRequest->m_sMethod) ++ .arg(pRequest->m_sRawRequest)); ++ ++ switch( GetMethod( pRequest->m_sMethod )) ++ { ++ case MFEXML_GetScreenShot : GetScreenShot ( pRequest ); return true; ++ ++ ++ default: ++ { ++ UPnp::FormatErrorResponse( pRequest, UPnPResult_InvalidAction ); ++ ++ return true; ++ } ++ } ++ } ++ } ++ catch( ... ) ++ { ++ VERBOSE( VB_IMPORTANT, "MythFEXML::ProcessRequest() - Unexpected Exception" ); ++ } ++ ++ return( false ); ++} ++ ++// ========================================================================== ++// Request handler Methods ++// ========================================================================== ++ ++///////////////////////////////////////////////////////////////////////////// ++// ++///////////////////////////////////////////////////////////////////////////// ++ ++void MythFEXML::GetScreenShot( HTTPRequest *pRequest ) ++{ ++ pRequest->m_eResponseType = ResponseTypeFile; ++ ++ // Optional Parameters ++ ++ int nWidth = pRequest->m_mapParams[ "Width" ].toInt(); ++ int nHeight = pRequest->m_mapParams[ "Height" ].toInt(); ++ ++ // Read Icon file path from database ++ ++ QString sFileName = QString("/%1/myth-screenshot-XML.jpg") ++ .arg(gContext->GetSetting("ScreenShotPath","/tmp/")); ++ ++ if (!gContext->GetMainWindow()->screenShot(sFileName,nWidth, nHeight)) ++ { ++ VERBOSE(VB_GENERAL, "MythFEXML: Failed to take screenshot. Aborting"); ++ return; ++ } ++ ++ pRequest->m_sFileName = sFileName; ++} ++ diff --git a/abs/mv-core/myth/stable/mythtv-release-fixes/smolt_jump.patch b/abs/mv-core/myth/stable/mythtv-release-fixes/smolt_jump.patch new file mode 100644 index 0000000..ca9bd08 --- /dev/null +++ b/abs/mv-core/myth/stable/mythtv-release-fixes/smolt_jump.patch @@ -0,0 +1,10 @@ +--- programs/mythfrontend/networkcontrol.cpp.orig 2008-03-23 23:00:25.000000000 +0000 ++++ programs/mythfrontend/networkcontrol.cpp 2008-03-23 23:01:33.000000000 +0000 +@@ -81,6 +81,7 @@ + jumpMap["zoneminderliveview"] = "ZoneMinder Live View"; + jumpMap["zoneminderevents"] = "ZoneMinder Events"; + jumpMap["snapshot"] = "ScreenShot"; ++ jumpMap["mythsmolt"] = "MythSmolt"; + + // These jump point names match the (lowercased) locations from gContext + jumpMap["channelrecpriority"] = "Channel Recording Priorities"; diff --git a/abs/mv-core/myth/stable/mythtv-themes/PKGBUILD b/abs/mv-core/myth/stable/mythtv-themes/PKGBUILD new file mode 100755 index 0000000..379f2d9 --- /dev/null +++ b/abs/mv-core/myth/stable/mythtv-themes/PKGBUILD @@ -0,0 +1,36 @@ +pkgname=mythtv-themes-release-fixes +pkgver=21228 +pkgrel=1 +pkgdesc="themes for mythtv" +url="http://www.mythtv.org" +license="GPL" +depends=( ) +#makedepends=('sqlite3' 'sed') +conflicts=() +replaces=() +backup=() +#install='mythtv.install' +source=() +arch=('i686') +md5sums=() +_svntrunk=http://svn.mythtv.org/svn/branches/release-0-21-fixes/myththemes +_svnmod=myththemes + +build() { +echo svn co $_svntrunk --config-dir ./ -r $pkgver $_svnmod + svn co $_svntrunk --config-dir ./ -r $pkgver $_svnmod +#svn co http://cvs.mythtv.org/svn/trunk/mythtv +#svn co http://cvs.mythtv.org/svn/trunk/mythplugins +#svn co http://cvs.mythtv.org/svn/trunk/myththemes +cd $startdir/src/myththemes + make distclean + ./configure --prefix=/usr + #./configure --disable-all --enable-mythweather --enable-fftw --disable-aac + make || return 1 + make INSTALL_ROOT=$startdir/pkg install +# cd $startdir/src/$pkgname +# cd mythmovietime +# make || return 1 +# make INSTALL_ROOT=$startdir/pkg install + +} diff --git a/abs/mv-core/myth/stable/mythvideo/PKGBUILD b/abs/mv-core/myth/stable/mythvideo/PKGBUILD new file mode 100644 index 0000000..5afee6a --- /dev/null +++ b/abs/mv-core/myth/stable/mythvideo/PKGBUILD @@ -0,0 +1,36 @@ +pkgname=mythvideo-release-fixes +pkgver=21228 +pkgrel=1 +pkgdesc="Video playback and browsing plugin for MythTV" +url="http://www.mythtv.org" +arch=('i686') +depends=('mythtv-release-fixes' 'perlxml' 'perl-libwww' 'perl-uri' 'perl-xml-simple' 'ffmpeg') +license="GPL" +conflicts=('mythtv-plugins-release-fixes') +groups=('mythtv-all-plugins-release-fixes') + +source=() +_svntrunk=http://svn.mythtv.org/svn/branches/release-0-21-fixes/mythplugins +_svntrunk=http://svn.mythtv.org/svn/branches/release-0-21-fixes/mythplugins +_svnmod=mythplugins + +build() { + cd $startdir/src/ + echo svn co $_svntrunk --config-dir ./ -r $pkgver $_svnmod + svn co $_svntrunk --config-dir ./ -r $pkgver $_svnmod + cd $startdir/src/mythplugins + make distclean + PLUGIN=mythvideo + grep -q programs-libs.pro $PLUGIN/$PLUGIN/$PLUGIN.pro + if [ $? != 0 ] + then + echo "include ( ../../programs-libs.pro )" >> $PLUGIN/$PLUGIN/$PLUGIN.pro + msg "appending program lib" + fi + ./configure --prefix=/usr --disable-all --enable-mythvideo --enable-transcode + + make -j 2 || return 1 + + make INSTALL_ROOT=$startdir/pkg install +} +md5sums=('2a9fbf45ae58a3a35857ce8d7c4d12db') diff --git a/abs/mv-core/myth/stable/mythweather/PKGBUILD b/abs/mv-core/myth/stable/mythweather/PKGBUILD new file mode 100644 index 0000000..dae89df --- /dev/null +++ b/abs/mv-core/myth/stable/mythweather/PKGBUILD @@ -0,0 +1,37 @@ +pkgname=mythweather-release-fixes +pkgver=21228 +pkgrel=1 +pkgdesc="Weather checking plugin for MythTV" +url="http://www.mythtv.org" +arch=('i686') +depends=('mythtv-release-fixes' 'wget' 'perl-xml-sax' 'perl-soap-lite' 'perl-image-size' 'imagemagick') +conflicts=('mythtv-plugins-release-fixes') +groups=('mythtv-all-plugins-release-fixes') +license="GPL" +source=() +#_svntrunk=http://cvs.mythtv.org/svn/trunk/mythplugins +_svntrunk=http://svn.mythtv.org/svn/branches/release-0-21-fixes/mythplugins + +_svntrunk=http://svn.mythtv.org/svn/branches/release-0-21-fixes/mythplugins +_svnmod=mythplugins + +build() { + cd $startdir/src/ + echo svn co $_svntrunk --config-dir ./ -r $pkgver $_svnmod + svn co $_svntrunk --config-dir ./ -r $pkgver $_svnmod + cd $startdir/src/mythplugins + make distclean + PLUGIN=mythweather + grep -q programs-libs.pro $PLUGIN/$PLUGIN/$PLUGIN.pro + if [ $? != 0 ] + then + echo "include ( ../../programs-libs.pro )" >> $PLUGIN/$PLUGIN/$PLUGIN.pro + msg "appending program lib" + fi + ./configure --enable-opengl --disable-all --enable-mythweather --prefix=/usr + + make -j 2 || return 1 + + make INSTALL_ROOT=$startdir/pkg install +} +md5sums=('2a9fbf45ae58a3a35857ce8d7c4d12db') diff --git a/abs/mv-core/myth/stable/mythweb/PKGBUILD b/abs/mv-core/myth/stable/mythweb/PKGBUILD new file mode 100755 index 0000000..52341a4 --- /dev/null +++ b/abs/mv-core/myth/stable/mythweb/PKGBUILD @@ -0,0 +1,34 @@ +pkgname=mythweb-release-fixes +pkgver=21228 +pkgrel=1 +pkgdesc="mythweb" +url="http://www.mythtv.org" +license="GPL" +arch=('i686') +depends=(php fcgi libmysqlclient ) +conflicts=('mythweb' 'mythweb-fixes') +replaces=() +backup=() +install='mythweb.install' +source=(mythweblighttpd.patch dblogininit.inc ) +md5sums=() +_svntrunk=http://svn.mythtv.org/svn/branches/release-0-21-fixes/mythplugins +_svnmod=mythplugins +build() { +echo svn co $_svntrunk --config-dir ./ -r $pkgver $_svnmod + svn co $_svntrunk --config-dir ./ -r $pkgver $_svnmod +#svn co http://cvs.mythtv.org/svn/trunk/mythtv +#svn co http://cvs.mythtv.org/svn/trunk/mythplugins +#svn co http://cvs.mythtv.org/svn/trunk/myththemes +cd $startdir/src/mythplugins + +#take care of fing mythweb +mkdir -p $startdir/pkg/data/srv/httpd/htdocs/ +cp -rp mythweb $startdir/pkg/data/srv/httpd/htdocs/ +cp -f $startdir/src/dblogininit.inc $startdir/pkg/data/srv/httpd/htdocs/mythweb/includes/ +cd $startdir/pkg/data/srv/httpd/htdocs/mythweb/includes +patch -p0 < $startdir/src/mythweblighttpd.patch + +chown -R nobody:nobody $startdir/pkg/data/srv/httpd/htdocs/mythweb +chmod -R 775 $startdir/pkg/data/srv/httpd/htdocs/mythweb +} diff --git a/abs/mv-core/myth/stable/mythweb/dblogininit.inc b/abs/mv-core/myth/stable/mythweb/dblogininit.inc new file mode 100755 index 0000000..c5395c5 --- /dev/null +++ b/abs/mv-core/myth/stable/mythweb/dblogininit.inc @@ -0,0 +1,6 @@ + diff --git a/abs/mv-core/myth/stable/mythweb/mythweb.install b/abs/mv-core/myth/stable/mythweb/mythweb.install new file mode 100755 index 0000000..e135b6c --- /dev/null +++ b/abs/mv-core/myth/stable/mythweb/mythweb.install @@ -0,0 +1,37 @@ + +# arg 1: the new package version +pre_install () { +/bin/true +} + +post_install() { + #cp /etc/lighttpd/lighttpd.conf /tmp +# sed -e "s/# .* \"mod_fastcgi\",/\"mod_fastcgi\"\,/g" /tmp/lighttpd.conf > /etc/lighttpd/lighttpd.conf + /bin/true + +} +pre_upgrade () { + pre_install +} + +# arg 1: the new package version +# arg 2: the old package version +post_upgrade() { + post_install + + /bin/true +} + +# arg 1: the old package version +pre_remove() { + /bin/true +} + +# arg 1: the old package version +post_remove() { +/bint/true +} + +op=$1 +shift +$op $* diff --git a/abs/mv-core/myth/stable/mythweb/mythweblighttpd.patch b/abs/mv-core/myth/stable/mythweb/mythweblighttpd.patch new file mode 100755 index 0000000..6403a88 --- /dev/null +++ b/abs/mv-core/myth/stable/mythweb/mythweblighttpd.patch @@ -0,0 +1,13 @@ +--- database.php.orig 2007-12-31 21:25:30.000000000 +0000 ++++ database.php 2007-12-31 21:25:50.000000000 +0000 +@@ -18,6 +18,10 @@ + custom_error("Please install the MySQL libraries for PHP.\n" + .'The package is usually called something like php-mysql.'); + } ++ if (empty($_SERVER['db_server']) || empty($_SERVER['db_name']) || empty($_SERVER['db_login'])) { ++ require_once 'dblogininit.inc'; ++ } ++ + + // No database connection info defined? + if (empty($_SERVER['db_server']) || empty($_SERVER['db_name']) || empty($_SERVER['db_login'])) { diff --git a/abs/mv-core/myth/stable/syth-lacquer-clean/PKGBUILD b/abs/mv-core/myth/stable/syth-lacquer-clean/PKGBUILD new file mode 100755 index 0000000..92e37d6 --- /dev/null +++ b/abs/mv-core/myth/stable/syth-lacquer-clean/PKGBUILD @@ -0,0 +1,23 @@ +pkgname=syth-lacquer-clean-wide +pkgver=21228 +pkgrel=1 +pkgdesc="" +url="" +license="" +depends=() +makedepends=() +conflicts=() +replaces=() +backup=() + arch=('i686') +#source=($pkgname.tar.bz2) +source=(http://jmeyer.us/e107_files/downloads/SVN/$pkgname.tar.bz2) + +md5sums=() + +build() { + cd $startdir/src + mkdir -p $startdir/pkg/usr/share/mythtv/themes + cp -rp $pkgname $startdir/pkg/usr/share/mythtv/themes/ + +} diff --git a/abs/mv-core/myth/stable/syth-lacquer-wide/PKGBUILD b/abs/mv-core/myth/stable/syth-lacquer-wide/PKGBUILD new file mode 100755 index 0000000..edf4357 --- /dev/null +++ b/abs/mv-core/myth/stable/syth-lacquer-wide/PKGBUILD @@ -0,0 +1,23 @@ +pkgname=syth-lacquer-wide +pkgver=21228 +pkgrel=1 +pkgdesc="Syth for mythtv .21" +url="" +license="" +depends=() +makedepends=() +conflicts=() +replaces=() +backup=() +arch='i686' + +source=(http://www.mythvantage.com/src/syth-lacquer-wide.tgz) + +md5sums=() + +build() { + cd $startdir/src + mkdir -p $startdir/pkg/usr/share/mythtv/themes + cp -rp $pkgname $startdir/pkg/usr/share/mythtv/themes/ + +} diff --git a/abs/mv-core/mythvantage-live/PKGBUILD b/abs/mv-core/mythvantage-live/PKGBUILD index 6f3a02d..d23d8e7 100644 --- a/abs/mv-core/mythvantage-live/PKGBUILD +++ b/abs/mv-core/mythvantage-live/PKGBUILD @@ -1,6 +1,6 @@ pkgname=mythvantage-live pkgver=5.3.3 -pkgrel=7 +pkgrel=8 provides="linhes-live" pkgdesc="components for the Live System." diff --git a/abs/mv-core/openssh/PKGBUILD b/abs/mv-core/openssh/PKGBUILD deleted file mode 100644 index 0c3c4a2..0000000 --- a/abs/mv-core/openssh/PKGBUILD +++ /dev/null @@ -1,63 +0,0 @@ -# $Id: PKGBUILD 23216 2009-01-06 05:04:12Z eric $ -# Maintainer: Aaron Griffin -# Contributor: judd - -pkgname=openssh -pkgver=5.1p1 -pkgrel=2 -#_gsskexver=20080404 -pkgdesc='A Secure SHell server/client' -arch=(i686 x86_64) -license=('custom') -url="http://www.openssh.org/portable.html" -backup=('etc/ssh/ssh_config' 'etc/ssh/sshd_config' 'etc/pam.d/sshd') -depends=('openssl>=0.9.8g' 'zlib' 'pam' 'tcp_wrappers' 'heimdal>=1.2-1') -source=(ftp://ftp.openbsd.org/pub/OpenBSD/OpenSSH/portable/$pkgname-$pkgver.tar.gz - sshd sshd.confd sshd.pam) - #http://www.sxw.org.uk/computing/patches/$pkgname-$pkgver-gsskex-$_gsskexver.patch -md5sums=('03f2d0c1b5ec60d4ac9997a146d2faec' 'd9ee5e0a0d143689b3d6f11454a2a892' - 'e2cea70ac13af7e63d40eb04415eacd5' '1c7c2ea8734ec7e3ca58d820634dc73a') - -build() { - cd $startdir/src/$pkgname-$pkgver - #patch -up0 < $startdir/src/$pkgname-$pkgver-gsskex-$_gsskexver.patch - - #NOTE we disable-strip so that makepkg can decide whether to strip or not - ./configure --prefix=/usr --libexecdir=/usr/lib/ssh \ - --sysconfdir=/etc/ssh --with-tcp-wrappers --with-privsep-user=nobody \ - --with-md5-passwords --with-pam --with-mantype=man --mandir=/usr/man \ - --with-xauth=/usr/bin/xauth --with-kerberos5=/usr --disable-strip - make || return 1 - make DESTDIR=$startdir/pkg install - - #What is this for? Is it needed? - mkdir -p $startdir/pkg/var/empty - - install -D -m755 $startdir/src/sshd $startdir/pkg/etc/rc.d/sshd - - install -D -m644 LICENCE $startdir/pkg/usr/share/licenses/$pkgname/LICENCE - install -D -m644 $startdir/src/sshd.pam $startdir/pkg/etc/pam.d/sshd - install -D -m644 $startdir/src/sshd.confd $startdir/pkg/etc/conf.d/sshd - - rm $startdir/pkg/usr/man/man1/slogin.1 - ln -sf ssh.1.gz $startdir/pkg/usr/man/man1/slogin.1.gz - - #additional contrib scripts that we like - install -D -m755 contrib/findssl.sh $startdir/pkg/usr/bin/findssl.sh - install -D -m755 contrib/ssh-copy-id $startdir/pkg/usr/bin/ssh-copy-id - install -D -m644 contrib/ssh-copy-id.1 $startdir/pkg/usr/man/man1/ssh-copy-id.1 - - # sshd_config - sed -i \ - -e 's|^#ListenAddress 0.0.0.0|ListenAddress 0.0.0.0|g' \ - -e 's|^#UsePAM no|UsePAM yes|g' \ - -e 's|^#ChallengeResponseAuthentication yes|ChallengeResponseAuthentication no|g' \ - $startdir/pkg/etc/ssh/sshd_config - echo "HashKnownHosts yes" >> $startdir/pkg/etc/ssh/ssh_config - echo "StrictHostKeyChecking ask" >> $startdir/pkg/etc/ssh/ssh_config - - #ssh_config - sed -i \ - -e 's|^# Host \*|Host *|g' \ - $startdir/pkg/etc/ssh/ssh_config -} diff --git a/abs/mv-core/openssh/sshd b/abs/mv-core/openssh/sshd deleted file mode 100755 index 875028a..0000000 --- a/abs/mv-core/openssh/sshd +++ /dev/null @@ -1,40 +0,0 @@ -#!/bin/bash - -. /etc/rc.conf -. /etc/rc.d/functions -. /etc/conf.d/sshd - -PID=`cat /var/run/sshd.pid 2>/dev/null` -case "$1" in - start) - stat_busy "Starting Secure Shell Daemon" - [ -f /etc/ssh/ssh_host_key ] || { /usr/bin/ssh-keygen -t rsa1 -N "" -f /etc/ssh/ssh_host_key >/dev/null; } - [ -f /etc/ssh/ssh_host_rsa_key ] || { /usr/bin/ssh-keygen -t rsa -N "" -f /etc/ssh/ssh_host_rsa_key >/dev/null; } - [ -f /etc/ssh/ssh_host_dsa_key ] || { /usr/bin/ssh-keygen -t dsa -N "" -f /etc/ssh/ssh_host_dsa_key >/dev/null; } - [ -z "$PID" ] && /usr/sbin/sshd $SSHD_ARGS - if [ $? -gt 0 ]; then - stat_fail - else - add_daemon sshd - stat_done - fi - ;; - stop) - stat_busy "Stopping Secure Shell Daemon" - [ ! -z "$PID" ] && kill $PID &> /dev/null - if [ $? -gt 0 ]; then - stat_fail - else - rm_daemon sshd - stat_done - fi - ;; - restart) - $0 stop - sleep 1 - $0 start - ;; - *) - echo "usage: $0 {start|stop|restart}" -esac -exit 0 diff --git a/abs/mv-core/openssh/sshd.confd b/abs/mv-core/openssh/sshd.confd deleted file mode 100644 index 5ce7c00..0000000 --- a/abs/mv-core/openssh/sshd.confd +++ /dev/null @@ -1,4 +0,0 @@ -# -# Parameters to be passed to sshd -# -SSHD_ARGS="" diff --git a/abs/mv-core/openssh/sshd.pam b/abs/mv-core/openssh/sshd.pam deleted file mode 100644 index dc70815..0000000 --- a/abs/mv-core/openssh/sshd.pam +++ /dev/null @@ -1,10 +0,0 @@ -#%PAM-1.0 -#auth required pam_securetty.so #Disable remote root -auth required pam_unix.so -auth required pam_nologin.so -auth required pam_env.so -account required pam_unix.so -account required pam_time.so -password required pam_unix.so -session required pam_unix_session.so -session required pam_limits.so diff --git a/abs/mv-core/syslog-ng/PKGBUILD b/abs/mv-core/syslog-ng/PKGBUILD index a9efeee..9a30df6 100644 --- a/abs/mv-core/syslog-ng/PKGBUILD +++ b/abs/mv-core/syslog-ng/PKGBUILD @@ -1,6 +1,6 @@ pkgname=syslog-ng -pkgver=2.0.9 -pkgrel=4 +pkgver=2.0.10 +pkgrel=1 pkgdesc="A portable syslogd replacement with enhanced, flexible configuration scheme." arch=(i686 x86_64) license=('GPL') @@ -10,7 +10,7 @@ depends=('tcp_wrappers' 'logrotate') install=('syslog.install') provides=('logger') backup=('etc/syslog-ng.conf') -source=(http://www.balabit.com/downloads/files/syslog-ng/sources/stable/src/$pkgname-$pkgver.tar.gz \ +source=(http://www.balabit.com/downloads/files/syslog-ng/open-source-edition/$pkgver/source/${pkgname}_$pkgver.tar.gz \ syslog-ng.conf syslog-ng.logrotate syslog-ng log_care.sh) build() { -- cgit v0.12