summaryrefslogtreecommitdiffstats
path: root/abs/core-testing
diff options
context:
space:
mode:
authorCecil Hugh Watson <knoppmyth@gmail.com>2009-11-25 18:40:21 (GMT)
committerCecil Hugh Watson <knoppmyth@gmail.com>2009-11-25 18:40:21 (GMT)
commitf9d8baf1e8d94e1252cbd90999d9f2382cff8a57 (patch)
tree1424c8c8b9ac2cc086ce7376ec85446ff48919fc /abs/core-testing
parentb0fcb5694aa74b1098dc1647fa272c157d24b856 (diff)
parent1e4ef029d3646f3e86bc2a725cbed7ac1e3e6613 (diff)
downloadlinhes_pkgbuild-f9d8baf1e8d94e1252cbd90999d9f2382cff8a57.zip
linhes_pkgbuild-f9d8baf1e8d94e1252cbd90999d9f2382cff8a57.tar.gz
linhes_pkgbuild-f9d8baf1e8d94e1252cbd90999d9f2382cff8a57.tar.bz2
Merge branch 'HEAD' of ssh://cesman@knoppmyth.net/mount/repository/LinHES-PKGBUILD
Diffstat (limited to 'abs/core-testing')
-rw-r--r--abs/core-testing/LinHES-config-22/LinHES-release1
-rw-r--r--abs/core-testing/LinHES-config-22/LinHES.install78
-rwxr-xr-xabs/core-testing/LinHES-config-22/MythVantage.sh3
-rw-r--r--abs/core-testing/LinHES-config-22/PKGBUILD100
-rw-r--r--abs/core-testing/LinHES-config-22/README9
-rwxr-xr-xabs/core-testing/LinHES-config-22/add_service.sh15
-rwxr-xr-xabs/core-testing/LinHES-config-22/autocard.py307
-rwxr-xr-xabs/core-testing/LinHES-config-22/bpopup-ui.xml164
-rwxr-xr-xabs/core-testing/LinHES-config-22/build_diskless.sh143
-rwxr-xr-xabs/core-testing/LinHES-config-22/checkout_MythVantage.sh49
-rwxr-xr-xabs/core-testing/LinHES-config-22/create_master.sh57
-rwxr-xr-xabs/core-testing/LinHES-config-22/file_time_offset.py39
-rwxr-xr-xabs/core-testing/LinHES-config-22/install-ui.xml175
-rw-r--r--abs/core-testing/LinHES-config-22/install_db_chroot.sh63
-rwxr-xr-xabs/core-testing/LinHES-config-22/install_functions.sh344
-rwxr-xr-xabs/core-testing/LinHES-config-22/install_proxy.sh234
-rw-r--r--abs/core-testing/LinHES-config-22/issue2
-rwxr-xr-xabs/core-testing/LinHES-config-22/live-install.sh28
-rwxr-xr-xabs/core-testing/LinHES-config-22/mv_advanced.py384
-rwxr-xr-xabs/core-testing/LinHES-config-22/mv_common.py201
-rwxr-xr-xabs/core-testing/LinHES-config-22/mv_config.py17
-rwxr-xr-xabs/core-testing/LinHES-config-22/mv_ddns.py26
-rwxr-xr-xabs/core-testing/LinHES-config-22/mv_hostype.py230
-rwxr-xr-xabs/core-testing/LinHES-config-22/mv_install.py1432
-rwxr-xr-xabs/core-testing/LinHES-config-22/mv_ir.py330
-rwxr-xr-xabs/core-testing/LinHES-config-22/mv_misc.py180
-rwxr-xr-xabs/core-testing/LinHES-config-22/mv_network.py507
-rwxr-xr-xabs/core-testing/LinHES-config-22/mv_screensaver.py199
-rwxr-xr-xabs/core-testing/LinHES-config-22/mv_smolt.py59
-rwxr-xr-xabs/core-testing/LinHES-config-22/mv_software.py61
-rwxr-xr-xabs/core-testing/LinHES-config-22/mv_webuser.py21
-rw-r--r--abs/core-testing/LinHES-config-22/myth_user_call174
-rwxr-xr-xabs/core-testing/LinHES-config-22/myth_user_call.py159
-rw-r--r--abs/core-testing/LinHES-config-22/networkconfig.sh341
-rwxr-xr-xabs/core-testing/LinHES-config-22/remove_service.sh8
-rwxr-xr-xabs/core-testing/LinHES-config-22/restore_default_settings.sh362
-rw-r--r--abs/core-testing/LinHES-config-22/restore_km_db_chroot.sh61
-rwxr-xr-xabs/core-testing/LinHES-config-22/soundconfig.sh254
-rwxr-xr-xabs/core-testing/LinHES-config-22/startx29
-rwxr-xr-xabs/core-testing/LinHES-config-22/systemconfig.py244
-rwxr-xr-xabs/core-testing/LinHES-config-22/systemconfig.sh19
-rwxr-xr-xabs/core-testing/LinHES-config-22/timezip.py232
-rwxr-xr-xabs/core-testing/LinHES-config-22/xconfig.sh363
-rw-r--r--abs/core-testing/lirc/PKGBUILD4
-rw-r--r--abs/core-testing/lirc/lirc_mod_mce.patch98
-rw-r--r--abs/core-testing/mythinstall-22/PKGBUILD28
-rwxr-xr-xabs/core-testing/mythinstall-22/checkout_MythVantage.sh49
-rwxr-xr-xabs/core-testing/mythtv/stable.22/clean_all.sh22
-rw-r--r--abs/core-testing/mythtv/stable.22/morethemes/PKGBUILD50
-rwxr-xr-xabs/core-testing/mythtv/stable.22/mp_all.sh30
-rw-r--r--abs/core-testing/mythtv/stable.22/mytharchive/PKGBUILD51
-rw-r--r--abs/core-testing/mythtv/stable.22/mythbrowser/PKGBUILD51
-rw-r--r--abs/core-testing/mythtv/stable.22/mythflix/PKGBUILD51
-rw-r--r--abs/core-testing/mythtv/stable.22/mythgallery/PKGBUILD51
-rw-r--r--abs/core-testing/mythtv/stable.22/mythgame/PKGBUILD51
-rw-r--r--abs/core-testing/mythtv/stable.22/mythmovies/PKGBUILD51
-rw-r--r--abs/core-testing/mythtv/stable.22/mythmusic/PKGBUILD54
-rw-r--r--abs/core-testing/mythtv/stable.22/mythnews/PKGBUILD51
-rwxr-xr-xabs/core-testing/mythtv/stable.22/myththemes/PKGBUILD50
-rwxr-xr-xabs/core-testing/mythtv/stable.22/mythtv/PKGBUILD92
-rw-r--r--abs/core-testing/mythtv/stable.22/mythtv/menu-xml/HOST_SETTINGS.xml94
-rw-r--r--abs/core-testing/mythtv/stable.22/mythtv/menu-xml/is.xml3
-rw-r--r--abs/core-testing/mythtv/stable.22/mythtv/menu-xml/library.xml.patch12
-rw-r--r--abs/core-testing/mythtv/stable.22/mythtv/menu-xml/linhes.xml59
-rw-r--r--abs/core-testing/mythtv/stable.22/mythtv/menu-xml/mainmenu.xml.patch39
-rw-r--r--abs/core-testing/mythtv/stable.22/mythtv/menu-xml/mythbackup.xml20
-rw-r--r--abs/core-testing/mythtv/stable.22/mythtv/menu-xml/mythrestore.xml20
-rw-r--r--abs/core-testing/mythtv/stable.22/mythtv/menu-xml/optical_menu.xml.patch16
-rwxr-xr-xabs/core-testing/mythtv/stable.22/mythtv/menu-xml/original/create_patch.sh5
-rw-r--r--abs/core-testing/mythtv/stable.22/mythtv/menu-xml/setup.xml111
-rw-r--r--abs/core-testing/mythtv/stable.22/mythtv/menu-xml/siriusmenu.xml419
-rw-r--r--abs/core-testing/mythtv/stable.22/mythtv/menu-xml/update.xml20
-rw-r--r--abs/core-testing/mythtv/stable.22/mythtv/menu-xml/update2.xml26
-rw-r--r--abs/core-testing/mythtv/stable.22/mythtv/menu-xml/util_menu.xml.patch16
-rw-r--r--abs/core-testing/mythtv/stable.22/mythtv/menu-xml/xmmenu.xml574
-rwxr-xr-xabs/core-testing/mythtv/stable.22/mythtv/myth.sh4
-rwxr-xr-xabs/core-testing/mythtv/stable.22/mythtv/mythbackend38
-rw-r--r--abs/core-testing/mythtv/stable.22/mythtv/mythbackend.lr9
-rwxr-xr-xabs/core-testing/mythtv/stable.22/mythtv/mythbackend.sh117
-rw-r--r--abs/core-testing/mythtv/stable.22/mythtv/mythfrontend.lr9
-rwxr-xr-xabs/core-testing/mythtv/stable.22/mythtv/mythtv.install30
-rwxr-xr-xabs/core-testing/mythtv/stable.22/mythtv/pretty2
-rw-r--r--abs/core-testing/mythtv/stable.22/mythtv/smolt_jump.patch30
-rw-r--r--abs/core-testing/mythtv/stable.22/mythvideo/PKGBUILD51
-rw-r--r--abs/core-testing/mythtv/stable.22/mythweather/PKGBUILD51
-rw-r--r--abs/core-testing/mythtv/stable.22/mythweb/PKGBUILD49
-rw-r--r--abs/core-testing/mythtv/stable.22/mythweb/mythweb.install10
-rw-r--r--abs/core-testing/mythtv/stable.22/mythzoneminder/PKGBUILD51
-rw-r--r--abs/core-testing/mythtv/trunk/morethemes/PKGBUILD2
-rwxr-xr-xabs/core-testing/mythtv/trunk/mp_all.sh2
-rw-r--r--abs/core-testing/mythtv/trunk/mytharchive/PKGBUILD2
-rw-r--r--abs/core-testing/mythtv/trunk/mythbrowser/PKGBUILD2
-rw-r--r--abs/core-testing/mythtv/trunk/mythflix/PKGBUILD2
-rw-r--r--abs/core-testing/mythtv/trunk/mythgallery/PKGBUILD2
-rw-r--r--abs/core-testing/mythtv/trunk/mythgame/PKGBUILD2
-rw-r--r--abs/core-testing/mythtv/trunk/mythmovies/PKGBUILD2
-rw-r--r--abs/core-testing/mythtv/trunk/mythmusic/PKGBUILD2
-rw-r--r--abs/core-testing/mythtv/trunk/mythnews/PKGBUILD2
-rwxr-xr-xabs/core-testing/mythtv/trunk/myththemes/PKGBUILD2
-rwxr-xr-xabs/core-testing/mythtv/trunk/mythtv/PKGBUILD2
-rw-r--r--abs/core-testing/mythtv/trunk/mythvideo/PKGBUILD2
-rw-r--r--abs/core-testing/mythtv/trunk/mythweather/PKGBUILD2
-rw-r--r--abs/core-testing/mythtv/trunk/mythweb/PKGBUILD2
-rw-r--r--abs/core-testing/mythtv/trunk/mythzoneminder/PKGBUILD2
-rwxr-xr-xabs/core-testing/runit-scripts/PKGBUILD2
-rwxr-xr-xabs/core-testing/runit-scripts/runitscripts/services/lircd/run2
-rwxr-xr-xabs/core-testing/system-templates/PKGBUILD2
-rw-r--r--abs/core-testing/system-templates/templates/remotes/streamzap/lircd.conf.streamzap3
108 files changed, 10439 insertions, 25 deletions
diff --git a/abs/core-testing/LinHES-config-22/LinHES-release b/abs/core-testing/LinHES-config-22/LinHES-release
new file mode 100644
index 0000000..6a885f4
--- /dev/null
+++ b/abs/core-testing/LinHES-config-22/LinHES-release
@@ -0,0 +1 @@
+LinHES R6.01.00 (Chugu)
diff --git a/abs/core-testing/LinHES-config-22/LinHES.install b/abs/core-testing/LinHES-config-22/LinHES.install
new file mode 100644
index 0000000..a0a9d31
--- /dev/null
+++ b/abs/core-testing/LinHES-config-22/LinHES.install
@@ -0,0 +1,78 @@
+# This is a default template for a post-install scriptlet. You can
+# remove any functions you don't need (and this header).
+
+# arg 1: the new package version
+pre_install() {
+ rm -f /etc/issue
+ rm -f /etc/arch-release
+
+}
+
+# arg 1: the new package version
+post_install() {
+ if [ ! -f /etc/blacklist.package ]
+ then
+ echo "List of packages to ignore" > /etc/blacklist.package
+ echo "one package per line" >> /etc/blacklist.package
+ fi
+
+LINE="mythtv ALL = NOPASSWD:/usr/MythVantage/bin/mythvantage"
+LINE1="mythtv ALL = NOPASSWD:/usr/MythVantage/bin/MythVantage"
+for i in "$LINE" "$LINE1"
+do
+ cp /etc/sudoers /etc/sudoers.bak
+ grep -q "$i" /etc/sudoers
+ if [ $? != 0 ]
+ then
+ echo "$i" >> /etc/sudoers
+ visudo -cf /etc/sudoers
+ if [ ! $? = 0 ]
+ then
+ cp /etc/sudoers.bak /etc/sudoers
+ echo $i
+ echo "Error adding files"
+ exit 1
+ fi
+ fi
+done
+
+
+}
+
+# arg 1: the new package version
+# arg 2: the old package version
+pre_upgrade() {
+ /bin/true
+}
+
+# arg 1: the new package version
+# arg 2: the old package version
+post_upgrade() {
+ . /etc/profile
+ ps -ef|grep mysqld|grep -v grep
+ status=$?
+ echo "status $status"
+ if [ $status = 0 ]
+ then
+ restore_default_settings.sh -c load
+ fi
+ if [ ! -f /etc/blacklist.package ]
+ then
+ echo "List of packages to ignore" > /etc/blacklist.package
+ echo "one package per line" >> /etc/blacklist.package
+ fi
+}
+
+# arg 1: the old package version
+pre_remove() {
+ /bin/true
+}
+
+# arg 1: the old package version
+post_remove() {
+ /bin/true
+}
+
+op=$1
+shift
+$op $*
diff --git a/abs/core-testing/LinHES-config-22/MythVantage.sh b/abs/core-testing/LinHES-config-22/MythVantage.sh
new file mode 100755
index 0000000..286c908
--- /dev/null
+++ b/abs/core-testing/LinHES-config-22/MythVantage.sh
@@ -0,0 +1,3 @@
+export MV_ROOT=/usr/MythVantage
+export PATH=$PATH:$MV_ROOT/bin
+export TEMPLATES=$MV_ROOT/templates
diff --git a/abs/core-testing/LinHES-config-22/PKGBUILD b/abs/core-testing/LinHES-config-22/PKGBUILD
new file mode 100644
index 0000000..145a633
--- /dev/null
+++ b/abs/core-testing/LinHES-config-22/PKGBUILD
@@ -0,0 +1,100 @@
+pkgname=LinHES-config-22
+pkgver=2.1
+pkgrel=9
+conflicts=(MythVantage-config MythVantage-config-dev LinHES-config-dev LinHes-config )
+pkgdesc="Install and configure your system"
+depends=(bc libstatgrab mysql-python expect curl dnsutils parted
+ sg3_utils nmbscan system-templates rsync python-parted
+ ddcxinfo python-pexpect python-netifaces LinHES-timezone
+ python-iplib mythinstall-22)
+arch=('i686')
+
+source=(mv_install.py
+ mv_config.py
+ myth_user_call
+ file_time_offset.py
+ install_proxy.sh
+ install_functions.sh
+ systemconfig.sh
+ install_db_chroot.sh
+ restore_default_settings.sh
+ xconfig.sh
+ timezip.py
+ soundconfig.sh
+ LinHES-release
+ issue
+ MythVantage.sh
+ create_master.sh
+ build_diskless.sh
+ networkconfig.sh
+ autocard.py
+ restore_km_db_chroot.sh
+ README
+ mv_advanced.py
+ mv_common.py
+ mv_ddns.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)
+
+install=LinHES.install
+
+build() {
+ mkdir -p $startdir/pkg/etc
+ mkdir -p $startdir/pkg/usr/share/mythtv/themes/default
+
+ 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 $MVDIR/bin
+ mkdir -p $MVDIR/etc
+
+ #copy in all the installer specific stuff
+# install -m0700 myth_user_call $MVDIR/bin/myth_user_call
+ install -m0700 myth_user_call.py $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
+ install -m 0755 xconfig.sh $MVDIR/bin/xconfig.sh
+ install -m 0755 install_db_chroot.sh $MVDIR/bin/install_db_chroot.sh
+ install -m 0755 restore_km_db_chroot.sh $MVDIR/bin/restore_km_db_chroot.sh
+ install -m 0755 restore_default_settings.sh $MVDIR/bin/restore_default_settings.sh
+ 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 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_ddns.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/
+
+ #README file displayed on install
+ install -m 0755 README $MVDIR/README
+
+ mkdir -p $startdir/pkg/usr/bin
+ install -m 0755 file_time_offset.py $startdir/pkg/usr/bin/file_time_offset.py
+
+ #Copy in the branding stuff
+ install -m 0755 LinHES-release $startdir/pkg/etc/LinHES-release
+ install -m 0755 issue $startdir/pkg/etc/issue
+
+}
diff --git a/abs/core-testing/LinHES-config-22/README b/abs/core-testing/LinHES-config-22/README
new file mode 100644
index 0000000..447678a
--- /dev/null
+++ b/abs/core-testing/LinHES-config-22/README
@@ -0,0 +1,9 @@
+Thanks for choosing LinHES! At the moment, LinHES is compiled for i686.
+If you have an i586 class system, LinHES won't work for you. I've not seen a great request for i586. If you want it, you have to drum up support for it. The PVR-350 TV out isn't supported at this time. I have to determine if it works with MythTV 0.22 first.
+
+Support for LinHES can be obtained at:
+http://linhes.org
+irc.freenode.net #linhes
+
+Bugs can be reported at:
+http://linhes.org/flyspray
diff --git a/abs/core-testing/LinHES-config-22/add_service.sh b/abs/core-testing/LinHES-config-22/add_service.sh
new file mode 100755
index 0000000..190d604
--- /dev/null
+++ b/abs/core-testing/LinHES-config-22/add_service.sh
@@ -0,0 +1,15 @@
+#!/bin/bash
+SERVICE_DIR=/var/service
+SCRIPT_DIR=/etc/sv
+if [ -d $SCRIPT_DIR/$1 ]
+then
+ if [ -d $SERVICE_DIR/$1 ]
+ then
+ echo "$1 already there"
+ else
+ ln -s $SCRIPT_DIR/$1 $SERVICE_DIR/$1
+ echo "adding $1"
+ fi
+else
+ echo "couldn't find $SCRIPT_DIR/$1"
+fi
diff --git a/abs/core-testing/LinHES-config-22/autocard.py b/abs/core-testing/LinHES-config-22/autocard.py
new file mode 100755
index 0000000..03eecac
--- /dev/null
+++ b/abs/core-testing/LinHES-config-22/autocard.py
@@ -0,0 +1,307 @@
+#!/usr/bin/python
+# import MySQL module
+#jm
+import MySQLdb
+import sys
+import getopt
+import socket
+import os
+import time
+import string
+import glob
+from string import letters
+from string import digits
+def INSERTNULL_SOURCE(name,xmltvgrabber,userid,freqtable,lineupid,password,useeit):
+ cursor = db.cursor()
+ cursor.execute("INSERT INTO videosource(name,xmltvgrabber,userid,freqtable,lineupid,password,useeit) VALUES(%s,%s,%s,%s,%s,%s,%s);",(name,xmltvgrabber,userid,freqtable,lineupid,password,useeit))
+
+def INSERTCARD_INTOMYTH(Device,Driver,Cardvendor):
+ global currenthostname
+ print Device
+ print Driver,
+ print Cardvendor
+ cursor = db.cursor()
+ insert = "false"
+ if Driver == "ivtv" :
+ cardtype="MPEG"
+ defaultinput="Tuner 1"
+ insert="true"
+ if Cardvendor == "pcHDTV HD3000 HDTV":
+ insert="false"
+ cardtype ="whocares"
+
+ #print insert
+ if insert == "true" :
+ cursor.execute("INSERT INTO capturecard (videodevice,cardtype,defaultinput,hostname) VALUES(%s,%s,%s,%s);",(Device,cardtype,defaultinput,currenthostname))
+
+def INSERTHDR_INTOMYTH(deviceid,tuner_number):
+ cardtype='HDHOMERUN'
+ defaultinput='MPEG2TS'
+ global currenthostname
+ print deviceid
+ print cardtype
+ print defaultinput
+ print tuner_number
+ cursor = db.cursor()
+ #print insert
+ cursor.execute("INSERT INTO capturecard (videodevice,cardtype,defaultinput,dbox2_port ,hostname) VALUES(%s,%s,%s,%s,%s);",(deviceid,cardtype,defaultinput,tuner_number,currenthostname))
+
+def INSERTAUTOCARD():
+ global cardlist
+ global currenthostname
+ # create a cursor
+ cursor = db.cursor()
+
+
+ for i in range( 1 , len(cardlist)):
+ insert = "false"
+# print cardlist[i]
+ Device=cardlist[i][0]
+ Driver=cardlist[i][1]
+ Cardvendor=cardlist[i][2]
+ Businfo=cardlist[i][3]
+ if Driver == "ivtv" :
+ insert="true"
+ devicestatus="unused"
+ if Cardvendor == "pcHDTV HD3000 HDTV":
+ insert="false"
+ cardtype ="whocares"
+ if Driver == "hdr":
+ insert="true"
+ devicestatus="unused"
+
+ if insert == "true" :
+ cursor.execute("delete from autocard where uniqid=%s;",(Businfo))
+ if Driver=="hdr":
+ Cardvendor="HDHOMERUN Tuner 1"
+ cursor.execute("INSERT INTO autocard (dev,driver,description,uniqid,devicestatus,hostname) VALUES(%s,%s,%s,%s,%s,%s);",(Device,Driver,Cardvendor,Businfo,devicestatus,currenthostname))
+ Cardvendor="HDHOMERUN Tuner 2"
+ cursor.execute("INSERT INTO autocard (dev,driver,description,uniqid,devicestatus,hostname) VALUES(%s,%s,%s,%s,%s,%s);",(Device,Driver,Cardvendor,Businfo,devicestatus,currenthostname))
+
+ else:
+ cursor.execute("INSERT INTO autocard (dev,driver,description,uniqid,devicestatus,hostname) VALUES(%s,%s,%s,%s,%s,%s);",(Device,Driver,Cardvendor,Businfo,devicestatus,currenthostname))
+
+
+
+def PRINTINFO():
+ global cardlist
+
+ for list in cardlist:
+ if list != "_placeholder_":
+ print list
+ #print "-------------"
+
+def GATHER_HDR():
+ global cardlist
+ command="/usr/bin/hdhomerun_config --discover"
+ results=os.popen(command,'r')
+ line=results.readline()
+ if line.strip().split()[0] == "no":
+ print "HDHOMERUN not detected"
+ else:
+ print line
+ hdrdevice=line.strip().split()[2]
+ print hdrdevice
+ Driver="hdr"
+ Device=hdrdevice
+ Cardtype="HDHOMERUN"
+ Businfo=hdrdevice
+ cardprops = [Device,Driver , Cardtype , Businfo]
+ cardlist.append(cardprops)
+
+
+def GATHER_v4l_CARDS():
+ global cardlist
+ cardlist=["_placeholder_"]
+ # print "Looking for v4l cards"
+ try:
+ filelist = os.listdir('/dev/v4l/')
+ except OSError:
+ filelist=" "
+ #fakelist=['/dev/v4l/video3', 'ivtv', 'WinTV PVR 500 (unit #2)', '0000:04:09.0']
+ #cardlist.append(fakelist)
+ try:
+ filelist = glob.glob("/dev/v4l/video?")
+ Driver=""
+ Cardtype=""
+ Businfo=""
+ numcards = 0
+ for Device in filelist:
+ #print card
+ numcards = numcards+1
+ cmd = 'v4l2-ctl -D -d' + Device
+ for line in os.popen(cmd).readlines():
+ #print line
+ pos = string.find(line,"Driver name")
+ if pos >=0:
+ splitline= line.split(':')
+ Driver=splitline[1].strip()
+ pos = string.find(line,"Card type")
+ if pos >=0:
+ splitline= line.split(':')
+ Cardtype=splitline[1].strip()
+
+ pos = string.find(line,"Bus info")
+ if pos >=0:
+ splitline= line.split(':',1)
+ Businfo=splitline[1].strip()
+
+ #print Device,Driver , Cardtype , Businfo,numcards
+ cardprops = [Device,Driver , Cardtype , Businfo]
+ cardlist.append(cardprops)
+ except IOError:
+ print "no v4l cards found"
+ sys.exit(2)
+
+
+def WRITEUDEV_IVTV():
+ global insertmyth
+ cursor = db.cursor()
+ #add ivtv,cid lookup loop through until empty.
+ cursor.execute("select distinct(uniqid) from autocard where driver='ivtv' and devicestatus='will-add'")
+ cidrows = cursor.fetchall()
+ for row in cidrows:
+ cid=row[0]
+ cursor.execute("select dev,driver,description,devicestatus,hostname from autocard where uniqid=%s limit 1;",(cid))
+ result = cursor.fetchone()
+ description=result[2]
+ driver='DRIVERS==\"ivtv\"'
+ ATTRNAME='ATTR{name}=="ivtv? encoder MPG"'
+ KERNELS='KERNELS==\"'
+ KERNELS+=cid
+ KERNELS+="\""
+ #filter out non digit or chars
+ keep=letters.join(digits)
+ description=filter(lambda c: c in keep, description)
+ devnode="ivtv/"
+ #devnode+=description + "_"
+ udevcid=cid.partition(":")
+ devnode+=udevcid[2]
+ devnode+="_video"
+ UDEV_RULE=driver +', '+ATTRNAME+', '+ KERNELS +', ' + 'NAME=\"' + devnode + '"'
+ print "Here is the udev rule"
+ print UDEV_RULE
+ filename='/etc/udev/rules.d/11-ivtv-'+cid+'.rules'
+ file = open(filename,'w')
+ file.write(UDEV_RULE)
+ if ( insertmyth == "true"):
+ devnode="/dev/"+devnode
+ INSERTCARD_INTOMYTH(devnode,"ivtv",description)
+ cursor.execute("update autocard set devicestatus='done' where uniqid=%s;",(cid))
+#now insert HDR
+ cursor.execute("select distinct(uniqid),description from autocard where driver='hdr' and devicestatus='will-add'")
+ cidrows = cursor.fetchall()
+ for row in cidrows:
+ if ( insertmyth == "true"):
+ deviceid=row[0]
+ #cardtype="HDHOMRUN"
+ #defaultinput="MPEG2TS"
+ dbox2_port=row[1]
+ tuner_number=dbox2_port.rpartition(' ')[2]
+ INSERTHDR_INTOMYTH(deviceid,tuner_number)
+ cursor.execute("update autocard set devicestatus='done' where uniqid=%s and description=%s;",(deviceid,dbox2_port))
+
+
+
+def CLEARAUTOCARD():
+ cursor = db.cursor()
+ cursor.execute("delete from autocard")
+
+def RELOADUDEV():
+ print "relaoding udev rules"
+ os.system('udevcontrol reload_rules')
+ os.system('rmmod ivtv')
+ os.system('udevtrigger')
+
+
+def usage():
+ print " -h help"
+ print " -g gather and print out the found cards"
+ print " -w write out the udev rules"
+ print " -i insert cards into myth that are marked will-add(only used with -w)"
+ print " -r reload udev rules"
+ print " -c clear the autocard db"
+
+def main(argv):
+ global db
+ global cardlist
+ global currenthostname
+ currenthostname=""
+ writeudev="false"
+ global insertmyth
+ insertmyth ="false"
+
+ db = MySQLdb.connect(host="localhost", user="mythtv", passwd="mythtv", db="mythconverg")
+ try:
+ cursor = db.cursor()
+ cursor.execute("describe autocard;")
+ except MySQLdb.Error, e:
+ cursor.execute("create table autocard(dev varchar(50),driver varchar(50),description varchar(50),uniqid varchar(50), devicestatus varchar(50),hostname varchar(50));")
+ print "table created"
+
+ if ( currenthostname == "" ):
+ currenthostname = socket.gethostname()
+
+
+ try:
+ opts, args = getopt.getopt(argv, "hgwircd", ["help", "gathercards", "writeudev" ,"insert" , "reloadudev" , "clearautocard"] )
+ except getopt.GetoptError:
+ sys.exit(2)
+ for opt, arg in opts:
+ if opt in ("-h", "--help"):
+ usage()
+ sys.exit()
+ elif opt in ( "-g" , "--gathercards"):
+ GATHER_v4l_CARDS()
+ GATHER_HDR()
+ INSERTAUTOCARD()
+ PRINTINFO()
+ elif opt in ("-w", "--writeudev"):
+ writeudev="true"
+ elif opt in ("-i", "--insert"):
+ insertmyth="true"
+ elif opt in ( "-r" , "--reloadudev"):
+ RELOADUDEV()
+ elif opt in ( "-c" , "--clearautocard"):
+ CLEARAUTOCARD()
+ elif opt in ( "-d" ):
+ INSERTCARD_INTOMYTH("file:/myth/video/TripThe1939.mpeg","ivtv","Dummy tuner")
+ INSERTNULL_SOURCE("dummy","/bin/true","","default","NULL","NULL","0")
+
+ if ( writeudev == "true"):
+ WRITEUDEV_IVTV()
+
+
+
+
+
+
+if __name__ == "__main__":
+ main(sys.argv[1:])
+
+
+
+
+
+#mysql> create table autocard(dev varchar(50),driver varchar(50),description varchar(50),uniqid varchar(50), devicestatus varchar(50),hostname varchar(50));
+#Query OK, 0 rows affected (0.14 sec)
+
+#mysql> describe autocard;
+#+--------------+-------------+------+-----+---------+-------+
+#| Field | Type | Null | Key | Default | Extra |
+#+--------------+-------------+------+-----+---------+-------+
+#| dev | varchar(50) | YES | | NULL | |
+#| driver | varchar(50) | YES | | NULL | |
+#| description | varchar(50) | YES | | NULL | |
+#| uniqid | varchar(50) | YES | | NULL | |
+#| devicestatus | varchar(50) | YES | | NULL | |
+#| hostname | varchar(50) | YES | | NULL | |
+#+--------------+-------------+------+-----+---------+-------+
+
+
+
+
+
+
+
+
diff --git a/abs/core-testing/LinHES-config-22/bpopup-ui.xml b/abs/core-testing/LinHES-config-22/bpopup-ui.xml
new file mode 100755
index 0000000..df0598b
--- /dev/null
+++ b/abs/core-testing/LinHES-config-22/bpopup-ui.xml
@@ -0,0 +1,164 @@
+<!--
+
+ This is a myth style theme file for mythwelcome
+
+ (c) 2005 by a whole bunch of people associated with MythTV
+
+-->
+<mythuitheme>
+
+ <window name="welcome_screen">
+
+ <!--
+
+ First, define all the fonts we need on this screen
+
+ -->
+ <font name="title" face="Arial">
+ <color>#ffff00</color>
+ <dropcolor>#000000</dropcolor>
+ <size>24</size>
+ <shadow>3,3</shadow>
+ <bold>yes</bold>
+ </font>
+
+ <font name="time" face="Arial">
+ <color>#9999cc</color>
+ <size>18</size>
+ <bold>yes</bold>
+ </font>
+
+ <font name="label" face="Arial">
+ <color>#ffff00</color>
+ <dropcolor>#000000</dropcolor>
+ <size>18</size>
+ <shadow>3,3</shadow>
+ <bold>yes</bold>
+ </font>
+
+ <font name="info" face="Arial">
+ <color>#ffffff</color>
+ <size>18</size>
+ <bold>yes</bold>
+ </font>
+
+ <font name="biginfo" face="Arial">
+ <color>#ffffff</color>
+ <size>50</size>
+ <bold>yes</bold>
+ </font>
+ <font name="warning" face="Arial">
+ <color>#ff0000</color>
+ <dropcolor>#000000</dropcolor>
+ <size>16</size>
+ <shadow>2,2</shadow>
+ <bold>yes</bold>
+ </font>
+
+ <font name="buttons" face="Arial">
+ <color>#ffff00</color>
+ <size>14</size>
+ <bold>yes</bold>
+ </font>
+
+ <container name="main_display">
+ <area>0,0,800,600</area>
+
+ <textarea name="title" draworder="0" align="center">
+ <multiline>no</multiline>
+ <font>title</font>
+ <area>50,40,700,40</area>
+ <value></value>
+ </textarea>
+
+ <!--
+ time
+ -->
+ <textarea name="time_text" draworder="0" align="right">
+ <multiline>no</multiline>
+ <font>time</font>
+ <area>660,520,110,30</area>
+ <value></value>
+ </textarea>
+
+ <textarea name="date_text" draworder="0" align="center">
+ <multiline>no</multiline>
+ <font>time</font>
+ <area>0,60,800,70</area>
+ <value></value>
+ </textarea>
+
+ <!--
+ current myth status
+ -->
+
+ <textarea name="status_text" draworder="1" align="center">
+ <multiline>yes</multiline>
+ <font>info</font>
+ <area>20,70,760,60</area>
+ <value>MythTV is idle and will shutdown shortly.</value>
+ </textarea>
+
+ <!--
+ current recordings status
+ -->
+
+ <textarea name="recording_label" draworder="1" align="center">
+ <font>label</font>
+ <area>20,110,760,30</area>
+ <!--<value>Percent Complete </value>-->
+ <value></value>
+ </textarea>
+
+ <textarea name="recording_text" draworder="1" align="hcenter">
+ <multiline>yes</multiline>
+ <font>biginfo</font>
+ <area>20,110,760,150</area>
+ <value></value>
+ </textarea>
+
+ <!--
+ next scheduled recording status
+ -->
+
+ <textarea name="scheduled_label" draworder="1" align="center">
+ <font>label</font>
+ <area>20,320,760,30</area>
+ <value></value>
+ </textarea>
+
+ <textarea name="scheduled_text" draworder="1" align="hcenter">
+ <multiline>yes</multiline>
+ <font>biginfo</font>
+ <area>20,400,760,120</area>
+ <value></value>
+ </textarea>
+
+ <!--
+ scheduled recordings conflict warning
+ -->
+
+ <textarea name="conflicts_text" draworder="1" align="center">
+ <font>warning</font>
+ <area>20,490,760,30</area>
+ <value>WARNING: There are conflicting scheduled recordings!</value>
+ </textarea>
+
+ <!--
+ start frontend button
+
+ <textbutton name="startfrontend_button" draworder="1">
+ <position>81,535</position>
+ <font>buttons</font>
+ <image function="on" filename="mw_text_button_on.png"></image>
+ <image function="off" filename="mw_text_button_off.png"></image>
+ <image function="pushed" filename="mw_text_button_pushed.png"></image>
+ </textbutton>
+
+ -->
+
+ </container>
+
+ </window>
+
+</mythuitheme>
diff --git a/abs/core-testing/LinHES-config-22/build_diskless.sh b/abs/core-testing/LinHES-config-22/build_diskless.sh
new file mode 100755
index 0000000..4dfd5fc
--- /dev/null
+++ b/abs/core-testing/LinHES-config-22/build_diskless.sh
@@ -0,0 +1,143 @@
+#!/bin/bash
+#CD=/mnt/cd
+. /etc/profile
+. /etc/systemconfig
+
+TFTP=/data/srv/tftp
+CD=/data/srv/tftp/live
+DESTCD=/data/srv/tftp/CD
+BASE=/data/srv/tftp/masterbuild
+
+MODULES=$DESTCD/MythVantage/base/
+myip=`ifconfig | grep 'inet addr:'| grep -v '127.0.0.1' | cut -d: -f2 | awk '{ print $1}'|head -n1`
+SRCFILES=$BASE/mnt/live/mnt/MythVantage/base/
+
+function log () {
+echo $1
+}
+
+function check_xvfb () {
+export DISPLAY=127.0.0.1:25
+ Xvfb -ac :25 &
+
+}
+
+
+function create_base_image() {
+echo $SRCFILES
+if [ -f $SRCFILES/data.lzm ]
+then
+ mkdir $HOST_IMG_DIR
+ cd $SRCFILES
+ echo "Creating image.." > $BASE/tmp/.install_state
+ LIST=`ls *.lzm`
+ for i in $LIST
+ do
+ echo $i
+ echo $i > $BASE/tmp/.install_percent
+ lzm2dir $i \/$HOST_IMG_DIR
+ done
+
+ for i in sys proc dev tmp
+ do
+ mkdir /$HOST_IMG_DIR/$i
+ done
+
+ chmod 777 /$HOST_IMG_DIR/tmp
+ mknod /$HOST_IMG_DIR/dev/null c 1 3
+ mknod /$HOST_IMG_DIR/dev/null c 1 5
+ mknod /$HOST_IMG_DIR/dev/console c 5 1
+ chmod +s /$HOST_IMG_DIR/usr/bin/Xorg
+ chmod +s /$HOST_IMG_DIR/usr/bin/crontab
+ chmod +s /$HOST_IMG_DIR/usr/bin/sudo
+ chmod +s /$HOST_IMG_DIR/bin/mount
+ #copy fstab from masterbuild
+ cp -f $BASE/etc/fstab /$HOST_IMG_DIR/etc/fstab
+ echo "Done: installing data" > $BASE/tmp/.install_state
+ return 0
+else
+ echo "Error: no modules" > $BASE/tmp/.install_state
+ log "couldn't find modules to install"
+ return 1
+fi
+}
+
+function configure_image () {
+ echo "Configuring system" > $BASE/tmp/.install_state
+ cp -f $BASE/etc/systemconfig $HOST_IMG_DIR/etc/systemconfig
+ chown root:mythtv $HOST_IMG_DIR/etc/systemconfig
+ chmod 775 "$HOST_IMG_DIR" /etc/systemconfig
+ cp /etc/mtab $HOST_IMG_DIR/etc/mtab
+ mount --bind /dev $HOST_IMG_DIR/dev
+
+ chroot "$HOST_IMG_DIR" $MV_ROOT/bin/systemconfig.sh misc,hostype,network,this_is_install
+#copy syssettings template to here.
+ SE=$BASE$TEMPLATES/settings/syssettings
+ mkdir -p $HOST_IMG_DIR/$TEMPLATES/settings/syssettings
+ cp -rp $SE/* ${HOST_IMG_DIR}/$TEMPLATES/settings/syssettings
+ chown root:mythtv $HOST_IMG_DIR/etc/systemconfig
+ chown -R mythtv:mythtv $HOST_IMG_DIR/$TEMPLATES/settings/syssettings
+ chmod -R 775 $HOST_IMG_DIR/$TEMPLATES/settings/syssettings
+#update remotedb with this host settings
+ OLDDISPLAY=$DISPLAY
+ check_xvfb
+ chroot $HOST_IMG_DIR $MV_ROOT/bin/MythVantage -t restore,default_1
+ chroot $HOST_IMG_DIR $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 "$HOST_IMG_DIR" $MV_ROOT/bin/systemconfig.sh misc,hostype,network,this_is_install
+ chroot "$HOST_IMG_DIR" $MV_ROOT/bin/restore_default_settings.sh -c ACCESSCONTROL
+ fi
+chroot "$HOST_IMG_DIR" $MV_ROOT/bin/systemconfig.sh advanced,this_is_install
+cp -f $BASE/etc/X11/xorg.conf $HOST_IMG_DIR/etc/X11/xorg.conf
+echo "Done" > $BASE/tmp/.install_state
+DISPLAY=$OLDDISPLAY
+
+#cp /tmp/mythvantage_install.log $HOST_IMG_DIR/var/log/
+}
+
+function create_tftp_boot () {
+
+ CFGFILE=$TFTP/pxelinux.cfg/01-$2
+ echo "DEFAULT mythfe" > $CFGFILE
+ echo "LABEL mythfe" >> $CFGFILE
+ echo "kernel masterbuild/boot/vmlinuz26STB" >> $CFGFILE
+ echo "append vga=normal root=/dev/nfs rw netboot nfsroot=$myip:/data/srv/tftp/$1 ip=dhcp init=/sbin/runit" >> $CFGFILE
+ echo "TIMEOUT 2" >> $CFGFILE
+}
+
+function create_nfs_export () {
+echo "/data/srv/tftp/$1 *(rw,no_root_squash,anonuid=1000,anongid=1000) " >> /etc/exports
+exportfs -arv
+}
+
+#-------------------------------------------------------------------------------MAIN PROGRAM ---------------------------------------------------------------------
+if [ x$1 = x -o x$2 = x ]
+then
+ echo "usage: hostname macaddress"
+ exit 1
+fi
+
+image_name=$1
+mac_address=`echo $2| tr "[:upper:]" "[:lower:]"`
+
+echo "using image_name of $image_name"
+echo "using mac_address of $mac_address"
+
+HOST_IMG_DIR=$TFTP/$1
+
+create_base_image $image_name
+configure_image
+umount $HOST_IMG_DIR/dev
+create_tftp_boot $image_name $mac_address
+create_nfs_export $image_name
+
+
+
+
+#create_dhcp_entry $mac_address
+
diff --git a/abs/core-testing/LinHES-config-22/checkout_MythVantage.sh b/abs/core-testing/LinHES-config-22/checkout_MythVantage.sh
new file mode 100755
index 0000000..944b9c6
--- /dev/null
+++ b/abs/core-testing/LinHES-config-22/checkout_MythVantage.sh
@@ -0,0 +1,49 @@
+#!/bin/bash
+MYDIR=`pwd`
+MYTHPATH="\/data\/LinHES-PKGBUILD\/abs\/core-testing\/mythtv\/stable\/mythtv\/src\/mythtv-0.21"
+
+function setup_links {
+rm mythinstall.bin
+rm mythbeselect.bin
+ln -s $MYDIR/src/MythVantage-app/mythinstall/mythinstall ./mythinstall.bin
+ln -s $MYDIR/src/MythVantage-app/mythbeselect/mythbeselect ./mythbeselect.bin
+}
+
+function dl_repo {
+mkdir src
+cd src
+if [ ! -d MythVantage-app ]
+then
+ git clone http://mythvantage.com/MythVantage-app.git/
+ cd MythVantage-app
+ git checkout --track -b LinHES origin/LinHES
+ cd $MYDIR
+ setup_links
+ cd -
+else
+ echo "updating exisiting tree"
+ cd MythVantage-app
+ git pull
+ git checkout master
+ git merge
+ cd -
+fi
+
+cd MythVantage-app
+git checkout master
+#git checkout origin/LinHES
+
+}
+
+dl_repo
+sed -i "s/^MYTHPATH.*$/MYTHPATH\=\"$MYTHPATH\"/g" $MYDIR/src/MythVantage-app/mythinstall/mythinstall.pro
+sed -i "s/#define __MVAPP__/\/\/#define __MVAPP__/g" $MYDIR/src/MythVantage-app/mythinstall/mv_common.h
+sed -i "s/mythvantage/LinHES/g" $MYDIR/src/MythVantage-app/mythinstall/mv_common.h
+
+echo "INCLUDEPATH += /usr/include/mythtv" >> $MYDIR/src/MythVantage-app/mythbeselect/mythberestart.pro
+echo "INCLUDEPATH += /usr/include/mythtv" >> $MYDIR/src/MythVantage-app/mythinstall/mythinstall.pro
+cd $MYDIR/src/MythVantage-app/mythinstall && qmake
+make || exit 1
+cd $MYDIR/src/MythVantage-app/mythbeselect && qmake
+make ||exit 1
+
diff --git a/abs/core-testing/LinHES-config-22/create_master.sh b/abs/core-testing/LinHES-config-22/create_master.sh
new file mode 100755
index 0000000..1e641b4
--- /dev/null
+++ b/abs/core-testing/LinHES-config-22/create_master.sh
@@ -0,0 +1,57 @@
+#!/bin/bash
+#CD=/mnt/cd
+CD=/data/srv/tftp/live
+DESTCD=/data/srv/tftp/CD
+DEST=/data/srv/tftp/masterbuild
+MODULES=$DESTCD/MythVantage/base/
+myip=`ifconfig | grep 'inet addr:'| grep -v '127.0.0.1' | cut -d: -f2 | awk '{ print $1}'|head -n1`
+
+mkdir -p $DESTCD
+mkdir -p $DEST
+
+mount $CD
+status=0
+if [ -f $CD/MythVantage/base/data.lzm ]
+then
+ status=0
+else
+ status=1
+fi
+if [ x$status = x0 ]
+then
+ echo "copying to disk"
+ cp -rp $CD/* $DESTCD
+ cd $MODULES
+ for i in *.lzm
+ do
+ echo $i
+ lzm2dir $i \/$DEST
+ done
+ for i in sys proc dev tmp
+ do
+ mkdir $DEST/$i
+ done
+ chmod 777 /$DEST/tmp
+ mknod $DEST/dev/null c 1 3
+ mknod $DEST/dev/null c 1 5
+ mknod $DEST/dev/console c 5 1
+ chmod +s $DEST/usr/bin/Xorg
+ chmod +s $DEST/usr/bin/crontab
+ chmod +s $DEST/usr/bin/sudo
+ chmod +s $DEST/bin/mount
+fi
+if [ ! -f $DEST/etc/fstab.bak ]
+then
+ cp $DEST/etc/fstab $DEST/etc/fstab.bak
+fi
+tac $DEST/etc/fstab.bak|tail +4|tac > $DEST/etc/fstab
+echo "$myip:/data/srv/tftp/masterbuild / nfs" >> $DEST/etc/fstab
+echo "/data/srv/tftp/masterbuild *(rw,no_root_squash,anonuid=1000,anongid=1000)" >> /etc/exports
+
+
+exportfs -arv
+
+#copy in the modules
+mkdir -p $DEST/mnt/live/mnt/
+mv $DESTCD/* $DEST/mnt/live/mnt/
+
diff --git a/abs/core-testing/LinHES-config-22/file_time_offset.py b/abs/core-testing/LinHES-config-22/file_time_offset.py
new file mode 100755
index 0000000..f2973d0
--- /dev/null
+++ b/abs/core-testing/LinHES-config-22/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/core-testing/LinHES-config-22/install-ui.xml b/abs/core-testing/LinHES-config-22/install-ui.xml
new file mode 100755
index 0000000..2b3a043
--- /dev/null
+++ b/abs/core-testing/LinHES-config-22/install-ui.xml
@@ -0,0 +1,175 @@
+<!--
+
+ This is a myth style theme file for mythvantage
+
+ (c) 2005 by a whole bunch of people associated with MythTV
+
+-->
+<mythuitheme>
+
+ <window name="welcome_screen">
+
+ <!--
+
+ First, define all the fonts we need on this screen
+
+ -->
+ <font name="title" face="Arial">
+ <color>#ffff00</color>
+ <dropcolor>#000000</dropcolor>
+ <size>20</size>
+ <shadow>3,3</shadow>
+ <bold>yes</bold>
+ </font>
+
+ <font name="time" face="Arial">
+ <color>#9999cc</color>
+ <size>18</size>
+ <bold>yes</bold>
+ </font>
+
+ <font name="label" face="Arial">
+ <color>#ffff00</color>
+ <dropcolor>#000000</dropcolor>
+ <size>18</size>
+ <shadow>3,3</shadow>
+ <bold>yes</bold>
+ </font>
+
+ <font name="info" face="Arial">
+ <color>#ffffff</color>
+ <size>18</size>
+ <bold>yes</bold>
+ </font>
+
+ <font name="biginfo" face="Arial">
+ <color>#ffffff</color>
+ <size>50</size>
+ <bold>yes</bold>
+ </font>
+ <font name="warning" face="Arial">
+ <color>#ff0000</color>
+ <dropcolor>#000000</dropcolor>
+ <size>16</size>
+ <shadow>2,2</shadow>
+ <bold>yes</bold>
+ </font>
+
+ <font name="buttons" face="Arial">
+ <color>#ffff00</color>
+ <size>14</size>
+ <bold>yes</bold>
+ </font>
+ <font name="tinyinfo" face="Arial">
+ <color>#9999cc</color>
+ <size>12</size>
+ <bold>no</bold>
+ </font>
+
+ <container name="main_display">
+ <area>0,0,800,600</area>
+
+ <textarea name="title" draworder="0" align="center">
+ <multiline>no</multiline>
+ <font>title</font>
+ <area>50,40,700,40</area>
+ <value>LinHES: The Linux Home Entertainment System </value>
+ </textarea>
+
+ <!--
+ time
+ -->
+ <textarea name="time_text" draworder="0" align="right">
+ <multiline>no</multiline>
+ <font>time</font>
+ <area>660,520,110,30</area>
+ <value></value>
+ </textarea>
+
+ <textarea name="date_text" draworder="0" align="hcenter">
+ <multiline>yes</multiline>
+ <font>time</font>
+ <area>20,75,740,100</area>
+ <value></value>
+ </textarea>
+
+ <!--
+ current myth status
+ -->
+
+ <textarea name="status_text" draworder="1" align="center">
+ <multiline>yes</multiline>
+ <font>info</font>
+ <area>20,100,760,60</area>
+ <value>MythTV is idle and will shutdown shortly.</value>
+ </textarea>
+
+ <!--
+ current recordings status
+ -->
+
+ <textarea name="recording_label" draworder="1" align="center">
+ <font>label</font>
+ <area>20,140,760,30</area>
+ <!--<value>Percent Complete </value>-->
+ <value></value>
+ </textarea>
+
+ <textarea name="recording_text" draworder="1" align="hcenter">
+ <multiline>yes</multiline>
+ <font>biginfo</font>
+ <area>20,140,760,150</area>
+ <value></value>
+ </textarea>
+
+ <!--
+ next scheduled recording status
+ -->
+
+ <textarea name="scheduled_label" draworder="1" align="center">
+ <font>label</font>
+ <area>20,320,760,30</area>
+ <value></value>
+ </textarea>
+
+ <textarea name="scheduled_text" draworder="1" align="hcenter">
+ <multiline>yes</multiline>
+ <font>biginfo</font>
+ <area>20,400,760,120</area>
+ <value></value>
+ </textarea>
+
+ <textarea name="mythvantage_text" draworder="1" align="right">
+ <multiline>no</multiline>
+ <font>tinyinfo</font>
+ <area>20,560,760,30</area>
+ <value></value>
+ </textarea>
+ <!--
+ scheduled recordings conflict warning
+ -->
+
+ <textarea name="conflicts_text" draworder="1" align="center">
+ <font>warning</font>
+ <area>20,490,760,30</area>
+ <value>WARNING: There are conflicting scheduled recordings!</value>
+ </textarea>
+
+ <!--
+ start frontend button
+
+ <textbutton name="startfrontend_button" draworder="1">
+ <position>81,535</position>
+ <font>buttons</font>
+ <image function="on" filename="mw_text_button_on.png"></image>
+ <image function="off" filename="mw_text_button_off.png"></image>
+ <image function="pushed" filename="mw_text_button_pushed.png"></image>
+ </textbutton>
+
+ -->
+
+ </container>
+
+ </window>
+
+</mythuitheme>
diff --git a/abs/core-testing/LinHES-config-22/install_db_chroot.sh b/abs/core-testing/LinHES-config-22/install_db_chroot.sh
new file mode 100644
index 0000000..94305d2
--- /dev/null
+++ b/abs/core-testing/LinHES-config-22/install_db_chroot.sh
@@ -0,0 +1,63 @@
+#!/bin/bash
+. /etc/profile
+. /etc/systemconfig
+
+
+myhost=$hostname
+hostname $myhost
+echo $myhost > /etc/hostname
+echo "install_db_chroot hostname is $hostname"
+
+. $MV_ROOT/bin/install_functions.sh
+#myhost=`cat /etc/hostname`
+
+#mount -t proc none /proc
+pacman --noconfirm -Sf mysql
+/etc/rc.d/mysqld
+
+status=1
+mysqlstatus=1
+while [ ! $status = 0 ]
+do
+ /etc/rc.d/mysqld stop
+ sleep 1
+ /etc/rc.d/mysqld start
+ mysqlstatus=$?
+ if [ $mysqlstatus = 0 ]
+ then
+ mysql -e "show databases;"
+ showstatus=$?
+ if [ $showstatus = 0 ]
+ then
+ pacman --noconfirm -R mythdb-initial
+ pacman --noconfirm -S mythdb-initial
+ $MV_ROOT/bin/restore_default_settings.sh -c load
+ DISPLAY=127.0.0.1:0 $MV_ROOT/bin/MythVantage -t restore,default_1
+ $MV_ROOT/bin/restore_default_settings.sh -c restore -t syssettings
+ $MV_ROOT/bin/systemconfig.sh misc,hostype,this_is_install
+
+ update_db_settings HostServiceMythWEB "1"
+ echo 'UseMythWEB="1"' >> /etc/systemconfig
+
+ #update database to allow user jobs on this host.
+ $MV_ROOT/bin/restore_default_settings.sh -c USERJOBALLOW
+ $MV_ROOT/bin/restore_default_settings.sh -c ACCESSCONTROL
+ if [ -d /data/srv/mysql/mythconverg ]
+ #if [ -d /var/lib/mysql/mythconverg ]
+ then
+ # pacman --noconfirm -R webcalendar
+ # pacman --noconfirm --nodeps -S webcalendar
+ status=0
+ fi
+# if [ $SystemType = "Master_backend" ]
+# then
+# $MV_ROOT/bin/restore_default_settings.sh -c BECONFIG -s master -a $dbhost
+# fi
+ fi
+ fi
+done
+/etc/rc.d/mysqld stop
+#umount /proc
+
+
+
diff --git a/abs/core-testing/LinHES-config-22/install_functions.sh b/abs/core-testing/LinHES-config-22/install_functions.sh
new file mode 100755
index 0000000..83a2bed
--- /dev/null
+++ b/abs/core-testing/LinHES-config-22/install_functions.sh
@@ -0,0 +1,344 @@
+#!/bin/bash
+. /etc/profile
+
+disk=$2
+mountpoint=new_boot
+
+#-------------------------------------------
+MYTHDBUSER=mythtv
+MYTHTVPASSWD=mythtv
+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\";" 2>/dev/null
+ $MYSQLCMD_C "REPLACE INTO settings set value='${1}', data='${2}' , hostname=\"$hostname\";" 2>/dev/null
+}
+
+function random_theme () {
+THEMES="basic-blue
+basic-green
+basic-red
+basic-purple
+basic-amber"
+
+theme=($THEMES) # Read into array variable.
+
+num_themes=${#theme[*]} # Count how many elements.
+
+pick=${theme[$((RANDOM%num_themes))]}
+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 {
+ [ -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
+ for i in lircd*
+ do
+ cat $i >> $BASE/etc/lircd.conf
+ done
+ cp -f lircrc* $BASE/etc/lircrc 2> /dev/null
+ [ -e /etc/lircrc ] && chmod 755 /etc/lircrc
+ update_db_settings HostRemoteType "$Remotetype"
+ #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() {
+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 [ $? -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 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 () {
+#found_remote=1
+printhl " Scanning for usb receiver/remote"
+while read line
+do
+ USBID=`echo "$line"|cut -d"|" -f1`
+ lsusb -d "$USBID" > /dev/null 2>/dev/null
+ if [ $? -eq 0 ]
+ then
+ Remotetype=`echo "$line"|cut -d"|" -f2`
+ printhl "Found $Remotetype"
+ setupremote
+ found_remote=0
+ break
+ fi
+done <$BASE/$TEMPLATES/remotes/receiver_usb.id
+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 cnetmask
+ if [ $? -eq 0 ]
+ then
+ TEMPVAR=${CMDLINE#*cnetmask=}
+ NETMASK=${TEMPVAR%% *}
+ /sbin/ifconfig eth0 $IP netmask $NETMASK
+ nm=`/usr/bin/nmconv.py -obits $NETMASK`
+ NETMASK="/$nm $NETMASK"
+ #echo $NETMASK
+ update_db_settings HostNETMASK${MYTHDEFAULT} "$NETMASK"
+ else
+ printhl " Netmask not found"
+ fi
+ #gateway
+ echo $CMDLINE | grep -q cgateway
+ if [ $? -eq 0 ]
+ then
+ TEMPVAR=${CMDLINE#*cgateway=}
+ GATEWAY=${TEMPVAR%% *}
+ /sbin/route add default gw $GATEWAY
+ update_db_settings HostGW${MYTHDEFAULT} "$GATEWAY"
+ else
+ printhl " Gateway not found"
+ fi
+
+ #dns
+ echo $CMDLINE | grep -q cdns
+ if [ $? -eq 0 ]
+ then
+ TEMPVAR=${CMDLINE#*cdns=}
+ DNS=${TEMPVAR%% *}
+ echo "nameserver $DNS" >> /etc/resolv.conf
+ update_db_settings HostDNS${MYTHDEFAULT} "$DNS"
+ else
+ 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 cnetdev
+ if [ $? -eq 0 ]
+ then
+ TEMPVAR=${CMDLINE#*cnetdev=}
+ MYTHDEFAULT=${TEMPVAR%% *}
+ else
+ MYTHDEFAULT="eth0"
+ fi
+
+ echo $CMDLINE | grep -q ip
+ if [ $? -eq 0 ]
+ then
+ update_db_settings HostDefaulteth0 0
+ update_db_settings HostDefault${MYTHDEFAULT} 1
+
+ update_db_settings HostActiveonbooteth0 0
+ update_db_settings HostActiveonboot${MYTHDEFAULT} 1
+ update_db_settings HostNetDevice ${MYTHDEFAULT}
+
+ TEMPVAR=${CMDLINE#*cip=}
+ IP=${TEMPVAR%% *}
+ if [ "$IP" == "dhcp" ]
+ then
+ /sbin/dhcpcd $MYTHDEFAULT
+ update_db_settings HostUseDHCP${MYTHDEFAULT} 0
+ else
+ /sbin/ifconfig ${MYTHDEFAULT} $IP
+ update_db_settings HostUseDHCP${MYTHDEFAULT} 1
+ update_db_settings HostIP${MYTHDEFAULT} "$IP"
+ 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 2>/dev/null
+ #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| tr -d \"|tr -d \'|cut -d" " -f 1`
+ 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 [ $? -eq 0 ]
+ then
+ TEMPVAR=${CMDLINE#*remoteport=}
+ REMOTEPORT=${TEMPVAR%% *}
+ if [ x"$ReceiverType" = "xSerial" ]
+ then
+ if [ -e /dev/$REMOTEPORT ]
+ then
+ /usr/bin/setserial /dev/$REMOTEPORT uart none
+ /sbin/modprobe lirc_serial
+ update_db_settings HostReceiverType Serial
+ update_db_settings HostSerialPortlirc "$REMOTEPORT"
+ fi
+ fi
+
+ fi
+
+ echo $CMDLINE | grep -q remote
+ if [ $? -eq 0 ]
+ then
+ TEMPVAR=${CMDLINE#*remote=}
+ Remotetype=${TEMPVAR%% *}
+ setupremote
+ else
+ scan_for_usb_remote
+ fi
+}
+
+#-----------------------
+
+
diff --git a/abs/core-testing/LinHES-config-22/install_proxy.sh b/abs/core-testing/LinHES-config-22/install_proxy.sh
new file mode 100755
index 0000000..71b675b
--- /dev/null
+++ b/abs/core-testing/LinHES-config-22/install_proxy.sh
@@ -0,0 +1,234 @@
+#!/bin/bash
+export TERM=vt100
+MVHOSTNAME=larch5
+. /etc/profile
+TEMP_TEMPLATES=/tmp/templates
+disk=$2
+rootfs=$3
+rootsize=$4
+datafs=$5
+datasize=$6
+swapsize=$7
+mountpoint="/new_boot"
+run=$MV_ROOT/bin/install_functions.sh
+. /etc/systemconfig 2>/dev/null
+. $MV_ROOT/bin/networkconfig.sh
+CMDLINE=$(cat /proc/cmdline)
+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
+}
+
+
+case $1 in
+ 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
+ ;;
+
+ NETBOOT)
+ echo "-----------------------------------------------------------------------3-----"
+ netboot-full_install
+ ;;
+
+ find_update)
+ mv_install.py --rootdisk=$disk -c find_upgrade
+ ;;
+
+ upgrade_it)
+ mv_install.py --rootdisk=$disk --rootfs=$rootfs -c upgrade
+ ;;
+
+ 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
+ ;;
+
+ * )
+ if [ -f /tmp/.install_state ]
+ then
+ state=`cat /tmp/.install_state`
+ else
+ state=" "
+ fi
+ if [ x"${state}" = "xConfiguring system" ]
+ then
+ progress ""
+ else
+
+ if [ -f /tmp/.startsize.io ]
+ then
+ . /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 " "`
+ used=`echo $used-$STARTSIZE|bc`
+ #echo $used
+ fi
+
+ if [ ! x$used = x ]
+ then
+ . /root/.install_size
+ #somehow find if it's an install or update
+ if [ -f /tmp/.this_is_upgrade ]
+ then
+ total=$UPGRADESIZE
+ else
+ total=$TOTALSIZE
+ fi
+ percent=`echo "scale=2 ; ($used/$total) * 100 " |bc `
+ cond2=$(echo "$percent > 98" |bc )
+ if [ $cond2 -eq 1 ]
+ then
+ percent=98
+ fi
+ if [ x"${state}" = "xDone" ]
+ then
+ percent=100
+ fi
+ cond3=$(echo "$percent < 3" |bc )
+ if [ $cond3 -eq 0 ]
+ then
+ progress $percent
+ fi
+ fi
+ fi
+ ;;
+esac
+
+
+
diff --git a/abs/core-testing/LinHES-config-22/issue b/abs/core-testing/LinHES-config-22/issue
new file mode 100644
index 0000000..00d4abd
--- /dev/null
+++ b/abs/core-testing/LinHES-config-22/issue
@@ -0,0 +1,2 @@
+LinHes
+
diff --git a/abs/core-testing/LinHES-config-22/live-install.sh b/abs/core-testing/LinHES-config-22/live-install.sh
new file mode 100755
index 0000000..573bb1f
--- /dev/null
+++ b/abs/core-testing/LinHES-config-22/live-install.sh
@@ -0,0 +1,28 @@
+#!/bin/bash
+#redirect stderr to stdout, then rediret stdout to file
+. /etc/profile
+exec 2>&1
+exec > /tmp/mythvantage_install.log
+. /etc/X11/STBWINDOWMANAGER
+/usr/bin/nvidia-settings -a InitialPixmapPlacement=2
+keylaunch &
+/usr/bin/tilda &
+/usr/X11R6/bin/unclutter -root -idle 0 -jitter 400 -noevents &
+export MALLOC_CHECK_=0
+if [ -f /opt/vmware/bin32/vmware-user-wrapper ]
+then
+ /opt/vmware/bin32/vmware-user-wrapper &
+fi
+xhost +
+CMDLINE=$(cat /proc/cmdline)
+echo $CMDLINE |grep -q nfsroot
+NFSROOT=$?
+if [ x$NFSROOT = x1 ]
+then
+
+ unbuffer MythVantage &
+else
+ NETBOOT=YES MythVantage &
+fi
+
+exec $STBWINDOWMANAGER
diff --git a/abs/core-testing/LinHES-config-22/mv_advanced.py b/abs/core-testing/LinHES-config-22/mv_advanced.py
new file mode 100755
index 0000000..4790fcf
--- /dev/null
+++ b/abs/core-testing/LinHES-config-22/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 <<EOF
+ mv_common.runcmd(cmd)
+ else:
+ logging.info(" removing dhcp server(dnsmasq)")
+ mv_common.pacremove("dnsmasq")
+ mv_common.pacremove("mvpmc")
+ mv_common.remove_service("dnsmasq")
+ return
+
+def setup_mythweb(UseMythWEB):
+ if UseMythWEB == "1":
+ logging.info(" Activating mythweb")
+ mv_common.pacinstall("lighttpd")
+ mv_common.pacinstall("mythweb")
+ mv_common.add_service("lighttpd")
+ else:
+ logging.info(" Removing mythweb")
+# mv_common.pacremove("lighttpd")
+ mv_common.pacremove("mythweb")
+ # mv_common.remove_service("lighttpd")
+ return
+
+def setup_samba(systemconfig,data_config):
+ mythhome = data_config.MYTHHOME
+ if systemconfig["UseSamba"] == "1":
+ logging.info(" Activating windows file sharing")
+ usersamba=mythhome+"/templates/smb.conf"
+ mv_common.pacinstall("samba")
+ if not os.path.exists("/etc/samba"):
+ logging.debug(" Creating directory /etc/samba")
+ try:
+ os.makedirs("/etc/samba")
+ except:
+ pass
+
+ if os.path.exists(usersamba):
+ logging.debug(" Using user provided config file %s",usersamba)
+ cmd = "install -D -m755 %s /etc/samba/smb.conf" %usersamba
+ mv_common.runcmd(cmd)
+ else:
+ Samba_media = systemconfig["Samba_media"]
+ Samba_home = systemconfig["Samba_home"]
+ if systemconfig["Samba_mediareadonly"] == "1":
+ smreadonly = "yes"
+ else:
+ smreadonly = "no"
+
+ if systemconfig["Samba_homereadonly"] == "1":
+ shreadonly = "yes"
+ else:
+ shreadonly = "no"
+ domain = systemconfig["Samba_domain"]
+ servername = systemconfig["hostname"]
+
+ try:
+ f = open(systemconfig["TEMPLATES"]+"/samba/smb.conf.template",'r')
+ t_smbconf = f.readlines()
+ f.close()
+ except:
+ logging.info(" Couldn't open samba template file")
+ return
+
+ try:
+ f = open("/etc/samba/smb.conf",'w')
+ except:
+ logging.info(" Couldn't open samba file")
+ return
+
+ for line in t_smbconf:
+ outline = line
+ if re.match("^.*workgroup", line):
+ logging.debug(" Setting workgroup to %s",domain)
+ outline="workgroup = %s\n" %domain
+ logging.debug(" %s",outline)
+ if re.match("^.* server string",line):
+ logging.debug(" Setting server name to %s",servername)
+ outline="server string = %s\n" %servername
+ logging.debug(" %s",outline)
+ f.write(outline)
+ outline="include = %s/templates/user.shares \n" %mythhome
+ f.write(outline)
+ if Samba_media == "1":
+ outline="include = /etc/samba/smb.conf.media\n"
+ f.write(outline)
+ if Samba_home == "1":
+ outline="include = /etc/samba/smb.conf.home\n"
+ f.write(outline)
+ f.close()
+ logging.info(" Writing smb.conf.media")
+ try:
+ f = open("/etc/samba/smb.conf.media","w")
+ except:
+ logging.info(" Couldn't open smb.conf.media")
+ return
+ medialines='''
+[%s]
+path = %s
+public = yes
+only guest = yes
+writeable = %s
+printable = no
+force user = mythtv
+force group = mythtv
+create mask = 0755''' %(data_config.SMEDIA,data_config.DATAMOUNT,smreadonly)
+ f.write(medialines)
+ f.close
+ logging.debug(" %s",medialines)
+ logging.info(" Writing smb.conf.home")
+ try:
+ f = open("/etc/samba/smb.conf.home","w")
+ except:
+ logging.info(" Couldn't open smb.conf.home")
+ return
+ homelines='''
+[home]
+path = %s
+public = yes
+only guest = yes
+writeable = %s
+printable = no
+force user = mythtv
+force group = mythtv
+create mask = 0755 ''' %(data_config.MYTHHOME,shreadonly)
+ f.write(homelines)
+ f.close
+ logging.debug(" %s",homelines)
+
+
+ mv_common.add_service("nmbd")
+ mv_common.add_service("smbd")
+ else:
+ logging.info(" Removing windows file sharing")
+ mv_common.remove_service("smbd")
+ mv_common.remove_service("nmbd")
+ mv_common.pacremove("samba")
+ mv_common.pacinstall("smbclient")
+ return
+
+def setup_NFSshares(UseNFS,templatefile):
+ if UseNFS == "1":
+ logging.info(" Activating NFS server")
+ mv_common.pacinstall("nfs-utils")
+ mv_common.pacinstall("portmap")
+ cmd = '''sed -e "s/REPLACEME/*/g" %s >/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/core-testing/LinHES-config-22/mv_common.py b/abs/core-testing/LinHES-config-22/mv_common.py
new file mode 100755
index 0000000..a492597
--- /dev/null
+++ b/abs/core-testing/LinHES-config-22/mv_common.py
@@ -0,0 +1,201 @@
+# -*- 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)
+ stop_service(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/core-testing/LinHES-config-22/mv_config.py b/abs/core-testing/LinHES-config-22/mv_config.py
new file mode 100755
index 0000000..1ac4fea
--- /dev/null
+++ b/abs/core-testing/LinHES-config-22/mv_config.py
@@ -0,0 +1,17 @@
+# -*- coding: utf-8 -*-
+SYSTEMTYPE="LinHES"
+MVHOSTNAME="larch5"
+MOUNTPOINT="/new_boot"
+DATAMOUNT="/myth"
+MYTHHOME="/home/mythtv"
+SQUASHFILE="/tmp/.squashlist"
+SQUASHLIST=("bin","boot","etc","home","lib","opt","root","sbin","usr","var","data")
+NOOPDEBUG="FALSE"
+BACKUPFILE="mythconverg.sql.gz"
+BACKUPPATH="/myth/backup/"
+TEMP_TEMPLATES="/tmp/templates"
+SMEDIA="myth"
+
+
+
+
diff --git a/abs/core-testing/LinHES-config-22/mv_ddns.py b/abs/core-testing/LinHES-config-22/mv_ddns.py
new file mode 100755
index 0000000..7ac7d3a
--- /dev/null
+++ b/abs/core-testing/LinHES-config-22/mv_ddns.py
@@ -0,0 +1,26 @@
+# -*- coding: utf-8 -*-
+import logging, mv_common
+import os, re
+
+config_file = "mv_config"
+
+def setup_ddns(systemconfig):
+ logging.info("____Start of setup_ddns____")
+
+ if systemconfig["DDnsEnable"] == "1":
+ logging.debug(" Enabling DDNS")
+ mv_common.pacinstall("ddclient")
+ mv_common.cp_and_log("/etc/ddclient/ddclient.conf.dynamic.dyndns.sample",
+ "/etc/ddclient/ddclient.conf")
+ cmd = ''' sed -i -e "s/your-dynamic-dyndns-login/%s/g" /etc/ddclient/ddclient.conf''' %(systemconfig["DDnslogin"])
+ mv_common.runcmd(cmd)
+ cmd = ''' sed -i -e "s/your-dynamic-dyndns-password/%s/g" /etc/ddclient/ddclient.conf''' %(systemconfig["DDnspassword"])
+ mv_common.runcmd(cmd)
+ cmd = ''' sed -i -e "s/your-dynamic-dyndns-host/%s/g" /etc/ddclient/ddclient.conf''' %(systemconfig["DDnshostname"])
+ mv_common.runcmd(cmd)
+ mv_common.add_service("ddclient")
+ else:
+ logging.debug(" Disabling DDNS")
+ mv_common.remove_service("ddclient")
+
+ logging.info("__End of ddns\n")
diff --git a/abs/core-testing/LinHES-config-22/mv_hostype.py b/abs/core-testing/LinHES-config-22/mv_hostype.py
new file mode 100755
index 0000000..d6ec0ed
--- /dev/null
+++ b/abs/core-testing/LinHES-config-22/mv_hostype.py
@@ -0,0 +1,230 @@
+# -*- 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)
+ cmd='''sed -i "s/^certmaster.*$/certmaster = %s/" /etc/certmaster/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"]
+ if data_config.SYSTEMTYPE == "MythVantage":
+ install_list.append('ghosd')
+
+ 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')
+ daemon_list.append('func')
+ install_list.append('certmaster')
+ daemon_list.append('certmaster')
+ install_list.append('ghosd')
+
+ 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")
+ install_list.append('ghosd')
+
+
+ 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")
+ install_list.append('ghosd')
+
+
+ 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")
+ if data_config.SYSTEMTYPE == "MythVantage":
+ mv_common.add_service("ghosd")
+ else:
+ logging.debug(" Will NOT run the frontend")
+ mv_common.remove_service("frontend")
+ mv_common.remove_service("hal")
+ if data_config.SYSTEMTYPE == "MythVantage":
+ mv_common.remove_service("ghosd")
+
+
+ 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/core-testing/LinHES-config-22/mv_install.py b/abs/core-testing/LinHES-config-22/mv_install.py
new file mode 100755
index 0000000..19295ca
--- /dev/null
+++ b/abs/core-testing/LinHES-config-22/mv_install.py
@@ -0,0 +1,1432 @@
+#!/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 = '''# <file system> <dir> <type> <options> <dump> <pass> \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/sr0 /media/cdrom 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)
+ if re.match("no_meth",item) != None :
+ cmd = " touch %s%s/.no_meth" %(data_config.MOUNTPOINT, data_config.MYTHHOME)
+ runcmd(cmd)
+
+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 = " 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/core-testing/LinHES-config-22/mv_ir.py b/abs/core-testing/LinHES-config-22/mv_ir.py
new file mode 100755
index 0000000..bc1ae37
--- /dev/null
+++ b/abs/core-testing/LinHES-config-22/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/core-testing/LinHES-config-22/mv_misc.py b/abs/core-testing/LinHES-config-22/mv_misc.py
new file mode 100755
index 0000000..9ea9c95
--- /dev/null
+++ b/abs/core-testing/LinHES-config-22/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/core-testing/LinHES-config-22/mv_network.py b/abs/core-testing/LinHES-config-22/mv_network.py
new file mode 100755
index 0000000..b80e4cc
--- /dev/null
+++ b/abs/core-testing/LinHES-config-22/mv_network.py
@@ -0,0 +1,507 @@
+# -*- 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):
+ try:
+ os.makedirs(etcnetdir+"/"+netdev)
+ except:
+ pass
+ 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/core-testing/LinHES-config-22/mv_screensaver.py b/abs/core-testing/LinHES-config-22/mv_screensaver.py
new file mode 100755
index 0000000..2da970c
--- /dev/null
+++ b/abs/core-testing/LinHES-config-22/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/core-testing/LinHES-config-22/mv_smolt.py b/abs/core-testing/LinHES-config-22/mv_smolt.py
new file mode 100755
index 0000000..5fd3722
--- /dev/null
+++ b/abs/core-testing/LinHES-config-22/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/core-testing/LinHES-config-22/mv_software.py b/abs/core-testing/LinHES-config-22/mv_software.py
new file mode 100755
index 0000000..aabcf89
--- /dev/null
+++ b/abs/core-testing/LinHES-config-22/mv_software.py
@@ -0,0 +1,61 @@
+# -*- coding: utf-8 -*-
+import logging, mv_common
+import os, re
+
+def setup_software(systemconfig, data_config):
+ logging.info("____Start of Software install____")
+ postfix=''
+ if data_config.SYSTEMTYPE == "MythVantage":
+ #look for the installed prefix
+ cmd="pacman -Q mythtv-release-fixes"
+ rc = mv_common.runcmd(cmd)
+ if rc == 0:
+ postfix = "-release-fixes"
+ else:
+ postfix = "-svn"
+
+ default_disabled = ("mythphone", "mytharchive", "mythbrowser", "mythnews",
+ "mythgame", "mythflix", "mythweather",
+ "mythzoneminder" )
+
+ default_installed=("mythcontrols", "mythgallery", "mythmovies",
+ "mythmusic", "mythsmolt", "mythvideo")
+ other_pkg=("miro", "mednafen", "romdb", "xine", "dvdcss", "webmin" , "fuppes", "foldingathome", "mythappletrailers", "mythstream", "mythvodka")
+ else:
+ default_disabled = ("mythphone", "mytharchive", "mythbrowser", "mythnews",
+ "mythgame", "mythflix", "mythweather",
+ "mythappletrailers", "mythstream", "mythvodka",
+ "mythzoneminder" )
+
+ default_installed=("mythcontrols", "mythgallery", "mythmovies",
+ "mythmusic", "mythsmolt", "mythvideo")
+ other_pkg=("miro", "mednafen", "romdb", "xine", "dvdcss", "webmin" , "fuppes", "foldingathome")
+
+ for pkg in default_disabled:
+ pkgname=pkg+postfix
+ try:
+ if systemconfig[pkg] == "1":
+ mv_common.pacinstall(pkgname)
+ else:
+ mv_common.pacremove(pkgname)
+ except:
+ logging.debug(" ERROR-- %s is not defined", pkg)
+
+ for pkg in default_installed:
+ try:
+ if systemconfig[pkg] == "0":
+ mv_common.pacremove(pkgname)
+ else:
+ mv_common.pacinstall(pkgname)
+ 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 ")
diff --git a/abs/core-testing/LinHES-config-22/mv_webuser.py b/abs/core-testing/LinHES-config-22/mv_webuser.py
new file mode 100755
index 0000000..a8517a8
--- /dev/null
+++ b/abs/core-testing/LinHES-config-22/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/core-testing/LinHES-config-22/myth_user_call b/abs/core-testing/LinHES-config-22/myth_user_call
new file mode 100644
index 0000000..0914b03
--- /dev/null
+++ b/abs/core-testing/LinHES-config-22/myth_user_call
@@ -0,0 +1,174 @@
+#!/bin/bash
+#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
+
+INIT_CHECK=TRUE
+FULL_CALL="$@"
+function CHROOT_CHECK {
+ INIT=`ps -p 1 -o comm=`
+ if [ x$INIT = xrunit ]
+ then
+ CHROOT_NEEDED=FALSE
+ else
+ CHROOT_NEEDED=TRUE
+ fi
+}
+
+function store_commands () {
+ echo "$FULL_CALL" >> /root/myth_user_call.out
+ chmod 600 /root/myth_user_call.out
+}
+
+
+function add_user() {
+ if [ $CHROOT_NEEDED = TRUE ]
+ then
+ echo "calling myth_call_user in chroot to add user"
+ store_commands
+ else
+ echo "adding user $USERNAME"
+ useradd -m -s /bin/bash $USERNAME -G audio,video,optical,storage,users
+ usermod -a -G mythtv $USERNAME
+
+ fi
+
+}
+
+
+function del_user() {
+ if [ $CHROOT_NEEDED = TRUE ]
+ then
+ echo "calling myth_call_user in chroot to delete user"
+ store_commands
+ else
+ echo "removing user $USERNAME"
+ userdel $USERNAME
+ fi
+
+}
+
+
+function pass_change() {
+ if [ $CHROOT_NEEDED = TRUE ]
+ then
+ echo "calling myth_call_user in chroot to change password"
+ store_commands
+ else
+ echo "changing password for $USERNAME"
+ echo $USERNAME:$PASSWORD | chpasswd
+ fi
+
+}
+
+
+function web_security {
+
+ grep -q ${USERNAME}: /etc/lighttpd/lighttpd.user
+ if [ $? = 0 ]
+ then
+ #delete user
+ sed -i "/${USERNAME}\:/d" /etc/lighttpd/lighttpd.user
+ fi
+ echo "${USERNAME}:${PASSWORD}" >> /etc/lighttpd/lighttpd.user
+
+}
+
+function ARG_ERR() {
+ if [ x$OPTARG = "x" ]
+ then
+ echo "$SWITCH NEEDS AND ARG"
+ exit 11
+ fi
+}
+
+
+function print_help {
+
+ echo "Valid options are:"
+ echo " -c (add|delete|pass|web)"
+ echo " -u USERNAMEname"
+ echo " -p password"
+ exit 1
+}
+
+if [ $# -eq 0 ]
+then
+ print_help
+fi
+
+declare -r OPTSTRING="c:u:p:i"
+while getopts "$OPTSTRING" SWITCH
+do
+ case $SWITCH in
+
+ c) ARG_ERR
+ OPERATION=$OPTARG
+ ;;
+ u) ARG_ERR
+ USERNAME=$OPTARG
+ ;;
+ p) ARG_ERR
+ PASSWORD=$OPTARG
+ ;;
+ i) INIT_CHECK=FALSE
+
+ esac
+done
+
+if [ $INIT_CHECK = TRUE ]
+then
+ CHROOT_CHECK
+else
+ CHROOT_NEEDED=FALSE
+fi
+
+case $OPERATION in
+ add)
+ if [ x$USERNAME = x ]
+ then
+ print_help
+ fi
+ add_user
+ ;;
+ delete)
+ if [ x$USERNAME = x ]
+ then
+ print_help
+ fi
+ del_user
+ ;;
+ pass)
+ if [ x$USERNAME = x ]
+ then
+ print_help
+ fi
+
+ if [ x$PASSWORD = x ]
+ then
+ print_help
+ fi
+ pass_change
+ ;;
+
+ web)
+ if [ x$USERNAME = x ]
+ then
+ print_help
+ fi
+
+
+ if [ x$PASSWORD = x ]
+ then
+ print_help
+ fi
+ echo "adding webUSERNAME $USERNAME with pass $PASSWORD"
+ web_security
+ ;;
+ *) print_help
+ ;;
+esac
+
+
diff --git a/abs/core-testing/LinHES-config-22/myth_user_call.py b/abs/core-testing/LinHES-config-22/myth_user_call.py
new file mode 100755
index 0000000..63915a4
--- /dev/null
+++ b/abs/core-testing/LinHES-config-22/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/core-testing/LinHES-config-22/networkconfig.sh b/abs/core-testing/LinHES-config-22/networkconfig.sh
new file mode 100644
index 0000000..770aa98
--- /dev/null
+++ b/abs/core-testing/LinHES-config-22/networkconfig.sh
@@ -0,0 +1,341 @@
+#!/bin/bash
+#. /etc/profile
+#. /etc/systemconfig
+#BASE=/tmp
+ETCNETDIR=$BASE/etc/net/ifaces
+
+
+
+function kill_dhcp ()
+{
+#for i in ${BASE}/etc/dhcpc/dhcpcd-*.pid
+for i in ${BASE}/var/run/dhcpcd-*.pid
+do
+ if [ -f ${i} ]
+ then
+ pid=`cat ${i}`
+ kill -9 $pid
+ rm -f ${i}
+ fi
+ if [ x$1 = xflush ]
+ then
+ for ifdev in eth0 wlan0 eth1 wlan1
+ do
+ echo ${i} |grep $ifdev
+ status=$?
+ if [ $status = 1 ]
+ then
+ ip address flush $ifdev
+ fi
+ done
+ fi
+
+done
+
+}
+
+function kill_dhcp_chroot ()
+{
+#for i in ${BASE}/etc/dhcpc/dhcpcd-*.pid
+for i in ${mountpoint}/var/run/dhcpcd-*.pid
+do
+ if [ -f ${i} ]
+ then
+ pid=`cat ${i}`
+ kill -9 $pid
+ rm -f ${i}
+ fi
+done
+
+}
+
+
+
+function setup_nameserver(){
+grep -q $1 ${BASE}/etc/resolv.conf
+status=$?
+if [ ! $status = 0 ]
+then
+ echo "nameserver $1" >> ${BASE}/etc/resolv.conf
+fi
+
+}
+
+function change_iface_state () {
+ if [ x$2 = xenabled ]
+ then
+ echo "setting $1 to active"
+ sed -i -e 's/^ONBOOT=.*$/ONBOOT=yes/g' $ETCNETDIR/$1/options
+ sed -i -e 's/^DISABLED=.*$/DISABLED=no/g' $ETCNETDIR/$1/options
+ else
+ echo "setting $1 to inactive"
+ if [ -e $ETCNETDIR/$1/options ]
+ then
+ sed -i -e 's/^ONBOOT=.*$/ONBOOT=no/g' $ETCNETDIR/$1/options
+ sed -i -e 's/^DISABLED=.*$/DISABLED=yes/g' $ETCNETDIR/$1/options
+ fi
+ /sbin/ifconfig $1 down
+ ip address flush $1
+ fi
+
+}
+
+function setup_interfaces() {
+ local IS_WIRELESS
+ local ip
+ local netmask
+ local isactive
+ local dns
+ local UseDHCP
+ local GW
+ local ESSID
+ local KEY
+ local ENCRYPT
+ local TEMPNET
+ local MTU
+ IS_WIRELESS=false
+
+ #local ip
+ TEMPNET="Hostip"$1
+ echo $TEMPNET
+ eval ip=\$${TEMPNET}
+
+ TEMPNET=Hostnetmask$1
+ eval netmask=\$${TEMPNET}
+ netmask=`echo "$netmask" | cut -d " " -f1`
+
+ TEMPNET=HostActive$1
+ eval isactive=\$${TEMPNET}
+
+ TEMPNET=HostDNS$1
+ eval dns=\$${TEMPNET}
+
+ TEMPNET="HostUSEDHCP"$1
+ eval UseDHCP=\$${TEMPNET}
+
+ TEMPNET=HostGW$1
+ eval GW=\$${TEMPNET}
+
+ TEMPNET=HOST_iswireless$1
+ eval wireless=\$${TEMPNET}
+
+ TEMPNET=HostMTU$1
+ eval MTU=\$${TEMPNET}
+
+
+
+ if [ x$wireless = x1 ]
+ then
+ IS_WIRELESS=TRUE
+ TEMPNET=HostESSID$1
+ eval ESSID=\$${TEMPNET}
+
+ TEMPNET="HostKey"$1
+ eval KEY=\$${TEMPNET}
+
+ TEMPNET=HostUseEncryption$1
+ eval ENCRYPT=\$${TEMPNET}
+ fi
+
+
+ echo "Setup $1 in progress, wireless: $IS_WIRELESS"
+
+ if [ ! -d $ETCNETDIR/$1 ]
+ then
+ mkdir -p $ETCNETDIR/$1
+ fi
+
+ if [ ! -f $ETCNETDIR/$1/options ]
+ then
+ cp -f $TEMPLATES/etcnet/eth/options $ETCNETDIR/$1/options
+ fi
+
+ if [ x$isactive = x1 ]
+ then
+ change_iface_state $1 enabled
+ #echo "setting $1 to active"
+ #sed -i -e 's/^ONBOOT=.*$/ONBOOT=yes/g' $ETCNETDIR/$1/options
+ #sed -i -e 's/^DISABLED=.*$/DISABLED=no/g' $ETCNETDIR/$1/options
+ else
+ change_iface_state $1 disabled
+ #echo "setting $1 to inactive"
+ #sed -i -e 's/^ONBOOT=.*$/ONBOOT=no/g' $ETCNETDIR/$1/options
+ #sed -i -e 's/^DISABLED=.*$/DISABLED=yes/g' $ETCNETDIR/$1/options
+ fi
+
+ if [ x$IS_WIRELESS = xTRUE ]
+ then
+ echo "setting $1 wireless"
+ sed -i -e 's/^CONFIG_WIRELESS=.*$/CONFIG_WIRLESS=yes/g' $ETCNETDIR/$1/options
+ #set the key and essid
+ echo "essid $ESSID" > $ETCNETDIR/$1/iwconfig
+ if [ x$ENCRYPT = x1 ]
+ then
+ echo "key $KEY" >> $ETCNETDIR/$1/iwconfig
+ fi
+
+ else
+ echo "disabling wireless"
+ sed -i -e 's/^CONFIG_WIRLESS=.*$/CONFIG_WIRLESS=no/g' $ETCNETDIR/$1/options
+ fi
+
+ if [ x$UseDHCP = x0 ]
+ then
+ echo using dhcp
+ sed -i -e 's/^BOOTPROTO=.*$/BOOTPROTO=dhcp/g' $ETCNETDIR/$1/options
+
+ else
+ echo "using static ip"
+ sed -i -e 's/^BOOTPROTO=.*$/BOOTPROTO=static/g' $ETCNETDIR/$1/options
+ echo "default via $GW" > $ETCNETDIR/$1/ipv4route
+ echo "$ip$netmask" > $ETCNETDIR/$1/ipv4address
+ setup_nameserver $dns
+ fi
+
+ if [ x$MTU = x ]
+ then
+ echo "MTU is blank, card will use default values"
+ sed -i '/^mtu.*$/d' /etc/net/ifaces/$1/iplink
+ else
+ echo "setting mtu for $1 to $MTU"
+ sed -i '/^mtu.*$/d' /etc/net/ifaces/$1/iplink
+ echo "mtu $MTU " >> /etc/net/ifaces/$1/iplink
+ fi
+}
+
+
+function find_active () {
+#HostActiveeth1="1"
+rm -f ${BASE}/etc/resolv.conf
+if [ x$MYTHDHCP = x1 ]
+ then
+ #add 127.0.0.1 to /etc/resolv.conf
+ echo "search lan" > ${BASE}/etc/resolv.conf
+ echo "nameserver 127.0.0.1" >> ${BASE}/etc/resolv.conf
+ fi
+
+for i in eth0 eth1 wlan0 wlan1
+do
+ CURRENTIF="HostActive"$i
+ eval IFSTATE=\$${CURRENTIF}
+ echo $IFSTATE "---"
+ echo $i
+ if [ x$IFSTATE = x1 ]
+ then
+ setup_interfaces $i
+ else
+ change_iface_state $i disabled
+ fi
+done
+
+}
+
+function setup_hostname {
+#set the hostname
+if [ ! x$hostname = x ]
+then
+ echo $hostname > ${BASE}/etc/hostname
+ cat $BASE/etc/hosts |grep -v 127.0.0.1|grep -v $hostname > /tmp/hosts
+ #cat $BASE/etc/hosts |grep -v 127.0.0.1|grep -v $hostname | grep -v $ip > /tmp/hosts
+
+ if [ x$MYTHDHCP = x1 ]
+ then
+ echo "127.0.0.1 localhost " > ${BASE}/etc/hosts
+ echo "$MYTHIP $hostname " >> ${BASE}/etc/hosts
+ else
+ echo "127.0.0.1 $hostname localhost " > ${BASE}/etc/hosts
+ fi
+ cat /tmp/hosts >> ${BASE}/etc/hosts
+fi
+
+kill_dhcp
+}
+
+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 setup_MYTH_vars {
+ TEMPMYTH="Hostip"$default_interface
+ #echo $TEMPMYTH
+ eval MYTHIP=\$${TEMPMYTH}
+
+ TEMPMYTH="HostUSEDHCP"$default_interface
+ eval MYTHDHCP=\$${TEMPMYTH}
+
+
+
+}
+
+
+
+
+function start_network {
+if [ ! $USEVNC = 0 ]
+then
+ /etc/net/scripts/network.init reload
+ /etc/net/scripts/network.init restart
+else
+ echo "VNC/NETBOOT in use, will NOT restart network"
+fi
+
+}
+
+function setup_network {
+ setup_MYTH_vars
+ setup_hostname
+ find_active
+}
+
+
+function stop_network {
+if [ ! $USEVNC = 0 ]
+then
+ echo "stopping the network"
+ kill_dhcp flush
+ ip address flush dev eth0 2>&1 >/dev/null
+ ip address flush dev eth1 2>&1 >/dev/null
+ ip address flush dev wlan0 2>&1 >/dev/null
+ ip address flush dev wlan1 2>&1 >/dev/null
+else
+ echo "VNC/NETBOOT in use, will NOT restart network"
+fi
+
+}
+
+
+#this is used by the install process to start the network
+function install_network_setup {
+ setup_MYTH_vars
+ setup_hostname
+ stop_network
+ find_active
+ start_network
+
+}
+
+
+
+
+
+
+
diff --git a/abs/core-testing/LinHES-config-22/remove_service.sh b/abs/core-testing/LinHES-config-22/remove_service.sh
new file mode 100755
index 0000000..6cc4b4f
--- /dev/null
+++ b/abs/core-testing/LinHES-config-22/remove_service.sh
@@ -0,0 +1,8 @@
+#!/bin/bash
+SERVICE_DIR=/var/service
+SCRIPT_DIR=/etc/sv
+if [ -e $SERVICE_DIR/$1 ]
+then
+ echo "removing"
+ rm $SERVICE_DIR/$1
+fi
diff --git a/abs/core-testing/LinHES-config-22/restore_default_settings.sh b/abs/core-testing/LinHES-config-22/restore_default_settings.sh
new file mode 100755
index 0000000..dcf5e23
--- /dev/null
+++ b/abs/core-testing/LinHES-config-22/restore_default_settings.sh
@@ -0,0 +1,362 @@
+#!/bin/bash
+. /etc/profile
+. /etc/systemconfig
+shopt -s -o nounset
+echo $@ >> /tmp/restore.out
+#TEMPLATES="/usr/share/templates/settings"
+TEMPLATES="$TEMPLATES/settings"
+TABLES="settings keybindings"
+MYTHDBUSER=mythtv
+MYTHTVPASSWD=mythtv
+declare -r OPTSTRING="c:e:t:d:h:s:a:z:Ho"
+Thistemplate=""
+declare -i OVERRIDE=0
+declare -i EVERYTHING=0
+
+
+function CMD_DEFINE () {
+ #add override check
+ if [ x$Thistemplate = xsyssettings -a $OVERRIDE -eq 1 ]
+ then
+ MYSQLCMD="mysql --local-infile -s -u$MYTHDBUSER -p$MYTHTVPASSWD -h$ovdbhost mythconverg -B --exec"
+ MYSQLCMD_C="mysql -u$MYTHDBUSER -p$MYTHTVPASSWD -h$ovdbhost mythconverg -B --exec"
+ MYSQLCMD_UPDATE_HOST="UPDATE settings set data='$oldhostname' where value='HostMyhostname' and hostname=\"$hostname\";"
+ else
+ MYSQLCMD="mysql --local-infile -s -u$MYTHDBUSER -p$MYTHTVPASSWD -h$dbhost mythconverg -B --exec"
+ MYSQLCMD_C="mysql -u$MYTHDBUSER -p$MYTHTVPASSWD -h$dbhost mythconverg -B --exec"
+ MYSQLCMD_UPDATE_HOST="select hostname from settings;"
+ fi
+}
+
+function SQL_DEFINE () {
+ thostname=`echo ${hostname}|tr -C [:alpha:] _`
+ echo "Using $thostname for temp table postfix"
+
+ #$1 is the table name
+ if [ $1 = "settings" ]
+ then
+ ALTERSQL="Alter table temp_${1}_${thostname} add unique ( value )"
+ else
+ ALTERSQL=";"
+ fi
+
+ CREATESQL="create table temp_${1}_${thostname} like $1;"
+ COPY_TMP_SQL="replace into temp_${1}_${thostname} (select * from $1 where hostname=\"$hostname\");"
+ INSERTSQL="LOAD DATA local INFILE '/tmp/$1.txt' REPLACE INTO TABLE temp_${1}_${thostname} FIELDS TERMINATED BY '\t';"
+ #INSERTSQL="LOAD DATA local INFILE '$TEMPLATES/$Thistemplate/$1.txt' REPLACE INTO TABLE temp_${1}_${hostname} FIELDS TERMINATED BY '\t';"
+ DROPSQL="delete from $1 where hostname=\"$hostname\";"
+ COPY_BCK_SQL="replace into $1 (select * from temp_${1}_${thostname} where hostname=\"$hostname\");"
+ DROP_TABLE="Drop table temp_${1}_${thostname}"
+}
+
+function ARG_ERR() {
+ if [ x$OPTARG = "x" ]
+ then
+ echo "$SWITCH NEEDS AND ARG"
+ exit 11
+ fi
+}
+
+function ALSADEVICE () {
+#ALSA:hw:1,4
+ if [ x$Audiotype = xALSA ]
+ then
+ SoundDevice=ALSA:$SoundDevice
+ MixerDevice="ALSA:default"
+ else
+ MixerDevice="/dev/mixer"
+ fi
+
+}
+
+
+
+if [ $# -eq 0 ]
+then
+ echo "Valid options are:"
+ echo " -c (save|restore|load|uhostname|BECONFIG|ZIP|ACCESSCONTROL)"
+ echo " -t (syssettings|hostsettings)"
+ echo " -d databasename"
+ echo " -h hostname"
+ echo " -s systemtype (master|slave|standalone|frontendonly)"
+ echo " -a ipaddress"
+ echo " -z zipcode"
+ echo " -o override (only used upgrade installs)"
+ exit 1
+fi
+
+
+
+
+while getopts "$OPTSTRING" SWITCH
+do
+ case $SWITCH in
+ # \?) echo "unkown option"
+ # exit 11 ;;
+ c) echo "$SWITCH" "$OPTARG"
+ ARG_ERR
+ OPERATION=$OPTARG
+ ;;
+ t) echo "$SWITCH" "$OPTARG"
+ ARG_ERR
+ Thistemplate=$OPTARG
+
+ if [ x$Thistemplate = x"syssettings" ]
+ then
+ echo "template is syssettings"
+ loadhost=false
+ elif [ x$Thistemplate = x"hostsettings" ]
+ then
+ echo "template is hostsettings"
+ Thistemplate=syssettings
+ loadhost=true
+ else
+ echo "invalid template name"
+ exit 1
+ fi
+ ;;
+ d) echo "$SWITCH" "$OPTARG"
+ ARG_ERR
+ if [ $OVERRIDE = 1 ]
+ then
+ ovdbhost=$OPTARG
+ else
+ dbhost=$OPTARG
+ fi
+ ;;
+ h) echo "$SWITCH" "$OPTARG"
+ ARG_ERR
+ if [ $OVERRIDE = 1 ]
+ then
+ oldhostname=$hostname
+ hostname=$OPTARG
+ else
+ hostname=$OPTARG
+ fi
+
+ ;;
+ s) echo "$SWITCH" "$OPTARG"
+ ARG_ERR
+ SYSTEMTYPE=$OPTARG
+ ;;
+ a) echo "$SWITCH" "$OPTARG"
+ ARG_ERR
+ IP_ADDRESS=$OPTARG
+ ;;
+ z) echo "$SWITCH" "$OPTARG"
+ ARG_ERR
+ ZIPCODE=$OPTARG
+ ;;
+ o) OVERRIDE=1
+ ;;
+
+ esac
+done
+
+echo $OVERRIDE
+
+#setup the Mysql commands
+CMD_DEFINE
+
+$MYSQLCMD_C "show tables" > /dev/null
+status=$?
+if [ $status = 1 ]
+then
+ echo "$@ failed"
+ echo "$@ failed" >> /tmp/restore.out
+ exit 1
+fi
+
+
+
+
+
+
+
+case $OPERATION in
+
+ restore)
+ #used to restore settings from syssettings
+ if [ -d $TEMPLATES/$Thistemplate ]
+ then
+ cd $TEMPLATES/$Thistemplate
+ if [ $loadhost = false ]
+ then
+ for i in $TABLES
+ do
+ SQL_DEFINE $i
+ sed -e "s/REPLACEME/$hostname/g" $i.txt > /tmp/$i.txt
+ #echo $MYSQLCMD "$SELECTSQL"
+ echo $i
+ $MYSQLCMD "$CREATESQL"
+ $MYSQLCMD "$ALTERSQL"
+ $MYSQLCMD "$COPY_TMP_SQL"
+ $MYSQLCMD "$INSERTSQL"
+ $MYSQLCMD "$DROPSQL"
+ $MYSQLCMD "$COPY_BCK_SQL "
+ $MYSQLCMD "$DROP_TABLE "
+ #rm /tmp/$i.txt
+ done
+ fi
+ if [ $loadhost = true ]
+ then
+ #only load the settings table with values HOST
+ i=settings
+ SQL_DEFINE $i
+ sed -e "s/REPLACEME/$hostname/g" $i.txt > /tmp/$i.txt
+ echo $i
+ $MYSQLCMD "$CREATESQL"
+ $MYSQLCMD "$ALTERSQL"
+ $MYSQLCMD "$INSERTSQL"
+ $MYSQLCMD "$COPY_TMP_SQL"
+ $MYSQLCMD "$DROPSQL"
+ $MYSQLCMD "$COPY_BCK_SQL"
+ $MYSQLCMD "$DROP_TABLE "
+ fi
+ else
+ echo "couldn't find $TEMPLATES/$Thistemplate"
+ fi
+ ;;
+
+ save)
+
+ if [ ! -d $TEMPLATES/$Thistemplate ]
+ then
+ mkdir -p $TEMPLATES/$Thistemplate
+ fi
+
+ cd $TEMPLATES/$Thistemplate
+ for i in $TABLES
+ do
+ EXTRACLAUSE=""
+ case $i in
+ settings)
+ EXTRACLAUSE="and not (value like \"BackendServerIP\") and not (value like \"locale\") order by value"
+ SQL="select value,data,'REPLACEME' as hostname from $i where hostname=\"$hostname\" "$EXTRACLAUSE" ;"
+ # SQL="select * from $i where hostname=\"$hostname\" "$EXTRACLAUSE" ;"
+ $MYSQLCMD_C "$SQL" > $TEMPLATES/$Thistemplate/$i.txt
+ ;;
+ keybindings)
+ SQL="select context,action,description,keylist,'REPLACEME' as hostname from $i where hostname=\"$hostname\" "$EXTRACLAUSE" ;"
+ $MYSQLCMD_C "$SQL" > $TEMPLATES/$Thistemplate/$i.txt
+ ;;
+ esac
+ # sed -e "s/$hostname/REPLACEME/g" $i > $i.txt && rm $i
+
+ done
+ ;;
+
+ load)
+
+ #will load both default_1 and default_2 unless either file is not found
+ for i in default_1 default_2
+ do
+ if [ -f $TEMPLATES/$i/settings.txt ]
+ then
+ echo $i
+ for tablename in $TABLES
+ do
+ #create table
+ CREATESQL="create table IF NOT EXISTS ${tablename}_${i} like $tablename;"
+ $MYSQLCMD_C "$CREATESQL"
+ #truncate table
+ TRUNCATESQL="truncate ${tablename}_${i} "
+ $MYSQLCMD_C "$TRUNCATESQL"
+ #load table
+ INSERTSQL="LOAD DATA local INFILE '$TEMPLATES/$i/$tablename.txt' REPLACE INTO TABLE ${tablename}_${i} FIELDS TERMINATED BY '\t';"
+ $MYSQLCMD_C "$INSERTSQL"
+ #update_hostname
+ UPDATEHOSTNAMESQL="update ${tablename}_${i} set hostname='$i' ; "
+ $MYSQLCMD_C "$UPDATEHOSTNAMESQL"
+ done
+ else
+
+ echo "couldn't find $TEMPLATES/$i/settings.txt template to load"
+ fi
+ CREATESQL="create table IF NOT EXISTS settings_user1 like settings;"
+ $MYSQLCMD_C "$CREATESQL"
+ CREATESQL="create table IF NOT EXISTS settings_user2 like settings;"
+ $MYSQLCMD_C "$CREATESQL"
+ CREATESQL="create table IF NOT EXISTS settings_user3 like settings;"
+ $MYSQLCMD_C "$CREATESQL"
+
+ CREATESQL="create table IF NOT EXISTS keybindings_user1 like keybindings;"
+ $MYSQLCMD_C "$CREATESQL"
+ CREATESQL="create table IF NOT EXISTS keybindings_user2 like keybindings;"
+ $MYSQLCMD_C "$CREATESQL"
+ CREATESQL="create table IF NOT EXISTS keybindings_user3 like keybindings;"
+ $MYSQLCMD_C "$CREATESQL"
+ done
+;;
+
+
+
+ BECONFIG)
+ if [ $SYSTEMTYPE = "master" ]
+ then
+ $MYSQLCMD_C "UPDATE settings set data='${IP_ADDRESS}' where value='MasterServerIP';"
+ $MYSQLCMD_C "delete from settings where value='BackendServerIP' and hostname=\"$hostname\";"
+ $MYSQLCMD_C "REPLACE INTO settings set data='${IP_ADDRESS}' , value='BackendServerIP' , hostname=\"$hostname\";"
+ fi
+
+ if [ $SYSTEMTYPE = "slave" ]
+ then
+ $MYSQLCMD_C "delete from settings where value='BackendServerIP' and hostname=\"$hostname\";"
+ $MYSQLCMD_C "REPLACE INTO settings set data='${IP_ADDRESS}' , value='BackendServerIP' , hostname=\"$hostname\";"
+ fi
+ ;;
+ ZIP)
+ $MYSQLCMD_C "delete from settings where value='locale' and hostname=\"$hostname\";"
+ $MYSQLCMD_C "REPLACE INTO settings set data='$ZIPCODE' , value='locale' , hostname=\"$hostname\";"
+ $MYSQLCMD_C "delete from settings where value='MythMovies.ZipCode' and hostname=\"$hostname\";"
+ $MYSQLCMD_C "REPLACE INTO settings set data='$ZIPCODE', value='MythMovies.ZipCode' , hostname=\"$hostname\";"
+ ;;
+ MUSICFRONT)
+ ALSADEVICE
+ $MYSQLCMD_C "delete from settings where value='AudioOutputDevice' and hostname=\"$hostname\";"
+ $MYSQLCMD_C "delete from settings where value='MixerDevice' and hostname=\"$hostname\";"
+ $MYSQLCMD_C "REPLACE INTO settings set data='$SoundDevice', value='AudioOutputDevice' , hostname=\"$hostname\";"
+ $MYSQLCMD_C "REPLACE INTO settings set data='$MixerDevice', value='MixerDevice' , hostname=\"$hostname\";"
+ #need to reload the settings.
+ systemconfig.sh reloadfe
+ ;;
+ MUSICMYTH)
+ ALSADEVICE
+ $MYSQLCMD_C "delete from settings where value='MusicAudioDevice' and hostname=\"$hostname\";"
+ $MYSQLCMD_C "REPLACE INTO settings set data='$SoundDevice', value='MusicAudioDevice' , hostname=\"$hostname\";"
+ ;;
+ uhostname)
+ #used when the hostname is changed.
+ TABLES="settings capturecard keybindings storagegroup recorded"
+ for i in $TABLES
+ do
+ USQL="update $i set hostname=\"$oldhostname\" where hostname=\"$hostname\" ;"
+ $MYSQLCMD_C "$USQL"
+ done
+
+ ;;
+ USERJOBALLOW)
+ SQL="update settings set data='1' where value like 'JobAllowUserJob%' and hostname=\"$hostname\" ;"
+ $MYSQLCMD_C "$SQL"
+ ;;
+
+ ACCESSCONTROL)
+ LIST="Hostaccessnetwork Hostaccesshostype HostaccesshostypeSystemtype Hostaccessmisc Hostaccesssleep Hostaccessadvanced HostaccessadvancedX Hostaccesssound"
+
+ for i in $LIST
+ do
+ $MYSQLCMD_C "delete from settings where value=\"$i\" and hostname=\"$hostname\";"
+ $MYSQLCMD_C "REPLACE INTO settings set data='1', value=\"$i\" , hostname=\"$hostname\";"
+ done
+ SQL="update settings set data='0' where value='HostaccesshostypeSystemtype' and hostname=\"$hostname\" ;"
+ $MYSQLCMD_C "$SQL"
+ SQL="update settings set data='0' where value='Hostaccessuser' and hostname=\"$hostname\" ;"
+ $MYSQLCMD_C "$SQL"
+ ;;
+ esac
+
+#SELECT * INTO OUTFILE 'data.txt'
+# FIELDS TERMINATED BY ','
+# FROM table2;
+
+
diff --git a/abs/core-testing/LinHES-config-22/restore_km_db_chroot.sh b/abs/core-testing/LinHES-config-22/restore_km_db_chroot.sh
new file mode 100644
index 0000000..e72e8c2
--- /dev/null
+++ b/abs/core-testing/LinHES-config-22/restore_km_db_chroot.sh
@@ -0,0 +1,61 @@
+#!/bin/bash
+. /etc/profile
+. /etc/systemconfig
+. $MV_ROOT/bin/install_functions.sh
+
+myhost=$hostname
+hostname $myhost
+mount -t proc none /proc
+DBFILE=$1
+
+if [ $SystemType = "Master_backend" -o $SystemType = "Standalone" ]
+ then
+ #restore database
+ pacman --noconfirm -Sf mysql
+ status=1
+ mysqlstatus=1
+ while [ ! $status = 0 ]
+ do
+ /etc/rc.d/mysqld stop
+ sleep 1
+ /etc/rc.d/mysqld start
+ mysqlstatus=$?
+ if [ $mysqlstatus = 0 ]
+ then
+ mysql -e "show databases;"
+ showstatus=$?
+ if [ $showstatus = 0 ]
+ then
+ #load database
+ pacman --noconfirm -R mythdb-initial
+ pacman --noconfirm -S mythdb-initial
+
+ if [ -f $DBFILE ]
+ then
+ echo "restoring old database"
+ gunzip -c $DBFILE > /tmp/mythconverg.sql
+ mysql mythconverg < /tmp/mythconverg.sql
+ update_db_settings HostServiceMythWEB "1"
+ echo 'UseMythWEB="1"' >> /etc/systemconfig
+ else
+ echo "Could not restore old database, mythconverg.sql is missing."
+ touch /tmp/.upgrade_db_failed
+ fi
+
+ if [ -d /data/srv/mysql/mythconverg ]
+ then
+ status=0
+ fi
+ fi
+ fi
+ done
+ rm -f /tmp/mythconverg.sql
+ else
+ exit 0
+ fi
+
+#/etc/rc.d/mysqld stop
+#umount /proc
+
+
+
diff --git a/abs/core-testing/LinHES-config-22/soundconfig.sh b/abs/core-testing/LinHES-config-22/soundconfig.sh
new file mode 100755
index 0000000..75998d6
--- /dev/null
+++ b/abs/core-testing/LinHES-config-22/soundconfig.sh
@@ -0,0 +1,254 @@
+#!/bin/bash
+. /etc/systemconfig
+. /etc/profile
+echo $@ >/tmp/audio.call
+#set -x
+BASE=""
+. /etc/profile
+#TEMPLATES="/usr/share/templates"
+#TESTFILE="$TEMPLATES/audio/space_battle_A.wav"
+TESTFILE="/usr/share/sounds/alsa/Front_Center.wav"
+OSSinstalled="false"
+
+function testaudio () {
+
+ossplay -d$AUDIODEVICE $TESTFILE
+
+}
+
+function load_alsa() {
+
+ remove_service.sh alsa-utils
+# cd /lib/modules/2.6.21-STB
+ KER=`uname -r`
+ cd /lib/modules/$KER/kernel/
+ tar -xvf /lib/modules/alsa-$KER.tar
+ pacman -Sf --noconfirm alsa-lib
+
+ depmod -a
+ cd -
+ udevadm trigger
+ udevadm settle
+ udevadm trigger
+
+ add_service.sh alsa-utils
+ sleep 4
+ sv start alsa-utils
+}
+
+
+function unload_alsa () {
+#kill $(lsof -t /dev/dsp* /dev/audio* /dev/mixer* /dev/snd/*) && modprobe -r $(lsmod |grep ^snd |awk '{print $1}')
+ sv stop alsa-utils
+ remove_service.sh alsa-utils
+ rm -rf /dev/adsp*
+ rm -rf /dev/snd/*
+ rm -rf /dev/audio
+ modprobe -r $(lsmod |grep ^snd |awk '{print $1}')
+}
+
+function unload_oss {
+ sv stop oss
+ soundoff
+ rm -rf /dev/dsp*
+ rm -rf /dev/oss*
+ rm -rf /dev/sndstat
+ remove_service.sh oss
+}
+
+function installOSS {
+ echo "installing oss"
+ pacman -Q oss 2>/dev/null
+ if [ ! $? = 0 ]
+ then
+ pacman --noconfirm -Sf oss
+ fi
+ add_service.sh oss
+ sleep 4
+ sv start oss
+}
+
+
+function SYNCXINE {
+echo "modify xine config file"
+ if [ -f /data/home/mythtv/.xine/config ]
+ then
+ cp -f /data/home/mythtv/.xine/config $TEMPLATES/xine.config
+ else
+ cp $TEMPLATES/xine.config.template $TEMPLATES/xine.config
+ fi
+
+ if [ x$Audiotype = xOSS ]
+ then
+ DEVICENUMBER=`echo $SoundDevice|awk -F/ ' { print $3 } '|tr -d dsp `
+ sed -e "s/^.*audio.driver.*$/audio.driver:oss/" \
+ -e "s/^.audio.device.oss_device_name.*$/audio.device.oss_device_name:\/dev\/dsp/" \
+ -e "s/^.audio.devic.oss_device_number.*$/audio.device.oss_device_number:$DEVICENUMER/" \
+ -e "s/^.*audio.output.speaker_arrangement:.*$/Audio.output.speaker_arrangement:PassThrough/" \
+ $TEMPLATES/xine.config > /data/home/mythtv/.xine/config
+ else
+ cp $TEMPLATES/xine.config /data/home/mythtv/.xine/config
+ fi
+
+}
+
+function SYNCMPLAYER {
+echo "modify mplayer not implmented yet"
+}
+
+function SYNCMYTHMUSIC {
+echo "sync mythmusic"
+$MV_ROOT/bin/restore_default_settings.sh -c MUSICMYTH
+}
+
+function SYNCMYTHFRONTEND {
+echo "sync mythfrontend"
+$MV_ROOT/bin/restore_default_settings.sh -c MUSICFRONT
+}
+
+
+function checkOSSinstalled () {
+ ossinfo |grep Version |grep -q OSS >/dev/null
+ resultcode=$?
+ echo $resultcode
+ if [ $resultcode = 0 ]
+ then
+ OSSinstalled='true'
+ else
+ OSSinstalled='false'
+ fi
+}
+
+function sound_config_system {
+
+ if [ x$syncXine = x1 ]
+ then
+ SYNCXINE
+ fi
+ if [ x$syncMplayer = x1 ]
+ then
+ SYNCMPLAYER
+ fi
+ if [ x$syncMythMusic = x1 ]
+ then
+ SYNCMYTHMUSIC
+ fi
+ if [ x$syncMythFrontend = x1 ]
+ then
+ SYNCMYTHFRONTEND
+ fi
+
+}
+
+function loadsound (){
+ checkOSSinstalled
+ if [ x$AUDIOTYPE = xOSS -o x$AUDIOTYPE = xoss ]
+ #then
+ # if [ $OSSinstalled = "false" ]
+ then
+ while [ $OSSinstalled = "false" ]
+ do
+ unload_alsa
+ rm /tmp/.alsatest
+ installOSS
+ installOSS
+ sleep 2
+ checkOSSinstalled
+ done
+ # fi
+ else
+ touch /tmp/.alsatest
+ unload_oss
+ load_alsa
+ load_alsa
+ rm /tmp/.alsatest
+
+ fi
+
+}
+
+
+
+
+#####################MAIN PROGRAM##########################
+
+declare -r OPTSTRING="i:t:d:"
+
+if [ $# -eq 0 ]
+then
+ echo "Valid options are:"
+ echo " -i (oss|alsa) oss or alsa subsystem "
+ echo " -t (test|real|LOAD) "
+ echo " -d device"
+ exit 1
+fi
+
+
+
+
+while getopts "$OPTSTRING" SWITCH
+do
+ case $SWITCH in
+ \?) echo "unkown option"
+ exit 11 ;;
+ i) echo "$SWITCH" "$OPTARG"
+ AUDIOTYPE="$OPTARG"
+ ;;
+ d) echo "$SWITCH" "$OPTARG"
+ AUDIODEVICE=$OPTARG
+ ;;
+ t) echo "$SWITCH" "$OPTARG"
+ SOUNDOPTYPE="$OPTARG"
+ if [ x"$OPTARG" = xtest ]
+ then
+ TEST=true
+ else
+ TEST=false
+ fi
+
+
+ ;;
+
+ esac
+done
+
+
+
+
+case $SOUNDOPTYPE in
+ REAL|real )
+ loadsound
+ sound_config_system
+ ;;
+ test|TEST)
+ echo $@ > /tmp/audio.test
+ #loadsound
+ if [ x$AUDIOTYPE = xOSS -o x$AUDIOTYPE = xoss ]
+ then
+ echo "testing OSS $AUDIODEVICE "
+ ossplay -d$AUDIODEVICE $TESTFILE
+ else
+ echo "testing ALSA $AUDIODEVICE "
+ aplay --device=$AUDIODEVICE $TESTFILE
+ fi
+
+ ;;
+
+ LOAD|load)
+ loadsound
+ ;;
+ esac
+
+
+exit 0
+
+
+
+
+
+
+
+
+
+
+
diff --git a/abs/core-testing/LinHES-config-22/startx b/abs/core-testing/LinHES-config-22/startx
new file mode 100755
index 0000000..75ba06a
--- /dev/null
+++ b/abs/core-testing/LinHES-config-22/startx
@@ -0,0 +1,29 @@
+#!/bin/bash
+. /etc/profile
+
+export USER=root
+export HOME=/root
+#TEMPLATES=/usr/share/templates
+
+CMDLINE=$(cat /proc/cmdline)
+TEMPVAR=${CMDLINE#*ip=}
+IP=${TEMPVAR%% *}
+echo $CMDLINE |grep -q vnc
+USEVNC=$?
+
+if [ x$USEVNC = x1 ]
+then
+ $MV_ROOT/bin/xconfig.sh
+ cat /etc/X11/xorg.conf | sed -e 's/dev\/mouse/dev\/psaux/g'> /root/xorg.conf.install
+ startx /root/live-install.sh -- -logverbose 6 -config /root/xorg.conf.install -allowMouseOpenFail
+ else
+ #VNC
+ pacman -Sf --noconfirm tightvnc
+ cd /root
+ mkdir .vnc
+ echo mythvantage |vncpasswd -f > /root/.vnc/passwd
+ chmod 500 /root/.vnc/passwd
+ rm /root/.vnc/xstartup
+ ln -s /root/live-install.sh /root/.vnc/xstartup
+ vncserver
+fi
diff --git a/abs/core-testing/LinHES-config-22/systemconfig.py b/abs/core-testing/LinHES-config-22/systemconfig.py
new file mode 100755
index 0000000..28e2e7a
--- /dev/null
+++ b/abs/core-testing/LinHES-config-22/systemconfig.py
@@ -0,0 +1,244 @@
+#!/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"]:
+ import mv_ddns
+ mv_ddns.setup_ddns(systemconfig)
+
+ 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/core-testing/LinHES-config-22/systemconfig.sh b/abs/core-testing/LinHES-config-22/systemconfig.sh
new file mode 100755
index 0000000..218f705
--- /dev/null
+++ b/abs/core-testing/LinHES-config-22/systemconfig.sh
@@ -0,0 +1,19 @@
+#!/bin/bash
+###################################################################
+#Script to configure your system based off the values in /etc/systemconfig
+#Any changes made to config files will be removed when systemconfig.sh is run
+#
+#JM
+echo $@ >/tmp/systemconfig.call
+echo "----------------------start of systemconfig $@ ----------------------"
+. /etc/profile
+. $MV_ROOT/bin/networkconfig.sh
+postfix=`cat ${BASE}/usr/local/share/mythtv/.releasetype`
+
+systemconfig.py -m $@
+rc=$?
+echo "systemconfig.py exit code $rc"
+exit $rc
+
+
+
diff --git a/abs/core-testing/LinHES-config-22/timezip.py b/abs/core-testing/LinHES-config-22/timezip.py
new file mode 100755
index 0000000..bf6b389
--- /dev/null
+++ b/abs/core-testing/LinHES-config-22/timezip.py
@@ -0,0 +1,232 @@
+#!/usr/bin/python
+# -*- coding: utf-8 -*-
+# import MySQL module
+#used to import the zipcode/timezone/nfs info fromMBE
+import MySQLdb
+import sys
+import getopt
+import socket
+
+
+def usage():
+ print " -h --help"
+ print " -d --installdb"
+ print " -m --masterdb"
+ print " -n --hostname of current machine"
+
+def printvars():
+ print "masterdb: " + masterdb
+ print "installdb:" + installdb
+ print "hostname: " + thishostname
+ print "BEhostname:" + BEhostname
+ print "zipcode:" + zipcode
+ print "timezone:" + tz
+ print "timezone region:" + tz_region
+ print "timezone subregion:" + tz_subregion
+ print "nfsip:" + nfsip
+ print "nfstoggle:" + nfstoggle
+ print "nfsmount:" + nfsmount
+ print "hobbitclient:" + hobbitclient
+# connect
+def selectvars():
+
+ global BEhostname
+ global zipcode
+ global tz
+ global tz_region
+ global tz_subregion
+ global nfsip
+ global nfstoggle
+ global nfsmount
+ global hobbitclient
+
+ db = MySQLdb.connect(host=masterdb, user="mythtv", passwd="mythtv", db="mythconverg")
+ # create a cursor
+ cursor = db.cursor()
+ # execute SQL statement
+ cursor.execute("select hostname from settings where value='BackendServerIP' and data=(%s)",(masterdb))
+ result = cursor.fetchone()
+ try:
+ BEhostname=result[0]
+ except TypeError:
+ BEhostname=""
+
+ cursor.execute("select data from settings where value='HostZipcode' and hostname=(%s)",(BEhostname))
+ result = cursor.fetchone()
+ try:
+ zipcode = result[0]
+ except TypeError:
+ zipcode=""
+
+ cursor.execute("select data from settings where value='HostCentralNFSIP' and hostname=(%s)",(BEhostname))
+ result = cursor.fetchone()
+ try:
+ nfsip=result[0]
+ except TypeError:
+ nfsip=""
+
+ cursor.execute("select data from settings where value='HostHaveCentralNFS' and hostname=(%s)",(BEhostname))
+ result = cursor.fetchone()
+ try:
+ nfstoggle=result[0]
+ except TypeError:
+ nfstoggle=""
+
+ cursor.execute("select data from settings where value='HostNFSmountpoint' and hostname=(%s)",(BEhostname))
+ result = cursor.fetchone()
+ try:
+ nfsmount=result[0]
+ except TypeError:
+ nfsmount=""
+
+ cursor.execute("select data from settings where value='HostTimeZone' and hostname=(%s)",(BEhostname))
+ result = cursor.fetchone()
+ try:
+ tz=result[0]
+ except TypeError:
+ tz=""
+##########
+ cursor.execute("select data from settings where value='HostTimeZoneRegion' and hostname=(%s)",(BEhostname))
+ result = cursor.fetchone()
+ try:
+ tz_region=result[0]
+ except TypeError:
+ tz_region=""
+ tempsubregion="HostTimeZoneRegion_" + tz_region
+
+ cursor.execute("select data from settings where value=%s and hostname=(%s)",(tempsubregion,BEhostname))
+ result = cursor.fetchone()
+ try:
+ tz_subregion=result[0]
+ except TypeError:
+ tz_subregion=""
+###############
+ if ( thishostname != BEhostname ):
+ cursor.execute("select data from settings where value='GlobalServiceHobbitserver'")
+ result = cursor.fetchone()
+ try:
+ hobbitclient=result[0]
+ except TypeError:
+ hobbitclient="1"
+
+
+
+def insertvars():
+
+ db = MySQLdb.connect(host=installdb, user="mythtv", passwd="mythtv", db="mythconverg")
+ cursor = db.cursor()
+#inserting the zipcode
+ cursor.execute("select * from settings where value='HostZipcode' and hostname=(%s)",(thishostname))
+ result = cursor.fetchone()
+ if ( zipcode!="" ):
+ if (result == None):
+ cursor.execute("INSERT INTO settings (value,data,hostname) VALUES ('HostZipcode',(%s),(%s))",(zipcode,thishostname))
+ print "inserting zipcode"
+ else:
+ cursor.execute("update settings set data=(%s) where hostname=(%s) and value='HostZipcode'",(zipcode,thishostname))
+ print "updating zipcode"
+
+#inserting the timezone
+ cursor.execute("select * from settings where value='HostTimeZone' and hostname=(%s)",(thishostname))
+ result = cursor.fetchone()
+ if ( tz != ""):
+ if (result == None):
+ cursor.execute("INSERT INTO settings (value,data,hostname) VALUES ('HostTimeZone',(%s),(%s))",(tz,thishostname))
+ print "inserting timezone"
+ else:
+ cursor.execute("update settings set data=(%s) where hostname=(%s) and value='HostTimeZone'",(tz,thishostname))
+ print "updating timezone"
+
+ cursor.execute("select * from settings where value='HostTimeZoneRegion' and hostname=(%s)",(thishostname))
+ result = cursor.fetchone()
+ if ( tz != ""):
+ if (result == None):
+ cursor.execute("INSERT INTO settings (value,data,hostname) VALUES ('HostTimeZoneRegion',(%s),(%s))",(tz_region,thishostname))
+ print "inserting timezone region"
+ else:
+ cursor.execute("update settings set data=(%s) where hostname=(%s) and value='HostTimeZoneRegion'",(tz_region,thishostname))
+ print "updating timezone region"
+
+ tempsubregion="HostTimeZoneRegion_" + tz_region
+ cursor.execute("select * from settings where value=%s and hostname=(%s)",(tempsubregion,thishostname))
+ result = cursor.fetchone()
+ if ( tz != ""):
+ if (result == None):
+ cursor.execute("INSERT INTO settings (value,data,hostname) VALUES ((%s),(%s),(%s))",(tempsubregion,tz_subregion,thishostname))
+ print "inserting timezone subregion"
+ else:
+ cursor.execute("update settings set data=(%s) where hostname=(%s) and value=(%s)",(tempsubregion,tz_subregion,thishostname))
+ print "updating timezone subregion"
+
+
+#start of NFSIP
+ cursor.execute("select data from settings where value='HostCentralNFSIP' and hostname=(%s)",(thishostname))
+ result = cursor.fetchone()
+ if ( nfsip != ""):
+ if (result == None):
+ cursor.execute("INSERT INTO settings (value,data,hostname) VALUES ('HostCentralNFSIP',(%s),(%s))",(nfsip,thishostname))
+ print "inserting nfsip"
+
+ if (nfstoggle != ""):
+ cursor.execute("select data from settings where value='HostHaveCentralNFS' and hostname=(%s)",(thishostname))
+ result = cursor.fetchone()
+ if (result == None):
+ cursor.execute("INSERT INTO settings (value,data,hostname) VALUES ('HostHaveCentralNFS',(%s),(%s))",(nfstoggle,thishostname))
+ print "inserting nfstoggle"
+
+ if ( nfsmount !="") :
+ cursor.execute("select data from settings where value='HostNFSmountpoint' and hostname=(%s)",(thishostname))
+ result = cursor.fetchone()
+ if (result == None):
+ cursor.execute("INSERT INTO settings (value,data,hostname) VALUES ('HostNFSmountpoint',(%s),(%s))",(nfsmount,thishostname))
+ print "inserting nfsmountpoint"
+
+#hobbitclient
+ cursor.execute("select * from settings where value='HostServiceHobbitclient' and hostname=(%s)",(thishostname))
+ result = cursor.fetchone()
+ if ( tz != ""):
+ if (result == None):
+ cursor.execute("INSERT INTO settings (value,data,hostname) VALUES ('HostServiceHobbitclient',(%s),(%s))",(hobbitclient,thishostname))
+ print "inserting hobbitcleint"
+ else:
+ cursor.execute("update settings set data=(%s) where hostname=(%s) and value='HostServiceHobbitclient'",(hobbitclient,thishostname))
+ print "updating hobbitclient"
+
+
+def main(argv):
+ global masterdb
+ global installdb
+ global thishostname
+ thishostname=""
+ global BEhostname
+ global zipcode
+ global tz
+ global tz_region
+ global tz_subregion
+
+ global nfsip
+ global hobbitclient
+ try:
+ opts, args = getopt.getopt(argv, "hm:d:n:", ["help", "masterdb=", "installdb=" , "hostname=" ] )
+ except getopt.GetoptError:
+ sys.exit(2)
+ for opt, arg in opts:
+ if opt in ("-h", "--help"):
+ usage()
+ sys.exit()
+ elif opt in ( "-d" , "--installdb"):
+ installdb = arg
+ elif opt in ("-m", "--masterdb"):
+ masterdb = arg
+ elif opt in ("-n", "--hostname"):
+ thishostname = arg
+
+ if ( thishostname == "" ):
+ thishostname = socket.gethostname()
+
+ selectvars()
+ printvars()
+ insertvars()
+if __name__ == "__main__":
+ main(sys.argv[1:])
+
diff --git a/abs/core-testing/LinHES-config-22/xconfig.sh b/abs/core-testing/LinHES-config-22/xconfig.sh
new file mode 100755
index 0000000..2fad821
--- /dev/null
+++ b/abs/core-testing/LinHES-config-22/xconfig.sh
@@ -0,0 +1,363 @@
+#!/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 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 ]
+ 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
+ #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 [ -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 "$MYTHHOME/templates/xorg.user" ]
+ then
+ cp -f "$MYTHHOME/templates/xorg.user" "$XORG_CONF"
+ else
+ echo "Didn't find the file"
+ echo "Copy your config file to $MYTHHOME/templates/xorg.user" > "$XORG_CONF"
+ fi
+ else
+ if [ "$XUseAdvanced" = 1 ]
+ then
+ setupAdvancedX
+ else
+ setupX
+ fi
+ fi
+ fi
+
+}
+
+function setupAdvancedX {
+ echo "#doing the advanced" > /tmp/options
+ Xcategory=`echo "$Xresadvanced" | cut -d_ -f1`
+ Xres=`echo "$Xresadvanced" | cut -d_ -f2`
+ echo "$Xcategory"
+ if [ "$Xcategory" = "nVidia Modeline" ]
+ then
+ Xres=""
+ if [ "$XnVidia1080p" = "1" ]
+ then
+ Xres="${Xres} \"1920x1080_60\""
+ fi
+ if [ "$XnVidia1080i" = "1" ]
+ then
+ Xres="${Xres} \"1920x1080_60i\""
+ fi
+ if [ "$XnVidia720p" = "1" ]
+ then
+ Xres="${Xres} \"1280x720_60\""
+ fi
+ if [ "$XnVidia480p" = "1" ]
+ then
+ Xres="${Xres} \"720x480_60\""
+ fi
+ ML="\t Modes ${Xres}"
+ else
+
+ ML="\t Modes \"${Xres}\""
+ fi
+# echo $ML
+ case $Xcardtype in
+ NVIDIA|nVidia|nvidia)
+ case $Xconnection in
+ DVI) ConnectedMonitor=DFP ;;
+ vga) ConnectedMonitor=CRT;;
+ Auto) ConnectedMonitor=Auto;;
+ TV) ConnectedMonitor=TV
+ echo "Option \"TVStandard\" \"$XTVstandard\"" >>/tmp/options
+ echo "Option \"TVOutFormat\" \"$XTVconnection\"" >> /tmp/options
+ ;;
+ esac
+ if [ "$ConnectedMonitor" = Auto ]
+ then
+ echo "auto connection"
+ else
+ echo "Option \"ConnectedMonitor\" \"$ConnectedMonitor\"" >> /tmp/options
+ echo "Option \"FlatPanelProperties\" \"Scaling = centered, Dithering = enabled\"" >> /tmp/options
+ echo "Option \"DigitalVibrance\" \"0\"" >> /tmp/options
+ fi
+
+ if [ "$XignoreEDID" = 1 ]
+ then
+ EDIDvalue=true
+ EDIDFREQ=false
+ DS=" DisplaySize $XDisplaysize"
+ HS=" HorizSync $XHsync"
+ VR=" VertRefresh $XVrefresh"
+ else
+ EDIDvalue=false
+ EDIDFREQ=true
+ DS="# Display size edid used "
+ HS="# Hsync edid used "
+ VR="# Vertrefresh edid used "
+ fi
+ echo "Option \"UseEdidFreqs\" \"$EDIDFREQ\"" >> /tmp/options
+ echo "Option \"IgnoreEDID\" \"$EDIDvalue\"" >> /tmp/options
+
+
+ sed -e "s/^.*Modes.*$/${ML}/" \
+ -e "/INSERT MODELINE/r $TEMPLATES/xorg/modeline.$Xcategory" \
+ -e "s/^.*DisplaySize.*$/ $DS/" \
+ -e "s/^#.*HorizSync.*$/ $HS/g" \
+ -e "s/^#.*VertRefresh.*$/ $VR/g" \
+ -e "/INSERT HERE/r /tmp/options" "$TEMPLATES/xorg/xorg.conf.nvidia" > "$XORG_CONF"
+ ;;
+
+ ati|ATI)
+ case $Xconnection in
+ DVI) ConnectedMonitor="tmds1,nocrt1,notv";;
+ VGA) ConnectedMonitor="crt1,notmds1,notv" ;;
+ TV) ConnectedMonitor="tv,nocrt1,notmds1"
+ echo "Option \"TVStandard\" \"$XTVstandard\"" >>/tmp/options
+ echo "Option \"TVFormat\" \"$XTVconnection\"" >> /tmp/options
+ ;;
+ esac
+ if [ "$XignoreEDID" = 1 ]
+ then
+ DS=" DisplaySize $XDisplaysize"
+ HS=" HorizSync $XHsync"
+ VR=" VertRefresh $XVrefresh"
+ else
+ DS="# Display size edid used "
+ HS="# Hsync edid used "
+ VR="# Vertrefresh edid used "
+ fi
+
+ echo "Option \"ForceMonitors\" \"$ConnectedMonitor\"" >> /tmp/options
+
+ sed -e "s/^.*Modes.*$/\t $ML/" \
+ -e "/INSERT MODELINE/r $TEMPLATES/xorg/modeline.$Xcategory" \
+ -e "s/^.*DisplaySize.*$/ $DS/" \
+ -e "s/^#.*HorizSync.*$/ $HS/g" \
+ -e "s/^#.*VertRefresh.*$/ $VR/g" \
+ -e "/INSERT HERE/r /tmp/options" "$TEMPLATES/xorg/xorg.conf.ati" > "$XORG_CONF"
+ ;;
+
+ via|VIA|Via|S3)
+ # Need to add appropriate Modules, Device and DRI sections
+ # See the http://www.mythtv.org/wiki/XvMC wiki page
+ echo "no via here"
+ ;;
+
+ *)
+ echo "unknown card type"
+ ;;
+ esac
+}
+
+
+function setupX {
+ Xvalues
+ #echo "$currentmode ____ ${Xres}"
+ #if [ "${currentmode}" != \"${Xres}\" ]
+ if [ x = x ]
+ then
+ case $VGACARDTYPE in
+ nVidia)
+ 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
+ grep -qi "$CARDID" "$NVIDIA_96XX"
+ if [ $? = 0 ]
+ 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
+ fi
+ echo "/usr/lib/libXvMCNVIDIA_dynamic.so.1" > "$XVMC_CONFIG"
+ ;;
+
+ # VMware)
+ # sed -e "s/^.*Modes.*$/\t Modes \"${Xres}\"/" "$TEMPLATES/xorg/xorg.conf.vmware" > "$XORG_CONF"
+ # ;;
+
+ VIA|S3)
+ # There are actually multiple options here
+ # xf86-video-openchrome
+ # xf86-video-unichrome
+ # There is also a seperate driver for the Unichrome Pro
+ 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" ]
+ then
+ pacman --noconfirm -R nvidia nvidia-utils > /dev/null 2>&1
+ pacman --noconfirm -S libgl unichrome-dri xf86-video-openchrome > /dev/null 2>&1
+ else
+ pacman --noconfirm -R nvidia nvidia-utils > /dev/null 2>&1
+ pacman --noconfirm -S libgl unichrome-dri xf86-video-unichrome > /dev/null 2>&1
+ fi
+ fi
+ # I'm making educated guesses here...
+ if lspci | grep "VGA" | grep -qi "Unichrome Pro"
+ then
+ if [ -f "/usr/lib/libchromeXvMCPro.so.1" ]
+ then
+ echo "/usr/lib/libchromeXvMCPro.so.1" > "$XVMC_CONFIG"
+ else
+ echo "/usr/lib/libviaXvMCPro.so.1" > "$XVMC_CONFIG"
+ fi
+ else
+ if [ -f "/usr/lib/libchromeXvMC.so.1" ]
+ then
+ echo "/usr/lib/libchromeXvMC.so.1" > "$XVMC_CONFIG"
+ else
+ echo "/usr/lib/libviaXvMC.so.1" > "$XVMC_CONFIG"
+ fi
+ fi
+ ;;
+
+ 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
+ pacman --noconfirm -S libgl > /dev/null 2>&1
+ fi
+ echo "/usr/lib/libIntelXvMC.so.1" > "$XVMC_CONFIG"
+ ;;
+
+ vesa|InnoTek)
+ 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
+ ;;
+
+ *)
+ XCONF=/root/xorg.conf.new
+ XCONFB=/etc/X11/xorg.conf.install
+ X -configure
+ if [ -f "$XCONF" ]
+ then
+ echo "Using $XCONF"
+ 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"
+ 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
+ rm -f "$XCONF" 2>&1 > /dev/null
+ ;;
+ esac
+ fi
+
+}
+
+#MAIN
+TESTMODE="$1"
+if [ "$TESTMODE" = "test" ]
+then
+ XORG_CONF="/tmp/xorg.conf.test"
+ XVMC_CONFIG="/tmp/XvMCConfig.test"
+ XUseAdvanced="1"
+ XIgnoreConfig="${2}"
+ Xcardtype="${3}"
+ XIgnoreEDID="${4}"
+ Xconnection="${5}"
+ XHsync="${6}"
+ XVrefresh="${7}"
+ Xresadvanced="${8}"
+ XTVstandard="${9}"
+ XTVconnection="${10}"
+ XDisplaysize="${11}"
+else
+ if [ -f /etc/systemconfig ]
+ then
+ . /etc/systemconfig
+ 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
+presetupX
diff --git a/abs/core-testing/lirc/PKGBUILD b/abs/core-testing/lirc/PKGBUILD
index d15cf1d..12dc3b4 100644
--- a/abs/core-testing/lirc/PKGBUILD
+++ b/abs/core-testing/lirc/PKGBUILD
@@ -3,7 +3,7 @@
pkgname=lirc
pkgver=0.8.5CVS
-pkgrel=15
+pkgrel=17
_kernver=2.6.28-LinHES
pkgdesc="Linux Infrared Remote Control kernel modules for stock arch kernel"
arch=(i686 x86_64)
@@ -79,7 +79,7 @@ md5sums=('b96dae91b566143b3af433fa2714ec9a'
'6f151eb4e81fc7776a06c9063e6ad9a5'
'7eccd7826ab99e5cf1b9154171c8b927'
'21ce358809105f005e888e3b138c59e6'
- 'd299b696b007fc9b663a73cc1758a1ef'
+ 'b5d52566a9dae8d76e24e8753f33abef'
'f059f4030afc682c9539a03bf837c1cf'
'4e698654cc44fc6c4163814acda5a7ee'
'9a3a6dc03647ee6674a166dfb884ddd6'
diff --git a/abs/core-testing/lirc/lirc_mod_mce.patch b/abs/core-testing/lirc/lirc_mod_mce.patch
index 314f2d7..1dc6644 100644
--- a/abs/core-testing/lirc/lirc_mod_mce.patch
+++ b/abs/core-testing/lirc/lirc_mod_mce.patch
@@ -1,6 +1,6 @@
-diff -Naru lirc_mod_mce.orig/lirc_mod_mce.c lirc_mod_mce/lirc_mod_mce.c
---- lirc_mod_mce.orig/lirc_mod_mce.c 2008-04-18 02:12:28.000000000 +0930
-+++ lirc_mod_mce/lirc_mod_mce.c 2009-05-28 07:53:10.000000000 +0930
+diff -Naru lirc_mod_mce/lirc_mod_mce.c lirc_mod_mce_new/lirc_mod_mce.c
+--- lirc_mod_mce/lirc_mod_mce.c 2008-04-18 02:12:28.000000000 +0930
++++ lirc_mod_mce_new/lirc_mod_mce.c 2009-11-22 18:45:24.000000000 +1030
@@ -171,17 +171,76 @@
#define VENDOR_TATUNG 0x1460
#define VENDOR_GATEWAY 0x107b
@@ -86,7 +86,97 @@ diff -Naru lirc_mod_mce.orig/lirc_mod_mce.c lirc_mod_mce/lirc_mod_mce.c
};
static unsigned char usb_kbd_keycode[256] = {
-@@ -1108,7 +1167,7 @@
+@@ -252,6 +311,8 @@
+ struct semaphore lock;
+ char name[NAME_BUFSIZE];
+ char phys[NAME_BUFSIZE];
++
++ unsigned int carrier_freq;
+ };
+
+ /* init strings */
+@@ -889,6 +950,51 @@
+ }
+ }
+
++/* Sets the send carrier frequency */
++static int set_send_carrier(struct irctl *ir, int carrier)
++{
++ int clk = 10000000;
++ int prescaler = 0, divisor = 0;
++ unsigned char cmdbuf[] = { 0x9F, 0x06, 0x01, 0x80 };
++
++ /* Carrier is changed */
++ if (ir->carrier_freq != carrier) {
++
++ if (carrier <= 0) {
++ ir->carrier_freq = carrier;
++ dprintk(DRIVER_NAME "[%d]: SET_CARRIER disabling "
++ "carrier modulation\n", ir->devnum);
++ request_packet_async(ir, ir->usb_ep_out,
++ cmdbuf, sizeof(cmdbuf),
++ PHILUSB_OUTBOUND);
++ return carrier;
++ }
++
++ for (prescaler = 0; prescaler < 4; ++prescaler) {
++ divisor = (clk >> (2 * prescaler)) / carrier;
++ if (divisor <= 0xFF) {
++ ir->carrier_freq = carrier;
++ cmdbuf[2] = prescaler;
++ cmdbuf[3] = divisor;
++ dprintk(DRIVER_NAME "[%d]: SET_CARRIER "
++ "requesting %d Hz\n",
++ ir->devnum, carrier);
++
++ /* Transmit new carrier to mce device */
++ request_packet_async(ir, ir->usb_ep_out,
++ cmdbuf, sizeof(cmdbuf),
++ PHILUSB_OUTBOUND);
++ return carrier;
++ }
++ }
++
++ return -EINVAL;
++
++ }
++
++ return carrier;
++}
++
+ static int input_open(struct input_dev *id)
+ {
+ return 0;
+@@ -945,6 +1051,18 @@
+ if(lvalue!=(LIRC_MODE_PULSE&LIRC_CAN_SEND_MASK)) return -EINVAL;
+ break;
+
++ case LIRC_SET_SEND_CARRIER:
++ /* Retrieve lirc_plugin data for the device */
++ ir=lirc_get_pdata(filep);
++ if (!ir && !ir->usb_ep_out) return -EFAULT;
++
++ result = get_user(ivalue, (unsigned int *) arg);
++ if (result)
++ return result;
++
++ set_send_carrier(ir, ivalue);
++ break;
++
+ default:
+ return -ENOIOCTLCMD;
+ }
+@@ -1047,7 +1165,8 @@
+ plugin->minor = -1;
+ plugin->features = LIRC_CAN_SEND_PULSE |
+ LIRC_CAN_SET_TRANSMITTER_MASK |
+- LIRC_CAN_REC_MODE2;
++ LIRC_CAN_REC_MODE2 |
++ LIRC_CAN_SET_SEND_CARRIER;
+ plugin->data = ir;
+ plugin->rbuf = rbuf;
+ plugin->set_use_inc = &set_use_inc;
+@@ -1108,7 +1227,7 @@
input_dev->name = ir->name;
input_dev->phys = ir->phys;
usb_to_input_id(dev, &input_dev->id);
diff --git a/abs/core-testing/mythinstall-22/PKGBUILD b/abs/core-testing/mythinstall-22/PKGBUILD
new file mode 100644
index 0000000..ce3e4e4
--- /dev/null
+++ b/abs/core-testing/mythinstall-22/PKGBUILD
@@ -0,0 +1,28 @@
+# Maintainer: Jams
+pkgname=mythinstall-22
+pkgver=2
+pkgrel=6
+pkgdesc="LinHES installer/systemconfig GUI."
+arch=i686
+depends=()
+makedepends=(mythtv-release-fixes-22)
+
+source=(mythinstall.bin)
+
+build() {
+
+# It is assumed that you have built the mythtv package in the same
+# LinHES-PKGBUILD area.
+ cd $startdir
+ ./checkout_MythVantage.sh || exit 1
+ cd -
+ install -D MythVantage-app/mythinstall/install-ui.xml $pkgdir/usr/share/mythtv/themes/default/install-ui.xml
+ MVBINDIR=$startdir/pkg/usr/MythVantage/bin
+ mkdir -p $MVBINDIR
+ install -m 0755 mythinstall.bin $MVBINDIR/MythVantage
+ cd $MVBINDIR
+ ln -s MythVantage mythvantage
+ ln -s MythVantage mythinstall
+ cd -
+
+}
diff --git a/abs/core-testing/mythinstall-22/checkout_MythVantage.sh b/abs/core-testing/mythinstall-22/checkout_MythVantage.sh
new file mode 100755
index 0000000..82002c8
--- /dev/null
+++ b/abs/core-testing/mythinstall-22/checkout_MythVantage.sh
@@ -0,0 +1,49 @@
+#!/bin/bash
+MYDIR=`pwd`
+MYTHPATH="\/data\/LinHES-PKGBUILD\/abs\/core-testing\/mythtv\/stable.22\/mythtv\/src\/mythtv"
+
+function setup_links {
+rm mythinstall.bin
+rm mythbeselect.bin
+ln -s $MYDIR/src/MythVantage-app/mythinstall/mythinstall ./mythinstall.bin
+ln -s $MYDIR/src/MythVantage-app/mythbeselect/mythbeselect ./mythbeselect.bin
+}
+
+function dl_repo {
+mkdir src
+cd src
+if [ ! -d MythVantage-app ]
+then
+ git clone http://mythvantage.com/MythVantage-app.git/
+ cd MythVantage-app
+ git checkout --track -b LinHES origin/LinHES
+ cd $MYDIR
+ setup_links
+ cd -
+else
+ echo "updating exisiting tree"
+ cd MythVantage-app
+ git pull
+ git checkout master
+ git merge
+ cd -
+fi
+
+cd MythVantage-app
+git checkout master
+#git checkout origin/LinHES
+
+}
+
+dl_repo
+sed -i "s/^MYTHPATH.*$/MYTHPATH\=\"$MYTHPATH\"/g" $MYDIR/src/MythVantage-app/mythinstall/mythinstall.pro
+sed -i "s/#define __MVAPP__/\/\/#define __MVAPP__/g" $MYDIR/src/MythVantage-app/mythinstall/mv_common.h
+sed -i "s/mythvantage/LinHES/g" $MYDIR/src/MythVantage-app/mythinstall/mv_common.h
+
+echo "INCLUDEPATH += /usr/include/mythtv" >> $MYDIR/src/MythVantage-app/mythbeselect/mythberestart.pro
+echo "INCLUDEPATH += /usr/include/mythtv" >> $MYDIR/src/MythVantage-app/mythinstall/mythinstall.pro
+cd $MYDIR/src/MythVantage-app/mythinstall && qmake
+make || exit 1
+#cd $MYDIR/src/MythVantage-app/mythbeselect && qmake
+#make ||exit 1
+
diff --git a/abs/core-testing/mythtv/stable.22/clean_all.sh b/abs/core-testing/mythtv/stable.22/clean_all.sh
new file mode 100755
index 0000000..1ebdc43
--- /dev/null
+++ b/abs/core-testing/mythtv/stable.22/clean_all.sh
@@ -0,0 +1,22 @@
+#!/bin/sh
+
+buildlist=('mythtv' 'mytharchive' 'mythbrowser' 'mythflix' 'mythgallery' 'mythgame' 'mythmovies' 'mythmusic' 'mythnews' 'mythvideo' 'mythweather' 'mythzoneminder' 'mythweb' 'myththemes' 'morethemes')
+
+# clean up current directory
+rm -f *~
+
+# clean up mythtv directories
+for i in `echo ${buildlist[@]:0}`
+do
+ echo "-- cleaning $i"
+ cd ./$i
+
+ # clean up everything
+ rm -rf pkg src
+ rm -f *~
+
+ cd ..
+done
+
+echo "DONE!"
+
diff --git a/abs/core-testing/mythtv/stable.22/morethemes/PKGBUILD b/abs/core-testing/mythtv/stable.22/morethemes/PKGBUILD
new file mode 100644
index 0000000..96ea655
--- /dev/null
+++ b/abs/core-testing/mythtv/stable.22/morethemes/PKGBUILD
@@ -0,0 +1,50 @@
+pkgname=morethemes-svn
+pkgver=22783
+pkgrel=1
+pkgdesc="Additional themes for MythTV"
+url="http://www.mythtv.org"
+license="GPL"
+arch=('i686' 'x86_64')
+
+depends=('mythtv-svn')
+conflicts=('morethemes')
+groups=('mythtv-extras-svn')
+
+patches=()
+source=(`echo ${patches[@]:0}`)
+_svntrunk=http://cvs.mythtv.org/svn/branches/release-0-22-fixes/themes
+#_svntrunk=http://cvs.mythtv.org/svn/trunk/themes
+_svnmod=themes
+
+
+build() {
+
+ svn co $_svntrunk --config-dir ./ -r $pkgver $_svnmod
+ svn revert -R $_svnmod
+
+ cd $startdir/src/$_svnmod
+
+ echo "--------------------------applying patches----------------------------------------------------"
+ for i in `echo ${patches[@]:0} `
+ do
+ echo applying $i
+ echo "-----------------------------"
+ patch -Np0 -i ${startdir}/src/$i || return 1
+ done
+ echo "--------------------------done applying patches-----------------------------------------------"
+
+ [ "$CARCH" = "i686" ] && ARCH="i686"
+ [ "$CARCH" = "x86_64" ] && ARCH="x86-64"
+
+ # clean up
+ make distclean
+
+ # configure
+ ./configure --prefix=/usr || return 1
+
+ # build and install
+ . /etc/profile
+ make || return 1
+ make INSTALL_ROOT=$startdir/pkg install || return 1
+
+}
diff --git a/abs/core-testing/mythtv/stable.22/mp_all.sh b/abs/core-testing/mythtv/stable.22/mp_all.sh
new file mode 100755
index 0000000..d06564a
--- /dev/null
+++ b/abs/core-testing/mythtv/stable.22/mp_all.sh
@@ -0,0 +1,30 @@
+#!/bin/sh
+pkgver=22783
+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')
+
+# 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 -f -i --holdver || exit 1
+
+ # clean up afterwards
+ rm -rf pkg
+ rm -f *~
+
+ cd ..
+done
+
+echo ""
+echo "DONE!"
+
diff --git a/abs/core-testing/mythtv/stable.22/mytharchive/PKGBUILD b/abs/core-testing/mythtv/stable.22/mytharchive/PKGBUILD
new file mode 100644
index 0000000..6f1ecfe
--- /dev/null
+++ b/abs/core-testing/mythtv/stable.22/mytharchive/PKGBUILD
@@ -0,0 +1,51 @@
+pkgname=mytharchive-svn
+pkgver=22783
+pkgrel=1
+pkgdesc="MythTV plugin that lets you create DVDs from or archive your recorded shows."
+url="http://www.mythtv.org"
+license="GPL"
+arch=('i686' 'x86_64')
+
+depends=('mythtv-svn' 'libxmu' 'mysql-python' 'pil' 'dvdauthor' 'mjpegtools' 'transcode')
+conflicts=('mytharchive')
+groups=('mythtv-extras-svn')
+
+patches=()
+source=(`echo ${patches[@]:0}`)
+_svntrunk=http://cvs.mythtv.org/svn/branches/release-0-22-fixes/mythplugins
+#_svntrunk=http://cvs.mythtv.org/svn/trunk/mythplugins
+_svnmod=mythplugins
+
+
+build() {
+
+ svn co $_svntrunk --config-dir ./ -r $pkgver $_svnmod
+ svn revert -R $_svnmod
+
+ cd $startdir/src/$_svnmod
+
+ echo "--------------------------applying patches----------------------------------------------------"
+ for i in `echo ${patches[@]:0} `
+ do
+ echo applying $i
+ echo "-----------------------------"
+ patch -Np0 -i ${startdir}/src/$i || return 1
+ done
+ echo "--------------------------done applying patches-----------------------------------------------"
+
+ [ "$CARCH" = "i686" ] && ARCH="i686"
+ [ "$CARCH" = "x86_64" ] && ARCH="x86-64"
+
+ # clean up
+ make distclean
+
+ # configure
+ ./configure --prefix=/usr --cpu=${ARCH} --disable-all --enable-opengl \
+ --enable-mytharchive || return 1
+
+ # build and install
+ . /etc/profile
+ make || return 1
+ make INSTALL_ROOT=$startdir/pkg install || return 1
+
+}
diff --git a/abs/core-testing/mythtv/stable.22/mythbrowser/PKGBUILD b/abs/core-testing/mythtv/stable.22/mythbrowser/PKGBUILD
new file mode 100644
index 0000000..76b1513
--- /dev/null
+++ b/abs/core-testing/mythtv/stable.22/mythbrowser/PKGBUILD
@@ -0,0 +1,51 @@
+pkgname=mythbrowser-svn
+pkgver=22783
+pkgrel=1
+pkgdesc="Mini web browser for MythTV"
+url="http://www.mythtv.org"
+license="GPL"
+arch=('i686' 'x86_64')
+
+depends=('mythtv-svn' 'wget')
+conflicts=('mythbrowser')
+groups=('mythtv-extras-svn')
+
+patches=()
+source=(`echo ${patches[@]:0}`)
+_svntrunk=http://cvs.mythtv.org/svn/branches/release-0-22-fixes/mythplugins
+#_svntrunk=http://cvs.mythtv.org/svn/trunk/mythplugins
+_svnmod=mythplugins
+
+
+build() {
+
+ svn co $_svntrunk --config-dir ./ -r $pkgver $_svnmod
+ svn revert -R $_svnmod
+
+ cd $startdir/src/$_svnmod
+
+ echo "--------------------------applying patches----------------------------------------------------"
+ for i in `echo ${patches[@]:0} `
+ do
+ echo applying $i
+ echo "-----------------------------"
+ patch -Np0 -i ${startdir}/src/$i || return 1
+ done
+ echo "--------------------------done applying patches-----------------------------------------------"
+
+ [ "$CARCH" = "i686" ] && ARCH="i686"
+ [ "$CARCH" = "x86_64" ] && ARCH="x86-64"
+
+ # clean up
+ make distclean
+
+ # configure
+ ./configure --prefix=/usr --cpu=${ARCH} --disable-all --enable-opengl \
+ --enable-mythbrowser || return 1
+
+ # build and install
+ . /etc/profile
+ make || return 1
+ make INSTALL_ROOT=$startdir/pkg install || return 1
+
+}
diff --git a/abs/core-testing/mythtv/stable.22/mythflix/PKGBUILD b/abs/core-testing/mythtv/stable.22/mythflix/PKGBUILD
new file mode 100644
index 0000000..11ff8a7
--- /dev/null
+++ b/abs/core-testing/mythtv/stable.22/mythflix/PKGBUILD
@@ -0,0 +1,51 @@
+pkgname=mythflix-svn
+pkgver=22783
+pkgrel=1
+pkgdesc="Netflix access plugin for MythTV"
+url="http://www.mythtv.org"
+license="GPL"
+arch=('i686' 'x86_64')
+
+depends=('mythtv-svn')
+conflicts=('mythflix')
+groups=('mythtv-extras-svn')
+
+patches=()
+source=(`echo ${patches[@]:0}`)
+_svntrunk=http://cvs.mythtv.org/svn/branches/release-0-22-fixes/mythplugins
+#_svntrunk=http://cvs.mythtv.org/svn/trunk/mythplugins
+_svnmod=mythplugins
+
+
+build() {
+
+ svn co $_svntrunk --config-dir ./ -r $pkgver $_svnmod
+ svn revert -R $_svnmod
+
+ cd $startdir/src/$_svnmod
+
+ echo "--------------------------applying patches----------------------------------------------------"
+ for i in `echo ${patches[@]:0} `
+ do
+ echo applying $i
+ echo "-----------------------------"
+ patch -Np0 -i ${startdir}/src/$i || return 1
+ done
+ echo "--------------------------done applying patches-----------------------------------------------"
+
+ [ "$CARCH" = "i686" ] && ARCH="i686"
+ [ "$CARCH" = "x86_64" ] && ARCH="x86-64"
+
+ # clean up
+ make distclean
+
+ # configure
+ ./configure --prefix=/usr --cpu=${ARCH} --disable-all --enable-opengl \
+ --enable-mythflix || return 1
+
+ # build and install
+ . /etc/profile
+ make || return 1
+ make INSTALL_ROOT=$startdir/pkg install || return 1
+
+}
diff --git a/abs/core-testing/mythtv/stable.22/mythgallery/PKGBUILD b/abs/core-testing/mythtv/stable.22/mythgallery/PKGBUILD
new file mode 100644
index 0000000..4583a5f
--- /dev/null
+++ b/abs/core-testing/mythtv/stable.22/mythgallery/PKGBUILD
@@ -0,0 +1,51 @@
+pkgname=mythgallery-svn
+pkgver=22783
+pkgrel=1
+pkgdesc="Image gallery plugin for MythTV"
+url="http://www.mythtv.org"
+license="GPL"
+arch=('i686' 'x86_64')
+
+depends=('mythtv-svn' 'libexif' 'libtiff')
+conflicts=('mythgallery')
+groups=('mythtv-extras-svn')
+
+patches=()
+source=(`echo ${patches[@]:0}`)
+_svntrunk=http://cvs.mythtv.org/svn/branches/release-0-22-fixes/mythplugins
+#_svntrunk=http://cvs.mythtv.org/svn/trunk/mythplugins
+_svnmod=mythplugins
+
+
+build() {
+
+ svn co $_svntrunk --config-dir ./ -r $pkgver $_svnmod
+ svn revert -R $_svnmod
+
+ cd $startdir/src/$_svnmod
+
+ echo "--------------------------applying patches----------------------------------------------------"
+ for i in `echo ${patches[@]:0} `
+ do
+ echo applying $i
+ echo "-----------------------------"
+ patch -Np0 -i ${startdir}/src/$i || return 1
+ done
+ echo "--------------------------done applying patches-----------------------------------------------"
+
+ [ "$CARCH" = "i686" ] && ARCH="i686"
+ [ "$CARCH" = "x86_64" ] && ARCH="x86-64"
+
+ # clean up
+ make distclean
+
+ # configure
+ ./configure --prefix=/usr --cpu=${ARCH} --disable-all --enable-opengl \
+ --enable-mythgallery || return 1
+
+ # build and install
+ . /etc/profile
+ make || return 1
+ make INSTALL_ROOT=$startdir/pkg install || return 1
+
+}
diff --git a/abs/core-testing/mythtv/stable.22/mythgame/PKGBUILD b/abs/core-testing/mythtv/stable.22/mythgame/PKGBUILD
new file mode 100644
index 0000000..836dbdc
--- /dev/null
+++ b/abs/core-testing/mythtv/stable.22/mythgame/PKGBUILD
@@ -0,0 +1,51 @@
+pkgname=mythgame-svn
+pkgver=22783
+pkgrel=1
+pkgdesc="Emulation plugin for MythTV"
+url="http://www.mythtv.org"
+license="GPL"
+arch=('i686' 'x86_64')
+
+depends=('mythtv-svn' 'zlib')
+conflicts=('mythgame')
+groups=('mythtv-extras-svn')
+
+patches=()
+source=(`echo ${patches[@]:0}`)
+_svntrunk=http://cvs.mythtv.org/svn/branches/release-0-22-fixes/mythplugins
+#_svntrunk=http://cvs.mythtv.org/svn/trunk/mythplugins
+_svnmod=mythplugins
+
+
+build() {
+
+ svn co $_svntrunk --config-dir ./ -r $pkgver $_svnmod
+ svn revert -R $_svnmod
+
+ cd $startdir/src/$_svnmod
+
+ echo "--------------------------applying patches----------------------------------------------------"
+ for i in `echo ${patches[@]:0} `
+ do
+ echo applying $i
+ echo "-----------------------------"
+ patch -Np0 -i ${startdir}/src/$i || return 1
+ done
+ echo "--------------------------done applying patches-----------------------------------------------"
+
+ [ "$CARCH" = "i686" ] && ARCH="i686"
+ [ "$CARCH" = "x86_64" ] && ARCH="x86-64"
+
+ # clean up
+ make distclean
+
+ # configure
+ ./configure --prefix=/usr --cpu=${ARCH} --disable-all --enable-opengl \
+ --enable-mythgame || return 1
+
+ # build and install
+ . /etc/profile
+ make || return 1
+ make INSTALL_ROOT=$startdir/pkg install || return 1
+
+}
diff --git a/abs/core-testing/mythtv/stable.22/mythmovies/PKGBUILD b/abs/core-testing/mythtv/stable.22/mythmovies/PKGBUILD
new file mode 100644
index 0000000..4e30a09
--- /dev/null
+++ b/abs/core-testing/mythtv/stable.22/mythmovies/PKGBUILD
@@ -0,0 +1,51 @@
+pkgname=mythmovies-svn
+pkgver=22783
+pkgrel=1
+pkgdesc="Displays information about movies playing in the area."
+url="http://www.mythtv.org"
+license="GPL"
+arch=('i686' 'x86_64')
+
+depends=('mythtv-svn')
+conflicts=('mythmovies')
+groups=('mythtv-extras-svn')
+
+patches=()
+source=(`echo ${patches[@]:0}`)
+_svntrunk=http://cvs.mythtv.org/svn/branches/release-0-22-fixes/mythplugins
+#_svntrunk=http://cvs.mythtv.org/svn/trunk/mythplugins
+_svnmod=mythplugins
+
+
+build() {
+
+ svn co $_svntrunk --config-dir ./ -r $pkgver $_svnmod
+ svn revert -R $_svnmod
+
+ cd $startdir/src/$_svnmod
+
+ echo "--------------------------applying patches----------------------------------------------------"
+ for i in `echo ${patches[@]:0} `
+ do
+ echo applying $i
+ echo "-----------------------------"
+ patch -Np0 -i ${startdir}/src/$i || return 1
+ done
+ echo "--------------------------done applying patches-----------------------------------------------"
+
+ [ "$CARCH" = "i686" ] && ARCH="i686"
+ [ "$CARCH" = "x86_64" ] && ARCH="x86-64"
+
+ # clean up
+ make distclean
+
+ # configure
+ ./configure --prefix=/usr --cpu=${ARCH} --disable-all --enable-opengl \
+ --enable-mythmovies || return 1
+
+ # build and install
+ . /etc/profile
+ make || return 1
+ make INSTALL_ROOT=$startdir/pkg install || return 1
+
+}
diff --git a/abs/core-testing/mythtv/stable.22/mythmusic/PKGBUILD b/abs/core-testing/mythtv/stable.22/mythmusic/PKGBUILD
new file mode 100644
index 0000000..d4faa59
--- /dev/null
+++ b/abs/core-testing/mythtv/stable.22/mythmusic/PKGBUILD
@@ -0,0 +1,54 @@
+pkgname=mythmusic-svn
+pkgver=22783
+pkgrel=1
+pkgdesc="Music playing plugin for MythTV"
+url="http://www.mythtv.org"
+license="GPL"
+arch=('i686' 'x86_64')
+
+depends=('mythtv-svn' 'libid3tag' 'libmad' 'libvorbis' 'flac>=1.1.4' 'libcdaudio' \
+ 'cdparanoia' 'fftw2' 'sdl' 'faad2>=2.6.1' 'lame' 'taglib' \
+ 'libvisual-plugins' 'libvisual-projectm')
+conflicts=('mythmusic')
+groups=('mythtv-extras-svn')
+
+patches=()
+source=(`echo ${patches[@]:0}`)
+_svntrunk=http://cvs.mythtv.org/svn/branches/release-0-22-fixes/mythplugins
+#_svntrunk=http://cvs.mythtv.org/svn/trunk/mythplugins
+_svnmod=mythplugins
+
+
+build() {
+
+ svn co $_svntrunk --config-dir ./ -r $pkgver $_svnmod
+ svn revert -R $_svnmod
+
+ cd $startdir/src/$_svnmod
+
+ echo "--------------------------applying patches----------------------------------------------------"
+ for i in `echo ${patches[@]:0} `
+ do
+ echo applying $i
+ echo "-----------------------------"
+ patch -Np0 -i ${startdir}/src/$i || return 1
+ done
+ echo "--------------------------done applying patches-----------------------------------------------"
+
+ [ "$CARCH" = "i686" ] && ARCH="i686"
+ [ "$CARCH" = "x86_64" ] && ARCH="x86-64"
+
+ # clean up
+ make distclean
+
+ # configure
+ ./configure --prefix=/usr --cpu=${ARCH} --disable-all --enable-opengl \
+ --enable-mythmusic --enable-libvisual --enable-fftw --enable-sdl \
+ --enable-aac || return 1
+
+ # build and install
+ . /etc/profile
+ make || return 1
+ make INSTALL_ROOT=$startdir/pkg install || return 1
+
+}
diff --git a/abs/core-testing/mythtv/stable.22/mythnews/PKGBUILD b/abs/core-testing/mythtv/stable.22/mythnews/PKGBUILD
new file mode 100644
index 0000000..1bcb3f0
--- /dev/null
+++ b/abs/core-testing/mythtv/stable.22/mythnews/PKGBUILD
@@ -0,0 +1,51 @@
+pkgname=mythnews-svn
+pkgver=22783
+pkgrel=1
+pkgdesc="News checking plugin for MythTV"
+url="http://www.mythtv.org"
+license="GPL"
+arch=('i686' 'x86_64')
+
+depends=('mythtv-svn')
+conflicts=('mythnews')
+groups=('mythtv-extras-svn')
+
+patches=()
+source=(`echo ${patches[@]:0}`)
+_svntrunk=http://cvs.mythtv.org/svn/branches/release-0-22-fixes/mythplugins
+#_svntrunk=http://cvs.mythtv.org/svn/trunk/mythplugins
+_svnmod=mythplugins
+
+
+build() {
+
+ svn co $_svntrunk --config-dir ./ -r $pkgver $_svnmod
+ svn revert -R $_svnmod
+
+ cd $startdir/src/$_svnmod
+
+ echo "--------------------------applying patches----------------------------------------------------"
+ for i in `echo ${patches[@]:0} `
+ do
+ echo applying $i
+ echo "-----------------------------"
+ patch -Np0 -i ${startdir}/src/$i || return 1
+ done
+ echo "--------------------------done applying patches-----------------------------------------------"
+
+ [ "$CARCH" = "i686" ] && ARCH="i686"
+ [ "$CARCH" = "x86_64" ] && ARCH="x86-64"
+
+ # clean up
+ make distclean
+
+ # configure
+ ./configure --prefix=/usr --cpu=${ARCH} --disable-all --enable-opengl \
+ --enable-mythnews || return 1
+
+ # build and install
+ . /etc/profile
+ make || return 1
+ make INSTALL_ROOT=$startdir/pkg install || return 1
+
+}
diff --git a/abs/core-testing/mythtv/stable.22/myththemes/PKGBUILD b/abs/core-testing/mythtv/stable.22/myththemes/PKGBUILD
new file mode 100755
index 0000000..d69526f
--- /dev/null
+++ b/abs/core-testing/mythtv/stable.22/myththemes/PKGBUILD
@@ -0,0 +1,50 @@
+pkgname=myththemes-svn
+pkgver=22783
+pkgrel=1
+pkgdesc="Themes for MythTV"
+url="http://www.mythtv.org"
+license="GPL"
+arch=('i686' 'x86_64')
+
+depends=('mythtv-svn')
+conflicts=('myththemes')
+groups=('mythtv-extras-svn')
+
+patches=()
+source=(`echo ${patches[@]:0}`)
+_svntrunk=http://cvs.mythtv.org/svn/branches/release-0-22-fixes/myththemes
+#_svntrunk=http://cvs.mythtv.org/svn/trunk/myththemes
+_svnmod=myththemes
+
+
+build() {
+
+ svn co $_svntrunk --config-dir ./ -r $pkgver $_svnmod
+ svn revert -R $_svnmod
+
+ cd $startdir/src/$_svnmod
+
+ echo "--------------------------applying patches----------------------------------------------------"
+ for i in `echo ${patches[@]:0} `
+ do
+ echo applying $i
+ echo "-----------------------------"
+ patch -Np0 -i ${startdir}/src/$i || return 1
+ done
+ echo "--------------------------done applying patches-----------------------------------------------"
+
+ [ "$CARCH" = "i686" ] && ARCH="i686"
+ [ "$CARCH" = "x86_64" ] && ARCH="x86-64"
+
+ # clean up
+ make distclean
+
+ # configure
+ ./configure --prefix=/usr || return 1
+
+ # build and install
+ . /etc/profile
+ make || return 1
+ make INSTALL_ROOT=$startdir/pkg install || return 1
+
+}
diff --git a/abs/core-testing/mythtv/stable.22/mythtv/PKGBUILD b/abs/core-testing/mythtv/stable.22/mythtv/PKGBUILD
new file mode 100755
index 0000000..d09bdf7
--- /dev/null
+++ b/abs/core-testing/mythtv/stable.22/mythtv/PKGBUILD
@@ -0,0 +1,92 @@
+pkgname=mythtv-release-fixes-22
+pkgver=22814
+pkgrel=1
+pkgdesc="A personal video recorder for Linux"
+url="http://www.mythtv.org"
+license="GPL"
+depends=('bash' 'mysql-clients>=5.0' 'qt' 'lame' 'lirc-utils' 'ffmpeg' \
+ 'faad2' 'libxv' 'libxvmc' 'libavc1394' 'libdc1394' 'libiec61883' \
+ 'perl-net-upnp')
+makedepends=('libgl' 'subversion')
+conflicts=('mythtv')
+replaces=()
+groups=('pvr')
+#backup=()
+#options=(!strip)
+#MAKEFLAGS="-j6"
+install='mythtv.install'
+
+patchs=()
+#patchs=('smolt_jump.patch')
+source=('mythbackend' 'myth.sh' `echo ${patchs[@]:0}` 'mythbackend.lr' 'mythfrontend.lr' 'pretty')
+arch=('i686' 'x86_64')
+#md5sums=()
+
+_svntrunk=http://cvs.mythtv.org/svn/branches/release-0-22-fixes/mythtv
+#_svntrunk=http://cvs.mythtv.org/svn/trunk/mythtv
+_svnmod=mythtv
+
+build() {
+
+ # get clean copy from SVN repo
+ svn co $_svntrunk --config-dir ./ -r $pkgver $_svnmod
+ svn revert -R $_svnmod
+
+ cd $startdir/src/mythtv
+
+ # apply patches
+ echo "--------------------------applying patches----------------------------------------------------"
+ for i in `echo ${patchs[@]:0} `
+ do
+ echo applying $i
+ echo "-----------------------------"
+ patch -Np0 -i ${startdir}/src/$i || return 1
+ done
+ echo "--------------------------done applying patches-----------------------------------------------"
+
+ sed -i -e "s/\`(svnversion \$\${SVNTREEDIR} 2>\/dev\/null) || echo Unknown\`/$pkgver/" version.pro
+
+ [ "$CARCH" = "i686" ] && ARCH="i686"
+ [ "$CARCH" = "x86_64" ] && ARCH="x86-64"
+
+ # clean up from last build
+ make distclean
+
+ # configure
+ ./configure --prefix=/usr --arch=${ARCH} \
+ --disable-vdpau --disable-xvmc --disable-xvmc-pro \
+ --enable-opengl-vsync --enable-libfaad --enable-dvb --enable-firewire \
+ --compile-type=release --with-bindings=perl,python \
+ --enable-audio-alsa --disable-audio-jack --disable-audio-arts || return 1
+
+ # build and install
+ . /etc/profile
+ make || return 1
+ make INSTALL_ROOT=$startdir/pkg install || return 1
+
+ # install db schema, scripts and docs
+ install -m0644 database/mc.sql $startdir/pkg/usr/share/mythtv/ || return 1
+ install -D -m0755 ../mythbackend $startdir/pkg/etc/rc.d/mythbackend || return 1
+ cp -r docs $startdir/pkg/usr/share/mythtv/ || return 1
+ # cp ../QUICKSTART.archlinux $startdir/pkg/usr/share/mythtv/ || return 1
+
+ # install contrib
+ cp -r contrib $startdir/pkg/usr/share/mythtv/ || return 1
+
+ # patch the xml LinHES style
+ cp -r $startdir/menu-xml/*.xml $startdir/pkg/usr/share/mythtv/themes/defaultmenu/
+ cd $startdir/pkg/usr/share/mythtv/themes/defaultmenu
+ patch -p0 < $startdir/menu-xml/mainmenu.xml.patch || return 1
+ patch -p0 < $startdir/menu-xml/optical_menu.xml.patch || return 1
+ patch -p0 < $startdir/menu-xml/library.xml.patch || return 1
+ patch -p0 < $startdir/menu-xml/util_menu.xml.patch || return 1
+
+ # make log dir
+ mkdir -p $startdir/pkg/var/log/mythtv
+ chown 1000.1000 $startdir/pkg/var/log/mythtv
+ mkdir -p $startdir/pkg/etc/logrotate.d
+ cp $startdir/src/*.lr $startdir/pkg/etc/logrotate.d
+ mkdir -p $startdir/pkg/etc/cron.hourly/
+ install -m0755 $startdir/src/pretty $startdir/pkg/etc/cron.hourly/
+}
+
diff --git a/abs/core-testing/mythtv/stable.22/mythtv/menu-xml/HOST_SETTINGS.xml b/abs/core-testing/mythtv/stable.22/mythtv/menu-xml/HOST_SETTINGS.xml
new file mode 100644
index 0000000..ac52497
--- /dev/null
+++ b/abs/core-testing/mythtv/stable.22/mythtv/menu-xml/HOST_SETTINGS.xml
@@ -0,0 +1,94 @@
+<mythmenu name="HOST_SETTINGS">
+
+ <button>
+ <type>MV_NETWORK_SETUP_MENU</type>
+ <text>Network Settings</text>
+ <action>EXEC mythinstall -s network </action>
+ </button>
+
+ <button>
+ <type>MV_NETWORK_SETUP_MENU</type>
+ <text>DDNS Settings</text>
+ <action>EXEC mythinstall -s ddns </action>
+ </button>
+ <button>
+ <type>MV_SYSTEM_SETUP_MENU</type>
+ <text>System Type</text>
+ <action>EXEC mythinstall -s hostype </action>
+ </button>
+
+ <button>
+ <type>MV_SCREENSAVER_SETUP_MENU</type>
+ <text>Screensaver Settings</text>
+ <action>EXEC mythinstall -s screensaver </action>
+ </button>
+
+ <button>
+ <type>MV_IR_SETUP_MENU</type>
+ <text>Remotes</text>
+ <action>EXEC mythinstall -s ir </action>
+ </button>
+
+ <button>
+ <type>MV_MISC_SETUP_MENU</type>
+ <text>Miscellanous Settings</text>
+ <action>EXEC mythinstall -s misc </action>
+ </button>
+
+ <button>
+ <type>MV_SOFTWARE_MENU</type>
+ <text>Software</text>
+ <action>EXEC mythinstall -s plugins </action>
+ </button>
+
+ <button>
+ <type>MV_SHUTDOWN_SETUP_MENU</type>
+ <text>Shutdown Settings</text>
+ <action>EXEC mythinstall -s sleep </action>
+ </button>
+
+ <button>
+ <type>MV_ADVANCED_X_SETUP_MENU</type>
+ <text>Display Settings</text>
+ <action>EXEC mythinstall -s advancedX</action>
+ </button>
+
+ <button>
+ <type>MV_ADVANCED_SETUP_MENU</type>
+ <text>Advanced Settings</text>
+ <action>EXEC mythinstall -s advanced</action>
+ </button>
+
+ <button>
+ <type>MV_AUDIO_SETUP_MENU</type>
+ <text>Audio Settings</text>
+ <action>EXEC mythinstall -s sound </action>
+ </button>
+
+ <button>
+ <type>MV_ACCESS_SETUP_MENU</type>
+ <text>Access Control</text>
+ <action>EXEC mythinstall -s accesscontrol </action>
+ </button>
+
+ <button>
+ <type>MV_USER_SETUP_MENU</type>
+ <text>User Accounts</text>
+ <action>EXEC mythinstall -s user </action>
+ </button>
+
+ <button>
+ <type>MV_WEBACCESS_SETUP_MENU</type>
+ <text>Web Security</text>
+ <action>EXEC mythinstall -s webuser </action>
+ </button>
+
+ <!--
+ <button>
+ <type>SETUP_MENU</type>
+ <text>Settings Profile Manager</text>
+ <action>EXEC mythinstall -t </action>
+ </button>
+ -->
+
+</mythmenu>
diff --git a/abs/core-testing/mythtv/stable.22/mythtv/menu-xml/is.xml b/abs/core-testing/mythtv/stable.22/mythtv/menu-xml/is.xml
new file mode 100644
index 0000000..88b7e6b
--- /dev/null
+++ b/abs/core-testing/mythtv/stable.22/mythtv/menu-xml/is.xml
@@ -0,0 +1,3 @@
+<mythmenu name="Internet Steams">
+
+</mythmenu>
diff --git a/abs/core-testing/mythtv/stable.22/mythtv/menu-xml/library.xml.patch b/abs/core-testing/mythtv/stable.22/mythtv/menu-xml/library.xml.patch
new file mode 100644
index 0000000..81ea604
--- /dev/null
+++ b/abs/core-testing/mythtv/stable.22/mythtv/menu-xml/library.xml.patch
@@ -0,0 +1,12 @@
+--- library.xml.orig 2009-10-16 12:45:44.000000000 +0000
++++ library.xml 2009-10-16 17:21:44.000000000 +0000
+@@ -123,8 +123,7 @@
+ <text lang="HU">Online folyam lejátszása</text>
+ <description></description>
+ <description lang="DE"></description>
+- <action>PLUGIN mythstream</action>
+- <depends>mythstream</depends>
++ <action>MENU is.xml</action>
+ </button>
+
+ <button>
diff --git a/abs/core-testing/mythtv/stable.22/mythtv/menu-xml/linhes.xml b/abs/core-testing/mythtv/stable.22/mythtv/menu-xml/linhes.xml
new file mode 100644
index 0000000..ebc848b
--- /dev/null
+++ b/abs/core-testing/mythtv/stable.22/mythtv/menu-xml/linhes.xml
@@ -0,0 +1,59 @@
+<mythmenu name="LinHES">
+
+ <button>
+ <type>SETUP_GENERAL</type>
+ <text>MythTV Configuration</text>
+ <text lang="IT">Impostazioni</text>
+ <text lang="ES">Configuración</text>
+ <text lang="DE">Zubehör / Konfiguration</text>
+ <text lang="DA">Tilbehør/Indstillinger</text>
+ <text lang="IS">Uppsetning</text>
+ <text lang="NL">Configuratie</text>
+ <text lang="PT">Utensílios</text>
+ <text lang="SV">Verktyg / Inställningar</text>
+ <text lang="JA">設å®~Z</text>
+ <text lang="FI">Oheis/Asetukset</text>
+ <text lang="ZH_TW">å·¥å~E·/設å®~Z</text>
+ <text lang="SL">Nastavitve</text>
+ <text lang="ET">Utiliidid / sätted</text>
+ <text lang="RU">УÑ~BилиÑ~BÑ~K / Ð~]аÑ~AÑ~BÑ~@ойки</text>
+ <text lang="AR">تضبÙ~Jطات</text>
+ <text lang="PL">NarzÄ~Ydzia / ustawienia</text>
+ <text lang="HE">×¢×~Vר×~Y×~] / ×~T×~R×~Sר×~Uת</text>
+ <text lang="HU">Eszközök / Beállítások</text>
+ <alttext lang="DE">Verschiedenes</alttext>
+ <alttext lang="SV">Inställningar</alttext>
+ <alttext lang="ET">Sätted</alttext>
+ <alttext lang="RU">Ð~]аÑ~AÑ~BÑ~@ойки</alttext>
+ <alttext lang="AR">تضبÙ~Jطات</alttext>
+ <description>Configure MythTV and plugins</description>
+ <description lang="DE">MythTV und Plugins konfigurieren</description>
+ <action>MENU util_menu.xml</action>
+ </button>
+
+ <button>
+ <type>LINHES_SETUP</type>
+ <text>LinHES Configuration</text>
+ <action>MENU HOST_SETTINGS.xml</action>
+ </button>
+
+ <button>
+ <type>BACKUP</type>
+ <text>Backup LinHES</text>
+ <action>MENU mythbackup.xml</action>
+ </button>
+
+ <button>
+ <type>RESTORE</type>
+ <text>Restore LinHES</text>
+ <action>MENU mythrestore.xml</action>
+ </button>
+
+<!--#Check for updates-->
+ <button>
+ <type>UPGRADE</type>
+ <text>Upgrade LinHES</text>
+ <action>MENU update.xml</action>
+ </button>
+<!--#Check for updates-->
+</mythmenu>
diff --git a/abs/core-testing/mythtv/stable.22/mythtv/menu-xml/mainmenu.xml.patch b/abs/core-testing/mythtv/stable.22/mythtv/menu-xml/mainmenu.xml.patch
new file mode 100644
index 0000000..ed5dc72
--- /dev/null
+++ b/abs/core-testing/mythtv/stable.22/mythtv/menu-xml/mainmenu.xml.patch
@@ -0,0 +1,39 @@
+--- mainmenu.xml.orig 2009-10-16 12:45:44.000000000 +0000
++++ mainmenu.xml 2009-10-16 14:30:57.000000000 +0000
+@@ -157,33 +157,9 @@
+
+ <button>
+ <type>MENU_UTILITIES_SETUP</type>
+- <text>Utilities / Setup</text>
+- <text lang="IT">Impostazioni</text>
+- <text lang="ES">Configuración</text>
+- <text lang="DE">Zubehör / Konfiguration</text>
+- <text lang="DA">Tilbehør/Indstillinger</text>
+- <text lang="IS">Uppsetning</text>
+- <text lang="NL">Configuratie</text>
+- <text lang="PT">Utensílios</text>
+- <text lang="SV">Verktyg / Inställningar</text>
+- <text lang="JA">設定</text>
+- <text lang="FI">Oheis/Asetukset</text>
+- <text lang="ZH_TW">工具/設定</text>
+- <text lang="SL">Nastavitve</text>
+- <text lang="ET">Utiliidid / sätted</text>
+- <text lang="RU">Утилиты / ÐаÑтройки</text>
+- <text lang="AR">تضبيطات</text>
+- <text lang="PL">Narzędzia / ustawienia</text>
+- <text lang="HE">×¢×–×¨×™× / הגדרות</text>
+- <text lang="HU">Eszközök / Beállítások</text>
+- <alttext lang="DE">Verschiedenes</alttext>
+- <alttext lang="SV">Inställningar</alttext>
+- <alttext lang="ET">Sätted</alttext>
+- <alttext lang="RU">ÐаÑтройки</alttext>
+- <alttext lang="AR">تضبيطات</alttext>
+- <description>Configure MythTV and plugins</description>
+- <description lang="DE">MythTV und Plugins konfigurieren</description>
+- <action>MENU util_menu.xml</action>
++ <text>Service Menu</text>
++ <description>LinHES Service Menu</description>
++ <action>MENU linhes.xml</action>
+ </button>
+
+ <!-- <button>
diff --git a/abs/core-testing/mythtv/stable.22/mythtv/menu-xml/mythbackup.xml b/abs/core-testing/mythtv/stable.22/mythtv/menu-xml/mythbackup.xml
new file mode 100644
index 0000000..5914b33
--- /dev/null
+++ b/abs/core-testing/mythtv/stable.22/mythtv/menu-xml/mythbackup.xml
@@ -0,0 +1,20 @@
+<mythmenu name="LinHES">
+
+ <button>
+ <type>BACKUP</type>
+ <text>Do you wish to backup?</text>
+ <action>NONE</action>
+ </button>
+
+ <button>
+ <type>BACKUP</type>
+ <text>Yes</text>
+ <action>EXEC sudo /usr/LH/bin/mythbackup</action>
+ </button>
+
+ <button>
+ <type>BACKUP</type>
+ <text>No</text>
+ <action>UPMENU</action>
+ </button>
+</mythmenu>
diff --git a/abs/core-testing/mythtv/stable.22/mythtv/menu-xml/mythrestore.xml b/abs/core-testing/mythtv/stable.22/mythtv/menu-xml/mythrestore.xml
new file mode 100644
index 0000000..8f5c285
--- /dev/null
+++ b/abs/core-testing/mythtv/stable.22/mythtv/menu-xml/mythrestore.xml
@@ -0,0 +1,20 @@
+<mythmenu name="LinHES">
+
+ <button>
+ <type>RESTORE</type>
+ <text>Do you wish to restore?</text>
+ <action>NONE</action>
+ </button>
+
+ <button>
+ <type>RESTORE</type>
+ <text>Yes</text>
+ <action>EXEC sudo /usr/LH/bin/mythrestore</action>
+ </button>
+
+ <button>
+ <type>BACKUP</type>
+ <text>No</text>
+ <action>UPMENU</action>
+ </button>
+</mythmenu>
diff --git a/abs/core-testing/mythtv/stable.22/mythtv/menu-xml/optical_menu.xml.patch b/abs/core-testing/mythtv/stable.22/mythtv/menu-xml/optical_menu.xml.patch
new file mode 100644
index 0000000..b4b1411
--- /dev/null
+++ b/abs/core-testing/mythtv/stable.22/mythtv/menu-xml/optical_menu.xml.patch
@@ -0,0 +1,16 @@
+--- optical_menu.xml.orig 2009-03-23 20:05:43.000000000 +0000
++++ optical_menu.xml 2009-03-23 20:10:02.000000000 +0000
+@@ -134,6 +134,13 @@
+ </button>
+
+ <button>
++ <type>DVD_RIP</type>
++ <text>Import video files from DVD</text>
++ <description>Import video files from a data DVD</description>
++ <action>EXEC /usr/LH/bin/importfiles.sh</action>
++ </button>
++
++ <button>
+ <type>EJECT</type>
+ <text>Eject media</text>
+ <text lang="IT">Espelli Media</text>
diff --git a/abs/core-testing/mythtv/stable.22/mythtv/menu-xml/original/create_patch.sh b/abs/core-testing/mythtv/stable.22/mythtv/menu-xml/original/create_patch.sh
new file mode 100755
index 0000000..34d8b8c
--- /dev/null
+++ b/abs/core-testing/mythtv/stable.22/mythtv/menu-xml/original/create_patch.sh
@@ -0,0 +1,5 @@
+#!/bin/bash
+for i in *.xml
+do
+ diff -u $i.orig $i > ../$i.patch
+done
diff --git a/abs/core-testing/mythtv/stable.22/mythtv/menu-xml/setup.xml b/abs/core-testing/mythtv/stable.22/mythtv/menu-xml/setup.xml
new file mode 100644
index 0000000..f56bb6f
--- /dev/null
+++ b/abs/core-testing/mythtv/stable.22/mythtv/menu-xml/setup.xml
@@ -0,0 +1,111 @@
+<mythmenu name="MAIN">
+
+ <button>
+ <type>SETUP_GENERAL</type>
+ <text>1. General</text>
+ <text lang="IT">1. Generale</text>
+ <text lang="PT">1. Geral</text>
+ <text lang="SV">1. Generellt</text>
+ <text lang="JA">1. 一般</text>
+ <text lang="DE">1. Allgemeines</text>
+ <text lang="FI">1. Yleiset</text>
+ <text lang="FR">1. Général</text>
+ <text lang="SI">1. Splošno</text>
+ <text lang="ET">1. Ãœldine</text>
+ <text lang="NB">1 Generelt</text>
+ <text lang="DK">1. Generelt</text>
+ <text lang="ES">1. General</text>
+ <text lang="CZ">1. Obecný</text>
+ <text lang="RU">1. Общие</text>
+ <action>GENERAL</action>
+ </button>
+
+ <button>
+ <type>SETUP_CAPTURE_CARDS</type>
+ <text>2. Capture cards</text>
+ <text lang="IT">2. Schede di Acquisizione</text>
+ <text lang="PT">2. Placas de Captura</text>
+ <text lang="SV">2. TV-kort</text>
+ <text lang="JA">2. キャプãƒãƒ£ã‚«ãƒ¼ãƒ‰</text>
+ <text lang="DE">2. TV-Karten</text>
+ <text lang="FI">2. TV-kortit</text>
+ <text lang="FR">2. Cartes d'acquisition</text>
+ <text lang="SI">2. Kartice za zajem</text>
+ <text lang="ET">2. TV-kaardid</text>
+ <text lang="NB">2 TV-kort</text>
+ <text lang="DK">2. TV-kort</text>
+ <text lang="ES">2. Capturadoras</text>
+ <text lang="CZ">2. Zachytávací karty</text>
+ <text lang="RU">2. Карты захвата</text>
+ <action>CAPTURE CARDS</action>
+ </button>
+
+ <button>
+ <type>SETUP_VIDEO_SOURCES</type>
+ <text>3. Video sources</text>
+ <text lang="IT">3. Fonte Video</text>
+ <text lang="PT">3. Fontes de Vídeo</text>
+ <text lang="SV">3. Videokällor</text>
+ <text lang="JA">3. ビデオソース</text>
+ <text lang="DE">3. Videoquellen</text>
+ <text lang="FI">3. Kuvanlähteet</text>
+ <text lang="FR">3. Sources vidéo</text>
+ <text lang="SI">3. Video viri</text>
+ <text lang="ET">3. Videosisendid</text>
+ <text lang="NB">3 Videokilder</text>
+ <text lang="DK">3. Videokilder</text>
+ <text lang="ES">3. Fuentes de Vídeo</text>
+ <text lang="CZ">3. Zdroje obrazu</text>
+ <text lang="RU">3. Видео иÑточники</text>
+ <action>VIDEO SOURCES</action>
+ </button>
+
+ <button>
+ <type>SETUP_INPUT_CONNECTIONS</type>
+ <text>4. Input connections</text>
+ <text lang="IT">4. Connessioni di Ingresso</text>
+ <text lang="PT">4. Ligações de Entrada</text>
+ <text lang="SV">4. Anslutningar</text>
+ <text lang="JA">4. 入力ã¨ã‚½ãƒ¼ã‚¹ã®æŽ¥ç¶š</text>
+ <text lang="DE">4. Verknüpfungen</text>
+ <text lang="FI">4. Sisääntuloasetukset</text>
+ <text lang="FR">4. Entrées Vidéos</text>
+ <text lang="SI">4. Vhodne povezave</text>
+ <text lang="ET">4. Sisendite ühendused</text>
+ <text lang="NB">4 Inndata</text>
+ <text lang="DK">4. Indgange</text>
+ <text lang="ES">4. Conexiones</text>
+ <text lang="CZ">4. Připojení vstupů</text>
+ <text lang="RU">4. Соединение входов</text>
+ <action>CARD INPUTS</action>
+ </button>
+
+ <button>
+ <type>SETUP_CHANNEL_EDITOR</type>
+ <text>5. Channel Editor</text>
+ <text lang="IT">5. Modifica Canali</text>
+ <text lang="SV">5. Kanaleditor</text>
+ <text lang="JA">5. ãƒãƒ£ãƒ³ãƒãƒ«è¨­å®š</text>
+ <text lang="DE">5. Sender bearbeiten</text>
+ <text lang="FI">5. Kanavanviritys</text>
+ <text lang="FR">5. Editeur de chaînes</text>
+ <text lang="SI">5. Urejanje kanalov</text>
+ <text lang="ET">5. Kanaliredaktor</text>
+ <text lang="NB">5 Kanalredigerer</text>
+ <text lang="DK">5. Kanal opsætning</text>
+ <text lang="ES">5. Editor Canales</text>
+ <text lang="CZ">5. Editor kanálů</text>
+ <text lang="RU">5. Редактор каналов</text>
+ <action>CHANNEL EDITOR</action>
+ </button>
+
+ <button>
+ <type>SETUP_STORAGE_GROUPS</type>
+ <text>6. Storage Directories</text>
+ <text lang="IT">6. Cartelle</text>
+ <text lang="FI">Tallennusryhmät</text>
+ <text lang="SV">Lagringsgrupper</text>
+ <action>STORAGE GROUPS</action>
+ </button>
+
+</mythmenu>
diff --git a/abs/core-testing/mythtv/stable.22/mythtv/menu-xml/siriusmenu.xml b/abs/core-testing/mythtv/stable.22/mythtv/menu-xml/siriusmenu.xml
new file mode 100644
index 0000000..e317b36
--- /dev/null
+++ b/abs/core-testing/mythtv/stable.22/mythtv/menu-xml/siriusmenu.xml
@@ -0,0 +1,419 @@
+<mythmenu name="SIRIUS">
+ <button>
+ <type>MUSIC</type>
+ <text>Sirius Hits 1</text>
+ <action>EXEC /usr/bin/cliSipie siriushits1</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>StarLite</text>
+ <action>EXEC /usr/bin/cliSipie starlite</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Sirius Love</text>
+ <action>EXEC /usr/bin/cliSipie siriuslove</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Movin EZ</text>
+ <action>EXEC /usr/bin/cliSipie movineasy</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Sirius Gold</text>
+ <action>EXEC /usr/bin/cliSipie siriusgold</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>'60s Vibrations</text>
+ <action>EXEC /usr/bin/cliSipie 60svibrations</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Totally '70s</text>
+ <action>EXEC /usr/bin/cliSipie totally70s</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Big '80s</text>
+ <action>EXEC /usr/bin/cliSipie big80s</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>ThePulse</text>
+ <action>EXEC /usr/bin/cliSipie thepulse</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Bridge</text>
+ <action>EXEC /usr/bin/cliSipie thebridge</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>BBC Radio 1</text>
+ <action>EXEC /usr/bin/cliSipie bbcradio1</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Super Shuffle</text>
+ <action>EXEC /usr/bin/cliSipie supershuffle</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Elvis Radio</text>
+ <action>EXEC /usr/bin/cliSipie elvisradio</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Classic Vinyl</text>
+ <action>EXEC /usr/bin/cliSipie classicvinyl</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Classic Rewind</text>
+ <action>EXEC /usr/bin/cliSipie classicrewind</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>TheVault</text>
+ <action>EXEC /usr/bin/cliSipie thevault</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Jam_ON</text>
+ <action>EXEC /usr/bin/cliSipie jamon</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Spectrum</text>
+ <action>EXEC /usr/bin/cliSipie thespectrum</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>BuzzSaw</text>
+ <action>EXEC /usr/bin/cliSipie buzzsaw</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Octane</text>
+ <action>EXEC /usr/bin/cliSipie octane</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Alt Nation</text>
+ <action>EXEC /usr/bin/cliSipie altnation</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>1st Wave</text>
+ <action>EXEC /usr/bin/cliSipie firstwave</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Hair Nation</text>
+ <action>EXEC /usr/bin/cliSipie hairnation</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>'90s Alternative</text>
+ <action>EXEC /usr/bin/cliSipie 90salternative</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Garage</text>
+ <action>EXEC /usr/bin/cliSipie undergroundgarage</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Left of Center</text>
+ <action>EXEC /usr/bin/cliSipie leftofcenter</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Hard Attack</text>
+ <action>EXEC /usr/bin/cliSipie hardattack</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Faction</text>
+ <action>EXEC /usr/bin/cliSipie faction</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Punk</text>
+ <action>EXEC /usr/bin/cliSipie punk</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>The Coffee House</text>
+ <action>EXEC /usr/bin/cliSipie coffeehouse</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Margaritaville</text>
+ <action>EXEC /usr/bin/cliSipie radiomargaritaville</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Sirius Disorder</text>
+ <action>EXEC /usr/bin/cliSipie siriusdisorder</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Reggae</text>
+ <action>EXEC /usr/bin/cliSipie reggaerhythms</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Area 33</text>
+ <action>EXEC /usr/bin/cliSipie area33</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Boombox</text>
+ <action>EXEC /usr/bin/cliSipie boombox</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Chill</text>
+ <action>EXEC /usr/bin/cliSipie chill</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>The Beat</text>
+ <action>EXEC /usr/bin/cliSipie thebeat</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Strobe</text>
+ <action>EXEC /usr/bin/cliSipie thestrobe</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Hip-Hop Nation</text>
+ <action>EXEC /usr/bin/cliSipie hiphopnation</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>BackSpin</text>
+ <action>EXEC /usr/bin/cliSipie backspin</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Shade 45</text>
+ <action>EXEC /usr/bin/cliSipie shade45</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Hot Jamz</text>
+ <action>EXEC /usr/bin/cliSipie hotjamz</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Heart &amp; Soul</text>
+ <action>EXEC /usr/bin/cliSipie heartandsoul</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>SoulTown</text>
+ <action>EXEC /usr/bin/cliSipie soultown</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>New Country</text>
+ <action>EXEC /usr/bin/cliSipie newcountry</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Prime Country</text>
+ <action>EXEC /usr/bin/cliSipie primecountry</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Roadhouse</text>
+ <action>EXEC /usr/bin/cliSipie theroadhouse</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Outlaw Country</text>
+ <action>EXEC /usr/bin/cliSipie outlawcountry</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Bluegrass</text>
+ <action>EXEC /usr/bin/cliSipie bluegrass</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Spirit</text>
+ <action>EXEC /usr/bin/cliSipie spirit</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Praise</text>
+ <action>EXEC /usr/bin/cliSipie praise</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Planet Jazz</text>
+ <action>EXEC /usr/bin/cliSipie planetjazz</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>JazzCafe</text>
+ <action>EXEC /usr/bin/cliSipie jazzcafe</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>PureJazz</text>
+ <action>EXEC /usr/bin/cliSipie purejazz</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Spa 73</text>
+ <action>EXEC /usr/bin/cliSipie spa73</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Blues</text>
+ <action>EXEC /usr/bin/cliSipie siriusblues</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Siriusly Sinatra</text>
+ <action>EXEC /usr/bin/cliSipie siriuslysinatra</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Broadway's Best</text>
+ <action>EXEC /usr/bin/cliSipie broadwaysbest</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Symphony Hall</text>
+ <action>EXEC /usr/bin/cliSipie symphonyhall</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Met Opera Radio</text>
+ <action>EXEC /usr/bin/cliSipie metropolitanopera</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Sirius Pops</text>
+ <action>EXEC /usr/bin/cliSipie siriuspops</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Universo Latino</text>
+ <action>EXEC /usr/bin/cliSipie universolatino</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Rumbon</text>
+ <action>EXEC /usr/bin/cliSipie rumbon</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Martha Stewart</text>
+ <action>EXEC /usr/bin/cliSipie marthastewartlivingradio</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Sirius Stars</text>
+ <action>EXEC /usr/bin/cliSipie siriusstars</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>OutQ Gay Radio</text>
+ <action>EXEC /usr/bin/cliSipie siriusoutq</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Patriot</text>
+ <action>EXEC /usr/bin/cliSipie siriuspatriot</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Left</text>
+ <action>EXEC /usr/bin/cliSipie siriusleft</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>CNN</text>
+ <action>EXEC /usr/bin/cliSipie cnn</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>wrn</text>
+ <action>EXEC /usr/bin/cliSipie wrn</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Blue Collar Comedy</text>
+ <action>EXEC /usr/bin/cliSipie bluecollarcomedy</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Raw Dog Comedy</text>
+ <action>EXEC /usr/bin/cliSipie rawdog</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Laugh Break Comedy</text>
+ <action>EXEC /usr/bin/cliSipie laughbreak</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>thefoxxhole</text>
+ <action>EXEC /usr/bin/cliSipie thefoxxhole</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>lime</text>
+ <action>EXEC /usr/bin/cliSipie lime</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Kids Stuff</text>
+ <action>EXEC /usr/bin/cliSipie kidsstuff</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Catholic Channel</text>
+ <action>EXEC /usr/bin/cliSipie thecatholicchannel</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>EWTN</text>
+ <action>EXEC /usr/bin/cliSipie ewtnglobal</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>christiantalk</text>
+ <action>EXEC /usr/bin/cliSipie christiantalk</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Sirius NFL Radio</text>
+ <action>EXEC /usr/bin/cliSipie siriusnflradio</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Maxim Radio</text>
+ <action>EXEC /usr/bin/cliSipie maximradio</action>
+ </button>
+ <button>
+ <type>MUSIC</type>
+ <text>Cosmo Radio</text>
+ <action>EXEC /usr/bin/cliSipie cosmopolitanradio</action>
+ </button>
+ <button>
+ <type>TV_DELETE</type>
+ <text>Stop Listening</text>
+ <action>EXEC /usr/bin/sipie_kill</action>
+ </button>
+
+</mythmenu>
+
diff --git a/abs/core-testing/mythtv/stable.22/mythtv/menu-xml/update.xml b/abs/core-testing/mythtv/stable.22/mythtv/menu-xml/update.xml
new file mode 100644
index 0000000..5b28833
--- /dev/null
+++ b/abs/core-testing/mythtv/stable.22/mythtv/menu-xml/update.xml
@@ -0,0 +1,20 @@
+<mythmenu name="LinHES">
+
+ <button>
+ <type>UPGRADE</type>
+ <text>Check for updates?</text>
+ <action>NONE</action>
+ </button>
+
+ <button>
+ <type>UPGRADE</type>
+ <text>Yes</text>
+ <action>EXEC sudo /usr/LH/bin/linhes_update.sh</action>
+ </button>
+
+ <button>
+ <type>UPGRADE</type>
+ <text>No</text>
+ <action>UPMENU</action>
+ </button>
+</mythmenu>
diff --git a/abs/core-testing/mythtv/stable.22/mythtv/menu-xml/update2.xml b/abs/core-testing/mythtv/stable.22/mythtv/menu-xml/update2.xml
new file mode 100644
index 0000000..2ab82ea
--- /dev/null
+++ b/abs/core-testing/mythtv/stable.22/mythtv/menu-xml/update2.xml
@@ -0,0 +1,26 @@
+<mythmenu name="LinHES">
+
+ <button>
+ <type>UPGRADE</type>
+ <text>Perform updates?</text>
+ <action>NONE</action>
+ </button>
+
+ <button>
+ <type>UPGRADE</type>
+ <text>Yes</text>
+ <action>EXEC sudo /usr/LH/bin/linhes_update2.sh</action>
+ </button>
+
+ <button>
+ <type>UPGRADE</type>
+ <text>No</text>
+ <action>UPMENU</action>
+ </button>
+
+ <button>
+ <type>UPGRADE</type>
+ <text>View files to be upgraded.</text>
+ <action>EXEC sudo /usr/LH/bin/linhes_update3.sh</action>
+ </button>
+</mythmenu>
diff --git a/abs/core-testing/mythtv/stable.22/mythtv/menu-xml/util_menu.xml.patch b/abs/core-testing/mythtv/stable.22/mythtv/menu-xml/util_menu.xml.patch
new file mode 100644
index 0000000..3a1072a
--- /dev/null
+++ b/abs/core-testing/mythtv/stable.22/mythtv/menu-xml/util_menu.xml.patch
@@ -0,0 +1,16 @@
+--- util_menu.xml.orig 2009-03-23 18:43:18.000000000 +0000
++++ util_menu.xml 2009-03-23 20:16:56.000000000 +0000
+@@ -56,6 +56,13 @@
+ </button>
+
+ <button>
++ <type>VIDEO_SCREENSHOOTER</type>
++ <text>Thumbnail Generator</text>
++ <description>Generate thumbnail images for videos</description>
++ <action>EXEC /usr/LH/bin/shootscreens-mythtv.sh</action>
++ </button>
++
++ <button>
+ <type>SETUP_KEYS</type>
+ <text>Edit Keys</text>
+ <text lang="IT">Modifica Tasti</text>
diff --git a/abs/core-testing/mythtv/stable.22/mythtv/menu-xml/xmmenu.xml b/abs/core-testing/mythtv/stable.22/mythtv/menu-xml/xmmenu.xml
new file mode 100644
index 0000000..6b26d11
--- /dev/null
+++ b/abs/core-testing/mythtv/stable.22/mythtv/menu-xml/xmmenu.xml
@@ -0,0 +1,574 @@
+<!-- Current as of April 25, 2007 -->
+<mythmenu name="XM">
+
+ <button>
+ <type>MUSIC</type>
+ <text>The '40s</text>
+ <action>EXEC /usr/bin/xamp kill 4</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>The '50s</text>
+ <action>EXEC /usr/bin/xamp kill 5</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>The '60s</text>
+ <action>EXEC /usr/bin/xamp kill 6</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>The '70s</text>
+ <action>EXEC /usr/bin/xamp kill 7</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>The '80s</text>
+ <action>EXEC /usr/bin/xamp kill 8</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>The '90s</text>
+ <action>EXEC /usr/bin/xamp kill 9</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>America</text>
+ <action>EXEC /usr/bin/xamp kill 10</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>X Country</text>
+ <action>EXEC /usr/bin/xamp kill 12</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>Willie's Place</text>
+ <action>EXEC /usr/bin/xamp kill 13</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>Bluegrass Junction</text>
+ <action>EXEC /usr/bin/xamp kill 14</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>The Village</text>
+ <action>EXEC /usr/bin/xamp kill 15</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>Highway 16</text>
+ <action>EXEC /usr/bin/xamp kill 16</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>US Country</text>
+ <action>EXEC /usr/bin/xamp kill 17</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>20 on 20</text>
+ <action>EXEC /usr/bin/xamp kill 20</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>The Heart</text>
+ <action>EXEC /usr/bin/xamp kill 23</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>The Blend</text>
+ <action>EXEC /usr/bin/xamp kill 25</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>Flight 26</text>
+ <action>EXEC /usr/bin/xamp kill 26</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>Cinemagic</text>
+ <action>EXEC /usr/bin/xamp kill 27</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>On Broadway</text>
+ <action>EXEC /usr/bin/xamp kill 28</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>U-Pop</text>
+ <action>EXEC /usr/bin/xamp kill 29</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>XM Hitlist</text>
+ <action>EXEC /usr/bin/xamp kill 30</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>Torch</text>
+ <action>EXEC /usr/bin/xamp kill 31</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>The Message</text>
+ <action>EXEC /usr/bin/xamp kill 32</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>Spirit</text>
+ <action>EXEC /usr/bin/xamp kill 33</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>enLighten</text>
+ <action>EXEC /usr/bin/xamp kill 34</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>Deep Tracks</text>
+ <action>EXEC /usr/bin/xamp kill 40</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>Boneyard</text>
+ <action>EXEC /usr/bin/xamp kill 41</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>XM Liquid Metal</text>
+ <action>EXEC /usr/bin/xamp kill 42</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>XMU</text>
+ <action>EXEC /usr/bin/xamp kill 43</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>Fred</text>
+ <action>EXEC /usr/bin/xamp kill 44</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>XM Cafe</text>
+ <action>EXEC /usr/bin/xamp kill 45</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>Top Tracks</text>
+ <action>EXEC /usr/bin/xamp kill 46</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>Ethel</text>
+ <action>EXEC /usr/bin/xamp kill 47</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>Squizz</text>
+ <action>EXEC /usr/bin/xamp kill 48</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>Big Tracks</text>
+ <action>EXEC /usr/bin/xamp kill 49</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>The Loft</text>
+ <action>EXEC /usr/bin/xamp kill 50</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>XM Music Lab</text>
+ <action>EXEC /usr/bin/xamp kill 51</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>The Verge</text>
+ <action>EXEC /usr/bin/xamp kill 52</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>Fungus</text>
+ <action>EXEC /usr/bin/xamp kill 53</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>Lucy</text>
+ <action>EXEC /usr/bin/xamp kill 54</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>Soul Street</text>
+ <action>EXEC /usr/bin/xamp kill 60</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>The Flow</text>
+ <action>EXEC /usr/bin/xamp kill 61</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>Suite 62</text>
+ <action>EXEC /usr/bin/xamp kill 62</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>The Groove</text>
+ <action>EXEC /usr/bin/xamp kill 64</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>The Rhyme</text>
+ <action>EXEC /usr/bin/xamp kill 65</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>RAW</text>
+ <action>EXEC /usr/bin/xamp kill 66</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>The City</text>
+ <action>EXEC /usr/bin/xamp kill 67</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>The Heat</text>
+ <action>EXEC /usr/bin/xamp kill 68</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>Real Jazz</text>
+ <action>EXEC /usr/bin/xamp kill 70</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>Watercolors</text>
+ <action>EXEC /usr/bin/xamp kill 71</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>Beyond Jazz</text>
+ <action>EXEC /usr/bin/xamp kill 72</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>High Standards</text>
+ <action>EXEC /usr/bin/xamp kill 73</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>Bluesville</text>
+ <action>EXEC /usr/bin/xamp kill 74</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>Hear Music</text>
+ <action>EXEC /usr/bin/xamp kill 75</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>Fine Tuning</text>
+ <action>EXEC /usr/bin/xamp kill 76</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>Audio Visions</text>
+ <action>EXEC /usr/bin/xamp kill 77</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>Escape</text>
+ <action>EXEC /usr/bin/xamp kill 78</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>On The Rocks</text>
+ <action>EXEC /usr/bin/xamp kill 79</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>The Move</text>
+ <action>EXEC /usr/bin/xamp kill 80</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>BPM</text>
+ <action>EXEC /usr/bin/xamp kill 81</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>The System</text>
+ <action>EXEC /usr/bin/xamp kill 82</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>Chrome</text>
+ <action>EXEC /usr/bin/xamp kill 83</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>XM-Chill</text>
+ <action>EXEC /usr/bin/xamp kill 84</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>Fuego</text>
+ <action>EXEC /usr/bin/xamp kill 90</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>Viva</text>
+ <action>EXEC /usr/bin/xamp kill 91</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>Aguila</text>
+ <action>EXEC /usr/bin/xamp kill 92</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>Caliente</text>
+ <action>EXEC /usr/bin/xamp kill 94</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>Luna</text>
+ <action>EXEC /usr/bin/xamp kill 95</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>Air Musique</text>
+ <action>EXEC /usr/bin/xamp kill 100</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>The Joint</text>
+ <action>EXEC /usr/bin/xamp kill 101</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>Sur La Route</text>
+ <action>EXEC /usr/bin/xamp kill 102</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>World Zone</text>
+ <action>EXEC /usr/bin/xamp kill 103</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>Ngoma</text>
+ <action>EXEC /usr/bin/xamp kill 104</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>XM Classics</text>
+ <action>EXEC /usr/bin/xamp kill 110</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>Vox</text>
+ <action>EXEC /usr/bin/xamp kill 112</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>XM Pops</text>
+ <action>EXEC /usr/bin/xamp kill 113</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>XM Kids</text>
+ <action>EXEC /usr/bin/xamp kill 116</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>Bob Edwards Show</text>
+ <action>EXEC /usr/bin/xamp kill 133</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>XM Comedy</text>
+ <action>EXEC /usr/bin/xamp kill 150</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>Laugh USA</text>
+ <action>EXEC /usr/bin/xamp kill 151</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>Special X</text>
+ <action>EXEC /usr/bin/xamp kill 154</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>The Agenda</text>
+ <action>EXEC /usr/bin/xamp kill 134</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>Oprah and Friends</text>
+ <action>EXEC /usr/bin/xamp kill 156</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>The Virus</text>
+ <action>EXEC /usr/bin/xamp kill 202</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>1 Hit Wonders</text>
+ <action>EXEC /usr/bin/xamp kill 300</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>Metalcore</text>
+ <action>EXEC /usr/bin/xamp kill 301</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>New Indie First</text>
+ <action>EXEC /usr/bin/xamp kill 302</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>Late Night Mix</text>
+ <action>EXEC /usr/bin/xamp kill 303</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>Sessions@AOL</text>
+ <action>EXEC /usr/bin/xamp kill 304</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>Shuffle</text>
+ <action>EXEC /usr/bin/xamp kill 305</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>New Rock First</text>
+ <action>EXEC /usr/bin/xamp kill 306</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>New Country First</text>
+ <action>EXEC /usr/bin/xamp kill 307</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>New Hip Hop First</text>
+ <action>EXEC /usr/bin/xamp kill 308</action>
+ </button>
+
+ <button>
+ <type>MUSIC</type>
+ <text>New Pop First</text>
+ <action>EXEC /usr/bin/xamp kill 309</action>
+ </button>
+
+ <button>
+ <type>TV_DELETE</type>
+ <text>Stop Listening</text>
+ <action>EXEC /usr/bin/xamp kill</action>
+ </button>
+
+</mythmenu>
diff --git a/abs/core-testing/mythtv/stable.22/mythtv/myth.sh b/abs/core-testing/mythtv/stable.22/mythtv/myth.sh
new file mode 100755
index 0000000..fb7122c
--- /dev/null
+++ b/abs/core-testing/mythtv/stable.22/mythtv/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/core-testing/mythtv/stable.22/mythtv/mythbackend b/abs/core-testing/mythtv/stable.22/mythtv/mythbackend
new file mode 100755
index 0000000..93773a2
--- /dev/null
+++ b/abs/core-testing/mythtv/stable.22/mythtv/mythbackend
@@ -0,0 +1,38 @@
+#!/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/bin/mythbackend -d -l /var/log/mythbackend.log -v important
+ 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
+ sleep 1s
+ $0 start
+ ;;
+ *)
+ echo "usage: $0 {start|stop|restart}"
+esac
+exit 0
diff --git a/abs/core-testing/mythtv/stable.22/mythtv/mythbackend.lr b/abs/core-testing/mythtv/stable.22/mythtv/mythbackend.lr
new file mode 100644
index 0000000..4f218bc
--- /dev/null
+++ b/abs/core-testing/mythtv/stable.22/mythtv/mythbackend.lr
@@ -0,0 +1,9 @@
+/var/log/mythtv/mythbackend.log {
+ copytruncate
+ daily
+ size 10M
+ missingok
+ rotate 7
+ compress
+ notifempty
+}
diff --git a/abs/core-testing/mythtv/stable.22/mythtv/mythbackend.sh b/abs/core-testing/mythtv/stable.22/mythtv/mythbackend.sh
new file mode 100755
index 0000000..e7a7b70
--- /dev/null
+++ b/abs/core-testing/mythtv/stable.22/mythtv/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 <linux at m-thomson dot net>
+# With thanks to Stu Tomlinson <stu at nosnilmot dot com>
+#
+# 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/core-testing/mythtv/stable.22/mythtv/mythfrontend.lr b/abs/core-testing/mythtv/stable.22/mythtv/mythfrontend.lr
new file mode 100644
index 0000000..1580533
--- /dev/null
+++ b/abs/core-testing/mythtv/stable.22/mythtv/mythfrontend.lr
@@ -0,0 +1,9 @@
+/var/log/mythtv/mythfrontend.log {
+ copytruncate
+ daily
+ size 10M
+ missingok
+ rotate 7
+ compress
+ notifempty
+}
diff --git a/abs/core-testing/mythtv/stable.22/mythtv/mythtv.install b/abs/core-testing/mythtv/stable.22/mythtv/mythtv.install
new file mode 100755
index 0000000..87507a5
--- /dev/null
+++ b/abs/core-testing/mythtv/stable.22/mythtv/mythtv.install
@@ -0,0 +1,30 @@
+# arg 1: the new package version
+post_install() {
+ if [ ! -d /var/log/mythtv ]
+ then
+ mkdir -p /var/log/mythv
+ chown -R mythtv /var/log/mythtv
+ echo "---" > /var/log/mythtv/mythbackend.log
+ chown mythtv /var/log/mythtv/mythbackend.log
+
+ fi
+}
+
+post_upgrade() {
+ if [ ! -d /var/log/mythtv ]
+ then
+ mkdir -p /var/log/mythv
+ chown -R mythtv /var/log/mythtv
+ fi
+}
+
+
+# arg 1: the old package version
+post_remove() {
+ /bin/true
+
+}
+
+op=$1
+shift
+$op $*
diff --git a/abs/core-testing/mythtv/stable.22/mythtv/pretty b/abs/core-testing/mythtv/stable.22/mythtv/pretty
new file mode 100755
index 0000000..1cfc57b
--- /dev/null
+++ b/abs/core-testing/mythtv/stable.22/mythtv/pretty
@@ -0,0 +1,2 @@
+#!/bin/bash
+su - mythtv -c "perl /usr/share/mythtv/contrib/user_jobs/mythrename.pl --link /myth/pretty"
diff --git a/abs/core-testing/mythtv/stable.22/mythtv/smolt_jump.patch b/abs/core-testing/mythtv/stable.22/mythtv/smolt_jump.patch
new file mode 100644
index 0000000..0fc452a
--- /dev/null
+++ b/abs/core-testing/mythtv/stable.22/mythtv/smolt_jump.patch
@@ -0,0 +1,30 @@
+Index: programs/mythfrontend/networkcontrol.cpp
+===================================================================
+--- programs/mythfrontend/networkcontrol.cpp (revision 19291)
++++ programs/mythfrontend/networkcontrol.cpp (working copy)
+@@ -83,6 +83,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";
+@@ -191,7 +192,7 @@
+ pthread_create(&command_thread, NULL, CommandThread, this);
+
+ gContext->addListener(this);
+-
++
+ connect(this, SIGNAL(newConnection()), this, SLOT(newConnection()));
+ }
+
+@@ -307,7 +308,7 @@
+ cs = new QTextStream(s);
+ cs->setCodec("UTF-8");
+ }
+-
++
+ if (client)
+ {
+ closedOldConn = true;
diff --git a/abs/core-testing/mythtv/stable.22/mythvideo/PKGBUILD b/abs/core-testing/mythtv/stable.22/mythvideo/PKGBUILD
new file mode 100644
index 0000000..04b1021
--- /dev/null
+++ b/abs/core-testing/mythtv/stable.22/mythvideo/PKGBUILD
@@ -0,0 +1,51 @@
+pkgname=mythvideo-svn
+pkgver=22783
+pkgrel=1
+pkgdesc="Video playback and browsing plugin for MythTV"
+url="http://www.mythtv.org"
+license="GPL"
+arch=('i686' 'x86_64')
+
+depends=('mythtv-svn' 'mplayer' 'perlxml' 'perl-libwww' 'perl-uri' 'perl-xml-simple' 'ffmpeg')
+conflicts=('mythvideo')
+groups=('mythtv-extras-svn')
+
+patches=()
+source=(`echo ${patches[@]:0}`)
+_svntrunk=http://cvs.mythtv.org/svn/branches/release-0-22-fixes/mythplugins
+#_svntrunk=http://cvs.mythtv.org/svn/trunk/mythplugins
+_svnmod=mythplugins
+
+
+build() {
+
+ svn co $_svntrunk --config-dir ./ -r $pkgver $_svnmod
+ svn revert -R $_svnmod
+
+ cd $startdir/src/$_svnmod
+
+ echo "--------------------------applying patches----------------------------------------------------"
+ for i in `echo ${patches[@]:0} `
+ do
+ echo applying $i
+ echo "-----------------------------"
+ patch -Np0 -i ${startdir}/src/$i || return 1
+ done
+ echo "--------------------------done applying patches-----------------------------------------------"
+
+ [ "$CARCH" = "i686" ] && ARCH="i686"
+ [ "$CARCH" = "x86_64" ] && ARCH="x86-64"
+
+ # clean up
+ make distclean
+
+ # configure
+ ./configure --prefix=/usr --cpu=${ARCH} --disable-all --enable-opengl \
+ --enable-mythvideo || return 1
+
+ # build and install
+ . /etc/profile
+ make || return 1
+ make INSTALL_ROOT=$startdir/pkg install || return 1
+
+}
diff --git a/abs/core-testing/mythtv/stable.22/mythweather/PKGBUILD b/abs/core-testing/mythtv/stable.22/mythweather/PKGBUILD
new file mode 100644
index 0000000..f3a45e5
--- /dev/null
+++ b/abs/core-testing/mythtv/stable.22/mythweather/PKGBUILD
@@ -0,0 +1,51 @@
+pkgname=mythweather-svn
+pkgver=22783
+pkgrel=1
+pkgdesc="Weather checking plugin for MythTV"
+url="http://www.mythtv.org"
+license="GPL"
+arch=('i686' 'x86_64')
+
+depends=('mythtv-svn' 'wget')
+conflicts=('mythweather')
+groups=('mythtv-extras-svn')
+
+patches=()
+source=(`echo ${patches[@]:0}`)
+_svntrunk=http://cvs.mythtv.org/svn/branches/release-0-22-fixes/mythplugins
+#_svntrunk=http://cvs.mythtv.org/svn/trunk/mythplugins
+_svnmod=mythplugins
+
+
+build() {
+
+ svn co $_svntrunk --config-dir ./ -r $pkgver $_svnmod
+ svn revert -R $_svnmod
+
+ cd $startdir/src/$_svnmod
+
+ echo "--------------------------applying patches----------------------------------------------------"
+ for i in `echo ${patches[@]:0} `
+ do
+ echo applying $i
+ echo "-----------------------------"
+ patch -Np0 -i ${startdir}/src/$i || return 1
+ done
+ echo "--------------------------done applying patches-----------------------------------------------"
+
+ [ "$CARCH" = "i686" ] && ARCH="i686"
+ [ "$CARCH" = "x86_64" ] && ARCH="x86-64"
+
+ # clean up
+ make distclean
+
+ # configure
+ ./configure --prefix=/usr --cpu=${ARCH} --disable-all --enable-opengl \
+ --enable-mythweather || return 1
+
+ # build and install
+ . /etc/profile
+ make || return 1
+ make INSTALL_ROOT=$startdir/pkg install || return 1
+
+}
diff --git a/abs/core-testing/mythtv/stable.22/mythweb/PKGBUILD b/abs/core-testing/mythtv/stable.22/mythweb/PKGBUILD
new file mode 100644
index 0000000..edd6681
--- /dev/null
+++ b/abs/core-testing/mythtv/stable.22/mythweb/PKGBUILD
@@ -0,0 +1,49 @@
+pkgname=mythweb-svn
+pkgver=22783
+pkgrel=1
+pkgdesc="Web interface for MythTV's backend"
+url="http://www.mythtv.org"
+license="GPL"
+arch=('i686' 'x86_64')
+
+depends=('mythtv-svn' 'lighttpd' 'php' 'local-website')
+conflicts=('mythweb')
+groups=('mythtv-extras-svn')
+install=mythweb.install
+
+patches=()
+source=(`echo ${patches[@]:0}`)
+_svntrunk=http://cvs.mythtv.org/svn/branches/release-0-22-fixes/mythplugins
+#_svntrunk=http://cvs.mythtv.org/svn/trunk/mythplugins
+_svnmod=mythplugins
+
+DOCROOT=/data/srv/httpd/htdocs/mythweb
+
+build() {
+
+ svn co $_svntrunk --config-dir ./ -r $pkgver $_svnmod
+ svn revert -R $_svnmod
+
+ cd $startdir/src/$_svnmod
+
+ echo "--------------------------applying patches----------------------------------------------------"
+ for i in `echo ${patches[@]:0} `
+ do
+ echo applying $i
+ echo "-----------------------------"
+ patch -Np0 -i ${startdir}/src/$i || return 1
+ done
+ echo "--------------------------done applying patches-----------------------------------------------"
+
+ [ "$CARCH" = "i686" ] && ARCH="i686"
+ [ "$CARCH" = "x86_64" ] && ARCH="x86-64"
+
+ mkdir -p $startdir/pkg/$DOCROOT/{image_cache,php_sessions}
+
+ cp -r $startdir/src/mythplugins/mythweb/* $startdir/pkg/$DOCROOT
+# cp $startdir/src/mythplugins-$pkgver/mythweb/data/.htaccess $startdir/pkg/$DOCROOT
+ rm $startdir/pkg/srv/$DOCROOT/README
+ chown -R http:users $startdir/pkg/$DOCROOT
+ chmod g+rw $startdir/pkg/$DOCROOT/{image_cache,php_sessions,data}
+
+}
diff --git a/abs/core-testing/mythtv/stable.22/mythweb/mythweb.install b/abs/core-testing/mythtv/stable.22/mythweb/mythweb.install
new file mode 100644
index 0000000..470cbd1
--- /dev/null
+++ b/abs/core-testing/mythtv/stable.22/mythweb/mythweb.install
@@ -0,0 +1,10 @@
+post_install() {
+ echo "You must create a symlink from /home/httpd/html/mythweb/video_dir"
+ echo "to your MythTV recordings directory. Don't forget to change the"
+ echo "permissions so that the webserver can read those files and create"
+ echo "thumbnails."
+}
+
+op=$1
+shift
+$op $*
diff --git a/abs/core-testing/mythtv/stable.22/mythzoneminder/PKGBUILD b/abs/core-testing/mythtv/stable.22/mythzoneminder/PKGBUILD
new file mode 100644
index 0000000..1ccfd05
--- /dev/null
+++ b/abs/core-testing/mythtv/stable.22/mythzoneminder/PKGBUILD
@@ -0,0 +1,51 @@
+pkgname=mythzoneminder-svn
+pkgver=22783
+pkgrel=1
+pkgdesc="Integrates ZoneMinder into MythTV"
+url="http://www.mythtv.org"
+license="GPL"
+arch=('i686' 'x86_64')
+
+depends=('mythtv-svn' 'zoneminder=1.23.3')
+conflicts=('mythzoneminder')
+groups=('mythtv-extras-svn')
+
+patches=()
+source=(`echo ${patches[@]:0}`)
+_svntrunk=http://cvs.mythtv.org/svn/branches/release-0-22-fixes/mythplugins
+#_svntrunk=http://cvs.mythtv.org/svn/trunk/mythplugins
+_svnmod=mythplugins
+
+
+build() {
+
+ svn co $_svntrunk --config-dir ./ -r $pkgver $_svnmod
+ svn revert -R $_svnmod
+
+ cd $startdir/src/$_svnmod
+
+ echo "--------------------------applying patches----------------------------------------------------"
+ for i in `echo ${patches[@]:0} `
+ do
+ echo applying $i
+ echo "-----------------------------"
+ patch -Np0 -i ${startdir}/src/$i || return 1
+ done
+ echo "--------------------------done applying patches-----------------------------------------------"
+
+ [ "$CARCH" = "i686" ] && ARCH="i686"
+ [ "$CARCH" = "x86_64" ] && ARCH="x86-64"
+
+ # clean up
+ make distclean
+
+ # configure
+ ./configure --prefix=/usr --cpu=${ARCH} --disable-all --enable-opengl \
+ --enable-mythzoneminder || return 1
+
+ # build and install
+ . /etc/profile
+ make || return 1
+ make INSTALL_ROOT=$startdir/pkg install || return 1
+
+}
diff --git a/abs/core-testing/mythtv/trunk/morethemes/PKGBUILD b/abs/core-testing/mythtv/trunk/morethemes/PKGBUILD
index 66e8db6..96ea655 100644
--- a/abs/core-testing/mythtv/trunk/morethemes/PKGBUILD
+++ b/abs/core-testing/mythtv/trunk/morethemes/PKGBUILD
@@ -1,5 +1,5 @@
pkgname=morethemes-svn
-pkgver=22676
+pkgver=22783
pkgrel=1
pkgdesc="Additional themes for MythTV"
url="http://www.mythtv.org"
diff --git a/abs/core-testing/mythtv/trunk/mp_all.sh b/abs/core-testing/mythtv/trunk/mp_all.sh
index 263fb80..d06564a 100755
--- a/abs/core-testing/mythtv/trunk/mp_all.sh
+++ b/abs/core-testing/mythtv/trunk/mp_all.sh
@@ -1,5 +1,5 @@
#!/bin/sh
-pkgver=22676
+pkgver=22783
pkgrel=1
# NOTE: Make sure to build and install mythtv first BEFORE building anything else
diff --git a/abs/core-testing/mythtv/trunk/mytharchive/PKGBUILD b/abs/core-testing/mythtv/trunk/mytharchive/PKGBUILD
index 2fb26da..6f1ecfe 100644
--- a/abs/core-testing/mythtv/trunk/mytharchive/PKGBUILD
+++ b/abs/core-testing/mythtv/trunk/mytharchive/PKGBUILD
@@ -1,5 +1,5 @@
pkgname=mytharchive-svn
-pkgver=22676
+pkgver=22783
pkgrel=1
pkgdesc="MythTV plugin that lets you create DVDs from or archive your recorded shows."
url="http://www.mythtv.org"
diff --git a/abs/core-testing/mythtv/trunk/mythbrowser/PKGBUILD b/abs/core-testing/mythtv/trunk/mythbrowser/PKGBUILD
index 06ba3c6..76b1513 100644
--- a/abs/core-testing/mythtv/trunk/mythbrowser/PKGBUILD
+++ b/abs/core-testing/mythtv/trunk/mythbrowser/PKGBUILD
@@ -1,5 +1,5 @@
pkgname=mythbrowser-svn
-pkgver=22676
+pkgver=22783
pkgrel=1
pkgdesc="Mini web browser for MythTV"
url="http://www.mythtv.org"
diff --git a/abs/core-testing/mythtv/trunk/mythflix/PKGBUILD b/abs/core-testing/mythtv/trunk/mythflix/PKGBUILD
index 8f2b376..11ff8a7 100644
--- a/abs/core-testing/mythtv/trunk/mythflix/PKGBUILD
+++ b/abs/core-testing/mythtv/trunk/mythflix/PKGBUILD
@@ -1,5 +1,5 @@
pkgname=mythflix-svn
-pkgver=22676
+pkgver=22783
pkgrel=1
pkgdesc="Netflix access plugin for MythTV"
url="http://www.mythtv.org"
diff --git a/abs/core-testing/mythtv/trunk/mythgallery/PKGBUILD b/abs/core-testing/mythtv/trunk/mythgallery/PKGBUILD
index 139d630..4583a5f 100644
--- a/abs/core-testing/mythtv/trunk/mythgallery/PKGBUILD
+++ b/abs/core-testing/mythtv/trunk/mythgallery/PKGBUILD
@@ -1,5 +1,5 @@
pkgname=mythgallery-svn
-pkgver=22676
+pkgver=22783
pkgrel=1
pkgdesc="Image gallery plugin for MythTV"
url="http://www.mythtv.org"
diff --git a/abs/core-testing/mythtv/trunk/mythgame/PKGBUILD b/abs/core-testing/mythtv/trunk/mythgame/PKGBUILD
index c600fc9..836dbdc 100644
--- a/abs/core-testing/mythtv/trunk/mythgame/PKGBUILD
+++ b/abs/core-testing/mythtv/trunk/mythgame/PKGBUILD
@@ -1,5 +1,5 @@
pkgname=mythgame-svn
-pkgver=22676
+pkgver=22783
pkgrel=1
pkgdesc="Emulation plugin for MythTV"
url="http://www.mythtv.org"
diff --git a/abs/core-testing/mythtv/trunk/mythmovies/PKGBUILD b/abs/core-testing/mythtv/trunk/mythmovies/PKGBUILD
index daf06a6..4e30a09 100644
--- a/abs/core-testing/mythtv/trunk/mythmovies/PKGBUILD
+++ b/abs/core-testing/mythtv/trunk/mythmovies/PKGBUILD
@@ -1,5 +1,5 @@
pkgname=mythmovies-svn
-pkgver=22676
+pkgver=22783
pkgrel=1
pkgdesc="Displays information about movies playing in the area."
url="http://www.mythtv.org"
diff --git a/abs/core-testing/mythtv/trunk/mythmusic/PKGBUILD b/abs/core-testing/mythtv/trunk/mythmusic/PKGBUILD
index c49ef7d..d4faa59 100644
--- a/abs/core-testing/mythtv/trunk/mythmusic/PKGBUILD
+++ b/abs/core-testing/mythtv/trunk/mythmusic/PKGBUILD
@@ -1,5 +1,5 @@
pkgname=mythmusic-svn
-pkgver=22676
+pkgver=22783
pkgrel=1
pkgdesc="Music playing plugin for MythTV"
url="http://www.mythtv.org"
diff --git a/abs/core-testing/mythtv/trunk/mythnews/PKGBUILD b/abs/core-testing/mythtv/trunk/mythnews/PKGBUILD
index 14e5823..1bcb3f0 100644
--- a/abs/core-testing/mythtv/trunk/mythnews/PKGBUILD
+++ b/abs/core-testing/mythtv/trunk/mythnews/PKGBUILD
@@ -1,5 +1,5 @@
pkgname=mythnews-svn
-pkgver=22676
+pkgver=22783
pkgrel=1
pkgdesc="News checking plugin for MythTV"
url="http://www.mythtv.org"
diff --git a/abs/core-testing/mythtv/trunk/myththemes/PKGBUILD b/abs/core-testing/mythtv/trunk/myththemes/PKGBUILD
index 113e031..d69526f 100755
--- a/abs/core-testing/mythtv/trunk/myththemes/PKGBUILD
+++ b/abs/core-testing/mythtv/trunk/myththemes/PKGBUILD
@@ -1,5 +1,5 @@
pkgname=myththemes-svn
-pkgver=22676
+pkgver=22783
pkgrel=1
pkgdesc="Themes for MythTV"
url="http://www.mythtv.org"
diff --git a/abs/core-testing/mythtv/trunk/mythtv/PKGBUILD b/abs/core-testing/mythtv/trunk/mythtv/PKGBUILD
index 5e56bc2..74a5ffe 100755
--- a/abs/core-testing/mythtv/trunk/mythtv/PKGBUILD
+++ b/abs/core-testing/mythtv/trunk/mythtv/PKGBUILD
@@ -1,5 +1,5 @@
pkgname=mythtv-svn
-pkgver=22676
+pkgver=22783
pkgrel=1
pkgdesc="A personal video recorder for Linux"
url="http://www.mythtv.org"
diff --git a/abs/core-testing/mythtv/trunk/mythvideo/PKGBUILD b/abs/core-testing/mythtv/trunk/mythvideo/PKGBUILD
index 1c031ed..04b1021 100644
--- a/abs/core-testing/mythtv/trunk/mythvideo/PKGBUILD
+++ b/abs/core-testing/mythtv/trunk/mythvideo/PKGBUILD
@@ -1,5 +1,5 @@
pkgname=mythvideo-svn
-pkgver=22676
+pkgver=22783
pkgrel=1
pkgdesc="Video playback and browsing plugin for MythTV"
url="http://www.mythtv.org"
diff --git a/abs/core-testing/mythtv/trunk/mythweather/PKGBUILD b/abs/core-testing/mythtv/trunk/mythweather/PKGBUILD
index 167bf37..f3a45e5 100644
--- a/abs/core-testing/mythtv/trunk/mythweather/PKGBUILD
+++ b/abs/core-testing/mythtv/trunk/mythweather/PKGBUILD
@@ -1,5 +1,5 @@
pkgname=mythweather-svn
-pkgver=22676
+pkgver=22783
pkgrel=1
pkgdesc="Weather checking plugin for MythTV"
url="http://www.mythtv.org"
diff --git a/abs/core-testing/mythtv/trunk/mythweb/PKGBUILD b/abs/core-testing/mythtv/trunk/mythweb/PKGBUILD
index c67afae..edd6681 100644
--- a/abs/core-testing/mythtv/trunk/mythweb/PKGBUILD
+++ b/abs/core-testing/mythtv/trunk/mythweb/PKGBUILD
@@ -1,5 +1,5 @@
pkgname=mythweb-svn
-pkgver=22676
+pkgver=22783
pkgrel=1
pkgdesc="Web interface for MythTV's backend"
url="http://www.mythtv.org"
diff --git a/abs/core-testing/mythtv/trunk/mythzoneminder/PKGBUILD b/abs/core-testing/mythtv/trunk/mythzoneminder/PKGBUILD
index 0c4313c..1ccfd05 100644
--- a/abs/core-testing/mythtv/trunk/mythzoneminder/PKGBUILD
+++ b/abs/core-testing/mythtv/trunk/mythzoneminder/PKGBUILD
@@ -1,5 +1,5 @@
pkgname=mythzoneminder-svn
-pkgver=22676
+pkgver=22783
pkgrel=1
pkgdesc="Integrates ZoneMinder into MythTV"
url="http://www.mythtv.org"
diff --git a/abs/core-testing/runit-scripts/PKGBUILD b/abs/core-testing/runit-scripts/PKGBUILD
index 3407502..60d78b5 100755
--- a/abs/core-testing/runit-scripts/PKGBUILD
+++ b/abs/core-testing/runit-scripts/PKGBUILD
@@ -1,6 +1,6 @@
pkgname=runit-scripts
pkgver=1.8.0
-pkgrel=97
+pkgrel=101
pkgdesc="collection of startup scripts for runit"
url="http://smarden.org/runit/"
license="BSD"
diff --git a/abs/core-testing/runit-scripts/runitscripts/services/lircd/run b/abs/core-testing/runit-scripts/runitscripts/services/lircd/run
index 9498f02..07ec214 100755
--- a/abs/core-testing/runit-scripts/runitscripts/services/lircd/run
+++ b/abs/core-testing/runit-scripts/runitscripts/services/lircd/run
@@ -72,7 +72,7 @@ else
FLAGS="io=0x2e8 irq=3"
;;
esac
- /usr/bin/setserial /dev/serial_port uart none
+ /usr/bin/setserial /dev/$serial_port uart none
sleep 0.5
/sbin/modprobe lirc_serial $FLAGS
sleep 0.5
diff --git a/abs/core-testing/system-templates/PKGBUILD b/abs/core-testing/system-templates/PKGBUILD
index 8a4d35e..0dd7fb4 100755
--- a/abs/core-testing/system-templates/PKGBUILD
+++ b/abs/core-testing/system-templates/PKGBUILD
@@ -1,6 +1,6 @@
pkgname=system-templates
pkgver=1.0
-pkgrel=36
+pkgrel=37
conflicts=( )
pkgdesc="Templates used for system configuration"
depends=()
diff --git a/abs/core-testing/system-templates/templates/remotes/streamzap/lircd.conf.streamzap b/abs/core-testing/system-templates/templates/remotes/streamzap/lircd.conf.streamzap
index 8e453b9..36b52fa 100644
--- a/abs/core-testing/system-templates/templates/remotes/streamzap/lircd.conf.streamzap
+++ b/abs/core-testing/system-templates/templates/remotes/streamzap/lircd.conf.streamzap
@@ -62,6 +62,9 @@ begin remote
GREEN 0x21
YELLOW 0x22
BLUE 0x23
+ DISP 0x24
+ PTZ 0x25
+ HELP 0x26
end codes
end remote