diff options
| author | Cecil Hugh Watson <knoppmyth@gmail.com> | 2008-12-11 01:37:12 (GMT) | 
|---|---|---|
| committer | Cecil Hugh Watson <knoppmyth@gmail.com> | 2008-12-11 01:37:12 (GMT) | 
| commit | 54e39512d743caf5afe2f587536135c450ea4fcf (patch) | |
| tree | 22e7ba4ba242782064d36d7a3828b01800436d38 | |
| parent | 8417e5e3b118ed9e12563a3d4fceeb38b9e73d4f (diff) | |
| parent | 42129857874c470c65d3b1dcb4bf42945a98dcfa (diff) | |
| download | linhes_pkgbuild-54e39512d743caf5afe2f587536135c450ea4fcf.zip linhes_pkgbuild-54e39512d743caf5afe2f587536135c450ea4fcf.tar.gz linhes_pkgbuild-54e39512d743caf5afe2f587536135c450ea4fcf.tar.bz2 | |
Merge branch 'HEAD' of ssh://cesman@knoppmyth.net/mount/repository/LinHES-PKGBUILD
Conflicts:
	abs/core-testing/LinHES-config/LinHES-release
117 files changed, 8729 insertions, 794 deletions
| diff --git a/abs/core-testing/LinHES-config/LinHES-release b/abs/core-testing/LinHES-config/LinHES-release index c63627b..fc10c90 100644 --- a/abs/core-testing/LinHES-config/LinHES-release +++ b/abs/core-testing/LinHES-config/LinHES-release @@ -1 +1,5 @@ -LinHES R6.00.04 +<<<<<<< HEAD:abs/core-testing/LinHES-config/LinHES-release +LinHES R6.00.05 +======= +LinHES R6.00.04  +>>>>>>> origin/HEAD:abs/core-testing/LinHES-config/LinHES-release diff --git a/abs/core-testing/LinHES-config/PKGBUILD b/abs/core-testing/LinHES-config/PKGBUILD index 706dc4c..543d182 100755 --- a/abs/core-testing/LinHES-config/PKGBUILD +++ b/abs/core-testing/LinHES-config/PKGBUILD @@ -1,6 +1,6 @@  pkgname=LinHES-config  pkgver=1.0 -pkgrel=60 +pkgrel=103  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 ) diff --git a/abs/core-testing/LinHES-config/install_functions.sh b/abs/core-testing/LinHES-config/install_functions.sh index 3e7f8f8..d976dbb 100755 --- a/abs/core-testing/LinHES-config/install_functions.sh +++ b/abs/core-testing/LinHES-config/install_functions.sh @@ -35,7 +35,7 @@ update_db_settings Theme "$pick"  function setupremote { -    [ -e $BASE/etc/lircd.conf ] && mv -f $BASE/etc/lircd.conf $BASE/etc/lircd.conf.`date +%Y-%m-%d-%H-%M`  +    [ -e $BASE/etc/lircd.conf ] && mv -f $BASE/etc/lircd.conf $BASE/etc/lircd.conf.`date +%Y-%m-%d-%H-%M`      if [ -d $TEMPLATES/remotes/$Remotetype ]      then              cd $TEMPLATES/remotes/$Remotetype @@ -50,16 +50,40 @@ function setupremote {  	    echo "Starting with support for $Remotetype"  	    if [ x$Remotetype = "xdvico" ]  	    then -	            /usr/sbin/lircd  -d /dev/usb/hiddev0  +	            /usr/sbin/lircd  -d /dev/usb/hiddev0  	    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 +        ln -s /etc/lircrc /root/.mythtv/lircrc 2>/dev/null +    else +        echo "Couldn't open directory $TEMPLATES/remotes/$Remotetype"      fi  } +function scan_for_hpg_receiver() { +echo "Scanning for Hauppauge receiver" +for hpgid in `lspci -nm  -d4444: |cut -d" " -f6-  |tr -d '"'|tr " " :` +do +    line=`grep $hpgid $TEMPLATES/remotes/i2c.id` +    if [ $? = 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" +        update_db_settings  HostReceiverType $FoundReceiverType +        setupremote +        break +    fi + +done +} + +  function scan_for_usb_remote () { +found_remote=1  echo "Scanning for usb receiver/remote"  while read line  do @@ -68,11 +92,16 @@ do      if [ $? = 0 ]      then          Remotetype=`echo "$line"|cut -d"|" -f2` -        echo "found $Remotetype" +        echo "Found $Remotetype"          setupremote +        found_remote=0          break      fi  done <$BASE/$TEMPLATES/remotes/receiver_usb.id +if [ $found_remote = 1 ] +then +    scan_for_hpg_receiver +fi  }  function rest_of_network () { diff --git a/abs/core-testing/LinHES-config/install_proxy.sh b/abs/core-testing/LinHES-config/install_proxy.sh index f106b50..e6b0976 100755 --- a/abs/core-testing/LinHES-config/install_proxy.sh +++ b/abs/core-testing/LinHES-config/install_proxy.sh @@ -436,6 +436,8 @@ echo "-----------------------------------------------------------------------3--                                  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 @@ -445,7 +447,10 @@ echo "-----------------------------------------------------------------------3--                                  ;;                                  check_gw)                                              #check gateway -                                            mygwdefault=`/sbin/route |grep $default_interface|grep UG|awk '{ print $2}'` +                                            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  	                                            ping -c 1 $mygwdefault @@ -457,6 +462,7 @@ echo "-----------------------------------------------------------------------3--                                  ;;                                  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 ] @@ -465,6 +471,7 @@ echo "-----------------------------------------------------------------------3--                                                      fi                                  ;;                                  check_names) +                                            echo "network check resolve names"                                              host google.com                                              if [ ! $? = 0 ]                                              then @@ -474,7 +481,7 @@ echo "-----------------------------------------------------------------------3--                                  host_names)                                              #if host is found, then check to see if it's online                                              #if not online, assume it's ok to use this hostname - +                                            echo "network check my hostname $hostname"                                              hout=`host $hostname`                                              status=$?                                              #found host, now grab the ip diff --git a/abs/core-testing/LinHES-config/myth_user_call b/abs/core-testing/LinHES-config/myth_user_call index d95e468..0479895 100644 --- a/abs/core-testing/LinHES-config/myth_user_call +++ b/abs/core-testing/LinHES-config/myth_user_call @@ -63,7 +63,14 @@ function pass_change() {  function web_security { -    echo "this is just a stub" + +    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  } @@ -155,7 +162,8 @@ case $OPERATION in              then                  print_help              fi -            echo "adding webUSERNAME $USERNAME with $PASS" +            echo "adding webUSERNAME $USERNAME with pass $PASSWORD" +	    web_security              ;;      *)  print_help          ;; diff --git a/abs/core-testing/LinHES-config/networkconfig.sh b/abs/core-testing/LinHES-config/networkconfig.sh index 61a7405..23e3774 100644 --- a/abs/core-testing/LinHES-config/networkconfig.sh +++ b/abs/core-testing/LinHES-config/networkconfig.sh @@ -6,7 +6,7 @@ ETCNETDIR=$BASE/etc/net/ifaces -function kill_dhcp ()  +function kill_dhcp ()  {  for i in ${BASE}/etc/dhcpc/dhcpcd-*.pid  do @@ -19,12 +19,12 @@ do      if [ x$1 = xflush ]      then          for ifdev in eth0 wlan0 eth1 wlan1 -        do  +        do             echo ${i} |grep $ifdev             status=$?             if [ $status = 1 ]             then -             ip address flush $ifdev    +             ip address flush $ifdev             fi          done      fi @@ -43,6 +43,22 @@ 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" +            sed -i -e 's/^ONBOOT=.*$/ONBOOT=no/g' $ETCNETDIR/$1/options +            sed -i -e 's/^DISABLED=.*$/DISABLED=yes/g' $ETCNETDIR/$1/options +            /sbin/ifconfig $1 down +            ip address flush $1 +    fi + +} +  function setup_interfaces() {    local IS_WIRELESS    local ip @@ -65,7 +81,7 @@ function setup_interfaces() {    TEMPNET=Hostnetmask$1    eval netmask=\$${TEMPNET}    netmask=`echo "$netmask" | cut -d " " -f1` -   +    TEMPNET=HostActive$1    eval isactive=\$${TEMPNET} @@ -78,24 +94,28 @@ function setup_interfaces() {    TEMPNET=HostGW$1    eval GW=\$${TEMPNET} +  TEMPNET=HOST_iswireless$1 +  eval wireless=\$${TEMPNET} + + -  if [ $1 = wlan0 -o  $1 = wlan1 ] +  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 @@ -106,14 +126,17 @@ function setup_interfaces() {          cp -f  $TEMPLATES/etcnet/eth/options $ETCNETDIR/$1/options      fi -    if [ x$isactive =  x0 ] +    if [  x$isactive =  x1 ]      then -            echo "setting $1 to inactive" -            sed -i -e 's/^ONBOOT=.*$/ONBOOT=no/g' $ETCNETDIR/$1/options -             +            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 -            echo "setting $1 to active" -            sed -i -e 's/^ONBOOT=.*$/ONBOOT=yes/g' $ETCNETDIR/$1/options +            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 ] @@ -126,7 +149,7 @@ function setup_interfaces() {              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 @@ -135,11 +158,11 @@ function setup_interfaces() { -    if [ $UseDHCP = 0 ] +    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 @@ -160,15 +183,20 @@ if [ x$MYTHDHCP =  x1 ]                   echo "nameserver 127.0.0.1" >> ${BASE}/etc/resolv.conf   fi -for i in eth0 eth1 wlan0 wlan1  +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 { @@ -219,33 +247,35 @@ function setup_MYTH_vars {      TEMPMYTH="Hostip"$default_interface      #echo $TEMPMYTH      eval MYTHIP=\$${TEMPMYTH} -     +      TEMPMYTH="HostUSEDHCP"$default_interface      eval MYTHDHCP=\$${TEMPMYTH} -     +  } -function setup_network { -    setup_MYTH_vars -    setup_hostname -    find_active -}  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 diff --git a/abs/core-testing/LinHES-config/systemconfig.sh b/abs/core-testing/LinHES-config/systemconfig.sh index 6c72b92..3aac497 100755 --- a/abs/core-testing/LinHES-config/systemconfig.sh +++ b/abs/core-testing/LinHES-config/systemconfig.sh @@ -163,13 +163,20 @@ function setupreceiver {      Serial) echo "setup serial lirc"              sed -i -e '/.*#lirc/d' ${BASE}/etc/modules.mythvantage              echo "lirc_serial   #lirc" >> ${BASE}/etc/modules.mythvantage -            /usr/bin/load-modules-mythvantage.sh +            load-modules-mythvantage.sh              ;;      Usb-imon) echo "setup receiver-usb-imon"                sed -i -e '/.*#lirc/d' ${BASE}/etc/modules.mythvantage                echo "lirc_imon     #lirc" >> ${BASE}/etc/modules.mythvantage -              /usr/bin/load-modules-mythvantage.sh +              load-modules-mythvantage.sh                ;; +   Hauppauge) echo "setup hauppauge reciever (lirc_i2c)" +              sed -i -e '/.*#lirc/d' ${BASE}/etc/modules.mythvantage +              echo "lirc_i2c   #lirc" >> ${BASE}/etc/modules.mythvantage +              cp $TEMPLATES/modules/lirc_i2c.conf ${BASE}/etc/modprobe.d/lirc_i2c.conf +              rmmod lirc_i2c 2>/dev/null +              load-modules-mythvantage.sh +             ;;             *)   sed -i -e '/.*#lirc/d' ${BASE}/etc/modules.mythvantage                ;;      esac @@ -210,7 +217,7 @@ function setupremote {  			if [ ! -d /home/mythtv/.mythtv ]  			then  				mkdir /home/mythtv/.mythtv -				chown mythtv:mythtv /home/mythtv/.mythtv	 +				chown mythtv:mythtv /home/mythtv/.mythtv  			fi  			ln -s /etc/lircrc /home/mythtv/.mythtv/lircrc 2> /dev/null @@ -220,7 +227,7 @@ function setupremote {  			ln -s /etc/lircrc /home/mythtv/.lircrc 2> /dev/null  		fi -		 +                  ;;  esac @@ -272,7 +279,7 @@ function setupLCD {              ;;      xno_lcd) echo "disabling lcd"              sv down lcdd -            /usr/bin/load-modules-mythvantage.sh  UNLOAD LCD +            load-modules-mythvantage.sh  UNLOAD LCD              sed -i -e '/.*#LCD/d' ${BASE}/etc/modules.mythvantage              daemon_remove="lcdd $daemon_remove"              ;; @@ -292,7 +299,7 @@ function setupLCD {                  cp -f $TEMPLATES/LCD/$LCDtype/LCDd.conf /etc                 # install="lcdproc $install"                  daemon_add="lcdd $daemon_add" -                /usr/bin/load-modules-mythvantage.sh +                load-modules-mythvantage.sh                  RESTART_FE="true"                  RESTART_LCD="true"              fi @@ -658,6 +665,14 @@ then             ser_remove="ncid $ser_remove"   fi + +if [ x$UseEvrouter = x1 ] +then +           ser_install="evrouter Xvfb $ser_install" +  else +           ser_remove="evrouter $ser_remove" +fi +  #Setting the default, just to avoid the or statement..  #if [ x$UseHobbit = x ]  #then @@ -973,6 +988,18 @@ do  done  } +function setup_web_auth { +    if [ x$UseMythWEB_auth = x1 ] +    then +        #enable auth +        sed -ie "s/^.*include.*auth-inc.conf.*$/include \"\/etc\/lighttpd\/auth-inc.conf\"/g" /etc/lighttpd/lighttpd.conf +    else +         #disable auth +        sed -ie "s/^.*include.*auth-inc.conf.*$/#include \"\/etc\/lighttpd\/auth-inc.conf\"/g" /etc/lighttpd/lighttpd.conf +    fi +    sudo sv restart lighttpd + +}  #----------------------------------------------------MAIN PROGRAM-------------------------------------------  #misc,sleep,hostype,advanced,audio @@ -1004,6 +1031,8 @@ for i in  $LIST  		;;      advancedX)  showX="true"        ;; +      webuser)  setup_web_auth +      ;;      restartfe)  killall -9 mythfrontend                      killall -9 mythwelcome                      exit 0 @@ -1052,6 +1081,7 @@ then          then              echo "loading network"              ${BASE}/etc/net/scripts/network.init reload +            ${BASE}/etc/net/scripts/network.init restart          else              echo "netboot, will not start network"          fi @@ -1269,6 +1299,6 @@ case $SystemType in              ;;  esac  echo $MVRELEASE > /etc/os_myth_release -echo "systemtype=$smoltsystem" > /data/home/mythtv/.mythtv/smolt.info -echo "remote=$Remotetype" >> /data/home/mythtv/.mythtv/smolt.info +echo "systemtype=$smoltsystem" > /home/mythtv/.mythtv/smolt.info 2>/dev/null +echo "remote=$Remotetype" >> /home/mythtv/.mythtv/smolt.info 2>/dev/null diff --git a/abs/core-testing/LinHES-config/templates/modules/lirc_i2c.conf b/abs/core-testing/LinHES-config/templates/modules/lirc_i2c.conf new file mode 100644 index 0000000..7b99f78 --- /dev/null +++ b/abs/core-testing/LinHES-config/templates/modules/lirc_i2c.conf @@ -0,0 +1,2 @@ +alias char-major-61 lirc_i2c +options lirc_i2c debug=0 minor=3	 diff --git a/abs/core-testing/LinHES-config/templates/remotes/hauppauge-grey/lircd.conf b/abs/core-testing/LinHES-config/templates/remotes/hauppauge-grey/lircd.conf new file mode 100644 index 0000000..c0849ef --- /dev/null +++ b/abs/core-testing/LinHES-config/templates/remotes/hauppauge-grey/lircd.conf @@ -0,0 +1,199 @@ +# +# this config file was automatically generated +# using lirc-0.5.5pre8 on Sun Apr 18 11:43:45 1999 +# +# contributed by Jens Leuschner <leuschner@gmx.net> +# +# brand:             Hauppauge +# model:              +# supported devices: WinTV primo; WinTV pci; WinTV radio +# +# This config file will work with both homebrew receivers and  +# original Hauppauge TV cards !!! +# + +begin remote + +  name  Hauppauge +  bits           13 +  flags SHIFT_ENC +  eps            30 +  aeps          100 + +  one           950   830 +  zero          950   830 +  plead         960 +  gap          89584 +  repeat_bit      2 + +      begin codes +          TV                       0x000000000000100F +          RADIO                    0x000000000000100C +          FULL_SCREEN              0x000000000000102E +          CH+                      0x0000000000001020 +          CH-                      0x0000000000001021 +          VOL-                     0x0000000000001011 +          VOL+                     0x0000000000001010 +          MUTE                     0x000000000000100D +          SOURCE                   0x0000000000001022 +          1                        0x0000000000001001 +          2                        0x0000000000001002 +          3                        0x0000000000001003 +          4                        0x0000000000001004 +          5                        0x0000000000001005 +          6                        0x0000000000001006 +          7                        0x0000000000001007 +          8                        0x0000000000001008 +          9                        0x0000000000001009 +          0                        0x0000000000001000 +          RESERVED                 0x000000000000101E +          MINIMIZE                 0x0000000000001026 +      end codes + +end remote + + +# +# this config file was automatically generated +# using lirc-0.6.6(animax) on Tue Apr 15 19:50:27 2003 +# +# contributed by  +# +# brand: 				Hauppauge +# model no. of remote control:  +# devices being controlled by this remote: PVR 2/350 +# + +begin remote + +  name  hauppauge_pvr +  bits           13 +  flags RC5|CONST_LENGTH +  eps            30 +  aeps          100 + +  one           969   811 +  zero          969   811 +  plead        1097 +  gap          114605 +  toggle_bit      2 + + +      begin codes +          Power                    0x00000000000017FD +          Go                       0x00000000000017FB +          1                        0x00000000000017C1 +          2                        0x00000000000017C2 +          3                        0x00000000000017C3 +          4                        0x00000000000017C4 +          5                        0x00000000000017C5 +          6                        0x00000000000017C6 +          7                        0x00000000000017C7 +          8                        0x00000000000017C8 +          9                        0x00000000000017C9 +          Back/Exit                0x00000000000017DF +          0                        0x00000000000017C0 +          Menu                     0x00000000000017CD +          Red                      0x00000000000017CB +          Green                    0x00000000000017EE +          Yellow                   0x00000000000017F8 +          Blue                     0x00000000000017E9 +          Ch+                      0x00000000000017E0 +          Ch-                      0x00000000000017E1 +          Vol-                     0x00000000000017D1 +          Vol+                     0x00000000000017D0 +          Ok                       0x00000000000017E5 +          Mute                     0x00000000000017CF +          Blank                    0x00000000000017CC +          Full                     0x00000000000017FC +          Rewind                   0x00000000000017F2 +          Play                     0x00000000000017F5 +          Forward                  0x00000000000017F4 +          Record                   0x00000000000017F7 +          Stop                     0x00000000000017F6 +          Pause                    0x00000000000017F0 +          Replay                   0x00000000000017E4 +          Skip                     0x00000000000017DE +      end codes + +end remote + + +# +# this config file was automatically generated +# using lirc-0.7.0(any) on Sun Nov 28 20:25:09 2004 +# +# contributed by  +# +# brand:   Hauppauge 350 +# Created: G.J. Werler (The Netherlands) +# Project: Mythtv Fedora Pundit-R www.mythtvportal.com +# Date:    2004/11/28 +# model no. of remote control: Hauppauge A415-HPG +# devices being controlled by this remote: PVR-350 +# + +begin remote + +  name  Hauppauge_350 +  bits           13 +  flags RC5|CONST_LENGTH +  eps            30 +  aeps          100 + +  one           969   811 +  zero          969   811 +  plead        1097 +  gap          114605 +  toggle_bit      2 + + +      begin codes +          Go                       0x00000000000017BB +          Power                    0x00000000000017BD +          TV                       0x000000000000179C +          Videos                   0x0000000000001798 +          Music                    0x0000000000001799 +          Pictures                 0x000000000000179A +          Guide                    0x000000000000179B +          Radio                    0x000000000000178C +          Up                       0x0000000000001794 +          Left                     0x0000000000001796 +          Right                    0x0000000000001797 +          Down                     0x0000000000001795 +          OK                       0x00000000000017A5 +          Back/Exit                0x000000000000179F +          Menu/i                   0x000000000000178D +          Vol+                     0x0000000000001790 +          Vol-                     0x0000000000001791 +          Prev.Ch                  0x0000000000001792 +          Mute                     0x000000000000178F +          Ch+                      0x00000000000017A0 +          Ch-                      0x00000000000017A1 +          Record                   0x00000000000017B7 +          Stop                     0x00000000000017B6 +          Rewind                   0x00000000000017B2 +          Play                     0x00000000000017B5 +          Forward                  0x00000000000017B4 +          Replay/SkipBackward      0x00000000000017A4 +          Pause                    0x00000000000017B0 +          SkipForward              0x000000000000179E +          1                        0x0000000000001781 +          2                        0x0000000000001782 +          3                        0x0000000000001783 +          4                        0x0000000000001784 +          5                        0x0000000000001785 +          6                        0x0000000000001786 +          7                        0x0000000000001787 +          8                        0x0000000000001788 +          9                        0x0000000000001789 +          Asterix                  0x000000000000178A +          0                        0x0000000000001780 +          #                        0x000000000000178E +          Red                      0x000000000000178B +          Green                    0x00000000000017AE +          Yellow                   0x00000000000017B8 +          Blue                     0x00000000000017A9 +      end codes + +end remote diff --git a/abs/core-testing/LinHES-config/templates/remotes/hauppauge-grey/lircrc b/abs/core-testing/LinHES-config/templates/remotes/hauppauge-grey/lircrc new file mode 100644 index 0000000..2f1e514 --- /dev/null +++ b/abs/core-testing/LinHES-config/templates/remotes/hauppauge-grey/lircrc @@ -0,0 +1,505 @@ +# lircrc.example.HauppaugeGrey-nativelirc +# 2003-09-17, Robert Kulagowski +# mailto:rkulagow@rocketmail.com +# Save this file in ~/.mythtv/lircrc + +begin +    prog = mythtv +    button = Power +    config = Esc +end + +begin +    prog = mythtv +    button = Go +# Swap the PiP windows +    config = N +end + +begin +    prog = mythtv +    button = 1 +    config = 1 +end + +begin +    prog = mythtv +    button = 2 +    config = 2 +end + +begin +    prog = mythtv +    button = 3 +    config = 3 +end + +begin +    prog = mythtv +    button = 4 +    config = 4 +end + +begin +    prog = mythtv +    button = 5 +    config = 5 +end + +begin +    prog = mythtv +    button = 6 +    config = 6 +end + +begin +    prog = mythtv +    button = 7 +    config = 7 +end + +begin +    prog = mythtv +    button = 8 +    config = 8 +end + +begin +    prog = mythtv +    button = 9 +    config = 9 +end + +begin +    prog = mythtv +    button = Back/Exit +    config = Esc +end + +begin +    prog = mythtv +    button = 0 +    config = 0 +end + +begin +    prog = mythtv +    button = Menu +    config = M +end + +# Below are keys used with the Hauppauge Grey remote + +begin +   prog = mythtv +# This is the Red key +# We'll use it for "Delete" +   button = Red +   config = D +end + +begin +   prog = mythtv +# This is the Green key +# We'll use it for "Information" +   button = Green +   config = I +end + +# Note the "repeat = " strings in the volume and channel. +# This means that if you hold down the key, every nth instance will be +# passed.  This depends on your system, so you may want to increase or +# decrease this and see what happens.  repeat = 1 is probably too +# fast. + +begin +  prog = mythtv +# This is the Yellow key +# Use it as a volume key +  button = Yellow +  repeat = 3 +  config = F10 +end + +begin +  prog = mythtv +# This is the Blue key +# Use it as a volume key +  button = Blue +  repeat = 3 +  config = F11 +end + +begin +    prog = mythtv +    button = Ch+ +# This is the "up" on the central diamond +    repeat = 3 +    config = Up +end + +begin +    prog = mythtv +    button = Ch- +# This is the "down" on the central diamond +    repeat = 3 +    config = Down +end + +begin +    prog = mythtv +    button = Vol- +# This is the "left" on the central diamond +    repeat = 3 +    config = Left +end + +begin +    prog = mythtv +    button = Vol+ +# This is the "right" on the central diamond +    repeat = 3 +    config = Right +end + +begin +    prog = mythtv +# Middle button on the diamond +    button = Ok +    config = Return +end + +begin +    prog = mythtv +    button = Mute +    config = F9 +end + +begin +   prog = mythtv +# Change focus for PiP (to change channel in the other window) +   button = Blank +   config = B +end + +begin +   prog = mythtv +# Toggle PiP on/off +   button = Full +   config = V +end + +begin +    prog = mythtv +    button = Rewind +    config = Left +end + +begin +    prog = mythtv +    button = Play +    config = P +end + +begin +    prog = mythtv +    button = Forward +    config = Right +end + +begin +  prog = mythtv +  button = Record +  config = R +end + +begin +   prog = mythtv +# Teletext +   button = Stop +   config = T +end + +begin +    prog = mythtv +    button = Pause +    config = P +end + +begin +   prog = mythtv +   button = Replay +# Use for backwards commercial skip +    config = Q +end + +begin +   prog = mythtv +   button = Skip +# Use for forward commercial skip +    config = Z +end + +#MPlayer +begin +   prog = mplayer +   button = Power +   config = quit +end + +begin +   prog = mplayer +   button = Menu +   config = osd +end + +begin +   prog = mplayer +   button = Rewind +   config = seek -10 +   repeat = 1 +end + +begin +   prog = mplayer +   button = Forward +   config = seek +10 +   repeat = 1 +end + +begin +   prog = mplayer +   button = Replay +   config = seek -60 +   repeat = 1 +end + +begin +   prog = mplayer +   button = Skip +   config = seek +60 +   repeat = 1 +end + +begin +    prog = mplayer +    button = Pause +    config = pause +end + +begin +    prog = mplayer +    button = Play +    config = pause +end + +begin +   prog = mplayer +   button = Back/Exit +   config = quit +end + +begin +   prog = mplayer +   button = Vol+ +   config = volume +1 +   repeat = 1 +end + +begin +   prog = mplayer +   button = Vol- +   config = volume -1 +   repeat = 1 +end + +begin +   prog = mplayer +   button = Mute +   config = mute +end +##XINE + + begin + prog = xine + button = Play + repeat = 3 + config = Play + end + + begin + prog = xine + button = Stop + repeat = 3 + config = Stop + end + + begin + prog = xine + button = Back/Exit + config = Quit + end + + begin + prog = xine + button = Pause + repeat = 3 + config = Pause + end + + begin + prog = xine + button = Ch+ + repeat = 4 + config = EventUp + end + + begin + prog = xine + button = Ch- + repeat = 4 + config = EventDown + end + + begin + prog = xine + button = Vol- + repeat = 4 + config = EventLeft + end + + begin + prog = xine + button = Vol+ + repeat = 4 + config = EventRight + end + + begin + prog = xine + button = Ok + repeat = 0 + config = EventSelect + end + + begin + prog = xine + button = Menu + repeat = 0 + config = Menu + end + + #vol down + begin + prog = xine + button = Yellow + repeat = 1 + config = Volume- + end + + #vol up + begin + prog = xine + button = Red + repeat = 1 + config = Volume+ + end + + begin + prog = xine + button = Forward + repeat = 2 + config = SeekRelative+30 + end + + begin + prog = xine + button = Rewind + repeat = 2 + config = SeekRelative-30 + end + + #ch up + begin + prog = xine + button = Green + repeat = 1 + config = SeekRelative+60 + end + + #ch down + begin + prog = xine + button = Blue + repeat = 1 + config = SeekRelative-60 + end + + #sleep + begin + prog = xine + button = Go + repeat = 1 + config = ZoomIn + end + + #display + begin + prog = xine + button = Skip + repeat = 1 + config = ZoomOut + end + + #skip chapter forward + begin + prog = xine + button = Skip + repeat = 1 + config = EventNext + end + + #skip chapter backward + begin + prog = xine + button = Replay + repeat = 1 + config = EventPrior + end + + begin + prog = lircnav + button = Vol- + config = page_down + end + + begin + prog = lircnav + button = Vol+ + config = page_up + end + + begin + prog = lircnav + button = Ch+ + config = up + end + + begin + prog = lircnav + button = Ch- + config = down + end + + begin + prog = lircnav + button = Ok + config = select + end + + begin + prog = lircnav + button = Power + config = quit + end + diff --git a/abs/core-testing/LinHES-config/templates/remotes/hauppauge-grey/preview.jpg b/abs/core-testing/LinHES-config/templates/remotes/hauppauge-grey/preview.jpgBinary files differ new file mode 100644 index 0000000..a40a1e8 --- /dev/null +++ b/abs/core-testing/LinHES-config/templates/remotes/hauppauge-grey/preview.jpg diff --git a/abs/core-testing/LinHES-config/templates/remotes/i2c.id b/abs/core-testing/LinHES-config/templates/remotes/i2c.id new file mode 100644 index 0000000..50e89e9 --- /dev/null +++ b/abs/core-testing/LinHES-config/templates/remotes/i2c.id @@ -0,0 +1,5 @@ +0070:4000|Hauppauge|WinTV PVR 250|hauppauge-grey +0070:4009|Hauppauge|WinTV PVR 250|hauppauge-grey +0070:4801|Hauppauge|WinTV PVR 250|hauppauge-grey +0070:4803|Hauppauge|WinTV PVR 250|hauppauge-grey +0070:0003|Hauppauge|WinTV PVR 250|hauppauge-grey
\ No newline at end of file diff --git a/abs/core-testing/LinHES-config/templates/samba/smb.conf.home b/abs/core-testing/LinHES-config/templates/samba/smb.conf.home index b850a7d..c0f3136 100755 --- a/abs/core-testing/LinHES-config/templates/samba/smb.conf.home +++ b/abs/core-testing/LinHES-config/templates/samba/smb.conf.home @@ -1,5 +1,5 @@  [home] -   path = /data/home/mythtv/ +   path = /home/mythtv/     public = yes     only guest = yes     writeable  = yes diff --git a/abs/core-testing/LinHES-config/templates/samba/smb.conf.media b/abs/core-testing/LinHES-config/templates/samba/smb.conf.media index 6a4ec91..3526933 100755 --- a/abs/core-testing/LinHES-config/templates/samba/smb.conf.media +++ b/abs/core-testing/LinHES-config/templates/samba/smb.conf.media @@ -1,5 +1,5 @@  [media] -   path = /data/media +   path = /myth     public = yes     only guest = yes     writeable  = yes diff --git a/abs/core-testing/LinHES-system/PKGBUILD b/abs/core-testing/LinHES-system/PKGBUILD index 6403dbd..cad31f3 100644 --- a/abs/core-testing/LinHES-system/PKGBUILD +++ b/abs/core-testing/LinHES-system/PKGBUILD @@ -1,6 +1,6 @@  pkgname=LinHES-system  pkgver=1.0 -pkgrel=14 +pkgrel=17  arch=('i686')  MVDIR=$startdir/pkg/usr/LH  BINDIR=$startdir/pkg/usr/bin @@ -8,7 +8,7 @@ install=LinHES.install  pkgdesc="scripts and things related to having a automated system"  depends=() -binfiles="LinHES-start optimize_mythdb.py myth_mtc.py myth_mtc.sh LinHES-run firstboot.sh" +binfiles="LinHES-start optimize_mythdb.py myth_mtc.py myth_mtc.sh LinHES-run firstboot.sh load-modules-mythvantage.sh"  source=(LinHES-session LinHES-profile.sh $binfiles) diff --git a/abs/core-testing/LinHES-system/load-modules-mythvantage.sh b/abs/core-testing/LinHES-system/load-modules-mythvantage.sh new file mode 100755 index 0000000..8382a29 --- /dev/null +++ b/abs/core-testing/LinHES-system/load-modules-mythvantage.sh @@ -0,0 +1,32 @@ +#!/bin/bash +#/usr/bin/load-modules-mythvantage.sh  UNLOAD LCD +. /etc/systemconfig + +case $1 in +UNLOAD|unload ) +            MODULELIST=`grep /etc/modules.mythvantage $2` +            for i in $MODULELIST +            do +                /sbin/rmmod $i +            done + +            ;; + +   *)   echo "- Loading MythVantage-modules" +        #try to load the cx88 modules +        if [ ! x$SystemType = xFrontend_only ] +        then +        	/sbin/modprobe cx88-dvb 2>/dev/null +        fi + +        if [ -f /etc/modules.mythvantage ] +        then +	       while read line +	       do +                module=`echo $line |cut -d# -f1` +	           /sbin/modprobe $module + +	       done < /etc/modules.mythvantage +        fi +esac + diff --git a/abs/core-testing/lighttpd/PKGBUILD b/abs/core-testing/lighttpd/PKGBUILD index 0b42db7..db98bc4 100644 --- a/abs/core-testing/lighttpd/PKGBUILD +++ b/abs/core-testing/lighttpd/PKGBUILD @@ -1,6 +1,6 @@  pkgname=lighttpd  pkgver=1.4.20 -pkgrel=6 +pkgrel=12  pkgdesc='a secure, fast, compliant and very flexible web-server'  license=('custom')  arch=('i686' 'x86_64') @@ -15,11 +15,11 @@ optdepends=('libxml2: mod_webdav' \              'sqlite3: mod_webdav' \              'gdbm: mod_trigger_b4_dl' \              ) -backup=('etc/lighttpd/lighttpd.conf' 'etc/logrotate.d/lighttpd') +backup=('etc/lighttpd/lighttpd.conf' 'etc/logrotate.d/lighttpd' 'etc/lighttpd/auth-inc.conf')  options=('!libtool' 'emptydirs')  install='lighttpd.install'  source=("http://www.lighttpd.net/download/lighttpd-${pkgver}.tar.bz2" \ -        'lighttpd.rc.d' 'lighttpd.logrotate.d' lighttpd.conf) +        'lighttpd.rc.d' 'lighttpd.logrotate.d' lighttpd.conf auth-inc.conf)  md5sums=('ed6ee0bb714f393219a32768d86984d8'           'bd690eee0d9e51857448770a151023b0' @@ -64,6 +64,7 @@ build() {  	#    -e 's|/usr/local/bin/php-cgi|/usr/bin/php-cgi|' \  	#    -i ${pkgdir}/etc/lighttpd/lighttpd.conf || return 1  	install -D -m644 $startdir/src/lighttpd.conf $pkgdir/etc/lighttpd/lighttpd.conf +	install -D -m644 $startdir/src/auth-inc.conf $pkgdir/etc/lighttpd/auth-inc.conf  	install -D -m644 COPYING $pkgdir/usr/share/licenses/$pkgname/COPYING  } diff --git a/abs/core-testing/lighttpd/_changelog b/abs/core-testing/lighttpd/_changelog index 202ea2f..439f42d 100644 --- a/abs/core-testing/lighttpd/_changelog +++ b/abs/core-testing/lighttpd/_changelog @@ -1 +1,2 @@  changed docroot to /data/srv/ +modified auth to require valid user (include auth-inc.conf) diff --git a/abs/core-testing/lighttpd/auth-inc.conf b/abs/core-testing/lighttpd/auth-inc.conf new file mode 100644 index 0000000..21c4c55 --- /dev/null +++ b/abs/core-testing/lighttpd/auth-inc.conf @@ -0,0 +1,12 @@ +auth.backend               = "plain" +auth.backend.plain.userfile = "/etc/lighttpd/lighttpd.user" + + +auth.require               = ( "/mythweb" => +                               ( +                                 "method"  => "basic", +                                 "realm"   => "MythWeb", +                                 "require" => "valid-user" +                               ) +			)                                    + diff --git a/abs/core-testing/lighttpd/lighttpd.conf b/abs/core-testing/lighttpd/lighttpd.conf index efcd219..e2c60da 100644 --- a/abs/core-testing/lighttpd/lighttpd.conf +++ b/abs/core-testing/lighttpd/lighttpd.conf @@ -18,7 +18,7 @@ server.modules              = (                                  "mod_access",  #                               "mod_cml",  #                               "mod_trigger_b4_dl", -#                               "mod_auth", +                               "mod_auth",  #                               "mod_status",                                 "mod_setenv",                                 "mod_fastcgi", @@ -263,12 +263,12 @@ cgi.assign                 = ( ".pl"  => "/usr/bin/perl",  #auth.backend.ldap.base-dn  = "dc=my-domain,dc=com"  #auth.backend.ldap.filter   = "(uid=$)" -#auth.require               = ( "/server-status" => +#auth.require               = ( "/mythweb =>  #                               ( -#                                 "method"  => "digest", +#                                 "method"  => "plain",  #                                 "realm"   => "download archiv", -#                                 "require" => "user=jan" -#                               ), +#                                 "require" => "valid-user" +#                               )  #                               "/server-config" =>  #                               (  #                                 "method"  => "digest", @@ -337,7 +337,7 @@ cgi.assign                 = ( ".pl"  => "/usr/bin/perl",  #index-file.names += (foo + ".php")  #### include -#include /etc/lighttpd/lighttpd-inc.conf +#include "/etc/lighttpd/auth-inc.conf"  ## same as above if you run: "lighttpd -f /etc/lighttpd/lighttpd.conf"  #include "lighttpd-inc.conf" diff --git a/abs/core-testing/lighttpd/lighttpd.install b/abs/core-testing/lighttpd/lighttpd.install index 9d98d41..bf4c132 100644 --- a/abs/core-testing/lighttpd/lighttpd.install +++ b/abs/core-testing/lighttpd/lighttpd.install @@ -1,16 +1,6 @@ +pre_upgrade() { +    mv /etc/lighttpd/lighttpd.conf  /etc/lighttpd/lighttpd.conf.old +}  post_upgrade() { -	if [ $(vercmp '1.4.19-1' $2) -ge 0 ]; then -	echo ' -	==> New default DocumentRoot - -	lighttpd uses /srv/http as default DocumentRoot. -	You can still use your current DocumentRoot - -	==> New default user and group - -	Instead of "nobody" lighttpd runs as user/group "http" by default now. You might -	want to adjust your lighttpd.conf according to this change. But you can still -	run lighttpd as nobody. -	' -	fi +    touch /etc/lighttpd/lighttpd.user  } diff --git a/abs/core-testing/linhes-live/PKGBUILD b/abs/core-testing/linhes-live/PKGBUILD index 2052781..f718e22 100644 --- a/abs/core-testing/linhes-live/PKGBUILD +++ b/abs/core-testing/linhes-live/PKGBUILD @@ -2,7 +2,7 @@  # 2008.09.25  pkgname=linhes-live  pkgver=5.3.3 -pkgrel=6 +pkgrel=12  pkgdesc="LinHes compulsory components for the Live System."  url="http://KnoppMyth.net" diff --git a/abs/core-testing/linhes-live/etc/live-shutdown b/abs/core-testing/linhes-live/etc/live-shutdown index 459d4f2..6e12d22 100644 --- a/abs/core-testing/linhes-live/etc/live-shutdown +++ b/abs/core-testing/linhes-live/etc/live-shutdown @@ -37,17 +37,49 @@ f_swapoff ()  f_remountro ()  { -    if [ -n "${ejectdev}" ]; then -        echo "Ejecting live CD" -        eject ${ejectdev} -        echo "========================================" -        echo "It's safe to switch the computer off now" -        echo -ne "Press Enter to continue" -        read junk +    bootdev=`cat /.livesys/bootdevice` +    bootdev=`basename $bootdev` +    for i in `ls -H /dev/cd/*` +    do +        cdrom=`basename $i|cut -d- -f2` +        if [ x$cdrom = x$bootdev ] +        then +            ejectdev=$cdrom +        fi +        break +    done +    lspci |grep -q VMware +    if [ !   $? = 0 ] +    then +        if [ -n "${ejectdev}" ] +        then +            echo "Ejecting CD" +            eject ${ejectdev} +            echo "========================================" +            echo "Tray will retract after 10 seconds" +            for timer in `seq -w 10 -1 0` +            do +                #echo -n  $timer '\x08' +                echo -ne   "\t"$timer '\010\010\010\010' +                sleep 1 +            done +            echo +            echo "========================================" +            eject -t ${ejectdev} +            echo +            echo "It's safe to switch the computer off now" +            #echo -ne "Press Enter to continue" +            #read junk +        else +            echo "Boot device is not a cdrom, no need to eject" +        fi +    else +        echo "VMWARE detected, not ejecting the CD"      fi  }  #Preloads these commands so we can eject the CD.  # +seq --help >/dev/null 2>&1  eject --help >/dev/null 2>&1  halt --help >/dev/null 2>&1  poweroff --help >/dev/null 2>&1 diff --git a/abs/core-testing/linhes-live/etc/rc.shutdown-live b/abs/core-testing/linhes-live/etc/rc.shutdown-live index 896bae2..79eae47 100755 --- a/abs/core-testing/linhes-live/etc/rc.shutdown-live +++ b/abs/core-testing/linhes-live/etc/rc.shutdown-live @@ -150,7 +150,7 @@ fi  #F Remount / ro  f_remountro  #Eject the CD -eject +  # Power off or reboot  if [ "$RUNLEVEL" = "0" ]; then      printsep diff --git a/abs/core-testing/mythtv/trunk/mythtv-svn/DeviceReadBuffer-polltimeout.2.patch b/abs/core-testing/mythtv/trunk/mythtv-svn/DeviceReadBuffer-polltimeout.2.patch new file mode 100644 index 0000000..5bb713f --- /dev/null +++ b/abs/core-testing/mythtv/trunk/mythtv-svn/DeviceReadBuffer-polltimeout.2.patch @@ -0,0 +1,219 @@ +Index: libs/libmythtv/DeviceReadBuffer.h +=================================================================== +--- libs/libmythtv/DeviceReadBuffer.h	(revision 18515) ++++ libs/libmythtv/DeviceReadBuffer.h	(working copy) +@@ -59,7 +59,7 @@ +     void IncrReadPointer(uint len); +  +     bool HandlePausing(void); +-    bool Poll(void) const; ++    bool Poll(void); +     uint WaitForUnused(uint bytes_needed) const; +     uint WaitForUsed  (uint bytes_needed) const; +  +Index: libs/libmythtv/DeviceReadBuffer.cpp +=================================================================== +--- libs/libmythtv/DeviceReadBuffer.cpp	(revision 18515) ++++ libs/libmythtv/DeviceReadBuffer.cpp	(working copy) +@@ -90,9 +90,14 @@ +  + void DeviceReadBuffer::Start(void) + { +-    lock.lock(); +-    bool was_running = running; +-    lock.unlock(); ++    bool was_running; ++ ++    { ++        QMutexLocker locker(&lock); ++        was_running = running; ++        error = false; ++    } ++ +     if (was_running) +     { +         VERBOSE(VB_IMPORTANT, LOC_ERR + "Start(): Already running."); +@@ -104,6 +109,8 @@ +     { +         VERBOSE(VB_IMPORTANT, +                 LOC_ERR + QString("Start(): pthread_create failed.") + ENO); ++ ++        QMutexLocker locker(&lock); +         error = true; +     } + } +@@ -118,21 +125,25 @@ +     used          = 0; +     readPtr       = buffer; +     writePtr      = buffer; ++ ++    error         = false; + } +  + void DeviceReadBuffer::Stop(void) + { +     bool was_running = IsRunning(); +-    lock.lock(); +-    run = false; +-    lock.unlock(); +  +     if (!was_running) +     { +-        VERBOSE(VB_IMPORTANT, LOC_ERR + "Stop(): Not running."); ++        VERBOSE(VB_IMPORTANT, LOC + "Stop(): Not running."); +         return; +     } +  ++    { ++        QMutexLocker locker(&lock); ++        run = false; ++    } ++ +     pthread_join(thread, NULL); + } +  +@@ -229,10 +240,11 @@ + { +     uint      errcnt = 0; +  +-    lock.lock(); +-    run     = true; +-    running = true; +-    lock.unlock(); ++    { ++        QMutexLocker locker(&lock); ++        run     = true; ++        running = true; ++    } +  +     while (run) +     { +@@ -248,6 +260,15 @@ +         if (using_poll && !Poll()) +             continue; +  ++        { ++            QMutexLocker locker(&lock); ++            if (error) ++            { ++                VERBOSE(VB_RECORD, LOC + "fill_ringbuffer: error state"); ++                break; ++            } ++        } ++ +         // Limit read size for faster return from read +         size_t read_size = +             min(dev_read_size, (size_t) WaitForUnused(TSPacket::SIZE)); +@@ -268,9 +289,10 @@ +         } +     } +  +-    lock.lock(); +-    running = false; +-    lock.unlock(); ++    { ++        QMutexLocker locker(&lock); ++        running = false; ++    } + } +  + bool DeviceReadBuffer::HandlePausing(void) +@@ -293,7 +315,7 @@ +     return true; + } +  +-bool DeviceReadBuffer::Poll(void) const ++bool DeviceReadBuffer::Poll(void) + { + #ifdef USING_MINGW + #warning mingw DeviceReadBuffer::Poll +@@ -302,31 +324,53 @@ +     return false; + #else +     bool retval = true; +-    while (true) ++    uint timeout_cnt = 0; ++ ++    for (;;) +     { +         struct pollfd polls; +         polls.fd      = _stream_fd; +         polls.events  = POLLIN; +         polls.revents = 0; +  +-        int ret = poll(&polls, 1 /*number of polls*/, 10 /*msec*/); +-        if (IsPauseRequested() || !IsOpen() || !run) ++        int ret = poll(&polls, 1 /*number of polls*/, 250 /*msec*/); ++ ++        if (polls.revents & (POLLERR | POLLHUP | POLLNVAL)) +         { ++            VERBOSE(VB_IMPORTANT, LOC + "poll error"); ++            error = true; ++            return true; ++        } ++ ++        if (!run || !IsOpen() || IsPauseRequested()) ++        { +             retval = false; +             break; // are we supposed to pause, stop, etc. +         } +  +         if (ret > 0) +             break; // we have data to read :) +-        if ((-1 == ret) && (EOVERFLOW == errno)) +-            break; // we have an error to handle +- +-        if ((-1 == ret) && ((EAGAIN == errno) || (EINTR  == errno))) +-            continue; // errors that tell you to try again +-        if (ret == 0) +-            continue; // timed out, try again +- +-        usleep(2500); ++        if (ret < 0) ++        { ++            if ((EOVERFLOW == errno)) ++                break; // we have an error to handle ++            if ((EAGAIN == errno) || (EINTR  == errno)) ++                continue; // errors that tell you to try again ++            usleep(2500); ++        } ++        else //  ret == 0 ++        { ++            if (++timeout_cnt > 9) ++            { ++                VERBOSE(VB_RECORD, LOC_ERR + "Poll giving up"); ++                QMutexLocker locker(&lock); ++                error = true; ++                return true; ++            } ++            if (timeout_cnt % 2) ++                VERBOSE(VB_RECORD, LOC_ERR + QString("Poll timeout (%1)") ++                        .arg(timeout_cnt)); ++        } +     } +     return retval; + #endif //!USING_MINGW +@@ -360,9 +404,9 @@ +  +         if (++errcnt > 5) +         { +-            lock.lock(); ++            QMutexLocker locker(&lock); ++            VERBOSE(VB_RECORD, LOC + "Too many errors."); +             error = true; +-            lock.unlock(); +             return false; +         } +  +@@ -376,10 +420,8 @@ +             VERBOSE(VB_IMPORTANT, LOC + +                     QString("End-Of-File? fd(%1)").arg(_stream_fd)); +  +-            lock.lock(); ++            QMutexLocker locker(&lock); +             eof = true; +-            lock.unlock(); +- +             return false; +         } +         usleep(500); diff --git a/abs/core-testing/mythtv/trunk/mythtv-svn/PKGBUILD b/abs/core-testing/mythtv/trunk/mythtv-svn/PKGBUILD new file mode 100755 index 0000000..b5dc31d --- /dev/null +++ b/abs/core-testing/mythtv/trunk/mythtv-svn/PKGBUILD @@ -0,0 +1,78 @@ +pkgname=mythtv-svn +pkgver=19295 +pkgrel=1 +pkgdesc="A personal video recorder for Linux" +url="http://www.mythtv.org" +license="GPL" +depends=('lame' 'libmysqlclient' 'alsa-lib'  'wget' 'qt' 'x-server' 'freetype2' 'libmpeg2' 'libxml2' 'libraw1394' 'lirc' 'perl-date-manip' 'libavc1394' 'libdc1394' 'libiec61883') +makedepends=('subversion') +conflicts=(mythtv) +replaces=() +backup=() +options=(!strip) +MAKEFLAGS="-j6" +install='mythtv.install' + +patchs=('DeviceReadBuffer-polltimeout.2.patch' 'hdpvr-v4lchannel-tweak.patch' 'mpegrecorder-hdpvr-v1.1.patch' 'mythcommflag-avidemux.2.patch') +source=('mythbackend' 'myth.sh'  'smolt_jump.patch' 'svn_main_menu_popup.patch' `echo ${patchs[@]:0}` ) +arch=('i686') +md5sums=() + + + +_svntrunk=http://cvs.mythtv.org/svn/trunk/mythtv +_svnmod=mythtv + +build() { + +    svn co $_svntrunk --config-dir ./ -r $pkgver $_svnmod +    cd $startdir/src/mythtv +    echo "--------------------------applying patches----------------------------------------------------" +	patch -Np0 -i  $startdir/src/smolt_jump.patch #|| return 1 +	patch -Np0 -i  $startdir/src/svn_main_menu_popup.patch #||return 1 + +    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 +    make distclean +    ./configure --prefix=/usr --enable-xvmc --enable-xvmc-pro --enable-opengl-vsync --enable-dvb --enable-firewire --compile-type=release --with-bindings=perl --disable-audio-arts --disable-xrandr  +    . /etc/profile +    make +    make INSTALL_ROOT=$startdir/pkg install +     +  #Patch the xml LinHES style +  cp -r $startdir/menu-xml/*.xml $startdir/pkg/usr/share/mythtv +  cd $startdir/pkg/usr/share/mythtv +  patch -p0 < $startdir/menu-xml/mainmenu.xml.patch +  patch -p0 < $startdir/menu-xml/optical_menu.xml.patch +  patch -p0 < $startdir/menu-xml/library.xml.patch +     +    #   mkdir -p $startdir/pkg/usr/share/mythtv/contrib +    #   mkdir -p $startdir/pkg/etc/rc.d +    #   mkdir -p $startdir/pkg/var/log/mythtv +    #   mkdir -p $startdir/pkg/etc/profile.d +    #   install -m0755 ../myth.sh $startdir/pkg/etc/profile.d/ +     +    # install contrib +    #   mkdir -p $startdir/pkg/usr/local/share/mythtv/contrib || return 1 +    #   cp -rp contrib/* $startdir/pkg/usr/local/share/mythtv/contrib +    #   echo "-release-fixes"   >  $startdir/pkg/usr/local/share/mythtv/.releasetype    +    # install -m0755 themes/*.ttf $startdir/pkg/usr/local/share/mythtv/themes/ +     +     +    #   mkdir -p $startdir/pkg/usr/lib/ +    #   mv $startdir/pkg/usr/local/lib/perl5 $startdir/pkg/usr/lib/perl5 +    #  cd $startdir/src/mythtv/contrib +    #  gcc -Wall -o firewire_tester firewire_tester.c -liec61883 -lraw1394 +    # install -m0755 firewire_tester $startdir/pkg/usr/local/bin/firewire_tester +    #install -m0755  $startdir/pkg/usr/local/share/mythtv/contrib/optimize_mythdb.pl  $startdir/pkg/usr/local/bin/optimize_mythdb.pl  +    #    cp $startdir/src/myth.find_orphans.pl $startdir/pkg/usr/local/share/mythtv/contrib/myth.find_orphans.pl +    # install -m0755  $startdir/pkg/usr/local/share/mythtv/contrib/myth.find_orphans.pl  $startdir/pkg/usr/local/bin/myth.find_orphans.pl +     + +} diff --git a/abs/core-testing/mythtv/trunk/mythtv-svn/aacdecoder.cpp.patch b/abs/core-testing/mythtv/trunk/mythtv-svn/aacdecoder.cpp.patch new file mode 100644 index 0000000..8796eb4 --- /dev/null +++ b/abs/core-testing/mythtv/trunk/mythtv-svn/aacdecoder.cpp.patch @@ -0,0 +1,12 @@ +--- mythmusic/mythmusic/aacdecoder.cpp.orig	2008-11-19 12:51:48.000000000 -0500 ++++ mythmusic/mythmusic/aacdecoder.cpp	2008-11-19 12:52:42.000000000 -0500 +@@ -17,6 +17,9 @@ + #define FAAD_MODIFIED + #endif +  ++// LinHES need this undefined ++#undef FAAD_MODIFIED ++ + // ANSI C headers + #include <cstdlib> +  diff --git a/abs/core-testing/mythtv/trunk/mythtv-svn/hdpvr-v4lchannel-tweak.patch b/abs/core-testing/mythtv/trunk/mythtv-svn/hdpvr-v4lchannel-tweak.patch new file mode 100644 index 0000000..3535310 --- /dev/null +++ b/abs/core-testing/mythtv/trunk/mythtv-svn/hdpvr-v4lchannel-tweak.patch @@ -0,0 +1,139 @@ +Index: libs/libmythtv/v4lchannel.h +=================================================================== +--- libs/libmythtv/v4lchannel.h	(revision 18874) ++++ libs/libmythtv/v4lchannel.h	(working copy) +@@ -103,6 +103,8 @@ +     VidModV4L2  videomode_v4l2; ///< Current video mode if 'usingv4l2' is true +  +     int         defaultFreqTable; ++    int         prev_inputNumV4L; ++    v4l2_std_id prev_vid_mode; + }; +  + #endif +Index: libs/libmythtv/v4lchannel.cpp +=================================================================== +--- libs/libmythtv/v4lchannel.cpp	(revision 18874) ++++ libs/libmythtv/v4lchannel.cpp	(working copy) +@@ -40,7 +40,8 @@ +       device_name(QString::null),   driver_name(QString::null), +       curList(NULL),                totalChannels(0), +       currentFormat(""),            is_dtv(false), +-      usingv4l2(false),             defaultFreqTable(1) ++      usingv4l2(false),             defaultFreqTable(1), ++      prev_inputNumV4L(-1),         prev_vid_mode(-1) + { + } +  +@@ -795,62 +796,75 @@ +     { +         VERBOSE(VB_CHANNEL, LOC + msg + "(v4l v2)"); +  +-        int ioctlval = ioctl(videofd, VIDIOC_S_INPUT, &inputNumV4L); ++	int ioctlval; ++	bool streamingDisabled = false; ++	int  streamType = V4L2_BUF_TYPE_VIDEO_CAPTURE; +  +-        // ConvertX (wis-go7007) requires streaming to be disabled +-        // before an input switch, do this if initial switch failed. +-        bool streamingDisabled = false; +-        int  streamType = V4L2_BUF_TYPE_VIDEO_CAPTURE; +-        if ((ioctlval < 0) && (errno == EBUSY)) ++        if (prev_inputNumV4L != inputNumV4L) +         { +-            ioctlval = ioctl(videofd, VIDIOC_STREAMOFF, &streamType); ++            ioctlval = ioctl(videofd, VIDIOC_S_INPUT, &inputNumV4L); ++ ++            // ConvertX (wis-go7007) requires streaming to be disabled ++            // before an input switch, do this if initial switch failed. ++            if ((ioctlval < 0) && (errno == EBUSY)) ++            { ++                ioctlval = ioctl(videofd, VIDIOC_STREAMOFF, &streamType); ++                if (ioctlval < 0) ++                { ++                    VERBOSE(VB_IMPORTANT, LOC_ERR + msg + ++                            "\n\t\t\twhile disabling streaming (v4l v2)" + ENO); ++ ++                    ok = false; ++                    ioctlval = 0; ++                } ++                else ++                { ++                    streamingDisabled = true; ++ ++                    // Resend the input switch ioctl. ++                    ioctlval = ioctl(videofd, VIDIOC_S_INPUT, &inputNumV4L); ++                } ++            } ++ +             if (ioctlval < 0) +             { +                 VERBOSE(VB_IMPORTANT, LOC_ERR + msg + +-                        "\n\t\t\twhile disabling streaming (v4l v2)" + ENO); ++                        "\n\t\t\twhile setting input (v4l v2)" + ENO); +  +                 ok = false; +-                ioctlval = 0; +             } +-            else +-            { +-                streamingDisabled = true; +  +-                // Resend the input switch ioctl. +-                ioctlval = ioctl(videofd, VIDIOC_S_INPUT, &inputNumV4L); +-            } ++            prev_inputNumV4L = inputNumV4L; +         } +  +-        if (ioctlval < 0) +-        { +-            VERBOSE(VB_IMPORTANT, LOC_ERR + msg + +-                    "\n\t\t\twhile setting input (v4l v2)" + ENO); +- +-            ok = false; +-        } +- +         v4l2_std_id vid_mode = format_to_mode(newFmt, 2); +-        ioctlval = ioctl(videofd, VIDIOC_S_STD, &vid_mode); +-        if (ioctlval < 0) +-        { +-            VERBOSE(VB_IMPORTANT, LOC_ERR + msg + +-                    "\n\t\t\twhile setting format (v4l v2)" + ENO); +  +-            ok = false; +-        } +- +-        // ConvertX (wis-go7007) requires streaming to be disabled +-        // before an input switch, here we try to re-enable streaming. +-        if (streamingDisabled) ++        if (prev_vid_mode != vid_mode) +         { +-            ioctlval = ioctl(videofd, VIDIOC_STREAMON, &streamType); ++            ioctlval = ioctl(videofd, VIDIOC_S_STD, &vid_mode); +             if (ioctlval < 0) +             { +                 VERBOSE(VB_IMPORTANT, LOC_ERR + msg + +-                        "\n\t\t\twhile reenabling streaming (v4l v2)" + ENO); ++                        "\n\t\t\twhile setting format (v4l v2)" + ENO); +  +                 ok = false; +             } ++ ++            // ConvertX (wis-go7007) requires streaming to be disabled ++            // before an input switch, here we try to re-enable streaming. ++            if (streamingDisabled) ++            { ++                ioctlval = ioctl(videofd, VIDIOC_STREAMON, &streamType); ++                if (ioctlval < 0) ++                { ++                    VERBOSE(VB_IMPORTANT, LOC_ERR + msg + ++                            "\n\t\t\twhile reenabling streaming (v4l v2)" + ++                            ENO); ++ ++                    ok = false; ++                } ++            } ++            prev_vid_mode = vid_mode; +         } +     } +  diff --git a/abs/core-testing/mythtv/trunk/mythtv-svn/menu-xml/HOST_SETTINGS.xml b/abs/core-testing/mythtv/trunk/mythtv-svn/menu-xml/HOST_SETTINGS.xml new file mode 100644 index 0000000..f257920 --- /dev/null +++ b/abs/core-testing/mythtv/trunk/mythtv-svn/menu-xml/HOST_SETTINGS.xml @@ -0,0 +1,87 @@ +<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_SYSTEM_SETUP_MENU</type> +      <text>System type</text> +        <action>EXEC  mythinstall -s hostype </action> +   </button> + +   <button> +       <type>MV_MISC_SETUP_MENU</type> +      <text>Misc 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</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</text> +       <action>EXEC  mythinstall -s accesscontrol </action> +</button> + +<button> +       <type>MV_USER_SETUP_MENU</type> +       <text>Password </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/trunk/mythtv-svn/menu-xml/is.xml b/abs/core-testing/mythtv/trunk/mythtv-svn/menu-xml/is.xml new file mode 100644 index 0000000..65935cf --- /dev/null +++ b/abs/core-testing/mythtv/trunk/mythtv-svn/menu-xml/is.xml @@ -0,0 +1,33 @@ +<mythmenu name="Internet Steams"> +   <button> +     <type>MOVIETIMES</type> +     <text>Apple Trailers</text> +     <action>MENU appletrailer.xml</action> +   </button> + +   <button> +     <type>STREAM</type> +     <text>MythStream</text> +     <action>PLUGIN mythstream</action> +     <depends>mythstream</depends> +    </button> + +   <button> +     <type>STREAM</type> +     <text>Miro Player</text> +     <action>EXEC /usr/bin/democracyplayer</action> +   </button> + +   <button> +     <type>KnoppMyth</type> +     <text>Sirius Satellite Radio</text> +     <action>MENU siriusmenu.xml</action> +   </button> + +   <button> +     <type>KnoppMyth</type> +     <text>XM Satellite Radio</text> +     <action>MENU xmmenu.xml</action> +   </button> + +</mythmenu> diff --git a/abs/core-testing/mythtv/trunk/mythtv-svn/menu-xml/knoppmyth.xml b/abs/core-testing/mythtv/trunk/mythtv-svn/menu-xml/knoppmyth.xml new file mode 100644 index 0000000..8aa6134 --- /dev/null +++ b/abs/core-testing/mythtv/trunk/mythtv-svn/menu-xml/knoppmyth.xml @@ -0,0 +1,55 @@ +<mythmenu name="KnoppMyth"> + +   <button> +     <type>BACKUP</type> +     <text>Backup KnoppMyth</text> +     <action>MENU mythbackup.xml</action> +   </button> + +   <button> +     <type>RESTORE</type> +     <text>Restore KnoppMyth</text> +     <action>MENU mythrestore.xml</action> +   </button> +    +   <button> +     <type>Motion</type> +     <text>Motion</text> +     <action>MENU motion.xml</action> +   </button> +<!-- +   <button> +     <type>POWER</type> +     <text>Power Off </text> +     <action>EXEC /usr/bin/sudo halt</action> +   </button> +    +   <button> +     <type>POWER</type> +     <text>Reboot</text> +     <action>EXEC /usr/bin/sudo reboot</action> +   </button> + +   <button> +     <type>VERSION</type> +     <text>Version</text> +     <action>EXEC /usr/local/bin/ver.sh</action> +   </button> +--> + +   <button> +       <type>MV_SETUP_MENU</type> +       <text>MythVantage Settings</text> +       <action>MENU HOST_SETTINGS.xml</action> + +   </button> +<!-- +   <button> +       <type>MV_TEMPLATE</type> +       <text>Settings profile manager</text> +        <action>EXEC  mythinstall -t </action> + +   </button> +--> +</mythmenu> + diff --git a/abs/core-testing/mythtv/trunk/mythtv-svn/menu-xml/library.xml.patch b/abs/core-testing/mythtv/trunk/mythtv-svn/menu-xml/library.xml.patch new file mode 100644 index 0000000..ef08f0c --- /dev/null +++ b/abs/core-testing/mythtv/trunk/mythtv-svn/menu-xml/library.xml.patch @@ -0,0 +1,13 @@ +--- library.xml.orig	2008-11-13 11:26:10.000000000 -0500 ++++ library.xml	2008-11-19 11:55:55.000000000 -0500 +@@ -120,9 +120,7 @@ +    <button> +      <type>STREAM</type> +      <text>Play Online Streams</text> +-     <text lang="HE">נגן מדיה מכוונת</text> +-     <action>PLUGIN mythstream</action> +-     <depends>mythstream</depends> ++     <action>MENU is.xml</action> +    </button> +  +    <button> diff --git a/abs/core-testing/mythtv/trunk/mythtv-svn/menu-xml/mainmenu.xml.patch b/abs/core-testing/mythtv/trunk/mythtv-svn/menu-xml/mainmenu.xml.patch new file mode 100644 index 0000000..f4f57f1 --- /dev/null +++ b/abs/core-testing/mythtv/trunk/mythtv-svn/menu-xml/mainmenu.xml.patch @@ -0,0 +1,16 @@ +--- mainmenu.xml.orig	2008-11-13 11:26:10.000000000 -0500 ++++ mainmenu.xml	2008-11-19 12:01:57.000000000 -0500 +@@ -188,6 +188,13 @@ +      <action>MENU util_menu.xml</action> +    </button> +  ++ ++   <button> ++     <type>MENU_UTILITIES_SETUP</type> ++     <text>Service Menu</text> ++     <action>MENU knoppmyth.xml</action> ++   </button> ++ +    <!-- <button> +      <type>SHUTDOWN</type> +      <text>Shutdown</text> diff --git a/abs/core-testing/mythtv/trunk/mythtv-svn/menu-xml/motion.xml b/abs/core-testing/mythtv/trunk/mythtv-svn/menu-xml/motion.xml new file mode 100644 index 0000000..23ebfe2 --- /dev/null +++ b/abs/core-testing/mythtv/trunk/mythtv-svn/menu-xml/motion.xml @@ -0,0 +1,20 @@ +<mythmenu name="Motion"> + +   <button> +     <type>MOTION</type> +     <text>Start Motion</text> +     <action>EXEC sudo /etc/init.d/motion start</action> +   </button> + +   <button> +     <type>MOTION</type> +     <text>Stop Motion</text> +     <action>EXEC sudo /etc/init.d/motion stop</action> +   </button> +    +   <button> +     <type>MOTION</type> +     <text>Clear Motion</text> +     <action>EXEC /usr/local/bin/cm.sh</action> +   </button> +</mythmenu> diff --git a/abs/core-testing/mythtv/trunk/mythtv-svn/menu-xml/optical_menu.xml.patch b/abs/core-testing/mythtv/trunk/mythtv-svn/menu-xml/optical_menu.xml.patch new file mode 100644 index 0000000..7e016a5 --- /dev/null +++ b/abs/core-testing/mythtv/trunk/mythtv-svn/menu-xml/optical_menu.xml.patch @@ -0,0 +1,15 @@ +--- optical_menu.xml.orig	2008-11-19 11:52:44.000000000 -0500 ++++ optical_menu.xml	2008-11-19 12:32:19.000000000 -0500 +@@ -129,6 +129,12 @@ +    </button> +  +    <button> ++      <type>DVD_RIP</type> ++      <text>Import video files from DVD</text> ++      <action>EXEC /usr/local/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/trunk/mythtv-svn/menu-xml/setup.xml b/abs/core-testing/mythtv/trunk/mythtv-svn/menu-xml/setup.xml new file mode 100644 index 0000000..f56bb6f --- /dev/null +++ b/abs/core-testing/mythtv/trunk/mythtv-svn/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/trunk/mythtv-svn/menu-xml/siriusmenu.xml b/abs/core-testing/mythtv/trunk/mythtv-svn/menu-xml/siriusmenu.xml new file mode 100644 index 0000000..e317b36 --- /dev/null +++ b/abs/core-testing/mythtv/trunk/mythtv-svn/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  & 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/trunk/mythtv-svn/menu-xml/xmmenu.xml b/abs/core-testing/mythtv/trunk/mythtv-svn/menu-xml/xmmenu.xml new file mode 100644 index 0000000..6b26d11 --- /dev/null +++ b/abs/core-testing/mythtv/trunk/mythtv-svn/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/trunk/mythtv-svn/mpegrecorder-hdpvr-v1.1.patch b/abs/core-testing/mythtv/trunk/mythtv-svn/mpegrecorder-hdpvr-v1.1.patch new file mode 100644 index 0000000..f292b7f --- /dev/null +++ b/abs/core-testing/mythtv/trunk/mythtv-svn/mpegrecorder-hdpvr-v1.1.patch @@ -0,0 +1,658 @@ +Index: libs/libmythtv/mpegrecorder.h +=================================================================== +--- libs/libmythtv/mpegrecorder.h	(revision 19056) ++++ libs/libmythtv/mpegrecorder.h	(working copy) +@@ -80,11 +80,13 @@ +     uint GetFilteredAudioLayer(void) const; +     uint GetFilteredAudioBitRate(uint audio_layer) const; +  ++    void RestartEncoding(void); +     bool StartEncoding(int fd); +     bool StopEncoding(int fd); +  +     void ResetForNewFile(void); +  ++    bool WaitFor_HDPVR(void); +     void HandleResolutionChanges(void); +  +     inline bool CheckCC(uint pid, uint cc); +@@ -104,7 +106,6 @@ +     // State +     bool recording; +     bool encoding; +-    bool needs_resolution; +     mutable QMutex start_stop_encoding_lock; +     QMutex recording_wait_lock; +     QWaitCondition recording_wait; +@@ -113,7 +114,7 @@ +     bool cleartimeonpause; +  +     // Encoding info +-    int width, height; ++    uint width, height; +     int bitrate, maxbitrate, streamtype, aspectratio; +     int audtype, audsamplerate, audbitratel1, audbitratel2, audbitratel3; +     int audvolume; +Index: libs/libmythtv/mpegrecorder.cpp +=================================================================== +--- libs/libmythtv/mpegrecorder.cpp	(revision 19056) ++++ libs/libmythtv/mpegrecorder.cpp	(working copy) +@@ -19,6 +19,7 @@ + #include <sys/stat.h> + #include <sys/ioctl.h> + #include <sys/time.h> ++#include <sys/poll.h> +  + // avlib headers + extern "C" { +@@ -86,7 +87,7 @@ +     requires_special_pause(false), +     // State +     recording(false),         encoding(false), +-    needs_resolution(false),  start_stop_encoding_lock(QMutex::Recursive), ++    start_stop_encoding_lock(QMutex::Recursive), +     recording_wait_lock(),    recording_wait(), +     // Pausing state +     cleartimeonpause(false), +@@ -487,13 +488,21 @@ +  + bool MpegRecorder::SetFormat(int chanfd) + { ++    uint   idx; +     struct v4l2_format vfmt; +     bzero(&vfmt, sizeof(vfmt)); +  +     vfmt.type = V4L2_BUF_TYPE_VIDEO_CAPTURE; +  +-    if (ioctl(chanfd, VIDIOC_G_FMT, &vfmt) < 0) ++    for (idx = 0; idx < 20; ++idx) +     { ++        if (ioctl(chanfd, VIDIOC_G_FMT, &vfmt) == 0) ++            break; ++        usleep(100 * 1000); ++    } ++ ++    if (idx == 10) ++    { +         VERBOSE(VB_IMPORTANT, LOC_ERR + "Error getting format" + ENO); +         return false; +     } +@@ -501,8 +510,15 @@ +     vfmt.fmt.pix.width = width; +     vfmt.fmt.pix.height = height; +  +-    if (ioctl(chanfd, VIDIOC_S_FMT, &vfmt) < 0) ++    for (idx = 0; idx < 20; ++idx) +     { ++        if (ioctl(chanfd, VIDIOC_S_FMT, &vfmt) == 0) ++            break; ++        usleep(100 * 1000); ++    } ++ ++    if (idx == 20) ++    { +         VERBOSE(VB_IMPORTANT, LOC_ERR + "Error setting format" + ENO); +         return false; +     } +@@ -513,10 +529,19 @@ + /// Set audio language mode + bool MpegRecorder::SetLanguageMode(int chanfd) + { ++    uint   idx; +     struct v4l2_tuner vt; +     bzero(&vt, sizeof(struct v4l2_tuner)); +-    if (ioctl(chanfd, VIDIOC_G_TUNER, &vt) < 0) ++ ++    for (idx = 0; idx < 20; ++idx) +     { ++        if (ioctl(chanfd, VIDIOC_G_TUNER, &vt) == 0) ++            break; ++        usleep(100 * 1000); ++    } ++ ++    if (idx == 20) ++    { +         VERBOSE(VB_IMPORTANT, LOC_WARN + "Unable to get audio mode" + ENO); +         return false; +     } +@@ -549,8 +574,15 @@ +         success = false; +     } +  +-    if (ioctl(chanfd, VIDIOC_S_TUNER, &vt) < 0) ++    for (idx = 0; idx < 20; ++idx) +     { ++        if (ioctl(chanfd, VIDIOC_S_TUNER, &vt) == 0) ++            break; ++        usleep(100 * 1000); ++    } ++ ++    if (idx == 20) ++    { +         VERBOSE(VB_IMPORTANT, LOC_WARN + "Unable to set audio mode" + ENO); +         success = false; +     } +@@ -561,10 +593,19 @@ + bool MpegRecorder::SetRecordingVolume(int chanfd) + { +     // Get volume min/max values ++    uint   idx; +     struct v4l2_queryctrl qctrl; +     qctrl.id = V4L2_CID_AUDIO_VOLUME; +-    if (ioctl(chanfd, VIDIOC_QUERYCTRL, &qctrl) < 0) ++ ++    for (idx = 0; idx < 20; ++idx) +     { ++        if (ioctl(chanfd, VIDIOC_QUERYCTRL, &qctrl) == 0) ++            break; ++        usleep(100 * 1000); ++    } ++ ++    if (idx == 20) ++    { +         VERBOSE(VB_IMPORTANT, LOC_WARN + +                 "Unable to get recording volume parameters(max/min)" + ENO + +                 "\n\t\t\tusing default range [0,65535]."); +@@ -582,8 +623,15 @@ +     ctrl.id = V4L2_CID_AUDIO_VOLUME; +     ctrl.value = ctrl_volume; +  +-    if (ioctl(chanfd, VIDIOC_S_CTRL, &ctrl) < 0) ++    for (idx = 0; idx < 20; ++idx) +     { ++        if (ioctl(chanfd, VIDIOC_S_CTRL, &ctrl) == 0) ++            break; ++        usleep(100 * 1000); ++    } ++ ++    if (idx == 20) ++    { +         VERBOSE(VB_IMPORTANT, LOC_WARN + +                 "Unable to set recording volume" + ENO + "\n\t\t\t" + +                 "If you are using an AverMedia M179 card this is normal."); +@@ -765,6 +813,7 @@ +  +     for (uint i = 0; i < ext_ctrls.size(); i++) +     { ++        uint   idx; +         struct v4l2_ext_controls ctrls; +         bzero(&ctrls, sizeof(struct v4l2_ext_controls)); +  +@@ -774,8 +823,15 @@ +         ctrls.count       = 1; +         ctrls.controls    = &ext_ctrls[i]; +              +-        if (ioctl(fd, VIDIOC_S_EXT_CTRLS, &ctrls) < 0) ++        for (idx = 0; idx < 20; ++idx) +         { ++            if (ioctl(fd, VIDIOC_S_EXT_CTRLS, &ctrls) == 0) ++                break; ++            usleep(100 * 1000); ++        } ++ ++        if (idx == 20) ++        { +             QMutexLocker locker(&control_description_lock); +             VERBOSE(VB_IMPORTANT, QString("mpegrecorder.cpp:set_ctrls(): ") + +                     QString("Could not set %1 to %2") +@@ -814,6 +870,30 @@ +     { +         maxbitrate = high_mpeg4peakbitrate; +         bitrate    = high_mpeg4avgbitrate; ++ ++        // query supported audio codecs and prefer AC3 ++        uint   idx; ++        struct v4l2_queryctrl qctrl; ++        qctrl.id = V4L2_CID_MPEG_AUDIO_ENCODING; ++ ++        for (idx = 0; idx < 20; ++idx) ++        { ++            if (ioctl(chanfd, VIDIOC_QUERYCTRL, &qctrl) == 0) ++                break; ++            usleep(100 * 1000); ++        } ++ ++        if (idx == 20) ++        { ++            VERBOSE(VB_IMPORTANT, LOC_WARN + ++                    "Unable to get supported audio codecs." + ENO); ++        } ++        else ++        { ++            if (qctrl.minimum != qctrl.maximum) ++                add_ext_ctrl(ext_ctrls, V4L2_CID_MPEG_AUDIO_ENCODING, ++                             qctrl.maximum); ++        } +     } +     maxbitrate = std::max(maxbitrate, bitrate); +  +@@ -837,19 +917,36 @@ +     int audioinput = audiodevice.toUInt(&ok); +     if (ok) +     { ++        uint   idx; +         struct v4l2_audio ain; +         bzero(&ain, sizeof(ain)); +         ain.index = audioinput; +-        if (ioctl(chanfd, VIDIOC_ENUMAUDIO, &ain) < 0) ++ ++        for (idx = 0; idx < 20; ++idx) +         { ++            if (ioctl(chanfd, VIDIOC_ENUMAUDIO, &ain) == 0) ++                break; ++            usleep(100 * 1000); ++        } ++ ++        if (idx == 20) ++        { +             VERBOSE(VB_IMPORTANT, LOC_WARN + +                     "Unable to get audio input."); +         } +         else +         { +             ain.index = audioinput; +-            if (ioctl(chanfd, VIDIOC_S_AUDIO, &ain) < 0) ++ ++            for (idx = 0; idx < 20; ++idx) +             { ++                if (ioctl(chanfd, VIDIOC_S_AUDIO, &ain) == 0) ++                    break; ++                usleep(100 * 1000); ++            } ++ ++            if (idx == 20) ++            { +                 VERBOSE(VB_IMPORTANT, LOC_WARN + +                         "Unable to set audio input."); +             } +@@ -1036,17 +1133,26 @@ +     if (deviceIsMpegFile) +         elapsedTimer.start(); +     else if (_device_read_buffer) +-        _device_read_buffer->Start(); ++    { ++        VERBOSE(VB_RECORD, LOC + "Initial startup of recorder"); +  +-    needs_resolution = (driver == "hdpvr"); ++        if (StartEncoding(readfd)) ++            _device_read_buffer->Start(); ++        else ++        { ++            VERBOSE(VB_IMPORTANT, LOC_ERR + "Failed to start recording"); ++            recording = false; ++            QMutexLocker locker(&recording_wait_lock); ++            recording_wait.wakeAll(); ++            _error = true; ++        } ++    } +  +     QByteArray vdevice = videodevice.toAscii(); +     while (encoding && !_error) +     { +         if (PauseAndWait(100)) +             continue; +- +-        HandleResolutionChanges(); +          +         if (deviceIsMpegFile) +         { +@@ -1090,35 +1196,7 @@ +             { +                 VERBOSE(VB_IMPORTANT, LOC_ERR + "Device error detected"); +  +-                _device_read_buffer->Stop(); +- +-                QMutexLocker locker(&start_stop_encoding_lock); +- +-                StopEncoding(readfd); +- +-                // Make sure the next things in the file are a PAT & PMT +-                if (_stream_data->PATSingleProgram() && +-                    _stream_data->PMTSingleProgram()) +-                { +-                    bool tmp = _wait_for_keyframe_option; +-                    _wait_for_keyframe_option = false; +-                    HandleSingleProgramPAT(_stream_data->PATSingleProgram()); +-                    HandleSingleProgramPMT(_stream_data->PMTSingleProgram()); +-                    _wait_for_keyframe_option = tmp; +-                } +- +-                if (StartEncoding(readfd)) +-                { +-                    _device_read_buffer->Start(); +-                } +-                else +-                { +-                    if (0 != close(readfd)) +-                        VERBOSE(VB_IMPORTANT, LOC_ERR + "Close error" + ENO); +-                     +-                    // Force card to be reopened on next iteration.. +-                    readfd = -1; +-                } ++                RestartEncoding(); +             } +             else if (_device_read_buffer->IsEOF()) +             { +@@ -1216,6 +1294,8 @@ +         } +     } +  ++    VERBOSE(VB_RECORD, LOC + "StartRecording finishing up"); ++ +     if (_device_read_buffer) +     { +         if (_device_read_buffer->IsRunning()) +@@ -1224,6 +1304,7 @@ +         delete _device_read_buffer; +         _device_read_buffer = NULL; +     } ++ +     StopEncoding(readfd); +  +     FinishRecording(); +@@ -1373,52 +1454,95 @@ +  +         if (!paused) +         { ++            VERBOSE(VB_RECORD, LOC + "PauseAndWait pause"); ++ ++            // Some drivers require streaming to be disabled before ++            // an input switch and other channel format setting. ++            if (requires_special_pause) ++                StopEncoding(readfd); ++ +             if (_device_read_buffer) +             { +                 QMutex drb_lock; +                 drb_lock.lock(); +- +                 _device_read_buffer->SetRequestPause(true); +- +                 pauseWait.wait(&drb_lock, timeout); +             } +             else +-            { +-                paused = true; +                 pauseWait.wakeAll(); +-            } +  +-            // Some drivers require streaming to be disabled before +-            // an input switch and other channel format setting. +-            if (requires_special_pause) +-                StopEncoding(readfd); +- ++            paused = true; +             if (tvrec) +                 tvrec->RecorderPaused(); +         } +  +         unpauseWait.wait(&waitlock, timeout); +     } +-    if (!request_pause) ++ ++    if (!request_pause && paused) +     { +-        if (paused) ++        VERBOSE(VB_RECORD, LOC + "PauseAndWait unpause"); ++ ++        if (driver == "hdpvr") +         { +-            // Some drivers require streaming to be disabled before +-            // an input switch and other channel format setting. +-            if (requires_special_pause) +-                StartEncoding(readfd); ++            m_h264_parser.Reset(); ++            _wait_for_keyframe_option = true; ++            _seen_sps = false; +  +-            if (_device_read_buffer) +-                _device_read_buffer->SetRequestPause(false); ++            // Sleep any less than 1.5 seconds, and the HD-PVR will ++            // return the old resolution, when the resolution is changing. ++            usleep(1500 * 1000); ++        } +  +-            if (_stream_data) +-                _stream_data->Reset(_stream_data->DesiredProgram()); +-        } ++        // Some drivers require streaming to be disabled before ++        // an input switch and other channel format setting. ++        if (requires_special_pause) ++            StartEncoding(readfd); ++         ++        if (_device_read_buffer) ++            _device_read_buffer->SetRequestPause(false); ++         ++        if (_stream_data) ++            _stream_data->Reset(_stream_data->DesiredProgram()); ++ +         paused = false; +     } ++ +     return paused; + } +  ++void MpegRecorder::RestartEncoding(void) ++{ ++    VERBOSE(VB_RECORD, LOC + "RestartEncoding"); ++ ++    _device_read_buffer->Stop(); ++     ++    QMutexLocker locker(&start_stop_encoding_lock); ++     ++    StopEncoding(readfd); ++     ++    // Make sure the next things in the file are a PAT & PMT ++    if (_stream_data->PATSingleProgram() && ++        _stream_data->PMTSingleProgram()) ++    { ++        _wait_for_keyframe_option = false; ++        HandleSingleProgramPAT(_stream_data->PATSingleProgram()); ++        HandleSingleProgramPMT(_stream_data->PMTSingleProgram()); ++    } ++     ++    if (StartEncoding(readfd)) ++    { ++        _device_read_buffer->Start(); ++    } ++    else ++    { ++        if (0 != close(readfd)) ++            VERBOSE(VB_IMPORTANT, LOC_ERR + "Close error" + ENO); ++         ++        readfd = -1; ++    } ++} ++ + bool MpegRecorder::StartEncoding(int fd) + { +     QMutexLocker locker(&start_stop_encoding_lock); +@@ -1427,13 +1551,22 @@ +     memset(&command, 0, sizeof(struct v4l2_encoder_cmd)); +     command.cmd = V4L2_ENC_CMD_START; +  ++    if (driver == "hdpvr") ++        HandleResolutionChanges(); ++ +     VERBOSE(VB_RECORD, LOC + "StartEncoding"); +-    needs_resolution = (driver == "hdpvr"); +  +-    for (int idx = 0; idx < 10; ++idx) ++    for (int idx = 0; idx < 20; ++idx) +     { +         if (ioctl(fd, VIDIOC_ENCODER_CMD, &command) == 0) +         { ++            if (driver == "hdpvr") ++            { ++                m_h264_parser.Reset(); ++                _wait_for_keyframe_option = true; ++                _seen_sps = false; ++            } ++ +             VERBOSE(VB_RECORD, LOC + "Encoding started"); +             return true; +         } +@@ -1444,7 +1577,7 @@ +             return false; +         } +  +-        usleep(250 * 1000); ++        usleep(100 * 1000); +     } +  +     VERBOSE(VB_IMPORTANT, LOC_ERR + "StartEncoding - giving up" + ENO); +@@ -1461,9 +1594,8 @@ +  +     VERBOSE(VB_RECORD, LOC + "StopEncoding"); +  +-    for (int idx = 0; idx < 10; ++idx) ++    for (int idx = 0; idx < 20; ++idx) +     { +- +         if (ioctl(fd, VIDIOC_ENCODER_CMD, &command) == 0) +         { +             VERBOSE(VB_RECORD, LOC + "Encoding stopped"); +@@ -1476,7 +1608,7 @@ +             return false; +         } +  +-        usleep(250 * 1000); ++        usleep(100 * 1000); +     } +  +     VERBOSE(VB_IMPORTANT, LOC_ERR + "StopEncoding - giving up" + ENO); +@@ -1544,7 +1676,7 @@ + void MpegRecorder::HandleSingleProgramPMT(ProgramMapTable *pmt) + { +     if (!pmt) +-{ ++    { +         return; +     } +  +@@ -1564,27 +1696,89 @@ +         DTVRecorder::BufferedWrite(*(reinterpret_cast<TSPacket*>(&buf[i]))); + } +  ++bool MpegRecorder::WaitFor_HDPVR(void) ++{ ++    // After a resolution change, it can take the HD-PVR a few ++    // seconds before it is usable again. ++ ++    // Tell it to start encoding, then wait for it to actually feed us ++    // some data. ++    QMutexLocker locker(&start_stop_encoding_lock); ++ ++    struct v4l2_encoder_cmd command; ++    struct pollfd polls; ++    int    idx; ++ ++    memset(&command, 0, sizeof(struct v4l2_encoder_cmd)); ++    command.cmd = V4L2_ENC_CMD_START; ++ ++    for (idx = 0; idx < 20; ++idx) ++    { ++        if (ioctl(readfd, VIDIOC_ENCODER_CMD, &command) == 0) ++            break; ++        usleep(100 * 1000); ++    } ++ ++    if (idx == 20) ++        return false; ++ ++    polls.fd      = readfd; ++    polls.events  = POLLIN; ++    polls.revents = 0; ++ ++    for (idx = 0; idx < 10; ++idx) ++    { ++        if (poll(&polls, 1, 250) > 0) ++            break; ++    } ++ ++    if (idx == 10) ++        return false; ++ ++    // HD-PVR should now be "ready" ++    command.cmd = V4L2_ENC_CMD_STOP; ++ ++    for (idx = 0; idx < 20; ++idx) ++    { ++        if (ioctl(readfd, VIDIOC_ENCODER_CMD, &command) == 0) ++            return true; ++        usleep(100 * 1000); ++    } ++ ++    return false; ++} ++ + void MpegRecorder::HandleResolutionChanges(void) + { +-    if (!needs_resolution) +-        return; +- +     VERBOSE(VB_RECORD, LOC + "Checking Resolution"); +     struct v4l2_format vfmt; +     memset(&vfmt, 0, sizeof(vfmt)); +     vfmt.type = V4L2_BUF_TYPE_VIDEO_CAPTURE; +              ++    if (driver == "hdpvr") ++        WaitFor_HDPVR(); ++ ++    uint idx; +     uint pix = 0; ++ ++    for (idx = 0; idx < 20; ++idx) ++    { +     if (0 == ioctl(chanfd, VIDIOC_G_FMT, &vfmt)) +     { +         VERBOSE(VB_RECORD, LOC + QString("Got Resolution %1x%2") +                 .arg(vfmt.fmt.pix.width).arg(vfmt.fmt.pix.height)); +         pix = vfmt.fmt.pix.width * vfmt.fmt.pix.height; +-        needs_resolution = false; ++            break; ++        } ++        // Typically takes 0.9 seconds after a resolution change ++        usleep(100 * 1000); +     } +  +     if (!pix) ++    { ++        VERBOSE(VB_RECORD, LOC + "Giving up detecting resolution"); +         return; // nothing to do, we don't have a resolution yet ++    } +  +     int old_max = maxbitrate, old_avg = bitrate; +     if (pix <= 768*568) +@@ -1609,13 +1803,14 @@ +         if (old_max == old_avg) +         { +             VERBOSE(VB_RECORD, LOC + +-                    QString("Old bitrate %1 CBR").arg(old_avg)); ++                    QString("Old bitrate %1 CBR for %2x%3") ++                    .arg(old_avg).arg(width).arg(height)); +         } +         else +         { +             VERBOSE(VB_RECORD, LOC + +-                    QString("Old bitrate %1/%2 VBR") +-                    .arg(old_avg).arg(old_max)); ++                    QString("Old bitrate %1/%2 VBR for %3x%4") ++                    .arg(old_avg).arg(old_max).arg(width).arg(height)); +         } +  +         if (maxbitrate == bitrate) +@@ -1642,12 +1837,6 @@ +                      maxbitrate * 1000); +  +         set_ctrls(readfd, ext_ctrls); ++ +     } +- +-    // Restart streaming. Shouldn't be needed? seems to be with current driver. +-    QMutexLocker locker(&start_stop_encoding_lock); +-    StopEncoding(readfd); +-    StartEncoding(readfd); +- +-    needs_resolution = false; + } diff --git a/abs/core-testing/mythtv/trunk/mythtv-svn/myth.sh b/abs/core-testing/mythtv/trunk/mythtv-svn/myth.sh new file mode 100755 index 0000000..fb7122c --- /dev/null +++ b/abs/core-testing/mythtv/trunk/mythtv-svn/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/trunk/mythtv-svn/mythbackend b/abs/core-testing/mythtv/trunk/mythtv-svn/mythbackend new file mode 100755 index 0000000..f96c6b7 --- /dev/null +++ b/abs/core-testing/mythtv/trunk/mythtv-svn/mythbackend @@ -0,0 +1,37 @@ +#!/bin/bash + +. /etc/rc.conf +. /etc/rc.d/functions + +PID=`pidof -o %PPID /usr/bin/mythbackend` +case "$1" in +  start) +    stat_busy "Starting MythTV Backend" +    [ ! -e /var/run/mysqld.pid ] && echo -n "mysqld not started" && stat_fail && exit +    [ -z "$PID" ] && /usr/local/bin/mythbackend -d -l /var/log/mythbackend.log -v quiet +    if [ $? -gt 0 ]; then +      stat_fail +    else +      echo $PID > /var/run/mythbackend.pid +      add_daemon mythbackend +      stat_done +    fi +    ;; +  stop) +    stat_busy "Stopping MythTV Backend" +    [ ! -z "$PID" ]  && kill $PID &>/dev/null +    if [ $? -gt 0 ]; then +      stat_fail +    else +      rm_daemon mythbackend +      stat_done +    fi +    ;; +  restart) +    $0 stop +    $0 start +    ;; +  *) +    echo "usage: $0 {start|stop|restart}" +esac +exit 0 diff --git a/abs/core-testing/mythtv/trunk/mythtv-svn/mythbackend.sh b/abs/core-testing/mythtv/trunk/mythtv-svn/mythbackend.sh new file mode 100755 index 0000000..e7a7b70 --- /dev/null +++ b/abs/core-testing/mythtv/trunk/mythtv-svn/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/trunk/mythtv-svn/mythcommflag-avidemux.2.patch b/abs/core-testing/mythtv/trunk/mythtv-svn/mythcommflag-avidemux.2.patch new file mode 100644 index 0000000..d26645f --- /dev/null +++ b/abs/core-testing/mythtv/trunk/mythtv-svn/mythcommflag-avidemux.2.patch @@ -0,0 +1,179 @@ +Index: programs/mythcommflag/main.cpp +=================================================================== +--- programs/mythcommflag/main.cpp	(revision 18596) ++++ programs/mythcommflag/main.cpp	(working copy) +@@ -300,6 +300,132 @@ +     return COMMFLAG_EXIT_NO_ERROR_WITH_NO_BREAKS; + } +  ++int GetAviDemux(QString list, QString chanid, QString starttime, const QString &outputfilename) ++{ ++    QMap<long long, int> cutlist; ++    QMap<long long, int>::Iterator it; ++    QString result; ++    int startValue = 0; ++    long long myTotalFrames; ++    long long myFrameRate; ++ ++    ProgramInfo *pginfo = ++        ProgramInfo::GetProgramFromRecorded(chanid, starttime); ++ ++    NuppelVideoPlayer* nvp = new NuppelVideoPlayer("avidemux_export", pginfo); ++ ++    myFrameRate = (long long)(nvp->GetFrameRate() * 1000); ++    myTotalFrames = 1000000; //nvp->GetTotalFrameCount(); ++ ++    if (!pginfo) ++    { ++        VERBOSE(VB_IMPORTANT, ++                QString("No program data exists for channel %1 at %2") ++                .arg(chanid).arg(starttime)); ++        return COMMFLAG_BUGGY_EXIT_NO_CHAN_DATA; ++    } ++ ++    QString filename = pginfo->GetPlaybackURL(TRUE); ++ ++    if (list == "cutlist") ++        pginfo->GetCutList(cutlist); ++    else ++        pginfo->GetCommBreakList(cutlist); ++ ++// Formatting of output data ++ ++    for (it = cutlist.begin(); it != cutlist.end(); ++it) ++    { ++        if ((it.key() == 0) && (startValue == 0)) // Cutlist starts on first frame, ++            { ++            ++it; ++            startValue = it.key(); ++            } ++ ++        if ((it.key() != 0) && (startValue == 0)) // Cutlist starts on non-first frame ++            { ++            result += QString("app.addSegment(0,0,%1);").arg(it.key());   ++            startValue = it.key(); ++            } ++        else ++           { ++            if  ((*it == MARK_COMM_END) && (startValue != 0) || ++                (*it == MARK_CUT_END) && (startValue != 0)) ++                { ++                 if (result != "") ++                       result += "\n"; ++                       startValue = it.key(); ++                       result += QString("app.addSegment(0,%1,").arg(it.key()); // Value is a start value ++                } ++            else   ++                { ++                    result += QString("%1);").arg(it.key() - startValue); // Value is an end value ++                } ++           } ++   } ++ ++if (it.key() != myTotalFrames) ++    { ++        result += QString("%1);").arg(myTotalFrames); ++    } ++ ++// Governs the file output: ++ ++    QString tmp = ""; ++    ostream *out = &cout; ++ ++    if (outputfilename != "-"){ ++        QByteArray tmp = outputfilename.toLocal8Bit(); ++        out = new fstream(tmp.constData(), ios::app | ios::out ); ++        } ++ ++    if (outputfilename == ""){ ++        VERBOSE(VB_IMPORTANT, ++           QString("Error: AVIDemux output requires the use of the --outputfile option.")); ++           return COMMFLAG_EXIT_INVALID_CMDLINE; ++        } ++ ++        tmp = QString("//AD  <- Needed to identify//\n" ++                        "//--automatically built--\n" ++                        "//--Project:\n\n" ++                        "var app = new Avidemux();\n\n" ++                        "//** Video **\n" ++                        "// 01 videos source\n"  ++                        "app.load(\"%1\");\n\n" ++                        "app.clearSegments();\n\n" ++                        "%2\n" ++                        "app.markerA=0;\n" ++                        "app.markerB=%3;\n" ++                        "app.rebuildIndex();\n\n" ++                        "//** Postproc **\n" ++                        "app.video.setPostProc(3,3,0);\n\n" ++                        "app.video.setFps1000(%4);\n\n" ++                        "//** Filters **\n\n" ++                        "//** Video Codec conf **\n" ++                        "app.video.codec(\"Copy\",\"CQ=4\",\"0 \");\n\n" ++                        "//** Audio **\n" ++                        "app.audio.reset();\n" ++                        "app.audio.codec(\"copy\",128,0,\"\");\n" ++                        "app.audio.normalizeMode=0;\n" ++                        "app.audio.normalizeValue=0;\n" ++                        "app.audio.delay=0;\n" ++                        "app.audio.mixer(\"NONE\");\n" ++                        "app.setContainer(\"AVI\");\n" ++                        "setSuccess(1);\n" ++                        "//app.Exit();\n\n" ++                        "//End of script\n").arg(filename).arg(result).arg(myTotalFrames).arg(myFrameRate).toLocal8Bit().constData(); ++ ++        const QByteArray tmp2 = tmp.toLocal8Bit(); ++        *out << tmp2.constData() << endl; ++ ++        VERBOSE(VB_IMPORTANT, ++                QString("AVIDemux Project generated for %1 at %2 with filename %3.") ++                .arg(chanid).arg(starttime).arg(outputfilename)); ++ ++    return COMMFLAG_EXIT_NO_ERROR_WITH_NO_BREAKS; ++} ++ ++ + void streamOutCommercialBreakList( +     ostream &output, const QMap<long long, int> &commercialBreakList) + { +@@ -811,6 +937,8 @@ +     bool clearCutlist = false; +     bool getCutlist = false; +     bool getSkipList = false; ++    bool getAviDemuxCutlist = false; ++    bool getAviDemuxSkiplist = false; +     QString newCutList = QString::null; +     QMap<QString, QString> settingsOverride; +  +@@ -960,6 +1088,10 @@ +             getCutlist = true; +         else if (!strcmp(a.argv()[argpos], "--getskiplist")) +             getSkipList = true; ++        else if (!strcmp(a.argv()[argpos], "--getcutlist-avidemux")) ++            getAviDemuxCutlist = true; ++        else if (!strcmp(a.argv()[argpos], "--getskiplist-avidemux")) ++            getAviDemuxSkiplist = true; +         else if (!strcmp(a.argv()[argpos], "--setcutlist")) +             newCutList = (a.argv()[++argpos]); +         else if (!strcmp(a.argv()[argpos], "-j")) +@@ -1111,6 +1243,8 @@ +                     "                             #-#[,#-#]...  (ie, 1-100,1520-3012,4091-5094\n" +                     "--getcutlist                 Display the current cutlist\n" +                     "--getskiplist                Display the current Commercial Skip list\n" ++                    "--getcutlist-avidemux        Export cutlist as AVIDemux Project File\n" ++                    "--getskiplist-avidemux       Export skiplist as AVIDemux Project File\n" +                     "-v or --verbose debug-level  Use '-v help' for level info\n" +                     "--queue                      Insert flagging job into the JobQueue rather than\n" +                     "                             running flagging in the foreground\n" +@@ -1223,6 +1357,12 @@ +     if (!newCutList.isNull()) +         return SetCutList(chanid, starttime, newCutList); +  ++    if (getAviDemuxCutlist) ++        return GetAviDemux("cutlist", chanid, starttime, outputfilename); ++ ++    if (getAviDemuxSkiplist) ++        return GetAviDemux("commflag", chanid, starttime, outputfilename); ++ +     if (getCutlist) +         return GetMarkupList("cutlist", chanid, starttime); +  diff --git a/abs/core-testing/mythtv/trunk/mythtv-svn/mythtv.install b/abs/core-testing/mythtv/trunk/mythtv-svn/mythtv.install new file mode 100755 index 0000000..513852a --- /dev/null +++ b/abs/core-testing/mythtv/trunk/mythtv-svn/mythtv.install @@ -0,0 +1,55 @@ + +# arg 1:  the new package version +pre_install () { +        echo "backing up the database" +                dbver=`pacman -Q mythtv-svn | awk  ' { print $2 } '` +        if [ ! -e /data/databases_backup ] +        then +                mkdir -p /data/database_backup +        fi +        mysqldump -u mythtv -pmythtv mythconverg -c > /data/database_backup/${dbver}.dump.sql +} + +post_install() { +  	mkdir -p /data/home +        /usr/sbin/useradd -G users,video,audio,optical -m -d /data/home/mythtv mythtv +        /usr/sbin/usermod -G users,video,audio,optical mythtv +#        mkdir /var/log/mythtv +#        chown -R mythtv:users /var/log/mythtv +        dbver=`pacman -Q mythtv-svn | awk  ' { print $2 } '` +        if [ ! -e /data/database_backup ] +        then +                mkdir -p /data/database_backup +        fi +	chown mythtv:nobody /data/database_backup +	chmod g+s  /data/database_backup +         +	mysqldump -u mythtv -pmythtv mythconverg -c > /data/database_backup/${dbver}.dump.sql + + +} +pre_upgrade () { + pre_install +} + +# arg 1:  the new package version +# arg 2:  the old package version +post_upgrade() { +  post_install + +  /bin/true +} + +# arg 1:  the old package version +pre_remove() { +  /bin/true +} + +# arg 1:  the old package version +post_remove() { +/bint/true +} + +op=$1 +shift +$op $* diff --git a/abs/core-testing/mythtv/trunk/mythtv-svn/patches/DeviceReadBuffer-polltimeout.2.patch b/abs/core-testing/mythtv/trunk/mythtv-svn/patches/DeviceReadBuffer-polltimeout.2.patch new file mode 100644 index 0000000..5bb713f --- /dev/null +++ b/abs/core-testing/mythtv/trunk/mythtv-svn/patches/DeviceReadBuffer-polltimeout.2.patch @@ -0,0 +1,219 @@ +Index: libs/libmythtv/DeviceReadBuffer.h +=================================================================== +--- libs/libmythtv/DeviceReadBuffer.h	(revision 18515) ++++ libs/libmythtv/DeviceReadBuffer.h	(working copy) +@@ -59,7 +59,7 @@ +     void IncrReadPointer(uint len); +  +     bool HandlePausing(void); +-    bool Poll(void) const; ++    bool Poll(void); +     uint WaitForUnused(uint bytes_needed) const; +     uint WaitForUsed  (uint bytes_needed) const; +  +Index: libs/libmythtv/DeviceReadBuffer.cpp +=================================================================== +--- libs/libmythtv/DeviceReadBuffer.cpp	(revision 18515) ++++ libs/libmythtv/DeviceReadBuffer.cpp	(working copy) +@@ -90,9 +90,14 @@ +  + void DeviceReadBuffer::Start(void) + { +-    lock.lock(); +-    bool was_running = running; +-    lock.unlock(); ++    bool was_running; ++ ++    { ++        QMutexLocker locker(&lock); ++        was_running = running; ++        error = false; ++    } ++ +     if (was_running) +     { +         VERBOSE(VB_IMPORTANT, LOC_ERR + "Start(): Already running."); +@@ -104,6 +109,8 @@ +     { +         VERBOSE(VB_IMPORTANT, +                 LOC_ERR + QString("Start(): pthread_create failed.") + ENO); ++ ++        QMutexLocker locker(&lock); +         error = true; +     } + } +@@ -118,21 +125,25 @@ +     used          = 0; +     readPtr       = buffer; +     writePtr      = buffer; ++ ++    error         = false; + } +  + void DeviceReadBuffer::Stop(void) + { +     bool was_running = IsRunning(); +-    lock.lock(); +-    run = false; +-    lock.unlock(); +  +     if (!was_running) +     { +-        VERBOSE(VB_IMPORTANT, LOC_ERR + "Stop(): Not running."); ++        VERBOSE(VB_IMPORTANT, LOC + "Stop(): Not running."); +         return; +     } +  ++    { ++        QMutexLocker locker(&lock); ++        run = false; ++    } ++ +     pthread_join(thread, NULL); + } +  +@@ -229,10 +240,11 @@ + { +     uint      errcnt = 0; +  +-    lock.lock(); +-    run     = true; +-    running = true; +-    lock.unlock(); ++    { ++        QMutexLocker locker(&lock); ++        run     = true; ++        running = true; ++    } +  +     while (run) +     { +@@ -248,6 +260,15 @@ +         if (using_poll && !Poll()) +             continue; +  ++        { ++            QMutexLocker locker(&lock); ++            if (error) ++            { ++                VERBOSE(VB_RECORD, LOC + "fill_ringbuffer: error state"); ++                break; ++            } ++        } ++ +         // Limit read size for faster return from read +         size_t read_size = +             min(dev_read_size, (size_t) WaitForUnused(TSPacket::SIZE)); +@@ -268,9 +289,10 @@ +         } +     } +  +-    lock.lock(); +-    running = false; +-    lock.unlock(); ++    { ++        QMutexLocker locker(&lock); ++        running = false; ++    } + } +  + bool DeviceReadBuffer::HandlePausing(void) +@@ -293,7 +315,7 @@ +     return true; + } +  +-bool DeviceReadBuffer::Poll(void) const ++bool DeviceReadBuffer::Poll(void) + { + #ifdef USING_MINGW + #warning mingw DeviceReadBuffer::Poll +@@ -302,31 +324,53 @@ +     return false; + #else +     bool retval = true; +-    while (true) ++    uint timeout_cnt = 0; ++ ++    for (;;) +     { +         struct pollfd polls; +         polls.fd      = _stream_fd; +         polls.events  = POLLIN; +         polls.revents = 0; +  +-        int ret = poll(&polls, 1 /*number of polls*/, 10 /*msec*/); +-        if (IsPauseRequested() || !IsOpen() || !run) ++        int ret = poll(&polls, 1 /*number of polls*/, 250 /*msec*/); ++ ++        if (polls.revents & (POLLERR | POLLHUP | POLLNVAL)) +         { ++            VERBOSE(VB_IMPORTANT, LOC + "poll error"); ++            error = true; ++            return true; ++        } ++ ++        if (!run || !IsOpen() || IsPauseRequested()) ++        { +             retval = false; +             break; // are we supposed to pause, stop, etc. +         } +  +         if (ret > 0) +             break; // we have data to read :) +-        if ((-1 == ret) && (EOVERFLOW == errno)) +-            break; // we have an error to handle +- +-        if ((-1 == ret) && ((EAGAIN == errno) || (EINTR  == errno))) +-            continue; // errors that tell you to try again +-        if (ret == 0) +-            continue; // timed out, try again +- +-        usleep(2500); ++        if (ret < 0) ++        { ++            if ((EOVERFLOW == errno)) ++                break; // we have an error to handle ++            if ((EAGAIN == errno) || (EINTR  == errno)) ++                continue; // errors that tell you to try again ++            usleep(2500); ++        } ++        else //  ret == 0 ++        { ++            if (++timeout_cnt > 9) ++            { ++                VERBOSE(VB_RECORD, LOC_ERR + "Poll giving up"); ++                QMutexLocker locker(&lock); ++                error = true; ++                return true; ++            } ++            if (timeout_cnt % 2) ++                VERBOSE(VB_RECORD, LOC_ERR + QString("Poll timeout (%1)") ++                        .arg(timeout_cnt)); ++        } +     } +     return retval; + #endif //!USING_MINGW +@@ -360,9 +404,9 @@ +  +         if (++errcnt > 5) +         { +-            lock.lock(); ++            QMutexLocker locker(&lock); ++            VERBOSE(VB_RECORD, LOC + "Too many errors."); +             error = true; +-            lock.unlock(); +             return false; +         } +  +@@ -376,10 +420,8 @@ +             VERBOSE(VB_IMPORTANT, LOC + +                     QString("End-Of-File? fd(%1)").arg(_stream_fd)); +  +-            lock.lock(); ++            QMutexLocker locker(&lock); +             eof = true; +-            lock.unlock(); +- +             return false; +         } +         usleep(500); diff --git a/abs/core-testing/mythtv/trunk/mythtv-svn/patches/aacdecoder.cpp.patch b/abs/core-testing/mythtv/trunk/mythtv-svn/patches/aacdecoder.cpp.patch new file mode 100644 index 0000000..8796eb4 --- /dev/null +++ b/abs/core-testing/mythtv/trunk/mythtv-svn/patches/aacdecoder.cpp.patch @@ -0,0 +1,12 @@ +--- mythmusic/mythmusic/aacdecoder.cpp.orig	2008-11-19 12:51:48.000000000 -0500 ++++ mythmusic/mythmusic/aacdecoder.cpp	2008-11-19 12:52:42.000000000 -0500 +@@ -17,6 +17,9 @@ + #define FAAD_MODIFIED + #endif +  ++// LinHES need this undefined ++#undef FAAD_MODIFIED ++ + // ANSI C headers + #include <cstdlib> +  diff --git a/abs/core-testing/mythtv/trunk/mythtv-svn/patches/hdpvr-v4lchannel-tweak.patch b/abs/core-testing/mythtv/trunk/mythtv-svn/patches/hdpvr-v4lchannel-tweak.patch new file mode 100644 index 0000000..3535310 --- /dev/null +++ b/abs/core-testing/mythtv/trunk/mythtv-svn/patches/hdpvr-v4lchannel-tweak.patch @@ -0,0 +1,139 @@ +Index: libs/libmythtv/v4lchannel.h +=================================================================== +--- libs/libmythtv/v4lchannel.h	(revision 18874) ++++ libs/libmythtv/v4lchannel.h	(working copy) +@@ -103,6 +103,8 @@ +     VidModV4L2  videomode_v4l2; ///< Current video mode if 'usingv4l2' is true +  +     int         defaultFreqTable; ++    int         prev_inputNumV4L; ++    v4l2_std_id prev_vid_mode; + }; +  + #endif +Index: libs/libmythtv/v4lchannel.cpp +=================================================================== +--- libs/libmythtv/v4lchannel.cpp	(revision 18874) ++++ libs/libmythtv/v4lchannel.cpp	(working copy) +@@ -40,7 +40,8 @@ +       device_name(QString::null),   driver_name(QString::null), +       curList(NULL),                totalChannels(0), +       currentFormat(""),            is_dtv(false), +-      usingv4l2(false),             defaultFreqTable(1) ++      usingv4l2(false),             defaultFreqTable(1), ++      prev_inputNumV4L(-1),         prev_vid_mode(-1) + { + } +  +@@ -795,62 +796,75 @@ +     { +         VERBOSE(VB_CHANNEL, LOC + msg + "(v4l v2)"); +  +-        int ioctlval = ioctl(videofd, VIDIOC_S_INPUT, &inputNumV4L); ++	int ioctlval; ++	bool streamingDisabled = false; ++	int  streamType = V4L2_BUF_TYPE_VIDEO_CAPTURE; +  +-        // ConvertX (wis-go7007) requires streaming to be disabled +-        // before an input switch, do this if initial switch failed. +-        bool streamingDisabled = false; +-        int  streamType = V4L2_BUF_TYPE_VIDEO_CAPTURE; +-        if ((ioctlval < 0) && (errno == EBUSY)) ++        if (prev_inputNumV4L != inputNumV4L) +         { +-            ioctlval = ioctl(videofd, VIDIOC_STREAMOFF, &streamType); ++            ioctlval = ioctl(videofd, VIDIOC_S_INPUT, &inputNumV4L); ++ ++            // ConvertX (wis-go7007) requires streaming to be disabled ++            // before an input switch, do this if initial switch failed. ++            if ((ioctlval < 0) && (errno == EBUSY)) ++            { ++                ioctlval = ioctl(videofd, VIDIOC_STREAMOFF, &streamType); ++                if (ioctlval < 0) ++                { ++                    VERBOSE(VB_IMPORTANT, LOC_ERR + msg + ++                            "\n\t\t\twhile disabling streaming (v4l v2)" + ENO); ++ ++                    ok = false; ++                    ioctlval = 0; ++                } ++                else ++                { ++                    streamingDisabled = true; ++ ++                    // Resend the input switch ioctl. ++                    ioctlval = ioctl(videofd, VIDIOC_S_INPUT, &inputNumV4L); ++                } ++            } ++ +             if (ioctlval < 0) +             { +                 VERBOSE(VB_IMPORTANT, LOC_ERR + msg + +-                        "\n\t\t\twhile disabling streaming (v4l v2)" + ENO); ++                        "\n\t\t\twhile setting input (v4l v2)" + ENO); +  +                 ok = false; +-                ioctlval = 0; +             } +-            else +-            { +-                streamingDisabled = true; +  +-                // Resend the input switch ioctl. +-                ioctlval = ioctl(videofd, VIDIOC_S_INPUT, &inputNumV4L); +-            } ++            prev_inputNumV4L = inputNumV4L; +         } +  +-        if (ioctlval < 0) +-        { +-            VERBOSE(VB_IMPORTANT, LOC_ERR + msg + +-                    "\n\t\t\twhile setting input (v4l v2)" + ENO); +- +-            ok = false; +-        } +- +         v4l2_std_id vid_mode = format_to_mode(newFmt, 2); +-        ioctlval = ioctl(videofd, VIDIOC_S_STD, &vid_mode); +-        if (ioctlval < 0) +-        { +-            VERBOSE(VB_IMPORTANT, LOC_ERR + msg + +-                    "\n\t\t\twhile setting format (v4l v2)" + ENO); +  +-            ok = false; +-        } +- +-        // ConvertX (wis-go7007) requires streaming to be disabled +-        // before an input switch, here we try to re-enable streaming. +-        if (streamingDisabled) ++        if (prev_vid_mode != vid_mode) +         { +-            ioctlval = ioctl(videofd, VIDIOC_STREAMON, &streamType); ++            ioctlval = ioctl(videofd, VIDIOC_S_STD, &vid_mode); +             if (ioctlval < 0) +             { +                 VERBOSE(VB_IMPORTANT, LOC_ERR + msg + +-                        "\n\t\t\twhile reenabling streaming (v4l v2)" + ENO); ++                        "\n\t\t\twhile setting format (v4l v2)" + ENO); +  +                 ok = false; +             } ++ ++            // ConvertX (wis-go7007) requires streaming to be disabled ++            // before an input switch, here we try to re-enable streaming. ++            if (streamingDisabled) ++            { ++                ioctlval = ioctl(videofd, VIDIOC_STREAMON, &streamType); ++                if (ioctlval < 0) ++                { ++                    VERBOSE(VB_IMPORTANT, LOC_ERR + msg + ++                            "\n\t\t\twhile reenabling streaming (v4l v2)" + ++                            ENO); ++ ++                    ok = false; ++                } ++            } ++            prev_vid_mode = vid_mode; +         } +     } +  diff --git a/abs/core-testing/mythtv/trunk/mythtv-svn/patches/mpegrecorder-hdpvr-v1.1.patch b/abs/core-testing/mythtv/trunk/mythtv-svn/patches/mpegrecorder-hdpvr-v1.1.patch new file mode 100644 index 0000000..f292b7f --- /dev/null +++ b/abs/core-testing/mythtv/trunk/mythtv-svn/patches/mpegrecorder-hdpvr-v1.1.patch @@ -0,0 +1,658 @@ +Index: libs/libmythtv/mpegrecorder.h +=================================================================== +--- libs/libmythtv/mpegrecorder.h	(revision 19056) ++++ libs/libmythtv/mpegrecorder.h	(working copy) +@@ -80,11 +80,13 @@ +     uint GetFilteredAudioLayer(void) const; +     uint GetFilteredAudioBitRate(uint audio_layer) const; +  ++    void RestartEncoding(void); +     bool StartEncoding(int fd); +     bool StopEncoding(int fd); +  +     void ResetForNewFile(void); +  ++    bool WaitFor_HDPVR(void); +     void HandleResolutionChanges(void); +  +     inline bool CheckCC(uint pid, uint cc); +@@ -104,7 +106,6 @@ +     // State +     bool recording; +     bool encoding; +-    bool needs_resolution; +     mutable QMutex start_stop_encoding_lock; +     QMutex recording_wait_lock; +     QWaitCondition recording_wait; +@@ -113,7 +114,7 @@ +     bool cleartimeonpause; +  +     // Encoding info +-    int width, height; ++    uint width, height; +     int bitrate, maxbitrate, streamtype, aspectratio; +     int audtype, audsamplerate, audbitratel1, audbitratel2, audbitratel3; +     int audvolume; +Index: libs/libmythtv/mpegrecorder.cpp +=================================================================== +--- libs/libmythtv/mpegrecorder.cpp	(revision 19056) ++++ libs/libmythtv/mpegrecorder.cpp	(working copy) +@@ -19,6 +19,7 @@ + #include <sys/stat.h> + #include <sys/ioctl.h> + #include <sys/time.h> ++#include <sys/poll.h> +  + // avlib headers + extern "C" { +@@ -86,7 +87,7 @@ +     requires_special_pause(false), +     // State +     recording(false),         encoding(false), +-    needs_resolution(false),  start_stop_encoding_lock(QMutex::Recursive), ++    start_stop_encoding_lock(QMutex::Recursive), +     recording_wait_lock(),    recording_wait(), +     // Pausing state +     cleartimeonpause(false), +@@ -487,13 +488,21 @@ +  + bool MpegRecorder::SetFormat(int chanfd) + { ++    uint   idx; +     struct v4l2_format vfmt; +     bzero(&vfmt, sizeof(vfmt)); +  +     vfmt.type = V4L2_BUF_TYPE_VIDEO_CAPTURE; +  +-    if (ioctl(chanfd, VIDIOC_G_FMT, &vfmt) < 0) ++    for (idx = 0; idx < 20; ++idx) +     { ++        if (ioctl(chanfd, VIDIOC_G_FMT, &vfmt) == 0) ++            break; ++        usleep(100 * 1000); ++    } ++ ++    if (idx == 10) ++    { +         VERBOSE(VB_IMPORTANT, LOC_ERR + "Error getting format" + ENO); +         return false; +     } +@@ -501,8 +510,15 @@ +     vfmt.fmt.pix.width = width; +     vfmt.fmt.pix.height = height; +  +-    if (ioctl(chanfd, VIDIOC_S_FMT, &vfmt) < 0) ++    for (idx = 0; idx < 20; ++idx) +     { ++        if (ioctl(chanfd, VIDIOC_S_FMT, &vfmt) == 0) ++            break; ++        usleep(100 * 1000); ++    } ++ ++    if (idx == 20) ++    { +         VERBOSE(VB_IMPORTANT, LOC_ERR + "Error setting format" + ENO); +         return false; +     } +@@ -513,10 +529,19 @@ + /// Set audio language mode + bool MpegRecorder::SetLanguageMode(int chanfd) + { ++    uint   idx; +     struct v4l2_tuner vt; +     bzero(&vt, sizeof(struct v4l2_tuner)); +-    if (ioctl(chanfd, VIDIOC_G_TUNER, &vt) < 0) ++ ++    for (idx = 0; idx < 20; ++idx) +     { ++        if (ioctl(chanfd, VIDIOC_G_TUNER, &vt) == 0) ++            break; ++        usleep(100 * 1000); ++    } ++ ++    if (idx == 20) ++    { +         VERBOSE(VB_IMPORTANT, LOC_WARN + "Unable to get audio mode" + ENO); +         return false; +     } +@@ -549,8 +574,15 @@ +         success = false; +     } +  +-    if (ioctl(chanfd, VIDIOC_S_TUNER, &vt) < 0) ++    for (idx = 0; idx < 20; ++idx) +     { ++        if (ioctl(chanfd, VIDIOC_S_TUNER, &vt) == 0) ++            break; ++        usleep(100 * 1000); ++    } ++ ++    if (idx == 20) ++    { +         VERBOSE(VB_IMPORTANT, LOC_WARN + "Unable to set audio mode" + ENO); +         success = false; +     } +@@ -561,10 +593,19 @@ + bool MpegRecorder::SetRecordingVolume(int chanfd) + { +     // Get volume min/max values ++    uint   idx; +     struct v4l2_queryctrl qctrl; +     qctrl.id = V4L2_CID_AUDIO_VOLUME; +-    if (ioctl(chanfd, VIDIOC_QUERYCTRL, &qctrl) < 0) ++ ++    for (idx = 0; idx < 20; ++idx) +     { ++        if (ioctl(chanfd, VIDIOC_QUERYCTRL, &qctrl) == 0) ++            break; ++        usleep(100 * 1000); ++    } ++ ++    if (idx == 20) ++    { +         VERBOSE(VB_IMPORTANT, LOC_WARN + +                 "Unable to get recording volume parameters(max/min)" + ENO + +                 "\n\t\t\tusing default range [0,65535]."); +@@ -582,8 +623,15 @@ +     ctrl.id = V4L2_CID_AUDIO_VOLUME; +     ctrl.value = ctrl_volume; +  +-    if (ioctl(chanfd, VIDIOC_S_CTRL, &ctrl) < 0) ++    for (idx = 0; idx < 20; ++idx) +     { ++        if (ioctl(chanfd, VIDIOC_S_CTRL, &ctrl) == 0) ++            break; ++        usleep(100 * 1000); ++    } ++ ++    if (idx == 20) ++    { +         VERBOSE(VB_IMPORTANT, LOC_WARN + +                 "Unable to set recording volume" + ENO + "\n\t\t\t" + +                 "If you are using an AverMedia M179 card this is normal."); +@@ -765,6 +813,7 @@ +  +     for (uint i = 0; i < ext_ctrls.size(); i++) +     { ++        uint   idx; +         struct v4l2_ext_controls ctrls; +         bzero(&ctrls, sizeof(struct v4l2_ext_controls)); +  +@@ -774,8 +823,15 @@ +         ctrls.count       = 1; +         ctrls.controls    = &ext_ctrls[i]; +              +-        if (ioctl(fd, VIDIOC_S_EXT_CTRLS, &ctrls) < 0) ++        for (idx = 0; idx < 20; ++idx) +         { ++            if (ioctl(fd, VIDIOC_S_EXT_CTRLS, &ctrls) == 0) ++                break; ++            usleep(100 * 1000); ++        } ++ ++        if (idx == 20) ++        { +             QMutexLocker locker(&control_description_lock); +             VERBOSE(VB_IMPORTANT, QString("mpegrecorder.cpp:set_ctrls(): ") + +                     QString("Could not set %1 to %2") +@@ -814,6 +870,30 @@ +     { +         maxbitrate = high_mpeg4peakbitrate; +         bitrate    = high_mpeg4avgbitrate; ++ ++        // query supported audio codecs and prefer AC3 ++        uint   idx; ++        struct v4l2_queryctrl qctrl; ++        qctrl.id = V4L2_CID_MPEG_AUDIO_ENCODING; ++ ++        for (idx = 0; idx < 20; ++idx) ++        { ++            if (ioctl(chanfd, VIDIOC_QUERYCTRL, &qctrl) == 0) ++                break; ++            usleep(100 * 1000); ++        } ++ ++        if (idx == 20) ++        { ++            VERBOSE(VB_IMPORTANT, LOC_WARN + ++                    "Unable to get supported audio codecs." + ENO); ++        } ++        else ++        { ++            if (qctrl.minimum != qctrl.maximum) ++                add_ext_ctrl(ext_ctrls, V4L2_CID_MPEG_AUDIO_ENCODING, ++                             qctrl.maximum); ++        } +     } +     maxbitrate = std::max(maxbitrate, bitrate); +  +@@ -837,19 +917,36 @@ +     int audioinput = audiodevice.toUInt(&ok); +     if (ok) +     { ++        uint   idx; +         struct v4l2_audio ain; +         bzero(&ain, sizeof(ain)); +         ain.index = audioinput; +-        if (ioctl(chanfd, VIDIOC_ENUMAUDIO, &ain) < 0) ++ ++        for (idx = 0; idx < 20; ++idx) +         { ++            if (ioctl(chanfd, VIDIOC_ENUMAUDIO, &ain) == 0) ++                break; ++            usleep(100 * 1000); ++        } ++ ++        if (idx == 20) ++        { +             VERBOSE(VB_IMPORTANT, LOC_WARN + +                     "Unable to get audio input."); +         } +         else +         { +             ain.index = audioinput; +-            if (ioctl(chanfd, VIDIOC_S_AUDIO, &ain) < 0) ++ ++            for (idx = 0; idx < 20; ++idx) +             { ++                if (ioctl(chanfd, VIDIOC_S_AUDIO, &ain) == 0) ++                    break; ++                usleep(100 * 1000); ++            } ++ ++            if (idx == 20) ++            { +                 VERBOSE(VB_IMPORTANT, LOC_WARN + +                         "Unable to set audio input."); +             } +@@ -1036,17 +1133,26 @@ +     if (deviceIsMpegFile) +         elapsedTimer.start(); +     else if (_device_read_buffer) +-        _device_read_buffer->Start(); ++    { ++        VERBOSE(VB_RECORD, LOC + "Initial startup of recorder"); +  +-    needs_resolution = (driver == "hdpvr"); ++        if (StartEncoding(readfd)) ++            _device_read_buffer->Start(); ++        else ++        { ++            VERBOSE(VB_IMPORTANT, LOC_ERR + "Failed to start recording"); ++            recording = false; ++            QMutexLocker locker(&recording_wait_lock); ++            recording_wait.wakeAll(); ++            _error = true; ++        } ++    } +  +     QByteArray vdevice = videodevice.toAscii(); +     while (encoding && !_error) +     { +         if (PauseAndWait(100)) +             continue; +- +-        HandleResolutionChanges(); +          +         if (deviceIsMpegFile) +         { +@@ -1090,35 +1196,7 @@ +             { +                 VERBOSE(VB_IMPORTANT, LOC_ERR + "Device error detected"); +  +-                _device_read_buffer->Stop(); +- +-                QMutexLocker locker(&start_stop_encoding_lock); +- +-                StopEncoding(readfd); +- +-                // Make sure the next things in the file are a PAT & PMT +-                if (_stream_data->PATSingleProgram() && +-                    _stream_data->PMTSingleProgram()) +-                { +-                    bool tmp = _wait_for_keyframe_option; +-                    _wait_for_keyframe_option = false; +-                    HandleSingleProgramPAT(_stream_data->PATSingleProgram()); +-                    HandleSingleProgramPMT(_stream_data->PMTSingleProgram()); +-                    _wait_for_keyframe_option = tmp; +-                } +- +-                if (StartEncoding(readfd)) +-                { +-                    _device_read_buffer->Start(); +-                } +-                else +-                { +-                    if (0 != close(readfd)) +-                        VERBOSE(VB_IMPORTANT, LOC_ERR + "Close error" + ENO); +-                     +-                    // Force card to be reopened on next iteration.. +-                    readfd = -1; +-                } ++                RestartEncoding(); +             } +             else if (_device_read_buffer->IsEOF()) +             { +@@ -1216,6 +1294,8 @@ +         } +     } +  ++    VERBOSE(VB_RECORD, LOC + "StartRecording finishing up"); ++ +     if (_device_read_buffer) +     { +         if (_device_read_buffer->IsRunning()) +@@ -1224,6 +1304,7 @@ +         delete _device_read_buffer; +         _device_read_buffer = NULL; +     } ++ +     StopEncoding(readfd); +  +     FinishRecording(); +@@ -1373,52 +1454,95 @@ +  +         if (!paused) +         { ++            VERBOSE(VB_RECORD, LOC + "PauseAndWait pause"); ++ ++            // Some drivers require streaming to be disabled before ++            // an input switch and other channel format setting. ++            if (requires_special_pause) ++                StopEncoding(readfd); ++ +             if (_device_read_buffer) +             { +                 QMutex drb_lock; +                 drb_lock.lock(); +- +                 _device_read_buffer->SetRequestPause(true); +- +                 pauseWait.wait(&drb_lock, timeout); +             } +             else +-            { +-                paused = true; +                 pauseWait.wakeAll(); +-            } +  +-            // Some drivers require streaming to be disabled before +-            // an input switch and other channel format setting. +-            if (requires_special_pause) +-                StopEncoding(readfd); +- ++            paused = true; +             if (tvrec) +                 tvrec->RecorderPaused(); +         } +  +         unpauseWait.wait(&waitlock, timeout); +     } +-    if (!request_pause) ++ ++    if (!request_pause && paused) +     { +-        if (paused) ++        VERBOSE(VB_RECORD, LOC + "PauseAndWait unpause"); ++ ++        if (driver == "hdpvr") +         { +-            // Some drivers require streaming to be disabled before +-            // an input switch and other channel format setting. +-            if (requires_special_pause) +-                StartEncoding(readfd); ++            m_h264_parser.Reset(); ++            _wait_for_keyframe_option = true; ++            _seen_sps = false; +  +-            if (_device_read_buffer) +-                _device_read_buffer->SetRequestPause(false); ++            // Sleep any less than 1.5 seconds, and the HD-PVR will ++            // return the old resolution, when the resolution is changing. ++            usleep(1500 * 1000); ++        } +  +-            if (_stream_data) +-                _stream_data->Reset(_stream_data->DesiredProgram()); +-        } ++        // Some drivers require streaming to be disabled before ++        // an input switch and other channel format setting. ++        if (requires_special_pause) ++            StartEncoding(readfd); ++         ++        if (_device_read_buffer) ++            _device_read_buffer->SetRequestPause(false); ++         ++        if (_stream_data) ++            _stream_data->Reset(_stream_data->DesiredProgram()); ++ +         paused = false; +     } ++ +     return paused; + } +  ++void MpegRecorder::RestartEncoding(void) ++{ ++    VERBOSE(VB_RECORD, LOC + "RestartEncoding"); ++ ++    _device_read_buffer->Stop(); ++     ++    QMutexLocker locker(&start_stop_encoding_lock); ++     ++    StopEncoding(readfd); ++     ++    // Make sure the next things in the file are a PAT & PMT ++    if (_stream_data->PATSingleProgram() && ++        _stream_data->PMTSingleProgram()) ++    { ++        _wait_for_keyframe_option = false; ++        HandleSingleProgramPAT(_stream_data->PATSingleProgram()); ++        HandleSingleProgramPMT(_stream_data->PMTSingleProgram()); ++    } ++     ++    if (StartEncoding(readfd)) ++    { ++        _device_read_buffer->Start(); ++    } ++    else ++    { ++        if (0 != close(readfd)) ++            VERBOSE(VB_IMPORTANT, LOC_ERR + "Close error" + ENO); ++         ++        readfd = -1; ++    } ++} ++ + bool MpegRecorder::StartEncoding(int fd) + { +     QMutexLocker locker(&start_stop_encoding_lock); +@@ -1427,13 +1551,22 @@ +     memset(&command, 0, sizeof(struct v4l2_encoder_cmd)); +     command.cmd = V4L2_ENC_CMD_START; +  ++    if (driver == "hdpvr") ++        HandleResolutionChanges(); ++ +     VERBOSE(VB_RECORD, LOC + "StartEncoding"); +-    needs_resolution = (driver == "hdpvr"); +  +-    for (int idx = 0; idx < 10; ++idx) ++    for (int idx = 0; idx < 20; ++idx) +     { +         if (ioctl(fd, VIDIOC_ENCODER_CMD, &command) == 0) +         { ++            if (driver == "hdpvr") ++            { ++                m_h264_parser.Reset(); ++                _wait_for_keyframe_option = true; ++                _seen_sps = false; ++            } ++ +             VERBOSE(VB_RECORD, LOC + "Encoding started"); +             return true; +         } +@@ -1444,7 +1577,7 @@ +             return false; +         } +  +-        usleep(250 * 1000); ++        usleep(100 * 1000); +     } +  +     VERBOSE(VB_IMPORTANT, LOC_ERR + "StartEncoding - giving up" + ENO); +@@ -1461,9 +1594,8 @@ +  +     VERBOSE(VB_RECORD, LOC + "StopEncoding"); +  +-    for (int idx = 0; idx < 10; ++idx) ++    for (int idx = 0; idx < 20; ++idx) +     { +- +         if (ioctl(fd, VIDIOC_ENCODER_CMD, &command) == 0) +         { +             VERBOSE(VB_RECORD, LOC + "Encoding stopped"); +@@ -1476,7 +1608,7 @@ +             return false; +         } +  +-        usleep(250 * 1000); ++        usleep(100 * 1000); +     } +  +     VERBOSE(VB_IMPORTANT, LOC_ERR + "StopEncoding - giving up" + ENO); +@@ -1544,7 +1676,7 @@ + void MpegRecorder::HandleSingleProgramPMT(ProgramMapTable *pmt) + { +     if (!pmt) +-{ ++    { +         return; +     } +  +@@ -1564,27 +1696,89 @@ +         DTVRecorder::BufferedWrite(*(reinterpret_cast<TSPacket*>(&buf[i]))); + } +  ++bool MpegRecorder::WaitFor_HDPVR(void) ++{ ++    // After a resolution change, it can take the HD-PVR a few ++    // seconds before it is usable again. ++ ++    // Tell it to start encoding, then wait for it to actually feed us ++    // some data. ++    QMutexLocker locker(&start_stop_encoding_lock); ++ ++    struct v4l2_encoder_cmd command; ++    struct pollfd polls; ++    int    idx; ++ ++    memset(&command, 0, sizeof(struct v4l2_encoder_cmd)); ++    command.cmd = V4L2_ENC_CMD_START; ++ ++    for (idx = 0; idx < 20; ++idx) ++    { ++        if (ioctl(readfd, VIDIOC_ENCODER_CMD, &command) == 0) ++            break; ++        usleep(100 * 1000); ++    } ++ ++    if (idx == 20) ++        return false; ++ ++    polls.fd      = readfd; ++    polls.events  = POLLIN; ++    polls.revents = 0; ++ ++    for (idx = 0; idx < 10; ++idx) ++    { ++        if (poll(&polls, 1, 250) > 0) ++            break; ++    } ++ ++    if (idx == 10) ++        return false; ++ ++    // HD-PVR should now be "ready" ++    command.cmd = V4L2_ENC_CMD_STOP; ++ ++    for (idx = 0; idx < 20; ++idx) ++    { ++        if (ioctl(readfd, VIDIOC_ENCODER_CMD, &command) == 0) ++            return true; ++        usleep(100 * 1000); ++    } ++ ++    return false; ++} ++ + void MpegRecorder::HandleResolutionChanges(void) + { +-    if (!needs_resolution) +-        return; +- +     VERBOSE(VB_RECORD, LOC + "Checking Resolution"); +     struct v4l2_format vfmt; +     memset(&vfmt, 0, sizeof(vfmt)); +     vfmt.type = V4L2_BUF_TYPE_VIDEO_CAPTURE; +              ++    if (driver == "hdpvr") ++        WaitFor_HDPVR(); ++ ++    uint idx; +     uint pix = 0; ++ ++    for (idx = 0; idx < 20; ++idx) ++    { +     if (0 == ioctl(chanfd, VIDIOC_G_FMT, &vfmt)) +     { +         VERBOSE(VB_RECORD, LOC + QString("Got Resolution %1x%2") +                 .arg(vfmt.fmt.pix.width).arg(vfmt.fmt.pix.height)); +         pix = vfmt.fmt.pix.width * vfmt.fmt.pix.height; +-        needs_resolution = false; ++            break; ++        } ++        // Typically takes 0.9 seconds after a resolution change ++        usleep(100 * 1000); +     } +  +     if (!pix) ++    { ++        VERBOSE(VB_RECORD, LOC + "Giving up detecting resolution"); +         return; // nothing to do, we don't have a resolution yet ++    } +  +     int old_max = maxbitrate, old_avg = bitrate; +     if (pix <= 768*568) +@@ -1609,13 +1803,14 @@ +         if (old_max == old_avg) +         { +             VERBOSE(VB_RECORD, LOC + +-                    QString("Old bitrate %1 CBR").arg(old_avg)); ++                    QString("Old bitrate %1 CBR for %2x%3") ++                    .arg(old_avg).arg(width).arg(height)); +         } +         else +         { +             VERBOSE(VB_RECORD, LOC + +-                    QString("Old bitrate %1/%2 VBR") +-                    .arg(old_avg).arg(old_max)); ++                    QString("Old bitrate %1/%2 VBR for %3x%4") ++                    .arg(old_avg).arg(old_max).arg(width).arg(height)); +         } +  +         if (maxbitrate == bitrate) +@@ -1642,12 +1837,6 @@ +                      maxbitrate * 1000); +  +         set_ctrls(readfd, ext_ctrls); ++ +     } +- +-    // Restart streaming. Shouldn't be needed? seems to be with current driver. +-    QMutexLocker locker(&start_stop_encoding_lock); +-    StopEncoding(readfd); +-    StartEncoding(readfd); +- +-    needs_resolution = false; + } diff --git a/abs/core-testing/mythtv/trunk/mythtv-svn/patches/mythcommflag-avidemux.2.patch b/abs/core-testing/mythtv/trunk/mythtv-svn/patches/mythcommflag-avidemux.2.patch new file mode 100644 index 0000000..d26645f --- /dev/null +++ b/abs/core-testing/mythtv/trunk/mythtv-svn/patches/mythcommflag-avidemux.2.patch @@ -0,0 +1,179 @@ +Index: programs/mythcommflag/main.cpp +=================================================================== +--- programs/mythcommflag/main.cpp	(revision 18596) ++++ programs/mythcommflag/main.cpp	(working copy) +@@ -300,6 +300,132 @@ +     return COMMFLAG_EXIT_NO_ERROR_WITH_NO_BREAKS; + } +  ++int GetAviDemux(QString list, QString chanid, QString starttime, const QString &outputfilename) ++{ ++    QMap<long long, int> cutlist; ++    QMap<long long, int>::Iterator it; ++    QString result; ++    int startValue = 0; ++    long long myTotalFrames; ++    long long myFrameRate; ++ ++    ProgramInfo *pginfo = ++        ProgramInfo::GetProgramFromRecorded(chanid, starttime); ++ ++    NuppelVideoPlayer* nvp = new NuppelVideoPlayer("avidemux_export", pginfo); ++ ++    myFrameRate = (long long)(nvp->GetFrameRate() * 1000); ++    myTotalFrames = 1000000; //nvp->GetTotalFrameCount(); ++ ++    if (!pginfo) ++    { ++        VERBOSE(VB_IMPORTANT, ++                QString("No program data exists for channel %1 at %2") ++                .arg(chanid).arg(starttime)); ++        return COMMFLAG_BUGGY_EXIT_NO_CHAN_DATA; ++    } ++ ++    QString filename = pginfo->GetPlaybackURL(TRUE); ++ ++    if (list == "cutlist") ++        pginfo->GetCutList(cutlist); ++    else ++        pginfo->GetCommBreakList(cutlist); ++ ++// Formatting of output data ++ ++    for (it = cutlist.begin(); it != cutlist.end(); ++it) ++    { ++        if ((it.key() == 0) && (startValue == 0)) // Cutlist starts on first frame, ++            { ++            ++it; ++            startValue = it.key(); ++            } ++ ++        if ((it.key() != 0) && (startValue == 0)) // Cutlist starts on non-first frame ++            { ++            result += QString("app.addSegment(0,0,%1);").arg(it.key());   ++            startValue = it.key(); ++            } ++        else ++           { ++            if  ((*it == MARK_COMM_END) && (startValue != 0) || ++                (*it == MARK_CUT_END) && (startValue != 0)) ++                { ++                 if (result != "") ++                       result += "\n"; ++                       startValue = it.key(); ++                       result += QString("app.addSegment(0,%1,").arg(it.key()); // Value is a start value ++                } ++            else   ++                { ++                    result += QString("%1);").arg(it.key() - startValue); // Value is an end value ++                } ++           } ++   } ++ ++if (it.key() != myTotalFrames) ++    { ++        result += QString("%1);").arg(myTotalFrames); ++    } ++ ++// Governs the file output: ++ ++    QString tmp = ""; ++    ostream *out = &cout; ++ ++    if (outputfilename != "-"){ ++        QByteArray tmp = outputfilename.toLocal8Bit(); ++        out = new fstream(tmp.constData(), ios::app | ios::out ); ++        } ++ ++    if (outputfilename == ""){ ++        VERBOSE(VB_IMPORTANT, ++           QString("Error: AVIDemux output requires the use of the --outputfile option.")); ++           return COMMFLAG_EXIT_INVALID_CMDLINE; ++        } ++ ++        tmp = QString("//AD  <- Needed to identify//\n" ++                        "//--automatically built--\n" ++                        "//--Project:\n\n" ++                        "var app = new Avidemux();\n\n" ++                        "//** Video **\n" ++                        "// 01 videos source\n"  ++                        "app.load(\"%1\");\n\n" ++                        "app.clearSegments();\n\n" ++                        "%2\n" ++                        "app.markerA=0;\n" ++                        "app.markerB=%3;\n" ++                        "app.rebuildIndex();\n\n" ++                        "//** Postproc **\n" ++                        "app.video.setPostProc(3,3,0);\n\n" ++                        "app.video.setFps1000(%4);\n\n" ++                        "//** Filters **\n\n" ++                        "//** Video Codec conf **\n" ++                        "app.video.codec(\"Copy\",\"CQ=4\",\"0 \");\n\n" ++                        "//** Audio **\n" ++                        "app.audio.reset();\n" ++                        "app.audio.codec(\"copy\",128,0,\"\");\n" ++                        "app.audio.normalizeMode=0;\n" ++                        "app.audio.normalizeValue=0;\n" ++                        "app.audio.delay=0;\n" ++                        "app.audio.mixer(\"NONE\");\n" ++                        "app.setContainer(\"AVI\");\n" ++                        "setSuccess(1);\n" ++                        "//app.Exit();\n\n" ++                        "//End of script\n").arg(filename).arg(result).arg(myTotalFrames).arg(myFrameRate).toLocal8Bit().constData(); ++ ++        const QByteArray tmp2 = tmp.toLocal8Bit(); ++        *out << tmp2.constData() << endl; ++ ++        VERBOSE(VB_IMPORTANT, ++                QString("AVIDemux Project generated for %1 at %2 with filename %3.") ++                .arg(chanid).arg(starttime).arg(outputfilename)); ++ ++    return COMMFLAG_EXIT_NO_ERROR_WITH_NO_BREAKS; ++} ++ ++ + void streamOutCommercialBreakList( +     ostream &output, const QMap<long long, int> &commercialBreakList) + { +@@ -811,6 +937,8 @@ +     bool clearCutlist = false; +     bool getCutlist = false; +     bool getSkipList = false; ++    bool getAviDemuxCutlist = false; ++    bool getAviDemuxSkiplist = false; +     QString newCutList = QString::null; +     QMap<QString, QString> settingsOverride; +  +@@ -960,6 +1088,10 @@ +             getCutlist = true; +         else if (!strcmp(a.argv()[argpos], "--getskiplist")) +             getSkipList = true; ++        else if (!strcmp(a.argv()[argpos], "--getcutlist-avidemux")) ++            getAviDemuxCutlist = true; ++        else if (!strcmp(a.argv()[argpos], "--getskiplist-avidemux")) ++            getAviDemuxSkiplist = true; +         else if (!strcmp(a.argv()[argpos], "--setcutlist")) +             newCutList = (a.argv()[++argpos]); +         else if (!strcmp(a.argv()[argpos], "-j")) +@@ -1111,6 +1243,8 @@ +                     "                             #-#[,#-#]...  (ie, 1-100,1520-3012,4091-5094\n" +                     "--getcutlist                 Display the current cutlist\n" +                     "--getskiplist                Display the current Commercial Skip list\n" ++                    "--getcutlist-avidemux        Export cutlist as AVIDemux Project File\n" ++                    "--getskiplist-avidemux       Export skiplist as AVIDemux Project File\n" +                     "-v or --verbose debug-level  Use '-v help' for level info\n" +                     "--queue                      Insert flagging job into the JobQueue rather than\n" +                     "                             running flagging in the foreground\n" +@@ -1223,6 +1357,12 @@ +     if (!newCutList.isNull()) +         return SetCutList(chanid, starttime, newCutList); +  ++    if (getAviDemuxCutlist) ++        return GetAviDemux("cutlist", chanid, starttime, outputfilename); ++ ++    if (getAviDemuxSkiplist) ++        return GetAviDemux("commflag", chanid, starttime, outputfilename); ++ +     if (getCutlist) +         return GetMarkupList("cutlist", chanid, starttime); +  diff --git a/abs/core-testing/mythtv/trunk/mythtv-svn/smolt_jump.patch b/abs/core-testing/mythtv/trunk/mythtv-svn/smolt_jump.patch new file mode 100644 index 0000000..0fc452a --- /dev/null +++ b/abs/core-testing/mythtv/trunk/mythtv-svn/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/trunk/mythtv-svn/svn_main_menu_popup.patch b/abs/core-testing/mythtv/trunk/mythtv-svn/svn_main_menu_popup.patch new file mode 100644 index 0000000..5556683 --- /dev/null +++ b/abs/core-testing/mythtv/trunk/mythtv-svn/svn_main_menu_popup.patch @@ -0,0 +1,211 @@ +Index: libs/libmythui/myththemedmenu.h +=================================================================== +--- libs/libmythui/myththemedmenu.h	(revision 19291) ++++ libs/libmythui/myththemedmenu.h	(working copy) +@@ -2,6 +2,7 @@ + #define MYTHTHEMEDMENU_H_ +  + #include "mythscreentype.h" ++#include "mythdialogbox.h" + #include "mythuistatetype.h" + #include "mythuibuttonlist.h" + #include "xmlparsebase.h" +@@ -77,6 +78,11 @@ +     void ReloadExitKey(void); +     virtual void aboutToShow(void); +  ++    void doMenu(); ++    void aboutScreen(); ++    MythDialogBox *m_menuPopup; ++    void customEvent(QEvent *event); ++ +   protected: +     virtual bool keyPressEvent(QKeyEvent *e); +  +Index: libs/libmythui/myththemedmenu.cpp +=================================================================== +--- libs/libmythui/myththemedmenu.cpp	(revision 19291) ++++ libs/libmythui/myththemedmenu.cpp	(working copy) +@@ -32,6 +32,7 @@ +     m_callbackdata = NULL; +  +     m_killable = false; ++ + } +  + MythThemedMenuState::~MythThemedMenuState() +@@ -95,7 +96,7 @@ +     m_exitModifier = -1; +     m_menumode = ""; +     m_buttonList = NULL; +- ++    m_menuPopup = NULL; +     if (!m_state) +     { +         m_state = new MythThemedMenuState(parent, "themedmenustate"); +@@ -271,6 +272,10 @@ +                 m_wantpop = true; +             } +         } ++        else if (action == "MENU") ++        { ++            doMenu(); ++        } +         else +             handled = false; +     } +@@ -292,6 +297,154 @@ +     updateLCD(); + } +  ++void MythThemedMenu::doMenu() ++{ ++ ++    if (m_menuPopup) ++        return; ++    int allowsd =  GetMythDB()->GetNumSetting("AllowQuitShutdown"); ++    int override_menu = GetMythDB()->GetNumSetting("OverRideExitMenu"); ++    QString label = "System Menu"; ++    MythScreenStack *mainStack = GetMythMainWindow()->GetMainStack(); ++    m_menuPopup = new MythDialogBox(label, mainStack, "menuPopup"); ++    if (m_menuPopup->Create()) ++        mainStack->AddScreen(m_menuPopup); ++    if ( override_menu == 0 ) ++    { ++        if ( allowsd != 0 && allowsd !=4  ) ++        { ++            m_menuPopup->SetReturnEvent(this,"popmenu_exit"); ++            m_menuPopup->AddButton("Shutdown"); ++            m_menuPopup->AddButton("Reboot"); ++        } ++        else ++        { ++            m_menuPopup->SetReturnEvent(this,"popmenu_noexit"); ++        } ++    } ++    if ( override_menu == 5 ) ++    { // reboot ++        m_menuPopup->SetReturnEvent(this,"popmenu_reboot"); ++        m_menuPopup->AddButton("Reboot"); ++    } ++    else if ( override_menu == 2 || override_menu == 4 ) ++    { // shutdown ++            m_menuPopup->SetReturnEvent(this,"popmenu_shutdown"); ++            m_menuPopup->AddButton("Shutdown"); ++    } ++    else if ( override_menu == 3 || override_menu == 6 ) ++    { //    both ++        m_menuPopup->SetReturnEvent(this,"popmenu_exit"); ++        m_menuPopup->AddButton("Shutdown"); ++        m_menuPopup->AddButton("Reboot"); ++    } ++    else ++    { ++        m_menuPopup->SetReturnEvent(this,"popmenu_noexit"); ++    } ++ ++    m_menuPopup->AddButton("About"); ++    m_menuPopup->AddButton("Cancel"); ++ ++} ++void MythThemedMenu::aboutScreen() ++{ ++ ++    extern const char *myth_source_version; ++    extern const char *myth_source_path; ++    QString distro_line; ++    distro_line=""; ++ ++    QFile file("/etc/os_myth_release"); ++    if ( file.open(QFile::ReadOnly)) ++    { ++        QTextStream t( &file );        // use a text stream ++        distro_line = t.readLine(); ++        file.close(); ++    } ++ ++    QString label = ""; ++    label.append(QObject::tr("Revision: ") + myth_source_version   + "  \n  Branch:" +  myth_source_path  + "\n" + distro_line ); ++ ++    MythScreenStack *mainStack = GetMythMainWindow()->GetMainStack(); ++    m_menuPopup = new MythDialogBox(label, mainStack, "About"); ++    if (m_menuPopup->Create()) ++        mainStack->AddScreen(m_menuPopup); ++ ++    m_menuPopup->SetReturnEvent(this,"About"); ++    m_menuPopup->AddButton("OK!"); ++ ++} ++ ++void MythThemedMenu::customEvent(QEvent *event) ++{ ++    if (event->type() == kMythDialogBoxCompletionEventType) ++    { ++        DialogCompletionEvent *dce = ++                dynamic_cast<DialogCompletionEvent*>(event); ++        QString resultid= dce->GetId(); ++        int buttonnum  = dce->GetResult(); ++        QString halt_cmd=GetMythDB()->GetSetting("HaltCommand"); ++        QString reboot_cmd=GetMythDB()->GetSetting("RebootCommand"); ++ ++        if (resultid == "popmenu_exit") ++        { ++            if (buttonnum == 0) ++            { ++                if (!halt_cmd.isEmpty() ) ++                    system(halt_cmd.toAscii()); ++            } ++ ++            if (buttonnum == 1) ++            { ++                if (!reboot_cmd.isEmpty() ) ++                    system(reboot_cmd.toAscii()); ++            } ++ ++            if (buttonnum == 2) ++            { ++                aboutScreen(); ++            } ++        } ++ ++        if (resultid == "popmenu_noexit") ++        { ++            if (buttonnum == 0) ++                aboutScreen(); ++        } ++ ++        if (resultid == "popmenu_reboot") ++        { ++            if (buttonnum == 0) ++            { ++                if (!reboot_cmd.isEmpty() ) ++                    system(reboot_cmd.toAscii()); ++            } ++ ++            if (buttonnum == 1) ++            { ++                aboutScreen(); ++            } ++        } ++ ++        if (resultid == "popmenu_shutdown") ++        { ++            if (buttonnum == 0) ++            { ++                if (!halt_cmd.isEmpty() ) ++                    system(halt_cmd.toAscii()); ++            } ++ ++            if (buttonnum == 1) ++            { ++                aboutScreen(); ++            } ++        } ++ ++        m_menuPopup = NULL; ++    } ++} ++ + /** \brief Parses the element's tags and set the ThemeButton's type, +  *         text, depends, and action, then adds the button. +  * diff --git a/abs/core-testing/mythtv/trunk/mythtv-themes/PKGBUILD b/abs/core-testing/mythtv/trunk/mythtv-themes/PKGBUILD new file mode 100755 index 0000000..8cd0d04 --- /dev/null +++ b/abs/core-testing/mythtv/trunk/mythtv-themes/PKGBUILD @@ -0,0 +1,36 @@ +pkgname=mythv-themes-svn +pkgver=15924                            +pkgrel=4 +pkgdesc="themes for mythtv"  +url="http://www.mythtv.org"  +license="GPL"  +depends=( )  +#makedepends=('sqlite3' 'sed')  +conflicts=()  +replaces=()  +backup=()  +#install='mythtv.install'  +source=()  +arch=('i686') +md5sums=()  +_svntrunk=http://cvs.mythtv.org/svn/trunk/myththemes +_svnmod=myththemes + +build() {  +echo svn co $_svntrunk --config-dir ./ -r $pkgver $_svnmod + svn co $_svntrunk --config-dir ./ -r $pkgver $_svnmod +#svn co http://cvs.mythtv.org/svn/trunk/mythtv +#svn co http://cvs.mythtv.org/svn/trunk/mythplugins +#svn co http://cvs.mythtv.org/svn/trunk/myththemes +cd $startdir/src/myththemes +   make distclean +    ./configure   +    #./configure --disable-all --enable-mythweather --enable-fftw --disable-aac   +   make  || return 1 +   make INSTALL_ROOT=$startdir/pkg install +#   cd $startdir/src/$pkgname +#   cd mythmovietime +#   make || return 1 +#   make INSTALL_ROOT=$startdir/pkg install + +} diff --git a/abs/core-testing/mythtv/trunk/plugins/mytharchive/PKGBUILD b/abs/core-testing/mythtv/trunk/plugins/mytharchive/PKGBUILD new file mode 100644 index 0000000..4d3e179 --- /dev/null +++ b/abs/core-testing/mythtv/trunk/plugins/mytharchive/PKGBUILD @@ -0,0 +1,41 @@ +pkgname=mytharchive-svn +pkgver=16153 +pkgrel=3 +pkgdesc="MythTV plugin that lets you create DVDs from or archive your recorded shows." +arch=('i686') +url="http://www.mythtv.org" +license=('GPL') +depends=('mythtv-svn' 'libxmu' 'mysql-python' 'pil' 'dvdauthor') +source=() +conflicts=('mythtv-plugins-svn') +groups=('mythtv-all-plugins-svn') +_svntrunk=http://cvs.mythtv.org/svn/trunk/mythplugins +_svnmod=mythplugins + + +build() { +   	PLUGIN=mytharchive +   	cd $startdir/src/ +   	svn co $_svntrunk --config-dir ./ -r $pkgver $_svnmod +   	cd $startdir/src/mythplugins + +   	PLUGIN=mytharchive +   	grep -q  programs-libs.pro  $PLUGIN/$PLUGIN/$PLUGIN.pro +	if [ $? != 0 ] +	then +		echo "include ( ../../programs-libs.pro )" >> $PLUGIN/$PLUGIN/$PLUGIN.pro +		msg "appending program lib" +	fi +	msg "Correcting configure    kde3 to kde" +	 sed -i 's#kde3#kde#' configure || return 1 +	make distclean +   	./configure  --enable-opengl --disable-all   --enable-create-archive --enable-create-dvd --enable-mytharchive || return 1 +	qmake mythplugins.pro || return 1 +	make qmake || return 1 +	msg "Correcting Makefile    kde3 to kde" +	sed -i 's#kde3#kde#' ./mytharchive/mytharchive/Makefile || return 1 +   	make -j 2 || return 1 +	make INSTALL_ROOT=$startdir/pkg install +} + + diff --git a/abs/core-testing/mythtv/trunk/plugins/mythbrowser/PKGBUILD b/abs/core-testing/mythtv/trunk/plugins/mythbrowser/PKGBUILD new file mode 100644 index 0000000..4c57cf0 --- /dev/null +++ b/abs/core-testing/mythtv/trunk/plugins/mythbrowser/PKGBUILD @@ -0,0 +1,35 @@ + +pkgname=mythbrowser-svn +pkgver=16153 +pkgrel=2 +pkgdesc="Mini web browser for MythTV" +url="http://www.mythtv.org" +arch=('i686') +depends=('mythtv-svn' 'wget' 'libxvmc' 'kdelibs') +conflicts=('mythtv-plugins-svn') +groups=('mythtv-all-plugins-svn') +license="GPL" +source=() +_svntrunk=http://cvs.mythtv.org/svn/trunk/mythplugins +_svnmod=mythplugins + +build() { +   cd $startdir/src/ +	echo svn co $_svntrunk --config-dir ./ -r $pkgver $_svnmod + 	svn co $_svntrunk --config-dir ./ -r $pkgver $_svnmod +   cd $startdir/src/mythplugins +   pwd +   PLUGIN=mythbrowser +   grep -q  programs-libs.pro  $PLUGIN/$PLUGIN/$PLUGIN.pro +   if [ $? != 0 ] +   then +	   	echo "include ( ../../programs-libs.pro )" >> $PLUGIN/$PLUGIN/$PLUGIN.pro +			msg "appending program lib" +		fi +	make distclean +   ./configure  --enable-opengl --disable-all --enable-mythbrowser || return 1 + #  sed -i 's#kde3#kde#' ./mythbrowser/mythbrowser/Makefile || return 1 +   make || return 1 + +   make INSTALL_ROOT=$startdir/pkg install +} diff --git a/abs/core-testing/mythtv/trunk/plugins/mythcontrols/PKGBUILD b/abs/core-testing/mythtv/trunk/plugins/mythcontrols/PKGBUILD new file mode 100644 index 0000000..f4d6da6 --- /dev/null +++ b/abs/core-testing/mythtv/trunk/plugins/mythcontrols/PKGBUILD @@ -0,0 +1,35 @@ +pkgname=mythcontrols-svn +pkgver=16153 +pkgrel=5 +pkgdesc="Experimental controls for MythTV" +url="http://www.mythtv.org" +arch=('i686') +depends=('mythtv'-svn) +conflicts=('mythtv-plugins-svn') +groups=('mythtv-all-plugins-svn') +license="GPL" +source=() +_svntrunk=http://cvs.mythtv.org/svn/trunk/mythplugins +_svnmod=mythplugins + + +build() { +	cd $startdir/src/ +	echo svn co $_svntrunk --config-dir ./ -r $pkgver $_svnmod + 	svn co $_svntrunk --config-dir ./ -r $pkgver $_svnmod +	cd $startdir/src/mythplugins +PLUGIN=mythcontrols +grep -q  programs-libs.pro  $PLUGIN/$PLUGIN/$PLUGIN.pro +if [ $? != 0 ] +then +		echo "include ( ../../programs-libs.pro )" >> $PLUGIN/$PLUGIN/$PLUGIN.pro +			msg "appending program lib" +		fi +	make distclean +   ./configure  --disable-all --enable-opengl --enable-mythcontrols + +   make -j 2 || return 1 + +   make INSTALL_ROOT=$startdir/pkg install +} + diff --git a/abs/core-testing/mythtv/trunk/plugins/mythflix/PKGBUILD b/abs/core-testing/mythtv/trunk/plugins/mythflix/PKGBUILD new file mode 100644 index 0000000..9e8c92e --- /dev/null +++ b/abs/core-testing/mythtv/trunk/plugins/mythflix/PKGBUILD @@ -0,0 +1,34 @@ +pkgname=mythflix-svn +pkgver=16153 +pkgrel=2 +pkgdesc="Netflix access plugin for MythTV" +url="http://www.mythtv.org" +arch=('i686') +depends=('mythtv-svn') +conflicts=('mythtv-plugins-svn') +groups=('mythtv-all-plugins-svn') +license="GPL" +source=() +_svntrunk=http://cvs.mythtv.org/svn/trunk/mythplugins +_svnmod=mythplugins + + +build() { +	cd $startdir/src/ +	echo svn co $_svntrunk --config-dir ./ -r $pkgver $_svnmod + 	svn co $_svntrunk --config-dir ./ -r $pkgver $_svnmod +	cd $startdir/src/mythplugins +	PLUGIN=mythflix +	grep -q  programs-libs.pro  $PLUGIN/$PLUGIN/$PLUGIN.pro +	if [ $? != 0 ] +	then +			echo "include ( ../../programs-libs.pro )" >> $PLUGIN/$PLUGIN/$PLUGIN.pro +				msg "appending program lib" +			fi +	make distclean +   ./configure  --disable-all --enable-opengl --enable-mythflix  + +   make -j 2 || return 1 + +   make INSTALL_ROOT=$startdir/pkg install +} diff --git a/abs/core-testing/mythtv/trunk/plugins/mythgallery/PKGBUILD b/abs/core-testing/mythtv/trunk/plugins/mythgallery/PKGBUILD new file mode 100644 index 0000000..52fb732 --- /dev/null +++ b/abs/core-testing/mythtv/trunk/plugins/mythgallery/PKGBUILD @@ -0,0 +1,36 @@ +pkgname=mythgallery-svn +pkgver=16153 +pkgrel=3 +pkgdesc="Image gallery plugin for MythTV" +url="http://www.mythtv.org" +arch=('i686') +depends=('mythtv-svn' 'libexif' 'libtiff') +conflicts=('mythtv-plugins-svn') +groups=('mythtv-all-plugins-svn') +license="GPL" +source=() +_svntrunk=http://cvs.mythtv.org/svn/trunk/mythplugins +_svnmod=mythplugins + + +build() { +	cd $startdir/src/ +	echo svn co $_svntrunk --config-dir ./ -r $pkgver $_svnmod + 	svn co $_svntrunk --config-dir ./ -r $pkgver $_svnmod +	cd $startdir/src/mythplugins +	export QMAKESPEC='linux-g++' +	PLUGIN=mythgallery +	grep -q  programs-libs.pro  $PLUGIN/$PLUGIN/$PLUGIN.pro +	if [ $? != 0 ] +	then +			echo "include ( ../../programs-libs.pro )" >> $PLUGIN/$PLUGIN/$PLUGIN.pro +				msg "appending program lib" +			fi +	make distclean +   ./configure  --disable-all --enable-opengl --enable-mythgallery --enable-exif + +   make -j 2 || return 1 + +   make INSTALL_ROOT=$startdir/pkg install +} + diff --git a/abs/core-testing/mythtv/trunk/plugins/mythgame/PKGBUILD b/abs/core-testing/mythtv/trunk/plugins/mythgame/PKGBUILD new file mode 100644 index 0000000..8c4257f --- /dev/null +++ b/abs/core-testing/mythtv/trunk/plugins/mythgame/PKGBUILD @@ -0,0 +1,36 @@ +pkgname=mythgame-svn +pkgver=16153 +pkgrel=4 +pkgdesc="Emulation plugin for MythTV" +url="http://www.mythtv.org" +arch=('i686') +depends=('mythtv-svn' 'zlib') +conflicts=('mythtv-plugins-svn') +groups=('mythtv-all-plugins-svn') +license="GPL" +source=() +_svntrunk=http://cvs.mythtv.org/svn/trunk/mythplugins +_svnmod=mythplugins + + +build() { +	cd $startdir/src/ +	echo svn co $_svntrunk --config-dir ./ -r $pkgver $_svnmod + 	svn co $_svntrunk --config-dir ./ -r $pkgver $_svnmod +	cd $startdir/src/mythplugins +PLUGIN=mythgame +grep -q  programs-libs.pro  $PLUGIN/$PLUGIN/$PLUGIN.pro +if [ $? != 0 ] +then +		echo "include ( ../../programs-libs.pro )" >> $PLUGIN/$PLUGIN/$PLUGIN.pro +		msg	 "appending program lib" +		fi +	export QMAKESPEC='linux-g++' +	make distclean +   ./configure  --disable-all --enable-opengl --enable-mythgame  + +   make -j 2 || return 1 + +   make INSTALL_ROOT=$startdir/pkg install +} + diff --git a/abs/core-testing/mythtv/trunk/plugins/mythmovietime/PKGBUILD b/abs/core-testing/mythtv/trunk/plugins/mythmovietime/PKGBUILD new file mode 100644 index 0000000..f83cdbf --- /dev/null +++ b/abs/core-testing/mythtv/trunk/plugins/mythmovietime/PKGBUILD @@ -0,0 +1,36 @@ +pkgname=mythmovietime-svn +pkgver=16153 +pkgrel=6 +pkgdesc="Emulation plugin for MythTV" +url="http://www.mythtv.org" +arch=('i686') +depends=('mythtv-svn' 'zlib') +conflicts=('mythtv-plugins-svn') +groups=('mythtv-all-plugins-svn') +license="GPL" +source=() +_svntrunk=http://cvs.mythtv.org/svn/trunk/mythplugins +_svnmod=mythplugins + + +build() { +	cd $startdir/src/ +	echo svn co $_svntrunk --config-dir ./ -r $pkgver $_svnmod + 	svn co $_svntrunk --config-dir ./ -r $pkgver $_svnmod +	cd $startdir/src/mythplugins +PLUGIN=mythmovietime +grep -q  programs-libs.pro  $PLUGIN/$PLUGIN/$PLUGIN.pro +if [ $? != 0 ] +then +		echo "include ( ../../programs-libs.pro )" >> $PLUGIN/$PLUGIN/$PLUGIN.pro +			msg "appending program lib" +		fi +	export QMAKESPEC='linux-g++' +	make distclean +   ./configure  --disable-all --enable-mythmovies  + +   make -j 2 || return 1 + +   make INSTALL_ROOT=$startdir/pkg install +} + diff --git a/abs/core-testing/mythtv/trunk/plugins/mythmusic/PKGBUILD b/abs/core-testing/mythtv/trunk/plugins/mythmusic/PKGBUILD new file mode 100644 index 0000000..28cbe82 --- /dev/null +++ b/abs/core-testing/mythtv/trunk/plugins/mythmusic/PKGBUILD @@ -0,0 +1,41 @@ + + +pkgname=mythmusic-svn +pkgver=16153 +pkgrel=9 +pkgdesc="Music playing plugin for MythTV" +url="http://www.mythtv.org" +arch=('i686' 'x86_64') +#depends=('mythtv-svn' 'libid3tag' 'libmad' 'libvorbis' 'flac>=1.1.4' 'libcdaudio' \ +#         'cdparanoia' 'fftw2' 'sdl' 'faad2' 'lame' ) + +  depends=('mythtv-svn ' 'libid3tag' 'flac>=1.1.4 ' 'a52dec' 'libcdaudio' 'libcddb' 'libdvdread' 'libid3tag' 'libmad' 'libogg'  'libtheora' 'libvorbis' 'taglib' 'libvisual' 'cdparanoia'   'sdl' 'faad2' 'lame' 'fftw2double') + +conflicts=('mythtv-plugins-svn') +groups=('mythtv-all-plugins-svn') +license="GPL" +source=() +_svntrunk=http://cvs.mythtv.org/svn/trunk/mythplugins +_svnmod=mythplugins + + +build() { +	cd $startdir/src/ +	make distclean +	echo svn co $_svntrunk --config-dir ./ -r $pkgver $_svnmod + 	svn co $_svntrunk --config-dir ./ -r $pkgver $_svnmod +	cd $startdir/src/mythplugins +PLUGIN=mythmusic +grep -q  programs-libs.pro  $PLUGIN/$PLUGIN/$PLUGIN.pro +if [ $? != 0 ] +then +		echo "include ( ../../programs-libs.pro )" >> $PLUGIN/$PLUGIN/$PLUGIN.pro +			msg "appending program lib" +		fi + +#   ./configure  --disable-all --enable-mythmusic   + +   make  || return 1 + +   make INSTALL_ROOT=$startdir/pkg install +} diff --git a/abs/core-testing/mythtv/trunk/plugins/mythmusic/music_flac.patch b/abs/core-testing/mythtv/trunk/plugins/mythmusic/music_flac.patch new file mode 100644 index 0000000..b152249 --- /dev/null +++ b/abs/core-testing/mythtv/trunk/plugins/mythmusic/music_flac.patch @@ -0,0 +1,293 @@ +--- flacdecoder.cpp.old	2007-03-11 18:14:37.000000000 -0400 ++++ flacdecoder.cpp	2007-03-11 18:15:34.000000000 -0400 +@@ -17,7 +17,7 @@ +  + #include <qtimer.h> +  +-static FLAC__SeekableStreamDecoderReadStatus flacread(const FLAC__SeekableStreamDecoder *decoder, FLAC__byte bufferp[], unsigned *bytes, void *client_data) ++static FLAC__StreamDecoderReadStatus flacread(const FLAC__StreamDecoder *decoder, FLAC__byte bufferp[], unsigned *bytes, void *client_data) + { +     decoder = decoder; +  +@@ -26,27 +26,27 @@ +  +     if (len == -1) +     { +-        return FLAC__SEEKABLE_STREAM_DECODER_READ_STATUS_ERROR; ++        return FLAC__STREAM_DECODER_READ_STATUS_END_OF_STREAM; +     } +     +     *bytes = len; +-    return FLAC__SEEKABLE_STREAM_DECODER_READ_STATUS_OK; ++    return FLAC__STREAM_DECODER_READ_STATUS_CONTINUE; + } +  +-static FLAC__SeekableStreamDecoderSeekStatus flacseek(const FLAC__SeekableStreamDecoder *decoder, FLAC__uint64 absolute_byte_offset, void *client_data)  ++static FLAC__StreamDecoderSeekStatus flacseek(const FLAC__StreamDecoder *decoder, FLAC__uint64 absolute_byte_offset, void *client_data)  + { +     decoder = decoder; +     FlacDecoder *dflac = (FlacDecoder *)client_data; +  +     if (!dflac->input()->isDirectAccess()) +-        return FLAC__SEEKABLE_STREAM_DECODER_SEEK_STATUS_ERROR; ++        return FLAC__STREAM_DECODER_SEEK_STATUS_ERROR; +  +     if (dflac->input()->at(absolute_byte_offset)) +-        return FLAC__SEEKABLE_STREAM_DECODER_SEEK_STATUS_OK; +-    return FLAC__SEEKABLE_STREAM_DECODER_SEEK_STATUS_ERROR; ++        return FLAC__STREAM_DECODER_SEEK_STATUS_OK; ++    return FLAC__STREAM_DECODER_SEEK_STATUS_ERROR; + } +  +-static FLAC__SeekableStreamDecoderTellStatus flactell(const FLAC__SeekableStreamDecoder *decoder, FLAC__uint64 *absolute_byte_offset, void *client_data) ++static FLAC__StreamDecoderTellStatus flactell(const FLAC__StreamDecoder *decoder, FLAC__uint64 *absolute_byte_offset, void *client_data) + { +     decoder = decoder; +     FlacDecoder *dflac = (FlacDecoder *)client_data; +@@ -54,20 +54,20 @@ +     long t = dflac->input()->at(); +     *absolute_byte_offset = t; +  +-    return FLAC__SEEKABLE_STREAM_DECODER_TELL_STATUS_OK; ++    return FLAC__STREAM_DECODER_TELL_STATUS_OK; + } +  +-static FLAC__SeekableStreamDecoderLengthStatus flaclength(const FLAC__SeekableStreamDecoder *decoder, FLAC__uint64 *stream_length, void *client_data) ++static FLAC__StreamDecoderLengthStatus flaclength(const FLAC__StreamDecoder *decoder, FLAC__uint64 *stream_length, void *client_data) + { +     decoder = decoder; +  +     FlacDecoder *dflac = (FlacDecoder *)client_data; +  +     *stream_length = dflac->input()->size(); +-    return FLAC__SEEKABLE_STREAM_DECODER_LENGTH_STATUS_OK; ++    return FLAC__STREAM_DECODER_LENGTH_STATUS_OK; + } +  +-static FLAC__bool flaceof(const FLAC__SeekableStreamDecoder *decoder, void *client_data) ++static FLAC__bool flaceof(const FLAC__StreamDecoder *decoder, void *client_data) + { +     decoder = decoder; +  +@@ -76,7 +76,7 @@ +     return dflac->input()->atEnd(); + } +  +-static FLAC__StreamDecoderWriteStatus flacwrite(const FLAC__SeekableStreamDecoder *decoder, const FLAC__Frame *frame, const FLAC__int32 * const buffer[], void *client_data) ++static FLAC__StreamDecoderWriteStatus flacwrite(const FLAC__StreamDecoder *decoder, const FLAC__Frame *frame, const FLAC__int32 * const buffer[], void *client_data) + { +     decoder = decoder; +  +@@ -132,7 +132,7 @@ +     } + } +  +-static void flacmetadata(const FLAC__SeekableStreamDecoder *decoder, const FLAC__StreamMetadata *metadata, void *client_data) ++static void flacmetadata(const FLAC__StreamDecoder *decoder, const FLAC__StreamMetadata *metadata, void *client_data) + { +     decoder = decoder; +  +@@ -156,11 +156,11 @@ +     } + } +  +-static void flacerror(const FLAC__SeekableStreamDecoder *decoder, FLAC__StreamDecoderErrorStatus status, void *client_data) ++static void flacerror(const FLAC__StreamDecoder *decoder, FLAC__StreamDecoderErrorStatus status, void *client_data) + { +     decoder = decoder; +  +-    FLAC__FileDecoder *file_decoder = (FLAC__FileDecoder *)client_data; ++    FLAC__StreamDecoder *file_decoder = (FLAC__StreamDecoder *)client_data; +  +     file_decoder = file_decoder; +     status = status; +@@ -262,17 +262,8 @@ +         } +     } +  +-    decoder = FLAC__seekable_stream_decoder_new(); +-    FLAC__seekable_stream_decoder_set_md5_checking(decoder, false); +-    FLAC__seekable_stream_decoder_set_read_callback(decoder, flacread); +-    FLAC__seekable_stream_decoder_set_seek_callback(decoder, flacseek); +-    FLAC__seekable_stream_decoder_set_tell_callback(decoder, flactell); +-    FLAC__seekable_stream_decoder_set_length_callback(decoder, flaclength); +-    FLAC__seekable_stream_decoder_set_eof_callback(decoder, flaceof); +-    FLAC__seekable_stream_decoder_set_write_callback(decoder, flacwrite); +-    FLAC__seekable_stream_decoder_set_metadata_callback(decoder, flacmetadata); +-    FLAC__seekable_stream_decoder_set_error_callback(decoder, flacerror); +-    FLAC__seekable_stream_decoder_set_client_data(decoder, this); ++    decoder = FLAC__stream_decoder_new(); ++    FLAC__stream_decoder_set_md5_checking(decoder, false); +  +     freq = 0; +     bitrate = 0; +@@ -281,8 +272,17 @@ +     totalTime = 0;  +     totalTime = totalTime < 0 ? 0 : totalTime; +  +-    FLAC__seekable_stream_decoder_init(decoder); +-    FLAC__seekable_stream_decoder_process_until_end_of_metadata(decoder); ++    FLAC__stream_decoder_init_stream(decoder, ++                                     flacread, ++                                     flacseek, ++                                     flactell, ++                                     flaclength, ++                                     flaceof, ++                                     flacwrite, ++                                     flacmetadata, ++                                     flacerror, ++                                     this); ++    FLAC__stream_decoder_process_until_end_of_metadata(decoder); +  +     inited = TRUE; +     return TRUE; +@@ -295,8 +295,8 @@ +  + void FlacDecoder::deinit() + { +-    FLAC__seekable_stream_decoder_finish(decoder); +-    FLAC__seekable_stream_decoder_delete(decoder); ++    FLAC__stream_decoder_finish(decoder); ++    FLAC__stream_decoder_delete(decoder); +  +     if (input()->isOpen()) +         input()->close(); +@@ -330,7 +330,7 @@ +     } +  +     bool flacok = true; +-    FLAC__SeekableStreamDecoderState decoderstate; ++    FLAC__StreamDecoderState decoderstate; +  +     while (! done && ! finish) { +         lock(); +@@ -340,12 +340,12 @@ +             FLAC__uint64 sample = (FLAC__uint64)(seekTime * 44100.0); +             if (sample > totalsamples - 50) +                 sample = totalsamples - 50; +-            FLAC__seekable_stream_decoder_seek_absolute(decoder, sample); ++            FLAC__stream_decoder_seek_absolute(decoder, sample); +             seekTime = -1.0; +         } +  +-        flacok = FLAC__seekable_stream_decoder_process_single(decoder); +-        decoderstate = FLAC__seekable_stream_decoder_get_state(decoder); ++        flacok = FLAC__stream_decoder_process_single(decoder); ++        decoderstate = FLAC__stream_decoder_get_state(decoder); +  +         if (decoderstate == 0 || decoderstate == 1) +         { +--- flacdecoder.h.old	2007-03-11 18:14:37.000000000 -0400 ++++ flacdecoder.h	2007-03-11 18:14:12.000000000 -0400 +@@ -35,7 +35,7 @@ +     char *output_buf; +     ulong output_bytes, output_at; +  +-    FLAC__SeekableStreamDecoder *decoder; ++    FLAC__StreamDecoder *decoder; +  +     unsigned int bks; +     bool done, finish; +--- flacencoder.cpp.old	2007-03-11 18:14:37.000000000 -0400 ++++ flacencoder.cpp	2007-03-11 18:14:12.000000000 -0400 +@@ -9,7 +9,7 @@ + #include "flacencoder.h" + #include "metaioflacvorbiscomment.h" +  +-#include <FLAC/file_encoder.h> ++#include <FLAC/stream_encoder.h> + #include <FLAC/assert.h> + #include <mythtv/mythcontext.h> +  +@@ -29,32 +29,32 @@ +     int rice_parameter_search_dist = 0; +     int max_lpc_order = 8; +  +-    encoder = FLAC__file_encoder_new(); ++    encoder = FLAC__stream_encoder_new(); +  +-    FLAC__file_encoder_set_streamable_subset(encoder, true); +-    FLAC__file_encoder_set_do_mid_side_stereo(encoder, do_mid_side); +-    FLAC__file_encoder_set_loose_mid_side_stereo(encoder, loose_mid_side); +-    FLAC__file_encoder_set_channels(encoder, NUM_CHANNELS); +-    FLAC__file_encoder_set_bits_per_sample(encoder, 16); +-    FLAC__file_encoder_set_sample_rate(encoder, 44100); +-    FLAC__file_encoder_set_blocksize(encoder, blocksize); +-    FLAC__file_encoder_set_max_lpc_order(encoder, max_lpc_order); +-    FLAC__file_encoder_set_qlp_coeff_precision(encoder, qlp_coeff_precision); +-    FLAC__file_encoder_set_do_qlp_coeff_prec_search(encoder, false); +-    FLAC__file_encoder_set_do_escape_coding(encoder, do_escape_coding); +-    FLAC__file_encoder_set_do_exhaustive_model_search(encoder,  ++    FLAC__stream_encoder_set_streamable_subset(encoder, true); ++    FLAC__stream_encoder_set_do_mid_side_stereo(encoder, do_mid_side); ++    FLAC__stream_encoder_set_loose_mid_side_stereo(encoder, loose_mid_side); ++    FLAC__stream_encoder_set_channels(encoder, NUM_CHANNELS); ++    FLAC__stream_encoder_set_bits_per_sample(encoder, 16); ++    FLAC__stream_encoder_set_sample_rate(encoder, 44100); ++    FLAC__stream_encoder_set_blocksize(encoder, blocksize); ++    FLAC__stream_encoder_set_max_lpc_order(encoder, max_lpc_order); ++    FLAC__stream_encoder_set_qlp_coeff_precision(encoder, qlp_coeff_precision); ++    FLAC__stream_encoder_set_do_qlp_coeff_prec_search(encoder, false); ++    FLAC__stream_encoder_set_do_escape_coding(encoder, do_escape_coding); ++    FLAC__stream_encoder_set_do_exhaustive_model_search(encoder,  +                                                     do_exhaustive_model_search); +-    FLAC__file_encoder_set_min_residual_partition_order(encoder,  ++    FLAC__stream_encoder_set_min_residual_partition_order(encoder,  +                                                   min_residual_partition_order); +-    FLAC__file_encoder_set_max_residual_partition_order(encoder,  ++    FLAC__stream_encoder_set_max_residual_partition_order(encoder,  +                                                   max_residual_partition_order); +-    FLAC__file_encoder_set_rice_parameter_search_dist(encoder,  ++    FLAC__stream_encoder_set_rice_parameter_search_dist(encoder,  +                                                     rice_parameter_search_dist); +  +-    FLAC__file_encoder_set_filename(encoder, outfile.local8Bit()); ++     +  +-    int ret = FLAC__file_encoder_init(encoder); +-    if (ret != FLAC__FILE_ENCODER_OK) ++    int ret = FLAC__stream_encoder_init_file(encoder, outfile.local8Bit(), NULL, NULL); ++    if (ret != FLAC__STREAM_ENCODER_OK) +     { +         VERBOSE(VB_GENERAL, QString("Error initializing FLAC encoder." +                                     " Got return code: %1").arg(ret)); +@@ -70,8 +70,8 @@ +  +     if (encoder) +     { +-        FLAC__file_encoder_finish(encoder); +-        FLAC__file_encoder_delete(encoder); ++        FLAC__stream_encoder_finish(encoder); ++        FLAC__stream_encoder_delete(encoder); +     } +  +     if (metadata) +@@ -102,7 +102,7 @@ +  +         if(sampleindex == MAX_SAMPLES || (length == 0 && sampleindex > 0) )  +         { +-            if (!FLAC__file_encoder_process(encoder, ++            if (!FLAC__stream_encoder_process(encoder, +                                             (const FLAC__int32 * const *) input, +                                             sampleindex)) +             { +--- flacencoder.h.old	2007-03-11 18:14:37.000000000 -0400 ++++ flacencoder.h	2007-03-11 18:14:12.000000000 -0400 +@@ -4,7 +4,7 @@ + #include <qstring.h> +  + #define HAVE_INTTYPES_H +-#include <FLAC/file_encoder.h> ++#include <FLAC/stream_encoder.h> +  + #include "encoder.h" +  +@@ -21,7 +21,7 @@ +     int addSamples(int16_t *bytes, unsigned int len); +  +   private: +-    FLAC__FileEncoder *encoder; ++    FLAC__StreamEncoder *encoder; +     unsigned int sampleindex; +     FLAC__int32 inputin[NUM_CHANNELS][MAX_SAMPLES]; +     FLAC__int32 *input[NUM_CHANNELS]; diff --git a/abs/core-testing/mythtv/trunk/plugins/mythnews/PKGBUILD b/abs/core-testing/mythtv/trunk/plugins/mythnews/PKGBUILD new file mode 100644 index 0000000..4dafc20 --- /dev/null +++ b/abs/core-testing/mythtv/trunk/plugins/mythnews/PKGBUILD @@ -0,0 +1,34 @@ +pkgname=mythnews-svn +pkgver=16153 +pkgrel=4 +pkgdesc="News checking plugin for MythTV" +url="http://www.mythtv.org" +arch=('i686') +depends=('mythtv-svn') +conflicts=('mythtv-plugins-svn') +groups=('mythtv-all-plugins-svn') +license="GPL" +source=() +_svntrunk=http://cvs.mythtv.org/svn/trunk/mythplugins +_svnmod=mythplugins + +build() { +	cd $startdir/src/ +	echo svn co $_svntrunk --config-dir ./ -r $pkgver $_svnmod + 	svn co $_svntrunk --config-dir ./ -r $pkgver $_svnmod +	cd $startdir/src/mythplugins +	PLUGIN=mythnews +	grep -q  programs-libs.pro  $PLUGIN/$PLUGIN/$PLUGIN.pro +	if [ $? != 0 ] +	then +			echo "include ( ../../programs-libs.pro )" >> $PLUGIN/$PLUGIN/$PLUGIN.pro +				msg "appending program lib" +			fi +	make distclean +   ./configure --disable-all --enable-mythnews + +   make -j 2 || return 1 + +   make INSTALL_ROOT=$startdir/pkg install +} +md5sums=('2a9fbf45ae58a3a35857ce8d7c4d12db') diff --git a/abs/core-testing/mythtv/trunk/plugins/mythphone/PKGBUILD b/abs/core-testing/mythtv/trunk/plugins/mythphone/PKGBUILD new file mode 100644 index 0000000..f6bf3ec --- /dev/null +++ b/abs/core-testing/mythtv/trunk/plugins/mythphone/PKGBUILD @@ -0,0 +1,42 @@ +pkgname=mythphone-svn +pkgver=16153 +pkgrel=3 +pkgdesc="Plugin that allows phone calls to be made to MythTv" +url="http://www.mythtv.org" +arch=('i686') +depends=('mythtv-svn') +conflicts=('mythtv-plugins-svn') +groups=('mythtv-all-plugins-svn') +license="GPL" +source=() +_svntrunk=http://cvs.mythtv.org/svn/trunk/mythplugins +_svnmod=mythplugins + + +build() { +	cd $startdir/src/ +	echo svn co $_svntrunk --config-dir ./ -r $pkgver $_svnmod + 	svn co $_svntrunk --config-dir ./ -r $pkgver $_svnmod +	cd $startdir/src/mythplugins +	make distclean +	PLUGIN=mythphone +	grep -q  programs-libs.pro  $PLUGIN/$PLUGIN/$PLUGIN.pro +	if [ $? != 0 ] +	then +		echo "include ( ../../programs-libs.pro )" >> $PLUGIN/$PLUGIN/$PLUGIN.pro +		msg  "appending program lib" +	fi +	 +	msg "Correcting configure    kde3 to kde" +   	sed -i 's#kde3#kde#' configure || return 1 +   	./configure  --enable-opengl --disable-all --enable-mythphone || return 1 +	qmake mythplugins.pro || return 1 +	make qmake || return 1 +	 +	msg "Correcting Makefile    kde3 to kde" + 	sed -i 's#kde3#kde#' ./mythphone/mythphone/Makefile || return 1 +   	 +	make -j 2 || return 1 +	make INSTALL_ROOT=$startdir/pkg install +} + diff --git a/abs/core-testing/mythtv/trunk/plugins/mythvideo/PKGBUILD b/abs/core-testing/mythtv/trunk/plugins/mythvideo/PKGBUILD new file mode 100644 index 0000000..4087034 --- /dev/null +++ b/abs/core-testing/mythtv/trunk/plugins/mythvideo/PKGBUILD @@ -0,0 +1,36 @@ +pkgname=mythvideo-svn +pkgver=16153 +pkgrel=2 +pkgdesc="Video playback and browsing plugin for MythTV" +url="http://www.mythtv.org" +arch=('i686') +depends=('mythtv-svn'  'perlxml' 'perl-libwww' 'perl-uri' 'perl-xml-simple' 'ffmpeg') +license="GPL" +conflicts=('mythtv-plugins-svn') +groups=('mythtv-all-plugins-svn') + +source=() +_svntrunk=http://cvs.mythtv.org/svn/trunk/mythplugins +_svnmod=mythplugins + + +build() { +	cd $startdir/src/ +	echo svn co $_svntrunk --config-dir ./ -r $pkgver $_svnmod + 	svn co $_svntrunk --config-dir ./ -r $pkgver $_svnmod +	cd $startdir/src/mythplugins +  	make distclean  +	PLUGIN=mythvideo +	grep -q  programs-libs.pro  $PLUGIN/$PLUGIN/$PLUGIN.pro +	if [ $? != 0 ] +	then +			echo "include ( ../../programs-libs.pro )" >> $PLUGIN/$PLUGIN/$PLUGIN.pro +				msg "appending program lib" +			fi +   ./configure  --disable-all --enable-mythvideo  --enable-transcode   + +   make -j 2 || return 1 + +   make INSTALL_ROOT=$startdir/pkg install +} +md5sums=('2a9fbf45ae58a3a35857ce8d7c4d12db') diff --git a/abs/core-testing/mythtv/trunk/plugins/mythweather/PKGBUILD b/abs/core-testing/mythtv/trunk/plugins/mythweather/PKGBUILD new file mode 100644 index 0000000..98542b9 --- /dev/null +++ b/abs/core-testing/mythtv/trunk/plugins/mythweather/PKGBUILD @@ -0,0 +1,35 @@ +pkgname=mythweather-svn +pkgver=16153 +pkgrel=6 +pkgdesc="Weather checking plugin for MythTV" +url="http://www.mythtv.org" +arch=('i686') +depends=('mythtv-svn' 'wget' 'perl-xml-sax' 'perl-soap-lite' 'perl-image-size'  'imagemagick') +conflicts=('mythtv-plugins-svn') +groups=('mythtv-all-plugins-svn') +license="GPL" +source=() +_svntrunk=http://cvs.mythtv.org/svn/trunk/mythplugins +_svnmod=mythplugins + + +build() { +	cd $startdir/src/ +	echo svn co $_svntrunk --config-dir ./ -r $pkgver $_svnmod + 	svn co $_svntrunk --config-dir ./ -r $pkgver $_svnmod +	cd $startdir/src/mythplugins +	make distclean +	PLUGIN=mythweather +	grep -q  programs-libs.pro  $PLUGIN/$PLUGIN/$PLUGIN.pro +	if [ $? != 0 ] +	then +			echo "include ( ../../programs-libs.pro )" >> $PLUGIN/$PLUGIN/$PLUGIN.pro +				msg "appending program lib" +			fi +   ./configure  --enable-opengl --disable-all --enable-mythweather +  +   make -j 2 || return 1 + +   make INSTALL_ROOT=$startdir/pkg install +} +md5sums=('2a9fbf45ae58a3a35857ce8d7c4d12db') diff --git a/abs/core-testing/mythtv/trunk/plugins/mythweb/PKGBUILD b/abs/core-testing/mythtv/trunk/plugins/mythweb/PKGBUILD new file mode 100755 index 0000000..52eb059 --- /dev/null +++ b/abs/core-testing/mythtv/trunk/plugins/mythweb/PKGBUILD @@ -0,0 +1,35 @@ +pkgname=mythweb-svn +pkgver=16153 +pkgrel=20 +pkgdesc="mythweb"  +url="http://www.mythtv.org"  +license="GPL"  +arch=('i686') +depends=(php fcgi libmysqlclient )  +conflicts=('mythweb' 'mythweb-fixes')  +replaces=()  +backup=()  +install='mythweb.install'  +source=(mythweblighttpd.patch dblogininit.inc )  +md5sums=()  +_svntrunk=http://cvs.mythtv.org/svn/trunk/mythplugins +_svnmod=mythplugins + +build() {  +echo svn co $_svntrunk --config-dir ./ -r $pkgver $_svnmod + svn co $_svntrunk --config-dir ./ -r $pkgver $_svnmod +#svn co http://cvs.mythtv.org/svn/trunk/mythtv +#svn co http://cvs.mythtv.org/svn/trunk/mythplugins +#svn co http://cvs.mythtv.org/svn/trunk/myththemes +cd $startdir/src/mythplugins + +#take care of fing mythweb +mkdir -p $startdir/pkg/data/srv/httpd/htdocs/ +cp -rp mythweb $startdir/pkg/data/srv/httpd/htdocs/ +cp -f $startdir/src/dblogininit.inc $startdir/pkg/data/srv/httpd/htdocs/mythweb/includes/ +cd  $startdir/pkg/data/srv/httpd/htdocs/mythweb/includes +patch -p0 < $startdir/src/mythweblighttpd.patch + +chown -R nobody:nobody $startdir/pkg/data/srv/httpd/htdocs/mythweb +chmod -R  775 $startdir/pkg/data/srv/httpd/htdocs/mythweb +} diff --git a/abs/core-testing/mythtv/trunk/plugins/mythweb/dblogininit.inc b/abs/core-testing/mythtv/trunk/plugins/mythweb/dblogininit.inc new file mode 100755 index 0000000..c5395c5 --- /dev/null +++ b/abs/core-testing/mythtv/trunk/plugins/mythweb/dblogininit.inc @@ -0,0 +1,6 @@ +<? + $_SERVER["db_server"] = "localhost"; + $_SERVER["db_name"] = "mythconverg"; + $_SERVER["db_login"] = "mythtv"; + $_SERVER["db_password"] = "mythtv"; +?> diff --git a/abs/core-testing/mythtv/trunk/plugins/mythweb/mythweb.install b/abs/core-testing/mythtv/trunk/plugins/mythweb/mythweb.install new file mode 100755 index 0000000..9162d98 --- /dev/null +++ b/abs/core-testing/mythtv/trunk/plugins/mythweb/mythweb.install @@ -0,0 +1,37 @@ + +# arg 1:  the new package version +pre_install () { +/bin/true +} + +post_install() { +	cp /etc/lighttpd/lighttpd.conf /tmp +	sed -e "s/# .*  \"mod_fastcgi\",/\"mod_fastcgi\"\,/g" /tmp/lighttpd.conf > /etc/lighttpd/lighttpd.conf +  + +} +pre_upgrade () { + pre_install +} + +# arg 1:  the new package version +# arg 2:  the old package version +post_upgrade() { +  post_install + +  /bin/true +} + +# arg 1:  the old package version +pre_remove() { +  /bin/true +} + +# arg 1:  the old package version +post_remove() { +/bint/true +} + +op=$1 +shift +$op $* diff --git a/abs/core-testing/mythtv/trunk/plugins/mythweb/mythweblighttpd.patch b/abs/core-testing/mythtv/trunk/plugins/mythweb/mythweblighttpd.patch new file mode 100755 index 0000000..6403a88 --- /dev/null +++ b/abs/core-testing/mythtv/trunk/plugins/mythweb/mythweblighttpd.patch @@ -0,0 +1,13 @@ +--- database.php.orig	2007-12-31 21:25:30.000000000 +0000 ++++ database.php	2007-12-31 21:25:50.000000000 +0000 +@@ -18,6 +18,10 @@ +         custom_error("Please install the MySQL libraries for PHP.\n" +                     .'The package is usually called something like php-mysql.'); +     } ++     if (empty($_SERVER['db_server']) || empty($_SERVER['db_name']) || empty($_SERVER['db_login'])) { ++	      require_once 'dblogininit.inc'; ++	      } ++	 +  + // No database connection info defined? +     if (empty($_SERVER['db_server']) || empty($_SERVER['db_name']) || empty($_SERVER['db_login'])) { diff --git a/abs/core-testing/mythtv/trunk/plugins/mythweb/xris/dblogininit.inc b/abs/core-testing/mythtv/trunk/plugins/mythweb/xris/dblogininit.inc new file mode 100755 index 0000000..c5395c5 --- /dev/null +++ b/abs/core-testing/mythtv/trunk/plugins/mythweb/xris/dblogininit.inc @@ -0,0 +1,6 @@ +<? + $_SERVER["db_server"] = "localhost"; + $_SERVER["db_name"] = "mythconverg"; + $_SERVER["db_login"] = "mythtv"; + $_SERVER["db_password"] = "mythtv"; +?> diff --git a/abs/core-testing/mythtv/trunk/plugins/mythweb/xris/lighttpd.conf b/abs/core-testing/mythtv/trunk/plugins/mythweb/xris/lighttpd.conf new file mode 100755 index 0000000..ff4e7dd --- /dev/null +++ b/abs/core-testing/mythtv/trunk/plugins/mythweb/xris/lighttpd.conf @@ -0,0 +1,332 @@ +# lighttpd configuration file + +############ Options you really have to take care of #################### + +## modules to load +# at least mod_access and mod_accesslog should be loaded +# all other module should only be loaded if really neccesary +# - saves some time +# - saves memory +server.modules              = ( +                                "mod_rewrite", +#                               "mod_redirect", +#                               "mod_alias", +                                "mod_access", +#                               "mod_cml", +#                               "mod_trigger_b4_dl", +#                               "mod_auth", +                                "mod_status", +                                "mod_setenv", +#fast_cgi needs to be enabled for mythweb, as all mythweb requests are passed to php-cgi. +				"mod_fastcgi", +#                               "mod_proxy", +#                               "mod_simple_vhost", +#                               "mod_evhost", +#                               "mod_userdir", +                                "mod_cgi", +#                               "mod_compress", +#                               "mod_ssi", +#                               "mod_usertrack", +#                               "mod_expire", +#                               "mod_secdownload", +#                               "mod_rrdtool", +                                "mod_accesslog" ) + +## a static document-root, for virtual-hosting take look at the +## server.virtual-* options +server.document-root        = "/data/srv/httpd/htdocs" + +## where to send error-messages to +server.errorlog             = "/var/log/lighttpd/error.log" + +# files to check for if .../ is requested +index-file.names            = ( "index.php", "index.html", +                                "index.htm", "default.htm","mythweb.php") + +# mimetype mapping +mimetype.assign             = ( +  ".pdf"          =>      "application/pdf", +  ".sig"          =>      "application/pgp-signature", +  ".spl"          =>      "application/futuresplash", +  ".class"        =>      "application/octet-stream", +  ".ps"           =>      "application/postscript", +  ".torrent"      =>      "application/x-bittorrent", +  ".dvi"          =>      "application/x-dvi", +  ".gz"           =>      "application/x-gzip", +  ".pac"          =>      "application/x-ns-proxy-autoconfig", +  ".swf"          =>      "application/x-shockwave-flash", +  ".tar.gz"       =>      "application/x-tgz", +  ".tgz"          =>      "application/x-tgz", +  ".tar"          =>      "application/x-tar", +  ".zip"          =>      "application/zip", +  ".mp3"          =>      "audio/mpeg", +  ".m3u"          =>      "audio/x-mpegurl", +  ".wma"          =>      "audio/x-ms-wma", +  ".wax"          =>      "audio/x-ms-wax", +  ".ogg"          =>      "application/ogg", +  ".wav"          =>      "audio/x-wav", +  ".gif"          =>      "image/gif", +  ".jpg"          =>      "image/jpeg", +  ".jpeg"         =>      "image/jpeg", +  ".png"          =>      "image/png", +  ".xbm"          =>      "image/x-xbitmap", +  ".xpm"          =>      "image/x-xpixmap", +  ".xwd"          =>      "image/x-xwindowdump", +  ".css"          =>      "text/css", +  ".html"         =>      "text/html", +  ".htm"          =>      "text/html", +  ".js"           =>      "text/javascript", +  ".asc"          =>      "text/plain", +  ".c"            =>      "text/plain", +  ".cpp"          =>      "text/plain", +  ".log"          =>      "text/plain", +  ".conf"         =>      "text/plain", +  ".text"         =>      "text/plain", +  ".txt"          =>      "text/plain", +  ".dtd"          =>      "text/xml", +  ".xml"          =>      "text/xml", +  ".mpeg"         =>      "video/mpeg", +  ".mpg"          =>      "video/mpeg", +  ".mov"          =>      "video/quicktime", +  ".qt"           =>      "video/quicktime", +  ".avi"          =>      "video/x-msvideo", +  ".asf"          =>      "video/x-ms-asf", +  ".asx"          =>      "video/x-ms-asf", +  ".wmv"          =>      "video/x-ms-wmv", +  ".bz2"          =>      "application/x-bzip", +  ".tbz"          =>      "application/x-bzip-compressed-tar", +  ".tar.bz2"      =>      "application/x-bzip-compressed-tar", +  ".nuv"	  =>	  "video/nuppelvideo" + ) + + +# Use the "Content-Type" extended attribute to obtain mime type if possible +mimetype.use-xattr        = "enable" + + +## send a different Server: header +## be nice and keep it at lighttpd +#server.tag                 = "lighttpd" + +#### accesslog module +accesslog.filename          = "/var/log/lighttpd/access.log" + +## deny access the file-extensions +# +# ~    is for backupfiles from vi, emacs, joe, ... +# .inc is often used for code includes which should in general not be part +#      of the document-root +url.access-deny             = ( "~", ".inc" ) + +$HTTP["url"] =~ "\.pdf$" { +  server.range-requests = "disable" +} + +######### Options that are good to be but not neccesary to be changed ####### + +## bind to port (default: 80) +#server.port                = 80 + +## bind to localhost (default: all interfaces) +#server.bind                = "grisu.home.kneschke.de" + +## error-handler for status 404 +#server.error-handler-404   = "/error-handler.html" +#server.error-handler-404   = "/error-handler.php" + +## to help the rc.scripts +server.pid-file            = "/var/run/lighttpd.pid" + + +###### virtual hosts +## +##  If you want name-based virtual hosting add the next three settings and load +##  mod_simple_vhost +## +## document-root = +##   virtual-server-root + virtual-server-default-host + virtual-server-docroot +## or +##   virtual-server-root + http-host + virtual-server-docroot +## +#simple-vhost.server-root   = "/home/lighttpd/vhosts/" +#simple-vhost.default-host  = "lighttpd.localhost" +#simple-vhost.document-root = "/pages/" +## +## Format: <errorfile-prefix><status-code>.html +## -> ..../status-404.html for 'File not found' +#server.errorfile-prefix    = "/home/weigon/projects/lighttpd/doc/status-" + +## virtual directory listings +#server.dir-listing         = "enable" + +## enable debugging +#debug.log-request-header   = "enable" +#debug.log-response-header  = "enable" +#debug.log-request-handling = "enable" +#debug.log-file-not-found   = "enable" + +### only root can use these options +# +# chroot() to directory (default: no chroot() ) +#server.chroot              = "/" + +## change uid to <uid> (default: don't care) +server.username             = "nobody" + +## change uid to <uid> (default: don't care) +server.groupname            = "nobody" + +#### compress module +#compress.cache-dir         = "/home/lighttpd/cache/" +#compress.filetype          = ("text/plain", "text/html") + +#### proxy module +## read proxy.txt for more info +#proxy.server               = ( ".php" => +#                               ( "localhost" => +#                                 ( +#                                   "host" => "192.168.0.101", +#                                   "port" => 80 +#                                 ) +#                               ) +#                             ) + + + + +## fastcgi module +## read fastcgi.txt for more info +## adjust the value of bin-path for your system.   +## If you intend to process alot of requests at the same time, increase +##  the value of min-procs and max-procs + +fastcgi.server = ( ".php" => + ( "localhost" => +   ( +     "socket" => "/tmp/php-fastcgi.socket", +     "bin-path" => "/usr/bin/php-cgi", +     "min-procs" => 0, +     "max-procs" => 1, +     "max-load-per-proc" => 1, +     "idle-timeout" => 10, +     # Fix PATH_INFO for PHP scripts that rely on it (like Wordpress and mythweb). +      "broken-scriptfilename" => "enable" +    ) + ) +) + + +#the rewrite rule for mythweb. +#This assumes that mythweb is installed at document.root/mythweb + + url.rewrite = ( +   "^/mythweb(/tv.*|/music.*|/video.*|/weather.*|/settings.*|/status.*|/backend_log.*)$" =>   "mythweb/mythweb.php/$1" + ) + + +#### CGI module +cgi.assign                 = ( ".pl"  => "/usr/bin/perl") + + + +#### SSL engine +#$SERVER["socket"] == "0.0.0.0:443" { +#  ssl.engine                  = "enable" +#  ssl.pemfile                 = "/home/lighttpd/ssl/server.pem" +#  server.errorlog             = "/var/log/lighttpd/error-ssl.log" +#  accesslog.filename          = "/var/log/lighttpd/access-ssl.log" +#  server.document-root        = "/home/lighttpd/html-ssl" +#} + + + +#### status module +status.status-url          = "/server-status" +status.config-url          = "/server-config" + +#### auth module +## read authentication.txt for more info +#auth.backend               = "plain" +#auth.backend.plain.userfile = "lighttpd.user" +#auth.backend.plain.groupfile = "lighttpd.group" + +#auth.backend.ldap.hostname = "localhost" +#auth.backend.ldap.base-dn  = "dc=my-domain,dc=com" +#auth.backend.ldap.filter   = "(uid=$)" +#auth.require               = ( "/server-status" => +#                               ( +#                                 "method"  => "digest", +#                                 "realm"   => "download archiv", +#                                 "require" => "user=jan" +#                               ), +#                               "/server-info" => +#                               ( +#                                 "method"  => "digest", +#                                 "realm"   => "download archiv", +#                                 "require" => "valid-user" +#                               ) +#                             ) + +#### url handling modules (rewrite, redirect, access) +#url.rewrite                = ( "^/$"             => "/server-status" ) +#url.redirect               = ( "^/wishlist/(.+)" => "http://www.123.org/$1" ) + +# +# define a pattern for the host url finding +# %% => % sign +# %0 => domain name + tld +# %1 => tld +# %2 => domain name without tld +# %3 => subdomain 1 name +# %4 => subdomain 2 name +# +#evhost.path-pattern        = "/home/storage/dev/www/%3/htdocs/" + +#### expire module +#expire.url                 = ( "/buggy/" => "access 2 hours", "/asdhas/" => "access plus 1 seconds 2 minutes") + +#### ssi +#ssi.extension              = ( ".shtml" ) + +#### rrdtool +#rrdtool.binary             = "/usr/bin/rrdtool" +#rrdtool.db-name            = "/var/www/lighttpd.rrd" + +#### setenv +#setenv.add-request-header  = ( "TRAV_ENV" => "mysql://user@host/db" ) +#setenv.add-response-header = ( "X-Secret-Message" => "42" ) +## for mod_trigger_b4_dl +# trigger-before-download.gdbm-filename = "/home/weigon/testbase/trigger.db" +# trigger-before-download.memcache-hosts = ( "127.0.0.1:11211" ) +# trigger-before-download.trigger-url = "^/trigger/" +# trigger-before-download.download-url = "^/download/" +# trigger-before-download.deny-url = "http://127.0.0.1/index.html" +# trigger-before-download.trigger-timeout = 10 + +## for mod_cml +## don't forget to add index.cml to server.indexfiles +# cml.extension               = ".cml" +# cml.memcache-hosts          = ( "127.0.0.1:11211" ) + +#### variable usage: +## variable name without "." is auto prefixed by "var." and becomes "var.bar" +#bar = 1 +#var.mystring = "foo" + +## integer add +#bar += 1 +## string concat, with integer cast as string, result: "www.foo1.com" +#server.name = "www." + mystring + var.bar + ".com" +## array merge +#index-file.names = (foo + ".php") + index-file.names +#index-file.names += (foo + ".php") + +#### include +#include /etc/lighttpd/lighttpd-inc.conf +## same as above if you run: "lighttpd -f /etc/lighttpd/lighttpd.conf" +#include "lighttpd-inc.conf" + +#### include_shell +#include_shell "echo var.a=1" +## the above is same as: +#var.a=1 diff --git a/abs/core-testing/mythtv/trunk/plugins/mythweb/xris/mythweblighttpd.patch b/abs/core-testing/mythtv/trunk/plugins/mythweb/xris/mythweblighttpd.patch new file mode 100755 index 0000000..bebc93e --- /dev/null +++ b/abs/core-testing/mythtv/trunk/plugins/mythweb/xris/mythweblighttpd.patch @@ -0,0 +1,16 @@ +--- init.php.orig	2006-11-23 21:37:13.000000000 +0000 ++++ init.php	2006-11-23 21:40:04.000000000 +0000 +@@ -75,7 +75,12 @@ +         custom_error("Please install the MySQL libraries for PHP.\n" +                     .'The package is usually called something like php-mysql.'); +     } +- ++     ++     ++// No database connection info defined? ++    if (empty($_SERVER['db_server']) || empty($_SERVER['db_name']) || empty($_SERVER['db_login'])) { ++    require_once 'dblogininit.inc'; ++    } + // No database connection info defined? +     if (empty($_SERVER['db_server']) || empty($_SERVER['db_name']) || empty($_SERVER['db_login'])) { +         tailored_error('db_vars_error'); diff --git a/abs/core-testing/nvidia-beta/NVIDIA_kernel-169.12-2286310.diff b/abs/core-testing/nvidia-beta/NVIDIA_kernel-169.12-2286310.diff new file mode 100644 index 0000000..e511cfb --- /dev/null +++ b/abs/core-testing/nvidia-beta/NVIDIA_kernel-169.12-2286310.diff @@ -0,0 +1,637 @@ +diff -ru usr/src/nv/Makefile.kbuild usr/src/nv.2286310/Makefile.kbuild +--- usr/src/nv/Makefile.kbuild	2008-03-16 14:13:10.000000000 -0700 ++++ usr/src/nv.2286310/Makefile.kbuild	2008-03-16 14:37:47.204131496 -0700 +@@ -177,6 +177,7 @@ + 	vmap \ + 	signal_struct \ + 	agp_backend_acquire \ ++	set_pages_uc \ + 	change_page_attr \ + 	pci_get_class \ + 	sysctl_max_map_count \ +diff -ru usr/src/nv/conftest.sh usr/src/nv.2286310/conftest.sh +--- usr/src/nv/conftest.sh	2008-03-16 14:13:10.000000000 -0700 ++++ usr/src/nv.2286310/conftest.sh	2008-03-16 14:37:47.204131496 -0700 +@@ -100,6 +100,32 @@ +             fi +         ;; +  ++        set_pages_uc) ++            # ++            # Determine if the set_pages_uc() function is present. ++            # ++            echo "#include <linux/autoconf.h> ++            #include <asm/cacheflush.h> ++            void conftest_set_pages_uc(void) { ++                set_pages_uc(); ++            }" > conftest$$.c ++ ++            $CC $CFLAGS -c conftest$$.c > /dev/null 2>&1 ++            rm -f conftest$$.c ++ ++            if [ -f conftest$$.o ]; then ++                rm -f conftest$$.o ++                echo "#undef NV_SET_PAGES_UC_PRESENT" >> conftest.h ++                return ++            else ++                echo "#ifdef NV_CHANGE_PAGE_ATTR_PRESENT" >> conftest.h ++                echo "#undef NV_CHANGE_PAGE_ATTR_PRESENT" >> conftest.h ++                echo "#endif"                             >> conftest.h ++                echo "#define NV_SET_PAGES_UC_PRESENT"    >> conftest.h ++                return ++            fi ++        ;; ++ +         change_page_attr) +             # +             # Determine if the change_page_attr() function is +@@ -124,7 +150,9 @@ +                 rm -f conftest$$.o +                 return +             else ++                echo "#ifndef NV_SET_PAGES_UC_PRESENT"     >> conftest.h +                 echo "#define NV_CHANGE_PAGE_ATTR_PRESENT" >> conftest.h ++                echo "#endif"                              >> conftest.h +                 return +             fi +         ;; +@@ -524,6 +552,8 @@ +                 return +             fi +  ++            rm -f conftest$$.o ++ +             echo "#include <linux/autoconf.h> +             #include <linux/interrupt.h> +             irq_handler_t conftest_isr; +diff -ru usr/src/nv/nv-linux.h usr/src/nv.2286310/nv-linux.h +--- usr/src/nv/nv-linux.h	2008-03-16 14:13:10.000000000 -0700 ++++ usr/src/nv.2286310/nv-linux.h	2008-03-16 14:37:47.204131496 -0700 +@@ -871,9 +871,10 @@ +  + #define NV_PGD_OFFSET(address, kernel, mm)              \ +    ({                                                   \ ++        struct mm_struct *__mm = (mm);                  \ +         pgd_t *__pgd;                                   \ +         if (!kernel)                                    \ +-            __pgd = pgd_offset(mm, address);            \ ++            __pgd = pgd_offset(__mm, address);          \ +         else                                            \ +             __pgd = pgd_offset_k(address);              \ +         __pgd;                                          \ +@@ -1208,21 +1209,24 @@ +             nv_check_pci_config_space(nv, cb);                      \ +     } +  ++extern int nv_update_memory_types; ++ + /* +- * a BUG() is triggered on early 2.6 x86_64 kernels. the underlying +- * problem actually exists on many architectures and kernels, but +- * these are the only kernels that check the condition and trigger +- * a BUG(). note that this is a problem of the core kernel, not an +- * nvidia bug (and can still be triggered by agpgart). let's avoid +- * change_page_attr on those kernels. ++ * Using change_page_attr() on early Linux/x86-64 2.6 kernels may ++ * result in a BUG() being triggered. The underlying problem ++ * actually exists on multiple architectures and kernels, but only ++ * the above check for the condition and trigger a BUG(). ++ * ++ * Note that this is a due to a bug in the Linux kernel, not an ++ * NVIDIA driver bug (it can also be triggered by AGPGART). ++ * ++ * We therefore need to determine at runtime if change_page_attr() ++ * can be used safely on these kernels. +  */ +-#if defined(NV_CHANGE_PAGE_ATTR_PRESENT) +-extern int nv_use_cpa; +- +-#if defined(NVCPU_X86_64) && !defined(KERNEL_2_4) && \ +-         (LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 11)) +-#define NV_CHANGE_PAGE_ATTR_BUG_PRESENT 1 +-#endif ++#if defined(NV_CHANGE_PAGE_ATTR_PRESENT) && defined(NVCPU_X86_64) && \ ++  !defined(KERNEL_2_4) && \ ++  (LINUX_VERSION_CODE < KERNEL_VERSION(2, 6, 11)) ++#define NV_CHANGE_PAGE_ATTR_BUG_PRESENT + #endif +  + #if defined(NVCPU_X86) || defined(NVCPU_X86_64) +@@ -1234,7 +1238,7 @@ +  * +  * We need to be careful to mask out _PAGE_NX when the host system +  * doesn't support this feature or when it's disabled: the kernel +- * may not do this in its implementation of the  change_page_attr() ++ * may not do this in its implementation of the change_page_attr() +  * interface. +  */ + #ifndef X86_FEATURE_NX +diff -ru usr/src/nv/nv-reg.h usr/src/nv.2286310/nv-reg.h +--- usr/src/nv/nv-reg.h	2008-03-16 14:13:10.000000000 -0700 ++++ usr/src/nv.2286310/nv-reg.h	2008-03-16 14:37:47.204131496 -0700 +@@ -391,34 +391,36 @@ + #define NV_REG_REMAP_LIMIT NV_REG_STRING(__NV_REMAP_LIMIT) +  + /* +- * Option: UseCPA ++ * Option: UpdateMemoryTypes +  * +  * Description: +  * +- * Many kernels have a broken implementation of change_page_attr that leads +- * to cache aliasing problems. x86_64 kernels between 2.6.0 and 2.6.10 will +- * force a kernel BUG_ON() when this condition is encountered. For this +- * reason, the NVIDIA driver is very careful about not using the CPA kernel +- * interface on these kernels. +- * +- * Some distributions have backported this fix to kernel versions that fall +- * within this version range. The NVIDIA driver attempts to automatically +- * detect these fixes and reenable usage of the change_page_attr interface. +- * +- * Due to the serious nature of the problems that can arise from this, the +- * NVIDIA driver implements a manual registry key to force usage of this API +- * to be enabled or disabled. This registry key can be used to force usage +- * of the API on a known fixed kernel if the NVIDIA driver fails to detect +- * the kernel as fixed. This registry key can also be used to disable usage +- * of the API on a bad kernel that is misdetected as a fixed kernel. +- * +- * The default value is '-1' (use NVIDIA driver default logic) +- * A value of '0' will forcibly disable change_page_attr calls. +- * A value of '1' will forcibly enable change_page_attr calls. ++ * Many kernels have broken implementations of the change_page_attr() ++ * kernel interface that may cause cache aliasing problems. Linux/x86-64 ++ * kernels between 2.6.0 and 2.6.10 may prompt kernel BUG()s due to ++ * improper accounting in the interface's large page management code, for ++ * example. For this reason, the NVIDIA Linux driver is very careful about ++ * not using the change_page_attr() kernel interface on these kernels. ++ * ++ * Due to the serious nature of the problems that can arise from bugs in ++ * the change_page_attr(), set_pages_{uc,wb}() and other kernel interfaces ++ * used to modify memory types, the NVIDIA driver implements a manual ++ * registry key override to allow forcibly enabling or disabling use of ++ * these APIs. ++ * ++ * Possible values: ++ * ++ * ~0 = use the NVIDIA driver's default logic (default) ++ *  0 = enable use of change_page_attr(), etc. ++ *  1 = disable use of change_page_attr(), etc. ++ * ++ * By default, the NVIDIA driver will attempt to auto-detect if it can ++ * safely use the change_page_attr() and other kernel interfaces to modify ++ * the memory types of kernel mappings. +  */ +  +-#define __NV_USE_CPA UseCPA +-#define NV_REG_USE_CPA NV_REG_STRING(__NV_USE_CPA) ++#define __NV_UPDATE_MEMORY_TYPES UpdateMemoryTypes ++#define NV_REG_UPDATE_MEMORY_TYPES NV_REG_STRING(__NV_UPDATE_MEMORY_TYPES) +  + /* +  * Option: RegistryDwords +@@ -490,7 +492,7 @@ + NV_DEFINE_REG_ENTRY(__NV_DEVICE_FILE_GID, 0); + NV_DEFINE_REG_ENTRY(__NV_DEVICE_FILE_MODE, 0666); + NV_DEFINE_REG_ENTRY(__NV_REMAP_LIMIT, 0); +-NV_DEFINE_REG_ENTRY(__NV_USE_CPA, -1); ++NV_DEFINE_REG_ENTRY(__NV_UPDATE_MEMORY_TYPES, ~0); + NV_DEFINE_REG_ENTRY(__NV_USE_VBIOS, 1); + NV_DEFINE_REG_ENTRY(__NV_RM_EDGE_INTR_CHECK, 1); +  +@@ -535,7 +537,7 @@ +     NV_DEFINE_PARAMS_TABLE_ENTRY(__NV_DEVICE_FILE_GID), +     NV_DEFINE_PARAMS_TABLE_ENTRY(__NV_DEVICE_FILE_MODE), +     NV_DEFINE_PARAMS_TABLE_ENTRY(__NV_REMAP_LIMIT), +-    NV_DEFINE_PARAMS_TABLE_ENTRY(__NV_USE_CPA), ++    NV_DEFINE_PARAMS_TABLE_ENTRY(__NV_UPDATE_MEMORY_TYPES), +     NV_DEFINE_PARAMS_TABLE_ENTRY(__NV_USE_VBIOS), +     NV_DEFINE_PARAMS_TABLE_ENTRY(__NV_RM_EDGE_INTR_CHECK), +     {NULL, NULL, NULL} +diff -ru usr/src/nv/nv-vm.c usr/src/nv.2286310/nv-vm.c +--- usr/src/nv/nv-vm.c	2008-03-16 14:13:09.000000000 -0700 ++++ usr/src/nv.2286310/nv-vm.c	2008-03-16 14:37:47.204131496 -0700 +@@ -43,42 +43,40 @@ + } + #endif +  +-/* +- * AMD Athlon processors expose a subtle bug in the Linux +- * kernel, that may lead to AGP memory corruption. Recent +- * kernel versions had a workaround for this problem, but +- * 2.4.20 is the first kernel to address it properly. The +- * page_attr API provides the means to solve the problem.  +- */ +- + static inline void nv_set_page_attrib_uncached(nv_pte_t *page_ptr) + { +-#if defined(NV_CHANGE_PAGE_ATTR_PRESENT) +-    if (nv_use_cpa) ++    if (nv_update_memory_types) +     { +-        struct page *page = virt_to_page(__va(page_ptr->phys_addr)); ++#if defined(NV_SET_PAGES_UC_PRESENT) ++        struct page *page = NV_GET_PAGE_STRUCT(page_ptr->phys_addr); ++        set_pages_uc(page, 1); ++#elif defined(NV_CHANGE_PAGE_ATTR_PRESENT) ++        struct page *page = NV_GET_PAGE_STRUCT(page_ptr->phys_addr); +         pgprot_t prot = PAGE_KERNEL_NOCACHE; + #if defined(NVCPU_X86) || defined(NVCPU_X86_64) +         pgprot_val(prot) &= __nv_supported_pte_mask; + #endif +         change_page_attr(page, 1, prot); +-    } + #endif ++    } + } +  + static inline void nv_set_page_attrib_cached(nv_pte_t *page_ptr) + { +-#if defined(NV_CHANGE_PAGE_ATTR_PRESENT) +-    if (nv_use_cpa) ++    if (nv_update_memory_types) +     { +-        struct page *page = virt_to_page(__va(page_ptr->phys_addr)); ++#if defined(NV_SET_PAGES_UC_PRESENT) ++        struct page *page = NV_GET_PAGE_STRUCT(page_ptr->phys_addr); ++        set_pages_wb(page, 1); ++#elif defined(NV_CHANGE_PAGE_ATTR_PRESENT) ++        struct page *page = NV_GET_PAGE_STRUCT(page_ptr->phys_addr); +         pgprot_t prot = PAGE_KERNEL; + #if defined(NVCPU_X86) || defined(NVCPU_X86_64) +         pgprot_val(prot) &= __nv_supported_pte_mask; + #endif +         change_page_attr(page, 1, prot); ++#endif +     } +-#endif /* NV_CHANGE_PAGE_ATTR_PRESENT */ + } +  + static inline void nv_lock_page(nv_pte_t *page_ptr) +@@ -360,7 +358,8 @@ + #if defined(NV_CPA_NEEDS_FLUSHING) +     nv_execute_on_all_cpus(cache_flush, NULL); + #endif +-#if defined (NVCPU_X86) || defined (NVCPU_X86_64) ++#if (defined(NVCPU_X86) || defined(NVCPU_X86_64)) && \ ++  defined(NV_CHANGE_PAGE_ATTR_PRESENT) +     global_flush_tlb(); + #endif +     nv_ext_flush_caches(); // handle other platform flushes if present +@@ -662,7 +661,7 @@ +  +         address = (unsigned long)virt_addr + i * PAGE_SIZE;  +  +-        pgd = NV_PGD_OFFSET(address, 1, &init_mm); ++        pgd = NV_PGD_OFFSET(address, 1, NULL); +         if (!NV_PGD_PRESENT(pgd)) +             goto failed; +  +diff -ru usr/src/nv/nv.c usr/src/nv.2286310/nv.c +--- usr/src/nv/nv.c	2008-03-16 14:13:09.000000000 -0700 ++++ usr/src/nv.2286310/nv.c	2008-03-16 14:37:47.208131723 -0700 +@@ -15,6 +15,7 @@ + #include "nv_compiler.h" + #include "os-agp.h" + #include "nv-vm.h" ++#include "nv-reg.h" +  + #ifdef MODULE_ALIAS_CHARDEV_MAJOR + MODULE_ALIAS_CHARDEV_MAJOR(NV_MAJOR_DEVICE_NUMBER); +@@ -116,10 +117,7 @@ + unsigned int nv_remap_limit; + #endif +  +-#if defined(NV_CHANGE_PAGE_ATTR_PRESENT) +-int nv_use_cpa = 1; +-#endif +- ++int nv_update_memory_types = 1; + static int nv_mmconfig_failure_detected = 0; +  + static void *nv_pte_t_cache = NULL; +@@ -1030,30 +1028,26 @@ + #endif /* defined(NV_BUILD_NV_PAT_SUPPORT) */ + } +  +- + #if defined(NV_CHANGE_PAGE_ATTR_BUG_PRESENT) +- +-/* nv_verify_cpa_interface - determine if the change_page_attr bug is fixed +- * in this kernel. ++/* ++ * nv_verify_cpa_interface() - determine if the change_page_attr() large page ++ * management accounting bug known to exist in early Linux/x86-64 kernels ++ * is present in this kernel. +  * +- * there's really not a good way to determine if change_page_attr is fixed. +- * we can't really use cpa on 2.6 x86_64 kernels < 2.6.11, as if we run into +- * the accounting bug, the kernel will throw a BUG. this isn't 100% accurate, +- * as it doesn't throw a bug until we try to restore the caching attributes +- * of the page. so if we can track down a 4M allocation, we can mark it +- * uncached and see if the accounting was done correctly. +- *  +- * this is a little ugly, but the most accurate approach to determining if +- * this kernel is good. ++ * There's really no good way to determine if change_page_attr() is working ++ * correctly. We can't reliably use change_page_attr() on Linux/x86-64 2.6 ++ * kernels < 2.6.11: if we run into the accounting bug, the Linux kernel will ++ * trigger a BUG() if we attempt to restore the WB memory type of a page ++ * originally part of a large page. +  * +- * why do we even bother? some distributions have back-ported the cpa fix to +- * kernels < 2.6.11. we want to use change_page_attr to avoid random corruption +- * and hangs, but need to make sure it's safe to do so. ++ * So if we can successfully allocate such a page, change its memory type to ++ * UC and check if the accounting was done correctly, we can determine if ++ * the change_page_attr() interface can be used safely. +  * +- * return values: +- *    0 - test passed, interface works +- *    1 - test failed, status unclear +- *   -1 - test failed, interface broken ++ * Return values: ++ *    0 - test passed, the change_page_attr() interface works ++ *    1 - test failed, the status is unclear ++ *   -1 - test failed, the change_page_attr() interface is broken +  */ +  + static inline pte_t *check_large_page(unsigned long vaddr) +@@ -1061,7 +1055,7 @@ +     pgd_t *pgd = NULL; +     pmd_t *pmd = NULL; +  +-    pgd = NV_PGD_OFFSET(vaddr, 1, &init_mm); ++    pgd = NV_PGD_OFFSET(vaddr, 1, NULL); +     if (!NV_PGD_PRESENT(pgd)) +         return NULL; +  +@@ -1171,20 +1165,29 @@ +  +     return 1; + } +- + #endif /* defined(NV_CHANGE_PAGE_ATTR_BUG_PRESENT) */ +  +- +-// verify that the kernel's mapping matches the requested type  +-// this is to protect against accidental cache aliasing problems ++/* ++ * nv_verify_page_mappings() - verify that the kernel mapping of the specified ++ * page matches the specified type. This is to help detect bugs in the Linux ++ * kernel's change_page_attr() interface, early. ++ * ++ * This function relies on the ability to perform kernel virtul address to PFN ++ * translations and therefore on 'init_mm'. Unfortunately, the latter is no ++ * longer exported in recent Linux/x86 2.6 kernels. The export was removed at ++ * roughtly the same time as the set_pages_{uc,wb}() change_page_attr() ++ * replacement interfaces were introduced; hopefully, it will be sufficient to ++ * check for their presence. ++ */ + int nv_verify_page_mappings( +     nv_pte_t *page_ptr, +     unsigned int cachetype + ) + { ++#if defined(NV_CHANGE_PAGE_ATTR_PRESENT) || \ ++    (defined(NV_SET_PAGES_UC_PRESENT) && !defined(NVCPU_X86)) +     unsigned long retval = -1; + #if defined(NVCPU_X86) || defined(NVCPU_X86_64) +-    struct mm_struct *mm; +     pgd_t *pgd = NULL; +     pmd_t *pmd = NULL; +     pte_t *pte = NULL; +@@ -1192,15 +1195,12 @@ +     unsigned long address; +     static int count = 0; +  +-#if defined(NV_CHANGE_PAGE_ATTR_PRESENT) +-    if (!nv_use_cpa) ++    if (!nv_update_memory_types) +         return 0; +-#endif +  +     address = (unsigned long)__va(page_ptr->phys_addr); +-    mm = &init_mm; // always a kernel page +  +-    pgd = NV_PGD_OFFSET(address, 1, mm); ++    pgd = NV_PGD_OFFSET(address, 1, NULL); +     if (!NV_PGD_PRESENT(pgd)) +     { +         nv_printf(NV_DBG_ERRORS, "NVRM: pgd not present for addr 0x%lx\n", address); +@@ -1266,8 +1266,11 @@ +     } +  + failed: +-#endif ++#endif /* defined(NVCPU_X86) || defined(NVCPU_X86_64) */ +     return retval; ++#else ++    return 0; ++#endif + } +  + #if defined(NV_BUILD_NV_PAT_SUPPORT) && defined(CONFIG_HOTPLUG_CPU) +@@ -1313,7 +1316,7 @@ + static int __init nvidia_init_module(void) + { +     int rc; +-    U032 i, count; ++    U032 i, count, data; +     nv_state_t *nv = NV_STATE_PTR(&nv_ctl_device); +     nv_stack_t *sp = NULL; +  +@@ -1485,43 +1488,42 @@ +     /* create /proc/driver/nvidia */ +     nvos_proc_create(); +  +-#if defined(NV_CHANGE_PAGE_ATTR_PRESENT) ++    /* ++     * Give users an opportunity to disable the driver's use of ++     * the change_page_attr() and set_pages_{uc,wb}() kernel ++     * interfaces. ++     */ ++    rc = rm_read_registry_dword(sp, nv, ++            "NVreg", NV_REG_UPDATE_MEMORY_TYPES, &data); ++    if ((rc == 0) && ((int)data != ~0)) +     { +-        int data; +- +-        // allow the user to override us with a registry key +-        rc = rm_read_registry_dword(sp, nv, "NVreg", "UseCPA", &data); +-        if ((rc == 0) && (data != -1)) +-        { +-            nv_use_cpa = data; +-        } ++        nv_update_memory_types = data; ++    } + #if defined(NV_CHANGE_PAGE_ATTR_BUG_PRESENT) +-        else ++    /* ++     * Unless we explicitely detect that the change_page_attr() ++     * inteface is fixed, disable usage of the interface on ++     * this kernel. Notify the user of this problem using the ++     * driver's /proc warnings interface (read by the installer ++     * and the bug report script). ++     */ ++    else ++    { ++        rc = nv_verify_cpa_interface(); ++        if (rc < 0) +         { +-            /* +-             * Unless we explicitely detect that the change_page_attr() +-             * inteface is fixed, disable usage of the interface on +-             * this kernel. Notify the user of this problem using the +-             * driver's /proc warnings interface (read by the installer +-             * and the bug report script). +-             */ +-            rc = nv_verify_cpa_interface(); +-            if (rc < 0) +-            { +-                nv_prints(NV_DBG_ERRORS, __cpgattr_warning); +-                nvos_proc_add_warning_file("change_page_attr", __cpgattr_warning); +-                nv_use_cpa = 0; +-            } +-            else if (rc != 0) +-            { +-                nv_prints(NV_DBG_ERRORS, __cpgattr_warning_2); +-                nvos_proc_add_warning_file("change_page_attr", __cpgattr_warning_2); +-                nv_use_cpa = 0; +-            } ++            nv_prints(NV_DBG_ERRORS, __cpgattr_warning); ++            nvos_proc_add_warning_file("change_page_attr", __cpgattr_warning); ++            nv_update_memory_types = 0; ++        } ++        else if (rc != 0) ++        { ++            nv_prints(NV_DBG_ERRORS, __cpgattr_warning_2); ++            nvos_proc_add_warning_file("change_page_attr", __cpgattr_warning_2); ++            nv_update_memory_types = 0; +         } +-#endif +     } +-#endif ++#endif /* defined(NV_CHANGE_PAGE_ATTR_BUG_PRESENT) */ +  + #if defined(NVCPU_X86_64) && defined(CONFIG_IA32_EMULATION) && !defined(HAVE_COMPAT_IOCTL) +     /* Register ioctl()'s for 32-bit clients */ +@@ -3482,8 +3484,21 @@ +     pte_t *pte = NULL; +     NvU64 retval; +  +-    mm = (kern) ? &init_mm : current->mm; +-    if (!kern) down_read(¤t->mm->mmap_sem); ++    if (!kern) ++    { ++        mm = current->mm; ++        down_read(&mm->mmap_sem); ++    } ++    else ++    { ++#if defined(NV_SET_PAGES_UC_PRESENT) && defined(NVCPU_X86) ++        /* nv_printf(NV_DBG_ERRORS, ++            "NVRM: can't translate KVA in nv_get_phys_address()!\n"); */ ++        return 0; ++#else ++        mm = NULL; ++#endif ++    } +  +     pgd = NV_PGD_OFFSET(address, kern, mm); +     if (!NV_PGD_PRESENT(pgd)) +@@ -3504,22 +3519,24 @@ +     retval &= ~_PAGE_NX; + #endif +  +-    if (!kern) up_read(¤t->mm->mmap_sem); ++    if (!kern) ++        up_read(&mm->mmap_sem); +     return retval; +  + failed: +-    if (!kern) up_read(¤t->mm->mmap_sem); ++    if (!kern) ++        up_read(&mm->mmap_sem); +     return 0; + } +  + NvU64 NV_API_CALL nv_get_kern_phys_address(NvU64 address) + { +-    // make sure this address is a kernel pointer ++    /* make sure this address is a kernel virtual address */ + #if defined(DEBUG) && !defined(CONFIG_X86_4G) +     if (address < PAGE_OFFSET) +     { +         nv_printf(NV_DBG_WARNINGS, +-            "NVRM: user address passed to get_kern_phys_address: 0x%lx\n", ++            "NVRM: user address passed to get_kern_phys_address: 0x%llx!\n", +             address); +         return 0; +     } +@@ -3534,12 +3551,12 @@ +  + NvU64 NV_API_CALL nv_get_kern_user_address(NvU64 address) + { +-    // make sure this address is not a kernel pointer ++    /* make sure this address is not a kernel virtual address */ + #if defined(DEBUG) && !defined(CONFIG_X86_4G) +     if (address >= PAGE_OFFSET) +     { +         nv_printf(NV_DBG_WARNINGS, +-            "NVRM: kernel address passed to get_user_phys_address: 0x%lx\n", ++            "NVRM: kernel address passed to get_user_phys_address: 0x%llx!\n", +             address); +         return 0; +     } +@@ -4316,16 +4333,12 @@ +     return -1; + } +  +-int NV_API_CALL nv_no_incoherent_mappings +-( +-    void +-) ++int NV_API_CALL nv_no_incoherent_mappings(void) + { +     if(nv_ext_no_incoherent_mappings() == 1) +         return 1; +- +-#if defined(NV_CHANGE_PAGE_ATTR_PRESENT) +-    return 1; ++#if defined(NV_CHANGE_PAGE_ATTR_PRESENT) || defined(NV_SET_PAGES_UC_PRESENT) ++    return (nv_update_memory_types); + #else +     return 0; + #endif +diff -ru usr/src/nv/os-interface.c usr/src/nv.2286310/os-interface.c +--- usr/src/nv/os-interface.c	2008-03-16 14:13:09.000000000 -0700 ++++ usr/src/nv.2286310/os-interface.c	2008-03-16 14:37:47.208131723 -0700 +@@ -1198,6 +1198,18 @@ + { +     void *vaddr; +  ++    if (start == 0) ++    { ++        if (mode != NV_MEMORY_CACHED) ++        { ++            nv_printf(NV_DBG_ERRORS, ++                "NVRM: os_map_kernel_space: won't map address 0x%0llx UC!\n", start); ++            return NULL; ++        } ++        else ++            return (void *)PAGE_OFFSET; ++    } ++ +     if (!NV_MAY_SLEEP()) +     { +         nv_printf(NV_DBG_ERRORS, +@@ -1230,6 +1242,9 @@ +     NvU64 size_bytes + ) + { ++    if (addr == (void *)PAGE_OFFSET) ++        return; ++ +     NV_IOUNMAP(addr, size_bytes); + } +  diff --git a/abs/core-testing/nvidia-beta/PKGBUILD b/abs/core-testing/nvidia-beta/PKGBUILD new file mode 100644 index 0000000..e822996 --- /dev/null +++ b/abs/core-testing/nvidia-beta/PKGBUILD @@ -0,0 +1,38 @@ +pkgname=nvidia-beta +pkgver=180.11 +_kernver='2.6.26-ARCH' +pkgrel=2 +pkgdesc="NVIDIA beta drivers for kernel26"  +arch=('i686' 'x86_64')  +[ "$CARCH" = "i686" ] && ARCH=x86 && NV=0  +[ "$CARCH" = "x86_64" ] && ARCH=x86_64 && NV=0  +provides=('nvidia') +url="http://www.nvidia.com/"  +depends=('kernel26' 'nvidia-utils-beta')  +conflicts=('nvidia' 'nvidia-96xx' 'nvidia-71xx' 'nvidia-legacy')  +license=('custom')  +install=nvidia.install  +source=(ftp://download.nvidia.com/XFree86/Linux-$ARCH/${pkgver}/NVIDIA-Linux-$ARCH-${pkgver}-pkg${NV}.run)  +md5sums=('759a1aa16073616e3104f461dffbeded') +[ "$CARCH" = "x86_64" ] && md5sums=('3c7a1bb6c9e55a8df0ec4e396e9187b2') + +build() +{ +  # Extract +  echo ${_kernver} +  cd $startdir/src/ +  sh NVIDIA-Linux-$ARCH-${pkgver}-pkg${NV}.run --extract-only +  cd NVIDIA-Linux-$ARCH-${pkgver}-pkg${NV} +   +  # Any extra patches are applied in here... + +  cd usr/src/nv/ +  ln -s Makefile.kbuild Makefile +  make SYSSRC=/lib/modules/${_kernver}/build module  +   +  # install kernel module +  mkdir -p $startdir/pkg/lib/modules/${_kernver}/kernel/drivers/video/ +  install -m644 nvidia.ko $startdir/pkg/lib/modules/${_kernver}/kernel/drivers/video/ + +  sed -i -e "s/KERNEL_VERSION='.*'/KERNEL_VERSION='${_kernver}'/" $startdir/*.install +}
\ No newline at end of file diff --git a/abs/core-testing/nvidia-beta/nvidia.install b/abs/core-testing/nvidia-beta/nvidia.install new file mode 100644 index 0000000..dbbec39 --- /dev/null +++ b/abs/core-testing/nvidia-beta/nvidia.install @@ -0,0 +1,22 @@ +# arg 1:  the new package version +post_install() { +  KERNEL_VERSION='2.6.26-ARCH' +  depmod -v $KERNEL_VERSION  > /dev/null 2>&1		  +} + +# arg 1:  the new package version +# arg 2:  the old package version +post_upgrade() { +  post_install $1 +  rmmod nvidia || echo 'In order to use the new nvidia module, exit Xserver and unload it manually.' +} + +# arg 1:  the old package version +post_remove() { +  KERNEL_VERSION='2.6.26-ARCH' +  depmod -v $KERNEL_VERSION	 > /dev/null 2>&1	  +} + +op=$1 +shift +$op $* diff --git a/abs/core-testing/nvidia-utils-beta/PKGBUILD b/abs/core-testing/nvidia-utils-beta/PKGBUILD new file mode 100644 index 0000000..e0dd0df --- /dev/null +++ b/abs/core-testing/nvidia-utils-beta/PKGBUILD @@ -0,0 +1,67 @@ +pkgname=nvidia-utils-beta +pkgver=180.11 +pkgrel=1 +pkgdesc="NVIDIA beta drivers utilities and libraries." +provides=('nvidia-utils' 'libgl') +arch=('i686' 'x86_64') +[ "$CARCH" = "i686"   ] && ARCH=x86 && NV=0 +[ "$CARCH" = "x86_64" ] && ARCH=x86_64 && NV=0 +url="http://www.nvidia.com/" +depends=('xorg-server') +conflicts=('libgl' 'libgl-dri' 'ati-fglrx-utils' 'nvidia-legacy-utils' \ +           'nvidia-71xx-utils' 'nvidia-96xx-utils') +license=('custom') +install=nvidia.install +source=(ftp://download.nvidia.com/XFree86/Linux-${ARCH}/${pkgver}/NVIDIA-Linux-${ARCH}-${pkgver}-pkg${NV}.run \ +        supported-cards.txt)  + +          +[ "$CARCH" = "x86_64" ] && md5sums=('3c7a1bb6c9e55a8df0ec4e396e9187b2' +         '5b5835bdb1508a57591b812c109a2679') +          +                   +options=(docs !strip) + +build() +{ +  # override nvida install routine and do it the long way. +  cd $startdir/src/ +  sh NVIDIA-Linux-${ARCH}-${pkgver}-pkg${NV}.run --extract-only +  cd NVIDIA-Linux-${ARCH}-${pkgver}-pkg${NV}/usr/ +  mkdir -p $startdir/pkg/usr/{include/cuda,include/vdpau,lib,bin,share/applications,share/pixmaps,man/man1} +#  mkdir -p $startdir/pkg/usr/{lib,bin,share/applications,share/pixmaps,man/man1} +  mkdir -p $startdir/pkg/usr/lib/xorg/modules/{extensions,drivers} +  mkdir -p $startdir/pkg/usr/share/licenses/nvidia/ +  cp -rp  include/cuda/* $startdir/pkg/usr/include/cuda || return 1 +  cp -rp  include/vdpau/* $startdir/pkg/usr/include/vdpau || return 1 +  install lib/{libGLcore,libGL,libnvidia-cfg,libcuda,tls/libnvidia-tls}.so.${pkgver} \ +       $startdir/pkg/usr/lib/ || return 1 +  install -m644 share/man/man1/* $startdir/pkg/usr/man/man1/ || return 1 +  rm $startdir/pkg/usr/man/man1/nvidia-installer.1.gz || return 1 +  install X11R6/lib/libXv* $startdir/pkg/usr/lib/ || return 1 +  install -m644 share/applications/nvidia-settings.desktop $startdir/pkg/usr/share/applications/ || return 1 +  # fix nvidia .desktop file +  sed -e 's:__UTILS_PATH__:/usr/bin:' -e 's:__PIXMAP_PATH__:/usr/share/pixmaps:' -i $startdir/pkg/usr/share/applications/nvidia-settings.desktop +  install -m644 share/pixmaps/nvidia-settings.png $startdir/pkg/usr/share/pixmaps/ || return 1 +  install X11R6/lib/modules/libnvidia-wfb.so.$pkgver $startdir/pkg/usr/lib/xorg/modules || return 1 +  install X11R6/lib/modules/drivers/nvidia_drv.so $startdir/pkg/usr/lib/xorg/modules/drivers || return 1 +  install X11R6/lib/modules/extensions/libglx.so.$pkgver $startdir/pkg/usr/lib/xorg/modules/extensions || return 1 +  install -m755 bin/nvidia-{settings,xconfig,bug-report.sh} $startdir/pkg/usr/bin/ || return 1 +  cd $startdir/pkg/usr/lib/ +  ln -s libGL.so.$pkgver libGL.so || return 1 +  ln -s libGL.so.$pkgver libGL.so.1 || return 1 +  ln -s libGLcore.so.$pkgver libGLcore.so.1 || return 1 +  ln -s libnvidia-cfg.so.$pkgver libnvidia-cfg.so.1 || return 1 +  ln -s libnvidia-tls.so.$pkgver libnvidia-tls.so.1 || return 1 +  ln -s libcuda.so.$pkgver libcuda.so.1 || return 1 +  ln -s libXvMCNVIDIA.so.$pkgver libXvMCNVIDIA_dynamic.so.1 || return 1 +  cd $startdir/pkg/usr/lib/xorg/modules/extensions +  ln -s libglx.so.$pkgver libglx.so || return 1 + +  install -m644 $startdir/src/NVIDIA-Linux-${ARCH}-${pkgver}-pkg${NV}/LICENSE $startdir/pkg/usr/share/licenses/nvidia/ || return 1 +  ln -s nvidia $startdir/pkg/usr/share/licenses/nvidia-utils || return 1 +  install -D -m644 $startdir/src/NVIDIA-Linux-${ARCH}-${pkgver}-pkg${NV}/usr/share/doc/README.txt $startdir/pkg/usr/share/doc/nvidia/README || return 1 +  install -D -m644 $startdir/src/supported-cards.txt $startdir/pkg/usr/share/doc/nvidia/supported-cards.txt || return 1 +   +  find $startdir/pkg/usr -type d -exec chmod 755 {} \; +} diff --git a/abs/core-testing/nvidia-utils-beta/nvidia.install b/abs/core-testing/nvidia-utils-beta/nvidia.install new file mode 100644 index 0000000..7d46ed6 --- /dev/null +++ b/abs/core-testing/nvidia-utils-beta/nvidia.install @@ -0,0 +1,40 @@ +# arg 1:  the new package version +post_install() { + +  echo ------------------------------- +  echo By using this package you accept the NVIDIA license,  +  echo which has been installed in /usr/share/licenses/nvidia/LICENSE +  echo If you do not accept this license, you must remove the package immediately. +  echo Dont forget to update your /etc/X11/xorg.conf +  echo In order to use nvidia-settings, you need to install the 'gtk2' package. +  echo In order to use nvidia-xconfig, you need to install the 'pkgconfig' package. +  echo ------------------------------- +  echo nvidia 9746 drops support for Geforce 3 and 4 cards +  echo If you have such a card, install the nvidia-96xx, nvidia-96xx-utils, +  echo nvidia-96xx-ck, nvidia-96xx-beyond, nvidia-96xx-suspend2 packages +  echo For a list of supported cards, see /usr/share/doc/nvidia/supported-cards.txt +  echo ------------------------------- + +  #echo ":: Updating symlinks to use built-in libwfb" +  #ln -sf /usr/lib/xorg/modules/libnvidia-wfb.so.* \ +  #       /usr/lib/xorg/modules/libwfb.so  +} + +# arg 1:  the new package version +# arg 2:  the old package version +post_upgrade() { +  post_install $1 +  echo ":: Updating symlinks to use xorg-server libwfb" +  ln -sf /usr/lib/xorg/modules/libwfb.so.* \ +         /usr/lib/xorg/modules/libwfb.so +} + +post_remove() { +  echo ":: Updating symlinks to use xorg-server libwfb" +  ln -sf /usr/lib/xorg/modules/libwfb.so.* \ +         /usr/lib/xorg/modules/libwfb.so +} + +op=$1 +shift +$op $* diff --git a/abs/core-testing/nvidia-utils-beta/supported-cards.txt b/abs/core-testing/nvidia-utils-beta/supported-cards.txt new file mode 100644 index 0000000..ce4c3d4 --- /dev/null +++ b/abs/core-testing/nvidia-utils-beta/supported-cards.txt @@ -0,0 +1,292 @@ +Archlinux currently manages three branches of the NVIDIA binary driver: + +nvidia (latest nvidia release) +nvidia-96xx (96xx legacy branch) +nvidia-71xx (71xx legacy branch) + +This excerpt from the NVIDIA 100.14.09 README lists the supported devices +for each of those: + +______________________________________________________________________________ + +Appendix A. Supported NVIDIA GPU Products +______________________________________________________________________________ + +For the most complete and accurate listing of supported GPUs, please see the +Supported Products List, available from the NVIDIA Linux x86 Graphics Driver +download page. Please go to http://www.nvidia.com/object/unix.html, follow the +Archive link under the Linux x86 heading, follow the link for the 100.14.09 +driver, and then go to the Supported Products List. + + +A1. NVIDIA GEFORCE GPUS + + +    NVIDIA GPU product                    Device PCI ID +    ----------------------------------    ---------------------------------- +    GeForce 6800 Ultra                    0x0040 +    GeForce 6800                          0x0041 +    GeForce 6800 LE                       0x0042 +    GeForce 6800 XE                       0x0043 +    GeForce 6800 XT                       0x0044 +    GeForce 6800 GT                       0x0045 +    GeForce 6800 GT                       0x0046 +    GeForce 6800 GS                       0x0047 +    GeForce 6800 XT                       0x0048 +    GeForce 7800 GTX                      0x0090 +    GeForce 7800 GTX                      0x0091 +    GeForce 7800 GTX                      0x0092 +    GeForce 7800 GS                       0x0093 +    GeForce 7800 SLI                      0x0095 +    GeForce Go 7800                       0x0098 +    GeForce Go 7800 GTX                   0x0099 +    GeForce 6800 GS                       0x00C0 +    GeForce 6800                          0x00C1 +    GeForce 6800 LE                       0x00C2 +    GeForce 6800 XT                       0x00C3 +    GeForce Go 6800                       0x00C8 +    GeForce Go 6800 Ultra                 0x00C9 +    GeForce 6800 Ultra/GeForce 6800       0x00F0 +    GeForce 6600 GT                       0x00F1 +    GeForce 6600                          0x00F2 +    GeForce 6200                          0x00F3 +    GeForce 6600 LE                       0x00F4 +    GeForce 7800 GS                       0x00F5 +    GeForce 6800 GS/XT                    0x00F6 +    GeForce 6800 Ultra                    0x00F9 +    GeForce PCX 5750                      0x00FA +    GeForce PCX 5900                      0x00FB +    GeForce PCX 5300                      0x00FC +    GeForce PCX 4300                      0x00FF +    GeForce 6600 GT                       0x0140 +    GeForce 6600                          0x0141 +    GeForce 6600 LE                       0x0142 +    GeForce 6600 VE                       0x0143 +    GeForce Go 6600                       0x0144 +    GeForce 6610 XL                       0x0145 +    GeForce Go 6600 TE/6200 TE            0x0146 +    GeForce 6700 XL                       0x0147 +    GeForce Go 6600                       0x0148 +    GeForce Go 6600 GT                    0x0149 +    GeForce 6200                          0x014F +    GeForce 6500                          0x0160 +    GeForce 6200 TurboCache(TM)           0x0161 +    GeForce 6200SE TurboCache(TM)         0x0162 +    GeForce 6200 LE                       0x0163 +    GeForce Go 6200                       0x0164 +    GeForce Go 6400                       0x0166 +    GeForce Go 6200                       0x0167 +    GeForce Go 6400                       0x0168 +    GeForce 6250                          0x0169 +    GeForce 7100 GS                       0x016A +    GeForce 8800 GTX                      0x0191 +    GeForce 8800 GTS                      0x0193 +    GeForce 8800 Ultra                    0x0194 +    GeForce 7350 LE                       0x01D0 +    GeForce 7300 LE                       0x01D1 +    GeForce 7300 SE/7200 GS               0x01D3 +    GeForce Go 7200                       0x01D6 +    GeForce Go 7300                       0x01D7 +    GeForce Go 7400                       0x01D8 +    GeForce 7500 LE                       0x01DD +    GeForce 7300 GS                       0x01DF +    GeForce 6800                          0x0211 +    GeForce 6800 LE                       0x0212 +    GeForce 6800 GT                       0x0215 +    GeForce 6800 XT                       0x0218 +    GeForce 6200                          0x0221 +    GeForce 6200 A-LE                     0x0222 +    GeForce 6150                          0x0240 +    GeForce 6150 LE                       0x0241 +    GeForce 6100                          0x0242 +    GeForce Go 6150                       0x0244 +    GeForce Go 6100                       0x0247 +    GeForce 7900 GTX                      0x0290 +    GeForce 7900 GT/GTO                   0x0291 +    GeForce 7900 GS                       0x0292 +    GeForce 7950 GX2                      0x0293 +    GeForce 7950 GX2                      0x0294 +    GeForce 7950 GT                       0x0295 +    GeForce Go 7950 GTX                   0x0297 +    GeForce Go 7900 GS                    0x0298 +    GeForce Go 7900 GTX                   0x0299 +    GeForce 7600 GT/Unknown GPU           0x02E0 +    GeForce 7600 GS                       0x02E1 +    GeForce FX 5800 Ultra                 0x0301 +    GeForce FX 5800                       0x0302 +    GeForce FX 5600 Ultra                 0x0311 +    GeForce FX 5600                       0x0312 +    GeForce FX 5600XT                     0x0314 +    GeForce FX Go5600                     0x031A +    GeForce FX Go5650                     0x031B +    GeForce FX 5200                       0x0320 +    GeForce FX 5200 Ultra                 0x0321 +    GeForce FX 5200                       0x0322 +    GeForce FX 5200LE                     0x0323 +    GeForce FX Go5200                     0x0324 +    GeForce FX Go5250                     0x0325 +    GeForce FX 5500                       0x0326 +    GeForce FX 5100                       0x0327 +    GeForce FX Go5200 32M/64M             0x0328 +    GeForce FX Go53xx                     0x032C +    GeForce FX Go5100                     0x032D +    GeForce FX 5900 Ultra                 0x0330 +    GeForce FX 5900                       0x0331 +    GeForce FX 5900XT                     0x0332 +    GeForce FX 5950 Ultra                 0x0333 +    GeForce FX 5900ZT                     0x0334 +    GeForce FX 5700 Ultra                 0x0341 +    GeForce FX 5700                       0x0342 +    GeForce FX 5700LE                     0x0343 +    GeForce FX 5700VE                     0x0344 +    GeForce FX Go5700                     0x0347 +    GeForce FX Go5700                     0x0348 +    GeForce 7650 GS                       0x0390 +    GeForce 7600 GT                       0x0391 +    GeForce 7600 GS                       0x0392 +    GeForce 7300 GT                       0x0393 +    GeForce 7600 LE                       0x0394 +    GeForce 7300 GT                       0x0395 +    GeForce Go 7600                       0x0398 +    GeForce 6150SE nForce 430             0x03D0 +    GeForce 6100 nForce 405               0x03D1 +    GeForce 6100 nForce 400               0x03D2 +    GeForce 6100 nForce 420               0x03D5 +    GeForce 8600 GTS                      0x0400 +    GeForce 8600 GT                       0x0402 +    GeForce 8600M GT                      0x0407 +    GeForce 8500 GT                       0x0421 +    GeForce 8400 GS                       0x0422 +    GeForce 8300 GS                       0x0423 +    GeForce 8600M GS                      0x0425 +    GeForce 8400M GT                      0x0426 +    GeForce 8400M GS                      0x0427 +    GeForce 8400M G                       0x0428 + + + +A2. NVIDIA QUADRO GPUS + + +    NVIDIA GPU product                                        Device PCI ID +    ------------------------------------------------------    --------------- +    Quadro FX 4000                                            0x004E +    Quadro FX 4500                                            0x009D +    Quadro FX Go1400                                          0x00CC +    Quadro FX 3450/4000 SDI                                   0x00CD +    Quadro FX 1400                                            0x00CE +    Quadro FX 4400/Quadro FX 3400                             0x00F8 +    Quadro FX 330                                             0x00FC +    Quadro NVS 280 PCI-E/Quadro FX 330                        0x00FD +    Quadro FX 1300                                            0x00FE +    Quadro NVS 440                                            0x014A +    Quadro FX 540M/Quadro FX 540M                             0x014C +    Quadro FX 550                                             0x014D +    Quadro FX 540                                             0x014E +    Quadro NVS 285                                            0x0165 +    Quadro FX 5600                                            0x019D +    Quadro FX 4600                                            0x019E +    Quadro NVS 110M                                           0x01D7 +    Quadro NVS 110M                                           0x01DA +    Quadro NVS 120M                                           0x01DB +    Quadro FX 350M                                            0x01DC +    Quadro FX 350                                             0x01DE +    Quadro NVS 210S / NVIDIA GeForce 6150LE                   0x0245 +    Quadro FX 2500M                                           0x029A +    Quadro FX 1500M                                           0x029B +    Quadro FX 5500                                            0x029C +    Quadro FX 3500                                            0x029D +    Quadro FX 1500                                            0x029E +    Quadro FX 4500 X2                                         0x029F +    Quadro FX 2000                                            0x0308 +    Quadro FX 1000                                            0x0309 +    Quadro FX Go700                                           0x031C +    Quadro NVS 55/280 PCI                                     0x032A +    Quadro FX 500/FX 600                                      0x032B +    Quadro FX 3000                                            0x0338 +    Quadro FX 700                                             0x033F +    Quadro FX Go1000                                          0x034C +    Quadro FX 1100                                            0x034E +    Quadro FX 560                                             0x039E +    Quadro NVS 320M                                           0x040B +    Quadro FX 570M                                            0x040C +    Quadro FX 1600M                                           0x040D +    Quadro NVS 140M                                           0x0429 +    Quadro NVS 130M                                           0x042A +    Quadro NVS 135M                                           0x042B +    Quadro FX 360M                                            0x042D + + +Below are the legacy GPUs that are no longer supported in the unified driver. +These GPUs will continue to be maintained through the special legacy NVIDIA +GPU driver releases. + +The 1.0-96xx driver supports the following set of GPUs: + + +    NVIDIA GPU product                    Device PCI ID +    ----------------------------------    ---------------------------------- +    GeForce2 MX/MX 400                    0x0110 +    GeForce2 MX 100/200                   0x0111 +    GeForce2 Go                           0x0112 +    Quadro2 MXR/EX/Go                     0x0113 +    GeForce4 MX 460                       0x0170 +    GeForce4 MX 440                       0x0171 +    GeForce4 MX 420                       0x0172 +    GeForce4 MX 440-SE                    0x0173 +    GeForce4 440 Go                       0x0174 +    GeForce4 420 Go                       0x0175 +    GeForce4 420 Go 32M                   0x0176 +    GeForce4 460 Go                       0x0177 +    Quadro4 550 XGL                       0x0178 +    GeForce4 440 Go 64M                   0x0179 +    Quadro NVS 400                        0x017A +    Quadro4 500 GoGL                      0x017C +    GeForce4 410 Go 16M                   0x017D +    GeForce4 MX 440 with AGP8X            0x0181 +    GeForce4 MX 440SE with AGP8X          0x0182 +    GeForce4 MX 420 with AGP8X            0x0183 +    GeForce4 MX 4000                      0x0185 +    Quadro4 580 XGL                       0x0188 +    Quadro NVS 280 SD                     0x018A +    Quadro4 380 XGL                       0x018B +    Quadro NVS 50 PCI                     0x018C +    GeForce2 Integrated GPU               0x01A0 +    GeForce4 MX Integrated GPU            0x01F0 +    GeForce3                              0x0200 +    GeForce3 Ti 200                       0x0201 +    GeForce3 Ti 500                       0x0202 +    Quadro DCC                            0x0203 +    GeForce4 Ti 4600                      0x0250 +    GeForce4 Ti 4400                      0x0251 +    GeForce4 Ti 4200                      0x0253 +    Quadro4 900 XGL                       0x0258 +    Quadro4 750 XGL                       0x0259 +    Quadro4 700 XGL                       0x025B +    GeForce4 Ti 4800                      0x0280 +    GeForce4 Ti 4200 with AGP8X           0x0281 +    GeForce4 Ti 4800 SE                   0x0282 +    GeForce4 4200 Go                      0x0286 +    Quadro4 980 XGL                       0x0288 +    Quadro4 780 XGL                       0x0289 +    Quadro4 700 GoGL                      0x028C + + +The 1.0-71xx driver supports the following set of GPUs: + + +    NVIDIA GPU product                    Device PCI ID +    ----------------------------------    ---------------------------------- +    RIVA TNT                              0x0020 +    RIVA TNT2/TNT2 Pro                    0x0028 +    RIVA TNT2 Ultra                       0x0029 +    Vanta/Vanta LT                        0x002C +    RIVA TNT2 Model 64/Model 64 Pro       0x002D +    Aladdin TNT2                          0x00A0 +    GeForce 256                           0x0100 +    GeForce DDR                           0x0101 +    Quadro                                0x0103 +    GeForce2 GTS/GeForce2 Pro             0x0150 +    GeForce2 Ti                           0x0151 +    GeForce2 Ultra                        0x0152 +    Quadro2 Pro                           0x0153 diff --git a/abs/core-testing/nvidia/PKGBUILD b/abs/core-testing/nvidia/PKGBUILD index b1af8b5..0814d77 100644 --- a/abs/core-testing/nvidia/PKGBUILD +++ b/abs/core-testing/nvidia/PKGBUILD @@ -4,7 +4,7 @@  pkgname=nvidia  pkgver=173.14.12  _kernver='2.6.26-ARCH' -pkgrel=3 +pkgrel=4  pkgdesc="NVIDIA drivers for kernel26."  arch=('i686' 'x86_64')  [ "$CARCH" = "i686"   ] && ARCH=x86 diff --git a/abs/core-testing/read-edid-2.0.0.tar.gz b/abs/core-testing/read-edid-2.0.0.tar.gzBinary files differ new file mode 100644 index 0000000..9160c9d --- /dev/null +++ b/abs/core-testing/read-edid-2.0.0.tar.gz diff --git a/abs/core-testing/runit-scripts/PKGBUILD b/abs/core-testing/runit-scripts/PKGBUILD index 3792572..cc00956 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=15 +pkgrel=21  pkgdesc="collection of startup scripts for runit"  url="http://smarden.org/runit/"  license="BSD" diff --git a/abs/core-testing/runit-scripts/runitscripts/1 b/abs/core-testing/runit-scripts/runitscripts/1 index 748930f..b9ff184 100755 --- a/abs/core-testing/runit-scripts/runitscripts/1 +++ b/abs/core-testing/runit-scripts/runitscripts/1 @@ -2,7 +2,7 @@  /etc/rc.sysinit  hostname `cat /etc/hostname`  /sbin/sysctl -p 2>/dev/null >/dev/null -#/usr/bin/load-modules-mythvantage.sh +/usr/LH/bin/load-modules-mythvantage.sh  rm /etc/dhcpc/dhcpcd*.pid  2>/dev/null  rm -f /etc/sv/frontend/.runtime/* 2>/dev/null  rm -f /etc/runit/reboot 2>/dev/null diff --git a/abs/core-testing/runit-scripts/runitscripts/services/evrouter/finish b/abs/core-testing/runit-scripts/runitscripts/services/evrouter/finish index 0dd33de..5ebda4c 100755 --- a/abs/core-testing/runit-scripts/runitscripts/services/evrouter/finish +++ b/abs/core-testing/runit-scripts/runitscripts/services/evrouter/finish @@ -1,4 +1,10 @@  #!/bin/bash  . /etc/profile -DISPLAY=localhost:50 evrouter -q  -rm -rf /tmp/.evrouter* +which evrouter >/dev/null 2>/dev/null +if [ $? = 0 ] +then +	DISPLAY=localhost:50 evrouter -q  +	rm -rf /tmp/.evrouter* +else +	sv down evrouter +fi
\ No newline at end of file diff --git a/abs/core-testing/runit-scripts/runitscripts/services/evrouter/run b/abs/core-testing/runit-scripts/runitscripts/services/evrouter/run index 1d7389a..5697f6f 100755 --- a/abs/core-testing/runit-scripts/runitscripts/services/evrouter/run +++ b/abs/core-testing/runit-scripts/runitscripts/services/evrouter/run @@ -1,5 +1,13 @@  #!/bin/bash  . /etc/profile -sv start Xvfb -su mythtv -c "DISPLAY=localhost:50 evrouter -c /etc/evrouter.cfg -f /dev/input/event*" +which evrouter >/dev/null 2>/dev/null +if [ $? = 0 ] +then +	ps -ef |grep -v grep|grep -q "Xvfb :50" +	if [ ! $?  = 0 ] +	then +		sv start Xvfb +	fi +	su mythtv -c "DISPLAY=localhost:50 evrouter -c /etc/evrouter.cfg -f /dev/input/event*" +fi diff --git a/abs/core-testing/runit-scripts/runitscripts/services/lircd/run b/abs/core-testing/runit-scripts/runitscripts/services/lircd/run index 9908256..ceda8db 100755 --- a/abs/core-testing/runit-scripts/runitscripts/services/lircd/run +++ b/abs/core-testing/runit-scripts/runitscripts/services/lircd/run @@ -33,7 +33,9 @@ case $ReceiverType in  	Usb-imon)  		DEVICE=/dev/lirc_imon	  	;; - +    Hauppauge) +        DEVICE=/dev/lirc3 +        ;;  	*)   		DEVICE=`ls  /dev/lirc[0-9] 2>/dev/null |sort |sed '/./,$!d'|head -n 1 ` diff --git a/abs/core-testing/runit-scripts/runitscripts/services/ncid/finish b/abs/core-testing/runit-scripts/runitscripts/services/ncid/finish new file mode 100644 index 0000000..953a4a1 --- /dev/null +++ b/abs/core-testing/runit-scripts/runitscripts/services/ncid/finish @@ -0,0 +1,9 @@ +#!/bin/bash +exec 2>&1 +which ncid 2>/dev/null >/dev/null +if [ ! $?  = 0 ] +then +	sv down ncid +fi + + diff --git a/abs/core-testing/runit-scripts/runitscripts/services/ncid/run b/abs/core-testing/runit-scripts/runitscripts/services/ncid/run index 8a90707..7dbc8ba 100755 --- a/abs/core-testing/runit-scripts/runitscripts/services/ncid/run +++ b/abs/core-testing/runit-scripts/runitscripts/services/ncid/run @@ -1,5 +1,12 @@  #!/bin/sh  exec 2>&1 -sv start ncidd -exec /usr/bin/ncid --no-gui --all  --call-prog --program /usr/bin/ncid.py 127.0.0.1 3333 +which ncid 2>/dev/null >/dev/null +if [ $? = 0 ] +then +	if [ -f /var/service/ncidd/run ] +	then +		sv start ncidd +	fi +	exec /usr/bin/ncid --no-gui --all  --call-prog --program /usr/bin/ncid.py 127.0.0.1 3333 +fi diff --git a/abs/core-testing/runit-scripts/runitscripts/services/ncidd/finish b/abs/core-testing/runit-scripts/runitscripts/services/ncidd/finish new file mode 100644 index 0000000..ab39d39 --- /dev/null +++ b/abs/core-testing/runit-scripts/runitscripts/services/ncidd/finish @@ -0,0 +1,9 @@ +#!/bin/bash +exec 2>&1 +which ncidd 2>/dev/null >/dev/null +if [ ! $?  = 0 ] +then +	sv down ncid +fi + + diff --git a/abs/core-testing/runit-scripts/runitscripts/services/ncidd/run b/abs/core-testing/runit-scripts/runitscripts/services/ncidd/run index 6b032db..f1c710a 100755 --- a/abs/core-testing/runit-scripts/runitscripts/services/ncidd/run +++ b/abs/core-testing/runit-scripts/runitscripts/services/ncidd/run @@ -1,3 +1,7 @@  #!/bin/sh  exec 2>&1 -exec /usr/sbin/ncidd -D 2>&1  +which ncidd > /dev/null 2>/dev/null +if [ $? = 0 ] +then +	exec /usr/sbin/ncidd -D 2>&1  +fi diff --git a/abs/core-testing/sysvinit/PKGBUILD b/abs/core-testing/sysvinit/PKGBUILD index 2a32da9..6fbb3cd 100644 --- a/abs/core-testing/sysvinit/PKGBUILD +++ b/abs/core-testing/sysvinit/PKGBUILD @@ -1,6 +1,6 @@  pkgname=sysvinit  pkgver=2.86 -pkgrel=11 +pkgrel=12  pkgdesc="Linux System V Init"  arch=(i686 x86_64)  license=('GPL') diff --git a/abs/core-testing/sysvinit/halt-init.patch b/abs/core-testing/sysvinit/halt-init.patch index 3c61e0f..88eb0ce 100644 --- a/abs/core-testing/sysvinit/halt-init.patch +++ b/abs/core-testing/sysvinit/halt-init.patch @@ -7,8 +7,8 @@  +	if (!strcmp(progname, "reboot.init")) do_reboot = 1;  +	if (!strcmp(progname, "poweroff.init")) do_poweroff = 1;  + -+	fprintf(stderr, "%d: do_reboot \n ", do_reboot); -+	fprintf(stderr, "%d: do_poweroff \n ", do_poweroff); ++	//fprintf(stderr, "%d: do_reboot \n ", do_reboot); ++	//fprintf(stderr, "%d: do_poweroff \n ", do_poweroff);  +	//fprintf(stderr, "%s: \n", progname);  +	//do_nothing = 1;  + diff --git a/abs/core-testing/vi/PKGBUILD b/abs/core-testing/vi/PKGBUILD index 3bfc4db..5d6d984 100644 --- a/abs/core-testing/vi/PKGBUILD +++ b/abs/core-testing/vi/PKGBUILD @@ -3,7 +3,7 @@  pkgname=vi  _srcver=7.2 -_patchlevel=30 +_patchlevel=65  pkgver=${_srcver}.${_patchlevel}  pkgrel=1  pkgdesc="a highly configurable, improved version of the vi text editor (basic version)" diff --git a/abs/extra-testing/gvim/PKGBUILD b/abs/extra-testing/gvim/PKGBUILD new file mode 100644 index 0000000..9e165bd --- /dev/null +++ b/abs/extra-testing/gvim/PKGBUILD @@ -0,0 +1,83 @@ +# $Id: PKGBUILD 17439 2008-10-29 19:05:16Z tobias $ +# Maintainer: tobias [ tobias at archlinux org ] + +pkgname=gvim +_srcver=7.2 +_patchlevel=65 +pkgver=${_srcver}.${_patchlevel} +pkgrel=1 +pkgdesc="the vim text editor with advanced features enabled, such as a gui mode" +arch=(i686 x86_64) +license=('custom:vim') +url="http://www.vim.org" +depends=("vim>=${pkgver}" 'perl' 'python' 'acl' 'libxt' 'gtk2' ) +makedepends=('pkgconfig') +backup=(etc/gvimrc) +conflicts=('gvim-devel') +provides=('gvim-devel') +install=${pkgname}.install +source=(ftp://ftp.vim.org/pub/vim/unix/vim-${_srcver}.tar.bz2 \ +        ftp://ftp.vim.org/pub/vim/extra/vim-${_srcver}-extra.tar.gz \ +        ftp://ftp.vim.org/pub/vim/extra/vim-${_srcver}-lang.tar.gz \ +        ${pkgname}.desktop fetch_patches.sh) +md5sums=('f0901284b338e448bfd79ccca0041254' '35e04482f07c57221c9a751aaa3b8dac' \ +         'd8884786979e0e520c112faf2e176f05' '2be104c0372dd6dae19cb7968c03cd4f' \ +         'a3b03cd44b8ed78a99850d4cbfaafe55') + +build() +{ +  # patch party +  # pull in patches from vim.org (or the src cache alternatively) +  . ${startdir}/src/fetch_patches.sh +  get_patches || return 1 +  cd ${startdir}/src/vim$(echo ${_srcver} | sed "s/\.//") +   # define the place for the global (g)vimrc file (set to /etc/vimrc) +  sed -i 's|^.*\(#define SYS_.*VIMRC_FILE.*"\) .*$|\1|' src/feature.h +  ./configure --prefix=/usr --localstatedir=/var/lib/vim --mandir=/usr/share/man \ +    --with-compiledby=ArchLinux --with-features=big \ +    --with-x=yes --disable-gpm --with-x=yes --enable-gui=gtk2 \ +    --with-global-runtime=/usr/share/vim --with-vim-name=gvim \ +    --enable-multibyte --enable-cscope \ +    --enable-perlinterp --enable-pythoninterp  +  make || return 1 +  # install everything first ... +  make VIMRCLOC=/etc DESTDIR=${startdir}/pkg VIMRTDIR= install + +   # ... and clean up what vim already has for us +   # move the binary and fix the (g)* related symlinks +  find ${startdir}/pkg/usr/bin -type l 2> /dev/null | while read symlink; do +    rm ${symlink} +  done +  cd ${startdir}/pkg/usr/bin +  rm -f gvimtutor xxd +  ln -s gvim evim +  ln -s gvim egview +  ln -s gvim gview +  ln -s gvim gvimdiff +  ln -s gvim rgview +  ln -s gvim rgvim + +   # delete the manpages/symlinks provided by vi package +  find ${startdir}/pkg/usr/share/man -type d -name 'man1' 2> /dev/null | \ +   while read mandir; do +    cd ${mandir} +    rm -f *.1 +    ln -s evi.1.gz evim.1.gz +    ln -s vi.1.gz egview.1.gz +    ln -s vi.1.gz gview.1.gz +    ln -s vi.1.gz gvim.1.gz +    ln -s vimdiff.1.gz gvimdiff.1.gz +    ln -s vi.1.gz rgvim.1.gz +    ln -s vi.1.gz rgview.1.gz +  done + +  install -Dm644 ${startdir}/pkg/usr/share/vim/gvimrc_example.vim \ +    ${startdir}/pkg/etc/gvimrc +   # clean all settings and controls -  served by vi package +  rm -rf ${startdir}/pkg/usr/share/vim +   # freedesktop links +  install -D -m644 ${startdir}/src/${pkgname}.desktop \ +    ${startdir}/pkg/usr/share/applications/gvim.desktop +  install -D -m644 ${startdir}/src/vim$(echo ${_srcver} | sed "s/\.//")/runtime/vim48x48.png \ +    ${startdir}/pkg/usr/share/pixmaps/gvim.png +} diff --git a/abs/extra-testing/gvim/fetch_patches.sh b/abs/extra-testing/gvim/fetch_patches.sh new file mode 100644 index 0000000..03e16e2 --- /dev/null +++ b/abs/extra-testing/gvim/fetch_patches.sh @@ -0,0 +1,60 @@ +# the external logic for pulling in patches + +get_patches() { +  _patchdir=${startdir}/src/patches +  cd ${startdir}/src/vim$(echo ${_srcver} | sed "s/\.//") +  if [ -d ${_patchdir} ]; then +    rm -rf ${_patchdir} +    echo -e "\tremove patches from old build" +  fi +  mkdir ${_patchdir} && cd ${_patchdir} +  _rpath=ftp://ftp.vim.org/pub/vim/patches/${_srcver} + +  # change IFS to loop line-by-line +  _OLDIFS=$IFS +  IFS=" +" +  echo -e "\tfetching checksumfile for patches" +  wget ${_rpath}/MD5SUMS >/dev/null 2>&1 + +  downloads=0 +  for _line in $(/bin/cat MD5SUMS); do +    downloads=$((${downloads} + 1)) +    _md5=$(echo $_line | cut -d ' ' -f1) +    _file=$(echo $_line | cut -d ' ' -f3) +    if [ -f ${SRCDEST}/vim-${_srcver}/${_file} ]; then +      echo -e "\thaving patch file:${_file}" +      cp ${SRCDEST}/vim-${_srcver}/${_file} ./ +    else +      echo -n -e "\t... fetching patch file: ${_file} ..." +      wget ${_rpath}/${_file} >/dev/null 2>&1 +      if [ -w ${SRCDEST} ]; then +        if [ ! -d ${SRCDEST}/vim-${_srcver} ]; then +          mkdir -p ${SRCDEST}/vim-${_srcver} +        fi +        cp ${_file} ${SRCDEST}/vim-${_srcver}/ +        echo " done!" +      fi +    fi + +    if [ $(echo "${_md5}  ${_file}" | md5sum --status -c -) ]; then +      echo ${_file} md5sums do not match +      return 1 +    fi +  done + +  ######## + +  if [ ${downloads} != ${_patchlevel} ]; then +    echo -e "Number of patches does not match the patchlevel!\nEdit the PKGBUILD accordingly!" +    return 1 +  fi +  IFS=$_OLDIFS +  rm MD5SUMS +  cd ${startdir}/src/vim$(echo ${_srcver} | sed "s/\.//") +  for _patch in $(/bin/ls ${_patchdir}); do +    patch -Np0 -i ${_patchdir}/${_patch} || return 1 +  done +  rm -rf ${_patchdir} +  return 0 +} diff --git a/abs/extra-testing/gvim/gvim.desktop b/abs/extra-testing/gvim/gvim.desktop new file mode 100644 index 0000000..8c99660 --- /dev/null +++ b/abs/extra-testing/gvim/gvim.desktop @@ -0,0 +1,42 @@ +[Desktop Entry] +Encoding=UTF-8 +Version=1.0 +Name=gVim +Name[eo]=VIM-fasado +Name[sv]=gVim +Name[xx]=xx +Comment=GTK2 enhanced vim text editor +Comment[ar]=محرر نصوص +Comment[bg]=Текст Редактор +Comment[de]=Texteditor +Comment[el]=Διορθωτής Κειμένου +Comment[eo]=Tekstredaktilo +Comment[et]=Tekstiredaktor +Comment[eu]=Testu Editorea +Comment[fi]=Tekstieditori +Comment[he]=עורך טקסט +Comment[is]=Textaritill +Comment[ja]=テキストエディタ +Comment[lt]=Teksto redaktorius +Comment[mt]=Editur tat-test +Comment[pt_BR]=Editor de Texto +Comment[ro]=Editor de text +Comment[ru]=редактор +Comment[sk]=Textový editor +Comment[sl]=Urejevalnik besedil +Comment[ta]=¯¨Ã ¦¾¡ÌôÀ¡Ç÷ +Comment[tr]=Metin Düzenleyici +Comment[uk]=Редактор текстів +Comment[vi]=Trình soạn văn bản +Comment[xx]=xx +Comment[zh_CN]=文本编辑器 +Comment[zh_TW]=文字編輯器 +GenericName=Text Editor +Type=Application +TryExec=gvim +Exec=gvim +Icon=gvim +Terminal=false +X-MultipleArgs=false +Categories=GTK;Application;Utility;TextEditor; +MimeType=application/mathml+xml;application/xhtml+xml;application/x-perl;application/x-python;application/x-shellscript;audio/x-mpegurl;audio/x-scpls;image/svg+xml;message/news;message/rfc822;text/calendar;text/css;text/english;text/html;text/mrml;text/plain;text/rdf;text/rss;text/rtf;text/sgml;text/vnd.wap.wml;text/x-adasrc;text/x-bibtex;text/x-chdr;text/x-c++hdr;text/x-csrc;text/x-c++src;text/x-c;text/x-objc;text/x-csv;text/x-diff;text/x-java;text/x-katefilelist;text/x-latex;text/x-log;text/x-lyx;text/x-makefile;text/xmcd;text/xml;text/x-moc;text/x-mswinurl;text/x-objcsrc;text/x-pascal;text/x-perl;text/x-php;text/x-php-source;text/x-python;text/x-tcl;text/x-tex;text/x-vcalendar;text/x-vcard;text/x-xslfo;text/x-xslt; diff --git a/abs/extra-testing/gvim/gvim.install b/abs/extra-testing/gvim/gvim.install new file mode 100644 index 0000000..f49c345 --- /dev/null +++ b/abs/extra-testing/gvim/gvim.install @@ -0,0 +1,24 @@ +post_install() { +  echo "Updating desktop and mime database..." +  update-desktop-database -q +  echo -n "Updating vim help tags..." +  usr/bin/vim --noplugins -u NONE -U NONE \ +    --cmd ":helptags usr/share/vim/doc" --cmd ":q" > /dev/null 2>&1 +  echo "done." +} + +post_upgrade() { +  post_install $1 +} + +post_remove() { +  echo -n "Updating desktop and mime database..." +  update-desktop-database +  echo "done." +} + +op=$1 +shift +[ "$(type -t "$op")" = "function" ] && $op "$@" + +# vim:set ts=2 sw=2 et ft=sh: diff --git a/abs/extra-testing/i2c-tools/Makefile.patch b/abs/extra-testing/i2c-tools/Makefile.patch new file mode 100644 index 0000000..f90fa14 --- /dev/null +++ b/abs/extra-testing/i2c-tools/Makefile.patch @@ -0,0 +1,19 @@ +--- Makefile.orig	2007-11-01 18:54:57.000000000 +0100 ++++ Makefile	2008-09-24 14:46:54.000000000 +0200 +@@ -5,7 +5,7 @@ + # Licensed under the GNU General Public License. +  + DESTDIR	= +-prefix	= /usr/local ++prefix	= /usr + bindir	= $(prefix)/bin + sbindir	= $(prefix)/sbin + mandir	= $(prefix)/share/man +@@ -32,6 +32,6 @@ + all: +  + include eeprom/Module.mk +-include include/Module.mk ++#include include/Module.mk + include stub/Module.mk + include tools/Module.mk diff --git a/abs/extra-testing/i2c-tools/PKGBUILD b/abs/extra-testing/i2c-tools/PKGBUILD new file mode 100644 index 0000000..db1700d --- /dev/null +++ b/abs/extra-testing/i2c-tools/PKGBUILD @@ -0,0 +1,21 @@ +# Contributor: DonVla <donvla@users.sourceforge.net> + +pkgname=i2c-tools +pkgver=3.0.2 +pkgrel=1 +pkgdesc="Heterogeneous set of I2C tools for Linux that used to be part of lm-sensors" +arch=('i686' 'x86_64') +url="http://www.lm-sensors.org/wiki/I2CTools" +license=('GPL') +depends=('lm_sensors' 'perl' 'read-edid') +options=(strip) +source=(http://dl.lm-sensors.org/$pkgname/releases/$pkgname-$pkgver.tar.bz2 Makefile.patch) +md5sums=('b546345ac19db56719dea6b8199f11e0' '49d17834f9d7e68407ec46785e47bb94') + +build() { +  cd "$srcdir/$pkgname-$pkgver" +  patch -p0 < $startdir/Makefile.patch +  make || return 1 +  make DESTDIR="$pkgdir" install +} +# vim:set ts=2 sw=2 et: diff --git a/abs/extra-testing/read-edid/PKGBUILD b/abs/extra-testing/read-edid/PKGBUILD new file mode 100644 index 0000000..6e6b0b3 --- /dev/null +++ b/abs/extra-testing/read-edid/PKGBUILD @@ -0,0 +1,20 @@ +# Contributor: Mateusz Herych <heniekk@gmail.com> + +pkgname=read-edid +pkgver=2.0.0 +pkgrel=2 +pkgdesc="Program that can get information from a pnp monitor" +arch=('i686' 'x86_64') +url="http://www.polypux.org/projects/read-edid/" +license=('GPL') +depends=('libx86') +source=(http://www.polypux.org/projects/read-edid/read-edid-$pkgver.tar.gz) +md5sums=('586e7fa1167773b27f4e505edc93274b') + +build() { +	cd $startdir/src/$pkgname-$pkgver +	./configure --prefix=/usr +	make || return 1 +	make DESTDIR=$startdir/pkg install || return 1 + +} diff --git a/abs/extra-testing/vim/PKGBUILD b/abs/extra-testing/vim/PKGBUILD index b54c9ba..d0355fc 100644 --- a/abs/extra-testing/vim/PKGBUILD +++ b/abs/extra-testing/vim/PKGBUILD @@ -3,7 +3,7 @@  pkgname=vim  _srcver=7.2 -_patchlevel=30 +_patchlevel=65  pkgver=${_srcver}.${_patchlevel}  pkgrel=1.5  pkgdesc="a highly configurable, improved version of the vi text editor" diff --git a/abs/mv-core/MythVantage-config/install_functions.sh b/abs/mv-core/MythVantage-config/install_functions.sh index 84f9c94..1d217e9 100755 --- a/abs/mv-core/MythVantage-config/install_functions.sh +++ b/abs/mv-core/MythVantage-config/install_functions.sh @@ -49,9 +49,31 @@ function setupremote {              /usr/sbin/lircd  -d /dev/lirc0          mkdir /root/.mythtv          ln -s /etc/lircrc /root/.mythtv/lircrc +     else +        echo "Couldn't open directory $TEMPLATES/remotes/$Remotetype"      fi  } +function scan_for_hpg_receiver() { +echo "Scanning for Hauppauge receiver" +for hpgid in `lspci -nm  -d4444: |cut -d" " -f6-  |tr -d '"'|tr " " :` +do +    line=`grep $hpgid $TEMPLATES/remotes/i2c.id` +    if [ $? = 0 ] +    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" +        update_db_settings  HostReceiverType $FoundReceiverType +        setupremote +        break +    fi + +done +} +  function scan_for_usb_remote () {  echo "Scanning for usb receiver/remote"  while read line @@ -67,6 +89,7 @@ do          break      fi  done <$BASE/$TEMPLATES/remotes/receiver_usb.id +scan_for_hpg_receiver  }  function rest_of_network () { diff --git a/abs/mv-core/MythVantage-config/myth_user_call b/abs/mv-core/MythVantage-config/myth_user_call index d95e468..0479895 100644 --- a/abs/mv-core/MythVantage-config/myth_user_call +++ b/abs/mv-core/MythVantage-config/myth_user_call @@ -63,7 +63,14 @@ function pass_change() {  function web_security { -    echo "this is just a stub" + +    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  } @@ -155,7 +162,8 @@ case $OPERATION in              then                  print_help              fi -            echo "adding webUSERNAME $USERNAME with $PASS" +            echo "adding webUSERNAME $USERNAME with pass $PASSWORD" +	    web_security              ;;      *)  print_help          ;; diff --git a/abs/mv-core/MythVantage-config/networkconfig.sh b/abs/mv-core/MythVantage-config/networkconfig.sh index 999ccb0..b4ffd5c 100644 --- a/abs/mv-core/MythVantage-config/networkconfig.sh +++ b/abs/mv-core/MythVantage-config/networkconfig.sh @@ -43,6 +43,22 @@ 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" +            sed -i -e 's/^ONBOOT=.*$/ONBOOT=no/g' $ETCNETDIR/$1/options +            sed -i -e 's/^DISABLED=.*$/DISABLED=yes/g' $ETCNETDIR/$1/options +            /sbin/ifconfig $1 down +            ip address flush $1 +    fi + +} +  function setup_interfaces() {    local IS_WIRELESS    local ip @@ -78,9 +94,13 @@ function setup_interfaces() {    TEMPNET=HostGW$1    eval GW=\$${TEMPNET} +  TEMPNET=HOST_iswireless$1 +  eval wireless=\$${TEMPNET} -  if [ $1 = wlan0 -o  $1 = wlan1 ] + + +  if [ x$wireless = x1  ]    then      IS_WIRELESS=TRUE      TEMPNET=HostESSID$1 @@ -106,14 +126,17 @@ function setup_interfaces() {          cp -f  $TEMPLATES/etcnet/eth/options $ETCNETDIR/$1/options      fi -    if [ x$isactive =  x0 ] +    if [  x$isactive =  x1 ]      then -            echo "setting $1 to inactive" -            sed -i -e 's/^ONBOOT=.*$/ONBOOT=no/g' $ETCNETDIR/$1/options - +            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 -            echo "setting $1 to active" -            sed -i -e 's/^ONBOOT=.*$/ONBOOT=yes/g' $ETCNETDIR/$1/options +            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 ] @@ -135,7 +158,7 @@ function setup_interfaces() { -    if [ $UseDHCP = 0 ] +    if [ x$UseDHCP = x0 ]      then              echo using dhcp              sed -i -e 's/^BOOTPROTO=.*$/BOOTPROTO=dhcp/g' $ETCNETDIR/$1/options @@ -164,11 +187,16 @@ 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 { @@ -193,30 +221,25 @@ kill_dhcp  }  function vnc_check() { -    if [ x$RESTART_NETWORK = xfalse ] +    CMDLINE=$(cat /proc/cmdline) +    echo $CMDLINE |grep -q vnc +    USEVNC=$? +    echo $CMDLINE |grep -q nfsroot +     NETBOOT=$? +    echo $USEVNC +    if [ !  x$USEVNC = x0  ]      then -        echo "netboot install or image creating, will not restart network" -        USEVNC=0 -    else -        CMDLINE=$(cat /proc/cmdline) -        echo $CMDLINE |grep -q vnc -        USEVNC=$? -        echo $CMDLINE |grep -q nfsroot -        NETBOOT=$? -        echo $USEVNC -        if [ !  x$USEVNC = x0  ] +        echo "not using vnc" +        if [ !  x$NETBOOT = x0  ]          then -            echo "not using vnc" -            if [ !  x$NETBOOT = x0  ] -            then -                echo "not using netboot" -            else -                echo "using netboot" -                USEVNC=0 -            fi +            echo "not using netboot"          else -            echo " using vnc" +            echo "using netboot" +            USEVNC=0          fi + +    else +        echo " using vnc"      fi  } @@ -234,23 +257,24 @@ function setup_MYTH_vars { -function setup_network { -    setup_MYTH_vars -    setup_hostname -    find_active -}  function start_network {  if [ ! $USEVNC = 0 ]  then -    /etc/net/scripts/network.init restart - +    /etc/net/scripts/network.init reload  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 diff --git a/abs/mv-core/MythVantage-config/systemconfig.sh b/abs/mv-core/MythVantage-config/systemconfig.sh index a038286..5884b69 100755 --- a/abs/mv-core/MythVantage-config/systemconfig.sh +++ b/abs/mv-core/MythVantage-config/systemconfig.sh @@ -21,23 +21,23 @@ postfix=`cat ${BASE}/usr/local/share/mythtv/.releasetype`  PKGBLACKLIST=$BASE/etc/blacklist.package  if [ x$1 = x"Mysql_only" ] -    then -	rm -f /tmp/mysql.txt -        sed -e "s/^DBHostName=.*$/DBHostName=$2/" $TEMPLATES/mysql.txt > /tmp/mysql.txt -        exit 0 -    fi +then +    rm -f /tmp/mysql.txt +    sed -e "s/^DBHostName=.*$/DBHostName=$2/" $TEMPLATES/mysql.txt > /tmp/mysql.txt +    exit 0 +fi  if [ -f /etc/systemconfig ]  then -	. /etc/systemconfig -setup_MYTH_vars -TEMPNET="Hostip"$default_interface -echo $TEMPNET -eval MYTHIP=\$${TEMPNET} +    . /etc/systemconfig +    setup_MYTH_vars +    TEMPNET="Hostip"$default_interface +    echo $TEMPNET +    eval MYTHIP=\$${TEMPNET}  else -	echo "could not find /etc/systemconfig" -	exit 1 +    echo "could not find /etc/systemconfig" +    exit 1  fi @@ -47,60 +47,60 @@ fi  function setupmysql  {  #setup mysql.txt to find the database servers -        if [ $SystemType = "Master_backend" ] -        then -            if [ $MYTHDHCP = 0 ] -            then -                #this grabs eth0, as that is all thats supported. -#                dbhost=`ifconfig  | grep 'inet addr:'| grep -v '127.0.0.1' | cut -d: -f2 | awk '{ print $1}'|head -n1` -                dbhost=`ifconfig  | grep -C1 $default_interface| grep -v $default_interface | cut -d: -f2 | awk '{ print $1}'` -                sed -e "s/^dbhost=.*$/dbhost=\"$dbhost\"/" /etc/systemconfig >/tmp/systemconfig.old -                cp /tmp/systemconfig.old ${BASE}/etc/systemconfig -                ##logic to change master_serverip and backend_serverip  in db -                ${BASE}${MV_ROOT}/bin/restore_default_settings.sh  -c BECONFIG -s master -a $dbhost -            else +if [ $SystemType = "Master_backend" ] +then +    if [ $MYTHDHCP = 0 ] +    then +        #this grabs eth0, as that is all thats supported. +        #                dbhost=`ifconfig  | grep 'inet addr:'| grep -v '127.0.0.1' | cut -d: -f2 | awk '{ print $1}'|head -n1` +        dbhost=`ifconfig  | grep -C1 $default_interface| grep -v $default_interface | cut -d: -f2 | awk '{ print $1}'` +        sed -e "s/^dbhost=.*$/dbhost=\"$dbhost\"/" /etc/systemconfig >/tmp/systemconfig.old +        cp /tmp/systemconfig.old ${BASE}/etc/systemconfig +        ##logic to change master_serverip and backend_serverip  in db +        ${BASE}${MV_ROOT}/bin/restore_default_settings.sh  -c BECONFIG -s master -a $dbhost +    else -                dbhost=$MYTHIP -                sed -e "s/^dbhost=.*$/dbhost=\"$dbhost\"/" /etc/systemconfig >/tmp/systemconfig.old -                cp /tmp/systemconfig.old ${BASE}/etc/systemconfig -                #logic to change dbhost in db -                ${BASE}${MV_ROOT}/bin/restore_default_settings.sh -c BECONFIG -s master -a $dbhost -            fi -        fi +        dbhost=$MYTHIP +        sed -e "s/^dbhost=.*$/dbhost=\"$dbhost\"/" /etc/systemconfig >/tmp/systemconfig.old +        cp /tmp/systemconfig.old ${BASE}/etc/systemconfig +        #logic to change dbhost in db +        ${BASE}${MV_ROOT}/bin/restore_default_settings.sh -c BECONFIG -s master -a $dbhost +    fi +fi -        if [ $SystemType = "Slave_backend" ] -        then -            if [ $MYTHDHCP = 0 ] -            then -                #this grabs eth0, as that is all thats supported. -                #slavehost=`ifconfig  | grep 'inet addr:'| grep -v '127.0.0.1' | cut -d: -f2 | awk '{ print $1}'|head -n1` -                slavehost=`ifconfig  | grep -C1 $default_interface| grep -v $default_interface | cut -d: -f2 | awk '{ print $1}'` -                ##logic to change backend_serverip in db -                ${BASE}${MV_ROOT}/bin/restore_default_settings.sh  -c BECONFIG -s slave  -a $slavehost -            else -                slavehost=$MYTHIP +if [ $SystemType = "Slave_backend" ] +then +    if [ $MYTHDHCP = 0 ] +    then +        #this grabs eth0, as that is all thats supported. +        #slavehost=`ifconfig  | grep 'inet addr:'| grep -v '127.0.0.1' | cut -d: -f2 | awk '{ print $1}'|head -n1` +        slavehost=`ifconfig  | grep -C1 $default_interface| grep -v $default_interface | cut -d: -f2 | awk '{ print $1}'` +        ##logic to change backend_serverip in db +        ${BASE}${MV_ROOT}/bin/restore_default_settings.sh  -c BECONFIG -s slave  -a $slavehost +    else +        slavehost=$MYTHIP -                #logic to change backend_serverif in db -                ${BASE}${MV_ROOT}/bin/restore_default_settings.sh -c BECONFIG -s slave  -a $slavehost -            fi -        fi +        #logic to change backend_serverif in db +        ${BASE}${MV_ROOT}/bin/restore_default_settings.sh -c BECONFIG -s slave  -a $slavehost +    fi +fi -        MYSQLTXT=${BASE}/usr/local/share/mythtv/mysql.txt -        if [ $SystemType = "Standalone" ] -        then -            sed -e "s/^DBHostName=.*$/DBHostName="localhost"/" $TEMPLATES/mysql.txt > $MYSQLTXT -        else -            sed -e "s/^DBHostName=.*$/DBHostName=$dbhost/" $TEMPLATES/mysql.txt > $MYSQLTXT -        fi -        rm ${BASE}/data/home/mythtv/.mythtv/mysql.txt -        rm ${BASE}${MV_ROOT}/bin/mythtv/.mythtv/mysql.txt -        if [ -f ${BASE}/data/home/mythtv/templates/mysql.txt ] -        then -            cp ${BASE}/data/home/mythtv/templates/mysql.txt $MYSQLTXT -        fi +MYSQLTXT=${BASE}/usr/local/share/mythtv/mysql.txt +if [ $SystemType = "Standalone" ] +then +    sed -e "s/^DBHostName=.*$/DBHostName="localhost"/" $TEMPLATES/mysql.txt > $MYSQLTXT +else +    sed -e "s/^DBHostName=.*$/DBHostName=$dbhost/" $TEMPLATES/mysql.txt > $MYSQLTXT +fi +rm ${BASE}/data/home/mythtv/.mythtv/mysql.txt +rm ${BASE}${MV_ROOT}/bin/mythtv/.mythtv/mysql.txt +if [ -f ${BASE}/data/home/mythtv/templates/mysql.txt ] +then +    cp ${BASE}/data/home/mythtv/templates/mysql.txt $MYSQLTXT +fi -        chmod 755 $MYSQLTXT -        chown mythtv $MYSQLTXT +chmod 755 $MYSQLTXT +chown mythtv $MYSQLTXT  } @@ -111,28 +111,28 @@ status=$? -    if [ $SystemType = "Standalone" ] -         then -            sed -ie "s/^#skip-networking/skip-networking/g" $BASE/$MFILE -            if [ $status = 0 ] -            then -                sudo sv restart mysql -	        echo "restarting mysql with   no network" -            fi +if [ $SystemType = "Standalone" ] +then +    sed -ie "s/^#skip-networking/skip-networking/g" $BASE/$MFILE +    if [ $status = 0 ] +    then +        sudo sv restart mysql +        echo "restarting mysql with   no network" +    fi -        fi +fi -    if [ $SystemType = "Master_backend" ] +if [ $SystemType = "Master_backend" ] +then +    sed -ie "s/^skip-networking/#skip-networking/g" $BASE/$MFILE +    if [ $status = 1 ]      then -          sed -ie "s/^skip-networking/#skip-networking/g" $BASE/$MFILE -            if [ $status = 1 ] -            then -                sudo sv restart mysql -		        echo "restarting mysql with network" -            fi - +        sudo sv restart mysql +        echo "restarting mysql with network"      fi +fi +  } @@ -146,102 +146,110 @@ fi  rm ${BASE}/etc/localtime  echo $timezone  ln -s "/usr/share/zoneinfo/$timezone"  ${BASE}/etc/localtime -        sed -e "s~^TIMEZONE=.*$~TIMEZONE=\"${timezone}\"~" ${BASE}/etc/rc.conf > $TEMPLATES/rc.conf +sed -e "s~^TIMEZONE=.*$~TIMEZONE=\"${timezone}\"~" ${BASE}/etc/rc.conf > $TEMPLATES/rc.conf -       # echo CLOCK="UTC" > ${BASE}/etc/conf.dclock -       # echo CLOCK_SYSTOCH="yes" >> ${BASE}/etc/conf.d/clock -       # echo TIMEZONE="$timezone" >> ${BASE}/etc/conf.d/clock +# echo CLOCK="UTC" > ${BASE}/etc/conf.dclock +# echo CLOCK_SYSTOCH="yes" >> ${BASE}/etc/conf.d/clock +# echo TIMEZONE="$timezone" >> ${BASE}/etc/conf.d/clock  cp $TEMPLATES/rc.conf /etc/rc.conf  }  function setupreceiver { -   case $ReceiverType in +case $ReceiverType in      tinker) echo "do nothing" -            ;; +    ;;      Serial) echo "setup serial lirc" -            sed -i -e '/.*#lirc/d' ${BASE}/etc/modules.mythvantage -            echo "lirc_serial   #lirc" >> ${BASE}/etc/modules.mythvantage -            /usr/bin/load-modules-mythvantage.sh -            ;; +    sed -i -e '/.*#lirc/d' ${BASE}/etc/modules.mythvantage +    echo "lirc_serial   #lirc" >> ${BASE}/etc/modules.mythvantage +    /usr/bin/load-modules-mythvantage.sh +    ;;      Usb-imon) echo "setup receiver-usb-imon" -              sed -i -e '/.*#lirc/d' ${BASE}/etc/modules.mythvantage -              echo "lirc_imon     #lirc" >> ${BASE}/etc/modules.mythvantage -              /usr/bin/load-modules-mythvantage.sh -              ;; -           *)   sed -i -e '/.*#lirc/d' ${BASE}/etc/modules.mythvantage -              ;; -    esac +    sed -i -e '/.*#lirc/d' ${BASE}/etc/modules.mythvantage +    echo "lirc_imon     #lirc" >> ${BASE}/etc/modules.mythvantage +    /usr/bin/load-modules-mythvantage.sh +    ;; +    Hauppauge) echo "setup hauppauge reciever (lirc_i2c)" +    sed -i -e '/.*#lirc/d' ${BASE}/etc/modules.mythvantage +    echo "lirc_i2c   #lirc" >> ${BASE}/etc/modules.mythvantage +    cp $TEMPLATES/modules/lirc_i2c.conf ${BASE}/etc/modprobe.d/lirc_i2c.conf +    rmmod lirc_i2c 2>/dev/null +    load-modules-mythvantage.sh +    ;; + +    *)   sed -i -e '/.*#lirc/d' ${BASE}/etc/modules.mythvantage +    ;; +esac  }  function setupremote { -     case $Remotetype in -        no_remote) echo "No remote selected" -                daemon_remove="lircd $daemon_remove" -                ;; -        tinker) echo "Remote in tinker mode" -                ;; -            *)  echo "Setup remote" -                mv ${BASE}/etc/lircd.conf ${BASE}/etc/lircd.conf.`date +%Y-%m-%d-%H-%M` -                cd $TEMPLATES/remotes/$Remotetype -                for i in lircd* -                do -                        cat $i >> ${BASE}/etc/lircd.conf -                done -                cp lircrc ${BASE}/etc/lircrc -                if [ -f $TEMPLATES/LCD/$LCDtype/lircrc ] -                then -                    cat $TEMPLATES/LCD/$LCDtype/lircrc >> /etc/lircrc -                    cat $TEMPLATES/LCD/$LCDtype/lircd.conf >> /etc/lircd.conf -                fi -                if [ -f $TEMPLATES/transmit/$Blastertype/lircd.conf ] -                then -                    cat $TEMPLATES/transmit/$Blastertype/lircd.conf  >> ${BASE}/etc/lircd.conf -                fi -                chmod 755 /etc/lircrc -                daemon_add="lircd $daemon_add" -                sv hup lircd -                ;; +case $Remotetype in +    no_remote) echo "No remote selected" +    daemon_remove="lircd $daemon_remove" +    ;; +    tinker) echo "Remote in tinker mode" +    ;; +    *)  echo "Setup remote" +    mv ${BASE}/etc/lircd.conf ${BASE}/etc/lircd.conf.`date +%Y-%m-%d-%H-%M` +    cd $TEMPLATES/remotes/$Remotetype +    for i in lircd* +    do +        cat $i >> ${BASE}/etc/lircd.conf +    done +    cp lircrc ${BASE}/etc/lircrc +    if [ -f $TEMPLATES/LCD/$LCDtype/lircrc ] +    then +        cat $TEMPLATES/LCD/$LCDtype/lircrc >> /etc/lircrc +        cat $TEMPLATES/LCD/$LCDtype/lircd.conf >> /etc/lircd.conf +    fi +    if [ -f $TEMPLATES/transmit/$Blastertype/lircd.conf ] +    then +        cat $TEMPLATES/transmit/$Blastertype/lircd.conf  >> ${BASE}/etc/lircd.conf +    fi +    chmod 755 /etc/lircrc +    daemon_add="lircd $daemon_add" +    sv hup lircd +    ;;  esac  }  function setupblaster { -        #cd $TEMPLATES/transmit/$Blastertype -        #for i in lircd* -        #do -         #       cat lircd.conf  >> ${BASE}/etc/lircd.conf -        #done -      #  REMOTE_NAME${BASE}/usr/bin/change_chan.sh=`grep name lircd.conf* |awk -F" " ' { print $2 } '` -         sed -e "s/^REMOTE_NAME=.*$/REMOTE_NAME=${Blastertype} /" $TEMPLATES/change_chan.sh > ${BASE}/usr/bin/change_chan.sh -          chmod 755 ${BASE}/usr/bin/change_chan.sh -        #channel change script change -        setupremote +#cd $TEMPLATES/transmit/$Blastertype +#for i in lircd* +#do +#       cat lircd.conf  >> ${BASE}/etc/lircd.conf +#done +#  REMOTE_NAME${BASE}/usr/bin/change_chan.sh=`grep name lircd.conf* |awk -F" " ' { print $2 } '` +sed -e "s/^REMOTE_NAME=.*$/REMOTE_NAME=${Blastertype} /" $TEMPLATES/change_chan.sh > ${BASE}/usr/bin/change_chan.sh +chmod 755 ${BASE}/usr/bin/change_chan.sh +#channel change script change +setupremote  }  function setupevrouter { -    if [  x$UseEvrouter  = x1 ] -    then -        case x$EvrouterConfig in -            xtinker ) -                    echo "do nothing for evrouter" -                    ;; -                x ) echo "empty evrouter" -                    ;; -                * ) echo "setup evrouter for $EvrouterConfig " -                    cp $TEMPLATES/evrouter/$EvrouterConfig /etc/evrouter.cfg -                    daemon_add="evrouter Xvfb $daemon_remove" - -                    ;; -        esac -    else +if [  x$UseEvrouter  = x1 ] +then +    case x$EvrouterConfig in +        xtinker ) +        echo "do nothing for evrouter" +        ;; +        x ) echo "empty evrouter" +        ;; +        * ) echo "setup evrouter for $EvrouterConfig " +        cp $TEMPLATES/evrouter/$EvrouterConfig /etc/evrouter.cfg +        daemon_add="evrouter Xvfb $daemon_remove" + +        ;; +    esac +else      # disable evrouter      daemon_remove="evrouter Xvfb $daemon_remove" -    fi +fi @@ -249,64 +257,64 @@ function setupevrouter {  }  function setupLCD { -   case x$LCDtype in +case x$LCDtype in      xtinker) echo "do nothing" -            ;; +    ;;      xno_lcd) echo "disabling lcd" -            sv down lcdd -            /usr/bin/load-modules-mythvantage.sh  UNLOAD LCD -            sed -i -e '/.*#LCD/d' ${BASE}/etc/modules.mythvantage -            daemon_remove="lcdd $daemon_remove" -            ;; -        x) echo "empty lcd" ;; +    sv down lcdd +    /usr/bin/load-modules-mythvantage.sh  UNLOAD LCD +    sed -i -e '/.*#LCD/d' ${BASE}/etc/modules.mythvantage +    daemon_remove="lcdd $daemon_remove" +    ;; +    x) echo "empty lcd" ;; -         *) echo "setup lcd" -            if [ -f $TEMPLATES/LCD/$LCDtype/modules  ] -            then -              sed -i -e '/.*#LCD/d' ${BASE}/etc/modules.mythvantage -              cat $TEMPLATES/LCD/$LCDtype/modules >> ${BASE}/etc/modules.mythvantage -              #should also modprobe -            fi +    *) echo "setup lcd" +    if [ -f $TEMPLATES/LCD/$LCDtype/modules  ] +    then +        sed -i -e '/.*#LCD/d' ${BASE}/etc/modules.mythvantage +        cat $TEMPLATES/LCD/$LCDtype/modules >> ${BASE}/etc/modules.mythvantage +        #should also modprobe +    fi -            if [ -f $TEMPLATES/LCD/$LCDtype/LCDd.conf ] -            then -                cp -f $TEMPLATES/LCD/$LCDtype/LCDd.conf /etc -               # install="lcdproc $install" -                daemon_add="lcdd $daemon_add" -                /usr/bin/load-modules-mythvantage.sh -                RESTART_FE="true" -                RESTART_LCD="true" -            fi -            #check if lirc capable,if so then call setupremote -            if [ -f $TEMPLATES/LCD/$LCDtype/lircrc ] -            then -                setupremote -            fi -            ;; -    esac +    if [ -f $TEMPLATES/LCD/$LCDtype/LCDd.conf ] +    then +        cp -f $TEMPLATES/LCD/$LCDtype/LCDd.conf /etc +        # install="lcdproc $install" +        daemon_add="lcdd $daemon_add" +        /usr/bin/load-modules-mythvantage.sh +        RESTART_FE="true" +        RESTART_LCD="true" +    fi +    #check if lirc capable,if so then call setupremote +    if [ -f $TEMPLATES/LCD/$LCDtype/lircrc ] +    then +        setupremote +    fi +    ;; +esac  }  function scrubnfs { -	   cp /etc/fstab $TEMPLATES/fstab.conf.template -       grep -v nfs   $TEMPLATES/fstab.conf.template > ${BASE}/etc/fstab +cp /etc/fstab $TEMPLATES/fstab.conf.template +grep -v nfs   $TEMPLATES/fstab.conf.template > ${BASE}/etc/fstab     } -function setupfstab () { -#    	setupfstab $NFSserver $NFSshare $NFSmount -         echo "$1 $2  nfs" >> ${BASE}/etc/fstab -         if [ ! -e "$2" ] -         then -           mkdir -p "$2" -           chown mythtv:mythtv "$2" -         fi -         if [ x$DCONFIG = x  ] -         then -            mount $2 & -        fi +   function setupfstab () { +   #    	setupfstab $NFSserver $NFSshare $NFSmount +   echo "$1 $2  nfs" >> ${BASE}/etc/fstab +   if [ ! -e "$2" ] +   then +       mkdir -p "$2" +       chown mythtv:mythtv "$2" +   fi +   if [ x$DCONFIG = x  ] +   then +       mount $2 & +   fi  } @@ -316,8 +324,8 @@ function setupncidclient  }  function setupnciddaemon { -    cp -f /etc/ncid/ncidd.conf $TEMPLATES/ncidd.conf.template -    sed -e "s/.*set ttyport.*$/set ttyport =  \/dev\/$nciddSerialPort /" $TEMPLATES/ncidd.conf.template >${BASE}/etc/ncid/ncidd.conf +cp -f /etc/ncid/ncidd.conf $TEMPLATES/ncidd.conf.template +sed -e "s/.*set ttyport.*$/set ttyport =  \/dev\/$nciddSerialPort /" $TEMPLATES/ncidd.conf.template >${BASE}/etc/ncid/ncidd.conf  } @@ -337,18 +345,18 @@ restrict 10.0.0.0 mask 255.0.00 nomodify  #servers to sync with  EOF -        #this is used for backend or standlone types -        if [ $1 = "1" ] -                then -                        echo "server ntp1.cs.wisc.edu" >> ${BASE}/etc/ntp.conf -                        echo "server ntp3.sf-bay.org"  >> ${BASE}/etc/ntp.conf -                        echo "restrict ntp1.cs.wisc.edu noquery nomodify" >> ${BASE}/etc/ntp.conf -                        echo "restrict ntp3.sf-bay.org noquery nomodify" >> ${BASE}/etc/ntp.conf +#this is used for backend or standlone types +if [ $1 = "1" ] +then +    echo "server ntp1.cs.wisc.edu" >> ${BASE}/etc/ntp.conf +    echo "server ntp3.sf-bay.org"  >> ${BASE}/etc/ntp.conf +    echo "restrict ntp1.cs.wisc.edu noquery nomodify" >> ${BASE}/etc/ntp.conf +    echo "restrict ntp3.sf-bay.org noquery nomodify" >> ${BASE}/etc/ntp.conf -                else -                        echo "server $dbhost" >> ${BASE}/etc/ntp.conf -                        echo "restrict $dbhost noquery nomodify" >> ${BASE}/etc/ntp.conf -                fi +else +    echo "server $dbhost" >> ${BASE}/etc/ntp.conf +    echo "restrict $dbhost noquery nomodify" >> ${BASE}/etc/ntp.conf +fi  } @@ -360,19 +368,19 @@ pkglistremove=""  #default enabled  for i in mythcontrols mythgallery mythmovietime mythmusic mythsmolt mythvideo  do -eval pkgvalue=\$${i} +    eval pkgvalue=\$${i} -if [ x$pkgvalue = x ] - then -     pkglistinstall="$pkglistinstall $i$postfix" -     else -     if [ x$pkgvalue = x1 ] -     then -         pkglistinstall="$pkglistinstall $i$postfix" -     else -         pkglistremove="$pkglistremove $i$postfix" -     fi - fi +    if [ x$pkgvalue = x ] +    then +        pkglistinstall="$pkglistinstall $i$postfix" +    else +        if [ x$pkgvalue = x1 ] +        then +            pkglistinstall="$pkglistinstall $i$postfix" +        else +            pkglistremove="$pkglistremove $i$postfix" +        fi +    fi @@ -381,38 +389,38 @@ done  #default disabled - for i in mythphone mytharchive mythbrowser mythnews mythgame mythflix mythweather - do -eval pkgvalue=\$${i} - -if [ x$pkgvalue = x ] - then -     pkglistremove="$pkglistremove $i$postfix" -     else -     if [ x$pkgvalue = x1 ] -     then -         pkglistinstall="$pkglistinstall $i$postfix" -     else -         pkglistremove="$pkglistremove $i$postfix" -     fi - fi - done +for i in mythphone mytharchive mythbrowser mythnews mythgame mythflix mythweather +do +    eval pkgvalue=\$${i} + +    if [ x$pkgvalue = x ] +    then +        pkglistremove="$pkglistremove $i$postfix" +    else +        if [ x$pkgvalue = x1 ] +        then +            pkglistinstall="$pkglistinstall $i$postfix" +        else +            pkglistremove="$pkglistremove $i$postfix" +        fi +    fi +done  install="$pkglistinstall $install"  remove="$pkglistremove $remove"  }  function LCDcheck () { - case x$LCDtype in +case x$LCDtype in      xtinker) echo "do nothing lcd " -            ;; +    ;;      xno_lcd) echo "no  lcd " -                       ;; +    ;;      xxosd) install="xosd lcdproc $install" -            ;; -        x) echo "lcd empty " -        ;; - *) -     install="lcdproc $install" +    ;; +    x) echo "lcd empty " +    ;; +    *) +    install="lcdproc $install"      ;;  esac  } @@ -427,164 +435,164 @@ if [ ! -f $PKGBLACKLIST ]  then      touch $PKGBLACKLIST  fi -    for i in $remove -    do +for i in $remove +do      echo "-----------$i --------------"      grep -q $i $PKGBLACKLIST      if [ $? = 1 ]      then          pacman -Q $i 2>/dev/null          #VAR=`pacman -Q $i  2>&1 ` -            if [ $? = 0 ] +        if [ $? = 0 ] +        then +            if [ $i = "mythweb$postfix" ]              then -                    if [ $i = "mythweb$postfix" ] -                    then -                    pacman --noconfirm -R mythweb$postfix -                    echo removed $i -                    else -                    pacman --noconfirm -Rs $i -                    echo removed $i -                    fi +                pacman --noconfirm -R mythweb$postfix +                echo removed $i +            else +                pacman --noconfirm -Rs $i +                echo removed $i              fi +        fi      else          echo "$i is black listed"      fi -    done - # fi +done +# fi -    for i in $install -    do +for i in $install +do      echo "-----------$i --------------"      grep -q $i $PKGBLACKLIST      if [ $? = 1 ]      then -            pacman -Q $i 2>/dev/null -            #VAR=`pacman -Q $i  2>&1 ` -  #            echo $VAR |grep -vq error: +        pacman -Q $i 2>/dev/null +        #VAR=`pacman -Q $i  2>&1 ` +        #            echo $VAR |grep -vq error: -            if [ ! $? = 0 ] -            then -                    pacman --noconfirm -Sf $i -                    echo installed $i -	    else -		    echo "$i already installed" -            fi +        if [ ! $? = 0 ] +        then +            pacman --noconfirm -Sf $i +            echo installed $i +        else +            echo "$i already installed" +        fi      else -      echo "$i is black listed" +        echo "$i is black listed"      fi -    done +done  }  function daemons {  echo "Daemons on boot" -     for i in $daemon_remove -     do -    	   sv check $i 1>/dev/null -            status=$? -	   if [ $status -eq 0 ] -	   then -		sv down $i -	   fi -	        remove_service.sh $i -     done +for i in $daemon_remove +do +    sv check $i 1>/dev/null +    status=$? +    if [ $status -eq 0 ] +    then +        sv down $i +    fi +    remove_service.sh $i +done -    for i in $daemon_add -    do -        sv check $i 1>/dev/null -        status=$? -        add_service.sh $i - -		if [ $status -eq 0 ] -		then -                    case $i in -                        mysql*) sv hup $i -                                        ;; -                        mythback*) sv hup $i -                                        ;; -                        lirc* ) sv hup $i -                                        ;; -                        frontend) sv check frontend 1>/dev/null -                                        ;; - -                        smbd ) sv hup $i -                                        ;; -                        nmbd ) sv hup $i -                                        ;; -                        evrouter) sv restart $i -                                    ;; -                    *)     sv down $i -                            sleep 1 -                            sv up $i -                        ;; -	           esac -                 fi - -        done +for i in $daemon_add +do +    sv check $i 1>/dev/null +    status=$? +    add_service.sh $i + +    if [ $status -eq 0 ] +    then +        case $i in +            mysql*) sv hup $i +            ;; +            mythback*) sv hup $i +            ;; +            lirc* ) sv hup $i +            ;; +            frontend) sv check frontend 1>/dev/null +            ;; + +            smbd ) sv hup $i +            ;; +            nmbd ) sv hup $i +            ;; +            evrouter) sv restart $i +            ;; +            *)     sv down $i +            sleep 1 +            sv up $i +            ;; +        esac +    fi + +done  }  function services  { -ser_install="" -ser_daemon_add="" -ser_remove="" -ser_daemon_remove="" -if [ x$UseEvrouter = x1 ] -then -    ser_daemon_add="evrouter Xvfb $ser_daemon_add" -else -    ser_daemon_remove="evrouter Xvfb $ser_remove" -fi +    ser_install="" +    ser_daemon_add="" +    ser_remove="" +    ser_daemon_remove="" +    if [ x$UseEvrouter = x1 ] +    then +        ser_daemon_add="evrouter Xvfb $ser_daemon_add" +    else +        ser_daemon_remove="evrouter Xvfb $ser_remove" +    fi -if [ x$RunDHCP = x1 ] -then -           ser_daemon_add="dnsmasq  $ser_daemon_add" -           ser_install="dnsmasq mvpmc  $ser_install" +    if [ x$RunDHCP = x1 ] +    then +        ser_daemon_add="dnsmasq  $ser_daemon_add" +        ser_install="dnsmasq mvpmc  $ser_install" -else -           ser_daemon_remove="dnsmasq  $ser_daemon_remove" -           ser_remove="dnsmasq mvpmc  $ser_remove" -fi +    else +        ser_daemon_remove="dnsmasq  $ser_daemon_remove" +        ser_remove="dnsmasq mvpmc  $ser_remove" +    fi -if [ x$RunFrontend = x1 ] -then -           ser_daemon_add="frontend hal ghosd  $ser_daemon_add" -           ser_install="ghosd $ser_install" -           showX=true - else -           ser_daemon_remove="frontend hal  $ser_daemon_remove" -           ser_remove="$ser_remove" - fi - -if [ x$UseMythWEB = x1 ] -then -            ser_install="lighttpd  mythweb$postfix $ser_install" -            ser_daemon_add="lighttpd $ser_daemon_add" - else -           ser_remove="mythweb$postfix $ser_remove" -           ser_daemon_remove="$ser_daemon_remove" - fi - -#samba -if [ x$UseSamba = x1 ] -then +    if [ x$RunFrontend = x1 ] +    then +        ser_daemon_add="frontend hal ghosd  $ser_daemon_add" +        ser_install="ghosd $ser_install" +        showX=true +    else +        ser_daemon_remove="frontend hal  $ser_daemon_remove" +        ser_remove="$ser_remove" +    fi + +    if [ x$UseMythWEB = x1 ] +    then +        ser_install="lighttpd  mythweb$postfix $ser_install" +        ser_daemon_add="lighttpd $ser_daemon_add" +    else +        ser_remove="mythweb$postfix $ser_remove" +        ser_daemon_remove="$ser_daemon_remove" +    fi + +    #samba +    if [ x$UseSamba = x1 ] +    then          ser_install="samba $ser_install"          ser_daemon_add="nmbd smbd $ser_daemon_add "          if [ x$Samba_mediareadonly = x1 ] -            then -                smreadonly="no" -                else -                smreadonly="yes" +        then +            smreadonly="no" +        else +            smreadonly="yes"          fi          if [ x$Samba_homereadonly = x1 ] -            then -                shreadonly="no" -                else -                shreadonly="yes" +        then +            shreadonly="no" +        else +            shreadonly="yes"          fi          if [ ! -d ${BASE}/etc/samba ] @@ -597,7 +605,7 @@ then              install -D -m755  ${BASE}/data/home/mythtv/templates/smb.conf   ${BASE}/etc/samba/smb.conf          else              sed -e "s/^.*workgroup =.*$/ workgroup = $Samba_domain/g " \ -                -e "s/^.*server string = .*$/ server string = $hostname/g" $TEMPLATES/samba/smb.conf.template > ${BASE}/etc/samba/smb.conf +            -e "s/^.*server string = .*$/ server string = $hostname/g" $TEMPLATES/samba/smb.conf.template > ${BASE}/etc/samba/smb.conf              if [ x$Samba_media = "x1" ]              then @@ -613,57 +621,62 @@ then              fi          fi -else +    else          ser_remove="samba $ser_remove"          ser_install="smbclient $ser_install"          ser_daemon_remove="smbd nmbd  $ser_daemon_remove" -fi +    fi -if [ x$UseNFS = x1 ] -then -      ser_install="nfs-utils portmap $ser_install" -      ser_daemon_add="nfsd nfslock portmap $ser_daemon_add" -       sed -e "s/REPLACEME/*/g" $TEMPLATES/exports.template > ${BASE}/etc/exports +    if [ x$UseNFS = x1 ] +    then +        ser_install="nfs-utils portmap $ser_install" +        ser_daemon_add="nfsd nfslock portmap $ser_daemon_add" +        sed -e "s/REPLACEME/*/g" $TEMPLATES/exports.template > ${BASE}/etc/exports -else -      ser_remove="$ser_remove" -      ser_daemon_remove="nfsd nfslock  $ser_daemon_remove" -fi +    else +        ser_remove="$ser_remove" +        ser_daemon_remove="nfsd nfslock  $ser_daemon_remove" +    fi -if [ x$Runncidd = x1 ] -then -           ser_daemon_add="ncidd ncid $ser_daemon_add" -           ser_install="ncid $ser_install" -  else -           ser_daemon_remove="ncidd ncid $ser_daemon_remove" -           ser_remove="ncid $ser_remove" - fi - -#Setting the default, just to avoid the or statement.. -if [ x$UseHobbit = x ] -then -    UseHobbit=1 -fi +    if [ x$Runncidd = x1 ] +    then +        ser_daemon_add="ncidd ncid $ser_daemon_add" +        ser_install="ncid $ser_install" +    else +        ser_daemon_remove="ncidd ncid $ser_daemon_remove" +        ser_remove="ncid $ser_remove" +    fi +    if [ x$UseEvrouter = x1 ] +    then +        ser_install="evrouter Xvfb $ser_install" +    else +        ser_remove="evrouter $ser_remove" +    fi +    #Setting the default, just to avoid the or statement.. +    if [ x$UseHobbit = x ] +    then +        UseHobbit=1 +    fi -if [ x$UseHobbit = x1 ] -then -    case $SystemType in -        Standalone|Master_backend ) -           ser_daemon_add="hobbit $ser_daemon_add" -           ser_install="hobbitserver $ser_install" -        ;; +    if [ x$UseHobbit = x1 ] +    then +        case $SystemType in +            Standalone|Master_backend ) +            ser_daemon_add="hobbit $ser_daemon_add" +            ser_install="hobbitserver $ser_install" +            ;; -        *)   ser_daemon_add="hobbit-client $ser_daemon_add" -              ser_install="hobbit-client $ser_install" -        ;; +            *)   ser_daemon_add="hobbit-client $ser_daemon_add" +            ser_install="hobbit-client $ser_install" +            ;;          esac -else -           ser_daemon_remove="hobbit hobbit-client $ser_daemon_remove" -           ser_remove="hobbit-client hobbitserver $ser_remove" -            rm -f /data/srv/httpd/htdocs/hobbit/index.html +    else +        ser_daemon_remove="hobbit hobbit-client $ser_daemon_remove" +        ser_remove="hobbit-client hobbitserver $ser_remove" +        rm -f /data/srv/httpd/htdocs/hobbit/index.html - fi +    fi @@ -700,42 +713,42 @@ fi  function setuppacman () {  #setup link to httpd dir  echo "Configuring pacman" -  if [ ! x$1 = x ] +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 -        ln -s ${BASE}/data/var ${BASE}/data/srv/httpd/htdocs/repo -        echo "creating the link for the pacman repo mirror" +        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 -    for i in mv-core mv-core-testing mv-extra mv-extra-testing -    do -        echo "[$i]"  > ${BASE}/etc/pacman.d/$i -        #add mirror if needed -        if [ x$PKG_MIRROR = x1 ] -        then -            echo " Server = http://$dbhost/repo/$i " >> ${BASE}/etc/pacman.d/$i -        fi -        #add user templates -        USERTEMPLATES="/data/home/mythtv/templates" -        if [ -f $USERTEMPLATES/sources/$i ] -        then -             echo "Adding user  $i" -            cat $USERTEMPLATES/sources/$i  >> ${BASE}/etc/pacman.d/$i -        fi -        cat $TEMPLATES/sources/$i  >> ${BASE}/etc/pacman.d/$i -        echo "setting local mirror to $dbhost for $i " -    done - -     #sed -e "s/REPLACEME/$dbhost/g"  $TEMPLATES/sources/svc_pkg > /etc/pacman.d/svc_pkg +#sed -e "s/REPLACEME/$dbhost/g"  $TEMPLATES/sources/svc_pkg > /etc/pacman.d/svc_pkg  }  function setupzipcode () { -    if [ ! x$zipcode = x ] -    then -        ${MV_ROOT}/bin/restore_default_settings.sh -c ZIP  -z $zipcode -    fi +if [ ! x$zipcode = x ] +then +    ${MV_ROOT}/bin/restore_default_settings.sh -c ZIP  -z $zipcode +fi  }  function process_nfsmap () { @@ -754,58 +767,58 @@ then          fi      fi  else -        mv -f /tmp/nfsmap /tmp/nfsmap.old -        wget -O /tmp/nfsmap http://$1:1337/templates/nfsmap -        if [ $? = 0 ] -        then -            NFSMAP="/tmp/nfsmap" -        fi +    mv -f /tmp/nfsmap /tmp/nfsmap.old +    wget -O /tmp/nfsmap http://$1:1337/templates/nfsmap +    if [ $? = 0 ] +    then +        NFSMAP="/tmp/nfsmap" +    fi  fi -    if [ -f $NFSMAP ] -    then -        #read in file -        while read line -        do -            NFSserver=`echo "$line"|cut -d" " -f1` -            NFSmount=`echo "$line"|cut  -d" " -f2` -            setupfstab $NFSserver $NFSmount -        done <$NFSMAP -    else -        echo "couldn't find nfsmap" +if [ -f $NFSMAP ] +then +    #read in file +    while read line +    do +        NFSserver=`echo "$line"|cut -d" " -f1` +        NFSmount=`echo "$line"|cut  -d" " -f2` +        setupfstab $NFSserver $NFSmount +    done <$NFSMAP +else +    echo "couldn't find nfsmap" -    fi +fi  }  function setupcnfs () { -     scrubnfs -        if [ $HaveCentralNFS = "yes" ] -	then -            case x$NFSserver in -                xfile:nfsmap ) -                                process_nfsmap noip -                                ;; -               *:nfsmap ) -                                nfsmapip=`echo "$NFSserver" | cut -d: -f1 ` -                                process_nfsmap $nfsmapip -                                ;; -                *)  setupfstab $NFSserver $NFSmount -                esac - -	    #if [ ! x"$NFSserver" = "xfile:nfsmap" ] -            #then -            #    setupfstab $NFSserver $NFSmount -            #else -            #    process_nfsmap -            #fi -        else -            echo "fe_nfs" -            #if no central nfs found, then use the mbe. -            if [ $SystemType = "Frontend_only" ] -            then -                setupfstab ${dbhost}:/data/media /data/media -            fi -	fi +scrubnfs +if [ $HaveCentralNFS = "yes" ] +then +    case x$NFSserver in +        xfile:nfsmap ) +        process_nfsmap noip +        ;; +        *:nfsmap ) +        nfsmapip=`echo "$NFSserver" | cut -d: -f1 ` +        process_nfsmap $nfsmapip +        ;; +        *)  setupfstab $NFSserver $NFSmount +    esac + +    #if [ ! x"$NFSserver" = "xfile:nfsmap" ] +    #then +    #    setupfstab $NFSserver $NFSmount +    #else +    #    process_nfsmap +    #fi +else +    echo "fe_nfs" +    #if no central nfs found, then use the mbe. +    if [ $SystemType = "Frontend_only" ] +    then +        setupfstab ${dbhost}:/data/media /data/media +    fi +fi  } @@ -861,32 +874,32 @@ if [ x$RunDHCP = x1   ]  then      echo "DNSMASQ setup" -#set default route to my GW -COMMAND="%s/^dhcp-option=3.*$/dhcp-option=3,${route}/" -ex ${BASE}/etc/dnsmasq.conf <<EOF -:$COMMAND -:wq -EOF - -#setup dns to my ip -COMMAND="%s/^dhcp-option=6.*$/dhcp-option=6,${MYTHIP}/" -ex ${BASE}/etc/dnsmasq.conf <<EOF -:$COMMAND -:wq -EOF - - -#change nfsroot to my ip -COMMAND="%s/nfsroot=.*:/nfsroot=${MYTHIP}:/" -ex ${BASE}/data/srv/tftp/pxelinux.cfg/default <<EOF -:$COMMAND -:wq -EOF - -#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 -        echo "nameserver $nameserver" >> ${BASE}/etc/resolv.conf +    #set default route to my GW +    COMMAND="%s/^dhcp-option=3.*$/dhcp-option=3,${route}/" +    ex ${BASE}/etc/dnsmasq.conf <<EOF +    :$COMMAND +    :wq +    EOF + +    #setup dns to my ip +    COMMAND="%s/^dhcp-option=6.*$/dhcp-option=6,${MYTHIP}/" +    ex ${BASE}/etc/dnsmasq.conf <<EOF +    :$COMMAND +    :wq +    EOF + + +    #change nfsroot to my ip +    COMMAND="%s/nfsroot=.*:/nfsroot=${MYTHIP}:/" +    ex ${BASE}/data/srv/tftp/pxelinux.cfg/default <<EOF +    :$COMMAND +    :wq +    EOF + +    #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 +    echo "nameserver $nameserver" >> ${BASE}/etc/resolv.conf  fi  #setup dongle.config @@ -903,23 +916,23 @@ EOF  }  function reloadfe(){ -   PID=`ps -ef |grep mythfrontend|grep -v grep |awk  '{print $2 }'` -   /usr/bin/backend_control.sh  clearcache  behost $dbhost -   if [ x$RESTART_LCD = xtrue ] -   then +PID=`ps -ef |grep mythfrontend|grep -v grep |awk  '{print $2 }'` +/usr/bin/backend_control.sh  clearcache  behost $dbhost +if [ x$RESTART_LCD = xtrue ] +then      killall -9 mythlcdserver -   fi -   kill -s USR1 $PID +fi +kill -s USR1 $PID  }  function setup_db (){ -            install="mysql avahli" -            daemon_add="mysql" -            packages -            daemons +install="mysql avahli" +daemon_add="mysql" +packages +daemons  status=1  mysqlstatus=1  while [ ! $status = 0  ] @@ -930,7 +943,7 @@ do      mysqlstatus=$?      if [ $mysqlstatus = 0 ]      then -   	mysql -e "show databases;" +        mysql -e "show databases;"          showstatus=$?          if [ $showstatus = 0 ]          then @@ -944,17 +957,29 @@ do              #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 ] -	   then -	    pacman --noconfirm -R webcalendar -            pacman --noconfirm --nodeps  -S webcalendar -	    status=0 -	   fi -   	fi +            if [ -d /data/srv/mysql/mythconverg ] +            then +                pacman --noconfirm -R webcalendar +                pacman --noconfirm --nodeps  -S webcalendar +                status=0 +            fi +        fi      fi  done  } +function setup_web_auth { +    if [ x$UseMythWEB_auth = x1 ] +    then +        #enable auth +        sed -ie "s/^.*include.*auth-inc.conf.*$/include \"\/etc\/lighttpd\/auth-inc.conf\"/g" /etc/lighttpd/lighttpd.conf +    else +         #disable auth +        sed -ie "s/^.*include.*auth-inc.conf.*$/#include \"\/etc\/lighttpd\/auth-inc.conf\"/g" /etc/lighttpd/lighttpd.conf +    fi +    sudo sv restart lighttpd + +}  #----------------------------------------------------MAIN PROGRAM-------------------------------------------  #misc,sleep,hostype,advanced,audio @@ -965,45 +990,47 @@ hosttypechange="false"  for i in  $LIST -  do -   echo $i -   case $i in -	   misc) showmisc="true" -	   	;; -	  sleep) showsleep="true" -		;; -	  hostype) showhost="true" -                      showX="true" -	  	;; -         hostypec) hosttypechange="true" -                ;; -	 advanced) showadvanced="true" -                      #showhost="true" -		;; -	audio) showaudio="true" -		;; -	network) shownetwork="true" -		;; -    advancedX)  showX="true" -      ;; -    restartfe)  killall -9 mythfrontend -                    killall -9 mythwelcome -                    exit 0 -    ;; -    reloadfe)  reloadfe -            ;; +do +    echo $i +    case $i in +        misc) showmisc="true" +        ;; +        sleep) showsleep="true" +        ;; +        hostype) showhost="true" +        showX="true" +        ;; +        hostypec) hosttypechange="true" +        ;; +        advanced) showadvanced="true" +        #showhost="true" +        ;; +        audio) showaudio="true" +        ;; +        network) shownetwork="true" +        ;; +        advancedX)  showX="true" +        ;; +	webuser)  setup_web_auth +        ;; +        restartfe)  killall -9 mythfrontend +        killall -9 mythwelcome +        exit 0 +        ;; +        reloadfe)  reloadfe +        ;; -    this_is_install) MV_NEW_INSTALL="true" -		;; -    NETINSTALL) RESTART_NETWORK="false" -                NET_INSTALL="true" +        this_is_install) MV_NEW_INSTALL="true" +        ;; +        NETINSTALL) RESTART_NETWORK="false" +        NET_INSTALL="true" -	esac -  done +    esac +done  if [ x$MV_NEW_INSTALL = xtrue ]  then -	hosttypechange="false" +    hosttypechange="false"  fi @@ -1032,96 +1059,97 @@ then      setup_network      vnc_check      if [   x$USEVNC = x1  ] -        then -            echo "reloading network" -            ${BASE}/etc/net/scripts/network.init reload -        else -            echo "netboot/vnc, will not restart network" -        fi +    then +        echo "reloading network" +        ${BASE}/etc/net/scripts/network.init reload +        ${BASE}/etc/net/scripts/network.init restart +    else +        echo "netboot/vnc, will not restart network" +    fi  fi  if [ x$showhost = "xtrue" ]  then -case $SystemType in -    Standalone) -            setupntp 1 -            services -            if [ x$hosttypechange = "xtrue" ] -            then -             setup_db -            fi -            if [ -f   ${BASE}/etc/avahi/services/mysql.service     ] -            then -                        rm -f ${BASE}/etc/avahi/services/mysql.service -                        sudo sv restart avahi -            fi +    case $SystemType in +        Standalone) +        setupntp 1 +        services +        if [ x$hosttypechange = "xtrue" ] +        then +            setup_db +        fi +        if [ -f   ${BASE}/etc/avahi/services/mysql.service     ] +        then +            rm -f ${BASE}/etc/avahi/services/mysql.service +            sudo sv restart avahi +        fi -            install="lighttpd mysql mythdb-initial  avahli  myth2ipod mythtv-status  portmap local-website webcalendar  php $ser_install" -            remove="none $ser_remove" +        install="lighttpd mysql mythdb-initial  avahli  myth2ipod mythtv-status  portmap local-website webcalendar  php $ser_install" +        remove="none $ser_remove" -            daemon_add="lighttpd mysql  mythbackend  avahi portmap $ser_daemon_add" -            daemon_remove="none $ser_daemon_remove" +        daemon_add="lighttpd mysql  mythbackend  avahi portmap $ser_daemon_add" +        daemon_remove="none $ser_daemon_remove" -    ;; -   Master_backend) -            setupntp 1 -            services +        ;; +        Master_backend) +        setupntp 1 +        services -            if [  !  -f   ${BASE}/etc/avahi/services/mysql.service     ] -            then -                        mkdir  ${BASE}/etc/avahi/services -                        cp $TEMPLATES/mysql.service  ${BASE}/etc/avahi/services/mysql.service -                        sudo sv restart  avahi -            fi +        if [  !  -f   ${BASE}/etc/avahi/services/mysql.service     ] +        then +            mkdir  ${BASE}/etc/avahi/services +            cp $TEMPLATES/mysql.service  ${BASE}/etc/avahi/services/mysql.service +            sudo sv restart  avahi +        fi -            install="lighttpd  local-website mysql  mythdb-initial webcalendar   php avahi portmap myth2ipod mythtv-status func $ser_install  " -            remove="$ser_remove" +        install="lighttpd  local-website mysql  mythdb-initial webcalendar   php avahi portmap myth2ipod mythtv-status func $ser_install  " +        remove="$ser_remove" -            daemon_add="lighttpd mysql mythbackend  avahi   portmap certmaster $ser_daemon_add" -            daemon_remove="$ser_daemon_remove" -    ;; -    Slave_backend) -            setupntp 0 -            services -            if [ x$hosttypechange = "xtrue" ] -            then -             setup_db -            fi -            if [    -f   ${BASE}/etc/avahi/services/mysql.service     ] -            then -                        rm -f ${BASE}/etc/avahi/services/mysql.service -                        sudo sv restart  avahi -            fi +        daemon_add="lighttpd mysql mythbackend  avahi   portmap certmaster $ser_daemon_add" +        daemon_remove="$ser_daemon_remove" +        ;; +        Slave_backend) +        setupntp 0 +        services +        if [ x$hosttypechange = "xtrue" ] +        then +            setup_db +        fi +        if [    -f   ${BASE}/etc/avahi/services/mysql.service     ] +        then +            rm -f ${BASE}/etc/avahi/services/mysql.service +            sudo sv restart  avahi +        fi -            #cp $TEMPLATES/mysql.service  ${BASE}/etc/avahi/services/mysql.service -            install="mysql  avahi func $ser_install  " -            remove=" $ser_remove" +        #cp $TEMPLATES/mysql.service  ${BASE}/etc/avahi/services/mysql.service +        install="mysql  avahi func $ser_install  " +        remove=" $ser_remove" -            daemon_add="mythbackend avahi portmap  mythtv-status  funcd $ser_daemon_add" -            daemon_remove="$ser_daemon_remove" -    ;; -    Frontend_only) +        daemon_add="mythbackend avahi portmap  mythtv-status  funcd $ser_daemon_add" +        daemon_remove="$ser_daemon_remove" +        ;; +        Frontend_only)          #Add values for services          setupntp 0          services          if [  -f   ${BASE}/etc/avahi/services/mysql.service     ] -            then -                        rm -f ${BASE}/etc/avahi/services/mysql.service -                        sudo sv restart  avahi -            fi +        then +            rm -f ${BASE}/etc/avahi/services/mysql.service +            sudo sv restart  avahi +        fi          install="libmysqlclient mysql-clients portmap avahi func  $ser_install"          remove="mysql local-website lighttpd php mythweb$postfix $ser_remove"          daemon_add="avahi portmap funcd $ser_daemon_add "          daemon_remove="mysql lighttpd  mythbackend  $ser_daemon_remove" -   ;; +        ;; -esac -setupSyslog -setupfuncminion +    esac +    setupSyslog +    setupfuncminion  fi  #apply these to ALL types @@ -1144,7 +1172,7 @@ fi  if [ x$showaudio = "xtrue" ]  then -	#setupsoundtype +    #setupsoundtype      if [ ! x$Audiotype = xtinker  ]      then          ${MV_ROOT}/bin/soundconfig.sh -t real -i $Audiotype -d $SoundDevice @@ -1158,15 +1186,15 @@ packages  if [ x$showmisc = "xtrue" ]  then -	setupzipcode -	settimezone +    setupzipcode +    settimezone      setupcnfs  fi  #sleep  if [ x$showsleep = "xtrue" ]  then -	setupsleep +    setupsleep  fi  if [ x$showX = "xtrue" ] @@ -1190,10 +1218,10 @@ then          if [ x$SystemType = xMaster_backend ]          then              setuppacman link -            else +        else              setuppacman          fi -     fi +    fi      setupncidclient      setupnciddaemon      setupbootsplash @@ -1222,34 +1250,34 @@ fi  case $SystemType in      Standalone)  smoltsystem=6 -                     MVRELEASE="$MVRELEASE  (Standalone)" -                    ;; -   Master_backend) -            if [ x$RunFrontend = x1 ] -            then -                smoltsystem=2 -                MVRELEASE="$MVRELEASE  (MBE with Frontend)" -            else -                smoltsystem=1 -                MVRELEASE="$MVRELEASE  (MBE)" -            fi -            ;; -   Slave_backend) -            if [ x$RunFrontend = x1 ] -            then -                smoltsystem=5 -                MVRELEASE="$MVRELEASE  (SLAVE  with Frontend)" -            else -                smoltsystem=5 -                MVRELEASE="$MVRELEASE  (SLAVE)" -            fi -            ;; -     Frontend_only) -          smoltsystem=3 -          MVRELEASE="$MVRELEASE  ( Frontend only)" -            ;; +    MVRELEASE="$MVRELEASE  (Standalone)" +    ;; +    Master_backend) +    if [ x$RunFrontend = x1 ] +    then +        smoltsystem=2 +        MVRELEASE="$MVRELEASE  (MBE with Frontend)" +    else +        smoltsystem=1 +        MVRELEASE="$MVRELEASE  (MBE)" +    fi +    ;; +    Slave_backend) +    if [ x$RunFrontend = x1 ] +    then +        smoltsystem=5 +        MVRELEASE="$MVRELEASE  (SLAVE  with Frontend)" +    else +        smoltsystem=5 +        MVRELEASE="$MVRELEASE  (SLAVE)" +    fi +    ;; +    Frontend_only) +    smoltsystem=3 +    MVRELEASE="$MVRELEASE  ( Frontend only)" +    ;;  esac  echo $MVRELEASE > /etc/os_myth_release -echo "systemtype=$smoltsystem" > /data/home/mythtv/.mythtv/smolt.info -echo "remote=$Remotetype" >> /data/home/mythtv/.mythtv/smolt.info +echo "systemtype=$smoltsystem" > /data/home/mythtv/.mythtv/smolt.info 2>/dev/null +echo "remote=$Remotetype" >> /data/home/mythtv/.mythtv/smolt.info 2>/dev/null diff --git a/abs/mv-core/MythVantage-config/templates/modules/lirc_i2c.conf b/abs/mv-core/MythVantage-config/templates/modules/lirc_i2c.conf new file mode 100644 index 0000000..7b99f78 --- /dev/null +++ b/abs/mv-core/MythVantage-config/templates/modules/lirc_i2c.conf @@ -0,0 +1,2 @@ +alias char-major-61 lirc_i2c +options lirc_i2c debug=0 minor=3	 diff --git a/abs/mv-core/MythVantage-config/templates/remotes/i2c.id b/abs/mv-core/MythVantage-config/templates/remotes/i2c.id new file mode 100644 index 0000000..50e89e9 --- /dev/null +++ b/abs/mv-core/MythVantage-config/templates/remotes/i2c.id @@ -0,0 +1,5 @@ +0070:4000|Hauppauge|WinTV PVR 250|hauppauge-grey +0070:4009|Hauppauge|WinTV PVR 250|hauppauge-grey +0070:4801|Hauppauge|WinTV PVR 250|hauppauge-grey +0070:4803|Hauppauge|WinTV PVR 250|hauppauge-grey +0070:0003|Hauppauge|WinTV PVR 250|hauppauge-grey
\ No newline at end of file diff --git a/abs/mv-core/runit-scripts-mv/runitscripts/services/evrouter/finish b/abs/mv-core/runit-scripts-mv/runitscripts/services/evrouter/finish index 0dd33de..5ebda4c 100755 --- a/abs/mv-core/runit-scripts-mv/runitscripts/services/evrouter/finish +++ b/abs/mv-core/runit-scripts-mv/runitscripts/services/evrouter/finish @@ -1,4 +1,10 @@  #!/bin/bash  . /etc/profile -DISPLAY=localhost:50 evrouter -q  -rm -rf /tmp/.evrouter* +which evrouter >/dev/null 2>/dev/null +if [ $? = 0 ] +then +	DISPLAY=localhost:50 evrouter -q  +	rm -rf /tmp/.evrouter* +else +	sv down evrouter +fi
\ No newline at end of file diff --git a/abs/mv-core/runit-scripts-mv/runitscripts/services/evrouter/run b/abs/mv-core/runit-scripts-mv/runitscripts/services/evrouter/run index 1d7389a..5697f6f 100755 --- a/abs/mv-core/runit-scripts-mv/runitscripts/services/evrouter/run +++ b/abs/mv-core/runit-scripts-mv/runitscripts/services/evrouter/run @@ -1,5 +1,13 @@  #!/bin/bash  . /etc/profile -sv start Xvfb -su mythtv -c "DISPLAY=localhost:50 evrouter -c /etc/evrouter.cfg -f /dev/input/event*" +which evrouter >/dev/null 2>/dev/null +if [ $? = 0 ] +then +	ps -ef |grep -v grep|grep -q "Xvfb :50" +	if [ ! $?  = 0 ] +	then +		sv start Xvfb +	fi +	su mythtv -c "DISPLAY=localhost:50 evrouter -c /etc/evrouter.cfg -f /dev/input/event*" +fi diff --git a/abs/mv-core/runit-scripts-mv/runitscripts/services/evrouter/supervise/lock b/abs/mv-core/runit-scripts-mv/runitscripts/services/evrouter/supervise/lock deleted file mode 100644 index e69de29..0000000 --- a/abs/mv-core/runit-scripts-mv/runitscripts/services/evrouter/supervise/lock +++ /dev/null diff --git a/abs/mv-core/runit-scripts-mv/runitscripts/services/evrouter/supervise/pid b/abs/mv-core/runit-scripts-mv/runitscripts/services/evrouter/supervise/pid deleted file mode 100644 index e69de29..0000000 --- a/abs/mv-core/runit-scripts-mv/runitscripts/services/evrouter/supervise/pid +++ /dev/null diff --git a/abs/mv-core/runit-scripts-mv/runitscripts/services/evrouter/supervise/stat b/abs/mv-core/runit-scripts-mv/runitscripts/services/evrouter/supervise/stat deleted file mode 100644 index eb0e904..0000000 --- a/abs/mv-core/runit-scripts-mv/runitscripts/services/evrouter/supervise/stat +++ /dev/null @@ -1 +0,0 @@ -down diff --git a/abs/mv-core/runit-scripts-mv/runitscripts/services/evrouter/supervise/status b/abs/mv-core/runit-scripts-mv/runitscripts/services/evrouter/supervise/statusBinary files differ deleted file mode 100644 index 742989c..0000000 --- a/abs/mv-core/runit-scripts-mv/runitscripts/services/evrouter/supervise/status +++ /dev/null diff --git a/abs/mv-core/runit-scripts-mv/runitscripts/services/lircd/run b/abs/mv-core/runit-scripts-mv/runitscripts/services/lircd/run index 0adfdc1..ceda8db 100755 --- a/abs/mv-core/runit-scripts-mv/runitscripts/services/lircd/run +++ b/abs/mv-core/runit-scripts-mv/runitscripts/services/lircd/run @@ -7,7 +7,7 @@ run_lircd2=false  function dvico_detect { -  if [ x$Remotetype = "dvico" ] +  if [ x$Remotetype = "xdvico" ]    then                  DEVICE="/dev/usb/hiddev0"    fi @@ -33,7 +33,9 @@ case $ReceiverType in  	Usb-imon)  		DEVICE=/dev/lirc_imon	  	;; - +    Hauppauge) +        DEVICE=/dev/lirc3 +        ;;  	*)   		DEVICE=`ls  /dev/lirc[0-9] 2>/dev/null |sort |sed '/./,$!d'|head -n 1 ` diff --git a/abs/mv-core/runit-scripts-mv/runitscripts/services/ncid/finish b/abs/mv-core/runit-scripts-mv/runitscripts/services/ncid/finish new file mode 100644 index 0000000..953a4a1 --- /dev/null +++ b/abs/mv-core/runit-scripts-mv/runitscripts/services/ncid/finish @@ -0,0 +1,9 @@ +#!/bin/bash +exec 2>&1 +which ncid 2>/dev/null >/dev/null +if [ ! $?  = 0 ] +then +	sv down ncid +fi + + diff --git a/abs/mv-core/runit-scripts-mv/runitscripts/services/ncid/run b/abs/mv-core/runit-scripts-mv/runitscripts/services/ncid/run index 8a90707..7dbc8ba 100755 --- a/abs/mv-core/runit-scripts-mv/runitscripts/services/ncid/run +++ b/abs/mv-core/runit-scripts-mv/runitscripts/services/ncid/run @@ -1,5 +1,12 @@  #!/bin/sh  exec 2>&1 -sv start ncidd -exec /usr/bin/ncid --no-gui --all  --call-prog --program /usr/bin/ncid.py 127.0.0.1 3333 +which ncid 2>/dev/null >/dev/null +if [ $? = 0 ] +then +	if [ -f /var/service/ncidd/run ] +	then +		sv start ncidd +	fi +	exec /usr/bin/ncid --no-gui --all  --call-prog --program /usr/bin/ncid.py 127.0.0.1 3333 +fi diff --git a/abs/mv-core/runit-scripts-mv/runitscripts/services/ncidd/finish b/abs/mv-core/runit-scripts-mv/runitscripts/services/ncidd/finish new file mode 100644 index 0000000..ab39d39 --- /dev/null +++ b/abs/mv-core/runit-scripts-mv/runitscripts/services/ncidd/finish @@ -0,0 +1,9 @@ +#!/bin/bash +exec 2>&1 +which ncidd 2>/dev/null >/dev/null +if [ ! $?  = 0 ] +then +	sv down ncid +fi + + diff --git a/abs/mv-core/runit-scripts-mv/runitscripts/services/ncidd/run b/abs/mv-core/runit-scripts-mv/runitscripts/services/ncidd/run index 6b032db..f1c710a 100755 --- a/abs/mv-core/runit-scripts-mv/runitscripts/services/ncidd/run +++ b/abs/mv-core/runit-scripts-mv/runitscripts/services/ncidd/run @@ -1,3 +1,7 @@  #!/bin/sh  exec 2>&1 -exec /usr/sbin/ncidd -D 2>&1  +which ncidd > /dev/null 2>/dev/null +if [ $? = 0 ] +then +	exec /usr/sbin/ncidd -D 2>&1  +fi | 
