From d4be7b0a8bfe01b81dce9db9475f74454116ec3a Mon Sep 17 00:00:00 2001 From: James Meyer Date: Wed, 3 Dec 2008 13:34:40 -0600 Subject: make workgroup the default for smb. Also changed the templates to match linhes layout. --- abs/core-testing/LinHES-config/PKGBUILD | 2 +- abs/core-testing/LinHES-config/templates/samba/smb.conf.home | 2 +- abs/core-testing/LinHES-config/templates/samba/smb.conf.media | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/abs/core-testing/LinHES-config/PKGBUILD b/abs/core-testing/LinHES-config/PKGBUILD index 706dc4c..075c061 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=63 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/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 -- cgit v0.12 From 39b7f8d9aae573403092951a83a08afe206a557b Mon Sep 17 00:00:00 2001 From: James Meyer Date: Thu, 4 Dec 2008 09:06:22 -0600 Subject: update vi and add gvim --- abs/core-testing/vi/PKGBUILD | 2 +- abs/extra-testing/gvim/PKGBUILD | 83 +++++++++++++++++++++++++++++++++ abs/extra-testing/gvim/fetch_patches.sh | 60 ++++++++++++++++++++++++ abs/extra-testing/gvim/gvim.desktop | 42 +++++++++++++++++ abs/extra-testing/gvim/gvim.install | 24 ++++++++++ abs/extra-testing/vim/PKGBUILD | 2 +- 6 files changed, 211 insertions(+), 2 deletions(-) create mode 100644 abs/extra-testing/gvim/PKGBUILD create mode 100644 abs/extra-testing/gvim/fetch_patches.sh create mode 100644 abs/extra-testing/gvim/gvim.desktop create mode 100644 abs/extra-testing/gvim/gvim.install 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/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" -- cgit v0.12 From 46cf7f52515f3c0dd412f94118839082d24fde53 Mon Sep 17 00:00:00 2001 From: James Meyer Date: Thu, 4 Dec 2008 15:19:55 -0600 Subject: Don't eject the cd if VMWARE is used or if the boot device is not a CD drive. Also introduce a 10 second timer before retracting the CD. REF FS#30 --- abs/core-testing/linhes-live/PKGBUILD | 2 +- abs/core-testing/linhes-live/etc/live-shutdown | 45 +++++++++++++++++++---- abs/core-testing/linhes-live/etc/rc.shutdown-live | 2 +- 3 files changed, 40 insertions(+), 9 deletions(-) diff --git a/abs/core-testing/linhes-live/PKGBUILD b/abs/core-testing/linhes-live/PKGBUILD index 2052781..158d141 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=11 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..3df4802 100644 --- a/abs/core-testing/linhes-live/etc/live-shutdown +++ b/abs/core-testing/linhes-live/etc/live-shutdown @@ -37,13 +37,44 @@ 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. 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 -- cgit v0.12 From 79ddaba300b4887c9610732c1e2aac7361cbcee5 Mon Sep 17 00:00:00 2001 From: James Meyer Date: Thu, 4 Dec 2008 15:30:00 -0600 Subject: remove some debugging statements --- abs/core-testing/sysvinit/PKGBUILD | 2 +- abs/core-testing/sysvinit/halt-init.patch | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) 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; + -- cgit v0.12 From 2a27ce5cb2650c001e276a7c44efb445d00fc2c6 Mon Sep 17 00:00:00 2001 From: James Meyer Date: Thu, 4 Dec 2008 17:53:04 -0600 Subject: nvidia beta drivers --- .../nvidia-beta/NVIDIA_kernel-169.12-2286310.diff | 637 +++++++++++++++++++++ abs/core-testing/nvidia-beta/PKGBUILD | 39 ++ abs/core-testing/nvidia-beta/nvidia.install | 22 + abs/core-testing/nvidia-utils-beta/PKGBUILD | 69 +++ abs/core-testing/nvidia-utils-beta/nvidia.install | 40 ++ .../nvidia-utils-beta/supported-cards.txt | 292 ++++++++++ 6 files changed, 1099 insertions(+) create mode 100644 abs/core-testing/nvidia-beta/NVIDIA_kernel-169.12-2286310.diff create mode 100644 abs/core-testing/nvidia-beta/PKGBUILD create mode 100644 abs/core-testing/nvidia-beta/nvidia.install create mode 100644 abs/core-testing/nvidia-utils-beta/PKGBUILD create mode 100644 abs/core-testing/nvidia-utils-beta/nvidia.install create mode 100644 abs/core-testing/nvidia-utils-beta/supported-cards.txt 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 ++ #include ++ 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 + #include + 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..4f2171b --- /dev/null +++ b/abs/core-testing/nvidia-beta/PKGBUILD @@ -0,0 +1,39 @@ +# $Id: PKGBUILD 8443 2008-08-11 05:11:22Z tpowa $ +# Maintainer : Thomas Baechler + +pkgname=nvidia-beta +pkgver=180.06 +_kernver='2.6.26-ARCH' +pkgrel=3 +pkgdesc="NVIDIA drivers for kernel26." +arch=('i686' 'x86_64') +[ "$CARCH" = "i686" ] && ARCH=x86 +[ "$CARCH" = "x86_64" ] && ARCH=x86_64 +url="http://www.nvidia.com/" +depends=('kernel26>=2.6.26.2-1' 'kernel26<2.6.27' 'nvidia-utils-beta') +conflicts=('nvida' 'nvidia-96xx' 'nvidia-71xx' 'nvidia-legacy') +license=('custom') +install=nvidia.install +source=(http://us.download.nvidia.com/XFree86/Linux-$ARCH/${pkgver}/NVIDIA-Linux-$ARCH-${pkgver}-pkg1.run) + +[ "$CARCH" = "x86_64" ] && md5sums=('8675e4ca65033b343c8c77b2ce82e71d') + +build() +{ + # Extract + cd $startdir/src/ + sh NVIDIA-Linux-$ARCH-${pkgver}-pkg1.run --extract-only + cd NVIDIA-Linux-$ARCH-${pkgver}-pkg1 + + # Any extra patches are applied in here... + + cd usr/src/nv/ + ln -s Makefile.kbuild Makefile + make SYSSRC=/lib/modules/${_kernver}/build module || return 1 + + # 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 +} 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..47b434f --- /dev/null +++ b/abs/core-testing/nvidia-utils-beta/PKGBUILD @@ -0,0 +1,69 @@ +# $Id: PKGBUILD 7914 2008-08-05 08:01:00Z tpowa $ +# Maintainer: Thomas Baechler +# Contributor: James Rayner + +pkgname=nvidia-utils-beta +pkgver=180.06 +pkgrel=5 +pkgdesc="NVIDIA drivers utilities and libraries." +arch=('i686' 'x86_64') +[ "$CARCH" = "i686" ] && ARCH=x86 +[ "$CARCH" = "x86_64" ] && ARCH=x86_64 +url="http://www.nvidia.com/" +depends=('xorg-server') +conflicts=('libgl' 'libgl-dri' 'ati-fglrx-utils' 'nvidia-legacy-utils' \ + 'nvidia-71xx-utils' 'nvidia-96xx-utils' 'nvidia-utils' ) +provides=('libgl') +license=('custom') +install=nvidia.install +source=(http://us.download.nvidia.com/XFree86/Linux-${ARCH}/${pkgver}/NVIDIA-Linux-${ARCH}-${pkgver}-pkg1.run \ + supported-cards.txt) + +[ "$CARCH" = "x86_64" ] && md5sums=('8675e4ca65033b343c8c77b2ce82e71d' + 'bf8d68d66757096c3ab17653230bf2a8') + +options=(docs !strip) + +build() +{ + # override nvida install routine and do it the long way. + cd $startdir/src/ + sh NVIDIA-Linux-${ARCH}-${pkgver}-pkg1.run --extract-only + cd NVIDIA-Linux-${ARCH}-${pkgver}-pkg1/usr/ + + 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/ + + 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}-pkg1/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}-pkg1/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 {} \; + # phew :) +} 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 -- cgit v0.12 From e2267985e694d71802f8eab1a972c73cd7134e01 Mon Sep 17 00:00:00 2001 From: James Meyer Date: Thu, 4 Dec 2008 18:49:16 -0600 Subject: install the new headers --- abs/core-testing/nvidia-utils-beta/PKGBUILD | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/abs/core-testing/nvidia-utils-beta/PKGBUILD b/abs/core-testing/nvidia-utils-beta/PKGBUILD index 47b434f..956ae3b 100644 --- a/abs/core-testing/nvidia-utils-beta/PKGBUILD +++ b/abs/core-testing/nvidia-utils-beta/PKGBUILD @@ -4,7 +4,7 @@ pkgname=nvidia-utils-beta pkgver=180.06 -pkgrel=5 +pkgrel=10 pkgdesc="NVIDIA drivers utilities and libraries." arch=('i686' 'x86_64') [ "$CARCH" = "i686" ] && ARCH=x86 @@ -31,10 +31,11 @@ build() sh NVIDIA-Linux-${ARCH}-${pkgver}-pkg1.run --extract-only cd NVIDIA-Linux-${ARCH}-${pkgver}-pkg1/usr/ - mkdir -p $startdir/pkg/usr/{lib,bin,share/applications,share/pixmaps,man/man1} + mkdir -p $startdir/pkg/usr/{include/cuda,include/vdpau,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 -- cgit v0.12 From bb56c3fdc679c5c0f893da54047950ef3f593160 Mon Sep 17 00:00:00 2001 From: James Meyer Date: Thu, 4 Dec 2008 19:36:14 -0600 Subject: use the beta pkg from AUR --- abs/core-testing/nvidia-beta/PKGBUILD | 41 ++++++++++++++------------- abs/core-testing/nvidia-utils-beta/PKGBUILD | 43 ++++++++++++++--------------- abs/core-testing/nvidia/PKGBUILD | 2 +- 3 files changed, 41 insertions(+), 45 deletions(-) diff --git a/abs/core-testing/nvidia-beta/PKGBUILD b/abs/core-testing/nvidia-beta/PKGBUILD index 4f2171b..e822996 100644 --- a/abs/core-testing/nvidia-beta/PKGBUILD +++ b/abs/core-testing/nvidia-beta/PKGBUILD @@ -1,39 +1,38 @@ -# $Id: PKGBUILD 8443 2008-08-11 05:11:22Z tpowa $ -# Maintainer : Thomas Baechler - pkgname=nvidia-beta -pkgver=180.06 +pkgver=180.11 _kernver='2.6.26-ARCH' -pkgrel=3 -pkgdesc="NVIDIA drivers for kernel26." -arch=('i686' 'x86_64') -[ "$CARCH" = "i686" ] && ARCH=x86 -[ "$CARCH" = "x86_64" ] && ARCH=x86_64 -url="http://www.nvidia.com/" -depends=('kernel26>=2.6.26.2-1' 'kernel26<2.6.27' 'nvidia-utils-beta') -conflicts=('nvida' 'nvidia-96xx' 'nvidia-71xx' 'nvidia-legacy') -license=('custom') -install=nvidia.install -source=(http://us.download.nvidia.com/XFree86/Linux-$ARCH/${pkgver}/NVIDIA-Linux-$ARCH-${pkgver}-pkg1.run) - -[ "$CARCH" = "x86_64" ] && md5sums=('8675e4ca65033b343c8c77b2ce82e71d') +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}-pkg1.run --extract-only - cd NVIDIA-Linux-$ARCH-${pkgver}-pkg1 + 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 || return 1 + 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-utils-beta/PKGBUILD b/abs/core-testing/nvidia-utils-beta/PKGBUILD index 956ae3b..e0dd0df 100644 --- a/abs/core-testing/nvidia-utils-beta/PKGBUILD +++ b/abs/core-testing/nvidia-utils-beta/PKGBUILD @@ -1,37 +1,35 @@ -# $Id: PKGBUILD 7914 2008-08-05 08:01:00Z tpowa $ -# Maintainer: Thomas Baechler -# Contributor: James Rayner - pkgname=nvidia-utils-beta -pkgver=180.06 -pkgrel=10 -pkgdesc="NVIDIA drivers utilities and libraries." +pkgver=180.11 +pkgrel=1 +pkgdesc="NVIDIA beta drivers utilities and libraries." +provides=('nvidia-utils' 'libgl') arch=('i686' 'x86_64') -[ "$CARCH" = "i686" ] && ARCH=x86 -[ "$CARCH" = "x86_64" ] && ARCH=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' 'nvidia-utils' ) -provides=('libgl') + 'nvidia-71xx-utils' 'nvidia-96xx-utils') license=('custom') install=nvidia.install -source=(http://us.download.nvidia.com/XFree86/Linux-${ARCH}/${pkgver}/NVIDIA-Linux-${ARCH}-${pkgver}-pkg1.run \ - supported-cards.txt) - -[ "$CARCH" = "x86_64" ] && md5sums=('8675e4ca65033b343c8c77b2ce82e71d' - 'bf8d68d66757096c3ab17653230bf2a8') +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}-pkg1.run --extract-only - cd NVIDIA-Linux-${ARCH}-${pkgver}-pkg1/usr/ - + 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 @@ -45,7 +43,7 @@ build() # 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/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 @@ -60,11 +58,10 @@ build() 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}-pkg1/LICENSE $startdir/pkg/usr/share/licenses/nvidia/ || 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}-pkg1/usr/share/doc/README.txt $startdir/pkg/usr/share/doc/nvidia/README || 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 {} \; - # phew :) } 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 -- cgit v0.12 From 9c63001e5eb322bf73aed1541884027f422ff480 Mon Sep 17 00:00:00 2001 From: James Meyer Date: Fri, 5 Dec 2008 12:06:28 -0600 Subject: preload seq command. --- abs/core-testing/linhes-live/PKGBUILD | 2 +- abs/core-testing/linhes-live/etc/live-shutdown | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/abs/core-testing/linhes-live/PKGBUILD b/abs/core-testing/linhes-live/PKGBUILD index 158d141..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=11 +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 3df4802..6e12d22 100644 --- a/abs/core-testing/linhes-live/etc/live-shutdown +++ b/abs/core-testing/linhes-live/etc/live-shutdown @@ -79,6 +79,7 @@ f_remountro () } #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 -- cgit v0.12 From 0cc1080dee0c081423deffca0884193011ea399b Mon Sep 17 00:00:00 2001 From: James Meyer Date: Fri, 5 Dec 2008 13:17:48 -0600 Subject: add better error checking for the init scripts ncidd/xvfb/evrouter --- abs/core-testing/LinHES-config/PKGBUILD | 2 +- abs/core-testing/LinHES-config/systemconfig.sh | 8 ++++++++ abs/core-testing/runit-scripts/PKGBUILD | 2 +- .../runit-scripts/runitscripts/services/evrouter/finish | 10 ++++++++-- .../runit-scripts/runitscripts/services/evrouter/run | 12 ++++++++++-- .../runit-scripts/runitscripts/services/ncid/finish | 9 +++++++++ .../runit-scripts/runitscripts/services/ncid/run | 11 +++++++++-- .../runit-scripts/runitscripts/services/ncidd/finish | 9 +++++++++ .../runit-scripts/runitscripts/services/ncidd/run | 6 +++++- abs/mv-core/MythVantage-config/systemconfig.sh | 7 ++++++- .../runit-scripts-mv/runitscripts/services/evrouter/finish | 10 ++++++++-- .../runit-scripts-mv/runitscripts/services/evrouter/run | 12 ++++++++++-- .../runitscripts/services/evrouter/supervise/lock | 0 .../runitscripts/services/evrouter/supervise/pid | 0 .../runitscripts/services/evrouter/supervise/stat | 1 - .../runitscripts/services/evrouter/supervise/status | Bin 20 -> 0 bytes .../runit-scripts-mv/runitscripts/services/ncid/finish | 9 +++++++++ .../runit-scripts-mv/runitscripts/services/ncid/run | 11 +++++++++-- .../runit-scripts-mv/runitscripts/services/ncidd/finish | 9 +++++++++ .../runit-scripts-mv/runitscripts/services/ncidd/run | 6 +++++- 20 files changed, 116 insertions(+), 18 deletions(-) create mode 100644 abs/core-testing/runit-scripts/runitscripts/services/ncid/finish create mode 100644 abs/core-testing/runit-scripts/runitscripts/services/ncidd/finish delete mode 100644 abs/mv-core/runit-scripts-mv/runitscripts/services/evrouter/supervise/lock delete mode 100644 abs/mv-core/runit-scripts-mv/runitscripts/services/evrouter/supervise/pid delete mode 100644 abs/mv-core/runit-scripts-mv/runitscripts/services/evrouter/supervise/stat delete mode 100644 abs/mv-core/runit-scripts-mv/runitscripts/services/evrouter/supervise/status create mode 100644 abs/mv-core/runit-scripts-mv/runitscripts/services/ncid/finish create mode 100644 abs/mv-core/runit-scripts-mv/runitscripts/services/ncidd/finish diff --git a/abs/core-testing/LinHES-config/PKGBUILD b/abs/core-testing/LinHES-config/PKGBUILD index 075c061..144d96e 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=63 +pkgrel=65 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/systemconfig.sh b/abs/core-testing/LinHES-config/systemconfig.sh index 6c72b92..90405a7 100755 --- a/abs/core-testing/LinHES-config/systemconfig.sh +++ b/abs/core-testing/LinHES-config/systemconfig.sh @@ -658,6 +658,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 diff --git a/abs/core-testing/runit-scripts/PKGBUILD b/abs/core-testing/runit-scripts/PKGBUILD index 3792572..6df1bae 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=18 pkgdesc="collection of startup scripts for runit" url="http://smarden.org/runit/" license="BSD" 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/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/mv-core/MythVantage-config/systemconfig.sh b/abs/mv-core/MythVantage-config/systemconfig.sh index a038286..3fbf9b1 100755 --- a/abs/mv-core/MythVantage-config/systemconfig.sh +++ b/abs/mv-core/MythVantage-config/systemconfig.sh @@ -639,7 +639,12 @@ then 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 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 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 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/status deleted file mode 100644 index 742989c..0000000 Binary files a/abs/mv-core/runit-scripts-mv/runitscripts/services/evrouter/supervise/status and /dev/null differ 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 -- cgit v0.12 From 3211a5b7d8ddb4c7871f844036c366108ee57ef3 Mon Sep 17 00:00:00 2001 From: James Meyer Date: Sat, 6 Dec 2008 18:10:17 -0600 Subject: adding i2c-tools and read-edid --- abs/core-testing/read-edid-2.0.0.tar.gz | Bin 0 -> 82282 bytes abs/extra-testing/i2c-tools/Makefile.patch | 19 +++++++++++++++++++ abs/extra-testing/i2c-tools/PKGBUILD | 21 +++++++++++++++++++++ abs/extra-testing/read-edid/PKGBUILD | 20 ++++++++++++++++++++ 4 files changed, 60 insertions(+) create mode 100644 abs/core-testing/read-edid-2.0.0.tar.gz create mode 100644 abs/extra-testing/i2c-tools/Makefile.patch create mode 100644 abs/extra-testing/i2c-tools/PKGBUILD create mode 100644 abs/extra-testing/read-edid/PKGBUILD diff --git a/abs/core-testing/read-edid-2.0.0.tar.gz b/abs/core-testing/read-edid-2.0.0.tar.gz new file mode 100644 index 0000000..9160c9d Binary files /dev/null and b/abs/core-testing/read-edid-2.0.0.tar.gz differ 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 + +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 + +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 + +} -- cgit v0.12 From 2ce20c77e0e643b5d60ef0dff4d689bb5a05f656 Mon Sep 17 00:00:00 2001 From: James Meyer Date: Sat, 6 Dec 2008 18:39:49 -0600 Subject: Add support for Autodetection of Hauppauge pvr-250 receivers. This should work but I don't have a pvr-250 receiver anymore so can't fully test it. If PVR-250 is found then the old Hauppauge remote is assumed to be in use. Detection first checks for USB receivers, if no receiver is found it then checks for Hauppauge receivers. First found remote wins, so if a USB receiver is found the Hauppauge detection is never run. Oddly enough I never wanted to use a Hauppauage receiver again, but somehow I spent most of the adding support for it. --- abs/core-testing/LinHES-config/PKGBUILD | 2 +- .../LinHES-config/install_functions.sh | 37 +- abs/core-testing/LinHES-config/systemconfig.sh | 19 +- .../LinHES-config/templates/modules/lirc_i2c.conf | 2 + .../templates/remotes/hauppauge-grey/lircd.conf | 199 +++ .../templates/remotes/hauppauge-grey/lircrc | 505 ++++++++ .../templates/remotes/hauppauge-grey/preview.jpg | Bin 0 -> 45763 bytes .../LinHES-config/templates/remotes/i2c.id | 5 + abs/core-testing/LinHES-system/PKGBUILD | 4 +- .../LinHES-system/load-modules-mythvantage.sh | 32 + abs/core-testing/runit-scripts/PKGBUILD | 2 +- abs/core-testing/runit-scripts/runitscripts/1 | 2 +- .../runit-scripts/runitscripts/services/lircd/run | 4 +- .../MythVantage-config/install_functions.sh | 23 + abs/mv-core/MythVantage-config/systemconfig.sh | 1318 ++++++++++---------- .../templates/modules/lirc_i2c.conf | 2 + .../MythVantage-config/templates/remotes/i2c.id | 5 + .../runitscripts/services/lircd/run | 6 +- 18 files changed, 1494 insertions(+), 673 deletions(-) create mode 100644 abs/core-testing/LinHES-config/templates/modules/lirc_i2c.conf create mode 100644 abs/core-testing/LinHES-config/templates/remotes/hauppauge-grey/lircd.conf create mode 100644 abs/core-testing/LinHES-config/templates/remotes/hauppauge-grey/lircrc create mode 100644 abs/core-testing/LinHES-config/templates/remotes/hauppauge-grey/preview.jpg create mode 100644 abs/core-testing/LinHES-config/templates/remotes/i2c.id create mode 100755 abs/core-testing/LinHES-system/load-modules-mythvantage.sh create mode 100644 abs/mv-core/MythVantage-config/templates/modules/lirc_i2c.conf create mode 100644 abs/mv-core/MythVantage-config/templates/remotes/i2c.id diff --git a/abs/core-testing/LinHES-config/PKGBUILD b/abs/core-testing/LinHES-config/PKGBUILD index 144d96e..07ccda7 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=65 +pkgrel=84 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/systemconfig.sh b/abs/core-testing/LinHES-config/systemconfig.sh index 90405a7..05dfd89 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 @@ -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 @@ -1277,6 +1284,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 +# +# 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.jpg new file mode 100644 index 0000000..a40a1e8 Binary files /dev/null and b/abs/core-testing/LinHES-config/templates/remotes/hauppauge-grey/preview.jpg differ 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-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/runit-scripts/PKGBUILD b/abs/core-testing/runit-scripts/PKGBUILD index 6df1bae..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=18 +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/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/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/systemconfig.sh b/abs/mv-core/MythVantage-config/systemconfig.sh index 3fbf9b1..4885f5a 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,62 +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 -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$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 @@ -705,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 () { @@ -759,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 } @@ -866,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 < ${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 < ${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 @@ -908,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 ] @@ -935,7 +943,7 @@ do mysqlstatus=$? if [ $mysqlstatus = 0 ] then - mysql -e "show databases;" + mysql -e "show databases;" showstatus=$? if [ $showstatus = 0 ] then @@ -949,13 +957,13 @@ 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 } @@ -970,45 +978,45 @@ 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" + ;; + 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 @@ -1037,96 +1045,96 @@ 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 + 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 @@ -1149,7 +1157,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 @@ -1163,15 +1171,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" ] @@ -1195,10 +1203,10 @@ then if [ x$SystemType = xMaster_backend ] then setuppacman link - else + else setuppacman fi - fi + fi setupncidclient setupnciddaemon setupbootsplash @@ -1227,34 +1235,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/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 ` -- cgit v0.12 From f7db724accbaa234c839a7147e79e1cef47c6772 Mon Sep 17 00:00:00 2001 From: James Meyer Date: Sun, 7 Dec 2008 12:40:53 -0600 Subject: bump version to 6.00.04 --- abs/core-testing/LinHES-config/LinHES-release | 2 +- abs/core-testing/LinHES-config/PKGBUILD | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/abs/core-testing/LinHES-config/LinHES-release b/abs/core-testing/LinHES-config/LinHES-release index cb5516d..0e9e72b 100644 --- a/abs/core-testing/LinHES-config/LinHES-release +++ b/abs/core-testing/LinHES-config/LinHES-release @@ -1 +1 @@ -LinHES R6.00.03 +LinHES R6.00.04 diff --git a/abs/core-testing/LinHES-config/PKGBUILD b/abs/core-testing/LinHES-config/PKGBUILD index 07ccda7..f9d2aae 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=84 +pkgrel=85 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 ) -- cgit v0.12 From 8203006cf9ee68a8e33e30d48ea6b396d1a7b7e4 Mon Sep 17 00:00:00 2001 From: James Meyer Date: Tue, 9 Dec 2008 15:15:29 -0600 Subject: Initial checkin for mythtv-trunk builds --- .../DeviceReadBuffer-polltimeout.2.patch | 219 +++++++ abs/core-testing/mythtv/trunk/mythtv-svn/PKGBUILD | 78 +++ .../mythtv/trunk/mythtv-svn/aacdecoder.cpp.patch | 12 + .../trunk/mythtv-svn/hdpvr-v4lchannel-tweak.patch | 139 +++++ .../trunk/mythtv-svn/menu-xml/HOST_SETTINGS.xml | 87 +++ .../mythtv/trunk/mythtv-svn/menu-xml/is.xml | 33 ++ .../mythtv/trunk/mythtv-svn/menu-xml/knoppmyth.xml | 55 ++ .../trunk/mythtv-svn/menu-xml/library.xml.patch | 13 + .../trunk/mythtv-svn/menu-xml/mainmenu.xml.patch | 16 + .../mythtv/trunk/mythtv-svn/menu-xml/motion.xml | 20 + .../mythtv-svn/menu-xml/optical_menu.xml.patch | 15 + .../mythtv/trunk/mythtv-svn/menu-xml/setup.xml | 111 ++++ .../trunk/mythtv-svn/menu-xml/siriusmenu.xml | 419 +++++++++++++ .../mythtv/trunk/mythtv-svn/menu-xml/xmmenu.xml | 574 ++++++++++++++++++ .../trunk/mythtv-svn/mpegrecorder-hdpvr-v1.1.patch | 658 +++++++++++++++++++++ abs/core-testing/mythtv/trunk/mythtv-svn/myth.sh | 4 + .../mythtv/trunk/mythtv-svn/mythbackend | 37 ++ .../mythtv/trunk/mythtv-svn/mythbackend.sh | 117 ++++ .../trunk/mythtv-svn/mythcommflag-avidemux.2.patch | 179 ++++++ .../mythtv/trunk/mythtv-svn/mythtv.install | 55 ++ .../patches/DeviceReadBuffer-polltimeout.2.patch | 219 +++++++ .../trunk/mythtv-svn/patches/aacdecoder.cpp.patch | 12 + .../patches/hdpvr-v4lchannel-tweak.patch | 139 +++++ .../patches/mpegrecorder-hdpvr-v1.1.patch | 658 +++++++++++++++++++++ .../patches/mythcommflag-avidemux.2.patch | 179 ++++++ .../mythtv/trunk/mythtv-svn/smolt_jump.patch | 30 + .../trunk/mythtv-svn/svn_main_menu_popup.patch | 211 +++++++ 27 files changed, 4289 insertions(+) create mode 100644 abs/core-testing/mythtv/trunk/mythtv-svn/DeviceReadBuffer-polltimeout.2.patch create mode 100755 abs/core-testing/mythtv/trunk/mythtv-svn/PKGBUILD create mode 100644 abs/core-testing/mythtv/trunk/mythtv-svn/aacdecoder.cpp.patch create mode 100644 abs/core-testing/mythtv/trunk/mythtv-svn/hdpvr-v4lchannel-tweak.patch create mode 100644 abs/core-testing/mythtv/trunk/mythtv-svn/menu-xml/HOST_SETTINGS.xml create mode 100644 abs/core-testing/mythtv/trunk/mythtv-svn/menu-xml/is.xml create mode 100644 abs/core-testing/mythtv/trunk/mythtv-svn/menu-xml/knoppmyth.xml create mode 100644 abs/core-testing/mythtv/trunk/mythtv-svn/menu-xml/library.xml.patch create mode 100644 abs/core-testing/mythtv/trunk/mythtv-svn/menu-xml/mainmenu.xml.patch create mode 100644 abs/core-testing/mythtv/trunk/mythtv-svn/menu-xml/motion.xml create mode 100644 abs/core-testing/mythtv/trunk/mythtv-svn/menu-xml/optical_menu.xml.patch create mode 100644 abs/core-testing/mythtv/trunk/mythtv-svn/menu-xml/setup.xml create mode 100644 abs/core-testing/mythtv/trunk/mythtv-svn/menu-xml/siriusmenu.xml create mode 100644 abs/core-testing/mythtv/trunk/mythtv-svn/menu-xml/xmmenu.xml create mode 100644 abs/core-testing/mythtv/trunk/mythtv-svn/mpegrecorder-hdpvr-v1.1.patch create mode 100755 abs/core-testing/mythtv/trunk/mythtv-svn/myth.sh create mode 100755 abs/core-testing/mythtv/trunk/mythtv-svn/mythbackend create mode 100755 abs/core-testing/mythtv/trunk/mythtv-svn/mythbackend.sh create mode 100644 abs/core-testing/mythtv/trunk/mythtv-svn/mythcommflag-avidemux.2.patch create mode 100755 abs/core-testing/mythtv/trunk/mythtv-svn/mythtv.install create mode 100644 abs/core-testing/mythtv/trunk/mythtv-svn/patches/DeviceReadBuffer-polltimeout.2.patch create mode 100644 abs/core-testing/mythtv/trunk/mythtv-svn/patches/aacdecoder.cpp.patch create mode 100644 abs/core-testing/mythtv/trunk/mythtv-svn/patches/hdpvr-v4lchannel-tweak.patch create mode 100644 abs/core-testing/mythtv/trunk/mythtv-svn/patches/mpegrecorder-hdpvr-v1.1.patch create mode 100644 abs/core-testing/mythtv/trunk/mythtv-svn/patches/mythcommflag-avidemux.2.patch create mode 100644 abs/core-testing/mythtv/trunk/mythtv-svn/smolt_jump.patch create mode 100644 abs/core-testing/mythtv/trunk/mythtv-svn/svn_main_menu_popup.patch 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 + 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 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 @@ + + + + + + + + + + + + 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 @@ + + + + + + + + + + + + + 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 @@ + + + + ++ ++ ++ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 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 + #include + #include ++#include + + // 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(&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 +# With thanks to Stu Tomlinson +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +# Default values to use if none are supplied in the config file. +# User who should start the mythbackend processes +MBE_USER="root" +# Directory holding the mythbackend binary +MBE_LOCATION="/usr/local/bin/" +# Name of mythbackend binary +MBE_PROG="mythbackend" +# Full path to mythbackend log file +MBE_LOGFILE="/var/log/mythtv/mythbackend.log" + +# Source function library. +. /etc/init.d/functions + +# Source config file if available +if [ -f "/etc/sysconfig/mythbackend" ]; then + . /etc/sysconfig/mythbackend +fi + +test -x ${MBE_LOCATION}${MBE_PROG} || exit 0 + +RETVAL=0 + +# +# See how we were called. +# + +start() { + # Check if mythbackend is already running + if [ ! -f /var/lock/subsys/${MBE_PROG} ]; then + echo -n "Starting ${MBE_PROG}: " + # /usr/local/bin/mythbackend -d -l /some/log/file + #daemon --user ${MBE_USER} ${MBE_LOCATION}${MBE_PROG} -d -l ${MBE_LOGFILE} + ${MBE_LOCATION}${MBE_PROG} -d -l ${MBE_LOGFILE} + RETVAL=$? + [ $RETVAL -eq 0 ] && touch /var/lock/subsys/${MBE_PROG} + echo + fi + return $RETVAL +} + +stop() { + echo -n "Stopping ${MBE_PROG}: " + killproc ${MBE_LOCATION}${MBE_PROG} + RETVAL=$? + [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/${MBE_PROG} + echo + return $RETVAL +} + + +restart() { + stop + start +} + +reload() { + restart +} + +status_at() { + status ${MBE_LOCATION}${MBE_PROG} +} + +case "$1" in +start) + start + ;; +stop) + stop + ;; +reload|restart) + restart + ;; +condrestart) + if [ -f /var/lock/subsys/${MBE_PROG} ]; then + restart + fi + ;; +status) + status_at + ;; +*) + echo "Usage: $0 {start|stop|restart|condrestart|status}" + exit 1 +esac + +exit $? +exit $RETVAL diff --git a/abs/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 cutlist; ++ QMap::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 &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 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 + 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 + #include + #include ++#include + + // 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(&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 cutlist; ++ QMap::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 &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 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(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. + * -- cgit v0.12 From f77e676cfc7f6919fa6a4145180899afd4ad1fd6 Mon Sep 17 00:00:00 2001 From: James Meyer Date: Tue, 9 Dec 2008 19:41:05 -0600 Subject: Connect various pieces to dd password protection to /mythweb. Disabled by default. --- abs/core-testing/LinHES-config/PKGBUILD | 2 +- abs/core-testing/LinHES-config/myth_user_call | 14 +++++++++++--- abs/core-testing/LinHES-config/systemconfig.sh | 18 ++++++++++++++++-- abs/core-testing/lighttpd/PKGBUILD | 7 ++++--- abs/core-testing/lighttpd/_changelog | 1 + abs/core-testing/lighttpd/auth-inc.conf | 12 ++++++++++++ abs/core-testing/lighttpd/lighttpd.conf | 12 ++++++------ abs/core-testing/lighttpd/lighttpd.install | 18 ++++-------------- abs/mv-core/MythVantage-config/myth_user_call | 14 +++++++++++--- abs/mv-core/MythVantage-config/systemconfig.sh | 14 ++++++++++++++ 10 files changed, 80 insertions(+), 32 deletions(-) create mode 100644 abs/core-testing/lighttpd/auth-inc.conf diff --git a/abs/core-testing/LinHES-config/PKGBUILD b/abs/core-testing/LinHES-config/PKGBUILD index f9d2aae..d35dfbb 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=85 +pkgrel=89 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/myth_user_call b/abs/core-testing/LinHES-config/myth_user_call index d95e468..0f899df 100644 --- a/abs/core-testing/LinHES-config/myth_user_call +++ b/abs/core-testing/LinHES-config/myth_user_call @@ -1,4 +1,4 @@ -#!/bin/bash +GGGGGGGGG#!/bin/bash #Wrapper script to manage USERNAME accounts + web security # myth_USERNAME_all -c add -u USERNAME # myth_USERNAME_all -c delete -u USERNAME @@ -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/systemconfig.sh b/abs/core-testing/LinHES-config/systemconfig.sh index 05dfd89..f2f20a0 100755 --- a/abs/core-testing/LinHES-config/systemconfig.sh +++ b/abs/core-testing/LinHES-config/systemconfig.sh @@ -217,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 @@ -227,7 +227,7 @@ function setupremote { ln -s /etc/lircrc /home/mythtv/.lircrc 2> /dev/null fi - + ;; esac @@ -988,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 @@ -1019,6 +1031,8 @@ for i in $LIST ;; advancedX) showX="true" ;; + webuser) setup_web_auth + ;; restartfe) killall -9 mythfrontend killall -9 mythwelcome exit 0 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/mv-core/MythVantage-config/myth_user_call b/abs/mv-core/MythVantage-config/myth_user_call index d95e468..0f899df 100644 --- a/abs/mv-core/MythVantage-config/myth_user_call +++ b/abs/mv-core/MythVantage-config/myth_user_call @@ -1,4 +1,4 @@ -#!/bin/bash +GGGGGGGGG#!/bin/bash #Wrapper script to manage USERNAME accounts + web security # myth_USERNAME_all -c add -u USERNAME # myth_USERNAME_all -c delete -u USERNAME @@ -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/systemconfig.sh b/abs/mv-core/MythVantage-config/systemconfig.sh index 4885f5a..6971e8f 100755 --- a/abs/mv-core/MythVantage-config/systemconfig.sh +++ b/abs/mv-core/MythVantage-config/systemconfig.sh @@ -968,6 +968,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 @@ -999,6 +1011,8 @@ do ;; advancedX) showX="true" ;; + webuser) setup_web_auth + ;; restartfe) killall -9 mythfrontend killall -9 mythwelcome exit 0 -- cgit v0.12 From 5c7e37256f1a112f238d7d68ee5336ef78360ab7 Mon Sep 17 00:00:00 2001 From: James Meyer Date: Wed, 10 Dec 2008 14:40:56 -0600 Subject: Add wireless extensions for eth0 and eth1 --- abs/core-testing/LinHES-config/PKGBUILD | 2 +- abs/core-testing/LinHES-config/networkconfig.sh | 34 +++++++++++--------- abs/mv-core/MythVantage-config/networkconfig.sh | 41 ++++++++++++------------- 3 files changed, 40 insertions(+), 37 deletions(-) diff --git a/abs/core-testing/LinHES-config/PKGBUILD b/abs/core-testing/LinHES-config/PKGBUILD index d35dfbb..d9f7f20 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=89 +pkgrel=93 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/networkconfig.sh b/abs/core-testing/LinHES-config/networkconfig.sh index 61a7405..9ad2d4e 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 @@ -65,7 +65,7 @@ function setup_interfaces() { TEMPNET=Hostnetmask$1 eval netmask=\$${TEMPNET} netmask=`echo "$netmask" | cut -d " " -f1` - + TEMPNET=HostActive$1 eval isactive=\$${TEMPNET} @@ -78,24 +78,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 @@ -110,7 +114,7 @@ function setup_interfaces() { then echo "setting $1 to inactive" sed -i -e 's/^ONBOOT=.*$/ONBOOT=no/g' $ETCNETDIR/$1/options - + else echo "setting $1 to active" sed -i -e 's/^ONBOOT=.*$/ONBOOT=yes/g' $ETCNETDIR/$1/options @@ -126,7 +130,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 @@ -139,7 +143,7 @@ function setup_interfaces() { 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,7 +164,7 @@ 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} @@ -219,11 +223,11 @@ function setup_MYTH_vars { TEMPMYTH="Hostip"$default_interface #echo $TEMPMYTH eval MYTHIP=\$${TEMPMYTH} - + TEMPMYTH="HostUSEDHCP"$default_interface eval MYTHDHCP=\$${TEMPMYTH} - + } diff --git a/abs/mv-core/MythVantage-config/networkconfig.sh b/abs/mv-core/MythVantage-config/networkconfig.sh index 999ccb0..9ad2d4e 100644 --- a/abs/mv-core/MythVantage-config/networkconfig.sh +++ b/abs/mv-core/MythVantage-config/networkconfig.sh @@ -78,9 +78,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 @@ -193,30 +197,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 } -- cgit v0.12 From 79975a551625d4968919055a571c305f05162022 Mon Sep 17 00:00:00 2001 From: James Meyer Date: Wed, 10 Dec 2008 15:45:08 -0600 Subject: Use route -n instead of route. Relates to FS#51 --- abs/core-testing/LinHES-config/PKGBUILD | 2 +- abs/core-testing/LinHES-config/install_proxy.sh | 11 +++++++++-- abs/core-testing/LinHES-config/myth_user_call | 2 +- abs/mv-core/MythVantage-config/myth_user_call | 2 +- 4 files changed, 12 insertions(+), 5 deletions(-) diff --git a/abs/core-testing/LinHES-config/PKGBUILD b/abs/core-testing/LinHES-config/PKGBUILD index d9f7f20..2a8ad77 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=93 +pkgrel=96 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_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 0f899df..0479895 100644 --- a/abs/core-testing/LinHES-config/myth_user_call +++ b/abs/core-testing/LinHES-config/myth_user_call @@ -1,4 +1,4 @@ -GGGGGGGGG#!/bin/bash +#!/bin/bash #Wrapper script to manage USERNAME accounts + web security # myth_USERNAME_all -c add -u USERNAME # myth_USERNAME_all -c delete -u USERNAME diff --git a/abs/mv-core/MythVantage-config/myth_user_call b/abs/mv-core/MythVantage-config/myth_user_call index 0f899df..0479895 100644 --- a/abs/mv-core/MythVantage-config/myth_user_call +++ b/abs/mv-core/MythVantage-config/myth_user_call @@ -1,4 +1,4 @@ -GGGGGGGGG#!/bin/bash +#!/bin/bash #Wrapper script to manage USERNAME accounts + web security # myth_USERNAME_all -c add -u USERNAME # myth_USERNAME_all -c delete -u USERNAME -- cgit v0.12 From 81a5d9fb48a4b6a348336644c153bd1bf8456957 Mon Sep 17 00:00:00 2001 From: James Meyer Date: Wed, 10 Dec 2008 16:03:27 -0600 Subject: initial checkin for svn plugins. --- .../mythtv/trunk/mythtv-themes/PKGBUILD | 36 +++ .../mythtv/trunk/plugins/mytharchive/PKGBUILD | 41 +++ .../mythtv/trunk/plugins/mythbrowser/PKGBUILD | 35 +++ .../mythtv/trunk/plugins/mythcontrols/PKGBUILD | 35 +++ .../mythtv/trunk/plugins/mythflix/PKGBUILD | 34 +++ .../mythtv/trunk/plugins/mythgallery/PKGBUILD | 36 +++ .../mythtv/trunk/plugins/mythgame/PKGBUILD | 36 +++ .../mythtv/trunk/plugins/mythmovietime/PKGBUILD | 36 +++ .../mythtv/trunk/plugins/mythmusic/PKGBUILD | 41 +++ .../trunk/plugins/mythmusic/music_flac.patch | 293 ++++++++++++++++++ .../mythtv/trunk/plugins/mythnews/PKGBUILD | 34 +++ .../mythtv/trunk/plugins/mythphone/PKGBUILD | 42 +++ .../mythtv/trunk/plugins/mythvideo/PKGBUILD | 36 +++ .../mythtv/trunk/plugins/mythweather/PKGBUILD | 35 +++ .../mythtv/trunk/plugins/mythweb/PKGBUILD | 35 +++ .../mythtv/trunk/plugins/mythweb/dblogininit.inc | 6 + .../mythtv/trunk/plugins/mythweb/mythweb.install | 37 +++ .../trunk/plugins/mythweb/mythweblighttpd.patch | 13 + .../trunk/plugins/mythweb/xris/dblogininit.inc | 6 + .../trunk/plugins/mythweb/xris/lighttpd.conf | 332 +++++++++++++++++++++ .../plugins/mythweb/xris/mythweblighttpd.patch | 16 + 21 files changed, 1215 insertions(+) create mode 100755 abs/core-testing/mythtv/trunk/mythtv-themes/PKGBUILD create mode 100644 abs/core-testing/mythtv/trunk/plugins/mytharchive/PKGBUILD create mode 100644 abs/core-testing/mythtv/trunk/plugins/mythbrowser/PKGBUILD create mode 100644 abs/core-testing/mythtv/trunk/plugins/mythcontrols/PKGBUILD create mode 100644 abs/core-testing/mythtv/trunk/plugins/mythflix/PKGBUILD create mode 100644 abs/core-testing/mythtv/trunk/plugins/mythgallery/PKGBUILD create mode 100644 abs/core-testing/mythtv/trunk/plugins/mythgame/PKGBUILD create mode 100644 abs/core-testing/mythtv/trunk/plugins/mythmovietime/PKGBUILD create mode 100644 abs/core-testing/mythtv/trunk/plugins/mythmusic/PKGBUILD create mode 100644 abs/core-testing/mythtv/trunk/plugins/mythmusic/music_flac.patch create mode 100644 abs/core-testing/mythtv/trunk/plugins/mythnews/PKGBUILD create mode 100644 abs/core-testing/mythtv/trunk/plugins/mythphone/PKGBUILD create mode 100644 abs/core-testing/mythtv/trunk/plugins/mythvideo/PKGBUILD create mode 100644 abs/core-testing/mythtv/trunk/plugins/mythweather/PKGBUILD create mode 100755 abs/core-testing/mythtv/trunk/plugins/mythweb/PKGBUILD create mode 100755 abs/core-testing/mythtv/trunk/plugins/mythweb/dblogininit.inc create mode 100755 abs/core-testing/mythtv/trunk/plugins/mythweb/mythweb.install create mode 100755 abs/core-testing/mythtv/trunk/plugins/mythweb/mythweblighttpd.patch create mode 100755 abs/core-testing/mythtv/trunk/plugins/mythweb/xris/dblogininit.inc create mode 100755 abs/core-testing/mythtv/trunk/plugins/mythweb/xris/lighttpd.conf create mode 100755 abs/core-testing/mythtv/trunk/plugins/mythweb/xris/mythweblighttpd.patch 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 + +-static FLAC__SeekableStreamDecoderReadStatus flacread(const FLAC__SeekableStreamDecoder *decoder, FLAC__byte bufferp[], unsigned *bytes, void *client_data) ++static FLAC__StreamDecoderReadStatus flacread(const FLAC__StreamDecoder *decoder, FLAC__byte bufferp[], unsigned *bytes, void *client_data) + { + decoder = decoder; + +@@ -26,27 +26,27 @@ + + if (len == -1) + { +- return FLAC__SEEKABLE_STREAM_DECODER_READ_STATUS_ERROR; ++ return FLAC__STREAM_DECODER_READ_STATUS_END_OF_STREAM; + } + + *bytes = len; +- return FLAC__SEEKABLE_STREAM_DECODER_READ_STATUS_OK; ++ return FLAC__STREAM_DECODER_READ_STATUS_CONTINUE; + } + +-static FLAC__SeekableStreamDecoderSeekStatus flacseek(const FLAC__SeekableStreamDecoder *decoder, FLAC__uint64 absolute_byte_offset, void *client_data) ++static FLAC__StreamDecoderSeekStatus flacseek(const FLAC__StreamDecoder *decoder, FLAC__uint64 absolute_byte_offset, void *client_data) + { + decoder = decoder; + FlacDecoder *dflac = (FlacDecoder *)client_data; + + if (!dflac->input()->isDirectAccess()) +- return FLAC__SEEKABLE_STREAM_DECODER_SEEK_STATUS_ERROR; ++ return FLAC__STREAM_DECODER_SEEK_STATUS_ERROR; + + if (dflac->input()->at(absolute_byte_offset)) +- return FLAC__SEEKABLE_STREAM_DECODER_SEEK_STATUS_OK; +- return FLAC__SEEKABLE_STREAM_DECODER_SEEK_STATUS_ERROR; ++ return FLAC__STREAM_DECODER_SEEK_STATUS_OK; ++ return FLAC__STREAM_DECODER_SEEK_STATUS_ERROR; + } + +-static FLAC__SeekableStreamDecoderTellStatus flactell(const FLAC__SeekableStreamDecoder *decoder, FLAC__uint64 *absolute_byte_offset, void *client_data) ++static FLAC__StreamDecoderTellStatus flactell(const FLAC__StreamDecoder *decoder, FLAC__uint64 *absolute_byte_offset, void *client_data) + { + decoder = decoder; + FlacDecoder *dflac = (FlacDecoder *)client_data; +@@ -54,20 +54,20 @@ + long t = dflac->input()->at(); + *absolute_byte_offset = t; + +- return FLAC__SEEKABLE_STREAM_DECODER_TELL_STATUS_OK; ++ return FLAC__STREAM_DECODER_TELL_STATUS_OK; + } + +-static FLAC__SeekableStreamDecoderLengthStatus flaclength(const FLAC__SeekableStreamDecoder *decoder, FLAC__uint64 *stream_length, void *client_data) ++static FLAC__StreamDecoderLengthStatus flaclength(const FLAC__StreamDecoder *decoder, FLAC__uint64 *stream_length, void *client_data) + { + decoder = decoder; + + FlacDecoder *dflac = (FlacDecoder *)client_data; + + *stream_length = dflac->input()->size(); +- return FLAC__SEEKABLE_STREAM_DECODER_LENGTH_STATUS_OK; ++ return FLAC__STREAM_DECODER_LENGTH_STATUS_OK; + } + +-static FLAC__bool flaceof(const FLAC__SeekableStreamDecoder *decoder, void *client_data) ++static FLAC__bool flaceof(const FLAC__StreamDecoder *decoder, void *client_data) + { + decoder = decoder; + +@@ -76,7 +76,7 @@ + return dflac->input()->atEnd(); + } + +-static FLAC__StreamDecoderWriteStatus flacwrite(const FLAC__SeekableStreamDecoder *decoder, const FLAC__Frame *frame, const FLAC__int32 * const buffer[], void *client_data) ++static FLAC__StreamDecoderWriteStatus flacwrite(const FLAC__StreamDecoder *decoder, const FLAC__Frame *frame, const FLAC__int32 * const buffer[], void *client_data) + { + decoder = decoder; + +@@ -132,7 +132,7 @@ + } + } + +-static void flacmetadata(const FLAC__SeekableStreamDecoder *decoder, const FLAC__StreamMetadata *metadata, void *client_data) ++static void flacmetadata(const FLAC__StreamDecoder *decoder, const FLAC__StreamMetadata *metadata, void *client_data) + { + decoder = decoder; + +@@ -156,11 +156,11 @@ + } + } + +-static void flacerror(const FLAC__SeekableStreamDecoder *decoder, FLAC__StreamDecoderErrorStatus status, void *client_data) ++static void flacerror(const FLAC__StreamDecoder *decoder, FLAC__StreamDecoderErrorStatus status, void *client_data) + { + decoder = decoder; + +- FLAC__FileDecoder *file_decoder = (FLAC__FileDecoder *)client_data; ++ FLAC__StreamDecoder *file_decoder = (FLAC__StreamDecoder *)client_data; + + file_decoder = file_decoder; + status = status; +@@ -262,17 +262,8 @@ + } + } + +- decoder = FLAC__seekable_stream_decoder_new(); +- FLAC__seekable_stream_decoder_set_md5_checking(decoder, false); +- FLAC__seekable_stream_decoder_set_read_callback(decoder, flacread); +- FLAC__seekable_stream_decoder_set_seek_callback(decoder, flacseek); +- FLAC__seekable_stream_decoder_set_tell_callback(decoder, flactell); +- FLAC__seekable_stream_decoder_set_length_callback(decoder, flaclength); +- FLAC__seekable_stream_decoder_set_eof_callback(decoder, flaceof); +- FLAC__seekable_stream_decoder_set_write_callback(decoder, flacwrite); +- FLAC__seekable_stream_decoder_set_metadata_callback(decoder, flacmetadata); +- FLAC__seekable_stream_decoder_set_error_callback(decoder, flacerror); +- FLAC__seekable_stream_decoder_set_client_data(decoder, this); ++ decoder = FLAC__stream_decoder_new(); ++ FLAC__stream_decoder_set_md5_checking(decoder, false); + + freq = 0; + bitrate = 0; +@@ -281,8 +272,17 @@ + totalTime = 0; + totalTime = totalTime < 0 ? 0 : totalTime; + +- FLAC__seekable_stream_decoder_init(decoder); +- FLAC__seekable_stream_decoder_process_until_end_of_metadata(decoder); ++ FLAC__stream_decoder_init_stream(decoder, ++ flacread, ++ flacseek, ++ flactell, ++ flaclength, ++ flaceof, ++ flacwrite, ++ flacmetadata, ++ flacerror, ++ this); ++ FLAC__stream_decoder_process_until_end_of_metadata(decoder); + + inited = TRUE; + return TRUE; +@@ -295,8 +295,8 @@ + + void FlacDecoder::deinit() + { +- FLAC__seekable_stream_decoder_finish(decoder); +- FLAC__seekable_stream_decoder_delete(decoder); ++ FLAC__stream_decoder_finish(decoder); ++ FLAC__stream_decoder_delete(decoder); + + if (input()->isOpen()) + input()->close(); +@@ -330,7 +330,7 @@ + } + + bool flacok = true; +- FLAC__SeekableStreamDecoderState decoderstate; ++ FLAC__StreamDecoderState decoderstate; + + while (! done && ! finish) { + lock(); +@@ -340,12 +340,12 @@ + FLAC__uint64 sample = (FLAC__uint64)(seekTime * 44100.0); + if (sample > totalsamples - 50) + sample = totalsamples - 50; +- FLAC__seekable_stream_decoder_seek_absolute(decoder, sample); ++ FLAC__stream_decoder_seek_absolute(decoder, sample); + seekTime = -1.0; + } + +- flacok = FLAC__seekable_stream_decoder_process_single(decoder); +- decoderstate = FLAC__seekable_stream_decoder_get_state(decoder); ++ flacok = FLAC__stream_decoder_process_single(decoder); ++ decoderstate = FLAC__stream_decoder_get_state(decoder); + + if (decoderstate == 0 || decoderstate == 1) + { +--- flacdecoder.h.old 2007-03-11 18:14:37.000000000 -0400 ++++ flacdecoder.h 2007-03-11 18:14:12.000000000 -0400 +@@ -35,7 +35,7 @@ + char *output_buf; + ulong output_bytes, output_at; + +- FLAC__SeekableStreamDecoder *decoder; ++ FLAC__StreamDecoder *decoder; + + unsigned int bks; + bool done, finish; +--- flacencoder.cpp.old 2007-03-11 18:14:37.000000000 -0400 ++++ flacencoder.cpp 2007-03-11 18:14:12.000000000 -0400 +@@ -9,7 +9,7 @@ + #include "flacencoder.h" + #include "metaioflacvorbiscomment.h" + +-#include ++#include + #include + #include + +@@ -29,32 +29,32 @@ + int rice_parameter_search_dist = 0; + int max_lpc_order = 8; + +- encoder = FLAC__file_encoder_new(); ++ encoder = FLAC__stream_encoder_new(); + +- FLAC__file_encoder_set_streamable_subset(encoder, true); +- FLAC__file_encoder_set_do_mid_side_stereo(encoder, do_mid_side); +- FLAC__file_encoder_set_loose_mid_side_stereo(encoder, loose_mid_side); +- FLAC__file_encoder_set_channels(encoder, NUM_CHANNELS); +- FLAC__file_encoder_set_bits_per_sample(encoder, 16); +- FLAC__file_encoder_set_sample_rate(encoder, 44100); +- FLAC__file_encoder_set_blocksize(encoder, blocksize); +- FLAC__file_encoder_set_max_lpc_order(encoder, max_lpc_order); +- FLAC__file_encoder_set_qlp_coeff_precision(encoder, qlp_coeff_precision); +- FLAC__file_encoder_set_do_qlp_coeff_prec_search(encoder, false); +- FLAC__file_encoder_set_do_escape_coding(encoder, do_escape_coding); +- FLAC__file_encoder_set_do_exhaustive_model_search(encoder, ++ FLAC__stream_encoder_set_streamable_subset(encoder, true); ++ FLAC__stream_encoder_set_do_mid_side_stereo(encoder, do_mid_side); ++ FLAC__stream_encoder_set_loose_mid_side_stereo(encoder, loose_mid_side); ++ FLAC__stream_encoder_set_channels(encoder, NUM_CHANNELS); ++ FLAC__stream_encoder_set_bits_per_sample(encoder, 16); ++ FLAC__stream_encoder_set_sample_rate(encoder, 44100); ++ FLAC__stream_encoder_set_blocksize(encoder, blocksize); ++ FLAC__stream_encoder_set_max_lpc_order(encoder, max_lpc_order); ++ FLAC__stream_encoder_set_qlp_coeff_precision(encoder, qlp_coeff_precision); ++ FLAC__stream_encoder_set_do_qlp_coeff_prec_search(encoder, false); ++ FLAC__stream_encoder_set_do_escape_coding(encoder, do_escape_coding); ++ FLAC__stream_encoder_set_do_exhaustive_model_search(encoder, + do_exhaustive_model_search); +- FLAC__file_encoder_set_min_residual_partition_order(encoder, ++ FLAC__stream_encoder_set_min_residual_partition_order(encoder, + min_residual_partition_order); +- FLAC__file_encoder_set_max_residual_partition_order(encoder, ++ FLAC__stream_encoder_set_max_residual_partition_order(encoder, + max_residual_partition_order); +- FLAC__file_encoder_set_rice_parameter_search_dist(encoder, ++ FLAC__stream_encoder_set_rice_parameter_search_dist(encoder, + rice_parameter_search_dist); + +- FLAC__file_encoder_set_filename(encoder, outfile.local8Bit()); ++ + +- int ret = FLAC__file_encoder_init(encoder); +- if (ret != FLAC__FILE_ENCODER_OK) ++ int ret = FLAC__stream_encoder_init_file(encoder, outfile.local8Bit(), NULL, NULL); ++ if (ret != FLAC__STREAM_ENCODER_OK) + { + VERBOSE(VB_GENERAL, QString("Error initializing FLAC encoder." + " Got return code: %1").arg(ret)); +@@ -70,8 +70,8 @@ + + if (encoder) + { +- FLAC__file_encoder_finish(encoder); +- FLAC__file_encoder_delete(encoder); ++ FLAC__stream_encoder_finish(encoder); ++ FLAC__stream_encoder_delete(encoder); + } + + if (metadata) +@@ -102,7 +102,7 @@ + + if(sampleindex == MAX_SAMPLES || (length == 0 && sampleindex > 0) ) + { +- if (!FLAC__file_encoder_process(encoder, ++ if (!FLAC__stream_encoder_process(encoder, + (const FLAC__int32 * const *) input, + sampleindex)) + { +--- flacencoder.h.old 2007-03-11 18:14:37.000000000 -0400 ++++ flacencoder.h 2007-03-11 18:14:12.000000000 -0400 +@@ -4,7 +4,7 @@ + #include + + #define HAVE_INTTYPES_H +-#include ++#include + + #include "encoder.h" + +@@ -21,7 +21,7 @@ + int addSamples(int16_t *bytes, unsigned int len); + + private: +- FLAC__FileEncoder *encoder; ++ FLAC__StreamEncoder *encoder; + unsigned int sampleindex; + FLAC__int32 inputin[NUM_CHANNELS][MAX_SAMPLES]; + FLAC__int32 *input[NUM_CHANNELS]; diff --git a/abs/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 @@ + 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 @@ + 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: .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 (default: don't care) +server.username = "nobody" + +## change uid to (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'); -- cgit v0.12 From 42129857874c470c65d3b1dcb4bf42945a98dcfa Mon Sep 17 00:00:00 2001 From: James Meyer Date: Wed, 10 Dec 2008 18:49:40 -0600 Subject: Fix interfaces not being disabled when they are in fact disabled in the gui. ref FS#58 --- abs/core-testing/LinHES-config/PKGBUILD | 2 +- abs/core-testing/LinHES-config/networkconfig.sh | 52 ++++++++++++++++++------ abs/core-testing/LinHES-config/systemconfig.sh | 1 + abs/mv-core/MythVantage-config/networkconfig.sh | 53 ++++++++++++++++++------- abs/mv-core/MythVantage-config/systemconfig.sh | 1 + 5 files changed, 81 insertions(+), 28 deletions(-) diff --git a/abs/core-testing/LinHES-config/PKGBUILD b/abs/core-testing/LinHES-config/PKGBUILD index 2a8ad77..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=96 +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/networkconfig.sh b/abs/core-testing/LinHES-config/networkconfig.sh index 9ad2d4e..23e3774 100644 --- a/abs/core-testing/LinHES-config/networkconfig.sh +++ b/abs/core-testing/LinHES-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 @@ -110,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 ] @@ -139,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 @@ -168,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 { @@ -233,23 +257,25 @@ 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 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 f2f20a0..3aac497 100755 --- a/abs/core-testing/LinHES-config/systemconfig.sh +++ b/abs/core-testing/LinHES-config/systemconfig.sh @@ -1081,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 diff --git a/abs/mv-core/MythVantage-config/networkconfig.sh b/abs/mv-core/MythVantage-config/networkconfig.sh index 9ad2d4e..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 @@ -110,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 ] @@ -139,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 @@ -168,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 { @@ -233,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 6971e8f..5884b69 100755 --- a/abs/mv-core/MythVantage-config/systemconfig.sh +++ b/abs/mv-core/MythVantage-config/systemconfig.sh @@ -1062,6 +1062,7 @@ then 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 -- cgit v0.12