# Kbtv install script, version 1.2.5 import sys, os, shutil, commands import buildprefs from installprefs import PREFIX, BINDIR, SBINDIR, APPDIR, DOCDIR, DTDIR, \ ICONDIR, FROMPORT sys.path.append("Kbtv") from kbtv_version import KBTV_VERSION, KBTV_UNIQUENAME, KBTV_DESCRIPTION, \ KBTV_FANCYNAME BTSETUP = "btsetup" KMODDIR = "/boot/modules" KLDXREF = "kldxref" SAA_KO = "saa.ko" PWC_KO = "pwc.ko" KDEDOCDIR = os.path.join(DOCDIR, "HTML") print "Installation prefix:", PREFIX tgts = "Target directories: " if buildprefs.WITH_SAA or (buildprefs.WITH_PWC and not FROMPORT): tgts += KMODDIR print tgts, BINDIR, SBINDIR, APPDIR, KDEDOCDIR, DTDIR, ICONDIR print "Checking write access to targets, creating directories..." if not os.access(".", os.W_OK): print "No write access to current directory. Stop." sys.exit(1) for dir in (KMODDIR, PREFIX, BINDIR, SBINDIR, os.path.join(APPDIR, "pics"), KDEDOCDIR, DTDIR, ICONDIR): if not os.path.isdir(dir): try: os.makedirs(dir) except OSError: pass if not os.access(dir, os.W_OK): print "Target directory", dir, "is not writable. Stop." sys.exit(1) plist = [] if buildprefs.WITH_PWC and not FROMPORT: print "Installing pwd kernel module..." print PWC_KO, "->", KMODDIR shutil.copy(os.path.join("pwc/pwcbsd", PWC_KO), KMODDIR) plist.append(os.path.join(KMODDIR, PWC_KO)) foo = commands.getoutput(KLDXREF + " " + KMODDIR) if buildprefs.WITH_SAA: print "Installing saa kernel module..." print SAA_KO, "->", KMODDIR shutil.copy(os.path.join("saa/saadriver/kmod", SAA_KO), KMODDIR) plist.append(os.path.join(KMODDIR, SAA_KO)) foo = commands.getoutput(KLDXREF + " " + KMODDIR) print "Creating kbtv and btsetup run scripts and desktop file..." runscript = "#!/bin/sh\n\ncd " + APPDIR + " && python kbtv_application.pyc " runscript += "&& cd\n" btsetup = "#!/bin/sh\n\npython " btsetup += os.path.join(APPDIR, "btsetup.pyc") + "\n" dotdesktop = "" dtentries = [] dtentries.append("[Desktop Entry]") dtentries.append("Encoding=UTF-8") dtentries.append("Type=Application") dtentries.append("Exec=" + KBTV_UNIQUENAME) dtentries.append("Icon=" + KBTV_UNIQUENAME + ".png") dtentries.append("DocPath=" + os.path.join(KBTV_UNIQUENAME, "index.html")) dtentries.append("Comment=" + KBTV_DESCRIPTION) dtentries.append("Terminal=false") dtentries.append("Name=" + KBTV_FANCYNAME) dtentries.append("Categories=Qt;KDE;AudioVideo;") dtentries.append("GenericName=TV Viewer") dtentries.append("Version=" + KBTV_VERSION) for item in dtentries: dotdesktop += item + "\n" fd = open(KBTV_UNIQUENAME, "w") fd.write(runscript) fd.close() fd = open(BTSETUP, "w") fd.write(btsetup) fd.close() os.chmod(KBTV_UNIQUENAME, 0755) os.chmod(BTSETUP, 0755) fd = open(KBTV_UNIQUENAME + ".desktop", "w") fd.write(dotdesktop) fd.close() print "Installing kbtv..." for item in os.listdir("."): if os.path.isdir(item): if item == "bt848": tgt = APPDIR for mod in os.listdir(item): if mod in ("_bt848.so", "bt848.py", "bt848.pyc"): print mod, "->", tgt os.chmod(os.path.join(item, mod), 0444) shutil.copy(os.path.join(item, mod), tgt) plist.append(os.path.join(tgt, mod)) if item == "saa": if buildprefs.WITH_SAA: tgt = APPDIR for mod in os.listdir(item): if mod in ("_saa.so", "saa.py", "saa.pyc"): print mod, "->", tgt os.chmod(os.path.join(item, mod), 0444) shutil.copy(os.path.join(item, mod), tgt) plist.append(os.path.join(tgt, mod)) if item == "pwc": if buildprefs.WITH_PWC: tgt = APPDIR for mod in os.listdir(item): if mod in ("_pwc.so", "pwc.py", "pwc.pyc"): print mod, "->", tgt os.chmod(os.path.join(item, mod), 0444) shutil.copy(os.path.join(item, mod), tgt) plist.append(os.path.join(tgt, mod)) if item in ("ui", "modules", "Kbtv"): tgt = APPDIR for mod in os.listdir(item): if mod.endswith(".pyc") or mod.endswith(".py") or mod.endswith(".rc"): print mod, "->", tgt os.chmod(os.path.join(item, mod), 0444) shutil.copy(os.path.join(item, mod), tgt) plist.append(os.path.join(tgt, mod)) if item == "pics": tgt = os.path.join(APPDIR, item) for pic in os.listdir(item): if pic == "kbtv_splash.png": print pic, "->", APPDIR os.chmod(os.path.join(item, pic), 0444) shutil.copy(os.path.join(item, pic), APPDIR) plist.append(os.path.join(APPDIR, pic)) else: print pic, "->", tgt os.chmod(os.path.join(item, pic), 0444) shutil.copy(os.path.join(item, pic), tgt) plist.append(os.path.join(tgt, pic)) if item == "doc": for docdir in os.listdir(item): tgt = os.path.join(KDEDOCDIR, docdir, KBTV_UNIQUENAME) if not os.path.isdir(tgt): os.makedirs(tgt) for doc in os.listdir(os.path.join(item, docdir)): print doc, "->", tgt os.chmod(os.path.join(item, docdir, doc), 0444) shutil.copy(os.path.join(item, docdir, doc), tgt) plist.append(os.path.join(tgt, doc)) else: tgt = "" if item == KBTV_UNIQUENAME: tgt = BINDIR elif item == BTSETUP: tgt = SBINDIR elif item in ("buildprefs.py", "buildprefs.pyc", "installprefs.py", "installprefs.pyc"): tgt = APPDIR elif item in ("do_deinstall.py", "do_deinstall.pyc", "NEWS", "README") and not FROMPORT: tgt = APPDIR if tgt: print item, "->", tgt if tgt == APPDIR: os.chmod(item, 0444) shutil.copy(item, tgt) plist.append(os.path.join(tgt, item)) dt = KBTV_UNIQUENAME + ".desktop" print dt, "->", DTDIR shutil.copy(dt, DTDIR) plist.append(os.path.join(DTDIR, dt)) os.chdir("pics") ic = KBTV_UNIQUENAME + ".png" print ic, "->", ICONDIR shutil.copy(ic, ICONDIR) plist.append(os.path.join(ICONDIR, ic)) os.chdir("..") if not FROMPORT: print "PLIST", "->", APPDIR plist.append(os.path.join(APPDIR, "PLIST")) plist.sort() fd = open("PLIST", "w") for item in plist: fd.write(item + "\n") fd.close() os.chmod("PLIST", 0444) shutil.copy("PLIST", APPDIR)