diff options
| author | Cecil Hugh Watson <knoppmyth@gmail.com> | 2009-06-22 14:51:34 (GMT) | 
|---|---|---|
| committer | Cecil Hugh Watson <knoppmyth@gmail.com> | 2009-06-22 14:51:34 (GMT) | 
| commit | 7261f38f4e32ab918f5ebf8c5f5fe6e807c145ba (patch) | |
| tree | 1b3cdb98bd3394bdb09d3b779baf56a57f3a7778 | |
| parent | 52453cb0e266095b08f896c20fa86a0be0dbfc6d (diff) | |
| parent | 71f2f52cdb80bb814fde97b994e1625beac55282 (diff) | |
| download | linhes_pkgbuild-7261f38f4e32ab918f5ebf8c5f5fe6e807c145ba.zip linhes_pkgbuild-7261f38f4e32ab918f5ebf8c5f5fe6e807c145ba.tar.gz linhes_pkgbuild-7261f38f4e32ab918f5ebf8c5f5fe6e807c145ba.tar.bz2 | |
Merge branch 'HEAD' of ssh://cesman@knoppmyth.net/mount/repository/LinHES-PKGBUILD
| -rwxr-xr-x | abs/core-testing/LinHES-config/PKGBUILD | 2 | ||||
| -rwxr-xr-x | abs/core-testing/LinHES-config/mv_common.py | 7 | ||||
| -rwxr-xr-x | abs/core-testing/LinHES-config/mv_hostype.py | 84 | ||||
| -rwxr-xr-x | abs/core-testing/LinHES-config/mv_ir.py | 18 | ||||
| -rwxr-xr-x | abs/core-testing/LinHES-config/mv_misc.py | 13 | ||||
| -rwxr-xr-x | abs/core-testing/LinHES-config/mv_network.py | 113 | ||||
| -rwxr-xr-x | abs/core-testing/LinHES-config/systemconfig.py | 7 | ||||
| -rwxr-xr-x | abs/core-testing/LinHES-config/systemconfig.sh | 2 | 
8 files changed, 208 insertions, 38 deletions
| diff --git a/abs/core-testing/LinHES-config/PKGBUILD b/abs/core-testing/LinHES-config/PKGBUILD index 83b0101..76d3d43 100755 --- a/abs/core-testing/LinHES-config/PKGBUILD +++ b/abs/core-testing/LinHES-config/PKGBUILD @@ -1,6 +1,6 @@  pkgname=LinHES-config  pkgver=2.0 -pkgrel=15 +pkgrel=17  conflicts=(MythVantage-config MythVantage-config-dev LinHES-config-dev )  pkgdesc="Install and configure your system"  depends=(bc libstatgrab  mysql-python expect curl dnsutils parted sg3_utils nmbscan system-templates rsync python-parted ddcxinfo) diff --git a/abs/core-testing/LinHES-config/mv_common.py b/abs/core-testing/LinHES-config/mv_common.py index 31740c3..da3e25f 100755 --- a/abs/core-testing/LinHES-config/mv_common.py +++ b/abs/core-testing/LinHES-config/mv_common.py @@ -129,6 +129,13 @@ def pacremove(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 : diff --git a/abs/core-testing/LinHES-config/mv_hostype.py b/abs/core-testing/LinHES-config/mv_hostype.py index fff0e8a..b3899ff 100755 --- a/abs/core-testing/LinHES-config/mv_hostype.py +++ b/abs/core-testing/LinHES-config/mv_hostype.py @@ -29,18 +29,80 @@ def remove_avahi_service():      if os.path.exists(file):          logging.debug("    Removing avahi mysql.service file")          cmd="rm -rf %s" %file -        runcmd(cmd) +        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(): +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_mysql(): -    logging.debug("    Configuring mysql")  def setup_func_key():      if data_config.SYSTEMTYPE == "MythVantage": @@ -66,11 +128,14 @@ def hostypeprint(systemconfig):      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") @@ -82,6 +147,8 @@ def hostypeprint(systemconfig):          setup_avahi(systemconfig["TEMPLATES"])          install_list=("mysql", "mythdb-initial", "avahi", "portmap", "nfs-utils", "local-website", "myth2ipod", "mythtv-status")          daemon_list=("mysql", "mythbackend", "avahi", "portmap", "nfs-utils", "netfs", "lighttpd") +        EnableNetwork = True +        run_mysqlnetwork = True          if data_config.SYSTEMTYPE == "MythVantage":              install_list.append('func')              install_list.append('certmaster') @@ -138,8 +205,13 @@ def hostypeprint(systemconfig):          mv_common.remove_service("frontend")          mv_common.remove_service("hal") -    setup_mysqlnetwork() -    setup_mysql() + +    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(dbhost)          setup_func_key() diff --git a/abs/core-testing/LinHES-config/mv_ir.py b/abs/core-testing/LinHES-config/mv_ir.py index efc8a60..b8e9741 100755 --- a/abs/core-testing/LinHES-config/mv_ir.py +++ b/abs/core-testing/LinHES-config/mv_ir.py @@ -3,9 +3,17 @@ 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: @@ -13,7 +21,15 @@ def setup_lirc_links(mythhome):          except:              logging.debug("   Couldn't create .mythtv ")              return -        os.chown(mythhome+"/.mythtv","mythtv","mythtv") +        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 not os.path.exists(mythhome+"/.mythtv/lircrc"):          logging.debug("    Creating symlink for myth lircrc") diff --git a/abs/core-testing/LinHES-config/mv_misc.py b/abs/core-testing/LinHES-config/mv_misc.py index c93cd71..9ea9c95 100755 --- a/abs/core-testing/LinHES-config/mv_misc.py +++ b/abs/core-testing/LinHES-config/mv_misc.py @@ -30,12 +30,13 @@ def setup_tz(timezone,TEMPLATES):      if not timezone:          timezone="unknown"      logging.info("    Setting timezone to %s",timezone) -    try: -        logging.debug("    Removing /etc/localtime") -        os.remove("/etc/localtime") -    except: -        logging.debug("    Couldn't remove /etc/localtime") -        pass +    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) diff --git a/abs/core-testing/LinHES-config/mv_network.py b/abs/core-testing/LinHES-config/mv_network.py index ae3aaf7..ae7f861 100755 --- a/abs/core-testing/LinHES-config/mv_network.py +++ b/abs/core-testing/LinHES-config/mv_network.py @@ -2,20 +2,10 @@  import sys , os, commands , glob, time, re  import logging  import mv_common +import socket, fcntl, struct, array  global etcnetdir  etcnetdir = "/etc/net/ifaces" - -def setup_MYTH_IP(systemconfig): -    default_interface = systemconfig["default_interface"] -    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_DHCP(systemconfig):      default_interface = systemconfig["default_interface"]      try: @@ -23,9 +13,56 @@ def setup_MYTH_DHCP(systemconfig):      except:          logging.critical("    *Error occured finding default dhcp")          defaultdhcp = "0" -    logging.debug("    Using %s as dhcp value for %s", default_interface, defaultdhcp) +    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 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 flush(netdev):      logging.debug("    Flushing %s",netdev)      cmd = '''ip address flush dev %s''' %netdev @@ -44,7 +81,7 @@ def kill_dhcp(basedir):              f.close              cmd = "kill -9 %s" %pid              mv_common.runcmd(cmd) -            os.remove(FILE) +            mv_common.remove_file(FILE)          os.chdir(stddir)      except:          pass @@ -68,6 +105,8 @@ def setup_hostname(systemconfig):          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" : @@ -193,11 +232,12 @@ def setup_interface(netdev,systemconfig):          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) -        except: -            logging.debug("    Couldn't remove %s",wpafile) +        #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") @@ -256,10 +296,11 @@ def find_active(systemconfig):      logging.debug("    _Start of find_active")      if systemconfig["mythdhcp"] == "1": -        try: -            os.remove("/etc/resolv.conf") -        except: -            logging.debug("    couldn't remove /etc/resolv.conf") +        mv_common.remove_file("/etc/resolv.conf") +        #try: +            #os.remove("/etc/resolv.conf") +        #except: +            #logging.debug("    couldn't remove /etc/resolv.conf")          cmd = ''' echo search lan > /etc/resolv.conf '''          mv_common.runcmd(cmd)          cmd = ''' echo nameserver 127.0.0.1 >> /etc/resolv.conf ''' @@ -329,15 +370,43 @@ def stop_network():          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):      logging.info("____Start of network____")      logging.info("    Setting up the network") +    restartfe = hostname_change_check(systemconfig)      setup_hostname(systemconfig)      find_active(systemconfig)      start_network()      logging.info("__End of network\n") +    return restartfe diff --git a/abs/core-testing/LinHES-config/systemconfig.py b/abs/core-testing/LinHES-config/systemconfig.py index 5ccaa10..4d69a1f 100755 --- a/abs/core-testing/LinHES-config/systemconfig.py +++ b/abs/core-testing/LinHES-config/systemconfig.py @@ -100,7 +100,10 @@ def main(argv):          cmdmodule["smolt"] = True      if cmdmodule["network"]: -        mv_network.setup_network(systemconfig) +        restartfe = mv_network.setup_network(systemconfig) +        if restartfe == True : +            logging.debug("    Setting the frontend to restart due to network change") +            cmdmodule["restartfe"] = True @@ -109,7 +112,7 @@ def main(argv):          restart = mv_ir.setup_ir(systemconfig,data_config)          restartfe = restart[0]          restartlcd = restart[1] -        if restartfe == True: +        if restartfe == True :              logging.debug("    Setting the frontend to restart due to lirc change")              cmdmodule["restartfe"] = True          cmdmodule["smolt"] = True diff --git a/abs/core-testing/LinHES-config/systemconfig.sh b/abs/core-testing/LinHES-config/systemconfig.sh index 4f58ee2..57bff5a 100755 --- a/abs/core-testing/LinHES-config/systemconfig.sh +++ b/abs/core-testing/LinHES-config/systemconfig.sh @@ -11,4 +11,6 @@ echo "----------------------start of systemconfig $@ ----------------------"  postfix=`cat ${BASE}/usr/local/share/mythtv/.releasetype`  systemconfig.py -m $@ +echo "exit code $?" + | 
